Podei postear o code Set Hero por tempo ?
editado:
obrigado pelo código: D
[/b]package com.l2jfrozen.gameserver.handler.admincommandhandlers;
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.datatables.GmListTable;
import com.l2jfrozen.gameserver.handler.IAdminCommandHandler;
import com.l2jfrozen.gameserver.model.L2Object;
import com.l2jfrozen.gameserver.model.L2World;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.network.serverpackets.SocialAction;
import com.l2jfrozen.util.CloseUtil;
import com.l2jfrozen.util.database.L2DatabaseFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.logging.Level;
import java.util.logging.Logger;
public class AdminHero
implements IAdminCommandHandler
{
private static String[] ADMIN_COMMANDS = { "admin_sethero", "admin_mass_hero" };
protected static final Logger _log = Logger.getLogger(AdminHero.class.getName());
String INSERT_DATA;
String DEL_DATA;
public AdminHero()
{
this.INSERT_DATA = "REPLACE INTO characters_custom_data (obj_Id, char_name, hero, noble, donator, hero_end_date) VALUES (?,?,?,?,?,?)";
this.DEL_DATA = "UPDATE characters_custom_data SET hero = 0 WHERE obj_Id=?";
}
public boolean useAdminCommand(String command, L2PcInstance activeChar)
{
if (activeChar == null) {
return false;
}
if (command.startsWith("admin_sethero"))
{
String[] cmdParams = command.split(" ");
long heroTime = 0L;
if (cmdParams.length > 1)
{
try
{
heroTime = Integer.parseInt(cmdParams[1]) * 24L * 60L * 60L * 1000L;
}
catch (NumberFormatException nfe)
{
if (Config.ENABLE_ALL_EXCEPTIONS) {
nfe.printStackTrace();
}
}
}
L2Object target = activeChar.getTarget();
if (target instanceof L2PcInstance)
{
L2PcInstance targetPlayer = (L2PcInstance)target;
boolean newHero = !(targetPlayer.isHero());
if (newHero)
{
targetPlayer.setHero(true);
targetPlayer.sendMessage("You are now a hero.");
updateDatabase(targetPlayer, true, heroTime);
sendMessages(true, targetPlayer, activeChar, true, true);
targetPlayer.broadcastPacket(new SocialAction(targetPlayer.getObjectId(), 16));
targetPlayer.broadcastUserInfo();
}
else
{
targetPlayer.setHero(false);
targetPlayer.sendMessage("You are no longer a hero.");
updateDatabase(targetPlayer, false, 0L);
sendMessages(false, targetPlayer, activeChar, true, true);
targetPlayer.broadcastUserInfo();
}
targetPlayer = null;
}
else
{
activeChar.sendMessage("Impossible to set a non Player Target as hero.");
_log.info("GM: " + activeChar.getName() + " is trying to set a non Player Target as hero.");
return false;
}
target = null;
}
else if (command.startsWith("admin_mass_hero"))
{
for (L2PcInstance player : L2World.getInstance().getAllPlayers())
{
if (player == null) {
return false;
}
if ((!(player.isHero())) || (!(player.isInOlympiadMode())))
{
if (player == activeChar) {
continue;
}
player.setHero(true);
player.sendMessage("Admin is rewarding all online players with Hero Status.");
player.broadcastPacket(new SocialAction(player.getObjectId(), 16));
player.broadcastUserInfo();
}
}
}
return true;
}
private void sendMessages(boolean fornewHero, L2PcInstance player, L2PcInstance gm, boolean announce, boolean notifyGmList)
{
if (fornewHero)
{
player.sendMessage(gm.getName() + " has granted Hero Status for you!");
gm.sendMessage("You've granted Hero Status for " + player.getName());
if (!(notifyGmList))
return;
GmListTable.broadcastMessageToGMs("Warn: " + gm.getName() + " has set " + player.getName() + " as Hero !");
}
else
{
player.sendMessage(gm.getName() + " has revoked Hero Status from you!");
gm.sendMessage("You've revoked Hero Status from " + player.getName());
if (!(notifyGmList))
return;
GmListTable.broadcastMessageToGMs("Warn: " + gm.getName() + " has removed Hero Status of player" + player.getName());
}
}
private void updateDatabase(L2PcInstance player, boolean newHero, long heroTime)
{
if (player == null) {
return;
}
Connection con = null;
try
{
con = L2DatabaseFactory.getInstance().getConnection(false);
PreparedStatement stmt = con.prepareStatement((newHero) ? this.INSERT_DATA : this.DEL_DATA);
if (newHero)
{
stmt.setInt(1, player.getObjectId());
stmt.setString(2, player.getName());
stmt.setInt(3, 1);
stmt.setInt(4, 1);
stmt.setInt(5, (player.isDonator()) ? 1 : 0);
stmt.setLong(6, (heroTime == 0L) ? 0L : System.currentTimeMillis() + heroTime);
stmt.execute();
stmt.close();
stmt = null;
}
else
{
stmt.setInt(1, player.getObjectId());
stmt.execute();
stmt.close();
stmt = null;
}
}
catch (Exception e)
{
if (Config.ENABLE_ALL_EXCEPTIONS) {
e.printStackTrace();
}
_log.log(Level.SEVERE, "Error: could not update database: ", e);
}
finally
{
CloseUtil.close(con);
}
}
public String[] getAdminCommandList()
{
return ADMIN_COMMANDS;
}
}