Username: Password:

Author Topic: [Share] Drop unwanted items by name with a queue.  (Read 1809 times)

Offline =Mindee=

  • Commander Shepard
  • BOT Developer Administrator
  • Dragon
  • *****
  • Posts: 2,788
  • Cookies 9020
  • We'll bang, OKAY?
    • View Profile
    • http://mindee-bot.com
[Share] Drop unwanted items by name with a queue.
« on: July 31, 2020, 10:30:49 AM »
1. Script checks if received item name is in drop list and if yes, then it proceeds to drop it.
2. If no room can be found, item is added to queue and is dropped later when possible.
3. This script pauses/resumes item storage to avoid storing unwanted items before dropping them.

Script:
Code: [Select]
# Names of items which must be dropped:
drop_items_list = (
'Hell crystal',
'Chili stick'
)

queue = {}

def checkDropQueue(x, y, z):
if script.IsLocationFree(x, y, z) == 1:
if len(queue) > 0: # there are items in queue, try to drop them
for slot, itemId in queue.items():
if script.GetItemInSlot(slot) == itemId:
if script.DropItem(slot, 0) == 'ok':
script.IgnoreNextItem(itemId)
script.StatusMessage('Dropping item from queue.')
queue.pop(slot) # Deletes item from queue
break
else:
script.StatusMessage('Deleted item from queue.')
queue.pop(slot) # Deletes item from queue, because it's not in slot.

def onScriptActivation():
script.PZChecksForDrop(0) # allow dropping items in protection zone
script.PauseStorage(False)

def onScriptDeactivation():
script.PauseStorage(False)

def onChangeLocation(x, y, z):
checkDropQueue(x, y, z)
initResume()

def initResume():
if len(queue) == 0:
script.RunEvent('resumeStorage', 2000)

def resumeStorage(): # executed by RunEvent
script.PauseStorage(False)

def onReceiveAddItemToBackpack(slot, itemId):
script.PauseStorage(True)

def onDroppedItem(slot):
initResume()

def onReceiveItemDescriptionEx(itemId, name, slot):
if name in drop_items_list:
if script.DropItem(slot, 1) == 'no_room':
script.StatusMessage('No room! Adding to queue.')
queue[slot] = itemId # add item to queue and drop it later
else:
script.StatusMessage('Dropping: ' + name)
script.IgnoreNextItem(itemId)
else: # item not in drop list, trying to resume storage
initResume()




Mindee-BOT creator, founder and developer.

Offline Han16

  • Bug
  • *
  • Posts: 6
  • Cookies 0
  • I love Mindee-BOT!
    • View Profile
    • @pump_upp - best crypto pumps on telegram !
Re: [Share] Drop unwanted items by name with a queue.
« Reply #1 on: July 23, 2021, 03:43:35 AM »
Can I auto loot from hunting area and then drop to the item at Town ?