Postado Janeiro 11, 2018 7 anos 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?
Postado Janeiro 11, 2018 7 anos @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 Janeiro 11, 2018 7 anos por marcot (veja o histórico de edições)
Postado Janeiro 11, 2018 7 anos 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 Janeiro 11, 2018 7 anos 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: 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 O 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 Janeiro 11, 2018 7 anos por marcot (veja o histórico de edições)
Postado Janeiro 11, 2018 7 anos 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: 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 O 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 --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 ele duplica. entendeu? eu acho que não tem nada a ver com esse script do revive... Editado Janeiro 11, 2018 7 anos 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.