테스트

aion-server 4.8

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

import com.aionemu.gameserver.dataholders.DataManager;
import com.aionemu.gameserver.model.gameobjects.Gatherable;
import com.aionemu.gameserver.model.gameobjects.Npc;
import com.aionemu.gameserver.model.gameobjects.VisibleObject;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.model.templates.QuestTemplate;
import com.aionemu.gameserver.model.templates.item.ItemTemplate;
import com.aionemu.gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE;
import com.aionemu.gameserver.utils.ChatUtil;
import com.aionemu.gameserver.utils.PacketSendUtility;
import com.aionemu.gameserver.utils.chathandlers.PlayerCommand;

/**
 * @author Neon
 */
public class Id extends PlayerCommand {

	private static final char ITEM_ICON = '\uE054'; // bag

	public Id() {
		super("id", "Shows item/quest/npc IDs.");

		// @formatter:off
		setSyntaxInfo(
			" - Shows the ID of the selected object.",
			"<item|quest> - Shows the ID of the specified item or quest."
		);
		// @formatter:on
	}

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

		if (params.length == 0) {
			if (target == null) {
				sendInfo(player);
				return;
			}

			if (!player.isStaff() && !(target instanceof Npc) && !(target instanceof Gatherable)) { // regular players only see IDs of npcs and gatherables
				PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_INVALID_TARGET());
				return;
			}

			String msg = target.getClass().getSimpleName() + ": " + ChatUtil.path(target, true);
			if (player.isStaff()) {
				int staticId = target.getSpawn() == null ? 0 : target.getSpawn().getStaticId();
				msg += " (Object ID: " + target.getObjectId() + (staticId == 0 ? "" : ", Static ID: " + staticId) + ")";
			}
			sendInfo(player, msg);
			return;
		} else {
			int id = ChatUtil.getItemId(params[0]);
			if (id != 0) {
				ItemTemplate template = DataManager.ITEM_DATA.getItemTemplate(id);
				if (template == null) {
					sendInfo(player, "Invalid item.");
					return;
				}
				sendInfo(player, "Item:" + ITEM_ICON + template.getL10n() + "\nID: " + id);
				return;
			}

			id = ChatUtil.getQuestId(params[0]);
			if (id != 0) {
				QuestTemplate template = DataManager.QUEST_DATA.getQuestById(id);
				if (template == null) {
					sendInfo(player, "Invalid quest.");
					return;
				}
				sendInfo(player, "Quest:" + getQuestIcon(template) + template.getL10n() + "\nID: " + id);
				return;
			}
		}

		sendInfo(player);
	}

	private char getQuestIcon(QuestTemplate template) {
		switch (template.getCategory()) {
			case EVENT:
				return '\uE039'; // pink
			case MISSION:
				return '\uE037'; // golden
			case IMPORTANT:
			case SIGNIFICANT:
				return '\uE03F'; // dark blue
		}
		return '\uE034'; // light blue
	}
}

📎 첨부파일

댓글 작성 권한이 없습니다.
🏆 포인트 랭킹 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