insaNNe Posted April 1, 2012 Posted April 1, 2012 Hello :D i have adapted GoldenBoy™ Vote Reward System from Interlude to High Five and i have made few changes ... ( votes are saved in db now and more .. ) ### Eclipse Workspace Patch 1.0 #P L2J_Server_H5 Index: java/com/l2jserver/gameserver/instancemanager/AutoVoteRewardHandler.java =================================================================== --- java/com/l2jserver/gameserver/instancemanager/AutoVoteRewardHandler.java (revision 0) +++ java/com/l2jserver/gameserver/instancemanager/AutoVoteRewardHandler.java (revision 0) @@ -0,0 +1,235 @@ +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.sql.SQLException; +import java.util.logging.Level; +import java.util.logging.Logger; + +import com.l2jserver.gameserver.model.item.instance.L2ItemInstance; +import com.l2jserver.Config; +import com.l2jserver.L2DatabaseFactory; +import com.l2jserver.gameserver.ThreadPoolManager; +import com.l2jserver.gameserver.model.L2World; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.network.clientpackets.Say2; +import com.l2jserver.gameserver.network.serverpackets.CreatureSay; +import com.l2jserver.gameserver.util.Broadcast; + +public class AutoVoteRewardHandler +{ + private static Logger _log = Logger.getLogger(AutoVoteRewardHandler.class.getName()); + + private static final int initialCheck = 1 * 1000; + private static final int delayForCheck = Config.DELAY_FOR_NEXT_REWARD * 1000; + + private static int lastVoteCount = 0; + + private AutoVoteRewardHandler() + { + _log.info("Vote Reward System: Vote reward system initiated."); + if (Config.VOTE_REWARD_ENABLE) + load(); + ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), initialCheck, delayForCheck); + } + + private class AutoReward implements Runnable + { + @Override + public void run() + { + int votes = getVotes(Config.VOTE_HTML_PATCH); + System.out.println("Server Votes: " + votes); + if (votes != 0 && getLastVoteCount() != 0 && votes >= getLastVoteCount() + Config.VOTES_FOR_REWARD) + { + Connection con = null; + try + { + con = L2DatabaseFactory.getInstance().getConnection(); + PreparedStatement statement = con.prepareStatement("SELECT c.charId, c.char_name FROM characters AS c LEFT JOIN accounts AS a ON c.account_name = a.login WHERE c.online > 0 GROUP BY a.lastIP ORDER BY c.level DESC"); + ResultSet rset = statement.executeQuery(); + L2PcInstance player = null; + L2ItemInstance item = null; + L2ItemInstance item2 = null; + while (rset.next()) + { + player = L2World.getInstance().getPlayer(rset.getInt("charId")); + if (player != null && !player.getClient().isDetached()) + { + item = player.getInventory().getItemByItemId(Config.VOTE_REWARD1_ID); + if (item == null || item.getCount() < Config.MAX_REWARD_COUNT_FOR_STACK_ITEM1) + player.addItem("reward", Config.VOTE_REWARD1_ID, Config.VOTE_REWARD1_COUNT, player, true); + item2 = player.getInventory().getItemByItemId(Config.VOTE_REWARD1_ID); + + if (item2 == null || item2.getCount() < Config.MAX_REWARD_COUNT_FOR_STACK_ITEM1) + player.addItem("reward", Config.VOTE_REWARD2_ID, Config.VOTE_REWARD2_COUNT, player, true); + } + } + setLastVoteCount(getLastVoteCount() + Config.VOTES_FOR_REWARD); + statement.close(); + _log.info("Vote Reward System: Reward for votes now!"); + Broadcast.toAllOnlinePlayers(new CreatureSay(1, Say2.CRITICAL_ANNOUNCE, "", "Vote Manager: Reward for players! Thanks for Vote.")); + } + catch (SQLException e) + { + e.printStackTrace(); + } + finally + { + L2DatabaseFactory.close(con); + } + + setLastVoteCount(getLastVoteCount() + Config.VOTES_FOR_REWARD); + } + Broadcast.toAllOnlinePlayers(new CreatureSay(1, Say2.CRITICAL_ANNOUNCE, "", "Vote Manager: Server votes: " + votes + " | Next Reward on " + (getLastVoteCount() + Config.VOTES_FOR_REWARD) + " Votes.")); + if (getLastVoteCount() == 0) + setLastVoteCount(votes); + } + } + + private int getVotes(String urlString) + { + URL url = null; + InputStreamReader isr = null; + BufferedReader in = null; + try + { + url = new URL(urlString); + isr = new InputStreamReader(url.openStream()); + in = new BufferedReader(isr); + String inputLine; + while ((inputLine = in.readLine()) != null) + { + if (Config.VOTE_REWARD_TOPZONE_ENABLE) + { + // for TopZone + if (inputLine.contains("<tr><td><div align=\"center\"><b><font style=\"font-size:14px;color:#018BC1;\"")) + { + return Integer.valueOf(inputLine.split(">")[5].replace("</font", "")); + } + } + if (Config.VOTE_REWARD_HOPZONE_ENABLE) + { + // for HopZone + if (inputLine.contains("rank anonymous tooltip")) + { + @SuppressWarnings("unused") + int Sub = 12; + switch (inputLine.length()) + { + case 116: + Sub = 13; + break; + case 117: + Sub = 14; + break; + case 118: + Sub = 15; + break; + case 119: + Sub = 16; + break; + } + return Integer.valueOf(inputLine.split(">")[2].replace("</span", "")); + } + } + } + } + catch (IOException e) + { + _log.warning("Vote Reward System: "+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 AutoVoteRewardHandler getInstance() + { + return SingletonHolder._instance; + } + + @SuppressWarnings("synthetic-access") + private static class SingletonHolder + { + protected static final AutoVoteRewardHandler _instance = new AutoVoteRewardHandler(); + } +} \ No newline at end of file ______________ ### Eclipse Workspace Patch 1.0 #P L2J_Server_H5 Index: java/com/l2jserver/gameserver/GameServer.java =================================================================== --- java/com/l2jserver/gameserver/GameServer.java (revision 5219) +++ java/com/l2jserver/gameserver/GameServer.java (working copy) @@ -111,6 +111,7 @@ import com.l2jserver.gameserver.instancemanager.TransformationManager; import com.l2jserver.gameserver.instancemanager.WalkingManager; import com.l2jserver.gameserver.instancemanager.ZoneManager; +import com.l2jserver.gameserver.instancemanager.AutoVoteRewardHandler; import com.l2jserver.gameserver.model.AutoChatHandler; import com.l2jserver.gameserver.model.AutoSpawnHandler; import com.l2jserver.gameserver.model.L2Manor; @@ -460,6 +465,9 @@ _log.info("Server Loaded in " + ((serverLoadEnd - serverLoadStart) / 1000) + " seconds"); AutoAnnounceTaskManager.getInstance(); + + if (Config.VOTE_REWARD_ENABLE) + AutoVoteRewardHandler.getInstance(); } public static void main(String[] args) throws Exception __________________ ### Eclipse Workspace Patch 1.0 #P L2J_Server_H5 Index: java/com/l2jserver/gameserver/Shutdown.java =================================================================== --- java/com/l2jserver/gameserver/Shutdown.java (revision 5219) +++ java/com/l2jserver/gameserver/Shutdown.java (working copy) @@ -33,6 +33,7 @@ import com.l2jserver.gameserver.instancemanager.ItemsOnGroundManager; import com.l2jserver.gameserver.instancemanager.QuestManager; import com.l2jserver.gameserver.instancemanager.RaidBossSpawnManager; +import com.l2jserver.gameserver.instancemanager.AutoVoteRewardHandler; import com.l2jserver.gameserver.model.L2World; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.entity.Hero; @@ -562,6 +564,10 @@ ClanTable.getInstance().storeClanScore(); _log.info("Clan System: Data saved("+tc.getEstimatedTimeAndRestartCounter()+"ms)."); + if (Config.VOTE_REWARD_ENABLE) + AutoVoteRewardHandler.getInstance().save(); + _log.info("Vote Reward Manager: Data saved("+tc.getEstimatedTimeAndRestartCounter()+"ms)."); + // Save Cursed Weapons data before closing. CursedWeaponsManager.getInstance().saveData(); _log.info("Cursed Weapons Manager: Data saved("+tc.getEstimatedTimeAndRestartCounter()+"ms)."); ________________ ### Eclipse Workspace Patch 1.0 #P L2J_Server_H5 Index: java/com/l2jserver/Config.java =================================================================== --- java/com/l2jserver/Config.java (revision 5219) +++ java/com/l2jserver/Config.java (working copy) @@ -765,7 +781,41 @@ public static int L2JMOD_DUALBOX_CHECK_MAX_OLYMPIAD_PARTICIPANTS_PER_IP; public static int L2JMOD_DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP; public static TIntIntHashMap L2JMOD_DUALBOX_CHECK_WHITELIST; + public static String VOTE_HTML_PATCH; + public static int VOTE_REWARD1_ID; + public static int VOTE_REWARD2_ID; + public static int VOTE_REWARD1_COUNT; + public static int VOTE_REWARD2_COUNT; + public static int VOTES_FOR_REWARD; + public static boolean VOTE_REWARD_ENABLE; + public static String SERVER_NAME_FOR_VOTES; + public static int MAX_REWARD_COUNT_FOR_STACK_ITEM1; + public static int MAX_REWARD_COUNT_FOR_STACK_ITEM2; + public static int DELAY_FOR_NEXT_REWARD; + public static boolean VOTE_REWARD_HOPZONE_ENABLE; + public static boolean VOTE_REWARD_TOPZONE_ENABLE; public static boolean L2JMOD_ALLOW_CHANGE_PASSWORD; //-------------------------------------------------- // NPC Settings @@ -2646,6 +2717,47 @@ } } L2JMOD_ALLOW_CHANGE_PASSWORD = Boolean.parseBoolean(L2JModSettings.getProperty("AllowChangePassword", "False")); + VOTE_HTML_PATCH = L2JModSettings.getProperty("VoteHtmlPatch", "Null"); + VOTE_REWARD1_COUNT = Integer.parseInt(L2JModSettings.getProperty("VoteReward1Count", "1000")); + VOTE_REWARD2_COUNT = Integer.parseInt(L2JModSettings.getProperty("VoteReward2Count", "1000")); + VOTE_REWARD1_ID = Integer.parseInt(L2JModSettings.getProperty("VoteReward1Id", "57")); + VOTE_REWARD2_ID = Integer.parseInt(L2JModSettings.getProperty("VoteReward2Id", "57")); + VOTES_FOR_REWARD = Integer.parseInt(L2JModSettings.getProperty("VotesForReward", "5")); + VOTE_REWARD_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("EnableVoteReward", "False")); + SERVER_NAME_FOR_VOTES = L2JModSettings.getProperty("ServerNameForVotes", "L2ServerName"); + MAX_REWARD_COUNT_FOR_STACK_ITEM1 = Integer.parseInt(L2JModSettings.getProperty("MaxRewardCountForStackItem1", "2000000000")); + MAX_REWARD_COUNT_FOR_STACK_ITEM2 = Integer.parseInt(L2JModSettings.getProperty("MaxRewardCountForStackItem2", "2000000000")); + DELAY_FOR_NEXT_REWARD = Integer.parseInt(L2JModSettings.getProperty("DelayForNextReward", "600")); + VOTE_REWARD_HOPZONE_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("EnableHopzoneReward", "False")); + VOTE_REWARD_TOPZONE_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("EnableTopzoneReward", "False")); } catch (Exception e) { ______________ Add this after "AllowChangePassword = True" in l2jmods.prop # --------------------------------------------------------------------------- # Vote Reward System # --------------------------------------------------------------------------- # Set it "True" if you want to Enable Vote Reward System. EnableVoteReward = False # If you enable Vote Reward System you must fill your Html Patch. # e.g. VoteHtmlPatch = http://l2.hopzone.net / http://l2topzone.net # Html Patch for Your Vote Site # Works with TopZone & HopZone ServerNameForVotes = ServerName VoteHtmlPatch = http://l2.hopzone.net VoteReward1Count = 5 VoteReward2Count = 2 VoteReward1Id = 9627 VoteReward2Id = 3470 VotesForReward = 10 # Max a-beep-t of reward items that you want to stop reward # the player that have more than "MaxRewardCountForStack". MaxRewardCountForStackItem1 = 500 MaxRewardCountForStackItem2 = 500 # DelayForNextReward in seconds DelayForNextReward = 300 # Enable TopZone Vote Reward # Default = False EnableTopzoneReward = False # Enable HopZone Vote Reward # Default = False EnableHopzoneReward = True You can't enable both rewards, only one ! _____________________ In navicat add this: http://www.2shared.com/document/QK2mvnjv/votes.html Credits: GoldenBoy™ & insaNNe ( for adaptation and changes ) Tested & Working Quote
insaNNe Posted April 2, 2012 Author Posted April 2, 2012 updated, added topzone / hopzone reward :) Quote
Coolis® Posted April 2, 2012 Posted April 2, 2012 Did you test this vote engine? Because the vote engine you updated was posted on mxc since 2011 and i think hopzone made changes. Quote
insaNNe Posted April 2, 2012 Author Posted April 2, 2012 yes its tested :) and it works great ;D Quote
bullseye92 Posted April 2, 2012 Posted April 2, 2012 Tnks for the share.Great work,isntalled it on eclipse and gave me 0 errors. Quote
ianvalls90 Posted April 10, 2012 Posted April 10, 2012 Installed on Eclipse with 0 Errors, BUILD SUCCESSFULL; The thing is: I used another server's HTML Link (as a test), and NO MSG is Shown, On GS Console i dont get any msgs, and IN-Game it's the same, no msgs, i configured it to give just adena every 2 votes, and checked, server's vote count increased in like 20+ and NOT EVEN 1 Reward given........(player with 0 adena, after 3 hours, and 20~30 votes, still 0 adena ¿WTH? ) Any Clue?? As i had to adapt the code for L2JServer CT2.3 (gracia final), maybe you have some clue.....i changed the imports, and changed it to use HeroVoice instead of announcements....but i dont think that is the problem... Any Ideas ?? Tnx. IanN Quote
insaNNe Posted April 10, 2012 Author Posted April 10, 2012 Installed on Eclipse with 0 Errors, BUILD SUCCESSFULL; The thing is: I used another server's HTML Link (as a test), and NO MSG is Shown, On GS Console i dont get any msgs, and IN-Game it's the same, no msgs, i configured it to give just adena every 2 votes, and checked, server's vote count increased in like 20+ and NOT EVEN 1 Reward given........(player with 0 adena, after 3 hours, and 20~30 votes, still 0 adena ¿WTH? ) Any Clue?? As i had to adapt the code for L2JServer CT2.3 (gracia final), maybe you have some clue.....i changed the imports, and changed it to use HeroVoice instead of announcements....but i dont think that is the problem... Any Ideas ?? Tnx. IanN did you add this: ### Eclipse Workspace Patch 1.0 #P L2J_Server_H5 Index: java/com/l2jserver/gameserver/GameServer.java =================================================================== --- java/com/l2jserver/gameserver/GameServer.java (revision 5219) +++ java/com/l2jserver/gameserver/GameServer.java (working copy) @@ -111,6 +111,7 @@ import com.l2jserver.gameserver.instancemanager.TransformationManager; import com.l2jserver.gameserver.instancemanager.WalkingManager; import com.l2jserver.gameserver.instancemanager.ZoneManager; +import com.l2jserver.gameserver.instancemanager.AutoVoteRewardHandler; import com.l2jserver.gameserver.model.AutoChatHandler; import com.l2jserver.gameserver.model.AutoSpawnHandler; import com.l2jserver.gameserver.model.L2Manor; @@ -460,6 +465,9 @@ _log.info("Server Loaded in " + ((serverLoadEnd - serverLoadStart) / 1000) + " seconds"); AutoAnnounceTaskManager.getInstance(); + + if (Config.VOTE_REWARD_ENABLE) + AutoVoteRewardHandler.getInstance(); } public static void main(String[] args) throws Exception ? and enable the engine in l2jmod Quote
ianvalls90 Posted April 10, 2012 Posted April 10, 2012 i will just retry now, cuz i dont really remember, and as its a "dev" copy...and didnt work i erased it ^^. gimme 20 mins and i'll come back with answers.. Quote
ianvalls90 Posted April 10, 2012 Posted April 10, 2012 Retried....(cant edit post ¬¬) yesterday i was with a partner, and he has some more knowledge that i do, so he "edited" the code to make it fit....now im attepting on BUILDING pack with this codes....and get this: Buildfile: C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\build.xml clean: verifyRequirements: init: [mkdir] Created dir: C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\build [mkdir] Created dir: C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\build\classes [mkdir] Created dir: C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\build\dist [mkdir] Created dir: C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\build\dist\login [mkdir] Created dir: C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\build\dist\gameserver version: [exec] Execute failed: java.io.IOException: Cannot run program "svnversion": CreateProcess error=2, El sistema no puede hallar el archivo especificado compile: [javac] C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\build.xml:76: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds [javac] Compiling 1361 source files to C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\build\classes [javac] warning: [options] bootstrap class path not set in conjunction with -source 1.6 [javac] C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\java\net\sf\l2j\gameserver\instancemanager\AutoVoteRewardHandler.java:61: error: method getPlayer in class L2World cannot be applied to given types; [javac] player = L2World.getInstance().getPlayer(rset.getInt("charId")); [javac] ^ [javac] required: String [javac] found: int [javac] reason: actual argument int cannot be converted to String by method invocation conversion [javac] C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\java\net\sf\l2j\gameserver\instancemanager\AutoVoteRewardHandler.java:76: error: cannot find symbol [javac] Broadcast.toAllOnlinePlayers(new CreatureSay(1, Say2.CRITICAL_ANNOUNCE, "", "Vote Manager: Reward for players! Thanks for Vote.")); [javac] ^ [javac] symbol: variable CRITICAL_ANNOUNCE [javac] location: class Say2 [javac] C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\java\net\sf\l2j\gameserver\instancemanager\AutoVoteRewardHandler.java:84: error: cannot find symbol [javac] L2DatabaseFactory.close(con); [javac] ^ [javac] symbol: method close(Connection) [javac] location: class L2DatabaseFactory [javac] C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\java\net\sf\l2j\gameserver\instancemanager\AutoVoteRewardHandler.java:89: error: cannot find symbol [javac] Broadcast.toAllOnlinePlayers(new CreatureSay(1, Say2.CRITICAL_ANNOUNCE, "", "Vote Manager: Server votes: " + votes + " | Next Reward on " + (getLastVoteCount() + Config.VOTES_FOR_REWARD) + " Votes.")); [javac] ^ [javac] symbol: variable CRITICAL_ANNOUNCE [javac] location: class Say2 [javac] C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\java\net\sf\l2j\gameserver\instancemanager\AutoVoteRewardHandler.java:198: error: cannot find symbol [javac] L2DatabaseFactory.close(con); [javac] ^ [javac] symbol: method close(Connection) [javac] location: class L2DatabaseFactory [javac] C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\java\net\sf\l2j\gameserver\instancemanager\AutoVoteRewardHandler.java:221: error: cannot find symbol [javac] L2DatabaseFactory.close(con); [javac] ^ [javac] symbol: method close(Connection) [javac] location: class L2DatabaseFactory [javac] Note: C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\java\net\sf\l2j\gsregistering\RegisterDialog.java uses unchecked or unsafe operations. [javac] Note: Recompile with -Xlint:unchecked for details. [javac] 6 errors [javac] 1 warning BUILD FAILED C:\Documents and Settings\IanN\Escritorio\Workshop\Vote L2_GameServer\build.xml:76: Compile failed; see the compiler error output for details. Total time: 45 seconds Clues? PS: now i'm 100% sure all codes added. Quote
ianvalls90 Posted April 10, 2012 Posted April 10, 2012 i think the problem is some "typos" in "AutoVoteRewardHandler.java".....i show what i have "underlined" on Eclipse: package net.sf.l2j.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.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.Config; import net.sf.l2j.L2DatabaseFactory; import net.sf.l2j.gameserver.ThreadPoolManager; import net.sf.l2j.gameserver.model.L2World; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.network.clientpackets.Say2; import net.sf.l2j.gameserver.network.serverpackets.CreatureSay; import net.sf.l2j.gameserver.util.Broadcast; public class AutoVoteRewardHandler { private static Logger _log = Logger.getLogger(AutoVoteRewardHandler.class.getName()); private static final int initialCheck = 1 * 1000; private static final int delayForCheck = Config.DELAY_FOR_NEXT_REWARD * 1000; private static int lastVoteCount = 0; private AutoVoteRewardHandler() { _log.info("Vote Reward System: Vote reward system initiated."); if (Config.VOTE_REWARD_ENABLE) load(); ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), initialCheck, delayForCheck); } private class AutoReward implements Runnable { @Override public void run() { int votes = getVotes(Config.VOTE_HTML_PATCH); System.out.println("Server Votes: " + votes); if (votes != 0 && getLastVoteCount() != 0 && votes >= getLastVoteCount() + Config.VOTES_FOR_REWARD) { Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("SELECT c.charId, c.char_name FROM characters AS c LEFT JOIN accounts AS a ON c.account_name = a.login WHERE c.online > 0 GROUP BY a.lastIP ORDER BY c.level DESC"); ResultSet rset = statement.executeQuery(); L2PcInstance player = null; L2ItemInstance item = null; L2ItemInstance item2 = null; while (rset.next()) { player = L2World.getInstance().[color=red]getPlayer[/color](rset.getInt("charId")); if (player != null && !player.getClient().isDetached()) { item = player.getInventory().getItemByItemId(Config.VOTE_REWARD1_ID); if (item == null || item.getCount() < Config.MAX_REWARD_COUNT_FOR_STACK_ITEM1) player.addItem("reward", Config.VOTE_REWARD1_ID, Config.VOTE_REWARD1_COUNT, player, true); item2 = player.getInventory().getItemByItemId(Config.VOTE_REWARD1_ID); if (item2 == null || item2.getCount() < Config.MAX_REWARD_COUNT_FOR_STACK_ITEM1) player.addItem("reward", Config.VOTE_REWARD2_ID, Config.VOTE_REWARD2_COUNT, player, true); } } setLastVoteCount(getLastVoteCount() + Config.VOTES_FOR_REWARD); statement.close(); _log.info("Vote Reward System: Reward for votes now!"); Broadcast.toAllOnlinePlayers(new CreatureSay(1, Say2.[color=red]CRITICAL_ANNOUNCE[/color], "", "Vote Manager: Reward for players! Thanks for Vote.")); } catch (SQLException e) { e.printStackTrace(); } finally { L2DatabaseFactory.[color=red]close[/color](con); } setLastVoteCount(getLastVoteCount() + Config.VOTES_FOR_REWARD); } Broadcast.toAllOnlinePlayers(new CreatureSay(1, Say2.[color=red]CRITICAL_ANNOUNCE[/color], "", "Vote Manager: Server votes: " + votes + " | Next Reward on " + (getLastVoteCount() + Config.VOTES_FOR_REWARD) + " Votes.")); if (getLastVoteCount() == 0) setLastVoteCount(votes); } } private int getVotes(String urlString) { URL url = null; InputStreamReader isr = null; BufferedReader in = null; try { url = new URL(urlString); isr = new InputStreamReader(url.openStream()); in = new BufferedReader(isr); String inputLine; while ((inputLine = in.readLine()) != null) { if (Config.VOTE_REWARD_TOPZONE_ENABLE) { // for TopZone if (inputLine.contains("<tr><td><div align=\"center\"><b><font style=\"font-size:14px;color:#018BC1;\"")) { return Integer.valueOf(inputLine.split(">")[5].replace("</font", "")); } } if (Config.VOTE_REWARD_HOPZONE_ENABLE) { // for HopZone if (inputLine.contains("rank anonymous tooltip")) { @SuppressWarnings("unused") int Sub = 12; switch (inputLine.length()) { case 116: Sub = 13; break; case 117: Sub = 14; break; case 118: Sub = 15; break; case 119: Sub = 16; break; } return Integer.valueOf(inputLine.split(">")[2].replace("</span", "")); } } } } catch (IOException e) { _log.warning("Vote Reward System: "+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.[color=red]close[/color](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.[color=red]close[/color](con); } } public static AutoVoteRewardHandler getInstance() { return SingletonHolder._instance; } @SuppressWarnings("synthetic-access") private static class SingletonHolder { protected static final AutoVoteRewardHandler _instance = new AutoVoteRewardHandler(); } } thats the .java mentioned. having underlined the colored parts. i fixed some of them changing the "critical_announce" to "announce", the L2DatabaseFactory.close(con); i dont know that to do with it...:S says : "the method close(connection) is undefined for l2databasefactory and the other one is this: player = "L2World.getInstance().getPlayer(rset.getInt("charId"));" says: the method getplayer(string) in the type l2world is not aplicable for the arguments (int) Please i need to add this feature a.s.a.p. Thanks for the suppor InsaNNe. Cya. IanN Quote
ianvalls90 Posted April 11, 2012 Posted April 11, 2012 instead of saying that sh!tty message, u could. a) swallow ur words. and sthu. b) try to HELP c) at least, post something usefull. or d) READ the whole thread, It's Modified, stated there. For gods sake, can't u read? 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.