NA

[Encerrado] [Duvida] Erro Revive e Medicine Pokemon

Por narutibianspd, 01 de nov. de 2013 em Tópicos Sem Resposta

pokemon
ajuda
revive
medicine
resolvido
script
otserv
4
971
01 de novembro de 2013 às 16:46

Creio que está duvida é de muitos, eu uso otserv de base o Pda by bolz v3.

 

Primeiramente ja achei um topico com esse erro mas nao foi tirado a duvida desse bug ainda.

 

 

Apos usar revive da o seguinte mas o revive funciona mas o erro persiste e as vezes o server cai por isso.

 

 

Erro*

 

[01/11/2013 16:40:44] [Error - Action Interface]
[01/11/2013 16:40:44] data/actions/scripts/revive.lua:onUse
[01/11/2013 16:40:44] Description:
[01/11/2013 16:40:44] data/actions/scripts/revive.lua:32: attempt to call global 'onPokeHealthChange' (a nil value)
[01/11/2013 16:40:44] stack traceback:
[01/11/2013 16:40:44] data/actions/scripts/revive.lua:32: in function <data/actions/scripts/revive.lua:1>
Script do meu revive.lua*
function onUse(cid, item, frompos, item2, topos)
if getPlayerStorageValue(cid, 990) >= 1 then
doPlayerSendCancel(cid, "You can't use revive during gym battles.")
return true
end
if getPlayerStorageValue(cid, 52481) >= 1 then
return doPlayerSendCancel(cid, "You can't do that while a duel.") --alterado v1.6
end
--
if item2.itemid <= 0 or not isPokeball(item2.itemid) then
doPlayerSendCancel(cid, "Please, use revive only on pokeballs.")
return true
end
for a, b in pairs (pokeballs) do
if item2.itemid == b.on or item2.itemid == b.off then --edited deixei igual ao do PXG
doTransformItem(item2.uid, b.on)
doSetItemAttribute(item2.uid, "hp", 1)
for c = 1, 15 do
local str = "move"..c
setCD(item2.uid, str, 0)
end
setCD(item2.uid, "control", 0)
setCD(item2.uid, "blink", 0) --alterado v1.6
doSendMagicEffect(getThingPos(cid), 13)
doRemoveItem(item.uid, 1)
doCureBallStatus(item2.uid, "all")
cleanBuffs2(item2.uid) --alterado v1.5
if useOTClient then
onPokeHealthChange(cid) --alterei aki
end
return true
end
end
return true
end
Agora a duvida da medicine, a medicine está adicionada certinho mas ela nao cura os status negativo do pokemon apenas faz o efeito que usou mas nao cura os status. ai segue o script da medicine.lua
function onUse(cid, item, frompos, item2, topos) --alterado v1.8 \/ ajeitado!
if not isSummon(item2.uid) then return doPlayerSendCancel(cid, "This potion can only be used on pokémons.") end
if getCreatureMaster(item2.uid) ~= cid then return doPlayerSendCancel(cid, "You can only use it in your own pokemon.") end
if getPlayerStorageValue(cid, 52481) >= 1 then return doPlayerSendCancel(cid, "You can't do that while a duel.") end
local pokeball = getPlayerSlotItem(cid, 8)
doCureBallStatus(pokeball.uid, "all")
doCureStatus(item2.uid, "all", false)
if (getCreatureCondition(item2.uid, CONDITION_PARALYZE) == true) then
doRemoveCondition(item2.uid, CONDITION_PARALYZE)
end
if getCreatureSpeed(item2.uid) < getSpeed(item2.uid) then
doRegainSpeed(item2.uid)
end
doSendMagicEffect(getThingPos(item2.uid), 14)
doRemoveItem(item.uid, 1)
return true
end
zipter98Z
01 de novembro de 2013 às 16:59

Tente substituir seu revive.lua e seu medicine.lua por estes meus. Caso não funcione, suponho que o erro seja, na verdade, em outro arquivo.

Revive:

 

function onUse(cid, item, frompos, item2, topos)

if getPlayerStorageValue(cid, 990) >= 1 then
doPlayerSendCancel(cid, "Você não pode fazer isso durante batalhas de GYM.")
return true
end
if getPlayerStorageValue(cid, 52481) >= 1 then
return doPlayerSendCancel(cid, "Você não pode fazer isso durante um duelo.") --alterado v1.6
end
--
if item2.itemid <= 0 or not isPokeball(item2.itemid) then
doPlayerSendCancel(cid, "Por favor, use Revive apenas em pokeballs.")
return true
end
for a, b in pairs (pokeballs) do
if item2.itemid == b.on or item2.itemid == b.off then --edited deixei igual ao do PXG
doTransformItem(item2.uid, b.on)
doSetItemAttribute(item2.uid, "hp", 1)
for c = 1, 15 do
local str = "move"..c
setCD(item2.uid, str, 0)
end
setCD(item2.uid, "control", 0)
setCD(item2.uid, "blink", 0) --alterado v1.6
doSendMagicEffect(getThingPos(cid), 13)
doRemoveItem(item.uid, 1)
doCureBallStatus(item2.uid, "all")
cleanBuffs2(item2.uid) --alterado v1.5
return true
end
end
return true
end

Medicine:
function onUse(cid, item, frompos, item2, topos) 
 
if not isSummon(item2.uid) then return doPlayerSendCancel(cid, "Medicine só pode ser usado em pokémons.") end
        if getPlayerStorageValue(cid, 990) >= 1 then
doPlayerSendCancel(cid, "Você não pode usar medicine em batalhas de gym.")
return true
end
if getCreatureMaster(item2.uid) ~= cid then return doPlayerSendCancel(cid, "Você só pode usar medicine em seu próprio pokémon.") end
if getPlayerStorageValue(cid, 52481) >= 1 then return doPlayerSendCancel(cid, "Você não pode usar medicine durante um duel.") end
 
local pokeball = getPlayerSlotItem(cid, 8)
    doCureBallStatus(pokeball.uid, "all")
    doCureStatus(item2.uid, "all", false)         
    if (getCreatureCondition(item2.uid, CONDITION_PARALYZE) == true) then
  doRemoveCondition(item2.uid, CONDITION_PARALYZE)
    end
    if getCreatureSpeed(item2.uid) < getSpeed(item2.uid) then     
       doRegainSpeed(item2.uid)
    end                                                               
doSendMagicEffect(getThingPos(item2.uid), 14)
doRemoveItem(item.uid, 1)
 
return true
end

Editado Novembro 1 por zipter98

GabrieltxuG
08 de novembro de 2013 às 09:42

Tópico movido para a seção de dúvidas e pedidos resolvidos.

4 anos depois...
StigalS
21 de abril de 2018 às 03:11
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.