Hello , Im tryning to make vote systems save the votes into the database , and load them after restart
topzone system
package com.l2jserver.gameserver.instancemanager;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
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.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.network.serverpackets.ExShowScreenMessage;
import com.l2jserver.gameserver.util.Broadcast;
public class TzVoteRewardManager
{
private static Logger _log = Logger.getLogger(TzVoteRewardManager.class.getName());
private static final String http = Config.TOPZONE_URL;
private static final int initialCheck = 1 * 1000;
private static final int delayForCheck = 10 * 60000;
private static final int itemId = Config.TOPZONE_REWARD_ID ;
private static final int itemCount = Config.TOPZONE_REWARD_COUNT ;
private static final int votesRequiredForReward = 10;
private static List<String> _ips = new ArrayList<String>();
private static int lastVoteCount = 0;
private TzVoteRewardManager()
{
if(!Config.ENABLE_TOPZONE)
return;
_log.info("----------------------------------------------------");
_log.info("AutoVoteRewardManager: Vote reward system For TZ initiated.");
_log.info("----------------------------------------------------");
load();
ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), initialCheck, delayForCheck);
}
private class AutoReward implements Runnable
{
public void run()
{
int votes = getVotes();
_log.info("AutoVoteRewardManager For TZ : We now have " + votes + "/"+(getLastVoteCount()+votesRequiredForReward)+" vote(s). Next check in "+(delayForCheck/1000)+" sec.");
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()))
{
_log.warning("Hello Moto!Giving reward to character "+onlinePlayer.getName());
onlinePlayer.addItem("vote_reward", itemId, itemCount, onlinePlayer, true);
onlinePlayer.sendPacket(new ExShowScreenMessage("You Have bean Rewarded For topzone votes!", 5000));
onlinePlayer.sendPacket(new CreatureSay(1, Say2.PARTY, "SYSTEM", "You Have bean Rewarded For topzone votes!"));
_ips.add(onlinePlayer.getClient().getConnection().getInetAddress().getHostAddress());
}
}
}
_log.info("AutoVoteRewardManager: Reward for votes now!");
Broadcast.toAllOnlinePlayers(new CreatureSay(1, Say2.CRITICAL_ANNOUNCE, "SYSTEM", "Topzone SYSTEM:" + " Thanks For Vote You Have Been Rewarded!"));
setLastVoteCount(getLastVoteCount() + votesRequiredForReward);
}
if (getLastVoteCount() == 0)
{
setLastVoteCount(votes);
}
else if ((getLastVoteCount() + votesRequiredForReward) - votes > votesRequiredForReward || votes > (getLastVoteCount() + votesRequiredForReward))
{
setLastVoteCount(votes);
}
Broadcast.toAllOnlinePlayers(new CreatureSay(1, Say2.CRITICAL_ANNOUNCE, "SYSTEM", "Topzone SYSTEM:" + " We have " + votes + " Vote(s). || Next Reward On " + (getLastVoteCount()+votesRequiredForReward) + " Votes."));
_ips.clear();
}
}
private int getVotes()
{
URL url = null;
InputStreamReader isr = null;
BufferedReader in = null;
try
{
url = new URL(http);
URLConnection con = url.openConnection();
con.addRequestProperty("User-Agent", "Mozilla/4.76");
isr = new InputStreamReader(con.getInputStream());
in = new BufferedReader(isr);
String inputLine;
while ((inputLine = in.readLine()) != null)
{
// for top-zone
if (inputLine.contains("Votes:"))
{
return Integer.parseInt(inputLine.split(">")[3].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 static 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 TzVoteRewardManager getInstance()
{
return SingletonHolder._instance;
}
@SuppressWarnings("synthetic-access")
private static class SingletonHolder
{
protected static final TzVoteRewardManager _instance = new TzVoteRewardManager();
}
}
shutdown.java
TzVoteRewardManager.getInstance().save();
_log.info("Vote Reward Manager TZ: Data saved For Topzone.");
votes.sql
-- ----------------------------
-- 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`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of votes
-- ----------------------------
when server restarting i can see the msg ive add about saving.. but does not saving really :P Kinda strange .. any idea? No errors at all , system is working , rewards for all , ip check etc , just not saving like ti should..
Warning: This guy is a big scammer, trying to sell everything, advertising for servers etc.
That's his mail address evgesha.nrnr@gmail.com , stay away!
@Atom @Celestine
Warning: This guy is a big scammer, trying to sell everything, advertising for servers etc.
That's his mail address evgesha.nrnr@gmail.com , stay away!
@Celestine
@Atom
Question
ČυяŞŀŅğ
Hello , Im tryning to make vote systems save the votes into the database , and load them after restart
topzone system
package com.l2jserver.gameserver.instancemanager; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; 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.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.network.serverpackets.ExShowScreenMessage; import com.l2jserver.gameserver.util.Broadcast; public class TzVoteRewardManager { private static Logger _log = Logger.getLogger(TzVoteRewardManager.class.getName()); private static final String http = Config.TOPZONE_URL; private static final int initialCheck = 1 * 1000; private static final int delayForCheck = 10 * 60000; private static final int itemId = Config.TOPZONE_REWARD_ID ; private static final int itemCount = Config.TOPZONE_REWARD_COUNT ; private static final int votesRequiredForReward = 10; private static List<String> _ips = new ArrayList<String>(); private static int lastVoteCount = 0; private TzVoteRewardManager() { if(!Config.ENABLE_TOPZONE) return; _log.info("----------------------------------------------------"); _log.info("AutoVoteRewardManager: Vote reward system For TZ initiated."); _log.info("----------------------------------------------------"); load(); ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoReward(), initialCheck, delayForCheck); } private class AutoReward implements Runnable { public void run() { int votes = getVotes(); _log.info("AutoVoteRewardManager For TZ : We now have " + votes + "/"+(getLastVoteCount()+votesRequiredForReward)+" vote(s). Next check in "+(delayForCheck/1000)+" sec."); 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())) { _log.warning("Hello Moto!Giving reward to character "+onlinePlayer.getName()); onlinePlayer.addItem("vote_reward", itemId, itemCount, onlinePlayer, true); onlinePlayer.sendPacket(new ExShowScreenMessage("You Have bean Rewarded For topzone votes!", 5000)); onlinePlayer.sendPacket(new CreatureSay(1, Say2.PARTY, "SYSTEM", "You Have bean Rewarded For topzone votes!")); _ips.add(onlinePlayer.getClient().getConnection().getInetAddress().getHostAddress()); } } } _log.info("AutoVoteRewardManager: Reward for votes now!"); Broadcast.toAllOnlinePlayers(new CreatureSay(1, Say2.CRITICAL_ANNOUNCE, "SYSTEM", "Topzone SYSTEM:" + " Thanks For Vote You Have Been Rewarded!")); setLastVoteCount(getLastVoteCount() + votesRequiredForReward); } if (getLastVoteCount() == 0) { setLastVoteCount(votes); } else if ((getLastVoteCount() + votesRequiredForReward) - votes > votesRequiredForReward || votes > (getLastVoteCount() + votesRequiredForReward)) { setLastVoteCount(votes); } Broadcast.toAllOnlinePlayers(new CreatureSay(1, Say2.CRITICAL_ANNOUNCE, "SYSTEM", "Topzone SYSTEM:" + " We have " + votes + " Vote(s). || Next Reward On " + (getLastVoteCount()+votesRequiredForReward) + " Votes.")); _ips.clear(); } } private int getVotes() { URL url = null; InputStreamReader isr = null; BufferedReader in = null; try { url = new URL(http); URLConnection con = url.openConnection(); con.addRequestProperty("User-Agent", "Mozilla/4.76"); isr = new InputStreamReader(con.getInputStream()); in = new BufferedReader(isr); String inputLine; while ((inputLine = in.readLine()) != null) { // for top-zone if (inputLine.contains("Votes:")) { return Integer.parseInt(inputLine.split(">")[3].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 static 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 TzVoteRewardManager getInstance() { return SingletonHolder._instance; } @SuppressWarnings("synthetic-access") private static class SingletonHolder { protected static final TzVoteRewardManager _instance = new TzVoteRewardManager(); } }shutdown.java
TzVoteRewardManager.getInstance().save(); _log.info("Vote Reward Manager TZ: Data saved For Topzone.");votes.sql
when server restarting i can see the msg ive add about saving.. but does not saving really :P Kinda strange .. any idea? No errors at all , system is working , rewards for all , ip check etc , just not saving like ti should..
12 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now