Скиньте в ПМ ссылку на свою статистику.
Добавлено через 51 минуту
Сверь..
package services;
import l2p.Config;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.SQL.ResultSet;
import java.SQL.SQLException;
import java.SQL.TIMESTAMP;
import java.util.logging.Logger;
import java.util.concurrent.ScheduledFuture;
import java.net.URL;
import l2p.common.ThreadPoolManager;
import l2p.DATABASE.FiltredPreparedStatement;
import l2p.DATABASE.L2DatabaseFactory;
import l2p.DATABASE.ThreadConnection;
import l2p.extensions.scripts.Functions;
import l2p.extensions.scripts.ScriptFile;
import l2p.gameserver.model.L2ObjectsStorage;
import l2p.gameserver.model.L2Player;
import l2p.util.Rnd;
public class VoteManager extends Functions implements ScriptFile
{
/*
* (c) Ro0TT
*/
private static Logger log = Logger.getLogger(VoteManager.class.getName());
private static ScheduledFuture<?> _startTask;
TIMESTAMP _lastVote;
private String urlS = "";
public class StartTask implements Runnable
{
public void run()
{
while (Config.L2VOTEMANAGER_ENABLE)
{
try
{
URL url = NEW URL(urlS);
parse(url.openStream());
}
catch(Exception e)
{
log.warning("VoteManager: Error url parse.");
}
try
{
Thread.sleep(Config.L2VOTEMANAGER_TIME);
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
public void onShutdown()
{
}
public void onLoad()
{
try
{
ThreadConnection con = L2DatabaseFactory.getInstance().getConnection();
FiltredPreparedStatement stm = con.prepareStatement("select max(votedate) from character_votes");
ResultSet r = stm.executeQuery();
IF(r.NEXT())
_lastVote = NEW TIMESTAMP(r.getLong(1) * 1000);
IF (_lastVote==NULL)
{
_lastVote = NEW TIMESTAMP(0);
}
r.close();
stm.close();
con.close();
}
catch(SQLException e)
{
log.warning("VoteManager: Error connection to database: "+e);
}
urlS = "http://l2top.ru/editServ/?adminAct=lastVotes&uid=" + Config.L2TOP_ID + "&key=" + Config.L2TOP_KEY;
_startTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(NEW StartTask(), 1, 1);
}
public void onReload()
{
_startTask.cancel(TRUE);
onLoad();
}
public void parse(InputStream IS) throws Exception
{
BufferedReader reader = NEW BufferedReader(NEW InputStreamReader(IS,"windows-1251"));
String line;
INT votes = 0;
TIMESTAMP LAST = _lastVote;
while((line=reader.readLine()) != NULL)
{
IF (line.indexOf("\t") != -1)
{
TIMESTAMP voteDate = TIMESTAMP.valueOf(line.SUBSTRING(0,line.indexOf("\t")).TRIM());
IF (voteDate.after(_lastVote))
{
IF(voteDate.after(LAST))
LAST = voteDate;
String charName = line.SUBSTRING(line.indexOf("\t")+1).toLowerCase();
Store(charName, voteDate);
votes++;
}
}
}
_lastVote = LAST;
log.info("VoteManager: "+votes+" processed");
}
public void reward(L2Player player)
{
IF(player != NULL)
{
player.getInventory().addItem(Config.L2VOTEMANAGER_REWARD_ID, Config.L2VOTEMANAGER_REWARD_KEY);
IF (player.isOnline())
player.sendMessage("Спасибо, что проголосовали за наш сервер!");
player.store(TRUE);
}
}
public void Store(String _charName, TIMESTAMP _votedate)
{
try
{
ThreadConnection con = L2DatabaseFactory.getInstance().getConnection();
FiltredPreparedStatement stm = con.prepareStatement("insert into character_votes select ?,? from characters where not exists(select * from character_votes where votedate=? and charName =?) limit 1");
stm.setLong(1, _votedate.getTime()/1000);
stm.setString(2, _charName);
stm.setLong(3, _votedate.getTime()/1000);
stm.setString(4, _charName);
BOOLEAN sendPrize = stm.executeUpdate() > 0;
stm.close();
IF (sendPrize)
{
L2Player player = L2ObjectsStorage.getPlayer(_charName);
IF(player != NULL)
reward(player);
}
}
catch (SQLException e)
{
log.warning("VoteManager: Error storing data "+e);
}
}
}
Code: SQL