Creamy G Colin Posted October 8, 2019 Posted October 8, 2019 4 minutes ago, StinkyMadness said: If you search : "Ade" you expect "Adena, Ancient Adena" BUT will show you "Draconic Leather Armor" because contain that 3 chars. So that's why i split Strings with "space" so can work like "Aden Anc = Ancient Adena" I think now you got it.. i explain it kinda better. Yeah that was actually the main goal... I saw this post and i tried to create a code that will bring as result the Draconic Bow even if you search for "wob cinocard" the reverse of Draconic Bow... :P On 9/28/2019 at 8:46 PM, wongerlt said: if i try search example "Bow Draconic" or "Drac Bow" then not working. with me code it will work
StinkyMadness Posted October 8, 2019 Author Posted October 8, 2019 1 minute ago, Creamy G Colin said: Yeah that was actually the main goal... I saw this post and i tried to create a code that will bring as result the Draconic Bow even if you search for "wob cinocard" the reverse of Draconic Bow... :P Yes, good thinking but you have to split the "spaces" then split the name with "spaces" then search for contain chars :P and that's too much thinking for one simple "search item id" xD
Creamy G Colin Posted October 8, 2019 Posted October 8, 2019 6 minutes ago, StinkyMadness said: Yes, good thinking but you have to split the "spaces" then split the name with "spaces" then search for contain chars :P and that's too much thinking for one simple "search item id" xD sure, it was a different plan for the thing you shared
StinkyMadness Posted October 8, 2019 Author Posted October 8, 2019 1 minute ago, Creamy G Colin said: sure, it was a different plan for the thing you shared Anyway you help me improve the searching way:) thanks 1
StinkyMadness Posted October 18, 2019 Author Posted October 18, 2019 (edited) On 9/27/2019 at 7:18 PM, wongerlt said: i think multi word search must be like: String[] parts = search.toLowerCase().split(" "); for (Item item : ItemData.getInstance().getTemplates()){ boolean add = false; for (String part : parts) { if (item.getName().toLowerCase().contains(part)){ add = true; }else{ add = false; break; } } } if(add) items.add(item); @wongerlt If you want something like that on your next codes try it like this: public static boolean matches(String name, String search) { return Arrays.stream(search.toLowerCase().split(" ")).allMatch(result -> name.toLowerCase().contains(result)); } Its doing the same job with you code but with 1 line. Edited November 16, 2019 by StinkyMadness
disorder25 Posted April 28, 2020 Posted April 28, 2020 On 9/23/2019 at 6:38 PM, StinkyMadness said: Why I can see the code,? It is hidden. Thanks
Williams Posted June 16, 2022 Posted June 16, 2022 (edited) I'm trying to create search types, but I come across a problem in the substring when I create a switch I don't get all my search data. Old: + @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; + } + New : @Override public void useAdminCommand(String command, Player player) { final StringTokenizer st = new StringTokenizer(command, " "); st.nextToken(); 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")) { if (!st.hasMoreTokens()) { player.sendMessage("Usage: //search <item>"); return; } int page = Integer.valueOf(st.nextToken()); switch (st.nextToken()) { case "item": if (st.hasMoreTokens()) { StringBuilder sb = new StringBuilder(String.valueOf(page)); StringBuilder list = getListItem(player, 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>"); break; } } player.sendPacket(html); } HTML <table width=260> <tr> <td><combobox width=65 height=21 var="param" list=item;skill></td> <td><edit width=130 var="search"></td> <td><button value="Search" action="bypass -h admin_search 1 $param $search" width=65 height=19 back="L2UI_ch3.smallbutton2_over" fore="L2UI_ch3.smallbutton2"></td> </tr> </table><br> Edited June 16, 2022 by Williams
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now