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
- Fórum
- OTServ
- Suporte
- Tópicos Sem Resposta
- [Encerrado] Como fazer item teleportar pro templo e só pode ser usado a cada X Horas
[Encerrado] Como fazer item teleportar pro templo e só pode ser usado a cada X Horas
Por guirlz, 31 de mai. de 2013 em Tópicos Sem Resposta
info
Grupo: Marquês
Registrado: 02/08/12
Posts: 1k
Reputação: +234
Char no Tibia: Maurolkit

Uma pergunta, caso seja uma talkaction o script também é o mesmo ?
info
Grupo: Campones
Registrado: 13/06/12
Posts: 83
Reputação: +13

/\ não
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 !
info
Grupo: Marquês
Registrado: 02/08/12
Posts: 1k
Reputação: +234
Char 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
Funcionou, mas ta falando assim:
You can use again in 380881:56:48 hours
![]()
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...
Agora fica: 380854:13:50 Hours
Se puder me passar ela para usar com talkaction também.. agradeço muito !
Editado Junho 12 por guirlz
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
Funcionou, valeu cara ! rep+
info
Grupo: Herói
Registrado: 28/11/10
Posts: 3.4k
Reputação: +585
Gênero: Masculino

+ 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.





info
Grupo: Campones
Registrado: 10/10/06
Posts: 78
Reputação: 0
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.