jareczekjsp
Member
Hello Guys I have problem with autoloot TFS 0.4 Tibia 8.6
When Player Died I see error in console Like that
My Script is:
When Player Died I see error in console Like that
[0:26:55] Sharpshoot has logged out.Broadcasted message: "The player Sharpshoot [Level: 1007] was killed by the player Destruction [Level: 2577]".
[0:26:55] [Error - CreatureScript Interface]
[0:26:55] In a timer event called from:
[0:26:55] data/creaturescripts/scripts/autoloot.luanKill
[0:26:55] Description:
[0:26:55] (internalGetPlayerInfo) Player not found when requesting player info #22
[0:26:55] [Error - CreatureScript Interface]
[0:26:55] In a timer event called from:
[0:26:55] data/creaturescripts/scripts/autoloot.luanKill
[0:26:55] Description:
[0:26:55] data/creaturescripts/scripts/autoloot.lua:124: attempt to perform arithmetic on a boolean value
[0:26:55] stack traceback:
[0:26:55] data/creaturescripts/scripts/autoloot.lua:124: in function <data/creaturescripts/scripts/autoloot.lua:76>
[0:26:57] Sharpshoot has logged in.
My Script is:
LUA:
local tabela = {}
local function getPlayerList(cid)
local tab = {}
if getPlayerStorageValue(cid, 442002) ~= -1 then
table.insert(tab, getPlayerStorageValue(cid, 442002))
end
if getPlayerStorageValue(cid, 442003) ~= -1 then
table.insert(tab, getPlayerStorageValue(cid, 442003))
end
if getPlayerStorageValue(cid, 442004) ~= -1 then
table.insert(tab, getPlayerStorageValue(cid, 442004))
end
if getPlayerStorageValue(cid, 442005) ~= -1 then
table.insert(tab, getPlayerStorageValue(cid, 442005))
end
if #tab > 0 then
return tab
end
return false
end
local function autoLoot(cid, pos, targetName)
local check = false
local str = ""
local position = {}
for i = 1, 255 do
pos.stackpos = i
if getThingFromPos(pos).uid and getThingFromPos(pos).uid > 0 and isContainer(getThingFromPos(pos).uid) then
position = pos
check = true
break
end
end
if check then
local corpse = getContainerItemsInfo(getThingFromPos(position).uid)
if corpse then
for index, info in pairs(corpse) do
if index < countTable(corpse) then
if tonumber(info.uid) and tonumber(info.itemid) then
if isContainer(info.uid) then
local bag = getContainerItemsInfo(info.uid)
for i = 1, countTable(bag) - 1 do
if isInArray(getPlayerList(cid), bag[i].itemid) then
if bag[i].quant > 1 then
doRemoveItem(bag[i].uid, bag[i].quant)
doPlayerAddItem(cid, bag[i].itemid, bag[i].quant)
str = str.." "..bag[i].quant.." "..getItemNameById(bag[i].itemid)..","
else
doRemoveItem(bag[i].uid)
doPlayerAddItem(cid, bag[i].itemid, 1)
str = str.." 1 "..getItemNameById(bag[i].itemid)..","
end
end
end
end
end
end
if isInArray(getPlayerList(cid), info.itemid) then
if info.quant > 1 then
doRemoveItem(info.uid, info.quant)
doPlayerAddItem(cid, info.itemid, info.quant)
str = str.." "..info.quant.." "..getItemNameById(info.itemid)..","
else
doRemoveItem(info.uid)
doPlayerAddItem(cid, info.itemid, 1)
str = str.." 1 "..getItemNameById(info.itemid)..","
end
end
end
end
end
tabela[targetName] = {item = "[Auto Loot System] Collected: "..str, gold = 0}
end
local function autoGold(cid, pos, targetName)
local check = false
local total = 0
local position = {}
for i = 1, 255 do
pos.stackpos = i
if getThingFromPos(pos).uid and getThingFromPos(pos).uid > 0 and isContainer(getThingFromPos(pos).uid) then
position = pos
check = true
break
end
end
if check then
local corpse = getContainerItemsInfo(getThingFromPos(position).uid)
if corpse then
for index, info in pairs(corpse) do
if info.uid and info.itemid then
if index < countTable(corpse) then
if isContainer(info.uid) then
local bag = getContainerItemsInfo(info.uid)
for i = 1, countTable(bag) - 1 do
if isInArray({2148, 2152, 2160}, bag[i].itemid) then
local multiplie = 1
if bag[i].itemid == 2148 then
multiplie = 1
elseif bag[i].itemid == 2152 then
multiplie = 100
elseif bag[i].itemid == 2160 then
multiplie = 10000
end
doRemoveItem(bag[i].uid, bag[i].quant)
doPlayerSetBalance(cid, getPlayerBalance(cid) + (tonumber(bag[i].quant) and tonumber(bag[i].quant) * multiplie or 0))
total = total + (tonumber(bag[i].quant) and tonumber(bag[i].quant) * multiplie or 0)
doPlayerSetStorageValue(cid, 442102, getPlayerStorageZero(cid, 442102) + (tonumber(bag[i].quant) and tonumber(bag[i].quant) * multiplie or 0))
end
end
end
end
if isInArray({2148, 2152, 2160}, info.itemid) then
local multiplie = 1
if info.itemid == 2148 then
multiplie = 1
elseif info.itemid == 2152 then
multiplie = 100
elseif info.itemid == 2160 then
multiplie = 10000
end
doRemoveItem(info.uid, info.quant)
doPlayerSetBalance(cid, getPlayerBalance(cid) + (tonumber(info.quant) and tonumber(info.quant) * tonumber(multiplie) or 0))
doPlayerSetStorageValue(cid, 442102, getPlayerStorageZero(cid, 442102) + (tonumber(info.quant) and tonumber(info.quant) * tonumber(multiplie) or 0))
total = total + (tonumber(info.quant) and tonumber(info.quant) * multiplie or 0)
end
end
end
end
end
if tabela[targetName] and tabela[targetName].gold then
tabela[targetName].gold = total
end
end
local function sendMsg(cid, targetName)
if tabela[targetName] and tabela[targetName].gold then
if tabela[targetName].gold == 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, tabela[targetName].item)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, tabela[targetName].item.." "..tabela[targetName].gold.." gold coins.")
end
tabela[targetName] = nil
end
end
function onKill(cid, target, lastHit)
if isPlayer(cid) and isMonster(target) then
local targetName = getCreatureName(target)
if getPlayerStorageValue(cid, 442100) == 1 and getPlayerList(cid) then
local pos = getCreaturePosition(target)
addEvent(autoLoot, 500, cid, pos, targetName)
end
if getPlayerStorageValue(cid, 442101) == 1 then
local pos = getCreaturePosition(target)
addEvent(autoGold, 500, cid, pos, targetName)
end
if getPlayerStorageValue(cid, 442100) == 1 or getPlayerStorageValue(cid, 442101) == 1 then
addEvent(sendMsg, 540, cid, targetName)
end
end
return true
end