• SiteAnalyzer, технический и SEO-анализ сайтов

Адми команда для применения указанных умений на таргете

  • Автор темы Автор темы Dision
  • Дата начала Дата начала

Dision

Ефрейтор
Команда форума
VIP
Имеет 3 типа

0 - Цель будет будет юзать умение на рандомного ближайшего персонажа (кроме админа 5 ур.)
1 - Цель будет будет юзать умение на себя
2 - Цель будет будет снимать с себя указанное умение

Код:
/*
 * M.O.G. Devs Team
 * www.mmorpg-onlinegames.ru
 * Teg's {/aiononline, /eveonline}
 */
package admincommands.mog;

import java.util.ArrayList;
import java.util.List;

import com.mog.gameserver.model.actions.PlayerActions;
import com.mog.gameserver.model.gameobjects.Creature;
import com.mog.gameserver.model.gameobjects.Npc;
import com.mog.gameserver.model.gameobjects.VisibleObject;
import com.mog.gameserver.model.gameobjects.player.Player;
import com.mog.gameserver.services.NpcShoutsService;
import com.mog.gameserver.skillengine.SkillEngine;
import com.mog.gameserver.utils.MathUtil;
import com.mog.gameserver.utils.PacketSendUtility;
import com.mog.gameserver.utils.chathandlers.AdminCommand;
import com.mog.gameserver.utils.commons.utils.Rnd;

/**
 * @author Dision
 */
public class MonsterSkill extends AdminCommand {

	public MonsterSkill() {
		super("monsterskill");
	}

	@Override
	public void execute(Player admin, String... params) {
		if (params == null) {
			PacketSendUtility.sendMessage(admin, "\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441: //monsterskill <Id>");
			return;
		}
		VisibleObject target = admin.getTarget();
		Creature creature = (Creature) target;
		int skillId = Integer.parseInt(params[0]);
		int type = Integer.parseInt(params[1]);
		int msgId = Integer.parseInt(params[2]);
		
		try {
			switch (type) {
				case 0:
					Player player = getRandomTargetPc(creature, 1000);
					if (player != null) {
						if (creature instanceof Npc)
							NpcShoutsService.getInstance().sendMsg((Npc) creature, msgId, creature.getObjectId(), 1, 1000);
						SkillEngine.getInstance().getSkill(creature, skillId, 75, player).useNoAnimationSkill();
					}
					break;
				case 1:
					SkillEngine.getInstance().getSkill(creature, skillId, 75, creature).useNoAnimationSkill();
					break;
				case 2:
					if (creature instanceof Npc)
						NpcShoutsService.getInstance().sendMsg((Npc) creature, msgId, creature.getObjectId(), 1, 1000);
					
					creature.getEffectController().removeEffect(skillId);
					break;
			}

			PacketSendUtility.sendMessage(admin, "\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u0430.");
		}
		catch (NumberFormatException e) {
			PacketSendUtility.sendMessage(admin, "\u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.");
			return;
		}
	}
	
	private Player getRandomTargetPc(Creature creature, float distance) {
		List<Player> players = new ArrayList<Player>();
		for (Player player : creature.getKnownList().getKnownPlayers().values()) {
			if (player.getAccessLevel() < 4 && !PlayerActions.isAlreadyDead(player) && MathUtil.isIn3dRange(player, creature, distance))
				players.add(player);
		}
		return !players.isEmpty() ? players.get(Rnd.get(players.size())) : null;
	}

	@Override
	public void onFail(Player player, String message) {
		PacketSendUtility.sendMessage(player, "\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441: //monsterskill <Id>");
	}
}
 
Назад
Сверху