- 0
This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..
Question
BaM4yYy
Hello guys i'm looking for method that i would be able to use one id with a few ids inside for example if i put in droplist id 9999 it will generate random item and will drop it . like it wont be necessary to add the items one by one in the drop list , i have found a code for gracia final but when i tried to put it on interlude (acis) its not working its . In the database its saying Droplist data for undefined itemId: 9999. Also there is no error on the Gameserver----> its saying . Loaded 63 item lists from the database.
package net.sf.l2j.gameserver.datatables; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.StringTokenizer; import java.util.logging.Level; import java.util.logging.Logger; import javolution.util.FastList; import javolution.util.FastMap; import net.sf.l2j.L2DatabaseFactory; import net.sf.l2j.commons.random.Rnd; public class ItemLists { protected static final Logger _log = Logger.getLogger(ItemLists.class.getName()); private FastMap<String, FastList<Integer>> _itemLists; public static ItemLists getInstance() { return SingletonHolder._instance; } private ItemLists() { loadLists(); } public void loadLists() { _itemLists = new FastMap<String, FastList<Integer>>(); Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("SELECT * FROM itemlists"); ResultSet result = statement.executeQuery(); int count = 0; while (result.next()) { String list = result.getString("list"); if (list == null) continue; if (list.equalsIgnoreCase("")) list = "0"; final StringTokenizer st = new StringTokenizer(list, ";"); FastList<Integer> fastlist = new FastList<Integer>(); while (st.hasMoreTokens()) { int itemId = 0; try { itemId = Integer.parseInt(st.nextToken()); } catch (Exception e) { e.printStackTrace(); itemId = 0; } if (itemId != 0) fastlist.addLast(itemId); } final String name = result.getString("name"); if (!_itemLists.containsKey(name)) { _itemLists.put(name, fastlist); count++; } } result.close(); statement.close(); _log.config("Loaded " + count + " item lists from the database."); statement = con.prepareStatement("SELECT name, include FROM itemlists"); result = statement.executeQuery(); count = 0; while (result.next()) { String include = result.getString("include"); if (include == null || include.equalsIgnoreCase("0")) continue; final StringTokenizer st = new StringTokenizer(include, ";"); FastList<Integer> fastlist = new FastList<Integer>(); while (st.hasMoreTokens()) { int listId = 0; try { listId = Integer.parseInt(st.nextToken()); } catch (Exception e) { e.printStackTrace(); listId = 0; } if (listId != 0) { fastlist.addAll(_itemLists.get(getListName(listId))); } } _itemLists.get(result.getString("name")).addAll(fastlist); count++; } _log.config("....and loaded " + count + " combined item lists from the database."); } catch (Exception e) { _log.log(Level.SEVERE, "Error loading item lists.", e); } finally { try { con.close(); } catch (Exception e) { } } } public String getListName(int listId) { int count = 1; if (listId > 1000000) listId -= 1000000; for (String val : _itemLists.keySet()) { if (count == listId) return val; count++; } _log.warning("getListName() of ItemLists returned null!!!!!!!!!!!"); return null; } public int generateRandomItemFromList(int listId) { final String name = getListName(listId); if (name != null) { FastList<Integer> val = _itemLists.get(name); if (val != null && !val.isEmpty()) return val.get(Rnd.get(val.size())); } _log.warning("generateRandomItemFromList() of ItemLists returned 0!!!!!!!!!!! list id: " + listId); return 0; } public FastList<Integer> getFirstListByItemId(int itemId) { for (FastList<Integer> list : _itemLists.values()) { if (list != null && list.size() > 0) { if (list.contains(itemId)) return list; } } return null; } public void debug() { System.out.println(_itemLists.toString()); } @SuppressWarnings("synthetic-access") private static class SingletonHolder { protected static final ItemLists _instance = new ItemLists(); } }Edited by BaM4yYy2 answers to this question
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