WE
suporte scripts

erro ao chamar pokemon de volta

Por wevertonvrb, 14 de jan. de 2017 em Archived

erro sleep
erro chamar
de volta
25
3.4k
PoccnnP
19 de janeiro de 2017 às 13:09

Vamos recapitular,  pois é difícil entender o que tu quer dizer.

 

34 minutos atrás, wevertonvrb disse:

quando o summoner de um player esta com (paralize,stun) no meu caso quando esta com sleep (dormindo).

 

Então a função sleep serve apenas para paralisar o monstro?

 

34 minutos atrás, wevertonvrb disse:

quando este status esta ativado no sumoner e ele é morto, ou se dar um \r nele e o apaga, quando acontece qualquer coisa que ele deixa de existir gera este erro de criatura não encontrada

 

Possivelmente a remoção do monstro está sendo executada antes desse script, por isso gera o erro de não ter encontrado a criatura. 

 

O que eu não estou entendendo e o do porque que esse erro está sendo chamado por spell.

Essa spell está associada ao monstro ou ao player?

Se for ao monstro, e não existindo mais o monstro, logo chegamos a conclusão de que é um evento inerente ao monstro que não o encontrou mais. 

 

Posta o script dessa spell.

wevertonvrbW
19 de janeiro de 2017 às 13:35
50 minutos atrás, Poccnn disse:

Vamos recapitular,  pois é difícil entender o que tu quer dizer.

 

 

Então a função sleep serve apenas para paralisar o monstro?

 

 

Possivelmente a remoção do monstro está sendo executada antes desse script, por isso gera o erro de não ter encontrado a criatura. 

 

O que eu não estou entendendo e o do porque que esse erro está sendo chamado por spell.

Essa spell está associada ao monstro ou ao player?

Se for ao monstro, e não existindo mais o monstro, logo chegamos a conclusão de que é um evento inerente ao monstro que não o encontrou mais. 

 

Posta o script dessa spell.

primeiramente sim, essa função paralisa o monstro, ele fica incapaz de se mover ou conjurar spells é um tipo de (stop) pois o paralise permite spell e  movimento embora lento e o sleep impede tanto o movimento quanto spell

 

o erro esta associado não a uma mas sim a varias spells, as spells equivale a paralize rune são elas que colocam o status sleep nos monstros

postarei 2 das spells abaixo

 

Spell 1

 

Spoiler

elseif spell == "Yawn" then

local ret = {}

ret.id = target

ret.cd = math.random(6, 9)

ret.check = getPlayerStorageValue(target, conds["Sleep"])

ret.first = true

ret.cond = "Sleep"

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 11)

    addEvent(doMoveDano2, 1500, cid, target, NORMALDAMAGE, 0, 0, ret, spell)

spell2

Spoiler

elseif spell == "Hypnosis" then

local ret = {}

ret.id = target

ret.cd = math.random(6, 9)

ret.check = getPlayerStorageValue(target, conds["Sleep"])

ret.first = true                                                

ret.cond = "Sleep"

   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 24)

   addEvent(doMoveDano2, 150, cid, target, PSYCHICDAMAGE, 0, 0, ret, spell)

e como o doMoveDano2 é citado apesar de n ter erro relacionado vou posta-lo abaixo

 

doMoveDano2

Spoiler

function doMoveDano2(cid, pid, element, min, max, ret, spell)

if isCreature(pid) and isCreature(cid) and cid ~= pid then

   if isNpcSummon(pid) and getCreatureTarget(pid) ~= cid then

      return true                             --alterado v1.6

   end

   if ehNPC(pid) then return true end

   ---

   local canAtk = true     --alterado v1.6

   if getPlayerStorageValue(pid, 21099) >= 1 then

      doSendMagicEffect(getThingPosWithDebug(pid), 135)

      doSendAnimatedText(getThingPosWithDebug(pid), "REFLECT", COLOR_GRASS)

      addEvent(docastspell, 100, pid, spell)

      if getCreatureName(pid) == "Wobbuffet" or getCreatureName(pid) == "Reflector Wobbuffet" or getCreatureName(pid) == "Wowofet" then

         doRemoveCondition(pid, CONDITION_OUTFIT)    

      end

      canAtk = false

      setPlayerStorageValue(pid, 21099, -1)

      setPlayerStorageValue(pid, 21100, 1)

      setPlayerStorageValue(pid, 21101, cid)

      setPlayerStorageValue(pid, 21103, getTableMove(cid, getPlayerStorageValue(cid, 21102)).f)

   end

   ---   

   if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

   if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

      if isSummon(cid) and (ehMonstro(pid) or (isSummon(pid) and canAttackOther(cid, pid) == "Can") or (isPlayer(pid) and canAttackOther(cid, pid) == "Can" and #getCreatureSummons(pid) <= 0)) and pid ~= cid then

         if canAtk then     --alterado v1.6

            if ret and ret.cond then

               ret.id = pid

               ret.check = getPlayerStorageValue(pid, conds[ret.cond])

               doCondition2(ret)

            end

            if spell == "Selfdestruct" then

               if getPlayerStorageValue(pid, 9658783) <= 0 then

                  doSendAnimatedText(getThingPosWithDebug(pid), "-"..max.."", COLOR_NORMAL)

                  doCreatureAddHealth(pid, -max)    --alterado v1.6

               end

            else

               

               doTargetCombatHealth(cid, pid, element, -(math.abs(min / 2)), -(math.abs(max / 2)), 255)

            end

         end

      elseif ehMonstro(cid) and (isSummon(pid) or (isPlayer(pid) and #getCreatureSummons(pid) <= 0)) and pid ~= cid then

         if canAtk then    --alterado v1.6

            if ret and ret.cond then

               ret.id = pid

               ret.check = getPlayerStorageValue(pid, conds[ret.cond])

               doCondition2(ret)

            end

            if spell == "Selfdestruct" then

               if getPlayerStorageValue(pid, 9658783) <= 0 then

                  doSendAnimatedText(getThingPosWithDebug(pid), "-"..max.."", COLOR_NORMAL)

                  doCreatureAddHealth(pid, -max)    --alterado v1.6

               end

            else

               

               doTargetCombatHealth(cid, pid, element, -(math.abs(min / 2)), -(math.abs(max / 2)), 255)

            end

         end

      elseif isPlayer(cid) and ehMonstro(pid) and pid ~= cid then

         if canAtk then    --alterado v1.6

            if ret and ret.cond then

               ret.id = pid

               ret.check = getPlayerStorageValue(pid, conds[ret.cond])

               doCondition2(ret)

            end

            if spell == "Selfdestruct" then

               if getPlayerStorageValue(pid, 9658783) <= 0 then

                  doSendAnimatedText(getThingPosWithDebug(pid), "-"..max.."", COLOR_NORMAL)

                  doCreatureAddHealth(pid, -max)    --alterado v1.6

               end

            else

               

               doTargetCombatHealth(cid, pid, element, -(math.abs(min / 2)), -(math.abs(max / 2)), 255)

            end

         end

      end

end

end

 

Editado Janeiro 19 por wevertonvrb

PoccnnP
19 de janeiro de 2017 às 15:35

Vamos a uma questão: para "ativar" o sleep do monstro, se faz usando uma spell pelo player? Ou ele é automático? 

DrakopoulosD
19 de janeiro de 2017 às 20:27
17 horas atrás, wevertonvrb disse:

sim esta vou postar novamente

 

Coloque esse if..

if not isCreature(cid) then return true end

depois de..

local stg = conds["Sleep"]

ficando

local stg = conds["Sleep"]    if not isCreature(cid) then return true end    if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then        setPlayerStorageValue(cid, stg, cd)       return true     end

 

wevertonvrbW
19 de janeiro de 2017 às 21:21
6 horas atrás, Poccnn disse:

Vamos a uma questão: para "ativar" o sleep do monstro, se faz usando uma spell pelo player? Ou ele é automático? 

o player usa uma spell porem quem solta uma spell é o summon, porem no caso aqui quem esta soltando a spell é um monstro selvagem

1 hora atrás, Drakopoulos disse:

 

Coloque esse if..

if not isCreature(cid) then return true end

depois de..

local stg = conds["Sleep"]

ficando

local stg = conds["Sleep"]    if not isCreature(cid) then return true end    if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then        setPlayerStorageValue(cid, stg, cd)       return true     end

 

continuou com o mesmo erro

 

sera que tem como fazer algo mais ou menos assim?

if notHaveMonster then return true end

 

Editado Janeiro 19 por wevertonvrb

PoccnnP
20 de janeiro de 2017 às 09:05
11 horas atrás, wevertonvrb disse:

o player usa uma spell porem quem solta uma spell é o summon, porem no caso aqui quem esta soltando a spell é um monstro selvagem

Recapitulando:

O player invoca uma magia e essa magia ativa o "sleep" do monstro.

 

Portanto, essa magia cria um loop no monstro até que ele saia de "sleep".

 

Se for isso, logo uma mudança no loop do script resolveria o problema. 

Manda o script dessa magia que deixa o monstro em "sleep".

wevertonvrbW
20 de janeiro de 2017 às 22:35
14 horas atrás, Poccnn disse:

Recapitulando:

O player invoca uma magia e essa magia ativa o "sleep" do monstro.

 

Portanto, essa magia cria um loop no monstro até que ele saia de "sleep".

 

Se for isso, logo uma mudança no loop do script resolveria o problema. 

Manda o script dessa magia que deixa o monstro em "sleep".

corrigindo o player usa uma talkaction que faz com que seu summon solte uma magia.

exemplo: o player usa a talkaction (M1) e o seu summon solta a magia exevo gran mas vis

exemplo 2: o player usa a talkaction (M2) e seu summon solta a magia exura gran mas res

 

no caso aqui o summon usa por exemplo a magia sing e deixa o status sleep

o problema acontece quando o monstro deixa de existir

 

só esclarecendo esse erro acontece tanto com summon quanto monstros normais 

se qualquer tipo de monstro sendo summon ou não estiver com este status deixar de existir (morrer) ou ser apagado gera o erro

 

 

ja postei 2 spells em um post anterior o erro acredito n estar nos spells mas sim no sleep2

pois os pokemons selvagens geram o mesmo erro porem o erro não sita nenhuma spell

Editado Janeiro 20 por wevertonvrb

wevertonvrbW
21 de janeiro de 2017 às 12:34

resolvido

PoccnnP
22 de janeiro de 2017 às 09:20

Diga como tu conseguiu resolver para que outros que tenham o mesmo problema possam resolver também. 

 

 

Editado Janeiro 22 por Poccnn

PoccnnP
25 de janeiro de 2017 às 07:45

Caro membro, seu tópico foi movido de Otserv > Suporte Otserv para Soluções > Recepção Xtibia > Lixeira Pública.