Ir para conteúdo

[Encerrado] Auto Loot


BrunooMaciell

Posts Recomendados

Estou com um BUG no auto loot system creio eu que quem usa tbem tem este problema !!

 

BUG

 

[16/08/2013 12:01:03] [Error - CreatureScript Interface]
[16/08/2013 12:01:03] In a timer event called from:
[16/08/2013 12:01:03] data/creaturescripts/scripts/aloot.lua:onKill
[16/08/2013 12:01:03] Description:
[16/08/2013 12:01:04] data/lib/050-function.lua:239: attempt to index a boolean value
[16/08/2013 12:01:04] stack traceback:
[16/08/2013 12:01:04] data/lib/050-function.lua:239: in function 'getItemName'
[16/08/2013 12:01:04] data/creaturescripts/scripts/aloot.lua:57: in function

 

 

SCRIPT

 

function onLogin(cid)
registerCreatureEvent(cid, "aloot_kill")
return true
end

local stor = 7575

function autoloot(cid, target, pos)
local function doStack(cid, itemid, new)
local count = getPlayerItemCount(cid, itemid)
if (count > 100) then
count = count - math.floor(count / 100) * 100
end
local newCount = count + new
if (count ~= 0) then
local find = getPlayerItemById(cid, true, itemid, count).uid
if (find > 0) then
doRemoveItem(find)
else
newCount = new
end
end
local item = doCreateItemEx(itemid, newCount)
doPlayerAddItemEx(cid, item, true)
end

local function scanContainer(cid, uid, list)
for k = (getContainerSize(uid) - 1), 0, -1 do
local tmp = getContainerItem(uid, k)
if (isInArray(list, tmp.itemid)) then
if isItemStackable(tmp.itemid) and (getPlayerItemCount(cid, tmp.itemid) > 0) then
doStack(cid, tmp.itemid, tmp.type)
else
local item = doCreateItemEx(tmp.itemid, tmp.type)
doPlayerAddItemEx(cid, item, true)
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Looted ' .. tmp.type .. ' ' .. getItemNameById(tmp.itemid) .. '.')
doRemoveItem(tmp.uid)
elseif isContainer(tmp.uid) then
scanContainer(cid, tmp.uid, list)
end
end
end

local items = {}
for i = getTileInfo(pos).items, 1, -1 do
pos.stackpos = i
table.insert(items, getThingFromPos(pos))
end

if (#items == 0) then
return
end

local corpse = -1
for _, item in ipairs(items) do
local name = getItemName(item.uid):lower()
if name:find(target:lower()) then
corpse = item.uid
break
end
end

if (corpse ~= -1) and isContainer(corpse) then
scanContainer(cid, corpse, tostring(getPlayerStorageValue(cid, stor)):gsub('_', ''):explode(','))
end
end

function onKill(cid, target, lastHit)
if not isPlayer(target) then
local infos = getPlayerStorageValue(cid, stor)
if (infos == -1) then
return true
end
local list = tostring(infos):explode(',')
if (#list == 0) then
return true
end
addEvent(autoloot, 150, cid, getCreatureName(target), getCreaturePosition(target))
end
return true
end

 

 

Curti+

Link para o comentário
Compartilhar em outros sites

oia... aparentemente, a funçao interna da getItemName ta retornando false e dai ta dando esse erro... isso acontece quando...

if(thing.itemid < 100) then
   return false
end

no caso, caso ele ache um item com id < 100 o.O -nem sei se isso eh possivel de fazer sei la-

 

tem 2 jeitos de 'contornar' esse erro...

 

1* trocando essa parte...

local corpse = -1
for _, item in ipairs(items) do
local name = getItemName(item.uid):lower()
if name:find(target:lower()) then
corpse = item.uid
break
end
end

por essa..

local corpse = -1
for _, item in ipairs(items) do
   if item and item.itemid >= 100 then
      local name = getItemName(item.uid):lower()
      if name:find(target:lower()) then
         corpse = item.uid
         break
      end
   end
end

2* indo em lib/050-functions.lua e achando essa funçao..

function getItemDescriptions(uid)

e tirando aquela parte ali de thing.itemid < 100...

 

-mas realmente deve ter um motivo para ter essa proteçao entao recomendo fazer a 1* opçao... ou clr, tentar achar o item com id < 100 e mudar o id dele...-

Editado por Slicer
Link para o comentário
Compartilhar em outros sites

  • 4 years later...
A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta.

+ Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda.
* Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...