SHOW:
|
|
- or go back to the newest paste.
| 1 | ### Eclipse Workspace Patch 1.0 | |
| 2 | #P aCis_datapack | |
| 3 | Index: data/html/admin/main_menu.htm | |
| 4 | =================================================================== | |
| 5 | --- data/html/admin/main_menu.htm (revision 30) | |
| 6 | +++ data/html/admin/main_menu.htm (working copy) | |
| 7 | @@ -43,7 +43,7 @@ | |
| 8 | <td><button value="Set Name" action="bypass -h admin_setname $menu_command" width=55 height=15 back="sek.cbui94" fore="sek.cbui92"></td> | |
| 9 | <td><button value="Set Title" action="bypass -h admin_settitle $menu_command" width=55 height=15 back="sek.cbui94" fore="sek.cbui92"></td> | |
| 10 | <td><button value="Get Buffs" action="bypass -h admin_getbuffs $menu_command" width=55 height=15 back="sek.cbui94" fore="sek.cbui92"></td> | |
| 11 | - <td></td> | |
| 12 | + <td><button value="Search" action="bypass -h admin_search" width=55 height=15 back="sek.cbui94" fore="sek.cbui92"></td> | |
| 13 | </tr> | |
| 14 | </table> | |
| 15 | <br><img src="L2UI_CH3.herotower_deco" width=256 height=32><br> | |
| 16 | Index: data/html/admin/search.htm | |
| 17 | =================================================================== | |
| 18 | --- data/html/admin/search.htm (revision 0) | |
| 19 | +++ data/html/admin/search.htm (working copy) | |
| 20 | @@ -0,0 +1,19 @@ | |
| 21 | +<html><title>Search menu</title><body><center> | |
| 22 | +<table width=260> | |
| 23 | + <tr> | |
| 24 | + <td><button value="Main" action="bypass -h admin_admin" width=65 height=19 back="L2UI_ch3.smallbutton2_over" fore="L2UI_ch3.smallbutton2"></td> | |
| 25 | + <td><button value="Game" action="bypass -h admin_admin 2" width=65 height=19 back="L2UI_ch3.smallbutton2_over" fore="L2UI_ch3.smallbutton2"></td> | |
| 26 | + <td><button value="Effects" action="bypass -h admin_admin 3" width=65 height=19 back="L2UI_ch3.smallbutton2_over" fore="L2UI_ch3.smallbutton2"></td> | |
| 27 | + <td><button value="Server" action="bypass -h admin_admin 4" width=65 height=19 back="L2UI_ch3.smallbutton2_over" fore="L2UI_ch3.smallbutton2"></td> | |
| 28 | + </tr> | |
| 29 | +</table> | |
| 30 | +<img src="l2ui.SquareWhite" width=275 height=1><br> | |
| 31 | +<table width=274> | |
| 32 | + <tr> | |
| 33 | + <td width=204><multiedit var="search" width=204 height=15></td> | |
| 34 | + <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> | |
| 35 | + </tr> | |
| 36 | +</table><br> | |
| 37 | +<img src=L2UI.SquareGray width=280 height=1> | |
| 38 | +%list% | |
| 39 | +</body></html> | |
| 40 | \ No newline at end of file | |
| 41 | Index: data/xml/adminCommands.xml | |
| 42 | =================================================================== | |
| 43 | --- data/xml/adminCommands.xml (revision 30) | |
| 44 | +++ data/xml/adminCommands.xml (working copy) | |
| 45 | @@ -251,6 +251,9 @@ | |
| 46 | <aCar name="admin_ride" accessLevel="7"/> | |
| 47 | <aCar name="admin_unride" accessLevel="7"/> | |
| 48 | ||
| 49 | + <!-- SEARCH --> | |
| 50 | + <aCar name="admin_search" accessLevel="7"/> | |
| 51 | + | |
| 52 | <!-- SHOP --> | |
| 53 | <aCar name="admin_buy" accessLevel="7"/> | |
| 54 | <aCar name="admin_gmshop" accessLevel="7"/> | |
| 55 | #P aCis_gameserver | |
| 56 | Index: java/net/sf/l2j/gameserver/data/xml/ItemData.java | |
| 57 | =================================================================== | |
| 58 | --- java/net/sf/l2j/gameserver/data/xml/ItemData.java (revision 30) | |
| 59 | +++ java/net/sf/l2j/gameserver/data/xml/ItemData.java (working copy) | |
| 60 | @@ -75,6 +75,14 @@ | |
| 61 | } | |
| 62 | ||
| 63 | /** | |
| 64 | + * @return the list of all {@link Item} templates.
| |
| 65 | + */ | |
| 66 | + public Item[] getTemplates() | |
| 67 | + {
| |
| 68 | + return _templates; | |
| 69 | + } | |
| 70 | + | |
| 71 | + /** | |
| 72 | * @param id : the item id to check. | |
| 73 | * @return the {@link Item} corresponding to the item id.
| |
| 74 | */ | |
| 75 | Index: java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java | |
| 76 | =================================================================== | |
| 77 | --- java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java (revision 30) | |
| 78 | +++ java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java (working copy) | |
| 79 | @@ -38,6 +38,7 @@ | |
| 80 | import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminPolymorph; | |
| 81 | import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminRes; | |
| 82 | import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminRideWyvern; | |
| 83 | +import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSearch; | |
| 84 | import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminShop; | |
| 85 | import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSiege; | |
| 86 | import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSkill; | |
| 87 | @@ -87,6 +88,7 @@ | |
| 88 | registerHandler(new AdminPolymorph()); | |
| 89 | registerHandler(new AdminRes()); | |
| 90 | registerHandler(new AdminRideWyvern()); | |
| 91 | + registerHandler(new AdminSearch()); | |
| 92 | registerHandler(new AdminShop()); | |
| 93 | registerHandler(new AdminSiege()); | |
| 94 | registerHandler(new AdminSkill()); | |
| 95 | Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSearch.java | |
| 96 | =================================================================== | |
| 97 | --- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSearch.java (revision 0) | |
| 98 | +++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSearch.java (working copy) | |
| 99 | @@ -0,0 +1,101 @@ | |
| 100 | +package net.sf.l2j.gameserver.handler.admincommandhandlers; | |
| 101 | + | |
| 102 | +import java.util.Arrays; | |
| 103 | +import java.util.List; | |
| 104 | +import java.util.StringTokenizer; | |
| 105 | +import java.util.stream.Collectors; | |
| 106 | + | |
| 107 | +import net.sf.l2j.commons.math.MathUtil; | |
| 108 | + | |
| 109 | +import net.sf.l2j.gameserver.data.xml.ItemData; | |
| 110 | +import net.sf.l2j.gameserver.handler.IAdminCommandHandler; | |
| 111 | +import net.sf.l2j.gameserver.model.actor.Player; | |
| 112 | +import net.sf.l2j.gameserver.model.item.kind.Item; | |
| 113 | +import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; | |
| 114 | + | |
| 115 | +public class AdminSearch implements IAdminCommandHandler | |
| 116 | +{
| |
| 117 | + private static final int PAGE_LIMIT = 6; | |
| 118 | + | |
| 119 | + private static final String[] ADMIN_COMMANDS = | |
| 120 | + {
| |
| 121 | + "admin_search" | |
| 122 | + }; | |
| 123 | + | |
| 124 | + @Override | |
| 125 | + public boolean useAdminCommand(String command, Player activeChar) | |
| 126 | + {
| |
| 127 | + final NpcHtmlMessage html = new NpcHtmlMessage(0); | |
| 128 | + html.setFile("data/html/admin/search.htm");
| |
| 129 | + | |
| 130 | + if (command.equals("admin_search"))
| |
| 131 | + html.replace("%list%", "<center><br><br><br>Set first an key word</center>");
| |
| 132 | + else if (command.startsWith("admin_search"))
| |
| 133 | + {
| |
| 134 | + StringTokenizer st = new StringTokenizer(command, " "); | |
| 135 | + st.nextToken(); | |
| 136 | + | |
| 137 | + int page = Integer.valueOf(st.nextToken()); | |
| 138 | + if (st.hasMoreTokens()) | |
| 139 | + {
| |
| 140 | + StringBuilder sb = new StringBuilder(String.valueOf(page)); | |
| 141 | + StringBuilder list = getList(activeChar, page, command.substring(14 + sb.length())); | |
| 142 | + html.replace("%list%", list == null ? "" : list.toString());
| |
| 143 | + } | |
| 144 | + else | |
| 145 | + html.replace("%list%", "<center><br><br><br>Set first an key word</center>");
| |
| 146 | + } | |
| 147 | + activeChar.sendPacket(html); | |
| 148 | + return true; | |
| 149 | + } | |
| 150 | + | |
| 151 | + public StringBuilder getList(Player activeChar, int page, String search) | |
| 152 | + {
| |
| 153 | + List<Item> items = Arrays.asList(ItemData.getInstance().getTemplates()).stream().filter(item -> item != null && matches(item.getName(), search)).collect(Collectors.toList()); | |
| 154 | + | |
| 155 | + if (items == null || items.isEmpty()) | |
| 156 | + return new StringBuilder("<center><br><br><br>There its no item : <font color=LEVEL>" + search + "</font></center>");
| |
| 157 | + | |
| 158 | + final int max = Math.min(100, MathUtil.countPagesNumber(items.size(), PAGE_LIMIT)); | |
| 159 | + items = items.subList((page - 1) * PAGE_LIMIT, Math.min(page * PAGE_LIMIT, items.size())); | |
| 160 | + | |
| 161 | + final StringBuilder sb = new StringBuilder(); | |
| 162 | + | |
| 163 | + int row = 0; | |
| 164 | + for (Item item : items) | |
| 165 | + {
| |
| 166 | + String name = item.getName(); | |
| 167 | + | |
| 168 | + if (name.length() >= 43) | |
| 169 | + name = name.substring(0, 40) + "..."; | |
| 170 | + | |
| 171 | + sb.append("<table width=280 bgcolor=000000><tr>");
| |
| 172 | + 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>");
| |
| 173 | + sb.append("<td width=236>" + name + "<br1><font color=B09878>Item ID : " + item.getItemId() + " " + (item.isQuestItem() ? "(Quest Item)" : "") + "</font></td>");
| |
| 174 | + sb.append("</tr></table><img src=L2UI.SquareGray width=280 height=1>");
| |
| 175 | + row++; | |
| 176 | + } | |
| 177 | + | |
| 178 | + for (int i = PAGE_LIMIT; i > row; i--) | |
| 179 | + sb.append("<img height=42>");
| |
| 180 | + | |
| 181 | + // Build page footer. | |
| 182 | + sb.append("<img height=2><img src=L2UI.SquareGray width=280 height=1><table width=280 bgcolor=000000><tr>");
| |
| 183 | + 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>");
| |
| 184 | + sb.append("<td align=center width=100>Page " + page + "</td>");
| |
| 185 | + 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>");
| |
| 186 | + sb.append("</tr></table><img src=L2UI.SquareGray width=280 height=1>");
| |
| 187 | + return sb; | |
| 188 | + } | |
| 189 | + | |
| 190 | + public static boolean matches(String name, String search) | |
| 191 | + {
| |
| 192 | + return Arrays.stream(search.toLowerCase().split(" ")).allMatch(result -> name.toLowerCase().contains(result));
| |
| 193 | + } | |
| 194 | + | |
| 195 | + @Override | |
| 196 | + public String[] getAdminCommandList() | |
| 197 | + {
| |
| 198 | + return ADMIN_COMMANDS; | |
| 199 | + } | |
| 200 | +} | |
| 201 | \ No newline at end of file |