l2redkiller Posted January 6, 2011 Posted January 6, 2011 here the error in console :http://www.ncsro.de/downloads/error.jpg and here the script : ### Eclipse Workspace Patch 1.0 #P L2_GameServer 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,162 @@ +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 com.l2jserver.L2DatabaseFactory; +import com.l2jserver.gameserver.Announcements; +import com.l2jserver.gameserver.ThreadPoolManager; +import com.l2jserver.gameserver.model.L2ItemInstance; +import com.l2jserver.gameserver.model.L2World; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; + +public class AutoVoteRewardHandler +{ + private final String MAXVOTES = "http://maxvotes.com/sinfo/XXX.html"; + // 60 * 1000(1000milliseconds = 1 second) = 60seconds + private final int initialCheck = 60 * 1000; + // 1800 * 1000(1000milliseconds = 1 second) = 1800seconds = 30minutes + private final int delayForCheck = 1800 * 1000; + private final int[] itemId = { 3500, 5000, 6500 }; + private final int[] itemCount = { 1, 5, 4 }; + private final int[] maxStack = { 1, 1, 1 }; + private final int votesRequiredForReward = 10; + // do not change + private int lastVoteCount = 0; + + private AutoVoteRewardHandler() + { + System.out.println("Vote Reward System Initiated."); + ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), initialCheck, delayForCheck); + } + + private class AutoReward implements Runnable + { + public void run() + { + int votes = getVotes(); + System.out.println("Server Votes: " + votes); + if (votes != 0 && getLastVoteCount() != 0 && votes >= getLastVoteCount() + votesRequiredForReward) + { + Connection con = null; + try + { + con = L2DatabaseFactory.getInstance().getConnection(); + PreparedStatement statement = con.prepareStatement("" + + "SELECT" + + " c.charId," + + " c.char_name" + + "FROM" + + " c.characters AS c" + + "LEFT JOIN" + + " c.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; + while (rset.next()) + { + player = L2World.getInstance().getPlayer(rset.getInt("charId")); + if (player != null && !player.getClient().isDetached()) + { + for (int i = 0; i < itemId.length; i++) + { + item = player.getInventory().getItemByItemId(itemId[i]); + if (item == null || item.getCount() < maxStack[i]) + player.addItem("reward", itemId[i], itemCount[i], player, true); + } + } + } + statement.close(); + } + catch (SQLException e) + { + e.printStackTrace(); + } + finally + { + L2DatabaseFactory.close(con); + } + + setLastVoteCount(getLastVoteCount() + votesRequiredForReward); + } + Announcements.getInstance().announceToAll("Server Votes: " + votes + " | Next Reward on " + (getLastVoteCount() + votesRequiredForReward) + " Votes."); + if (getLastVoteCount() == 0) + setLastVoteCount(votes); + } + } + + private int getVotes() + { + URL url = null; + InputStreamReader isr = null; + BufferedReader in = null; + try + { + url = new URL(MAXVOTES); + isr = new InputStreamReader(url.openStream()); + in = new BufferedReader(isr); + String inputLine; + while ((inputLine = in.readLine()) != null) + { + 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; + } + + private void setLastVoteCount(int voteCount) + { + lastVoteCount = voteCount; + } + + private int getLastVoteCount() + { + return lastVoteCount; + } + + public static AutoVoteRewardHandler getInstance() + { + return SingletonHolder._instance; + } + + @SuppressWarnings("synthetic-access") + private static class SingletonHolder + { + protected static final AutoVoteRewardHandler _instance = new AutoVoteRewardHandler(); + } +} Index: java/com/l2jserver/gameserver/GameServer.java =================================================================== --- java/com/l2jserver/gameserver/GameServer.java (revision 4472) +++ java/com/l2jserver/gameserver/GameServer.java (working copy) @@ -86,6 +86,7 @@ import com.l2jserver.gameserver.instancemanager.AirShipManager; import com.l2jserver.gameserver.instancemanager.AntiFeedManager; import com.l2jserver.gameserver.instancemanager.AuctionManager; +import com.l2jserver.gameserver.instancemanager.AutoVoteRewardHandler; import com.l2jserver.gameserver.instancemanager.BoatManager; import com.l2jserver.gameserver.instancemanager.CastleManager; import com.l2jserver.gameserver.instancemanager.CastleManorManager; @@ -409,6 +410,8 @@ if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.RESTORE_OFFLINERS) OfflineTradersTable.restoreOfflineTraders(); + AutoVoteRewardHandler.getInstance(); + if (Config.DEADLOCK_DETECTOR) { _deadDetectThread = new DeadLockDetector(); announce work just have problem at give item and make the sql check thanks for help
0 Xanderॐ Posted January 6, 2011 Posted January 6, 2011 The sql string needs spaces. Like that : " SELECT" + + " c.charId," + + " c.char_name" + + " FROM" + + " c.characters AS c" + + " LEFT JOIN" + + " c.accounts AS a" + + " ON" + + " c.account_name = a.login" + + " WHERE" + + " c.online > 0" + + " GROUP BY" + + " a.lastIP" + + " ORDER BY" + + " c.level" + + " DESC");
0 l2redkiller Posted January 7, 2011 Author Posted January 7, 2011 ok thanks i will test it :D i will report more if need :D
Question
l2redkiller
here the error in console :http://www.ncsro.de/downloads/error.jpg
and here the script :
announce work just have problem at give item and make the sql check thanks for help
2 answers to this question
Recommended Posts