Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### Eclipse Workspace Patch 1.0
- #P aCis_datapack
- Index: data/html/admin/main_menu.htm
- ===================================================================
- --- data/html/admin/main_menu.htm (revision 30)
- +++ data/html/admin/main_menu.htm (working copy)
- @@ -43,7 +43,7 @@
- <td><button value="Set Name" action="bypass -h admin_setname $menu_command" width=55 height=15 back="sek.cbui94" fore="sek.cbui92"></td>
- <td><button value="Set Title" action="bypass -h admin_settitle $menu_command" width=55 height=15 back="sek.cbui94" fore="sek.cbui92"></td>
- <td><button value="Get Buffs" action="bypass -h admin_getbuffs $menu_command" width=55 height=15 back="sek.cbui94" fore="sek.cbui92"></td>
- - <td></td>
- + <td><button value="Search" action="bypass -h admin_search" width=55 height=15 back="sek.cbui94" fore="sek.cbui92"></td>
- </tr>
- </table>
- <br><img src="L2UI_CH3.herotower_deco" width=256 height=32><br>
- Index: data/html/admin/search.htm
- ===================================================================
- --- data/html/admin/search.htm (revision 0)
- +++ data/html/admin/search.htm (working copy)
- @@ -0,0 +1,19 @@
- +<html><title>Search menu</title><body><center>
- +<table width=260>
- + <tr>
- + <td><button value="Main" action="bypass -h admin_admin" width=65 height=19 back="L2UI_ch3.smallbutton2_over" fore="L2UI_ch3.smallbutton2"></td>
- + <td><button value="Game" action="bypass -h admin_admin 2" width=65 height=19 back="L2UI_ch3.smallbutton2_over" fore="L2UI_ch3.smallbutton2"></td>
- + <td><button value="Effects" action="bypass -h admin_admin 3" width=65 height=19 back="L2UI_ch3.smallbutton2_over" fore="L2UI_ch3.smallbutton2"></td>
- + <td><button value="Server" action="bypass -h admin_admin 4" width=65 height=19 back="L2UI_ch3.smallbutton2_over" fore="L2UI_ch3.smallbutton2"></td>
- + </tr>
- +</table>
- +<img src="l2ui.SquareWhite" width=275 height=1><br>
- +<table width=274>
- + <tr>
- + <td width=204><multiedit var="search" width=204 height=15></td>
- + <td width=70><button value="Search" action="bypass -h admin_search 1 $search" width=65 height=19 back="L2UI_ch3.smallbutton2_over" fore="L2UI_ch3.smallbutton2"></td>
- + </tr>
- +</table><br>
- +<img src=L2UI.SquareGray width=280 height=1>
- +%list%
- +</body></html>
- \ No newline at end of file
- Index: data/xml/adminCommands.xml
- ===================================================================
- --- data/xml/adminCommands.xml (revision 30)
- +++ data/xml/adminCommands.xml (working copy)
- @@ -251,6 +251,9 @@
- <aCar name="admin_ride" accessLevel="7"/>
- <aCar name="admin_unride" accessLevel="7"/>
- + <!-- SEARCH -->
- + <aCar name="admin_search" accessLevel="7"/>
- +
- <!-- SHOP -->
- <aCar name="admin_buy" accessLevel="7"/>
- <aCar name="admin_gmshop" accessLevel="7"/>
- #P aCis_gameserver
- Index: java/net/sf/l2j/gameserver/data/xml/ItemData.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/data/xml/ItemData.java (revision 30)
- +++ java/net/sf/l2j/gameserver/data/xml/ItemData.java (working copy)
- @@ -75,6 +75,14 @@
- }
- /**
- + * @return the list of all {@link Item} templates.
- + */
- + public Item[] getTemplates()
- + {
- + return _templates;
- + }
- +
- + /**
- * @param id : the item id to check.
- * @return the {@link Item} corresponding to the item id.
- */
- Index: java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java (revision 30)
- +++ java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java (working copy)
- @@ -38,6 +38,7 @@
- import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminPolymorph;
- import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminRes;
- import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminRideWyvern;
- +import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSearch;
- import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminShop;
- import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSiege;
- import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSkill;
- @@ -87,6 +88,7 @@
- registerHandler(new AdminPolymorph());
- registerHandler(new AdminRes());
- registerHandler(new AdminRideWyvern());
- + registerHandler(new AdminSearch());
- registerHandler(new AdminShop());
- registerHandler(new AdminSiege());
- registerHandler(new AdminSkill());
- Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSearch.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSearch.java (revision 0)
- +++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSearch.java (working copy)
- @@ -0,0 +1,101 @@
- +package net.sf.l2j.gameserver.handler.admincommandhandlers;
- +
- +import java.util.Arrays;
- +import java.util.List;
- +import java.util.StringTokenizer;
- +import java.util.stream.Collectors;
- +
- +import net.sf.l2j.commons.math.MathUtil;
- +
- +import net.sf.l2j.gameserver.data.xml.ItemData;
- +import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.item.kind.Item;
- +import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
- +
- +public class AdminSearch implements IAdminCommandHandler
- +{
- + private static final int PAGE_LIMIT = 6;
- +
- + private static final String[] ADMIN_COMMANDS =
- + {
- + "admin_search"
- + };
- +
- + @Override
- + public boolean useAdminCommand(String command, Player activeChar)
- + {
- + final NpcHtmlMessage html = new NpcHtmlMessage(0);
- + html.setFile("data/html/admin/search.htm");
- +
- + if (command.equals("admin_search"))
- + html.replace("%list%", "<center><br><br><br>Set first an key word</center>");
- + else if (command.startsWith("admin_search"))
- + {
- + StringTokenizer st = new StringTokenizer(command, " ");
- + st.nextToken();
- +
- + int page = Integer.valueOf(st.nextToken());
- + if (st.hasMoreTokens())
- + {
- + StringBuilder sb = new StringBuilder(String.valueOf(page));
- + StringBuilder list = getList(activeChar, page, command.substring(14 + sb.length()));
- + html.replace("%list%", list == null ? "" : list.toString());
- + }
- + else
- + html.replace("%list%", "<center><br><br><br>Set first an key word</center>");
- + }
- + activeChar.sendPacket(html);
- + return true;
- + }
- +
- + public StringBuilder getList(Player activeChar, int page, String search)
- + {
- + List<Item> items = Arrays.asList(ItemData.getInstance().getTemplates()).stream().filter(item -> item != null && matches(item.getName(), search)).collect(Collectors.toList());
- +
- + if (items == null || items.isEmpty())
- + return new StringBuilder("<center><br><br><br>There its no item : <font color=LEVEL>" + search + "</font></center>");
- +
- + final int max = Math.min(100, MathUtil.countPagesNumber(items.size(), PAGE_LIMIT));
- + items = items.subList((page - 1) * PAGE_LIMIT, Math.min(page * PAGE_LIMIT, items.size()));
- +
- + final StringBuilder sb = new StringBuilder();
- +
- + int row = 0;
- + for (Item item : items)
- + {
- + String name = item.getName();
- +
- + if (name.length() >= 43)
- + name = name.substring(0, 40) + "...";
- +
- + sb.append("<table width=280 bgcolor=000000><tr>");
- + sb.append("<td width=44 height=41 align=center><table bgcolor=FFFFFF cellpadding=6 cellspacing=\"-5\"><tr><td><button width=32 height=32 back=" + item.getIcon() + " fore=" + item.getIcon() + "></td></tr></table></td>");
- + sb.append("<td width=236>" + name + "<br1><font color=B09878>Item ID : " + item.getItemId() + " " + (item.isQuestItem() ? "(Quest Item)" : "") + "</font></td>");
- + sb.append("</tr></table><img src=L2UI.SquareGray width=280 height=1>");
- + row++;
- + }
- +
- + for (int i = PAGE_LIMIT; i > row; i--)
- + sb.append("<img height=42>");
- +
- + // Build page footer.
- + sb.append("<img height=2><img src=L2UI.SquareGray width=280 height=1><table width=280 bgcolor=000000><tr>");
- + sb.append("<td align=right width=70>" + (page > 1 ? "<button value=\"< PREV\" action=\"bypass admin_search " + (page - 1) + " " + search + "\" width=65 height=19 back=L2UI_ch3.smallbutton2_over fore=L2UI_ch3.smallbutton2>" : "") + "</td>");
- + sb.append("<td align=center width=100>Page " + page + "</td>");
- + sb.append("<td align=left width=70>" + (page < max ? "<button value=\"NEXT >\" action=\"bypass admin_search " + (page + 1) + " " + search + "\" width=65 height=19 back=L2UI_ch3.smallbutton2_over fore=L2UI_ch3.smallbutton2>" : "") + "</td>");
- + sb.append("</tr></table><img src=L2UI.SquareGray width=280 height=1>");
- + return sb;
- + }
- +
- + public static boolean matches(String name, String search)
- + {
- + return Arrays.stream(search.toLowerCase().split(" ")).allMatch(result -> name.toLowerCase().contains(result));
- + }
- +
- + @Override
- + public String[] getAdminCommandList()
- + {
- + return ADMIN_COMMANDS;
- + }
- +}
- \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement