Legend™ Posted July 27, 2011 Posted July 27, 2011 ok then ty. offtopic// is it possible instead of anouncements how many votes left to get reward ,to have a message in big letters on screen,an exshowscreenmessage,like most servers have?and what has to be replaced. Quote
Kяaσh Posted July 27, 2011 Posted July 27, 2011 It's exactly the same instead of announcement you'll use ExShowScreenMessage method. player.sendPacket(new ExShowScreenMessage("L2Name Hopzone : " + newVoteCount + " Votes Next reward will be on " + (getLastVoteCount()+ votesForReward) + " Votes." , 3500, SMPOS.TOP_CENTER, true)); Quote
Legend™ Posted July 27, 2011 Posted July 27, 2011 krash i am not good at java tried to put the lines but i get errors could you please use this and put the lines were needed package com.l2jserver.gameserver.instancemanager; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import com.l2jserver.Config; import com.l2jserver.L2DatabaseFactory; import com.l2jserver.gameserver.Announcements; import com.l2jserver.gameserver.ThreadPoolManager; import com.l2jserver.gameserver.model.L2World; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; public class AutoVoteRewardManager { private static Logger _log = Logger.getLogger(AutoVoteRewardManager.class.getName()); private static final String http = "http://l2.hopzone.net/lineage2/moreinfo/L2Empire/88729.html"; private static final int initialCheck = 1 * 1000; private static final int delayForCheck = 900 * 1000; private static final int[] itemId = { 14721, 3794 }; private static final int[] itemCount = { 50, 250 }; private static final int votesRequiredForReward = 30; private static List<String> _ips = new ArrayList<String>(); private static int lastVoteCount = 0; private AutoVoteRewardManager() { _log.info("AutoVoteRewardManager: Vote reward system initiated."); if (Config.L2JMOD_VOTE_ENGINE_SAVE) load(); ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), initialCheck, delayForCheck); } private class AutoReward implements Runnable { public void run() { int votes = getVotes(); _log.info("AutoVoteRewardManager: We now have " + votes + "/"+(getLastVoteCount()+votesRequiredForReward)+" vote(s). Next check in "+(delayForCheck/1000)+" sec."); Announcements.getInstance().announceToAll("Vote on http://l2.gamesempire.ro/"); if (votes >= getLastVoteCount() + votesRequiredForReward) { Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers().values(); { for (L2PcInstance onlinePlayer : pls) { if (onlinePlayer.isOnline() && !onlinePlayer.getClient().isDetached() && !_ips.contains(onlinePlayer.getClient().getConnection().getInetAddress().getHostAddress())) { for (int i = 0; i < itemId.length; i++) { onlinePlayer.addItem("vote_reward", itemId[i], itemCount[i], onlinePlayer, true); } _ips.add(onlinePlayer.getClient().getConnection().getInetAddress().getHostAddress()); } } } _log.info("AutoVoteRewardManager: Reward for votes now!"); Announcements.getInstance().announceToAll("Reward for players! Thanks for Vote."); setLastVoteCount(getLastVoteCount() + votesRequiredForReward); } if (getLastVoteCount() == 0) { setLastVoteCount(votes); } else if ((getLastVoteCount() + votesRequiredForReward) - votes > votesRequiredForReward || votes > (getLastVoteCount() + votesRequiredForReward)) { setLastVoteCount(votes); } Announcements.getInstance().announceToAll("We have " + votes + " vote(s). Next reward on " + (getLastVoteCount()+votesRequiredForReward) + " vote."); _ips.clear(); } } private int getVotes() { URL url = null; InputStreamReader isr = null; BufferedReader in = null; try { url = new URL(http); URLConnection con = url.openConnection(); con.addRequestProperty("User-Agent", "Mozilla/4.76"); isr = new InputStreamReader(con.getInputStream()); in = new BufferedReader(isr); String inputLine; while ((inputLine = in.readLine()) != null) { // for top-zone //if (inputLine.contains("<tr><td><div align=\"center\"><b><font style=\"font-size:14px;color:#018BC1;\"")) //{ //return Integer.valueOf(inputLine.split(">")[5].replace("</font", "")); //} //for hopzone if (inputLine.contains("moreinfo_total_rank_text")) return Integer.valueOf(inputLine.split(">")[2].replace("</div", "")); } } catch (IOException e) { _log.warning("AutoVoteRewardHandler: "+e); } finally { try { in.close(); } catch (IOException e) {} try { isr.close(); } catch (IOException e) {} } return 0; } private void setLastVoteCount(int voteCount) { lastVoteCount = voteCount; } private int getLastVoteCount() { return lastVoteCount; } private void load() { int votes = 0; Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("SELECT vote FROM votes LIMIT 1"); ResultSet rset = statement.executeQuery(); while (rset.next()) { votes = rset.getInt("vote"); } rset.close(); statement.close(); } catch (Exception e) { _log.log(Level.WARNING, "data error on vote: ", e); } finally { L2DatabaseFactory.close(con); } setLastVoteCount(votes); } public void save() { Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("UPDATE votes SET vote = ? WHERE id=1"); statement.setInt(1, getLastVoteCount()); statement.execute(); statement.close(); } catch (Exception e) { _log.log(Level.WARNING, "data error on vote: ", e); } finally { L2DatabaseFactory.close(con); } } public static AutoVoteRewardManager getInstance() { return SingletonHolder._instance; } @SuppressWarnings("synthetic-access") private static class SingletonHolder { protected static final AutoVoteRewardManager _instance = new AutoVoteRewardManager(); } } Quote
Kяaσh Posted July 27, 2011 Posted July 27, 2011 It's exactly the same instead of announcement you'll use ExShowScreenMessage method. player.sendPacket(new ExShowScreenMessage("L2Name Hopzone : " + newVoteCount + " Votes Next reward will be on " + (getLastVoteCount()+ votesForReward) + " Votes." , 3500, SMPOS.TOP_CENTER, true)); I don't have errors. Quote
Legend™ Posted July 27, 2011 Posted July 27, 2011 i get "player can not be resolved", maybe i have to import something Quote
A√imas†i©™ Posted August 3, 2011 Posted August 3, 2011 I put it and now can connect but I think can't check the votes because says have 0 votes... Can anyone help me?? No problem I Fixed it Quote
Bleadd Posted August 11, 2011 Posted August 11, 2011 url = new URL(Config.VOTE_HTML_PATCH); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.addRequestProperty("User-Agent", "Mozilla/5.0.1"); isr = new InputStreamReader(url.openStream()); in = new BufferedReader(isr); String inputLine; int voteCount = 0; Don't work for me, error 403. Quote
Rizel Posted August 12, 2011 Author Posted August 12, 2011 public static int getVotes() { URL url = null; InputStreamReader isr = null; BufferedReader in = null; try { url = new URL(http); URLConnection con = url.openConnection(); con.addRequestProperty("User-Agent", "Mozilla/4.76"); isr = new InputStreamReader(con.getInputStream()); in = new BufferedReader(isr); String inputLine; while ((inputLine = in.readLine()) != null) { // for top-zone //if (inputLine.contains("<tr><td><div align=\"center\"><b><font style=\"font-size:14px;color:#018BC1;\"")) //{ //return Integer.valueOf(inputLine.split(">")[5].replace("</font", "")); //} //for hopzone if (inputLine.contains("moreinfo_total_rank_text")) return Integer.valueOf(inputLine.split(">")[2].replace("</div", "")); } } catch (IOException e) { e.printStackTrace(); } finally { try { in.close(); } catch (IOException e) {} try { isr.close(); } catch (IOException e) {} } return 0; } this method works for me Quote
Bleadd Posted August 12, 2011 Posted August 12, 2011 Thanks Rizel, i haven't the error 403 now. Works !!!! Quote
BlackDevilDev Posted August 15, 2011 Posted August 15, 2011 rizel very good work i try and is working :) .... Show the Fix :P ================== Vote Count Check. getLastVoteCount:0 newVoteCount:8953 ================== Quote
[DEV]DjSt3rios Posted August 28, 2011 Posted August 28, 2011 Thanks man! I just tested it and it works fine! Good work mate! Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.