Natsu Posted December 30, 2010 Posted December 30, 2010 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 net.sf.l2j.Config; import net.sf.l2j.L2DatabaseFactory; import net.sf.l2j.gameserver.Announcements; 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; public class AutoVoteRewardHandler { private final String HOPZONE = "Config.HopZone_ID"; // 60 * 1000(1000milliseconds = 1 second) = 60seconds private final int initialCheck = 60 * 1000; // 1800 * 1000(1000milliseconds = 1 second) = 1800seconds = 30minutes private final int delayForCheck = Config.Delay_for_check * 1000; private final int[] itemId = {Config.Item_ID}; private final int[] itemCount = {Config.Item_Count}; private final int[] maxStack = {Config.Max_Stack}; private final int votesRequiredForReward = Config.Votes_Required; // 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" + " 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; while (rset.next()) { player = L2World.getInstance().getPlayer("charId"); if (player != null && !player.getClient().isDetached()) { for (int i = 0; i < itemId.length; i++) { item = player.getInventory().getItemByItemId(itemId); if (item == null || item.getCount() < maxStack) player.addItem("reward", itemId, itemCount, player, true); } } } statement.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (con != null) con.close(); } catch (SQLException e) { e.printStackTrace(); } } 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(HOPZONE); 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(); } } to code beni ok exw vali kai ta ipolipa gameserver+config alla m vgeni ena error sto parapano code if (player != null && !player.getClient().isDetached()) bori kapios na m pi pos to fix afto?? Quote
0 FighterBoss Posted December 30, 2010 Posted December 30, 2010 To quick fix που σου δίνει το eclipse το δοκίμασες; Quote
0 Natsu Posted December 30, 2010 Author Posted December 30, 2010 To quick fix που σου δίνει το eclipse το δοκίμασες; ti? den to gnorizo afto pou les :) ase pou twra pros8ata arxisa na vazo java codes. Quote
0 Fanky Posted December 30, 2010 Posted December 30, 2010 L2GameClient.java line 70 private boolean _isDetached = false; line 168 public boolean isDetached() { return _isDetached; } public void setDetached(boolean b) { _isDetached = b; } Βάλτο και θα είσαι οκ,για όποια απορία κάνε ένα reply. Quote
0 Natsu Posted December 30, 2010 Author Posted December 30, 2010 ty m vgike to error alla otan anigo ton server to gameserver m vgazi error kai den 3ekinai ka9olou :) twra ti ftei?? Quote
0 LioNtaraki Posted December 30, 2010 Posted December 30, 2010 re file signomi den ksero alla ti malakia svn version ebales Quote
0 Natsu Posted December 30, 2010 Author Posted December 30, 2010 1.4 me to 1.6 m vgazi error sto build Quote
0 Kяaσh Posted December 30, 2010 Posted December 30, 2010 re file signomi den ksero alla ti malakia svn version ebales re ka8usterimene ti mlks les? Quote
0 Fanky Posted December 30, 2010 Posted December 30, 2010 re ka8usterimene ti mlks les? xaxaxa0 XD ty m vgike to error alla otan anigo ton server to gameserver m vgazi error kai den 3ekinai ka9olou :) twra ti ftei?? πιθανός να έχει κάποιο λάθος το vote system, φέρε μια φώτο με το error. Quote
0 Natsu Posted December 30, 2010 Author Posted December 30, 2010 πιθανός να έχει κάποιο λάθος το vote system, φέρε μια φώτο με το error. vasika des kai to code ama einai kalo http://www.maxcheaters.com/forum/index.php?topic=190455.0 Quote
0 `Rοmeο Posted December 30, 2010 Posted December 30, 2010 vasika des kai to code ama einai kalo http://www.maxcheaters.com/forum/index.php?topic=190455.0 this reward system works perfect. Quote
Question
Natsu
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 net.sf.l2j.Config;
import net.sf.l2j.L2DatabaseFactory;
import net.sf.l2j.gameserver.Announcements;
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;
public class AutoVoteRewardHandler
{
private final String HOPZONE = "Config.HopZone_ID";
// 60 * 1000(1000milliseconds = 1 second) = 60seconds
private final int initialCheck = 60 * 1000;
// 1800 * 1000(1000milliseconds = 1 second) = 1800seconds = 30minutes
private final int delayForCheck = Config.Delay_for_check * 1000;
private final int[] itemId = {Config.Item_ID};
private final int[] itemCount = {Config.Item_Count};
private final int[] maxStack = {Config.Max_Stack};
private final int votesRequiredForReward = Config.Votes_Required;
// 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" +
" 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;
while (rset.next())
{
player = L2World.getInstance().getPlayer("charId");
if (player != null && !player.getClient().isDetached())
{
for (int i = 0; i < itemId.length; i++)
{
item = player.getInventory().getItemByItemId(itemId);
if (item == null || item.getCount() < maxStack)
player.addItem("reward", itemId, itemCount, player, true);
}
}
}
statement.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
try { if (con != null) con.close(); } catch (SQLException e) { e.printStackTrace(); }
}
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(HOPZONE);
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();
}
}
to code beni ok exw vali kai ta ipolipa gameserver+config alla m vgeni ena error sto parapano code
if (player != null && !player.getClient().isDetached())
bori kapios na m pi pos to fix afto??
10 answers to this question
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.