Up by Debes de estar registrado para poder ver el contenido indicado.
Registrate o
Conectate/*
* Copyright (C) 2004-2016 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack 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 3 of the License, or
* (at your option) any later version.
*
* L2J DataPack 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, see <http://www.gnu.org/licenses/>.
*/
package custom.TopPvpPk;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* NPC Top PvP & PK AI.<br>
* @author UnAfraid
* @patched Sacrifice
*/
public final class TopPvpPk extends Quest
{
private static final int NPC_ID = 60;
private static final boolean DEBUG = false;
static final List<TopPVP> TOP_PVP = new ArrayList<>();
static final List<TopPK> TOP_PK = new ArrayList<>();
private static final long REFRESH_TIME = 300000; // 5 minutes
private TopPvpPk()
{
super(-1, TopPvpPk.class.getSimpleName(), "custom");
addFirstTalkId(NPC_ID);
addTalkId(NPC_ID);
addStartNpc(NPC_ID);
ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new reloadTop(), 1000, REFRESH_TIME);
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
return "main.htm";
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
return "main.htm";
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (event.equalsIgnoreCase("toppvp"))
{
sendTopPVP(player);
}
else if (event.equalsIgnoreCase("toppk"))
{
sendTopPK(player);
}
return null;
}
private static final void sendTopPVP(L2PcInstance player)
{
StringBuilder sb = new StringBuilder();
sb.append("<html><title>TOP 25 PVP</title><body><br><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><table width=260>");
for (TopPVP pvp : TOP_PVP)
{
String name = pvp.getName();
int pvp1 = pvp.getpvp();
sb.append("<tr><td><font color=\"00C3FF\">" + name + "</color>:</td><td><font color=\"32C332\">" + pvp1 + "</color></td></tr>");
}
sb.append("</table><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br></center></body></html>");
NpcHtmlMessage msg = new NpcHtmlMessage(NPC_ID);
msg.setHtml(sb.toString());
player.sendPacket(msg);
}
private static final void sendTopPK(L2PcInstance player)
{
StringBuilder sb = new StringBuilder();
sb.append("<html><title>TOP 25 PK</title><body><br><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><table width=260>");
for (TopPK pk : TOP_PK)
{
String name = pk.getName();
int pk1 = pk.getpk();
sb.append("<tr><td><font color=\"00C3FF\">" + name + "</color>:</td><td><font color=\"32C332\">" + pk1 + "</color></td></tr>");
}
sb.append("</table><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br></center></body></html>");
NpcHtmlMessage msg = new NpcHtmlMessage(NPC_ID);
msg.setHtml(sb.toString());
player.sendPacket(msg);
}
public final class reloadTop implements Runnable
{
@Override
public void run()
{
TOP_PK.clear();
TOP_PVP.clear();
try (Connection con = ConnectionFactory.getInstance().getConnection();
PreparedStatement ps = con.prepareStatement("SELECT char_name,pvpkills FROM characters WHERE pvpkills>0 and accesslevel=0 order by pvpkills desc limit 25"))
{
try (ResultSet rset = ps.executeQuery())
{
while (rset.next())
{
TopPVP pvp = new TopPVP();
pvp.setTopPvp(rset.getString("char_name"), rset.getInt("pvpkills"));
TOP_PVP.add(pvp);
}
rset.close();
ps.close();
}
}
catch (Exception e)
{
_log.log(Level.WARNING, "Could not restore top pvp: " + e.getMessage(), e);
}
// finally
// {
// ConnectionFactory.getInstance().close();
// }
try (Connection con = ConnectionFactory.getInstance().getConnection();
PreparedStatement ps = con.prepareStatement("SELECT char_name,pkkills FROM characters WHERE pkkills>0 and accesslevel=0 order by pkkills desc limit 25"))
{
try (ResultSet rset = ps.executeQuery())
{
while (rset.next())
{
TopPK pk = new TopPK();
pk.setTopPk(rset.getString("char_name"), rset.getInt("pkkills"));
TOP_PK.add(pk);
}
rset.close();
ps.close();
}
}
catch (Exception e)
{
_log.log(Level.WARNING, "Could not restore top pk: " + e.getMessage(), e);
}
// finally
// {
// ConnectionFactory.getInstance().close();
// }
if (DEBUG)
{
_log.info("Top Pvp/Pk Loaded: " + TOP_PVP.size() + " Pvps");
_log.info("Top Pvp/Pk Loaded: " + TOP_PK.size() + " Pks");
}
}
}
public final class TopPVP
{
private String getCharName = null;
private int getTopPvp = 0;
public String getName()
{
return getCharName;
}
public int getpvp()
{
return getTopPvp;
}
public void setTopPvp(String char_name, int pvpkills)
{
getCharName = char_name;
getTopPvp = pvpkills;
}
}
public final class TopPK
{
private String getcharName = null;
private int gettopPk = 0;
public String getName()
{
return getcharName;
}
public int getpk()
{
return gettopPk;
}
public void setTopPk(String char_name, int pkkills)
{
getcharName = char_name;
gettopPk = pkkills;
}
}
public static void main(String[] args)
{
new TopPvpPk();
}
}