Exato, mas esqueci de mencionar uma coisa. Caso queira aleatório assim, vai ter que mover a tabela das potions para dentro da função onUse, pois, se deixar fora, a primeira vez que usar a potion vai pegar um valor aleatório (de acordo com cada item e o valor gerado aleatório para ele), porém nas próximas vezes vai ficar sempre aquele valor, pois como as pastas são carregadas em memória, então fora do onUse ele armazena aquele valor em memória e nunca é alterado. Por exemplo, vamos supor que você tem 2 potion na tabela e a de uma o random deu 35 e a outra 38, se deixar a tabela fora da função onUse vai ficar sempre curando 35 uma e a outra 38 até reiniciar o servidor ou atualizar a pasta Actions.
Então o certo é mover a tabela dentro da função onUse, para que a cada uso, gere um novo valor:
--------------- POTION QUE CURA BASEADO NA PORCENTAGEM DA VIDA MÁXIMA BY YAN18 ---------------
----- FUNÇÃO PARA CURAR O PLAYER -----
function doHealPlayer(cid, porcentagem_hp, effect, message_heal)
local porcentagem = math.abs(porcentagem_hp / 100) -- PEGA O VALOR INTEIRO PASSADO DO PARÂMETRO DESEJADO COMO A PORCENTAGEM E DIVIDE POR 100 PARAR GERAR A PORCENTAGEM
local life_recovered = math.floor(getCreatureMaxHealth(cid) * porcentagem) -- QUANTIDADE DE HP QUE VAI RECUPERAR
doSendMagicEffect(getThingPos(cid), effect)
doCreatureAddHealth(cid, life_recovered)
-- CONDICIONAL PARA EXIBIR MENSAGEM EM CIMA DO PLAYER AO CURAR --
if message_heal then
doCreatureSay(cid, "Life recovered...")
end
doPlayerSendCancel(cid, "Life recovered...") -- MENSAGEM BRANCE EM CIMA DO CONSOLE
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You recovered " ..life_recovered.. " of your maximum life.")
end
---------------------------------------- CÓDIGO ----------------------------------------
function onUse(cid, item, fromPosition, itemEx, toPosition)
--------- TABELA COM O ID, PORCENTAGEM E EFEITO DAS POTIONS ---------
local potions = {
[12344] = {porcentagem = math.floor(math.random(30, 40)), effect = 14}, -- ID, PORCENTAGEM E EFEITO DA POTION
[12345] = {porcentagem = math.floor(math.random(30, 40)), effect = 14}, -- ID, PORCENTAGEM E EFEITO DA POTION
[12346] = {porcentagem = math.floor(math.random(30, 40)), effect = 12}, -- ID, PORCENTAGEM E EFEITO DA POTION
[12347] = {porcentagem = math.floor(math.random(30, 40)), effect = 13}, -- ID, PORCENTAGEM E EFEITO DA POTION
[12348] = {porcentagem = math.floor(math.random(30, 40)), effect = 13}, -- ID, PORCENTAGEM E EFEITO DA POTION
}
local verificar_batalha = true -- VARIÁVEL QUE VERIFICA SE ESTÁ EM BATALHA PARA USAR A POTION
if not isCreature(cid) or not getCreatureMaster(cid) then
return doPlayerSendCancel(cid, "You only can use this potion in you.")
end
if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then
return doPlayerSendCancel(cid, "You are already with full health.")
end
-- VERIFICA SE ESTÁ EM BATALHA --
if verificar_batalha then
if getCreatureCondition(cid, CONDITION_INFIGHT) then
doPlayerSendCancel(cid, "You can't use this potion during a battle.")
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't use this potion during a battle.")
return true
end
end
doRemoveItem(item.uid, 1)
doHealPlayer(cid, potions[item.itemid].porcentagem, potions[item.itemid].effect, true)
return true
end