테스트

aion-server 4.8

Gitteol
최고관리자 · 1 · 💬 0 클론/새로받기
 4.8 61f661d · 1 commits 새로받기(Pull)
game-server/data/handlers/admincommands/RemoveCd.java
package admincommands;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import com.aionemu.gameserver.model.gameobjects.VisibleObject;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.model.items.ItemCooldown;
import com.aionemu.gameserver.network.aion.serverpackets.SM_ITEM_COOLDOWN;
import com.aionemu.gameserver.network.aion.serverpackets.SM_SKILL_COOLDOWN;
import com.aionemu.gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE;
import com.aionemu.gameserver.utils.PacketSendUtility;
import com.aionemu.gameserver.utils.chathandlers.AdminCommand;
import com.aionemu.gameserver.world.World;

import consolecommands.Clearusercoolt;

/**
 * @author kecimis
 */
public class RemoveCd extends AdminCommand {

	public RemoveCd() {
		super("removecd", "Clears cooldowns for skills, items and instances.");

		// @formatter:off
		setSyntaxInfo(
			" - Removes all item and skill cds of your target.",
			"<instance> <all|worldId> - Removes specified instance cd(s) of your target."
		);
		// @formatter:on
	}

	@Override
	public void execute(Player admin, String... params) {
		VisibleObject target = admin.getTarget();
		if (target == null)
			target = admin;

		if (target instanceof Player player) {
			if (params.length == 0) {
				if (player.getSkillCoolDowns() != null) {
					long currentTime = System.currentTimeMillis();
					for (Entry<Integer, Long> en : player.getSkillCoolDowns().entrySet())
						player.setSkillCoolDown(en.getKey(), currentTime);
					PacketSendUtility.sendPacket(player, new SM_SKILL_COOLDOWN(player.getSkillCoolDowns()));
				}

				Map<Integer, ItemCooldown> dummyCds = new HashMap<>(); // 4.8 client ignores reuseTime <= currentTime, but sending old cds + useDelay 0 works
				for (Entry<Integer, ItemCooldown> en : player.getItemCoolDowns().entrySet()) {
					dummyCds.put(en.getKey(), new ItemCooldown(en.getValue().getReuseTime(), 0));
					player.removeItemCoolDown(en.getKey());
				}
				PacketSendUtility.sendPacket(player, new SM_ITEM_COOLDOWN(dummyCds));

				player.getHouseObjectCooldowns().clear();

				if (player.equals(admin)) {
					sendInfo(admin, "Your item and skill cooldowns were removed.");
				} else {
					sendInfo(admin, "You have removed item and skill cooldowns of " + player.getName() + '.');
					sendInfo(player, admin.getName(true) + " removed your item and skill cooldowns.");
				}
			} else if (params[0].equalsIgnoreCase("instance") && params.length >= 2) {
				if (params[1].equalsIgnoreCase("all")) {
					Clearusercoolt.clearAllInstanceCooldowns(admin, player);
				} else {
					int worldId = Integer.parseInt(params[1]);
					if (player.getPortalCooldownList().isPortalUseDisabled(worldId)) {
						player.getPortalCooldownList().removePortalCooldown(worldId);
						player.getPortalCooldownList().sendEntryInfo(worldId);

						String worldName = World.getInstance().getWorldMap(worldId).getName().replace('_', ' ');
						if (player.equals(admin)) {
							sendInfo(admin, "Your instance cooldown for " + worldName + " was removed.");
						} else {
							sendInfo(admin, "You have removed the instance cooldown for " + worldName + " of " + player.getName() + '.');
							sendInfo(player, admin.getName(true) + " removed your instance cooldown for " + worldName);
						}
					} else
						sendInfo(admin, (player.equals(admin) ? "You have" : player.getName() + " has") + " no cooldown on given instance.");

				}
			} else {
				sendInfo(admin);
			}
		} else
			PacketSendUtility.sendPacket(admin, SM_SYSTEM_MESSAGE.STR_INVALID_TARGET());
	}
}

📎 첨부파일

댓글 작성 권한이 없습니다.
🏆 포인트 랭킹 TOP 10
순위 닉네임 포인트
1 no_profile 타키야겐지쪽지보내기 자기소개 아이디로 검색 전체게시물 100,792
2 no_profile 동가리쪽지보내기 자기소개 아이디로 검색 전체게시물 58,079
3 no_profile 라프텔쪽지보내기 자기소개 아이디로 검색 전체게시물 51,771
4 no_profile 불멸의행복쪽지보내기 자기소개 아이디로 검색 전체게시물 36,923
5 서번트쪽지보내기 자기소개 아이디로 검색 전체게시물 35,011
6 no_profile 보거스쪽지보내기 자기소개 아이디로 검색 전체게시물 29,969
7 no_profile 닥터스쪽지보내기 자기소개 아이디로 검색 전체게시물 29,470
8 no_profile 검은고양이쪽지보내기 자기소개 아이디로 검색 전체게시물 29,077
9 no_profile Revolution쪽지보내기 자기소개 아이디로 검색 전체게시물 28,199
10 no_profile 호롤롤로쪽지보내기 자기소개 아이디로 검색 전체게시물 17,020
알림 0