Eu não entendi o que tu queres.
Esse script está com varios erros.
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Eu não entendi o que tu queres.
Esse script está com varios erros.
info
Grupo: Visconde
Registrado: 26/08/10
Posts: 431
Reputação: +60
Gênero: Masculino
Char no Tibia: Gabriel Rookgaardian

Em 20/10/2016 at 11:44, Poccnn disse:Eu não entendi o que tu queres.
Esse script está com varios erros.
O script real é esse:
local storage = 80777function onUse(cid, item, frompos, item2, topos)local value = getCreatureMaxHealth(cid) / 10if getPlayerLevel(cid) >= 8 thensetCreatureMaxHealth(cid, math.floor(getCreatureMaxHealth(cid)+ value))doCreatureAddHealth(cid, getCreatureMaxHealth(cid))doPlayerSendTextMessage(cid, 22, "You add 10% hp to you health!")doCreatureSetStorage(cid, storage, math.max(0, getCreatureStorage(cid, storage)) + 1)doSendMagicEffect(getCreaturePosition(cid), 30)doRemoveItem(item.uid, 1)enddoPlayerSendTextMessage(cid, 27, "You have received "..it[2].." "..getItemNameById(it[1])..". You can take your reward in "..time.." minutes.")setPlayerStorageValue(cid, storage, os.time() + time * 60)elsereturn doPlayerSendCancel(cid, "You have already received your reward for today.")endreturn trueend
E está com esse erro: input:14: 'end' expected (to close 'function' at line 2) near 'else'
O que mandei antes foi uma tentativa minha fracassada de corrigir o script e acrescentar um limite de vocações.
Gostaria que alguém experiente o fizesse por mim, corrigir esse erro e por o limite de vocação, e verificar se também está com o limite de uso de apenas umas vez por dia.
Editado Novembro 27 por gabriel28
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Citarlocal storage = 80777
local dia = tonumber (os.date ("&d"))
function onUse(cid, item, frompos, item2, topos)
local value = math.floor (getCreatureMaxHealth(cid) / 10)
if getPlayerLevel(cid) >= 8 and getCreatureStorage(cid, storage) ~= dia then -- verifica se o dia marcado na chave é diferente do dia de "hoje".
setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)+ value)
doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) doPlayerSendTextMessage(cid, 22, "You add 10% hp to you health!")
doCreatureSetStorage(cid, storage, dia) -- marca o dia na chave.
doSendMagicEffect(getCreaturePosition(cid), 30) doRemoveItem(item.uid, 1)
-- falta saber se existe a tabela "it" vista pelo código.
-- falta verificar se a variável "time" existe e seja visível pelo código.
-- não sei pra quê serve a marcação de store nesse bloco, portanto não o removi.
doPlayerSendTextMessage(cid, 27, "You have received "..it[2].." "..getItemNameById(it[1])..". You can take your reward in "..time.." minutes.")
setPlayerStorageValue(cid, storage, os.time() + time * 60)
else
return doPlayerSendCancel(cid, "You have already received your reward for today.")
end
return true
end
Não consigo editar o meu post.
Muda no código essa parte:
Citarlocal dia = tonumber (os.date ("&d"))
Por este:
Citarlocal dia = tonumber (os.date ("%d"))
info
Grupo: Visconde
Registrado: 26/08/10
Posts: 431
Reputação: +60
Gênero: Masculino
Char no Tibia: Gabriel Rookgaardian

9 horas atrás, Poccnn disse:
Não consigo editar o meu post.
Muda no código essa parte:
Por este:
Ainda não testei, mas tem como por só pra knight usar?
info
Grupo: Conde
Registrado: 18/01/12
Posts: 988
Reputação: +327
Gênero: Masculino
Char no Tibia: Xerife Woody

explica o que você quer que o script faça, desde o inicio..
ao da user no item, fazer isso e isso, mas só se isso...
info
Grupo: Visconde
Registrado: 26/08/10
Posts: 431
Reputação: +60
Gênero: Masculino
Char no Tibia: Gabriel Rookgaardian

1 minuto atrás, DuuhCarvalho disse:explica o que você quer que o script faça, desde o inicio..
ao da user no item, fazer isso e isso, mas só se isso...
Aumente o life de quem o usar em 10%, de acordo com o life total que o player tiver. Que só possa ser usado uma vez ao dia e que apenas knights possam usar.
info
Grupo: Conde
Registrado: 18/01/12
Posts: 988
Reputação: +327
Gênero: Masculino
Char no Tibia: Xerife Woody

function onUse(cid, item, frompos, item2, topos)local storage = 80777local vocation = 4 -- id da vocation knight (ou outra)if getPlayerVocation(cid) == vocation then if getPlayerStorageValue(cid, storage) <= 0 then doCreatureAddHealth(cid, getCreatureMaxHealth(cid)*0.10) setPlayerStorageValue(cid, storage, os.time()+ 1*24*60*60) doPlayerSendTextMessage(cid, 22, "You add 10% hp to you health!") doSendMagicEffect(getCreaturePosition(cid), 30) doRemoveItem(item.uid, 1) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já usou esse item hoje, tente novamente em 24 horas.") endelse doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item exclusivo para knights.")endreturn trueend
<action itemid="IDdoITEM" script="nomedoarquivo.lua"/>
^ recomendaria você comparar a storage com os.time, já que o autor pediu que o item pudesse ser usado uma vez por dia.
info
Grupo: Conde
Registrado: 18/01/12
Posts: 988
Reputação: +327
Gênero: Masculino
Char no Tibia: Xerife Woody

4 minutos atrás, zipter98 disse:^ recomendaria você comparar a storage com os.time, já que o autor pediu que o item pudesse ser usado uma vez por dia.
vdd vlw, tanto tempo sem fazer script, esqueci kk ![]()
function onUse(cid, item, frompos, item2, topos)local storage = 80777local vocation = 4 -- id da vocation knight (ou outra)if getPlayerVocation(cid) == vocation then if os.time() > getPlayerStorageValue(cid, storage) then doCreatureAddHealth(cid, getCreatureMaxHealth(cid)*0.10) setPlayerStorageValue(cid, storage, os.time()+ 1*24*60*60) doPlayerSendTextMessage(cid, 22, "You add 10% hp to you health!") doSendMagicEffect(getCreaturePosition(cid), 30) doRemoveItem(item.uid, 1) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já usou esse item hoje, tente novamente em 24 horas.") endelse doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item exclusivo para knights.")endreturn trueend
info
Grupo: Visconde
Registrado: 26/08/10
Posts: 431
Reputação: +60
Gênero: Masculino
Char no Tibia: Gabriel Rookgaardian

Em 29/11/2016 at 20:51, DuuhCarvalho disse:
vdd vlw, tanto tempo sem fazer script, esqueci kk
Desculpa a demora pra dar o feedback, eu tava fazendo uma maratona com uns animes dai me esqueci de tudo haha.
Desculpa não ter sido claro na hora de explicar, mas o item era pra adicionar +10% do valor total do life do player, no life dele. Ex: O player tem 100 de life, ele usa o item e fica com 110 de life.
O teu script está healando 10% do life total do player. Mas eu fiz umas modificações aqui no seu script, usando outros que tenho e agora está funcionando como falei, até onde testei. Ele ficou assim:
function onUse(cid, item, frompos, item2, topos)local storage = 80777local vocation = {4,8,12} -- id da vocation knight (ou outra)local value = getCreatureMaxHealth(cid) / 10if isInArray(vocation, getPlayerVocation(cid)) then if os.time() > getPlayerStorageValue(cid, storage) then setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)+ value) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) setPlayerStorageValue(cid, storage, os.time()+ 1*24*60*60) doPlayerSendTextMessage(cid, 22, "You add 10% hp to you health!") doSendMagicEffect(getCreaturePosition(cid), 30) doRemoveItem(item.uid, 1) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já usou esse item hoje, tente novamente em 24 horas.") endelse doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item exclusivo para knights.")endreturn trueend
Tive que por "if isInArray(vocation, getPlayerVocation(cid)) then" porque não tava dando pra acrescentar mais vocações ao script.
Agora, tem como acrescentar algo pra quando o player deslogar, esse "efeito" sair? Apesar que imagino que pra fazer isso acontecer, vai ter que setar a storage pra 0 e quando o player relogar, vai poder usar de novo, mas espero que tenha alguma forma pra fazer isso. hahaha
Vou estar te reputando por já ter me ajudado muito. =D
info
Grupo: Conde
Registrado: 18/01/12
Posts: 988
Reputação: +327
Gênero: Masculino
Char no Tibia: Xerife Woody

8 horas atrás, gabriel28 disse:
Desculpa a demora pra dar o feedback, eu tava fazendo uma maratona com uns animes dai me esqueci de tudo haha.
Desculpa não ter sido claro na hora de explicar, mas o item era pra adicionar +10% do valor total do life do player, no life dele. Ex: O player tem 100 de life, ele usa o item e fica com 110 de life.
O teu script está healando 10% do life total do player. Mas eu fiz umas modificações aqui no seu script, usando outros que tenho e agora está funcionando como falei, até onde testei. Ele ficou assim:
function onUse(cid, item, frompos, item2, topos)local storage = 80777local vocation = {4,8,12} -- id da vocation knight (ou outra)local value = getCreatureMaxHealth(cid) / 10if isInArray(vocation, getPlayerVocation(cid)) then if os.time() > getPlayerStorageValue(cid, storage) then setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)+ value) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) setPlayerStorageValue(cid, storage, os.time()+ 1*24*60*60) doPlayerSendTextMessage(cid, 22, "You add 10% hp to you health!") doSendMagicEffect(getCreaturePosition(cid), 30) doRemoveItem(item.uid, 1) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já usou esse item hoje, tente novamente em 24 horas.") endelse doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item exclusivo para knights.")endreturn trueend
Tive que por "if isInArray(vocation, getPlayerVocation(cid)) then" porque não tava dando pra acrescentar mais vocações ao script.
Agora, tem como acrescentar algo pra quando o player deslogar, esse "efeito" sair? Apesar que imagino que pra fazer isso acontecer, vai ter que setar a storage pra 0 e quando o player relogar, vai poder usar de novo, mas espero que tenha alguma forma pra fazer isso. hahaha
Vou estar te reputando por já ter me ajudado muito. =D
vamos lá, o player vai usar o item, e vai aumentar a o hp dele, ai quando ele sair o hp volta para o valor original ? e ele só vai poder usar novamente no outro dia..
info
Grupo: Visconde
Registrado: 26/08/10
Posts: 431
Reputação: +60
Gênero: Masculino
Char no Tibia: Gabriel Rookgaardian

4 horas atrás, DuuhCarvalho disse:
vamos lá, o player vai usar o item, e vai aumentar a o hp dele, ai quando ele sair o hp volta para o valor original ? e ele só vai poder usar novamente no outro dia..
É isso ai. O script que coloquei acima já está acrescentando esse hp extra mas não está fazendo esse outra parte. O tempo de 24h começa a contar a partir do momento em que o player usou o item e não quando eles desloga do servidor. Ex: Ele usou de 13:00 e deslogou as 17:00, dai o tempo pra usar de novo já começou a contar às 13:00 que foi quando ele usou.
Espero que eu tenha conseguido explicar direito. kkkkk
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Em 28/11/2016 at 20:03, gabriel28 disse:
Ainda não testei, mas tem como por só pra knight usar?
Troca iso:
Citar
if getPlayerLevel(cid) >= 8 and getCreatureStorage(cid, storage) ~= dia then
Por isto:
Citar
if getPlayerLevel(cid) >= 8 and getCreatureStorage(cid, storage) ~= dia and isKnight(cid) then
info
Grupo: Visconde
Registrado: 26/08/10
Posts: 431
Reputação: +60
Gênero: Masculino
Char no Tibia: Gabriel Rookgaardian
Eu estava tentando por um limite de vocação em um script que acrescenta bônus de hp, só que sempre da erro, e meus conhecimentos em lua beiram a nada.
Alguém pode dar uma luz pondo esse limite de vocação, e ver se o limite de uso por dia está certo?
Segue o script:
local storage = 80777local vocs = {9,10,11,12}function onUse(cid, item, frompos, item2, topos)local value = getCreatureMaxHealth(cid) / 10 if getPlayerLevel(cid) >= 8 and getPlayerVocation(cid, vocs) then setCreatureMaxHealth(cid, math.floor(getCreatureMaxHealth(cid)+ value)) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) doPlayerSendTextMessage(cid, 22, "You add 10% hp to you health!") doCreatureSetStorage(cid, storage, math.max(0, getCreatureStorage(cid, storage)) + 1) doSendMagicEffect(getCreaturePosition(cid), 30) doRemoveItem(item.uid, 1) end doPlayerSendTextMessage(cid, 27, "You have received "..it[2].." "..getItemNameById(it[1])..". You can take your reward in "..time.." minutes.") setPlayerStorageValue(cid, storage, os.time() + time * 60) else return doPlayerSendCancel(cid, "You have already received your reward for today.") elseif getPlayerVocation(cid, vocs) = false return doPlayerSendCancel(cid, "Your vocation don't use it.") return trueendAgradeço desde já.