diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java index 5aa3c9cb11e6904ff4223256c5c87f160860f1e4..1b9c2094f33a336fbf31173169e6b6cd8fee1537 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java @@ -38,12 +38,14 @@ import com.l2jserver.gameserver.datatables.ClassListData; import com.l2jserver.gameserver.handler.IAdminCommandHandler; import com.l2jserver.gameserver.model.L2Object; import com.l2jserver.gameserver.model.L2World; +import com.l2jserver.gameserver.model.PageResult; import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.model.actor.L2Playable; import com.l2jserver.gameserver.model.actor.L2Summon; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.actor.instance.L2PetInstance; import com.l2jserver.gameserver.model.base.ClassId; +import com.l2jserver.gameserver.model.interfaces.IProcedure; import com.l2jserver.gameserver.network.L2GameClient; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.communityserver.CommunityServerThread; @@ -58,6 +60,7 @@ import com.l2jserver.gameserver.network.serverpackets.SetSummonRemainTime; import com.l2jserver.gameserver.network.serverpackets.SystemMessage; import com.l2jserver.gameserver.network.serverpackets.UserInfo; import com.l2jserver.gameserver.util.Comparators; +import com.l2jserver.gameserver.util.HtmlUtil; import com.l2jserver.gameserver.util.Util; import com.l2jserver.util.StringUtil; @@ -905,50 +908,43 @@ public class AdminEditChar implements IAdminCommandHandler private void listCharacters(L2PcInstance activeChar, int page) { - L2PcInstance[] players = L2World.getInstance().getPlayersSortedBy(Comparators.PLAYER_UPTIME_COMPARATOR); - int maxCharactersPerPage = 20; - int maxPages = players.length / maxCharactersPerPage; + final L2PcInstance[] players = L2World.getInstance().getPlayersSortedBy(Comparators.PLAYER_UPTIME_COMPARATOR); - if (players.length > (maxCharactersPerPage * maxPages)) - { - maxPages++; - } + final NpcHtmlMessage html = new NpcHtmlMessage(); + html.setFile(activeChar.getHtmlPrefix(), "data/html/admin/charlist.htm"); - // Check if number of users changed - if (page > maxPages) + final PageResult result = HtmlUtil.createPage(players, page, 20, new IProcedure<Integer, String>() { - page = maxPages; - } - - int charactersStart = maxCharactersPerPage * page; - int charactersEnd = players.length; - if ((charactersEnd - charactersStart) > maxCharactersPerPage) + @Override + public String execute(Integer i) + { + return "<td align=center><a action=\"bypass -h admin_show_characters " + i + "\">Page " + (i + 1) + "</a></td>"; + } + }, new IProcedure<L2PcInstance, String>() { - charactersEnd = charactersStart + maxCharactersPerPage; - } - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(); - adminReply.setFile(activeChar.getHtmlPrefix(), "data/html/admin/charlist.htm"); - - final StringBuilder replyMSG = new StringBuilder(1000); + @Override + public String execute(L2PcInstance player) + { + StringBuilder sb = new StringBuilder(); + sb.append("<tr>"); + sb.append("<td width=80><a action=\"bypass -h admin_character_info " + player.getName() + "\">" + player.getName() + "</a></td>"); + sb.append("<td width=110>" + ClassListData.getInstance().getClass(player.getClassId()).getClientCode() + "</td><td width=40>" + player.getLevel() + "</td>"); + sb.append("</tr>"); + return sb.toString(); + } + }); - for (int x = 0; x < maxPages; x++) + if (result.getPages() > 0) { - int pagenr = x + 1; - StringUtil.append(replyMSG, "<center><a action=\"bypass -h admin_show_characters ", String.valueOf(x), "\">Page ", String.valueOf(pagenr), "</a></center>"); + html.replace("%pages%", "<table width=280 cellspacing=0><tr>" + result.getPagerTemplate() + "</tr></table>"); } - - adminReply.replace("%pages%", replyMSG.toString()); - replyMSG.setLength(0); - - for (int i = charactersStart; i < charactersEnd; i++) + else { - // Add player info into new Table row - StringUtil.append(replyMSG, "<tr><td width=80><a action=\"bypass -h admin_character_info ", players[i].getName(), "\">", players[i].getName(), "</a></td><td width=110>", ClassListData.getInstance().getClass(players[i].getClassId()).getClientCode(), "</td><td width=40>", String.valueOf(players[i].getLevel()), "</td></tr>"); + html.replace("%pages%", ""); } - adminReply.replace("%players%", replyMSG.toString()); - activeChar.sendPacket(adminReply); + html.replace("%players%", result.getBodyTemplate().toString()); + activeChar.sendPacket(html); } private void showCharacterInfo(L2PcInstance activeChar, L2PcInstance player)