
נכתב במקור על ידי
Symphony
הפונקצייה הזאת היא לא של proitem
תראה
זה ה PROITEM
קוד PHP:
else if (sub[0].equalsIgnoreCase("proitem")) { int itemId = Integer.parseInt(sub[1]); short quantity = 1; int petid = -1; if (sub.length == 3) { int itemid; short multiply; try { itemid = Integer.parseInt(sub[1]); multiply = Short.parseShort(sub[2]); } catch (NumberFormatException asd) { return false; } MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); IItem item = ii.getEquipById(itemid); MapleInventoryType type = ii.getInventoryType(itemid); if (type.equals(MapleInventoryType.EQUIP)) { MapleInventoryManipulator.addFromDrop(c, ii.hardcoreItem((Equip) item, multiply), true);
} else { chr.dropMessage("Make sure it's an equippable item."); } } else { chr.dropMessage("Invalid syntax."); } }
המסומן באדום זה אם זה אמת יש ID נכון
אז הוא עושה את זה
והפונקציה היא
קוד PHP:
public static boolean addFromDrop(MapleClient c, IItem item, boolean show) { MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); MapleInventoryType type = ii.getInventoryType(item.getItemId()); if (ii.isPickupRestricted(item.getItemId()) && c.getPlayer().getItemQuantity(item.getItemId(), true) > 0) { c.announce(MaplePacketCreator.getInventoryFull()); c.announce(MaplePacketCreator.showItemUnavailable()); return false; } short quantity = item.getQuantity(); if (!type.equals(MapleInventoryType.EQUIP)) { short slotMax = ii.getSlotMax(c, item.getItemId()); List<IItem> existing = c.getPlayer().getInventory(type).listById(item.getItemId()); if (!ItemConstants.isRechargable(item.getItemId())) { if (existing.size() > 0) { // first update all existing slots to slotMax Iterator<IItem> i = existing.iterator(); while (quantity > 0) { if (i.hasNext()) { Item eItem = (Item) i.next(); short oldQ = eItem.getQuantity(); if (oldQ < slotMax && item.getOwner().equals(eItem.getOwner())) { short newQ = (short) Math.min(oldQ + quantity, slotMax); quantity -= (newQ - oldQ); eItem.setQuantity(newQ); c.announce(MaplePacketCreator.updateInventorySlot(type, eItem, true)); } } else { break; } } } while (quantity > 0 || ItemConstants.isRechargable(item.getItemId())) { short newQ = (short) Math.min(quantity, slotMax); quantity -= newQ; Item nItem = new Item(item.getItemId(), (byte) 0, newQ); nItem.setOwner(item.getOwner()); byte newSlot = c.getPlayer().getInventory(type).addItem(nItem); if (newSlot == -1) { c.announce(MaplePacketCreator.getInventoryFull()); c.announce(MaplePacketCreator.getShowInventoryFull()); item.setQuantity((short) (quantity + newQ)); return false; } c.announce(MaplePacketCreator.addInventorySlot(type, nItem, true)); if ((ItemConstants.isRechargable(item.getItemId())) && quantity == 0) { break; } } } else { Item nItem = new Item(item.getItemId(), (byte) 0, quantity); byte newSlot = c.getPlayer().getInventory(type).addItem(nItem); if (newSlot == -1) { c.announce(MaplePacketCreator.getInventoryFull()); c.announce(MaplePacketCreator.getShowInventoryFull()); return false; } c.announce(MaplePacketCreator.addInventorySlot(type, nItem)); c.announce(MaplePacketCreator.enableActions()); } } else if (quantity == 1) { byte newSlot = c.getPlayer().getInventory(type).addItem(item); if (newSlot == -1) { c.announce(MaplePacketCreator.getInventoryFull()); c.announce(MaplePacketCreator.getShowInventoryFull()); return false; } c.announce(MaplePacketCreator.addInventorySlot(type, item, true)); } else { return false; } if (show) { c.announce(MaplePacketCreator.getShowItemGain(item.getItemId(), item.getQuantity())); } return true; }