/** * @param activeChar * @param player */ private void gatherCharacterInfo(L2PcInstance activeChar, L2PcInstance player, String filename) { String ip = "N/A"; String account = "N/A"; try { String clientInfo = player.getClient().toString(); account = clientInfo.substring(clientInfo.indexOf("Account: ") + 9, clientInfo.indexOf(" - IP: ")); ip = clientInfo.substring(clientInfo.indexOf(" - IP: ") + 7, clientInfo.lastIndexOf("]")); } catch (Exception e) { } NpcHtmlMessage adminReply = new NpcHtmlMessage(5); adminReply.setFile("data/html/admin/" + filename); adminReply.replace("%name%", player.getName()); adminReply.replace("%level%", String.valueOf(player.getLevel())); adminReply.replace( "%clan%", String.valueOf(ClanTable.getInstance().getClan(player.getClanId()))); adminReply.replace("%xp%", String.valueOf(player.getExp())); adminReply.replace("%sp%", String.valueOf(player.getSp())); adminReply.replace("%class%", player.getTemplate().className); adminReply.replace("%ordinal%", String.valueOf(player.getClassId().ordinal())); adminReply.replace("%classid%", String.valueOf(player.getClassId())); adminReply.replace("%x%", String.valueOf(player.getX())); adminReply.replace("%y%", String.valueOf(player.getY())); adminReply.replace("%z%", String.valueOf(player.getZ())); adminReply.replace("%currenthp%", String.valueOf((int) player.getCurrentHp())); adminReply.replace("%maxhp%", String.valueOf(player.getMaxHp())); adminReply.replace("%karma%", String.valueOf(player.getKarma())); adminReply.replace("%currentmp%", String.valueOf((int) player.getCurrentMp())); adminReply.replace("%maxmp%", String.valueOf(player.getMaxMp())); adminReply.replace("%pvpflag%", String.valueOf(player.getPvpFlag())); adminReply.replace("%currentcp%", String.valueOf((int) player.getCurrentCp())); adminReply.replace("%maxcp%", String.valueOf(player.getMaxCp())); adminReply.replace("%pvpkills%", String.valueOf(player.getPvpKills())); adminReply.replace("%pkkills%", String.valueOf(player.getPkKills())); adminReply.replace("%currentload%", String.valueOf(player.getCurrentLoad())); adminReply.replace("%maxload%", String.valueOf(player.getMaxLoad())); adminReply.replace( "%percent%", String.valueOf( Util.roundTo( ((float) player.getCurrentLoad() / (float) player.getMaxLoad()) * 100, 2))); adminReply.replace("%patk%", String.valueOf(player.getPAtk(null))); adminReply.replace("%matk%", String.valueOf(player.getMAtk(null, null))); adminReply.replace("%pdef%", String.valueOf(player.getPDef(null))); adminReply.replace("%mdef%", String.valueOf(player.getMDef(null, null))); adminReply.replace("%accuracy%", String.valueOf(player.getAccuracy())); adminReply.replace("%evasion%", String.valueOf(player.getEvasionRate(null))); adminReply.replace("%critical%", String.valueOf(player.getCriticalHit(null, null))); adminReply.replace("%runspeed%", String.valueOf(player.getRunSpeed())); adminReply.replace("%patkspd%", String.valueOf(player.getPAtkSpd())); adminReply.replace("%matkspd%", String.valueOf(player.getMAtkSpd())); adminReply.replace("%access%", String.valueOf(player.getAccessLevel().getLevel())); adminReply.replace("%account%", account); adminReply.replace("%ip%", ip); activeChar.sendPacket(adminReply); }
/** * @param activeChar * @param CharacterToFind */ private void findCharacter(L2PcInstance activeChar, String CharacterToFind) { int CharactersFound = 0; String name; Collection<L2PcInstance> allPlayers = L2World.getInstance().getAllPlayers().values(); L2PcInstance[] players; // synchronized (L2World.getInstance().getAllPlayers()) { players = allPlayers.toArray(new L2PcInstance[allPlayers.size()]); } NpcHtmlMessage adminReply = new NpcHtmlMessage(5); adminReply.setFile("data/html/admin/charfind.htm"); final StringBuilder replyMSG = new StringBuilder(1000); for (L2PcInstance player : players) { // Add player info into new Table row name = player.getName(); if (name.toLowerCase().contains(CharacterToFind.toLowerCase())) { CharactersFound = CharactersFound + 1; StringUtil.append( replyMSG, "<tr><td width=80><a action=\"bypass -h admin_character_list ", name, "\">", name, "</a></td><td width=110>", player.getTemplate().className, "</td><td width=40>", String.valueOf(player.getLevel()), "</td></tr>"); } if (CharactersFound > 20) break; } adminReply.replace("%results%", replyMSG.toString()); final String replyMSG2; if (CharactersFound == 0) { replyMSG2 = MessageTable.Messages[678].getMessage(); } else if (CharactersFound > 20) { adminReply.replace("%number%", MessageTable.Messages[679].getMessage()); replyMSG2 = MessageTable.Messages[680].getMessage(); } else if (CharactersFound == 1) { replyMSG2 = MessageTable.Messages[1196].getMessage(); } else { replyMSG2 = MessageTable.Messages[1197].getMessage(); } adminReply.replace("%number%", String.valueOf(CharactersFound)); adminReply.replace("%end%", replyMSG2); activeChar.sendPacket(adminReply); }
public boolean useAdminCommand(String command, L2PcInstance activeChar) { if (command.equals("admin_current_player")) { showCharacterInfo(activeChar, null); } else if ((command.startsWith("admin_character_list")) || (command.startsWith("admin_character_info"))) { try { String val = command.substring(21); L2PcInstance target = L2World.getInstance().getPlayer(val); if (target != null) showCharacterInfo(activeChar, target); else activeChar.sendPacket(new SystemMessage(SystemMessageId.CHARACTER_DOES_NOT_EXIST)); } catch (StringIndexOutOfBoundsException e) { activeChar.sendMessage(385); } } else if (command.startsWith("admin_show_characters")) { try { String val = command.substring(22); int page = Integer.parseInt(val); listCharacters(activeChar, page); } catch (StringIndexOutOfBoundsException e) { // Case of empty page number activeChar.sendMessage(421); } } else if (command.startsWith("admin_find_character")) { try { String val = command.substring(21); findCharacter(activeChar, val); } catch (StringIndexOutOfBoundsException e) { // Case of empty character name activeChar.sendMessage(392); listCharacters(activeChar, 0); } } else if (command.startsWith("admin_find_ip")) { try { String val = command.substring(14); findCharactersPerIp(activeChar, val); } catch (Exception e) { // Case of empty or malformed IP number activeChar.sendMessage(393); listCharacters(activeChar, 0); } } else if (command.startsWith("admin_find_account")) { try { String val = command.substring(19); findCharactersPerAccount(activeChar, val); } catch (Exception e) { // Case of empty or malformed player name activeChar.sendMessage(391); listCharacters(activeChar, 0); } } else if (command.equals("admin_edit_character")) editCharacter(activeChar); // Karma control commands else if (command.equals("admin_nokarma")) setTargetKarma(activeChar, 0); else if (command.startsWith("admin_setkarma")) { try { String val = command.substring(15); int karma = Integer.parseInt(val); setTargetKarma(activeChar, karma); } catch (Exception e) { if (Config.DEVELOPER) _log.warning("Set karma error: " + e); activeChar.sendMessage(419); } } else if (command.startsWith("admin_setfame")) { try { String val = command.substring(14); int fame = Integer.parseInt(val); L2Object target = activeChar.getTarget(); if (target instanceof L2PcInstance) { L2PcInstance player = (L2PcInstance) target; player.setFame(fame); player.sendPacket(new UserInfo(player)); player.sendPacket(new ExBrExtraUserInfo(player)); L2CoreMessage cm = new L2CoreMessage(MessageTable.Messages[261]); cm.addNumber(fame); cm.sendMessage(player); } else { activeChar.sendPacket(new SystemMessage(SystemMessageId.INCORRECT_TARGET)); } } catch (Exception e) { if (Config.DEVELOPER) _log.warning("Set Fame error: " + e); activeChar.sendMessage(316); } } else if (command.startsWith("admin_save_modifications")) { try { String val = command.substring(24); adminModifyCharacter(activeChar, val); } catch (StringIndexOutOfBoundsException e) { // Case of empty character name activeChar.sendMessage(113); listCharacters(activeChar, 0); } } else if (command.startsWith("admin_rec")) { try { String val = command.substring(10); int recVal = Integer.parseInt(val); L2Object target = activeChar.getTarget(); L2PcInstance player = null; if (target instanceof L2PcInstance) { player = (L2PcInstance) target; } else { return false; } player.setRecomHave(recVal); player.sendMessage(528); player.broadcastUserInfo(); } catch (Exception e) { activeChar.sendMessage(414); } } else if (command.startsWith("admin_setclass")) { try { String val = command.substring(15); int classidval = Integer.parseInt(val); L2Object target = activeChar.getTarget(); L2PcInstance player = null; if (target instanceof L2PcInstance) player = (L2PcInstance) target; else return false; boolean valid = false; for (ClassId classid : ClassId.values()) if (classidval == classid.getId()) valid = true; if (valid && (player.getClassId().getId() != classidval)) { player.setClassId(classidval); if (!player.isSubClassActive()) player.setBaseClass(classidval); String newclass = player.getTemplate().className; player.store(); L2CoreMessage cm = new L2CoreMessage(MessageTable.Messages[14]); cm.addString(newclass); cm.sendMessage(player); player.broadcastUserInfo(); cm = new L2CoreMessage(MessageTable.Messages[670]); cm.addString(player.getName()); cm.addString(newclass); cm.sendMessage(activeChar); } activeChar.sendMessage(418); } catch (StringIndexOutOfBoundsException e) { AdminHelpPage.showHelpPage(activeChar, "charclasses.htm"); } } else if (command.startsWith("admin_settitle")) { try { String val = command.substring(15); L2Object target = activeChar.getTarget(); L2PcInstance player = null; if (target instanceof L2PcInstance) { player = (L2PcInstance) target; } else { return false; } player.setTitle(val); player.sendMessage(644); player.broadcastTitleInfo(); } catch (StringIndexOutOfBoundsException e) { // Case of empty character title activeChar.sendMessage(584); } } else if (command.startsWith("admin_changename")) { try { String val = command.substring(17); L2Object target = activeChar.getTarget(); L2PcInstance player = null; if (target instanceof L2PcInstance) { player = (L2PcInstance) target; } else { return false; } L2World.getInstance().removeFromAllPlayers(player); player.setName(val); player.store(); L2World.getInstance().addToAllPlayers(player); player.sendMessage(623); player.broadcastUserInfo(); if (player.isInParty()) { // Delete party window for other party members player.getParty().broadcastToPartyMembers(player, new PartySmallWindowDeleteAll()); for (L2PcInstance member : player.getParty().getPartyMembers()) { // And re-add if (member != player) member.sendPacket(new PartySmallWindowAll(member, player.getParty())); } } if (player.getClan() != null) { player.getClan().broadcastClanStatus(); } RegionBBSManager.getInstance().changeCommunityBoard(); } catch (StringIndexOutOfBoundsException e) { // Case of empty character name activeChar.sendMessage(420); } } else if (command.startsWith("admin_setsex")) { L2Object target = activeChar.getTarget(); L2PcInstance player = null; if (target instanceof L2PcInstance) { player = (L2PcInstance) target; } else { return false; } player.getAppearance().setSex(player.getAppearance().getSex() ? false : true); player.sendMessage(621); player.broadcastUserInfo(); player.decayMe(); player.spawnMe(player.getX(), player.getY(), player.getZ()); } else if (command.startsWith("admin_setcolor")) { try { String val = command.substring(15); L2Object target = activeChar.getTarget(); L2PcInstance player = null; if (target instanceof L2PcInstance) { player = (L2PcInstance) target; } else { return false; } player.getAppearance().setNameColor(Integer.decode("0x" + val)); player.sendMessage(622); player.broadcastUserInfo(); } catch (Exception e) { // Case of empty color or invalid hex string activeChar.sendMessage(583); } } else if (command.startsWith("admin_fullfood")) { L2Object target = activeChar.getTarget(); if (target instanceof L2PetInstance) { L2PetInstance targetPet = (L2PetInstance) target; targetPet.setCurrentFed(targetPet.getMaxFed()); targetPet .getOwner() .sendPacket(new SetSummonRemainTime(targetPet.getMaxFed(), targetPet.getCurrentFed())); } else activeChar.sendPacket(new SystemMessage(SystemMessageId.INCORRECT_TARGET)); } else if (command.startsWith("admin_unpenalty")) { try { StringTokenizer st = new StringTokenizer(command, " "); if (st.countTokens() != 3) { activeChar.sendMessage(364); return false; } st.nextToken(); boolean changeCreateExpiryTime = st.nextToken().equalsIgnoreCase("create"); String playerName = st.nextToken(); L2PcInstance player = null; player = L2World.getInstance().getPlayer(playerName); if (player == null) { Connection con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement ps = con.prepareStatement( "UPDATE characters SET " + (changeCreateExpiryTime ? "clan_create_expiry_time" : "clan_join_expiry_time") + " WHERE char_name=? LIMIT 1"); ps.setString(1, playerName); ps.execute(); } else { // removing penalty if (changeCreateExpiryTime) player.setClanCreateExpiryTime(0); else player.setClanJoinExpiryTime(0); } L2CoreMessage cm = new L2CoreMessage(MessageTable.Messages[470]); cm.addString(playerName); cm.sendMessage(activeChar); } catch (Exception e) { e.printStackTrace(); } } else if (command.startsWith("admin_find_dualbox")) { int multibox = 2; try { String val = command.substring(19); multibox = Integer.parseInt(val); if (multibox < 1) { activeChar.sendMessage(97); return false; } } catch (Exception e) { } findDualbox(activeChar, multibox); } return true; }
/** * @param activeChar * @param IpAdress * @throws IllegalArgumentException */ private void findCharactersPerIp(L2PcInstance activeChar, String IpAdress) throws IllegalArgumentException { boolean findDisconnected = false; if (IpAdress.equals("disconnected")) { findDisconnected = true; } else { if (!IpAdress.matches( "^(?:(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2(?:[0-4][0-9]|5[0-5]))\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2(?:[0-4][0-9]|5[0-5]))$")) throw new IllegalArgumentException("Malformed IPv4 number"); } Collection<L2PcInstance> allPlayers = L2World.getInstance().getAllPlayers().values(); L2PcInstance[] players; // synchronized (L2World.getInstance().getAllPlayers()) { players = allPlayers.toArray(new L2PcInstance[allPlayers.size()]); } int CharactersFound = 0; L2GameClient client; String name, ip = "0.0.0.0"; final StringBuilder replyMSG = new StringBuilder(1000); NpcHtmlMessage adminReply = new NpcHtmlMessage(5); adminReply.setFile("data/html/admin/ipfind.htm"); for (L2PcInstance player : players) { client = player.getClient(); if (client.isDetached()) { if (!findDisconnected) { continue; } } else { if (findDisconnected) { continue; } else { ip = client.getConnection().getInetAddress().getHostAddress(); if (!ip.equals(IpAdress)) continue; } } name = player.getName(); CharactersFound = CharactersFound + 1; StringUtil.append( replyMSG, "<tr><td width=80><a action=\"bypass -h admin_character_list ", name, "\">", name, "</a></td><td width=110>", player.getTemplate().className, "</td><td width=40>", String.valueOf(player.getLevel()), "</td></tr>"); if (CharactersFound > 20) break; } adminReply.replace("%results%", replyMSG.toString()); final String replyMSG2; if (CharactersFound == 0) { replyMSG2 = MessageTable.Messages[681].getMessage(); } else if (CharactersFound > 20) { adminReply.replace( "%number%", MessageTable.Messages[1213].getMessage() + String.valueOf(CharactersFound)); replyMSG2 = MessageTable.Messages[682].getMessage(); } else if (CharactersFound == 1) { replyMSG2 = MessageTable.Messages[1196].getMessage(); } else { replyMSG2 = MessageTable.Messages[1197].getMessage(); } adminReply.replace("%ip%", ip); adminReply.replace("%number%", String.valueOf(CharactersFound)); adminReply.replace("%end%", replyMSG2); activeChar.sendPacket(adminReply); }