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..
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.
Hola, gente bella como estan? Acabo de terminar de compilar el proyecto L2jFrozen Rev: 1132 (viejisimo)
No tengo problemas con que sea muy viejo, ya que el proyecto es para mi y mis hijos. (Lan/Offline) no es para ponerlo en línea. Quiero aprender y darles a mis hijos más comodidades a la hora de jugar. y por mi parte, también experimentar con el juego.
Mi problema es que no se mucho del tema. Pude hacer algunas configuraciones Basicas a mi gusto y el de mis hijos, pero nunca compila ni nada de eso... Estaria necesitando ayuda por parte de ustedes, la comunidad... Quiero simplemente Quitar todas las restricciones de Subclases, Quitar restriccion de "Overlord, Warsmith y subclase de elfos oscuros con elfos blancos y alrevez" desde ya muchas gracias! saludos comunidad
Question
ČυяŞŀŅğ
Hello , Im tryning to make vote systems save the votes into the database , and load them after restart
topzone system
shutdown.java
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
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.