Dev(ArisPLC) Global Moderator
Posts : 6 Join date : 2011-11-01
| Subject: [Share] Java Code Vote Reward Hop/Top (Freya) Wed Nov 02, 2011 10:36 am | |
| Gia sou Reversegaming Kano Share ena vote reward Hop/Top Gia {Freya} - Code:
-
Index: java/com/l2jserver/Config.java =================================================================== --- java/com/l2jserver/Config.java (revision 4422) +++ java/com/l2jserver/Config.java (working copy) @@ -620,6 +625,8 @@ //-------------------------------------------------- // L2JMods Settings //-------------------------------------------------- + public static boolean L2JMOD_VOTE_ENGINE_ENABLE; + public static boolean L2JMOD_VOTE_ENGINE_SAVE; public static boolean L2JMOD_CHAMPION_ENABLE; public static boolean L2JMOD_CHAMPION_PASSIVE; public static int L2JMOD_CHAMPION_FREQUENCY; @@ -2162,6 +2174,8 @@ is = new FileInputStream(new File(L2JMOD_CONFIG_FILE)); L2JModSettings.load(is); + L2JMOD_VOTE_ENGINE_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("EnableAutoVoteEngine", "false")); + L2JMOD_VOTE_ENGINE_SAVE = Boolean.parseBoolean(L2JModSettings.getProperty("AutoVoteEngineSaveLoad", "false")); L2JMOD_CHAMPION_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("ChampionEnable", "false")); L2JMOD_CHAMPION_PASSIVE = Boolean.parseBoolean(L2JModSettings.getProperty("ChampionPassive", "false")); L2JMOD_CHAMPION_FREQUENCY = Integer.parseInt(L2JModSettings.getProperty("ChampionFrequency", "0")); @@ -3071,8 +3085,11 @@ else if (pName.equalsIgnoreCase("AltSubclassEverywhere")) ALT_GAME_SUBCLASS_EVERYWHERE = Boolean.parseBoolean(pValue); else if (pName.equalsIgnoreCase("AltMembersCanWithdrawFromClanWH")) ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH = Boolean.parseBoolean(pValue); else if (pName.equalsIgnoreCase("DwarfRecipeLimit")) DWARF_RECIPE_LIMIT = Integer.parseInt(pValue); - else if (pName.equalsIgnoreCase("CommonRecipeLimit")) COMMON_RECIPE_LIMIT = Integer.parseInt(pValue); + else if (pName.equalsIgnoreCase("CommonRecipeLimit")) COMMON_RECIPE_LIMIT = Integer.parseInt(pValue); + else if (pName.equalsIgnoreCase("EnableAutoVoteEngine")) L2JMOD_VOTE_ENGINE_ENABLE = Boolean.parseBoolean(pValue); + else if (pName.equalsIgnoreCase("AutoVoteEngineSaveLoad")) L2JMOD_VOTE_ENGINE_SAVE = Boolean.parseBoolean(pValue); + else if (pName.equalsIgnoreCase("ChampionEnable")) L2JMOD_CHAMPION_ENABLE = Boolean.parseBoolean(pValue); else if (pName.equalsIgnoreCase("ChampionFrequency")) L2JMOD_CHAMPION_FREQUENCY = Integer.parseInt(pValue); else if (pName.equalsIgnoreCase("ChampionMinLevel")) L2JMOD_CHAMP_MIN_LVL = Integer.parseInt(pValue); Index: java/com/l2jserver/gameserver/GameServer.java =================================================================== --- java/com/l2jserver/gameserver/GameServer.java (revision 4422) +++ java/com/l2jserver/gameserver/GameServer.java (working copy) @@ -87,6 +89,7 @@ import com.l2jserver.gameserver.instancemanager.AirShipManager; import com.l2jserver.gameserver.instancemanager.AntiFeedManager; import com.l2jserver.gameserver.instancemanager.AuctionManager; +import com.l2jserver.gameserver.instancemanager.AutoVoteRewardManager; import com.l2jserver.gameserver.instancemanager.BoatManager; import com.l2jserver.gameserver.instancemanager.CastleManager; import com.l2jserver.gameserver.instancemanager.CastleManorManager; @@ -478,6 +488,9 @@ _log.info("Server Loaded in " + ((serverLoadEnd - serverLoadStart) / 1000) + " seconds"); AutoAnnounceTaskManager.getInstance(); + + if (Config.L2JMOD_VOTE_ENGINE_ENABLE) + AutoVoteRewardManager.getInstance(); } Index: java/com/l2jserver/gameserver/Shutdown.java =================================================================== --- java/com/l2jserver/gameserver/Shutdown.java (revision 4422) +++ java/com/l2jserver/gameserver/Shutdown.java (working copy) @@ -20,8 +20,10 @@ import com.l2jserver.Config; import com.l2jserver.L2DatabaseFactory; import com.l2jserver.gameserver.datatables.ClanTable; import com.l2jserver.gameserver.datatables.OfflineTradersTable; +import com.l2jserver.gameserver.instancemanager.AutoVoteRewardManager; import com.l2jserver.gameserver.instancemanager.CastleManorManager; import com.l2jserver.gameserver.instancemanager.CursedWeaponsManager; import com.l2jserver.gameserver.instancemanager.GrandBossManager; @@ -538,12 +540,19 @@ ClanTable.getInstance().storeClanScore(); _log.info("Clan System: Data saved!!"); + if (Config.L2JMOD_VOTE_ENGINE_SAVE && Config.L2JMOD_VOTE_ENGINE_ENABLE) + AutoVoteRewardManager.getInstance().save(); + Index: java/com/l2jserver/gameserver/instancemanager/AutoVoteRewardManager.java =================================================================== --- java/com/l2jserver/gameserver/instancemanager/AutoVoteRewardManager.java (revision 0) +++ java/com/l2jserver/gameserver/instancemanager/AutoVoteRewardManager.java (revision 0) @@ -0,0 +1,220 @@ +package com.l2jserver.gameserver.instancemanager; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; +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/L2WorldPvP/74078.html"; + private static final int initialCheck = 1 * 1000; + private static final int delayForCheck = 1800 * 1000; + private static final int[] itemId = { 20034, 57 }; + private static final int[] itemCount = { 2, 1000 }; + private static final int votesRequiredForReward = 8; + + 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://L2TopZone.com"); + + 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); + isr = new InputStreamReader(url.openStream()); + 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(); + } +} \ No newline at end of file Index: java/config/l2jmods.properties =================================================================== --- java/config/l2jmods.properties (revision 4422) +++ java/config/l2jmods.properties (working copy) @@ -418,3 +417,14 @@ will be 1+2=3. Use 0 or negative value for unlimited number of connections. Default: 127.0.0.1,0 (no limits from localhost) DualboxCheckWhitelist = 127.0.0.1,0 + +--------------------------------------------------------------------------- +Auto Vote Event Manager +--------------------------------------------------------------------------- +Enable +Default: False +EnableAutoVoteEngine = False + +Save and Load votes count on start/shutdown to database +Default: False +AutoVoteEngineSaveLoad = False
Na kai sql file - Code:
-
-- ---------------------------- -- Table structure for `votes` -- ---------------------------- DROP TABLE IF EXISTS `votes`; CREATE TABLE `votes` ( `id` int(6) NOT NULL, `vote` int(6) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of votes -- ---------------------------- INSERT INTO votes VALUES ('1', '0');
| |
|
Crazy Newbie
Posts : 16 Join date : 2011-11-02
| Subject: Re: [Share] Java Code Vote Reward Hop/Top (Freya) Tue Dec 20, 2011 12:01 pm | |
| kane share kai kana allo java code ama mporeis.. | |
|
l2chaos Newbie
Posts : 8 Join date : 2011-12-14
| Subject: Re: [Share] Java Code Vote Reward Hop/Top (Freya) Thu Dec 22, 2011 12:05 pm | |
| kalo share mia erotisi an afto - Code:
-
+ private static Logger _log = Logger.getLogger(AutoVoteRewardManager.class.getName()); + + private static final String http = "http://l2.hopzone.net/lineage2/moreinfo/L2WorldPvP an afto to sfiso keno tha boro na balo to link apo ta gameserver config http://l2.hopzone.net/lineage2/moreinfo/L2WorldPvP kai edo + L2JMOD_VOTE_ENGINE_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("EnableAutoVoteEngine", "false")); + L2JMOD_VOTE_ENGINE_SAVE = edo bazo true? | |
|
Dev(ArisPLC) Global Moderator
Posts : 6 Join date : 2011-11-01
| Subject: Re: [Share] Java Code Vote Reward Hop/Top (Freya) Fri Dec 23, 2011 2:58 am | |
| man sto proto den katalava kai sto deftero pai me to apo kato
+ L2JMOD_VOTE_ENGINE_SAVE = Boolean.parseBoolean(L2JModSettings.getProperty("AutoVoteEngineSaveLoad", "false"));
| |
|
Sponsored content
| Subject: Re: [Share] Java Code Vote Reward Hop/Top (Freya) | |
| |
|