}
@Override
protected void runImpl()
{
L2PcInstance activeChar = getClient().getActiveChar();
if(activeChar == null)
return;
if (!getClient().getFloodProtectors().getServerBypass().tryPerformAction(_command))
return;
try
{
if(_command.startsWith("admin_"))
{
// DaDummy: this way we log _every_ admincommand with all related info
String command;
if(_command.indexOf(" ") != -1)
{
command = _command.substring(0, _command.indexOf(" "));
}
else
{
command = _command;
}
IAdminCommandHandler ach = AdminCommandHandler.getInstance().getAdminCommandHandler(command);
if(ach == null)
{
if(activeChar.isGM())
{
activeChar.sendMessage("The command " + command + " does not exists!");
}
_log.warning("No handler registered for admin command '" + command + "'");
return;
}
if(!AdminCommandAccessRights.getInstance().hasAccess(command, activeChar.getAccessLevel()))
{
activeChar.sendMessage("You don't have the access right to use this command!");
if(Config.DEBUG)
{
_log.warning("Character " + activeChar.getName() + " tried to use admin command " + command + ", but doesn't have access to it!");
}
return;
}
if(Config.GMAUDIT)
{
GMAudit.auditGMAction(activeChar.getName()+" ["+activeChar.getObjectId()+"]", command, (activeChar.getTarget() != null?activeChar.getTarget().getName():"no-target"),_command.replace(command, ""));
}
ach.useAdminCommand(_command, activeChar);
}
else if(_command.equals("come_here") && activeChar.isGM())
{
comeHere(activeChar);
}
else if(_command.startsWith("player_help "))
{
playerHelp(activeChar, _command.substring(12));
}
else if(_command.startsWith("npc_"))
{
if(!activeChar.validateBypass(_command))
return;
int endOfId = _command.indexOf('_', 5);
String id;
if(endOfId > 0)
{
id = _command.substring(4, endOfId);
}
else
{
id = _command.substring(4);
}
try
{
L2Object object = L2World.getInstance().findObject(Integer.parseInt(id));
if(_command.substring(endOfId + 1).startsWith("event_participate"))
{
L2Event.inscribePlayer(activeChar);
}
else if(_command.substring(endOfId + 1).startsWith("tvt_player_join "))
{
String teamName = _command.substring(endOfId + 1).substring(16);
if(TvT.is_joining())
{
TvT.addPlayer(activeChar, teamName);
}
else
{
activeChar.sendMessage("The event is already started. You can not join now!");
}
}
else if(_command.substring(endOfId + 1).startsWith("tvt_player_leave"))
{
if(TvT.is_joining())
{
TvT.removePlayer(activeChar);
}
else
{
activeChar.sendMessage("The event is already started. You can not leave now!");
}
}
else if(_command.substring(endOfId+1).startsWith("dmevent_player_join"))
{
if(DM.is_joining())
DM.addPlayer(activeChar);
else
activeChar.sendMessage("The event is already started. You can't join now!");
}
else if(_command.substring(endOfId+1).startsWith("dmevent_player_leave"))
{
if(DM.is_joining())
DM.removePlayer(activeChar);
else
activeChar.sendMessage("The event is already started. You can't leave now!");
}
else if (_command.substring(endOfId+1).startsWith("raid_player_join"))
{
if (Raid._joining)
Raid.addPlayer(activeChar);
else
activeChar.sendMessage("The event has already started. You cant join now!");
}
else if (_command.substring(endOfId+1).startsWith("raid_player_leave"))
{
if (Raid._joining)
Raid.removePlayer(activeChar);
else
activeChar.sendMessage("The event has already started. You cant leave now!");
}
else if(_command.substring(endOfId+1).startsWith("ctf_player_join "))
{
String teamName = _command.substring(endOfId+1).substring(16);
if(CTF.is_joining())
CTF.addPlayer(activeChar, teamName);
else
activeChar.sendMessage("The event is already started. You can't join now!");
}
else if(_command.substring(endOfId+1).startsWith("ctf_player_leave"))
{
if(CTF.is_joining())
CTF.removePlayer(activeChar);
else
activeChar.sendMessage("The event is already started. You can't leave now!");
}
if(_command.substring(endOfId+1).startsWith("vip_joinVIPTeam"))
{
VIP.addPlayerVIP(activeChar);
}
if(_command.substring(endOfId+1).startsWith("vip_joinNotVIPTeam"))
{
VIP.addPlayerNotVIP(activeChar);
}
if(_command.substring(endOfId+1).startsWith("vip_finishVIP"))
{
VIP.vipWin(activeChar);
}
if(_command.substring(endOfId+1).startsWith("event_participate"))
{
L2Event.inscribePlayer(activeChar);
}
else if((Config.ALLOW_CLASS_MASTERS && Config.ALLOW_REMOTE_CLASS_MASTERS && object instanceof L2ClassMasterInstance)
|| (object instanceof L2NpcInstance && endOfId > 0 && activeChar.isInsideRadius(object, L2NpcInstance.INTERACTION_DISTANCE, false, false)))
{
((L2NpcInstance) object).onBypassFeedback(activeChar, _command.substring(endOfId + 1));
}
activeChar.sendPacket(ActionFailed.STATIC_PACKET);
}
catch(NumberFormatException nfe)
{
if(Config.ENABLE_ALL_EXCEPTIONS)
nfe.printStackTrace();
}
}
// Draw a Symbol
else if(_command.equals("Draw"))
{
L2Object object = activeChar.getTarget();
if(object instanceof L2NpcInstance)
{
((L2SymbolMakerInstance) object).onBypassFeedback(activeChar, _command);
}
}
else if(_command.equals("RemoveList"))
{
L2Object object = activeChar.getTarget();
if(object instanceof L2NpcInstance)
{
((L2SymbolMakerInstance) object).onBypassFeedback(activeChar, _command);
}
}
else if(_command.equals("Remove "))
{
L2Object object = activeChar.getTarget();
if(object instanceof L2NpcInstance)
{
((L2SymbolMakerInstance) object).onBypassFeedback(activeChar, _command);
}
}
// Navigate throught Manor windows
else if(_command.startsWith("manor_menu_select?"))
{
L2Object object = activeChar.getTarget();
if(object instanceof L2NpcInstance)
{
((L2NpcInstance) object).onBypassFeedback(activeChar, _command);
}
}
else if(_command.startsWith("bbs_"))
{
CommunityBoard.getInstance().handleCommands(getClient(), _command);
}
else if(_command.startsWith("_bbs"))
{
CommunityBoard.getInstance().handleCommands(getClient(), _command);
}
else if(_command.startsWith("RPS.")) // Rank PvP System by Masterio
{
RankPvpSystemBypass.execute(activeChar, _command);
}
else if (_command.startsWith("voiced_"))
{
String command = _command.split(" ")[0];
IVoicedCommandHandler ach = VoicedCommandHandler.getInstance().getVoicedCommandHandler(_command.substring(7));
if (ach == null)
{
activeChar.sendMessage("The command " + command.substring(7) + " does not exist!");
_log.info("No handler registered for command '" + _command + "'");
return;
}
}
else if (_command.startsWith("voice "))
{
//only voice commands allowed in bypass
if (_command.length() > 7
&& _command.charAt(6) == '.')
{
final String vc, vparams;
final int endOfCommand = _command.indexOf(" ", 7);
if (endOfCommand > 0)
{
vc = _command.substring(7, endOfCommand).trim();
vparams = _command.substring(endOfCommand).trim();
}
else
{
vc = _command.substring(7).trim();
vparams = null;
}
if (vc.length() > 0)
{
final IVoicedCommandHandler vch = VoicedCommandHandler.getInstance().getVoicedCommandHandler(vc);
if (vch != null)
vch.useVoicedCommand(vc, activeChar, vparams);
}
}
}
else if(_command.startsWith("Quest "))
{
if(!activeChar.validateBypass(_command))
return;
L2PcInstance player = getClient().getActiveChar();
if(player == null)
return;
String p = _command.substring(6).trim();
int idx = p.indexOf(' ');
if(idx < 0)
{
player.processQuestEvent(p, "");
}
else
{
player.processQuestEvent(p.substring(0, idx), p.substring(idx).trim());
}
}
// Jstar's Custom Bypass Caller!
else if(_command.startsWith("custom_"))
{
L2PcInstance player = getClient().getActiveChar();
CustomBypassHandler.getInstance().handleBypass(player, _command);
}
else if (_command.startsWith("OlympiadArenaChange"))
{
Olympiad.bypassChangeArena(_command, activeChar);