package admincommands; import java.util.Iterator; import java.util.List; import com.aionemu.gameserver.dataholders.DataManager; import com.aionemu.gameserver.model.gameobjects.Item; import com.aionemu.gameserver.model.gameobjects.player.Player; import com.aionemu.gameserver.model.skill.PlayerSkillEntry; import com.aionemu.gameserver.model.team.group.PlayerGroup; import com.aionemu.gameserver.model.team.legion.Legion; import com.aionemu.gameserver.model.team.legion.LegionMemberEx; import com.aionemu.gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE; import com.aionemu.gameserver.services.LegionService; import com.aionemu.gameserver.utils.ChatUtil; 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 lyahim, antness */ public class PlayerInfo extends AdminCommand { public PlayerInfo() { super("playerinfo", "Shows information about a player."); setSyntaxInfo(" "); } @Override public void execute(Player admin, String... params) { if (params.length == 0) { sendInfo(admin); return; } String playerName = Util.convertName(params[0]); Player target = World.getInstance().getPlayer(playerName); if (target == null) { PacketSendUtility.sendPacket(admin, SM_SYSTEM_MESSAGE.STR_NO_SUCH_USER(playerName)); return; } sendInfo(admin, "\n[Info about " + target.getName() + "]\n-common: lv" + target.getLevel() + "(" + target.getCommonData().getExpShown() + " xp), " + target.getRace() + ", " + target.getPlayerClass() + "\n-ip: " + target.getClientConnection().getIP() + "\n" + "-account name: " + target.getClientConnection().getAccount().getName() + "\n"); if (params.length < 2) return; if (params[1].equals("item")) { StringBuilder strbld = new StringBuilder("-items in inventory:"); appendItems(strbld, target.getInventory().getItemsWithKinah()); strbld.append("-equipped items:"); appendItems(strbld, target.getEquipment().getEquippedItems()); strbld.append("-items in warehouse:"); appendItems(strbld, target.getWarehouse().getItemsWithKinah()); sendInfo(admin, strbld.toString()); } else if (params[1].equals("group")) { final StringBuilder strbld = new StringBuilder("-group info:\n\tLeader: "); PlayerGroup group = target.getPlayerGroup(); if (group == null) sendInfo(admin, "-group info: no group"); else { strbld.append(group.getLeader().getName() + "\n\tMembers:\n"); group.forEach(player -> strbld.append("\t\t" + player.getName() + "\n")); sendInfo(admin, strbld.toString()); } } else if (params[1].equals("skills")) { StringBuilder strbld = new StringBuilder("-list of skills:\n"); for (PlayerSkillEntry skill : target.getSkillList().getAllSkills()) strbld.append("\tlevel " + skill.getSkillLevel() + " of " + DataManager.SKILL_DATA.getSkillTemplate(skill.getSkillId()).getName() + "\n"); sendInfo(admin, strbld.toString()); } else if (params[1].equals("loc")) { String chatLink = ChatUtil.position(target.getName(), target.getPosition()); sendInfo(admin, "- " + chatLink + "'s location:\n\t" + target.getPosition().toCoordString()); } else if (params[1].equals("legion")) { Legion legion = target.getLegion(); if (legion == null) sendInfo(admin, "-legion info: no legion"); else { StringBuilder strbld = new StringBuilder(); List legionmemblist = LegionService.getInstance().loadLegionMemberExList(legion, null); Iterator it = legionmemblist.iterator(); strbld.append("-legion info:\n\tname: " + legion.getName() + ", level: " + legion.getLegionLevel() + "\n\tmembers(online):\n"); while (it.hasNext()) { LegionMemberEx act = it.next(); strbld.append("\t\t" + act.getName() + "(" + (act.isOnline() ? "online" : "offline") + ")" + act.getRank().toString() + "\n"); } sendInfo(admin, strbld.toString()); } } else if (params[1].equals("ap")) { sendInfo(admin, "AP info about " + target.getName()); sendInfo(admin, "Total AP = " + target.getAbyssRank().getAp()); sendInfo(admin, "Total Kills = " + target.getAbyssRank().getAllKill()); sendInfo(admin, "Today Kills = " + target.getAbyssRank().getDailyKill()); sendInfo(admin, "Today AP = " + target.getAbyssRank().getDailyAP()); } else if (params[1].equals("chars")) { sendInfo(admin, "Others characters of " + target.getName() + " (" + target.getClientConnection().getAccount().size() + ") :"); target.getClientConnection().getAccount().forEach(d -> sendInfo(admin, d.getPlayerCommonData().getName())); } else if (params[1].equals("knownlist")) { sendInfo(admin, "KnownList of " + target.getName()); target.getKnownList().forEachObject(obj -> sendInfo(admin, obj.getName() + " objectId:" + obj.getObjectId())); } else if (params[1].equals("visuallist")) { sendInfo(admin, "VisualList of " + target.getName()); target.getKnownList().forEachVisibleObject(obj -> sendInfo(admin, obj.getName() + " objectId:" + obj.getObjectId())); } else { sendInfo(admin); } } private void appendItems(StringBuilder strbld, List items) { if (items.isEmpty()) strbld.append("\nnone"); else items.forEach(item -> strbld.append("\n\t" + item.getItemCount() + "x " + ChatUtil.item(item.getItemId()))); } }