[Share] Topzone vote reward in Server Shares & Files [L2J] Posted July 29, 2011 As l2topzone.com updated it's source and hopzone's vote reward does not work for topzone too here is a vote reward, package net.sf.l2j.gameserver.model; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.Collection; import javolution.util.FastList; import net.sf.l2j.Config; import net.sf.l2j.gameserver.Announcements; import net.sf.l2j.gameserver.GmListTable; import net.sf.l2j.gameserver.ThreadPoolManager; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.L2World; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.serverpackets.ExShowScreenMessage; import net.sf.l2j.gameserver.serverpackets.ExShowScreenMessage.SMPOS; public class TopzoneVoteRewardHandler { private int lastVoteCount = 0; private int initialCheck = 60 * 1000; private int delayForCheck = 300 * 1000; private int votesForReward = 5; private int maxRewardStack = 500; @SuppressWarnings("synthetic-access") private TopzoneVoteRewardHandler() { System.out.println("Topzone Vote Reward System activated."); ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), initialCheck, delayForCheck); } private class AutoReward implements Runnable { public void run() { System.out.println("Topzone Vote Count Check."); if (Config.TOPZONE_VOTE_REWARD1_ID == 0 || Config.TOPZONE_VOTE_REWARD1_COUNT == 0) { GmListTable.broadcastMessageToGMs("The rewards aren't Identified. Please take a look."); return; } int newVoteCount = getVotes(Config.TOPZONE_VOTE_HTML_PATCH); System.out.println("newVoteCount:"+newVoteCount); System.out.println("getLastVoteCount:"+getLastVoteCount()); if (newVoteCount != 0 && getLastVoteCount() != 0 && newVoteCount >= getLastVoteCount() + votesForReward) { FastList<InetAddress> ip = new FastList<InetAddress>(); Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers(); for (L2PcInstance player : pls) { if (player != null) { L2ItemInstance item1 = player.getInventory().getItemByItemId(Config.TOPZONE_VOTE_REWARD1_ID); if (item1 == null || item1.getCount() < maxRewardStack) { InetAddress ipc = player.getClient().getConnection().getSocketChannel().socket().getInetAddress(); if(ip.contains(ipc)) continue; ip.add(ipc); player.addItem("reward", Config.TOPZONE_VOTE_REWARD1_ID, Config.TOPZONE_VOTE_REWARD1_COUNT, player, true); player.sendMessage("Keep Voting For Us.Rewards given."); } } } setLastVoteCount(getLastVoteCount()+ votesForReward); } Announcements.getInstance().announceToAll("L2Godrich TopZone : " + newVoteCount + " Votes."); Announcements.getInstance().announceToAll("Next reward will be on : " + (getLastVoteCount()+ votesForReward) + " Votes."); Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers(); if (getLastVoteCount() == 0) { setLastVoteCount(newVoteCount); } } } static int getVotes(String urlString) { String htmlText = ""; boolean startAdd = false; int voteCount = 0; boolean ok = false; try { URL pageToDisplay; pageToDisplay = new URL(urlString); URLConnection conn = pageToDisplay.openConnection(); conn.connect(); InputStream in = conn.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); htmlText = ""; while(!ok) { String newLine = br.readLine(); if (newLine == null) { ok = true; } else { if (htmlText.length() < 110000) { if (!startAdd && newLine.indexOf(">Votes<") > 0) startAdd = true; if (startAdd && newLine.indexOf(">Uptime<") > 0) startAdd = false; if (startAdd) htmlText = htmlText+newLine; if (htmlText.length() > 10 && !startAdd) ok = true; } } } br.close(); } catch (MalformedURLException mfe) { } catch (IOException e) { } htmlText = htmlText.substring(htmlText.indexOf("font-size")+ 31); htmlText = htmlText.substring(0,htmlText.indexOf("</font>")); try { voteCount = Integer.parseInt(htmlText); } catch (NumberFormatException a) { voteCount = 0; } return voteCount; } private void setLastVoteCount(int voteCount) { lastVoteCount = voteCount; } private int getLastVoteCount() { return lastVoteCount; } public static TopzoneVoteRewardHandler getInstance() { return SingletonHolder._instance; } @SuppressWarnings("synthetic-access") private static class SingletonHolder { protected static final TopzoneVoteRewardHandler _instance = new TopzoneVoteRewardHandler(); } } Config.java public static boolean TOPZONE_VOTE_ENABLE; public static String TOPZONE_VOTE_HTML_PATCH; public static int TOPZONE_VOTE_REWARD1_ID; public static int TOPZONE_VOTE_REWARD2_ID; public static int TOPZONE_VOTE_REWARD1_COUNT; public static int TOPZONE_VOTE_REWARD2_COUNT; TOPZONE_VOTE_ENABLE = Boolean.parseBoolean(Customs.getProperty("TopzoneVoteEnable", "False")); PROTECTED_GAMESERVER = Boolean.parseBoolean(Customs.getProperty("ProtectGameServerWithPassword", "False")); TOPZONE_VOTE_HTML_PATCH = Customs.getProperty("TopzoneVoteHtmlPatch", "Null"); TOPZONE_VOTE_REWARD1_COUNT = Integer.parseInt(Customs.getProperty("TopzoneVoteReward1Count", "1000")); TOPZONE_VOTE_REWARD2_COUNT = Integer.parseInt(Customs.getProperty("TopzoneVoteReward2Count", "1000")); TOPZONE_VOTE_REWARD1_ID = Integer.parseInt(Customs.getProperty("TopzoneVoteReward1Id", "57")); TOPZONE_VOTE_REWARD2_ID = Integer.parseInt(Customs.getProperty("TopzoneVoteReward2Id", "57")); Do not forget to register this on gameserver. Credits: me PS: it's tested.
[Share] Topzone vote reward
in Server Shares & Files [L2J]
Posted
As l2topzone.com updated it's source and hopzone's vote reward does not work for topzone too here is a vote reward,
Config.java
Do not forget to register this on gameserver.
Credits: me
PS: it's tested.