KaboFlow 54 Postado Março 22, 2021 Share Postado Março 22, 2021 Eu quero uma poção que cura uma porcentagem de exemplo que cura o pokémon de 10.000, mas que cura por segundo de 1000. até atingir 10.000 Link para o comentário Compartilhar em outros sites More sharing options...
0 KaboFlow 54 Postado Abril 3, 2021 Autor Share Postado Abril 3, 2021 8 minutos atrás, Yan18 disse: Sobre a falase repetir apenas uma vez, sem problemas! Troque o código por esse: local function HealPerTurn(cid, health, effect, time, seconds) local duration = seconds > 0 and math.floor(1000 * seconds) or math.floor(1000 * 1) -- EQUIVALENTE A 1 SEGUNDO (MILISSEGUNDOS) local storage_say = 78787 -- STORAGE PARA NÃO REPETIR A FALA if not cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used only in creatures.") return true end if time <= 0 then return true else if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then return doPlayerSendCancel(cid, "Your health is full.") end doCreatureAddHealth(cid, health > 0 and math.floor(health) or 1) doSendMagicEffect(getThingPos(cid), effect) if getPlayerStorageValue(cid, storage_say) < 1 then doCreatureSay(cid, "Healing") setPlayerStorageValue(cid, storage_say, 1) end addEvent(HealPerTurn, duration, cid, health, effect, time - 1, seconds) end end --- TABELA COM O ID DAS POTIONS, TANTO DE VIDA QUE CURA CADA UMA E EFEITO AO USAR A POÇÃO --- local potions = { [12347] = {health = 1000, effect = 13}, -- full restore [12348] = {health = 3500, effect = 13}, -- hyper potion [12346] = {health = 5000, effect = 13}, -- ultra potion [12345] = {health = 8000, effect = 13}, -- super potion } local vezes_repete = 10 -- QUANTAS VEZES VAI REPETIR O EFEITO local segundos = 1 -- TEMPO EM SEGUNDOS PARA REPETIR O EFEITO ---------------------------- CÓDIGO -------------------------------- function onUse(cid, item, toPos, itemEx, FromPos) local pokemon = getCreatureSummons(cid)[1] -- PEGA O PRIMEIRO SUMMON DO PLAYER (POKEMON) if not pokemon then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used in a pokémon.") return true end if not isSummon(pokemon) or getCreatureMaster(pokemon) ~= cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can use potion only in your own pokémon.") return doPlayerSendCancel(cid, "You can use potion only in your pokémon.") end if getPlayerStorageValue(cid, 52481) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't do that while a duel.") return doPlayerSendCancel(cid, "You can't do that while a duel.") end if getPlayerStorageValue(cid, 990) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't use potion during gym battles.") return doPlayerSendCancel(cid, "You can't use potion during gym battles.") end HealPerTurn(pokemon, potions[item.itemid].health, potions[item.itemid].effect, vezes_repete, segundos) doRemoveItem(item.uid, 1) return true end Sobre esse outro script que você quer, vai ter que criar um tópico novo para isso. Cria que eu te ajudo. obrigado ... bem, vou criar o outro tópico Eu descobri que um erro é que quando eles acertam a poção ela continua a curar Achei que a cura seria cancelada ao entrar na batalha Então, se o pokémon receber dano, a cura é cancelada Eu não sei se você entende se eles deixam ele envenenado, ele perde a cura como se o deixassem com uma queimadura ... O problema que eu tenho aqui é que eu posso curar o Pokémon sendo atacado Eu gostaria que quando o Pokémon recebesse dano a cura fosse cancelada Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Abril 3, 2021 Share Postado Abril 3, 2021 (editado) 18 horas atrás, KaboFlow disse: obrigado ... bem, vou criar o outro tópico Eu descobri que um erro é que quando eles acertam a poção ela continua a curar Achei que a cura seria cancelada ao entrar na batalha Então, se o pokémon receber dano, a cura é cancelada Eu não sei se você entende se eles deixam ele envenenado, ele perde a cura como se o deixassem com uma queimadura ... O problema que eu tenho aqui é que eu posso curar o Pokémon sendo atacado Eu gostaria que quando o Pokémon recebesse dano a cura fosse cancelada Eu adicionei uma verificação para caso o pokémon esteja em batalha ou com status negativo, e se estiver cancela a cura. local function HealPerTurn(cid, health, effect, time, seconds) local duration = seconds > 0 and math.floor(1000 * seconds) or math.floor(1000 * 1) -- EQUIVALENTE A 1 SEGUNDO (MILISSEGUNDOS) local storage_say = 78787 -- STORAGE PARA NÃO REPETIR A FALA local table_conditions { CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, CONDITION_BLEEDING, CONDITION_HASTE, CONDITION_PARALYZE, CONDITION_INFIGHT, CONDITION_DRUNK, CONDITION_MUTED, CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED, CONDITION_HUNTING, } if not cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used only in creatures.") return true end for _, condition in pairs(table_conditions) do if getCreatureCondition(cid, condition) then return true end end if time <= 0 then return true else if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then return doPlayerSendCancel(cid, "Your health is full.") end doCreatureAddHealth(cid, health > 0 and math.floor(health) or 1) doSendMagicEffect(getThingPos(cid), effect) if getPlayerStorageValue(cid, storage_say) < 1 then doCreatureSay(cid, "Healing") setPlayerStorageValue(cid, storage_say, 1) end addEvent(HealPerTurn, duration, cid, health, effect, time - 1, seconds) end end --- TABELA COM O ID DAS POTIONS, TANTO DE VIDA QUE CURA CADA UMA E EFEITO AO USAR A POÇÃO --- local potions = { [12347] = {health = 1000, effect = 13}, -- full restore [12348] = {health = 3500, effect = 13}, -- hyper potion [12346] = {health = 5000, effect = 13}, -- ultra potion [12345] = {health = 8000, effect = 13}, -- super potion } local vezes_repete = 10 -- QUANTAS VEZES VAI REPETIR O EFEITO local segundos = 1 -- TEMPO EM SEGUNDOS PARA REPETIR O EFEITO ---------------------------- CÓDIGO -------------------------------- function onUse(cid, item, toPos, itemEx, FromPos) local pokemon = getCreatureSummons(cid)[1] -- PEGA O PRIMEIRO SUMMON DO PLAYER (POKEMON) if not pokemon then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used in a pokémon.") return true end if not isSummon(pokemon) or getCreatureMaster(pokemon) ~= cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can use potion only in your own pokémon.") return doPlayerSendCancel(cid, "You can use potion only in your pokémon.") end if getPlayerStorageValue(cid, 52481) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't do that while a duel.") return doPlayerSendCancel(cid, "You can't do that while a duel.") end if getPlayerStorageValue(cid, 990) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't use potion during gym battles.") return doPlayerSendCancel(cid, "You can't use potion during gym battles.") end HealPerTurn(pokemon, potions[item.itemid].health, potions[item.itemid].effect, vezes_repete, segundos) doRemoveItem(item.uid, 1) return true end Editado Abril 3, 2021 por Yan18 Link para o comentário Compartilhar em outros sites More sharing options...
0 KaboFlow 54 Postado Abril 3, 2021 Autor Share Postado Abril 3, 2021 5 minutos atrás, Yan18 disse: Eu adicionei uma verificação para caso o pokémon esteja em batalha ou com status negativo, e se estiver cancela a cura. local function HealPerTurn(cid, health, effect, time, seconds) local duration = seconds > 0 and math.floor(1000 * seconds) or math.floor(1000 * 1) -- EQUIVALENTE A 1 SEGUNDO (MILISSEGUNDOS) local storage_say = 78787 -- STORAGE PARA NÃO REPETIR A FALA local table_conditions { CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, CONDITION_BLEEDING, CONDITION_HASTE, CONDITION_PARALYZE, CONDITION_INFIGHT, CONDITION_DRUNK, CONDITION_MUTED, CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED, CONDITION_HUNTING, } if not cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used only in creatures.") return true end for _, condition in pairs(table_conditions) do if getCreatureCondition(cid, condition) then return true end end if time <= 0 then return true else if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then return doPlayerSendCancel(cid, "Your health is full.") end doCreatureAddHealth(cid, health > 0 and math.floor(health) or 1) doSendMagicEffect(getThingPos(cid), effect) if getPlayerStorageValue(cid, storage_say) < 1 then doCreatureSay(cid, "Healing") setPlayerStorageValue(cid, storage_say, 1) end addEvent(HealPerTurn, duration, cid, health, effect, time - 1, seconds) end end --- TABELA COM O ID DAS POTIONS, TANTO DE VIDA QUE CURA CADA UMA E EFEITO AO USAR A POÇÃO --- local potions = { [12347] = {health = 1000, effect = 13}, -- full restore [12348] = {health = 3500, effect = 13}, -- hyper potion [12346] = {health = 5000, effect = 13}, -- ultra potion [12345] = {health = 8000, effect = 13}, -- super potion } local vezes_repete = 10 -- QUANTAS VEZES VAI REPETIR O EFEITO local segundos = 1 -- TEMPO EM SEGUNDOS PARA REPETIR O EFEITO ---------------------------- CÓDIGO -------------------------------- function onUse(cid, item, toPos, itemEx, FromPos) local pokemon = getCreatureSummons(cid)[1] -- PEGA O PRIMEIRO SUMMON DO PLAYER (POKEMON) if not pokemon then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used in a pokémon.") return true end if not isSummon(pokemon) or getCreatureMaster(pokemon) ~= cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can use potion only in your own pokémon.") return doPlayerSendCancel(cid, "You can use potion only in your pokémon.") end if getPlayerStorageValue(cid, 52481) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't do that while a duel.") return doPlayerSendCancel(cid, "You can't do that while a duel.") end if getPlayerStorageValue(cid, 990) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't use potion during gym battles.") return doPlayerSendCancel(cid, "You can't use potion during gym battles.") end HealPerTurn(pokemon, potions[item.itemid].health, potions[item.itemid].effect, vezes_repete, segundos) doRemoveItem(item.uid, 1) return true end [03/04/2021 16:12:15] [Error - LuaScriptInterface::loadFile] data/actions/scripts/potion/Potion2021.lua:5: unexpected symbol near '{' [03/04/2021 16:12:15] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/potion/Potion2021.lua) [03/04/2021 16:12:15] data/actions/scripts/potion/Potion2021.lua:5: unexpected symbol near '{' Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Abril 4, 2021 Share Postado Abril 4, 2021 5 horas atrás, KaboFlow disse: [03/04/2021 16:12:15] [Error - LuaScriptInterface::loadFile] data/actions/scripts/potion/Potion2021.lua:5: unexpected symbol near '{' [03/04/2021 16:12:15] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/potion/Potion2021.lua) [03/04/2021 16:12:15] data/actions/scripts/potion/Potion2021.lua:5: unexpected symbol near '{' Faltou o "=" para criar a tabela. Troque o código por esse: local function HealPerTurn(cid, health, effect, time, seconds) local duration = seconds > 0 and math.floor(1000 * seconds) or math.floor(1000 * 1) -- EQUIVALENTE A 1 SEGUNDO (MILISSEGUNDOS) local storage_say = 78787 -- STORAGE PARA NÃO REPETIR A FALA local table_conditions = { CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, CONDITION_BLEEDING, CONDITION_HASTE, CONDITION_PARALYZE, CONDITION_INFIGHT, CONDITION_DRUNK, CONDITION_MUTED, CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED, CONDITION_HUNTING, } if not cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used only in creatures.") return true end for _, condition in pairs(table_conditions) do if getCreatureCondition(cid, condition) then return true end end if time <= 0 then return true else if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then return doPlayerSendCancel(cid, "Your health is full.") end doCreatureAddHealth(cid, health > 0 and math.floor(health) or 1) doSendMagicEffect(getThingPos(cid), effect) if getPlayerStorageValue(cid, storage_say) < 1 then doCreatureSay(cid, "Healing") setPlayerStorageValue(cid, storage_say, 1) end addEvent(HealPerTurn, duration, cid, health, effect, time - 1, seconds) end end --- TABELA COM O ID DAS POTIONS, TANTO DE VIDA QUE CURA CADA UMA E EFEITO AO USAR A POÇÃO --- local potions = { [12347] = {health = 1000, effect = 13}, -- full restore [12348] = {health = 3500, effect = 13}, -- hyper potion [12346] = {health = 5000, effect = 13}, -- ultra potion [12345] = {health = 8000, effect = 13}, -- super potion } local vezes_repete = 10 -- QUANTAS VEZES VAI REPETIR O EFEITO local segundos = 1 -- TEMPO EM SEGUNDOS PARA REPETIR O EFEITO ---------------------------- CÓDIGO -------------------------------- function onUse(cid, item, toPos, itemEx, FromPos) local pokemon = getCreatureSummons(cid)[1] -- PEGA O PRIMEIRO SUMMON DO PLAYER (POKEMON) if not pokemon then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used in a pokémon.") return true end if not isSummon(pokemon) or getCreatureMaster(pokemon) ~= cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can use potion only in your own pokémon.") return doPlayerSendCancel(cid, "You can use potion only in your pokémon.") end if getPlayerStorageValue(cid, 52481) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't do that while a duel.") return doPlayerSendCancel(cid, "You can't do that while a duel.") end if getPlayerStorageValue(cid, 990) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't use potion during gym battles.") return doPlayerSendCancel(cid, "You can't use potion during gym battles.") end HealPerTurn(pokemon, potions[item.itemid].health, potions[item.itemid].effect, vezes_repete, segundos) doRemoveItem(item.uid, 1) return true end Link para o comentário Compartilhar em outros sites More sharing options...
0 KaboFlow 54 Postado Abril 4, 2021 Autor Share Postado Abril 4, 2021 13 minutos atrás, Yan18 disse: Faltou o "=" para criar a tabela. Troque o código por esse: local function HealPerTurn(cid, health, effect, time, seconds) local duration = seconds > 0 and math.floor(1000 * seconds) or math.floor(1000 * 1) -- EQUIVALENTE A 1 SEGUNDO (MILISSEGUNDOS) local storage_say = 78787 -- STORAGE PARA NÃO REPETIR A FALA local table_conditions = { CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, CONDITION_BLEEDING, CONDITION_HASTE, CONDITION_PARALYZE, CONDITION_INFIGHT, CONDITION_DRUNK, CONDITION_MUTED, CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED, CONDITION_HUNTING, } if not cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used only in creatures.") return true end for _, condition in pairs(table_conditions) do if getCreatureCondition(cid, condition) then return true end end if time <= 0 then return true else if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then return doPlayerSendCancel(cid, "Your health is full.") end doCreatureAddHealth(cid, health > 0 and math.floor(health) or 1) doSendMagicEffect(getThingPos(cid), effect) if getPlayerStorageValue(cid, storage_say) < 1 then doCreatureSay(cid, "Healing") setPlayerStorageValue(cid, storage_say, 1) end addEvent(HealPerTurn, duration, cid, health, effect, time - 1, seconds) end end --- TABELA COM O ID DAS POTIONS, TANTO DE VIDA QUE CURA CADA UMA E EFEITO AO USAR A POÇÃO --- local potions = { [12347] = {health = 1000, effect = 13}, -- full restore [12348] = {health = 3500, effect = 13}, -- hyper potion [12346] = {health = 5000, effect = 13}, -- ultra potion [12345] = {health = 8000, effect = 13}, -- super potion } local vezes_repete = 10 -- QUANTAS VEZES VAI REPETIR O EFEITO local segundos = 1 -- TEMPO EM SEGUNDOS PARA REPETIR O EFEITO ---------------------------- CÓDIGO -------------------------------- function onUse(cid, item, toPos, itemEx, FromPos) local pokemon = getCreatureSummons(cid)[1] -- PEGA O PRIMEIRO SUMMON DO PLAYER (POKEMON) if not pokemon then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used in a pokémon.") return true end if not isSummon(pokemon) or getCreatureMaster(pokemon) ~= cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can use potion only in your own pokémon.") return doPlayerSendCancel(cid, "You can use potion only in your pokémon.") end if getPlayerStorageValue(cid, 52481) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't do that while a duel.") return doPlayerSendCancel(cid, "You can't do that while a duel.") end if getPlayerStorageValue(cid, 990) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't use potion during gym battles.") return doPlayerSendCancel(cid, "You can't use potion during gym battles.") end HealPerTurn(pokemon, potions[item.itemid].health, potions[item.itemid].effect, vezes_repete, segundos) doRemoveItem(item.uid, 1) return true end [03/04/2021 22:20:34] [Error - Action Interface] [03/04/2021 22:20:34] In a timer event called from: [03/04/2021 22:20:34] data/actions/scripts/potion/Potion2021.lua:onUse [03/04/2021 22:20:34] Description: [03/04/2021 22:20:34] (luaDoPlayerSendCancel) Player not found Tem um erro estando em batalha não posso usá-lo .. e pode ser usado mesmo sendo atacado. O que eu quero é que se receber dano, a regeneração se canse, para deixar mais claro que é igual ao do pokexgames .. Não sei se você pode entrar no jogo e ver como é a poção Link para o comentário Compartilhar em outros sites More sharing options...
0 KaboFlow 54 Postado Abril 6, 2021 Autor Share Postado Abril 6, 2021 up Link para o comentário Compartilhar em outros sites More sharing options...
0 KaboFlow 54 Postado Abril 6, 2021 Autor Share Postado Abril 6, 2021 Em 03/04/2021 em 22:06, Yan18 disse: Faltou o "=" para criar a tabela. Troque o código por esse: local function HealPerTurn(cid, health, effect, time, seconds) local duration = seconds > 0 and math.floor(1000 * seconds) or math.floor(1000 * 1) -- EQUIVALENTE A 1 SEGUNDO (MILISSEGUNDOS) local storage_say = 78787 -- STORAGE PARA NÃO REPETIR A FALA local table_conditions = { CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, CONDITION_BLEEDING, CONDITION_HASTE, CONDITION_PARALYZE, CONDITION_INFIGHT, CONDITION_DRUNK, CONDITION_MUTED, CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED, CONDITION_HUNTING, } if not cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used only in creatures.") return true end for _, condition in pairs(table_conditions) do if getCreatureCondition(cid, condition) then return true end end if time <= 0 then return true else if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then return doPlayerSendCancel(cid, "Your health is full.") end doCreatureAddHealth(cid, health > 0 and math.floor(health) or 1) doSendMagicEffect(getThingPos(cid), effect) if getPlayerStorageValue(cid, storage_say) < 1 then doCreatureSay(cid, "Healing") setPlayerStorageValue(cid, storage_say, 1) end addEvent(HealPerTurn, duration, cid, health, effect, time - 1, seconds) end end --- TABELA COM O ID DAS POTIONS, TANTO DE VIDA QUE CURA CADA UMA E EFEITO AO USAR A POÇÃO --- local potions = { [12347] = {health = 1000, effect = 13}, -- full restore [12348] = {health = 3500, effect = 13}, -- hyper potion [12346] = {health = 5000, effect = 13}, -- ultra potion [12345] = {health = 8000, effect = 13}, -- super potion } local vezes_repete = 10 -- QUANTAS VEZES VAI REPETIR O EFEITO local segundos = 1 -- TEMPO EM SEGUNDOS PARA REPETIR O EFEITO ---------------------------- CÓDIGO -------------------------------- function onUse(cid, item, toPos, itemEx, FromPos) local pokemon = getCreatureSummons(cid)[1] -- PEGA O PRIMEIRO SUMMON DO PLAYER (POKEMON) if not pokemon then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used in a pokémon.") return true end if not isSummon(pokemon) or getCreatureMaster(pokemon) ~= cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can use potion only in your own pokémon.") return doPlayerSendCancel(cid, "You can use potion only in your pokémon.") end if getPlayerStorageValue(cid, 52481) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't do that while a duel.") return doPlayerSendCancel(cid, "You can't do that while a duel.") end if getPlayerStorageValue(cid, 990) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't use potion during gym battles.") return doPlayerSendCancel(cid, "You can't use potion during gym battles.") end HealPerTurn(pokemon, potions[item.itemid].health, potions[item.itemid].effect, vezes_repete, segundos) doRemoveItem(item.uid, 1) return true end up Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Abril 7, 2021 Share Postado Abril 7, 2021 (editado) Sem spam amigo, aguarde ser respondido. Sobre o sistema de potion, eu imaginei que queria igual PXG pela print rs. Troque o código por esse: local function HealPerTurn(cid, health, effect, time, seconds) local duration = seconds > 0 and math.floor(1000 * seconds) or math.floor(1000 * 1) -- EQUIVALENTE A 1 SEGUNDO (MILISSEGUNDOS) local storage_say = 78787 -- STORAGE PARA NÃO REPETIR A FALA local storage_life = 7777777 -- STORAGE QUE ARMAZENA LIFE PARA VERIFICAR SE SOFREU DANO local table_conditions = { CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, CONDITION_BLEEDING, CONDITION_HASTE, CONDITION_PARALYZE, CONDITION_INFIGHT, CONDITION_DRUNK, CONDITION_MUTED, CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED, CONDITION_HUNTING, } if not cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used only in creatures.") return true end for _, condition in pairs(table_conditions) do if getCreatureCondition(cid, condition) then return true end end setPlayerStorageValue(cid, storage_life, 0) if time <= 0 then return true else if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then return doPlayerSendCancel(cid, "Your health is full.") end if (getPlayerStorageValue(cid, storage_life) > 0) and (getPlayerStorageValue(cid, storage_life) ~= getCreatureHealth(cid)) then return doSendAnimatedText(cid, "LOST HEAL", getThingPos(cid)) end doCreatureAddHealth(cid, health > 0 and math.floor(health) or 1) doSendMagicEffect(getThingPos(cid), effect) setPlayerStorageValue(cid, storage_life, getCreatureHealth(cid)) if getPlayerStorageValue(cid, storage_say) < 1 then doSendAnimatedText(cid, "HEALING...", getThingPos(cid)) setPlayerStorageValue(cid, storage_say, 1) end addEvent(HealPerTurn, duration, cid, health, effect, time - 1, seconds) end end --- TABELA COM O ID DAS POTIONS, TANTO DE VIDA QUE CURA CADA UMA E EFEITO AO USAR A POÇÃO --- local potions = { [12347] = {health = 1000, effect = 13}, -- full restore [12348] = {health = 3500, effect = 13}, -- hyper potion [12346] = {health = 5000, effect = 13}, -- ultra potion [12345] = {health = 8000, effect = 13}, -- super potion } local vezes_repete = 10 -- QUANTAS VEZES VAI REPETIR O EFEITO local segundos = 1 -- TEMPO EM SEGUNDOS PARA REPETIR O EFEITO ---------------------------- CÓDIGO -------------------------------- function onUse(cid, item, toPos, itemEx, FromPos) local pokemon = getCreatureSummons(cid)[1] -- PEGA O PRIMEIRO SUMMON DO PLAYER (POKEMON) if not pokemon then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used in a pokémon.") return true end if not isSummon(pokemon) or getCreatureMaster(pokemon) ~= cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can use potion only in your own pokémon.") return doPlayerSendCancel(cid, "You can use potion only in your pokémon.") end if getPlayerStorageValue(cid, 52481) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't do that while a duel.") return doPlayerSendCancel(cid, "You can't do that while a duel.") end if getPlayerStorageValue(cid, 990) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't use potion during gym battles.") return doPlayerSendCancel(cid, "You can't use potion during gym battles.") end HealPerTurn(pokemon, potions[item.itemid].health, potions[item.itemid].effect, vezes_repete, segundos) doRemoveItem(item.uid, 1) return true end Eu mudei as falas de doCreatureSay para doSendAnimatedText para ficar parecido com PXG. Testa e vê se da algum problema. Editado Abril 7, 2021 por Yan18 Link para o comentário Compartilhar em outros sites More sharing options...
0 KaboFlow 54 Postado Abril 7, 2021 Autor Share Postado Abril 7, 2021 5 minutos atrás, Yan18 disse: Sem spam amigo, aguarde ser respondido. Sobre o sistema de potion, eu imaginei que queria igual PXG pela print rs. Troque o código por esse: local function HealPerTurn(cid, health, effect, time, seconds) local duration = seconds > 0 and math.floor(1000 * seconds) or math.floor(1000 * 1) -- EQUIVALENTE A 1 SEGUNDO (MILISSEGUNDOS) local storage_say = 78787 -- STORAGE PARA NÃO REPETIR A FALA local storage_life = 7777777 -- STORAGE QUE ARMAZENA LIFE PARA VERIFICAR SE SOFREU DANO local table_conditions = { CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, CONDITION_BLEEDING, CONDITION_HASTE, CONDITION_PARALYZE, CONDITION_INFIGHT, CONDITION_DRUNK, CONDITION_MUTED, CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED, CONDITION_HUNTING, } if not cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used only in creatures.") return true end for _, condition in pairs(table_conditions) do if getCreatureCondition(cid, condition) then return true end end setPlayerStorageValue(cid, storage_life, 0) if time <= 0 then return true else if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then return doPlayerSendCancel(cid, "Your health is full.") end if getPlayerStorageValue(cid, storage_life) <= 0 then setPlayerStorageValue(cid, storage_life, getCreatureHealth(cid)) elseif (getPlayerStorageValue(cid, storage_life) > 0) and (getPlayerStorageValue(cid, storage_life) ~= getCreatureHealth(cid)) then return doSendAnimatedText(cid, "LOST HEAL", math.random(1, 255)) end doCreatureAddHealth(cid, health > 0 and math.floor(health) or 1) doSendMagicEffect(getThingPos(cid), effect) setPlayerStorageValue(cid, storage_life) if getPlayerStorageValue(cid, storage_say) < 1 then doSendAnimatedText(cid, "HEALING...", math.random(1, 255)) setPlayerStorageValue(cid, storage_say, 1) end addEvent(HealPerTurn, duration, cid, health, effect, time - 1, seconds) end end --- TABELA COM O ID DAS POTIONS, TANTO DE VIDA QUE CURA CADA UMA E EFEITO AO USAR A POÇÃO --- local potions = { [12347] = {health = 1000, effect = 13}, -- full restore [12348] = {health = 3500, effect = 13}, -- hyper potion [12346] = {health = 5000, effect = 13}, -- ultra potion [12345] = {health = 8000, effect = 13}, -- super potion } local vezes_repete = 10 -- QUANTAS VEZES VAI REPETIR O EFEITO local segundos = 1 -- TEMPO EM SEGUNDOS PARA REPETIR O EFEITO ---------------------------- CÓDIGO -------------------------------- function onUse(cid, item, toPos, itemEx, FromPos) local pokemon = getCreatureSummons(cid)[1] -- PEGA O PRIMEIRO SUMMON DO PLAYER (POKEMON) if not pokemon then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used in a pokémon.") return true end if not isSummon(pokemon) or getCreatureMaster(pokemon) ~= cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can use potion only in your own pokémon.") return doPlayerSendCancel(cid, "You can use potion only in your pokémon.") end if getPlayerStorageValue(cid, 52481) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't do that while a duel.") return doPlayerSendCancel(cid, "You can't do that while a duel.") end if getPlayerStorageValue(cid, 990) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't use potion during gym battles.") return doPlayerSendCancel(cid, "You can't use potion during gym battles.") end HealPerTurn(pokemon, potions[item.itemid].health, potions[item.itemid].effect, vezes_repete, segundos) doRemoveItem(item.uid, 1) return true end Eu mudei as falas de doCreatureSay para doSendAnimatedText para ficar parecido com PXG. Testa e vê se da algum problema. [06/04/2021 22:29:36] [Error - Action Interface] [06/04/2021 22:29:36] data/actions/scripts/potion/Potion.lua:onUse [06/04/2021 22:29:36] Description: [06/04/2021 22:29:36] attempt to index a number value [06/04/2021 22:29:36] stack traceback: [06/04/2021 22:29:36] [C]: in function 'doSendAnimatedText' [06/04/2021 22:29:36] data/actions/scripts/potion/Potion.lua:57: in function 'HealPerTurn' [06/04/2021 22:29:36] data/actions/scripts/potion/Potion.lua:103: in function <data/actions/scripts/potion/Potion.lua:80> Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Abril 7, 2021 Share Postado Abril 7, 2021 Agora, KaboFlow disse: [06/04/2021 22:29:36] [Error - Action Interface] [06/04/2021 22:29:36] data/actions/scripts/potion/Potion.lua:onUse [06/04/2021 22:29:36] Description: [06/04/2021 22:29:36] attempt to index a number value [06/04/2021 22:29:36] stack traceback: [06/04/2021 22:29:36] [C]: in function 'doSendAnimatedText' [06/04/2021 22:29:36] data/actions/scripts/potion/Potion.lua:57: in function 'HealPerTurn' [06/04/2021 22:29:36] data/actions/scripts/potion/Potion.lua:103: in function <data/actions/scripts/potion/Potion.lua:80> Eu acabei de editar o código ali em cima, tinha feito uma coisa errada. Copia e testa novamente. Link para o comentário Compartilhar em outros sites More sharing options...
0 KaboFlow 54 Postado Abril 7, 2021 Autor Share Postado Abril 7, 2021 3 minutos atrás, Yan18 disse: Eu acabei de editar o código ali em cima, tinha feito uma coisa errada. Copia e testa novamente. agora e linea 76 [06/04/2021 22:34:15] [Error - Action Interface] [06/04/2021 22:34:15] data/actions/scripts/potion/Potion.lua:onUse [06/04/2021 22:34:15] Description: [06/04/2021 22:34:15] attempt to index a number value [06/04/2021 22:34:15] stack traceback: [06/04/2021 22:34:15] [C]: in function 'doSendAnimatedText' [06/04/2021 22:34:15] data/actions/scripts/potion/Potion.lua:53: in function 'HealPerTurn' [06/04/2021 22:34:15] data/actions/scripts/potion/Potion.lua:99: in function <data/actions/scripts/potion/Potion.lua:76> Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Abril 7, 2021 Share Postado Abril 7, 2021 2 minutos atrás, KaboFlow disse: agora e linea 76 [06/04/2021 22:34:15] [Error - Action Interface] [06/04/2021 22:34:15] data/actions/scripts/potion/Potion.lua:onUse [06/04/2021 22:34:15] Description: [06/04/2021 22:34:15] attempt to index a number value [06/04/2021 22:34:15] stack traceback: [06/04/2021 22:34:15] [C]: in function 'doSendAnimatedText' [06/04/2021 22:34:15] data/actions/scripts/potion/Potion.lua:53: in function 'HealPerTurn' [06/04/2021 22:34:15] data/actions/scripts/potion/Potion.lua:99: in function <data/actions/scripts/potion/Potion.lua:76> Testa agora: local function HealPerTurn(cid, health, effect, time, seconds) local duration = seconds > 0 and math.floor(1000 * seconds) or math.floor(1000 * 1) -- EQUIVALENTE A 1 SEGUNDO (MILISSEGUNDOS) local storage_say = 78787 -- STORAGE PARA NÃO REPETIR A FALA local storage_life = 7777777 -- STORAGE QUE ARMAZENA LIFE PARA VERIFICAR SE SOFREU DANO local table_conditions = { CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, CONDITION_BLEEDING, CONDITION_HASTE, CONDITION_PARALYZE, CONDITION_INFIGHT, CONDITION_DRUNK, CONDITION_MUTED, CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED, CONDITION_HUNTING, } if not cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used only in creatures.") return true end for _, condition in pairs(table_conditions) do if getCreatureCondition(cid, condition) then return true end end setPlayerStorageValue(cid, storage_life, 0) if time <= 0 then return true else if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then return doPlayerSendCancel(cid, "Your health is full.") end if (getPlayerStorageValue(cid, storage_life) > 0) and (getPlayerStorageValue(cid, storage_life) ~= getCreatureHealth(cid)) then return doSendAnimatedText(getThingPos(cid), "LOST HEAL", getThingPos(cid)) end doCreatureAddHealth(cid, health > 0 and math.floor(health) or 1) doSendMagicEffect(getThingPos(cid), effect) setPlayerStorageValue(cid, storage_life, getCreatureHealth(cid)) if getPlayerStorageValue(cid, storage_say) < 1 then doSendAnimatedText(getThingPos(cid), "HEALING...", getThingPos(cid)) setPlayerStorageValue(cid, storage_say, 1) end addEvent(HealPerTurn, duration, cid, health, effect, time - 1, seconds) end end --- TABELA COM O ID DAS POTIONS, TANTO DE VIDA QUE CURA CADA UMA E EFEITO AO USAR A POÇÃO --- local potions = { [12347] = {health = 1000, effect = 13}, -- full restore [12348] = {health = 3500, effect = 13}, -- hyper potion [12346] = {health = 5000, effect = 13}, -- ultra potion [12345] = {health = 8000, effect = 13}, -- super potion } local vezes_repete = 10 -- QUANTAS VEZES VAI REPETIR O EFEITO local segundos = 1 -- TEMPO EM SEGUNDOS PARA REPETIR O EFEITO ---------------------------- CÓDIGO -------------------------------- function onUse(cid, item, toPos, itemEx, FromPos) local pokemon = getCreatureSummons(cid)[1] -- PEGA O PRIMEIRO SUMMON DO PLAYER (POKEMON) if not pokemon then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used in a pokémon.") return true end if not isSummon(pokemon) or getCreatureMaster(pokemon) ~= cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can use potion only in your own pokémon.") return doPlayerSendCancel(cid, "You can use potion only in your pokémon.") end if getPlayerStorageValue(cid, 52481) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't do that while a duel.") return doPlayerSendCancel(cid, "You can't do that while a duel.") end if getPlayerStorageValue(cid, 990) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't use potion during gym battles.") return doPlayerSendCancel(cid, "You can't use potion during gym battles.") end HealPerTurn(pokemon, potions[item.itemid].health, potions[item.itemid].effect, vezes_repete, segundos) doRemoveItem(item.uid, 1) return true end Link para o comentário Compartilhar em outros sites More sharing options...
0 KaboFlow 54 Postado Abril 7, 2021 Autor Share Postado Abril 7, 2021 1 minuto atrás, Yan18 disse: Testa agora: local function HealPerTurn(cid, health, effect, time, seconds) local duration = seconds > 0 and math.floor(1000 * seconds) or math.floor(1000 * 1) -- EQUIVALENTE A 1 SEGUNDO (MILISSEGUNDOS) local storage_say = 78787 -- STORAGE PARA NÃO REPETIR A FALA local storage_life = 7777777 -- STORAGE QUE ARMAZENA LIFE PARA VERIFICAR SE SOFREU DANO local table_conditions = { CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, CONDITION_BLEEDING, CONDITION_HASTE, CONDITION_PARALYZE, CONDITION_INFIGHT, CONDITION_DRUNK, CONDITION_MUTED, CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED, CONDITION_HUNTING, } if not cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used only in creatures.") return true end for _, condition in pairs(table_conditions) do if getCreatureCondition(cid, condition) then return true end end setPlayerStorageValue(cid, storage_life, 0) if time <= 0 then return true else if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then return doPlayerSendCancel(cid, "Your health is full.") end if (getPlayerStorageValue(cid, storage_life) > 0) and (getPlayerStorageValue(cid, storage_life) ~= getCreatureHealth(cid)) then return doSendAnimatedText(getThingPos(cid), "LOST HEAL", getThingPos(cid)) end doCreatureAddHealth(cid, health > 0 and math.floor(health) or 1) doSendMagicEffect(getThingPos(cid), effect) setPlayerStorageValue(cid, storage_life, getCreatureHealth(cid)) if getPlayerStorageValue(cid, storage_say) < 1 then doSendAnimatedText(getThingPos(cid), "HEALING...", getThingPos(cid)) setPlayerStorageValue(cid, storage_say, 1) end addEvent(HealPerTurn, duration, cid, health, effect, time - 1, seconds) end end --- TABELA COM O ID DAS POTIONS, TANTO DE VIDA QUE CURA CADA UMA E EFEITO AO USAR A POÇÃO --- local potions = { [12347] = {health = 1000, effect = 13}, -- full restore [12348] = {health = 3500, effect = 13}, -- hyper potion [12346] = {health = 5000, effect = 13}, -- ultra potion [12345] = {health = 8000, effect = 13}, -- super potion } local vezes_repete = 10 -- QUANTAS VEZES VAI REPETIR O EFEITO local segundos = 1 -- TEMPO EM SEGUNDOS PARA REPETIR O EFEITO ---------------------------- CÓDIGO -------------------------------- function onUse(cid, item, toPos, itemEx, FromPos) local pokemon = getCreatureSummons(cid)[1] -- PEGA O PRIMEIRO SUMMON DO PLAYER (POKEMON) if not pokemon then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Potions can be used in a pokémon.") return true end if not isSummon(pokemon) or getCreatureMaster(pokemon) ~= cid then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can use potion only in your own pokémon.") return doPlayerSendCancel(cid, "You can use potion only in your pokémon.") end if getPlayerStorageValue(cid, 52481) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't do that while a duel.") return doPlayerSendCancel(cid, "You can't do that while a duel.") end if getPlayerStorageValue(cid, 990) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can't use potion during gym battles.") return doPlayerSendCancel(cid, "You can't use potion during gym battles.") end HealPerTurn(pokemon, potions[item.itemid].health, potions[item.itemid].effect, vezes_repete, segundos) doRemoveItem(item.uid, 1) return true end agora se eu ficar sozinho que ao receber dano não há mensagem de que a cura foi cancelada mas o resto eu já acho que chega, obrigado Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Abril 7, 2021 Share Postado Abril 7, 2021 Agora, KaboFlow disse: agora se eu ficar sozinho que ao receber dano não há mensagem de que a cura foi cancelada mas o resto eu já acho que chega, obrigado Não entendi, como assim ficar sozinho não tem mensagem ao receber dano? Link para o comentário Compartilhar em outros sites More sharing options...
0 KaboFlow 54 Postado Abril 7, 2021 Autor Share Postado Abril 7, 2021 Agora, Yan18 disse: Não entendi, como assim ficar sozinho não tem mensagem ao receber dano? [06/04/2021 22:42:12] [Error - Action Interface] [06/04/2021 22:42:12] In a timer event called from: [06/04/2021 22:42:12] data/actions/scripts/potion/Potion2021.lua:onUse [06/04/2021 22:42:12] Description: [06/04/2021 22:42:12] (luaGetCreatureMaxHealth) Creature not found [06/04/2021 22:42:12] [Error - Action Interface] [06/04/2021 22:42:12] In a timer event called from: [06/04/2021 22:42:12] data/actions/scripts/potion/Potion2021.lua:onUse [06/04/2021 22:42:12] Description: [06/04/2021 22:42:12] (luaDoPlayerSendCancel) Player not found Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
KaboFlow 54
Eu quero uma poção que cura uma porcentagem de exemplo
que cura o pokémon de 10.000, mas que cura por segundo de 1000. até atingir 10.000
Link para o comentário
Compartilhar em outros sites
Top Posters For This Question
21
15
Popular Days
Abr 2
13
Abr 6
12
Abr 3
4
Mar 31
2
Top Posters For This Question
KaboFlow 21 posts
Yan Oliveira 15 posts
Popular Days
Abr 2 2021
13 posts
Abr 6 2021
12 posts
Abr 3 2021
4 posts
Mar 31 2021
2 posts
Popular Posts
Yan Oliveira
Sobre erro, é porque eu escrevi errado o nome da função, digitei uma letra errada, troque o código por esse: local function HealPerTurn(cid, health, effect, seconds, time) local duration =
Yan Oliveira
Sim, eu entendi o que você quer. É estranho, pois eu testei aqui e está funcionando normal. Troque o código por esse: local function HealPerTurn(cid, health, effect, time, seconds) local du
Yan Oliveira
Você precisa explicar melhor, pois quando falou que está usando infinito, eu entendi que a cura estava sendo infinita, e não o uso. E sim, realmente esqueci de remover o item. Sobre esse e
Posted Images
35 respostass a esta questão
Posts Recomendados