11-10-2010, 05:45 AM
Доброго времени суток!
Предложу такую идею:
Существует такая отличная GM команда //Morph
Хочу дать игрокам возможность ей использования, это будет приятное для игроков нововведение, прекрасно подходящее для проведения всевозможных ивентов, и просто игрокам будет интересно.
Но необходимо установить на команду, проверку ID локации в которой находиться игрок, т.к. разрешать использовать её везде приведёт к хаосу и лагам.
А вот разрешить её использование на нескольких локациях будет самое то!
Может кто нибудь, подумать или дать идеи как дописать необходимый скрипт к команде?
Вот сам код команды:
[SOURCE="java"]package admincommands;
import com.aionemu.gameserver.configs.administration.AdminConfig;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.network.aion.serverpackets.SM_TRANSFORM;
import com.aionemu.gameserver.utils.PacketSendUtility;
import com.aionemu.gameserver.utils.chathandlers.AdminCommand;
/**
*
* @author ATracer
* @modified By aionchs- Wylovech
*/
public class Morph extends AdminCommand
{
public Morph()
{
super("morph");
}
@Override
public void executeCommand(Player admin, String[] params)
{
if(admin.getAccessLevel() < AdminConfig.COMMAND_MORPH)
{
PacketSendUtility.sendMessage(admin, "You do not have enough rights to execute this command.");
return;
}
if (params == null || params.length != 1)
{
PacketSendUtility.sendMessage(admin, "syntax //morph <NPC Id | cancel> ");
return;
}
Player target = admin;
int param = 0;
if (admin.getTarget() instanceof Player)
target = admin;
if (!("cancel").startsWith(params[0].toLowerCase()))
{
try
{
param = Integer.parseInt(params[0]);
}
catch(NumberFormatException e)
{
PacketSendUtility.sendMessage(admin, "Parameter must be an integer, or cancel.");
return;
}
}
if ((param != 0 && param < 200000) || param > 298021)
{
PacketSendUtility.sendMessage(admin, "Something wrong with the NPC Id!");
return;
}
target.setTransformedModelId(param);
PacketSendUtility.broadcastPacketAndReceive(target, new SM_TRANSFORM(target));
if (param == 0)
{
if (target.equals(admin))
{
PacketSendUtility.sendMessage(target, "Morph successfully cancelled.");
}
else
{
PacketSendUtility.sendMessage(target,"Your morph has been cancelled by " + admin.getName() + ".");
PacketSendUtility.sendMessage(admin, "You have cancelled " + target.getName() + "'s morph.");
}
}
else
{
if (target.equals(admin))
{
PacketSendUtility.sendMessage(target, "Successfully morphed to npcId " + param + ".");
}
else
{
PacketSendUtility.sendMessage(target, admin.getName() + " morphs you into an NPC form.");
PacketSendUtility.sendMessage(admin, "You morph " + target.getName() + " to npcId " + param + ".");
}
}
}
}[/SOURCE]
Предложу такую идею:
Существует такая отличная GM команда //Morph
Хочу дать игрокам возможность ей использования, это будет приятное для игроков нововведение, прекрасно подходящее для проведения всевозможных ивентов, и просто игрокам будет интересно.
Но необходимо установить на команду, проверку ID локации в которой находиться игрок, т.к. разрешать использовать её везде приведёт к хаосу и лагам.
А вот разрешить её использование на нескольких локациях будет самое то!
Может кто нибудь, подумать или дать идеи как дописать необходимый скрипт к команде?
Вот сам код команды:
[SOURCE="java"]package admincommands;
import com.aionemu.gameserver.configs.administration.AdminConfig;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.network.aion.serverpackets.SM_TRANSFORM;
import com.aionemu.gameserver.utils.PacketSendUtility;
import com.aionemu.gameserver.utils.chathandlers.AdminCommand;
/**
*
* @author ATracer
* @modified By aionchs- Wylovech
*/
public class Morph extends AdminCommand
{
public Morph()
{
super("morph");
}
@Override
public void executeCommand(Player admin, String[] params)
{
if(admin.getAccessLevel() < AdminConfig.COMMAND_MORPH)
{
PacketSendUtility.sendMessage(admin, "You do not have enough rights to execute this command.");
return;
}
if (params == null || params.length != 1)
{
PacketSendUtility.sendMessage(admin, "syntax //morph <NPC Id | cancel> ");
return;
}
Player target = admin;
int param = 0;
if (admin.getTarget() instanceof Player)
target = admin;
if (!("cancel").startsWith(params[0].toLowerCase()))
{
try
{
param = Integer.parseInt(params[0]);
}
catch(NumberFormatException e)
{
PacketSendUtility.sendMessage(admin, "Parameter must be an integer, or cancel.");
return;
}
}
if ((param != 0 && param < 200000) || param > 298021)
{
PacketSendUtility.sendMessage(admin, "Something wrong with the NPC Id!");
return;
}
target.setTransformedModelId(param);
PacketSendUtility.broadcastPacketAndReceive(target, new SM_TRANSFORM(target));
if (param == 0)
{
if (target.equals(admin))
{
PacketSendUtility.sendMessage(target, "Morph successfully cancelled.");
}
else
{
PacketSendUtility.sendMessage(target,"Your morph has been cancelled by " + admin.getName() + ".");
PacketSendUtility.sendMessage(admin, "You have cancelled " + target.getName() + "'s morph.");
}
}
else
{
if (target.equals(admin))
{
PacketSendUtility.sendMessage(target, "Successfully morphed to npcId " + param + ".");
}
else
{
PacketSendUtility.sendMessage(target, admin.getName() + " morphs you into an NPC form.");
PacketSendUtility.sendMessage(admin, "You morph " + target.getName() + " to npcId " + param + ".");
}
}
}
}[/SOURCE]
Консоль GameServer не советует:"Вы настраивайте сервер уже 1 час. Советуем вам немного отдохнуть".