Hello community
I've got a problem with this script. No errors, all commands work fine, but the loot didn't get looted :/
creaturescripts/autoloot.lua
talkactions/scripts/autoloot.lua
Thanks guys!
I've got a problem with this script. No errors, all commands work fine, but the loot didn't get looted :/
creaturescripts/autoloot.lua
Code:
[LIST=1]
[*]local function scanContainer(cid, position)
[*] local player = Player(cid)
[*] if not player then
[*] return
[*] end
[*]
[*] local corpse = Tile(position):getTopDownItem()
[*] if not corpse or not corpse:isContainer() then
[*] return
[*] end
[*]
[*] if corpse:getType():isCorpse() and corpse:getAttribute(ITEM_ATTRIBUTE_CORPSEOWNER) == cid then
[*] for a = corpse:getSize() - 1, 0, -1 do
[*] local containerItem = corpse:getItem(a)
[*] if containerItem then
[*] for b = AUTOLOOT_STORAGE_START, AUTOLOOT_STORAGE_END do
[*] if player:getStorageValue(b) == containerItem:getId() then
[*] containerItem:moveTo(player)
[*] end
[*] end
[*] end
[*] end
[*] end
[*]end
[*]
[*]function onKill(player, target)
[*] if not target:isMonster() then
[*] return true
[*] end
[*]
[*] addEvent(scanContainer, 100, player:getId(), target:getPosition())
[*] return true
[*]end
[/LIST]
talkactions/scripts/autoloot.lua
Code:
[LIST=1]
[*]function onSay(player, words, param)
[*] local split = param:split(",")
[*]
[*] local action = split[1]
[*] if action == "add" then
[*] local item = split[2]:gsub("%s+", "", 1)
[*] local itemType = ItemType(item)
[*] if itemType:getId() == 0 then
[*] itemType = ItemType(tonumber(item))
[*] if itemType:getId() == 0 then
[*] player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "There is no item with that id or name.")
[*] return false
[*] end
[*] end
[*]
[*] local itemName = tonumber(split[2]) and itemType:getName() or item
[*] local size = 0
[*] for i = AUTOLOOT_STORAGE_START, AUTOLOOT_STORAGE_END do
[*] local storage = player:getStorageValue(i)
[*] if size == AUTO_LOOT_MAX_ITEMS then
[*] player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "The list is full, please remove from the list to make some room.")
[*] break
[*] end
[*]
[*] if storage == itemType:getId() then
[*] player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, itemName .." is already in the list.")
[*] break
[*] end
[*]
[*] if storage <= 0 then
[*] player:setStorageValue(i, itemType:getId())
[*] player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, itemName .." has been added to the list.")
[*] break
[*] end
[*]
[*] size = size + 1
[*] end
[*] elseif action == "remove" then
[*] local item = split[2]:gsub("%s+", "", 1)
[*] local itemType = ItemType(item)
[*] if itemType:getId() == 0 then
[*] itemType = ItemType(tonumber(item))
[*] if itemType:getId() == 0 then
[*] player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "There is no item with that id or name.")
[*] return false
[*] end
[*] end
[*]
[*] local itemName = tonumber(split[2]) and itemType:getName() or item
[*] for i = AUTOLOOT_STORAGE_START, AUTOLOOT_STORAGE_END do
[*] if player:getStorageValue(i) == itemType:getId() then
[*] player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, itemName .." has been removed from the list.")
[*] player:setStorageValue(i, 0)
[*] return false
[*] end
[*] end
[*]
[*] player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, itemName .." was not founded in the list.")
[*] elseif action == "show" then
[*] local text = "-- Auto Loot List --\n"
[*] local count = 1
[*] for i = AUTOLOOT_STORAGE_START, AUTOLOOT_STORAGE_END do
[*] local storage = player:getStorageValue(i)
[*] if storage > 0 then
[*] text = string.format("%s%d. %s\n", text, count, ItemType(storage):getName())
[*] count = count + 1
[*] end
[*] end
[*]
[*] if text == "" then
[*] text = "Empty"
[*] end
[*]
[*] player:showTextDialog(1950, text, false)
[*] elseif action == "clear" then
[*] for i = AUTOLOOT_STORAGE_START, AUTOLOOT_STORAGE_END do
[*] player:setStorageValue(i, 0)
[*] end
[*]
[*] player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "The autoloot list has been cleared.")
[*] else
[*] player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Use the commands: !autoloot {add, remove, show, clear}")
[*] end
[*]
[*] return false
[*]end
[/LIST]
Thanks guys!