Ir para conteúdo

Featured Replies

Postado

alguns pokemons estão conseguindo receber revives mesmo fora da pokebola, não creio q o problema seja no script de revive mas:

 

Spoiler

local storage = 121212 --storage da quest

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

if getPlayerStorageValue(cid, storage) == 0 then
   doPlayerSendCancel(cid, "You already have used the limit of revives for this quest.")
   return true
elseif getPlayerStorageValue(cid, 990) >= 1 then
   doPlayerSendCancel(cid, "You can't use revive during gym battles.")
   return true
elseif getPlayerStorageValue(cid, 321321) >= 1 or getPlayerStorageValue(cid, 3213211) >= 1 then
   doPlayerSendCancel(cid, "You can't use revive during PVP")
   return true
elseif isInDuel(cid) then
   doPlayerSendCancel(cid, "You can't do that while a duel.") --alterado v1.6
   return true
elseif isPlayer(item2.uid) then
   doPlayerSendCancel(cid, "Please, use revive only on pokeballs.")
   return true
end
for a, b in pairs (pokeballs) do
    if not item2.itemid == b.on or not item2.itemid == b.off then
           doPlayerSendCancel(cid, "Please, use revive only on pokeballs.")
           return true
    end
end

local pokeball = getPlayerSlotItem(cid, 8)
for a, b in pairs (pokeballs) do
    if item2.itemid == b.on or item2.itemid == b.off or (item2.itemid == b.use and #getCreatureSummons(cid) < 1 and not isRiderOrFlyOrSurf(cid)) then --edited deixei igual ao do PXG
           doTransformItem(item2.uid, b.on)
           doSetItemAttribute(item2.uid, "hpToDraw", 0)
           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(getPlayerSlotItem(cid, 8).uid, "all")
           doCureStatus(cid, "all", true)
           cleanBuffs2(item2.uid) --alterado v1.5
           
           if getPlayerStorageValue(cid, storage) > 0 then
                  setPlayerStorageValue(cid, storage, getPlayerStorageValue(cid, storage)-1)
           end
           doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, getBallMaxHealth(cid, item2).."|"..getBallMaxHealth(cid, item2))
           return true
    end
end
return true
end

 

alguem sabe o motivo?

 

Resolvido por marcot

Ir para solução
  • Respostas 8
  • Visualizações 335
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Só uma ultima tentativa, tenta trocar pra: if (item2.itemid == b.on and #getCreatureSummons(cid) < 1) or (item2.itemid == b.off and #getCreatureSummons(cid) < 1) or (item2.itemid == b.u

Posted Images

Postado

@Danxi

Na linha 30 tente mudar:

if item2.itemid == b.on or item2.itemid == b.off or (item2.itemid == b.use and #getCreatureSummons(cid) < 1 and not isRiderOrFlyOrSurf(cid)) then

Por 

if (item2.itemid == b.on or item2.itemid == b.off) and (item2.itemid == b.use and #getCreatureSummons(cid) < 1 and not isRiderOrFlyOrSurf(cid)) then

E teste para ver se funciona.

Dei uma olhada apressada mas estranhei muito esse if, porque quando você tem or e um deles é verdadeiro a expressão se torna verdadeira, então só de cumprir uma das duas primeiras condições já anula todo o restante.

Editado por marcot (veja o histórico de edições)

Postado
  • Autor
2 minutos atrás, marcot disse:

Na linha 30 tente mudar:


if item2.itemid == b.on or item2.itemid == b.off or (item2.itemid == b.use and #getCreatureSummons(cid) < 1 and not isRiderOrFlyOrSurf(cid)) then

Por 


if (item2.itemid == b.on or item2.itemid == b.off) and (item2.itemid == b.use and #getCreatureSummons(cid) < 1 and not isRiderOrFlyOrSurf(cid)) then

Pra ver se funciona

 

cara, agora o revive parou de funcionar de todos os jeitos, o que esse and significa? desculpa a pergunta mas eu gosto de aprender não só ter as coisas na mão kkkkk

Postado
10 minutos atrás, Danxi disse:

 

cara, agora o revive parou de funcionar de todos os jeitos, o que esse and significa? desculpa a pergunta mas eu gosto de aprender não só ter as coisas na mão kkkkk

IF é uma condicional que só executa seu bloco quando a expressão dele tem TRUE (Verdadeiro) como resultado. Expressões deste tipo podem ser chamadas expressões booleanas e podem ter resultados TRUE ou FALSE. 

Essas expressões são feitas com operadores de negação (not em LUA, em C++/Java), ou (or em LUA, || em C++/Java) e e (and em LUA, && em C++).

As expressões seguem as tabelas abaixo:

 

Resultado de imagem para tabela not

 

Note que os exemplos acima são exemplos reais de aplicação em circuitos eletrônicos (os desenhos acima das tabelas são as representações dos componentes que usamos), ignore NOR e NAND.

 

Ou seja, no exemplo acima do seu script, temos:

if item2.itemid == b.on or item2.itemid == b.off or (item2.itemid == b.use and #getCreatureSummons(cid) < 1 and not isRiderOrFlyOrSurf(cid)) then

IF será executado caso (item2.itemid == b.on) ou  (item2.itemid == b.off) ou (item2.itemid == b.use E quantidadeDeSumons < 1 e (não(estarNoRideSurfRide))

Por isso estranhei, porque ele só verifica se você está sem poke na parte da direita e-e

Editado por marcot (veja o histórico de edições)

Postado
  • Autor
3 minutos atrás, marcot disse:

IF é uma condicional que só executa seu bloco quando a expressão dele tem TRUE (Verdadeiro) como resultado. Expressões deste tipo podem ser chamadas expressões booleanas e podem ter resultados TRUE ou FALSE. 

Essas expressões são feitas com operadores de negação (not em LUA, em C++/Java), ou (or em LUA, || em C++/Java) e e (and em LUA, && em C++).

As expressões seguem as tabelas abaixo:

 

Resultado de imagem para tabela not

 

Ou seja, no exemplo acima do seu script, temos:


if item2.itemid == b.on or item2.itemid == b.off or (item2.itemid == b.use and #getCreatureSummons(cid) < 1 and not isRiderOrFlyOrSurf(cid)) then

IF será executado caso (item2.itemid == b.on) ou  (item2.itemid == b.off) ou (item2.itemid == b.use E quantidadeDeSumons < 1 e (não(estarNoRideSurfRide))

Por isso estranhei, porque ele só verifica se você está sem poke na parte da direita e-e

 

 

não entendi nada cara!!! mas eu queria muito aprender isso tudo, se vc aceitar um aluno prometo me dedicar :p

 

--edit

 

cara sobre o script, o que é mais estranho:

 

apenas pokémons da terceira geração tem esse erro, o resto segue normal, e aí quando eu tento tirar o pokémon após esse erro do revive acontece o seguinte:

Spoiler

image.thumb.png.ec2fa2a942bb88ac351ca103feed8be3.png

 

ele duplica. entendeu? eu acho que não tem nada a ver com esse script do revive...

 

Editado por Danxi (veja o histórico de edições)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo