↑ ↓

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

Тема в разделе "Скрипты, сайты, шаблоны и веб-обвязки для Aion", создана пользователем Dision, 21 июн 2018.

  1. TopicStarter Overlay
    Offline

    Dision Ефрейтор Команда форума VIP

    274
    62
    61
    Кредиты:
    $15.415,48
    Репутация:
    7
    Имеет 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>");
    	}
    }