테스트

aion-server 4.8

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

import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.model.gameobjects.player.PlayerCommonData;
import com.aionemu.gameserver.model.team.legion.Legion;
import com.aionemu.gameserver.model.team.legion.LegionRank;
import com.aionemu.gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE;
import com.aionemu.gameserver.services.LegionService;
import com.aionemu.gameserver.services.player.PlayerService;
import com.aionemu.gameserver.utils.PacketSendUtility;
import com.aionemu.gameserver.utils.Util;
import com.aionemu.gameserver.utils.chathandlers.AdminCommand;
import com.aionemu.gameserver.world.World;

/**
 * @author KID
 */
public class LegionCommand extends AdminCommand {

	public LegionCommand() {
		super("legion", "Modifies a legion.");

		// @formatter:off
		setSyntaxInfo(
			"info <legion name> - List legion members.",
			"add <legion name> <player name> - Adds the player to the legion.",
			"kick <player name> - Kicks the player from their legion.",
			"disband <legion name> - Disbands the legion.",
			"rename <legion name> <new name> - Changes the legion's name.",
			"setbg <legion name> <player name> - Changes a legion's brigade general.",
			"setlevel <legion name> <level> - Changes the legion's level.",
			"setpoints <legion name> <points> - Changes the legion's contributing points."
		);
		// @formatter:on
	}

	@Override
	public void execute(Player player, String... params) {
		if (params.length < 2) {
			sendInfo(player);
			return;
		}

		if (params[0].equalsIgnoreCase("disband")) {
			Legion legion = getLegion(params[1]);
			LegionService.getInstance().disbandLegion(legion);
			sendInfo(player, "Legion " + legion.getName() + " was disbanded.");
		} else if (params[0].equalsIgnoreCase("setlevel") && params.length >= 3) {
			Legion legion = getLegion(params[1]);
			int level = Integer.parseInt(params[2]);
			if (level < 1 || level > 8) {
				sendInfo(player, "Legion level must be between 1 and 8.");
				return;
			} else if (level == legion.getLegionLevel()) {
				sendInfo(player, "Legion " + params[1] + " is already on level " + level);
				return;
			}
			int old = legion.getLegionLevel();
			LegionService.getInstance().changeLevel(legion, level, true);
			sendInfo(player, "Legion " + legion.getName() + " level was changed from " + old + " to " + level);
		} else if (params[0].equalsIgnoreCase("setpoints") && params.length >= 3) {
			Legion legion = getLegion(params[1]);
			long points = Long.parseLong(params[2]);
			if (points < 1) {
				sendInfo(player, "Points must be larger than zero.");
				return;
			}
			long old = legion.getContributionPoints();
			LegionService.getInstance().setContributionPoints(legion, points, true);
			sendInfo(player, "Legion " + legion.getName() + " contribution points were changed from " + old + " to " + points);
		} else if (params[0].equalsIgnoreCase("rename") && params.length >= 3) {
			Legion legion = getLegion(params[1]);
			String old = legion.getName();
			if (LegionService.getInstance().tryRename(legion, params[2], player, null))
				sendInfo(player, "Legion " + old + " was renamed to " + legion.getName() + ".");
		} else if (params[0].equalsIgnoreCase("info")) {
			Legion legion = getLegion(params[1]);
			sendInfo(player, "Legion name: " + legion.getName());
			sendInfo(player, "Level: " + legion.getLegionLevel());
			sendInfo(player, "Contribution points: " + legion.getContributionPoints());
			sendInfo(player, "Members (" + legion.getLegionMembers().size() + "):");
			for (int memberId : legion.getLegionMembers()) {
				PlayerCommonData pcd = PlayerService.getOrLoadPlayerCommonData(memberId);
				String brigadeGeneralInfo = memberId == legion.getBrigadeGeneral() ? ", brigade general" : "";
				sendInfo(player, "\t" + pcd.getName() + " (lv " + pcd.getLevel() + " " + pcd.getPlayerClass() + brigadeGeneralInfo + ")");
			}
		} else if (params[0].equalsIgnoreCase("kick")) {
			Player target = World.getInstance().getPlayer(Util.convertName(params[1]));
			if (target == null)
				PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_NO_SUCH_USER(params[1]));
			else if (target.getLegionMember().getRank() == LegionRank.BRIGADE_GENERAL)
				PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_GUILD_BANISH_CAN_BANISH_MASTER());
			else if (LegionService.getInstance().leaveLegion(target, true)) 
				sendInfo(player, target.getName() + " was kicked from the legion.");
			else
				sendInfo(player, target.getName() + " could not be kicked from the legion.");
		} else if (params[0].equalsIgnoreCase("add") && params.length >= 3) {
			Legion legion = getLegion(params[1]);
			Player target = World.getInstance().getPlayer(Util.convertName(params[2]));
			if (target == null)
				PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_NO_SUCH_USER(params[2]));
			else if (target.isLegionMember())
				PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_GUILD_INVITE_HE_IS_OTHER_GUILD_MEMBER(target.getName()));
			else if (LegionService.getInstance().addToLegion(legion, target, player))
				sendInfo(player, target.getName() + " was added to " + legion.getName());
		} else if (params[0].equalsIgnoreCase("setbg") && params.length >= 3) {
			Legion legion = getLegion(params[1]);
			Player target = World.getInstance().getPlayer(Util.convertName(params[2]));
			if (target == null) {
				PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_NO_SUCH_USER(params[2]));
				return;
			}
			if (!legion.isMember(target.getObjectId())) {
				sendInfo(player, target.getName() + " is not a member of " + legion.getName());
				return;
			}
			LegionService.getInstance().appointBrigadeGeneral(target);
			sendInfo(player, "Legion brigade general changed to " + target.getName() + ".");
		} else {
			sendInfo(player);
		}
	}

	private Legion getLegion(String name) {
		if (name.contains("_"))
			name = name.replaceAll("_", " ");
		Legion legion = LegionService.getInstance().getLegion(name.toLowerCase());
		if (legion == null) {
			throw new IllegalArgumentException("Legion " + name + " does not exist.");
		}
		return legion;
	}
}

📎 첨부파일

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