/* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package com.l2jserver.gameserver.model.entity;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Calendar;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.Announcements;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
public class EventTask
{
public static void getInstance()
{
ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
{
public void run()
{
String currentEventKing = null,
newEventKing = null;
int topEventKills = 0;
Connection con = null;
try
{
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement stm = con.prepareStatement("SELECT char_name FROM characters WHERE EventKing=? AND accesslevel=?");
stm.setInt(1, 1);
stm.setInt(2, 1);
ResultSet rSet = stm.executeQuery();
if (rSet.next())
{
currentEventKing = rSet.getString("char_name");
}
rSet.close();
stm.close();
if (currentEventKing != null)
{
boolean cont = false;
L2PcInstance cEventKing = L2World.getInstance().getPlayer(currentEventKing);
if (cEventKing == null || cEventKing.isOnline() == 0)
{
cont = true;
}
else
{
cEventKing.setEventKing(false);
cEventKing.broadcastUserInfo();
}
if (cont)
{
stm = con.prepareStatement("UPDATE characters SET EventKing=? WHERE char_name=?");
stm.setInt(1, 0);
stm.setString(2, currentEventKing);
stm.execute();
stm.close();
}
}
stm = con.prepareStatement("SELECT eventkills,char_name FROM characters WHERE accesslevel=? ORDER BY eventkills DESC LIMIT 1");
stm.setInt(1, 0);
rSet = stm.executeQuery();
if (rSet.next())
{
newEventKing = rSet.getString("char_name");
topEventKills = rSet.getInt("eventkills");
}
rSet.close();
stm.close();
boolean cont = false;
L2PcInstance nEventKing = L2World.getInstance().getPlayer(newEventKing);
if (nEventKing == null || nEventKing.isOnline() == 0)
{
cont = true;
}
else
{
nEventKing.setEventKing(true);
nEventKing.broadcastUserInfo();
}
if (cont)
{
stm = con.prepareStatement("UPDATE characters SET EventKing=? WHERE char_name=?");
stm.setInt(1, 1);
stm.setString(2, newEventKing);
stm.execute();
stm.close();
}
stm = con.prepareStatement("UPDATE characters SET eventkills=?");
stm.setInt(1, 0);
stm.execute();
stm.close();
Announcements.getInstance().announceToAll("New event king: "+newEventKing);
}
catch (Exception e)
{ }
finally
{
try
{
con.close();
}
catch (Exception e)
{ }
}
}
}
, getValidationTime());
}
private static long getValidationTime()
{
Calendar cld = Calendar.getInstance();
cld.set(Calendar.HOUR_OF_DAY, 19);
cld.set(Calendar.MINUTE, 0);
cld.set(Calendar.SECOND, 0);
long time = cld.getTimeInMillis();
if (System.currentTimeMillis()-time <= 0)
{
return time;
}
return 0;
}
}
i used this System.out.println("[DEBUG-EVENT] Time left: "+getValidationTime()); before ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() and it worked ( i've got it in console like [DEBUG-EVENT] Time left: 13859604932849 i don't know why the fuck i got this time :|)
Question
Leon29
Why this code is not workin`
/* This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * * http://www.gnu.org/copyleft/gpl.html */ package com.l2jserver.gameserver.model.entity; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Calendar; import com.l2jserver.L2DatabaseFactory; import com.l2jserver.gameserver.Announcements; import com.l2jserver.gameserver.ThreadPoolManager; import com.l2jserver.gameserver.model.L2World; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; public class EventTask { public static void getInstance() { ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() { public void run() { String currentEventKing = null, newEventKing = null; int topEventKills = 0; Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement stm = con.prepareStatement("SELECT char_name FROM characters WHERE EventKing=? AND accesslevel=?"); stm.setInt(1, 1); stm.setInt(2, 1); ResultSet rSet = stm.executeQuery(); if (rSet.next()) { currentEventKing = rSet.getString("char_name"); } rSet.close(); stm.close(); if (currentEventKing != null) { boolean cont = false; L2PcInstance cEventKing = L2World.getInstance().getPlayer(currentEventKing); if (cEventKing == null || cEventKing.isOnline() == 0) { cont = true; } else { cEventKing.setEventKing(false); cEventKing.broadcastUserInfo(); } if (cont) { stm = con.prepareStatement("UPDATE characters SET EventKing=? WHERE char_name=?"); stm.setInt(1, 0); stm.setString(2, currentEventKing); stm.execute(); stm.close(); } } stm = con.prepareStatement("SELECT eventkills,char_name FROM characters WHERE accesslevel=? ORDER BY eventkills DESC LIMIT 1"); stm.setInt(1, 0); rSet = stm.executeQuery(); if (rSet.next()) { newEventKing = rSet.getString("char_name"); topEventKills = rSet.getInt("eventkills"); } rSet.close(); stm.close(); boolean cont = false; L2PcInstance nEventKing = L2World.getInstance().getPlayer(newEventKing); if (nEventKing == null || nEventKing.isOnline() == 0) { cont = true; } else { nEventKing.setEventKing(true); nEventKing.broadcastUserInfo(); } if (cont) { stm = con.prepareStatement("UPDATE characters SET EventKing=? WHERE char_name=?"); stm.setInt(1, 1); stm.setString(2, newEventKing); stm.execute(); stm.close(); } stm = con.prepareStatement("UPDATE characters SET eventkills=?"); stm.setInt(1, 0); stm.execute(); stm.close(); Announcements.getInstance().announceToAll("New event king: "+newEventKing); } catch (Exception e) { } finally { try { con.close(); } catch (Exception e) { } } } } , getValidationTime()); } private static long getValidationTime() { Calendar cld = Calendar.getInstance(); cld.set(Calendar.HOUR_OF_DAY, 19); cld.set(Calendar.MINUTE, 0); cld.set(Calendar.SECOND, 0); long time = cld.getTimeInMillis(); if (System.currentTimeMillis()-time <= 0) { return time; } return 0; } }i used this System.out.println("[DEBUG-EVENT] Time left: "+getValidationTime()); before ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() and it worked ( i've got it in console like [DEBUG-EVENT] Time left: 13859604932849 i don't know why the fuck i got this time :|)
4 answers to this question
Recommended Posts