Ir para conteúdo
  • 0

(resolvido)Monster Loot TP


euller15

Pergunta

Eai galerinha, então eu estruturei esse script, mas não consigo fazer com que o teleport suma dentro do tempo estipulado.

Alguém pode ajudar?

 

Citar

local tpId = 1387
local tps = {
["Demon X"] = {pos = {x=1044, y=1694, z=9}, toPos = {x=1046, y=1695, z=8}, time = 10},
}
 
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, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)
addEvent(removeTp, tp.time*10, tp)
addEvent(removeTp, timeRemove*1000, Tp.Position)
doRemoveTeleport(removeTp, TpPosition)
end
return TRUE

 

 

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

Posts Recomendados

  • 0
3 horas atrás, euller15 disse:

addEvent(removeTp, timeRemove*1000, Tp.Position)

Isso está errado. Remova-o.

3 horas atrás, euller15 disse:

doRemoveTeleport(removeTp, TpPosition)

Denota-se que o teleporte esta sendo removido, logo não existe tp para ser removido.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Diretor
local tpId = 1387local tps = {["Demon X"] = {pos = {x=1044, y=1694, z=9}, toPos = {x=1046, y=1695, z=8}, time = 10},} function removeTp(tp)local t = getTileItemById(tp.pos, tpId)if t thendoRemoveItem(t.uid, 1)doSendMagicEffect(tp.pos, CONST_ME_POFF)endend function onDeath(cid)local tp = tps[getCreatureName(cid)]if tp thendoCreateTeleport(tpId, tp.toPos, tp.pos)doCreatureSay(cid, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)addEvent(removeTp, tp.time*1000, tp)endreturn TRUEend

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Faz as seguintes modificações:

Muda a função: getTileItemById por getThingFromPosition.

Na estrutura 'pos', adiciona a variavel stackpos atribuida de valor 1 (um).

 

Link para o comentário
Compartilhar em outros sites

  • 0

@Poccnn Está correto?

Citar

local tpId = 1387
local tps = {
["Demon X"] = {pos = {x=1044, y=1694, z=9}, toPos = {x=1046, y=1695, z=8}, time = 10},
}
 
function removeTp(tp)
local tp = getThingFromPosition(tp.pos, stackpos 1, uid)
if tp then
doRemoveItem(tp.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, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)
addEvent(removeTp, tp.time*1000, tp)
end
return TRUE
end

 

Link para o comentário
Compartilhar em outros sites

  • 0

Substitui isso:

Citar

getThingFromPosition(tp.pos, stackpos 1, uid)

 

Por este:

Citar

getThingFromPosition(pos)

 

Agora, substitua isso:

Citar

pos = {x=1044, y=1694, z=9}

 

Por isto:

Citar

pos = {x=1044, y=1694, z=9, stackpos = 1}

 

Modifique isso:

Citar

function removeTp(tp)

 

Para isto:

Citar

function removeTp(pos)

 

Mude isso:

Citar

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

 

Pra isto:

Citar

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

 

Link para o comentário
Compartilhar em outros sites

  • 0

Muda isso:

Citar

doSendMagicEffect(tp.pos, CONST_ME_POFF)

 

Por isto:

Citar

doSendMagicEffect(pos, CONST_ME_POFF)

 

Verifica se sai o efeito.

Se não sair, verifica se a função addEvent funciona.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Diretor
1 hora atrás, euller15 disse:

@Yan Liima É 8.54 TFS 0.3.6 O teleport em si funciona, no entanto não é removido o teleport.

 

Ah sim, comigo funcionou normalmente. 8.6 TFS 0.4 e OTX2.

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

  • 0

Reestruturei o código visando uma melhor organização, caso não se importe.

local tps, tpId = {    ["Demon X"] = {pos = {x = 1044, y = 1694, z = 9}, toPos = {x = 1046, y = 1695, z = 8}, time = 10},}, 1387 function onDeath(cid)    local tp = tps[getCreatureName(cid)]        if not tp then return true end        doCreateTeleport(tpId, tp.toPos, tp.pos)    doCreatureSay(cid, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)    addEvent(function()        local teleport = getTileItemById(tp.pos, tpId).uid                if teleport == 0 then return true end        doRemoveItem(teleport)        doSendMagicEffect(tp.pos, CONST_ME_POFF)    end, tp.time * 1000)    return trueend

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...