[Encerrado] Como fazer item teleportar pro templo e só pode ser usado a cada X Horas

guirlz
Por guirlz
em Tópicos Sem Resposta

guirlz

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 10/10/06Posts: 78

Dei uma olhada no forum, achei varios itens que teleportam pro templo e tals, mas este item que preciso é um "Anti-bug" pra caso alguem fique bugado em um local e precise voltar ele deve usar este item.

 

Funciona assim o item X pode ser usado a cada X horas e te teleporta pro templo town1

 

 

Outra coisa, qual comando MySQL para injetar esse item na bag de TODOS chars que já estão criados ?

 

Att,

Obrigado.

Skymagnum

Hamburguer
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 02/08/12Posts: 1025Char no Tibia: Maurolkit
function getTime(s)
  local h = math.floor(s / 3600)
  local m = math.floor((s - h * 3600 )/ 60)
  local s = s - h * 3600 - m * 60

  return h .. ":" .. m .. ":" .. s
end

function onUse(cid, item, fromPosition, itemEx, toPosition)

local message = "You can use again at %d hours"
local time = getPlayerStorageValue(cid, 83922) 
local hours = 3

   if time - os.time() > 0 then
       return doPlayerSendCancel(cid, message:format(getTime(time)))
   end

   setPlayerStorageValue(cid, 83922, os.time() + hours * 60 * 1000)
   return doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
end

jeoz.png

guirlz

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 10/10/06Posts: 78

Uma pergunta, caso seja uma talkaction o script também é o mesmo ?

AsMinaPira

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/06/12Posts: 83

/\ não

guirlz

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 10/10/06Posts: 78

Da este erro:

 

 

 

 

[11/06/2013 20:17:54] [Error - Action Interface]

[11/06/2013 20:17:54] data/actions/scripts/townstone.lua:onUse

[11/06/2013 20:17:54] Description:

[11/06/2013 20:17:54] data/actions/scripts/townstone.lua:16: bad argument #1 to 'format' (number expected, got string)

[11/06/2013 20:17:54] stack traceback:

[11/06/2013 20:17:54] [C]: in function 'format'

[11/06/2013 20:17:54] data/actions/scripts/townstone.lua:16: in function <data/actions/scripts/townstone.lua:9>

 

E se puder fazer com talkaction agradeço também !

Skymagnum

Hamburguer
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 02/08/12Posts: 1025Char no Tibia: Maurolkit

function getTime(s)

local h = math.floor(s / 3600)

local m = math.floor((s - h * 3600 )/ 60)

local s = s - h * 3600 - m * 60

 

return h .. ":" .. m .. ":" .. s

end

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

 

local message = "You can use again at %s hours"

local time = getPlayerStorageValue(cid, 83922)

local hours = 3

 

if time - os.time() > 0 then

return doPlayerSendCancel(cid, message:format(getTime(time)))

end

 

setPlayerStorageValue(cid, 83922, os.time() + hours * 60 * 1000)

return doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

end

jeoz.png

guirlz

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 10/10/06Posts: 78

Funcionou, mas ta falando assim:

 

You can use again in 380881:56:48 hours

 

o.O

brun123

vash
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 24/09/06Posts: 512

troca essa linha:

 

setPlayerStorageValue(cid, 83922, os.time() + hours * 60 * 1000)

 

por essa:

 

setPlayerStorageValue(cid, 83922, os.time() + hours * 3600)

 

os.time trabalha em segundos...

5303fg1.png

guirlz

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 10/10/06Posts: 78

Agora fica: 380854:13:50 Hours

Se puder me passar ela para usar com talkaction também.. agradeço muito !

brun123

vash
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 24/09/06Posts: 512

Em talkaction:

 

function onSay(cid)

   local function getTime(s)
       local h = math.floor(s / 3600)
       local m = math.floor((s - h * 3600 )/ 60)
       local s = s - h * 3600 - m * 60
   return h .. ":" .. m .. ":" .. s
   end

   local message = "Você precisa esperar %s para usar novamente."
   local time = getPlayerStorageValue(cid, 83922) - os.time() 
   local hours = 3

   if time > 0 and time < hours * 3600 then
   return doPlayerSendCancel(cid, message:format(getTime(time)))
   end

   setPlayerStorageValue(cid, 83922, os.time() + hours * 3600)
return doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
end

 

pra mudar pra action, basta troca o function onSay por function onUse

5303fg1.png

guirlz

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 10/10/06Posts: 78

Funcionou, valeu cara ! rep+

Stigal

don't ever stop...
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 28/11/10Posts: 3402Gênero: Masculino
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.

VI6MDIG.png

 

"O fracasso é a oportunidade de se começar de novo inteligentemente"

Minhas Redes Sociais: Youtube | Página & Grupo | Steam  | Discord Xtibia | Skype: @mrooger

 

OTpanel