Ir para conteúdo
  • 0

Erro Com "remove Item"


Lolksky

Pergunta

Boa tarde amiguinhos,

 

Bom, seguinte, eu sempre usei os script a seguir no meu servidor. Portanto, de repente (devo ter feito algo, sei lá) eles começaram a dar erro. (eu mudei para TFS 0.4 - talvez seja isso) o erro que apresentam é:

 

 

(luaDoRemoveItem) Item not found

 

Segue abaixo alguns scripts que estão dando esse erro:

 

1.

local tpId = 1387

local tps = {

["Annihilon"] = {pos = {x=1193, y=629, z=10}, toPos = {x=1325, y=699, z=10}, time = 180},

}

function removeTp(tp)

local t = getTileItemById(tp.pos, tpId)

if t then

doRemoveItem(t.uid, 1)

doSendMagicEffect(tp.pos, CONST_ME_POFF)

end

end

function onDeath(cid)

local tp = tps[getCreatureName(cid)]

if tp then

doCreateTeleport(tpId, tp.toPos, tp.pos)

doCreatureSay(cid, "The Annihilon portal will close at "..tp.time.." seconds.", TALKTYPE_ORANGE_1)

addEvent(removeTp, tp.time*1000, tp)

end

return TRUE

end

 

 

2.

--- By Gaonner ---

 

function onUse (cid, item, fromPos, item2, toPos)

lixos = {"2228","2223","2251","2254","2250"} -- Items que serao varridos

 

 

if (isInArray(lixos, item2.itemid)) then

doRemoveItem(item2,uid, 1)

doPlayerAddItem (cid,2148,10) -- Item que o player ira ganhar

doPlayerSendTextMessage (cid,19,'The garbage was swept away and you got 10 gold coins.') -- Frase de sucesso

else

doPlayerSendCancel (cid,19,'This object can not be removed.') -- Frase de fracasso

return true

end

end

 

 

 

PORTANTO, alguns scripts o treco de "remover item" funciona normalmente... Então, creio eu que seja os scripts que estejam com erros, sei lá.

Ajudem aí xD

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

 

local tp = tps[getCreatureName(cid)]
local tpId = 1387
local tps = {
["Annihilon"] = {pos = {x=1193, y=629, z=10}, toPos = {x=1325, y=699, z=10}, time = 180}
}
function removeTp(tp)
local t = getTileItemById(tp.pos, tpId)
if t then
doRemoveItem(t.uid, 1)
doSendMagicEffect(tp.pos, CONST_ME_POFF)
end
end
function onDeath(cid)
if tp then
doCreateTeleport(tpId, tp.toPos, tp.pos)
doCreatureSay(cid, "The Annihilon portal will close at "..tp.time.." seconds.", TALKTYPE_ORANGE_1)
addEvent(removeTp, tp.time*1000, tp)
end
return TRUE
end

 

 

 

--- By Gaonner ---
function onUse (cid, item, fromPos, item2, toPos)
lixos = {"2228","2223","2251","2254","2250"} -- Items que serao varridos


if (isInArray(lixos, item2.itemid)) then
doRemoveItem(item2.uid, 1)
doPlayerAddItem (cid,2148,10) -- Item que o player ira ganhar
doPlayerSendTextMessage (cid,19,'The garbage was swept away and you got 10 gold coins.') -- Frase de sucesso
else
doPlayerSendCancel (cid,19,'This object can not be removed.') -- Frase de fracasso
return true
end
end

 

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

  • 0

 

 

[/size][/font][/color]--- By Gaonner ---

function onUse (cid, item, fromPos, item2, toPos)
lixos = {"2228","2223","2251","2254","2250"} -- Items que serao varridos


if (isInArray(lixos, item2.itemid)) then
doRemoveItem(item2.uid, 1)
doPlayerAddItem (cid,2148,10) -- Item que o player ira ganhar
doPlayerSendTextMessage (cid,19,'The garbage was swept away and you got 10 gold coins.') -- Frase de sucesso
else
doPlayerSendCancel (cid,19,'This object can not be removed.') -- Frase de fracasso
return true
end
end

 

 

 

IAHsiauhsua a cara, não entendo de script. mas nesse caso, era isso mesmo, valeu aí, REP

 

mas você saberia o erro do outro script? '-'

Link para o comentário
Compartilhar em outros sites

  • 0

@skymagnum

vou testar

_______

 

EDIT

 

deu erro :s

 

 

 

 

(luagetCreatureName) Creature not found

 

attempt to index global 'tps' (a nil value)
Editado por Lolksky
Link para o comentário
Compartilhar em outros sites

  • 0

No primeiro script, substitua essa linha:

 

if t then

 

por essa:

 

if t.uid > 1 then

 

no segundo, substitua essa linha:

 

doRemoveItem(item2,uid, 1)

 

por essa:

 

doRemoveItem(item2.uid, 1)

Link para o comentário
Compartilhar em outros sites

  • 0

No primeiro script, substitua essa linha:

 

if t then

 

por essa:

 

if t.uid > 1 then

 

no segundo, substitua essa linha:

 

doRemoveItem(item2,uid, 1)

 

por essa:

 

doRemoveItem(item2.uid, 1)

 

 

Deu a mesma coisa cara: (luaDoRemoveItem) item not found

 

em qual dos script dá esse erro? no do actions?

 

em ambos, no creature script e no do actions

 

PS: do action já foi resolvido)

Link para o comentário
Compartilhar em outros sites

  • 0

Me mostra como ficou suas scripts depois da sua edição

 

 

--[[ Script By Vodkart and Kydrai ]]--

local tpId = 1387

local tps = {

["Annihilon"] = {pos = {x=1193, y=629, z=10}, toPos = {x=1325, y=699, z=10}, time = 10}

}

function removeTp(tp)

local t = getTileItemById(tp.pos, tpId)

if t.uid > 1 then

doRemoveItem(t.uid, 1)

doSendMagicEffect(tp.pos, CONST_ME_POFF)

end

end

function onDeath(cid)

local tp = tps[getCreatureName(cid)]

if tp then

doCreateTeleport(tpId, tp.toPos, tp.pos)

doCreatureSay(cid, "The Hellgorak portal will close at "..tp.time.." seconds. Enterin portal to complete the Inquisition Quest, and pick your reward.", TALKTYPE_ORANGE_1)

addEvent(removeTp, tp.time*1000, tp)

end

return TRUE

end

Link para o comentário
Compartilhar em outros sites

  • 0

o certo não é 't.uid > 1' e sim 't.uid > 0'

 

> 1 é 2,3,4,5...

 

tenta trocar

 

 

if t.uid > 1 then

 

por

if t > 0 then

 

ou

if t.uid > 0 then

 

Ambos deu o mesmo problema (doLuaRemoveItem) item not found

Link para o comentário
Compartilhar em outros sites

  • 0

Na vodkart, pode colocar até t.uid > 50000 que vai funcionar, pois os unique ids que são atribuídos aos itens podem no mínimo ter valor 70.000.

A menos que você use doItemSetAttribute(itemUid, "uid", xxxx) ou então modifique seu UID pelo map editor, ele não pode ter valor menor que 70k.

Caso editado manualmente, via map editor ou scripts, seu valor pode variar de 1000 até 65536, algum número assim...

Colocar > 0 ou > 1 não faz diferença mesmo.

 

Quando se usa a função getTileItemById e não encontra nenhum item, retorna uma tabela assim:

{uid = 0, itemid = 0}, algo do tipo...

 

Se você tentar remover o item cujo uid é 0 (item não existente), vai aparecer esse erro que o item não foi encontrado.

Por isso checa-se antes de o uid do item é maior que 0 ou 1 (tanto faz), pois dessa forma o item certamente irá existir e não tem como possivelmente dar erros.

 

Lolksky, eu testei a script aqui e não deu nenhum erro... Vou analisar aqui de novo e ver se consigo descobrir algo...

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

  • 0
--[[ Script By Vodkart and Kydrai ]]--
local tps = {
["Annihilon"] = {pos = {x=1193, y=629, z=10}, toPos = {x=1325, y=699, z=10}, time = 10}
}
local function removeTp(tp)
local t = getTileItemById(tp.pos, 1387).uid
return t > 0 and doRemoveItem(t) and doSendMagicEffect(tp.pos, CONST_ME_POFF)
end
function onDeath(cid)
local tp = tps[getCreatureName(cid)]
if tp then
doCreateTeleport(1387, tp.toPos, tp.pos)
doCreatureSay(cid, "The Hellgorak portal will close at "..tp.time.." seconds. Enterin portal to complete the Inquisition Quest, and pick your reward.", TALKTYPE_ORANGE_1)
addEvent(removeTp, tp.time*1000, tp)
end
return true
end

Link para o comentário
Compartilhar em outros sites

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