MO
pedido

Tem Como Arrumar Esse Erro?

Por MonsterOt, 16 de set. de 2012 em Scripts

7
968
MonsterOtM
16 de setembro de 2012 às 23:13
local events ={}

local tempo = 30 -- tempo em segundos

local pos = {x = 1, y = 1, z = 1}

function onStepIn(cid, item, pos)

doPlayerSendTextMessage(cid, 27, "Contagem iniciada, daqui " .. tempo .. " segundos você será teleportado")

events[getPlayerGUID(cid)] = addEvent(doTeleportThing, pos, tempo * 1000, cid)

return true

end

 

function onStepOut(cid, item, pos)

doPlayerSendTextMessage(cid, 28, "Contagem zerada.")

stopEvent(events[getPlayerGUID(cid)])

events[getPlayerGUID(cid)] = nil

return true

end

 

da esse erro:

 

695nezwhrkmc6qq8zd03.png

Editado Setembro 16 por MonsterOt

brun123B
16 de setembro de 2012 às 23:18

mudar isso:

 

addEvent(doTeleportThing, pos, tempo * 1000, cid)

 

para isso:

 

addEvent(doTeleportThing, tempo * 1000, cid, pos)

 

lembrando que vai dar erro se o player morrer/fizer logout, pois vai tentar teleportar uma creature que não existe mais

Editado Setembro 16 por brun123

SkymagnumS
16 de setembro de 2012 às 23:23

Vlw ae brun123 eu tinha feito o script no Tk soque pensava que o tempo sempre ficava meio que por ultimo. rep+

MonsterOtM
16 de setembro de 2012 às 23:35

Amanha mais rep brun123

 

lembrando que vai dar erro se o player morrer/fizer logout, pois vai tentar teleportar uma creature que não existe mais

 

tem como tirar esse bug?

 

 

Edit:

 

o player depois de 30 segundos nao é teleportado para a posição ;p

Editado Setembro 17 por MonsterOt

brun123B
17 de setembro de 2012 às 01:06

é porque tem um conflito no nome de variáveis, no function onStepIn(cid, item, pos) está declarando "pos" por cima da pos que você configurou lá em cima, é só mudar o "pos" do function onStepIn para qualquer outra coisa, aqui 100%:

 

local events ={}
local tempo = 30 -- tempo em segundos
local pos = {x = 1, y = 1, z = 1}
local function doTeleportThingNoError(guid, pos)
   local cid = getPlayerByGUID(guid)
   if not isCreature(cid) then return end
   doTeleportThing(cid, pos)
end

function onStepIn(cid, item, oldPos)
doPlayerSendTextMessage(cid, 27, "Contagem iniciada, daqui " .. tempo .. " segundos você será teleportado")
events[getPlayerGUID(cid)] = addEvent(doTeleportThingNoError, tempo * 1000, getPlayerGUID(cid), pos)
return true
end

function onStepOut(cid, item, pos)
doPlayerSendTextMessage(cid, 28, "Contagem zerada.")
stopEvent(events[getPlayerGUID(cid)])
events[getPlayerGUID(cid)] = nil
return true
end

MonsterOtM
17 de setembro de 2012 às 10:22

queria que quando o player pise no tile, comece a contar e depois de 30 segundos ele seja teleportada, OU se o player sair do tile antes de ser teleportado o tempo pare de contar, e se ele entrar de volta no tile comece a contar do 0.

 

Tem como fazer isso?

 

 

 

grato

Editado Setembro 17 por MonsterOt

18 de setembro de 2012 às 13:15

Já lhe foi respondido em: http://www.xtibia.com/forum/topic/194415-tem-como-adicionar-isso-nesse-script/page__view__findpost__p__1341704

 

Tópico fechado e movido.