Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### Eclipse Workspace Patch 1.0
- #P aCis_gameserver
- Index: java/net/sf/l2j/gameserver/GameServer.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/GameServer.java (revision 4)
- +++ java/net/sf/l2j/gameserver/GameServer.java (working copy)
- @@ -92,6 +92,8 @@
- import net.sf.l2j.gameserver.model.PartyMatchWaitingList;
- import net.sf.l2j.gameserver.model.entity.Castle;
- import net.sf.l2j.gameserver.model.entity.Hero;
- +import net.sf.l2j.gameserver.model.entity.VoteRewardHopzone;
- +import net.sf.l2j.gameserver.model.entity.VoteRewardTopzone;
- import net.sf.l2j.gameserver.model.olympiad.Olympiad;
- import net.sf.l2j.gameserver.model.olympiad.OlympiadGameManager;
- import net.sf.l2j.gameserver.network.L2GameClient;
- @@ -237,6 +239,12 @@
- Olympiad.getInstance();
- Hero.getInstance();
- + Util.printSection("Vote Manager");
- + if (Config.ALLOW_HOPZONE_VOTE_REWARD)
- + VoteRewardHopzone.getInstance();
- + if (Config.ALLOW_TOPZONE_VOTE_REWARD)
- + VoteRewardTopzone.getInstance();
- +
- Util.printSection("Four Sepulchers");
- FourSepulchersManager.getInstance().init();
- Index: java/net/sf/l2j/gameserver/model/entity/VoteRewardTopzone.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/VoteRewardTopzone.java (revision 0)
- +++ java/net/sf/l2j/gameserver/model/entity/VoteRewardTopzone.java (working copy)
- @@ -0,0 +1,314 @@
- +/*
- + * This program is free software: you can redistribute it and/or modify it under
- + * the terms of the GNU General Public License as published by the Free Software
- + * Foundation, either version 3 of the License, or (at your option) any later
- + * version.
- + *
- + * This program is distributed in the hope that it will be useful, but WITHOUT
- + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- + * details.
- + *
- + * You should have received a copy of the GNU General Public License along with
- + * this program. If not, see <http://www.gnu.org/licenses/>.
- + */
- +package net.sf.l2j.gameserver.model.entity;
- +
- +import java.io.BufferedReader;
- +import java.io.InputStreamReader;
- +import java.net.URL;
- +import java.net.URLConnection;
- +import java.util.Collection;
- +import java.util.HashMap;
- +
- +import net.sf.l2j.Config;
- +import net.sf.l2j.gameserver.Announcements;
- +import net.sf.l2j.gameserver.ThreadPoolManager;
- +import net.sf.l2j.gameserver.model.L2World;
- +import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
- +/**
- + * @author Anarchy
- + *
- + */
- +public class VoteRewardTopzone
- +{
- + // Configurations.
- + private static String topzoneUrl = Config.TOPZONE_SERVER_LINK;
- + private static String page1Url = Config.TOPZONE_FIRST_PAGE_LINK;
- + private static int voteRewardVotesDifference = Config.TOPZONE_VOTES_DIFFERENCE;
- + private static int firstPageRankNeeded = Config.TOPZONE_FIRST_PAGE_RANK_NEEDED;
- + private static int checkTime = 60*1000*Config.TOPZONE_REWARD_CHECK_TIME;
- +
- + // Don't-touch variables.
- + private static int lastVotes = 0;
- + private static HashMap<String, Integer> playerIps = new HashMap<>();
- +
- + public static void updateConfigurations()
- + {
- + topzoneUrl = Config.TOPZONE_SERVER_LINK;
- + page1Url = Config.TOPZONE_FIRST_PAGE_LINK;
- + voteRewardVotesDifference = Config.TOPZONE_VOTES_DIFFERENCE;
- + firstPageRankNeeded = Config.TOPZONE_FIRST_PAGE_RANK_NEEDED;
- + checkTime = 60*1000*Config.TOPZONE_REWARD_CHECK_TIME;
- + }
- +
- + public static void getInstance()
- + {
- + System.out.println("Topzone - Vote reward system initialized.");
- + ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Runnable()
- + {
- + @Override
- + public void run()
- + {
- + if (Config.ALLOW_TOPZONE_VOTE_REWARD)
- + {
- + reward();
- + }
- + else
- + {
- + return;
- + }
- + }
- + }, checkTime/2, checkTime);
- + }
- +
- + static void reward()
- + {
- + int firstPageVotes = getFirstPageRankVotes();
- + int currentVotes = getVotes();
- +
- + if (firstPageVotes == -1 || currentVotes == -1)
- + {
- + if (firstPageVotes == -1)
- + {
- + System.out.println("There was a problem on getting Topzone votes from server with rank "+firstPageRankNeeded+".");
- + }
- + if (currentVotes == -1)
- + {
- + System.out.println("There was a problem on getting Topzone server votes.");
- + }
- +
- + return;
- + }
- +
- + if (lastVotes == 0)
- + {
- + lastVotes = currentVotes;
- + Announcements.announceToAll("Topzone: Current vote count is "+currentVotes+".");
- + Announcements.announceToAll("Topzone: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for reward.");
- + if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
- + {
- + System.out.println("Server votes on topzone: "+currentVotes);
- + System.out.println("Votes needed for reward: "+((lastVotes+voteRewardVotesDifference)-currentVotes));
- + }
- + if (firstPageVotes-lastVotes <= 0)
- + {
- + Announcements.announceToAll("Topzone: We are in the top "+firstPageRankNeeded+" of topzone, so the reward will be big.");
- + if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
- + {
- + System.out.println("Server is on the top "+firstPageRankNeeded+" of topzone.");
- + }
- + }
- + else
- + {
- + Announcements.announceToAll("Topzone: We need "+(firstPageVotes-lastVotes)+" vote(s) to get to the top "+firstPageRankNeeded+" of topzone for big reward.");
- + if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
- + {
- + System.out.println("Server votes needed for top "+firstPageRankNeeded+": "+(firstPageVotes-lastVotes));
- + }
- + }
- + return;
- + }
- +
- + if (currentVotes >= lastVotes+voteRewardVotesDifference)
- + {
- + Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers().values();
- + if (firstPageVotes-currentVotes <= 0)
- + {
- + if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
- + {
- + System.out.println("Server votes on topzone: "+currentVotes);
- + System.out.println("Server is on the top "+firstPageRankNeeded+" of topzone.");
- + System.out.println("Votes needed for next reward: "+((currentVotes+voteRewardVotesDifference)-currentVotes));
- + }
- + Announcements.announceToAll("Topzone: Everyone has been rewarded with big reward.");
- + Announcements.announceToAll("Topzone: Current vote count is "+currentVotes+".");
- + for (L2PcInstance p : pls)
- + {
- + boolean canReward = false;
- + String pIp = p.getClient().getConnection().getInetAddress().getHostAddress();
- + if (playerIps.containsKey(pIp))
- + {
- + int count = playerIps.get(pIp);
- + if (count < Config.TOPZONE_DUALBOXES_ALLOWED)
- + {
- + playerIps.remove(pIp);
- + playerIps.put(pIp, count+1);
- + canReward = true;
- + }
- + }
- + else
- + {
- + canReward = true;
- + playerIps.put(pIp, 1);
- + }
- + if (canReward)
- + {
- + for (int i = 0; i < Config.TOPZONE_BIG_REWARD.length; i++)
- + {
- + p.addItem("Vote reward.", Config.TOPZONE_BIG_REWARD[i][0], Config.TOPZONE_BIG_REWARD[i][1], p, true);
- + }
- + }
- + else
- + {
- + p.sendMessage("Already "+Config.TOPZONE_DUALBOXES_ALLOWED+" character(s) of your ip have been rewarded, so this character won't be rewarded.");
- + }
- + }
- + playerIps.clear();
- + }
- + else
- + {
- + if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
- + {
- + System.out.println("Server votes on topzone: "+currentVotes);
- + System.out.println("Server votes needed for top "+firstPageRankNeeded+": "+(firstPageVotes-lastVotes));
- + System.out.println("Votes needed for next reward: "+((currentVotes+voteRewardVotesDifference)-currentVotes));
- + }
- + Announcements.announceToAll("Topzone: Everyone has been rewarded with small reward.");
- + Announcements.announceToAll("Topzone: Current vote count is "+currentVotes+".");
- + Announcements.announceToAll("Topzone: We need "+(firstPageVotes-currentVotes)+" vote(s) to get to the top "+firstPageRankNeeded+" of topzone for big reward.");
- + for (L2PcInstance p : pls)
- + {
- + boolean canReward = false;
- + String pIp = p.getClient().getConnection().getInetAddress().getHostAddress();
- + if (playerIps.containsKey(pIp))
- + {
- + int count = playerIps.get(pIp);
- + if (count < Config.TOPZONE_DUALBOXES_ALLOWED)
- + {
- + playerIps.remove(pIp);
- + playerIps.put(pIp, count+1);
- + canReward = true;
- + }
- + }
- + else
- + {
- + canReward = true;
- + playerIps.put(pIp, 1);
- + }
- + if (canReward)
- + {
- + for (int i = 0; i < Config.TOPZONE_SMALL_REWARD.length; i++)
- + {
- + p.addItem("Vote reward.", Config.TOPZONE_SMALL_REWARD[i][0], Config.TOPZONE_SMALL_REWARD[i][1], p, true);
- + }
- + }
- + else
- + {
- + p.sendMessage("Already "+Config.TOPZONE_DUALBOXES_ALLOWED+" character(s) of your ip have been rewarded, so this character won't be rewarded.");
- + }
- + }
- + playerIps.clear();
- + }
- +
- + lastVotes = currentVotes;
- + }
- + else
- + {
- + if (firstPageVotes-currentVotes <= 0)
- + {
- + if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
- + {
- + System.out.println("Server votes on topzone: "+currentVotes);
- + System.out.println("Server is on the top "+firstPageRankNeeded+" of topzone.");
- + System.out.println("Votes needed for next reward: "+((lastVotes+voteRewardVotesDifference)-currentVotes));
- + }
- + Announcements.announceToAll("Topzone: Current vote count is "+currentVotes+".");
- + Announcements.announceToAll("Topzone: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for big reward.");
- + }
- + else
- + {
- + if (Config.ALLOW_TOPZONE_GAME_SERVER_REPORT)
- + {
- + System.out.println("Server votes on topzone: "+currentVotes);
- + System.out.println("Server votes needed for top "+firstPageRankNeeded+": "+(firstPageVotes-lastVotes));
- + System.out.println("Votes needed for next reward: "+((lastVotes+voteRewardVotesDifference)-currentVotes));
- + }
- + Announcements.announceToAll("Topzone: Current vote count is "+currentVotes+".");
- + Announcements.announceToAll("Topzone: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for small reward.");
- + Announcements.announceToAll("Topzone: We need "+(firstPageVotes-currentVotes)+" vote(s) to get to the top "+firstPageRankNeeded+" of topzone for big reward.");
- + }
- + }
- + }
- +
- + private static int getFirstPageRankVotes()
- + {
- + InputStreamReader isr = null;
- + BufferedReader br = null;
- +
- + try
- + {
- + URLConnection con = new URL(page1Url).openConnection();
- + con.addRequestProperty("User-Agent", "Mozilla/4.76");
- + isr = new InputStreamReader(con.getInputStream());
- + br = new BufferedReader(isr);
- +
- + String line;
- + while ((line = br.readLine()) != null)
- + {
- + if (line.contains("<div class=\"slr\">"+firstPageRankNeeded+"<div class=\"votes\">Votes:<br><span>"))
- + {
- + int votes = Integer.valueOf(line.split("<div class=\"slr\">"+firstPageRankNeeded+"<div class=\"votes\">Votes:<br><span>")[1].replace("</span></div></div>", ""));
- + return votes;
- + }
- + }
- +
- + br.close();
- + isr.close();
- + }
- + catch (Exception e)
- + {
- + System.out.println(e);
- + System.out.println("Error while getting Hopzone server vote count.");
- + }
- +
- + return -1;
- + }
- +
- + private static int getVotes()
- + {
- + InputStreamReader isr = null;
- + BufferedReader br = null;
- +
- + try
- + {
- + URLConnection con = new URL(topzoneUrl).openConnection();
- + con.addRequestProperty("User-Agent", "Mozilla/4.76");
- + isr = new InputStreamReader(con.getInputStream());
- + br = new BufferedReader(isr);
- +
- + boolean got = false;
- +
- + String line;
- + while ((line = br.readLine()) != null)
- + {
- + if (line.contains("<div class=\"rank\"><div class=\"votes2\">Votes:<br>") && !got)
- + {
- + got = true;
- + int votes = Integer.valueOf(line.split("<div class=\"rank\"><div class=\"votes2\">Votes:<br>")[1].replace("</div></div>", ""));
- + return votes;
- + }
- + }
- +
- + br.close();
- + isr.close();
- + }
- + catch (Exception e)
- + {
- + System.out.println(e);
- + System.out.println("Error while getting server vote count.");
- + }
- +
- + return -1;
- + }
- +}
- \ No newline at end of file
- Index: config/votemanager.properties
- ===================================================================
- --- config/votemanager.properties (revision 0)
- +++ config/votemanager.properties (working copy)
- @@ -0,0 +1,49 @@
- +# Vote reward for Hopzone.
- +AllowHopzoneVoteReward = True
- +# Vote reward server link.
- +HopzoneServerLink = http://l2.hopzone.net/lineage2/details/74078/L2World-Servers/
- +# First page of servers list link.
- +HopzoneFirstPageLink = http://l2.hopzone.net/lineage2/
- +# Votes for next reward needed.
- +HopzoneVotesDifference = 5
- +# Rank needed for server to be on first page.
- +HopzoneFirstPageRankNeeded = 15
- +# Minutes between rewards.
- +# Eg. You put 5 it checks every 5 minutes for reward.
- +HopzoneRewardCheckTime = 5
- +# Small reward(s).
- +HopzoneSmallReward = 57,100000000;
- +# Big reward(s).
- +HopzoneBigReward = 3470,1;
- +# Hopzone reward max dual boxes reward.
- +# For example if you put 2 and someone has 3 boxes open 2 will be rewarded.
- +HopzoneDuaboxesAllowed = 1
- +# Game server console report.
- +# If set to true, game server console will get a report of
- +# current vote count, votes needed for next reward and votes needed for first page.
- +AllowHopzoneGameServerReport = True
- +
- +# Vote reward for Topzone.
- +AllowTopzoneVoteReward = True
- +# Vote reward server link.
- +TopzoneServerLink = http://l2topzone.com/lineage2/server-info/6296/L2ToxiccomProMMORPG.html/
- +# First page of servers list link.
- +TopzoneFirstPageLink = http://l2topzone.com/lineage2/server-list/top.html/
- +# Votes for next reward needed.
- +TopzoneVotesDifference = 5
- +# Rank needed for server to be on first page.
- +TopzoneFirstPageRankNeeded = 15
- +# Minutes between rewards.
- +# Eg. You put 5 it checks every 5 minutes for reward.
- +TopzoneRewardCheckTime = 5
- +# Small reward(s).
- +TopzoneSmallReward = 57,100000000;
- +# Big reward(s).
- +TopzoneBigReward = 3470,1;
- +# Hopzone reward max dual boxes reward.
- +# For example if you put 2 and someone has 3 boxes open 2 will be rewarded.
- +TopzoneDuaboxesAllowed = 1
- +# Game server console report.
- +# If set to true, game server console will get a report of
- +# current vote count, votes needed for next reward and votes needed for first page.
- +AllowTopzoneGameServerReport = True
- \ No newline at end of file
- Index: java/net/sf/l2j/Config.java
- ===================================================================
- --- java/net/sf/l2j/Config.java (revision 4)
- +++ java/net/sf/l2j/Config.java (working copy)
- @@ -52,6 +52,7 @@
- public static final String PLAYERS_FILE = "./config/players.properties";
- public static final String SERVER_FILE = "./config/server.properties";
- public static final String SIEGE_FILE = "./config/siege.properties";
- + public static final String VOTE_MANAGER = "./config/votemanager.properties";
- // --------------------------------------------------
- // Clans settings
- @@ -690,6 +691,28 @@
- public static int CLIENT_PACKET_QUEUE_MAX_UNDERFLOWS_PER_MIN = 1; // default 1
- public static int CLIENT_PACKET_QUEUE_MAX_UNKNOWN_PER_MIN = 5; // default 5
- +
- + /** Vote Manager settings */
- + public static boolean ALLOW_HOPZONE_VOTE_REWARD;
- + public static String HOPZONE_SERVER_LINK;
- + public static String HOPZONE_FIRST_PAGE_LINK;
- + public static int HOPZONE_VOTES_DIFFERENCE;
- + public static int HOPZONE_FIRST_PAGE_RANK_NEEDED;
- + public static int HOPZONE_REWARD_CHECK_TIME;
- + public static int[][] HOPZONE_SMALL_REWARD;
- + public static int[][] HOPZONE_BIG_REWARD;
- + public static int HOPZONE_DUALBOXES_ALLOWED;
- + public static boolean ALLOW_HOPZONE_GAME_SERVER_REPORT;
- + public static boolean ALLOW_TOPZONE_VOTE_REWARD;
- + public static String TOPZONE_SERVER_LINK;
- + public static String TOPZONE_FIRST_PAGE_LINK;
- + public static int TOPZONE_VOTES_DIFFERENCE;
- + public static int TOPZONE_FIRST_PAGE_RANK_NEEDED;
- + public static int TOPZONE_REWARD_CHECK_TIME;
- + public static int[][] TOPZONE_SMALL_REWARD;
- + public static int[][] TOPZONE_BIG_REWARD;
- + public static int TOPZONE_DUALBOXES_ALLOWED;
- + public static boolean ALLOW_TOPZONE_GAME_SERVER_REPORT;
- // --------------------------------------------------
- /**
- @@ -1241,6 +1264,28 @@
- ZONE_TOWN = server.getProperty("ZoneTown", 0);
- SERVER_NEWS = server.getProperty("ShowServerNews", false);
- DISABLE_TUTORIAL = server.getProperty("DisableTutorial", false);
- +
- + ExProperties votemanager = load(VOTE_MANAGER);
- + ALLOW_HOPZONE_VOTE_REWARD = votemanager.getProperty("AllowHopzoneVoteReward", false);
- + HOPZONE_SERVER_LINK = votemanager.getProperty("HopzoneServerLink", "http://l2.topzone.net/lineage2/details/74078/L2World-Servers/");
- + HOPZONE_FIRST_PAGE_LINK = votemanager.getProperty("HopzoneFirstPageLink", "http://l2.topzone.net/lineage2/");
- + HOPZONE_VOTES_DIFFERENCE = votemanager.getProperty("HopzoneVotesDifference", 5);
- + HOPZONE_FIRST_PAGE_RANK_NEEDED = votemanager.getProperty("HopzoneFirstPageRankNeeded", 15);
- + HOPZONE_REWARD_CHECK_TIME = votemanager.getProperty("HopzoneRewardCheckTime", 5);
- + HOPZONE_SMALL_REWARD = parseItemsList(votemanager.getProperty("HopzoneSmallReward", "57,100000000;"));
- + HOPZONE_BIG_REWARD = parseItemsList(votemanager.getProperty("HopzoneBigReward", "3470,1;"));
- + HOPZONE_DUALBOXES_ALLOWED = votemanager.getProperty("HopzoneDualboxesAllowed", 1);
- + ALLOW_HOPZONE_GAME_SERVER_REPORT = votemanager.getProperty("AllowHopzoneGameServerReport", false);
- + ALLOW_TOPZONE_VOTE_REWARD = votemanager.getProperty("AllowTopzoneVoteReward", false);
- + TOPZONE_SERVER_LINK = votemanager.getProperty("TopzoneServerLink", "http://l2.topzone.net/lineage2/details/74078/L2World-Servers/");
- + TOPZONE_FIRST_PAGE_LINK = votemanager.getProperty("TopzoneFirstPageLink", "http://l2.topzone.net/lineage2/");
- + TOPZONE_VOTES_DIFFERENCE = votemanager.getProperty("TopzoneVotesDifference", 5);
- + TOPZONE_FIRST_PAGE_RANK_NEEDED = votemanager.getProperty("TopzoneFirstPageRankNeeded", 15);
- + TOPZONE_REWARD_CHECK_TIME = votemanager.getProperty("TopzoneRewardCheckTime", 5);
- + TOPZONE_SMALL_REWARD = parseItemsList(votemanager.getProperty("TopzoneSmallReward", "57,100000000;"));
- + TOPZONE_BIG_REWARD = parseItemsList(votemanager.getProperty("TopzoneBigReward", "3470,1;"));
- + TOPZONE_DUALBOXES_ALLOWED = votemanager.getProperty("TopzoneDualboxesAllowed", 1);
- + ALLOW_TOPZONE_GAME_SERVER_REPORT = votemanager.getProperty("AllowTopzoneGameServerReport", false);
- }
- else if (Server.serverMode == Server.MODE_LOGINSERVER)
- {
- Index: java/net/sf/l2j/gameserver/model/entity/VoteRewardHopzone.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/VoteRewardHopzone.java (revision 0)
- +++ java/net/sf/l2j/gameserver/model/entity/VoteRewardHopzone.java (working copy)
- @@ -0,0 +1,317 @@
- +/*
- + * This program is free software: you can redistribute it and/or modify it under
- + * the terms of the GNU General Public License as published by the Free Software
- + * Foundation, either version 3 of the License, or (at your option) any later
- + * version.
- + *
- + * This program is distributed in the hope that it will be useful, but WITHOUT
- + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- + * details.
- + *
- + * You should have received a copy of the GNU General Public License along with
- + * this program. If not, see <http://www.gnu.org/licenses/>.
- + */
- +package net.sf.l2j.gameserver.model.entity;
- +
- +import java.io.BufferedReader;
- +import java.io.InputStreamReader;
- +import java.net.URL;
- +import java.net.URLConnection;
- +import java.util.Collection;
- +import java.util.HashMap;
- +
- +import net.sf.l2j.Config;
- +import net.sf.l2j.gameserver.Announcements;
- +import net.sf.l2j.gameserver.ThreadPoolManager;
- +import net.sf.l2j.gameserver.model.L2World;
- +import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
- +/**
- + * @author Anarchy
- + *
- + */
- +public class VoteRewardHopzone
- +{
- + // Configurations.
- + private static String hopzoneUrl = Config.HOPZONE_SERVER_LINK;
- + private static String page1Url = Config.HOPZONE_FIRST_PAGE_LINK;
- + private static int voteRewardVotesDifference = Config.HOPZONE_VOTES_DIFFERENCE;
- + private static int firstPageRankNeeded = Config.HOPZONE_FIRST_PAGE_RANK_NEEDED;
- + private static int checkTime = 60*1000*Config.HOPZONE_REWARD_CHECK_TIME;
- +
- + // Don't-touch variables.
- + private static int lastVotes = 0;
- + private static HashMap<String, Integer> playerIps = new HashMap<>();
- +
- + public static void updateConfigurations()
- + {
- + hopzoneUrl = Config.HOPZONE_SERVER_LINK;
- + page1Url = Config.HOPZONE_FIRST_PAGE_LINK;
- + voteRewardVotesDifference = Config.HOPZONE_VOTES_DIFFERENCE;
- + firstPageRankNeeded = Config.HOPZONE_FIRST_PAGE_RANK_NEEDED;
- + checkTime = 60*1000*Config.HOPZONE_REWARD_CHECK_TIME;
- + }
- +
- + public static void getInstance()
- + {
- + System.out.println("Hopzone - Vote reward system initialized.");
- + ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Runnable()
- + {
- + @Override
- + public void run()
- + {
- + if (Config.ALLOW_HOPZONE_VOTE_REWARD)
- + {
- + reward();
- + }
- + else
- + {
- + return;
- + }
- + }
- + }, checkTime/2, checkTime);
- + }
- +
- + static void reward()
- + {
- + int firstPageVotes = getFirstPageRankVotes();
- + int currentVotes = getVotes();
- +
- + if (firstPageVotes == -1 || currentVotes == -1)
- + {
- + if (firstPageVotes == -1)
- + {
- + System.out.println("There was a problem on getting Hopzone votes from server with rank "+firstPageRankNeeded+".");
- + }
- + if (currentVotes == -1)
- + {
- + System.out.println("There was a problem on getting Hopzone server votes.");
- + }
- +
- + return;
- + }
- +
- + if (lastVotes == 0)
- + {
- + lastVotes = currentVotes;
- + Announcements.announceToAll("Hopzone: Vote count is "+currentVotes+".");
- + Announcements.announceToAll("Hopzone: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for reward.");
- + if (Config.ALLOW_HOPZONE_GAME_SERVER_REPORT)
- + {
- + System.out.println("Server votes on hopzone: "+currentVotes);
- + System.out.println("Votes needed for reward: "+((lastVotes+voteRewardVotesDifference)-currentVotes));
- + }
- + if (firstPageVotes-lastVotes <= 0)
- + {
- + Announcements.announceToAll("Hopzone: We are in the top "+firstPageRankNeeded+", so the reward will be big.");
- + if (Config.ALLOW_HOPZONE_GAME_SERVER_REPORT)
- + {
- + System.out.println("Server is on the top "+firstPageRankNeeded+" of hopzone.");
- + }
- + }
- + else
- + {
- + Announcements.announceToAll("Hopzone: We need "+(firstPageVotes-lastVotes)+" vote(s) to get to the top "+firstPageRankNeeded+" of Hopzone for big reward.");
- + if (Config.ALLOW_HOPZONE_GAME_SERVER_REPORT)
- + {
- + System.out.println("Server votes needed for top "+firstPageRankNeeded+": "+(firstPageVotes-lastVotes));
- + }
- + }
- + return;
- + }
- +
- + if (currentVotes >= lastVotes+voteRewardVotesDifference)
- + {
- + Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers().values();
- + if (firstPageVotes-currentVotes <= 0)
- + {
- + if (Config.ALLOW_HOPZONE_GAME_SERVER_REPORT)
- + {
- + System.out.println("Server votes on hopzone: "+currentVotes);
- + System.out.println("Server is on the first page of hopzone.");
- + System.out.println("Votes needed for next reward: "+((currentVotes+voteRewardVotesDifference)-currentVotes));
- + }
- + Announcements.announceToAll("Hopzone: Everyone has been rewarded with big reward.");
- + Announcements.announceToAll("Hopzone: Current vote count is "+currentVotes+".");
- + for (L2PcInstance p : pls)
- + {
- + boolean canReward = false;
- + String pIp = p.getClient().getConnection().getInetAddress().getHostAddress();
- + if (playerIps.containsKey(pIp))
- + {
- + int count = playerIps.get(pIp);
- + if (count < Config.HOPZONE_DUALBOXES_ALLOWED)
- + {
- + playerIps.remove(pIp);
- + playerIps.put(pIp, count+1);
- + canReward = true;
- + }
- + }
- + else
- + {
- + canReward = true;
- + playerIps.put(pIp, 1);
- + }
- + if (canReward)
- + {
- + for (int i = 0; i < Config.HOPZONE_BIG_REWARD.length; i++)
- + {
- + p.addItem("Vote reward.", Config.HOPZONE_BIG_REWARD[i][0], Config.HOPZONE_BIG_REWARD[i][1], p, true);
- + }
- + }
- + else
- + {
- + p.sendMessage("Already "+Config.HOPZONE_DUALBOXES_ALLOWED+" character(s) of your ip have been rewarded, so this character won't be rewarded.");
- + }
- + }
- + playerIps.clear();
- + }
- + else
- + {
- + if (Config.ALLOW_HOPZONE_GAME_SERVER_REPORT)
- + {
- + System.out.println("Server votes on hopzone: "+currentVotes);
- + System.out.println("Server votes needed for first page: "+(firstPageVotes-lastVotes));
- + System.out.println("Votes needed for next reward: "+((currentVotes+voteRewardVotesDifference)-currentVotes));
- + }
- + Announcements.announceToAll("Hopzone: Everyone has been rewarded with small reward.");
- + Announcements.announceToAll("Hopzone: Current vote count is "+currentVotes+".");
- + Announcements.announceToAll("Hopzone: We need "+(firstPageVotes-currentVotes)+" vote(s) to get to the top "+firstPageRankNeeded+" of Hopzone for big reward.");
- + for (L2PcInstance p : pls)
- + {
- + boolean canReward = false;
- + String pIp = p.getClient().getConnection().getInetAddress().getHostAddress();
- + if (playerIps.containsKey(pIp))
- + {
- + int count = playerIps.get(pIp);
- + if (count < Config.HOPZONE_DUALBOXES_ALLOWED)
- + {
- + playerIps.remove(pIp);
- + playerIps.put(pIp, count+1);
- + canReward = true;
- + }
- + }
- + else
- + {
- + canReward = true;
- + playerIps.put(pIp, 1);
- + }
- + if (canReward)
- + {
- + for (int i = 0; i < Config.HOPZONE_SMALL_REWARD.length; i++)
- + {
- + p.addItem("Vote reward.", Config.HOPZONE_SMALL_REWARD[i][0], Config.HOPZONE_SMALL_REWARD[i][1], p, true);
- + }
- + }
- + else
- + {
- + p.sendMessage("Already "+Config.HOPZONE_DUALBOXES_ALLOWED+" character(s) of your ip have been rewarded, so this character won't be rewarded.");
- + }
- + }
- + playerIps.clear();
- + }
- +
- + lastVotes = currentVotes;
- + }
- + else
- + {
- + if (firstPageVotes-currentVotes <= 0)
- + {
- + if (Config.ALLOW_HOPZONE_GAME_SERVER_REPORT)
- + {
- + System.out.println("Server votes on hopzone: "+currentVotes);
- + System.out.println("Server is on the first page of hopzone.");
- + System.out.println("Votes needed for next reward: "+((lastVotes+voteRewardVotesDifference)-currentVotes));
- + }
- + Announcements.announceToAll("Hopzone: Current vote count is "+currentVotes+".");
- + Announcements.announceToAll("Hopzone: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for big reward.");
- + }
- + else
- + {
- + if (Config.ALLOW_HOPZONE_GAME_SERVER_REPORT)
- + {
- + System.out.println("Server votes on hopzone: "+currentVotes);
- + System.out.println("Server votes needed for first page: "+(firstPageVotes-lastVotes));
- + System.out.println("Votes needed for next reward: "+((lastVotes+voteRewardVotesDifference)-currentVotes));
- + }
- + Announcements.announceToAll("Hopzone: Current vote count is "+currentVotes+".");
- + Announcements.announceToAll("Hopzone: We need "+((lastVotes+voteRewardVotesDifference)-currentVotes)+" vote(s) for small reward.");
- + Announcements.announceToAll("Hopzone: We need "+(firstPageVotes-currentVotes)+" vote(s) to get to the top "+firstPageRankNeeded+" of Hopzone for big reward.");
- + }
- + }
- + }
- +
- + private static int getFirstPageRankVotes()
- + {
- + InputStreamReader isr = null;
- + BufferedReader br = null;
- +
- + try
- + {
- + URLConnection con = new URL(page1Url).openConnection();
- + con.addRequestProperty("User-Agent", "Mozilla/4.76");
- + isr = new InputStreamReader(con.getInputStream());
- + br = new BufferedReader(isr);
- +
- + String line;
- + int i = 0;
- + while ((line = br.readLine()) != null)
- + {
- + if (line.contains("<span class=\"no\">"+firstPageRankNeeded+"</span>"))
- + {
- + i++;
- + }
- + if (line.contains("<span class=\"rank anonymous tooltip\"") && i == 1)
- + {
- + i = 0;
- + int votes = Integer.valueOf(line.replaceAll("[^\\d]", ""));
- + return votes;
- + }
- + }
- +
- + br.close();
- + isr.close();
- + }
- + catch (Exception e)
- + {
- + System.out.println(e);
- + System.out.println("Error while getting Hopzone server vote count.");
- + }
- +
- + return -1;
- + }
- +
- + private static int getVotes()
- + {
- + InputStreamReader isr = null;
- + BufferedReader br = null;
- +
- + try
- + {
- + URLConnection con = new URL(hopzoneUrl).openConnection();
- + con.addRequestProperty("User-Agent", "Mozilla/4.76");
- + isr = new InputStreamReader(con.getInputStream());
- + br = new BufferedReader(isr);
- +
- + String line;
- + while ((line = br.readLine()) != null)
- + {
- + if (line.contains("<li><span class=\"rank anonymous tooltip\""))
- + {
- + int votes = Integer.valueOf(line.replaceAll("[^\\d]", ""));
- + return votes;
- + }
- + }
- +
- + br.close();
- + isr.close();
- + }
- + catch (Exception e)
- + {
- + System.out.println(e);
- + System.out.println("Error while getting server vote count.");
- + }
- +
- + return -1;
- + }
- +}
- \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement