Near Stylez 0 Postado Setembro 29, 2015 Share Postado Setembro 29, 2015 (editado) Olá, espero que esten bem. Queria saber se há um scrip ou uma solução para meu problema que é o seguinte: Ao Stunear um pokemon ou dormir, o pokemon dormido ou stuneado segue lançando seus spells estes não causam dano algum mas se gasta o CD, o que quero ver se me podem ajudar é que quando o pokemon este dormido ou stuneado não possa lançar ningun tipo de spells assim não se perderia o cd e não tendria que esperar que carregue de novo. Uma imagem para que possam entender melhor. http://postimg.org/image/qjcmj3wad/Pode-se apreciar que o skill se lanço mais não salio nem causo dano algum porque o pokemon estava stuneado. Editado Setembro 30, 2015 por Near Stylez Link para o comentário https://xtibia.com/forum/topic/237016-encerrado-pokemon-dormido-e-segue-atacando/ Compartilhar em outros sites More sharing options...
joshua8822 2 Postado Setembro 30, 2015 Share Postado Setembro 30, 2015 Qual e seu talkactions/scripts/move1.lua ? Link para o comentário https://xtibia.com/forum/topic/237016-encerrado-pokemon-dormido-e-segue-atacando/#findComment-1670533 Compartilhar em outros sites More sharing options...
Near Stylez 0 Postado Outubro 1, 2015 Autor Share Postado Outubro 1, 2015 (editado) Qual e seu talkactions/scripts/move1.lua ? Move1.lua local msgs = {"use ", ""} function doAlertReady(cid, id, movename, n, cd) if not isCreature(cid) then return true end local myball = getPlayerSlotItem(cid, 8) if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") is ready!") return true end local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid) if not p or #p <= 0 then return true end for a = 1, #p do if getItemAttribute(p[a], cd) == "cd:"..id.."" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") is ready!") return true end end end function onSay(cid, words, param, channel) if param ~= "" then return true end if string.len(words) > 3 then return true end if #getCreatureSummons(cid) == 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.") return 0 end --alterado v1.5 local mypoke = getCreatureSummons(cid)[1] if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end if getCreatureName(mypoke) == "Evolution" then return true end if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then name = getPlayerStorageValue(mypoke, 1010) --edited else name = getCreatureName(mypoke) end --local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke) local it = string.sub(words, 2, 3) local move = movestable[name].move1 if getPlayerStorageValue(mypoke, 212123) >= 1 then cdzin = "cm_move"..it.."" else cdzin = "move"..it.."" --alterado v1.5 end if it == "2" then move = movestable[name].move2 elseif it == "3" then move = movestable[name].move3 elseif it == "4" then move = movestable[name].move4 elseif it == "5" then move = movestable[name].move5 elseif it == "6" then move = movestable[name].move6 elseif it == "7" then move = movestable[name].move7 elseif it == "8" then move = movestable[name].move8 elseif it == "9" then move = movestable[name].move9 elseif it == "10" then move = movestable[name].move10 elseif it == "11" then move = movestable[name].move11 elseif it == "12" then move = movestable[name].move12 elseif it == "13" then move = movestable[name].move13 end if not move then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end if getPlayerLevel(cid) < move.level then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need be atleast level "..move.level.." to use this move.") return true end if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." seconds to use "..move.name.." again.") return true end if getTileInfo(getThingPos(mypoke)).protection then doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.") return true end if getPlayerStorageValue(mypoke, 3894) >= 1 then return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v1.3 end --alterado v1.6 if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!") return true end --alterado v1.7 \/\/\/ if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) then local target = getCreatureTarget(cid) if math.random(1, 100) <= passivesChances["Evasion"][getCreatureName(target)] then if isCreature(getMasterTarget(target)) then --alterado v1.6 doSendMagicEffect(getThingPos(target), 211) doSendAnimatedText(getThingPos(target), "TOO BAD", 215) doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false) doSendMagicEffect(getThingPos(target), 211) doFaceCreature(target, getThingPos(mypoke)) return true --alterado v1.6 end end end if move.target == 1 then if not isCreature(getCreatureTarget(cid)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don\'t have any targets.") return 0 end if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then return 0 end if getCreatureHealth(getCreatureTarget(cid)) <= 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.") return 0 end if not isCreature(getCreatureSummons(cid)[1]) then return true end if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.") return 0 end if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then return 0 end end local newid = 0 if isSleeping(mypoke) or isSilence(mypoke) then --alterado v1.5 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.") return 0 else newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd) end doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY) local summons = getCreatureSummons(cid) --alterado v1.6 addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin) for i = 2, #summons do if isCreature(summons) and getPlayerStorageValue(cid, 637501) >= 1 then docastspell(summons, move.name) --alterado v1.6 end end docastspell(mypoke, move.name) doCreatureAddCondition(cid, playerexhaust) if useKpdoDlls then doUpdateCooldowns(cid) end return 0 end Editado Outubro 1, 2015 por Near Stylez Link para o comentário https://xtibia.com/forum/topic/237016-encerrado-pokemon-dormido-e-segue-atacando/#findComment-1670671 Compartilhar em outros sites More sharing options...
joshua8822 2 Postado Outubro 1, 2015 Share Postado Outubro 1, 2015 Move1.lua local msgs = {"use ", ""} function doAlertReady(cid, id, movename, n, cd) if not isCreature(cid) then return true end local myball = getPlayerSlotItem(cid, 8) if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") is ready!") return true end local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid) if not p or #p <= 0 then return true end for a = 1, #p do if getItemAttribute(p[a], cd) == "cd:"..id.."" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") is ready!") return true end end end function onSay(cid, words, param, channel) if param ~= "" then return true end if string.len(words) > 3 then return true end if #getCreatureSummons(cid) == 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.") return 0 end --alterado v1.5 local mypoke = getCreatureSummons(cid)[1] if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end if getCreatureName(mypoke) == "Evolution" then return true end if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then name = getPlayerStorageValue(mypoke, 1010) --edited else name = getCreatureName(mypoke) end --local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke) local it = string.sub(words, 2, 3) local move = movestable[name].move1 if getPlayerStorageValue(mypoke, 212123) >= 1 then cdzin = "cm_move"..it.."" else cdzin = "move"..it.."" --alterado v1.5 end if it == "2" then move = movestable[name].move2 elseif it == "3" then move = movestable[name].move3 elseif it == "4" then move = movestable[name].move4 elseif it == "5" then move = movestable[name].move5 elseif it == "6" then move = movestable[name].move6 elseif it == "7" then move = movestable[name].move7 elseif it == "8" then move = movestable[name].move8 elseif it == "9" then move = movestable[name].move9 elseif it == "10" then move = movestable[name].move10 elseif it == "11" then move = movestable[name].move11 elseif it == "12" then move = movestable[name].move12 elseif it == "13" then move = movestable[name].move13 end if not move then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end if getPlayerLevel(cid) < move.level then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need be atleast level "..move.level.." to use this move.") return true end if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." seconds to use "..move.name.." again.") return true end if getTileInfo(getThingPos(mypoke)).protection then doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.") return true end if getPlayerStorageValue(mypoke, 3894) >= 1 then return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v1.3 end --alterado v1.6 if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!") return true end --alterado v1.7 \/\/\/ if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) then local target = getCreatureTarget(cid) if math.random(1, 100) <= passivesChances["Evasion"][getCreatureName(target)] then if isCreature(getMasterTarget(target)) then --alterado v1.6 doSendMagicEffect(getThingPos(target), 211) doSendAnimatedText(getThingPos(target), "TOO BAD", 215) doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false) doSendMagicEffect(getThingPos(target), 211) doFaceCreature(target, getThingPos(mypoke)) return true --alterado v1.6 end end end if move.target == 1 then if not isCreature(getCreatureTarget(cid)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don\'t have any targets.") return 0 end if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then return 0 end if getCreatureHealth(getCreatureTarget(cid)) <= 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.") return 0 end if not isCreature(getCreatureSummons(cid)[1]) then return true end if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.") return 0 end if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then return 0 end end local newid = 0 if isSleeping(mypoke) or isSilence(mypoke) then --alterado v1.5 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.") return 0 else newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd) end doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY) local summons = getCreatureSummons(cid) --alterado v1.6 addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin) for i = 2, #summons do if isCreature(summons) and getPlayerStorageValue(cid, 637501) >= 1 then docastspell(summons, move.name) --alterado v1.6 end end docastspell(mypoke, move.name) doCreatureAddCondition(cid, playerexhaust) if useKpdoDlls then doUpdateCooldowns(cid) end return 0 end ¿Qual e seu newStatusSyst? data/lib/newStatusSyst.lua Ou qual e seu base? Link para o comentário https://xtibia.com/forum/topic/237016-encerrado-pokemon-dormido-e-segue-atacando/#findComment-1670712 Compartilhar em outros sites More sharing options...
Near Stylez 0 Postado Outubro 2, 2015 Autor Share Postado Outubro 2, 2015 ¿Qual e seu newStatusSyst? data/lib/newStatusSyst.lua Ou qual e seu base? Tem conds = { ["Slow"] = 3890, ["Confusion"] = 3891, ["Burn"] = 3892, ["Poison"] = 3893, ["Fear"] = 3894, ["Stun"] = 3895, ["Paralyze"] = 3896, --alterado v2.6 \/ peguem o script todo! ["Leech"] = 3897, ["Buff1"] = 3898, ["Buff2"] = 3899, ["Buff3"] = 3900, ["Miss"] = 32659, ["Silence"] = 32698, ["Sleep"] = 98271, } injuries2 = { [1] = {n = "slow", m = 3890}, [2] = {n = "confuse", m = 3891}, [3] = {n = "burn", m = 3892}, [4] = {n = "poison", m = 3893}, [5] = {n = "fear", m = 3894}, [6] = {n = "stun", m = 3895}, [7] = {n = "paralyze", m = 3896}, [8] = {n = "leech", m = 3897}, [9] = {n = "Buff1", m = 3898}, [10] = {n = "Buff2", m = 3899}, [11] = {n = "Buff3", m = 3900}, [12] = {n = "miss", m = 32659}, [13] = {n = "silence", m = 32698}, [14] = {n = "sleep", m = 98271}, } Buffs = { [1] = {"Buff1", 3898}, [2] = {"Buff2", 3899}, [3] = {"Buff3", 3900}, } paralizeArea2 = createConditionObject(CONDITION_PARALYZE) setConditionParam(paralizeArea2, CONDITION_PARAM_TICKS, 50000) setConditionFormula(paralizeArea2, -0.63, -0.63, -0.63, -0.63) local roardirections = { [NORTH] = {SOUTH}, [sOUTH] = {NORTH}, [WEST] = {EAST}, --edited sistema de roar [EAST] = {WEST}} function doSendSleepEffect(cid) if not isCreature(cid) or not isSleeping(cid) then return true end doSendMagicEffect(getThingPos(cid), 32) addEvent(doSendSleepEffect, 1500, cid) end local outFurys = { ["Shiny Charizard"] = {outFury = 1073}, ["Shiny Blastoise"] = {outFury = 1074}, } local outImune = { ["Camouflage"] = 1445, ["Acid Armor"] = 1453, ["Iron Defense"] = 1401, ["Minimize"] = 1455, ["Future Sight"] = 1446, } local function transBack(cid) if isCreature(cid) then if getPlayerStorageValue(cid, 974848) >= 1 then setPlayerStorageValue(cid, 974848, 0) doRemoveCondition(cid, CONDITION_OUTFIT) end end end function doCondition2(ret) -- function doMiss2(cid, cd, eff, check, spell) local stg = conds["Miss"] if not isCreature(cid) then return true end --is creature? if getPlayerStorageValue(cid, 21100) >= 1 and getPlayerStorageValue(cid, stg) <= -1 then return true end --alterado v2.6 reflect if not canDoMiss(cid, spell) then return true end if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then setPlayerStorageValue(cid, stg, cd) --allterado v2.8 return true end if not check and getPlayerStorageValue(cid, stg) >= 1 then setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1) else setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd) end local a = getPlayerStorageValue(cid, stg) if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then local item = getPlayerSlotItem(getCreatureMaster(cid), 8) doItemSetAttribute(item.uid, "miss", a) doItemSetAttribute(item.uid, "missEff", eff) doItemSetAttribute(item.uid, "missSpell", spell) end if a <= -1 then setPlayerStorageValue(cid, stg, -1) return true end doSendMagicEffect(getThingPos(cid), eff) addEvent(doMiss2, 1000, cid, -1, eff, a, spell) end function doSilence2(cid, cd, eff, check) local stg = conds["Silence"] if not isCreature(cid) then return true end --is creature? if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then setPlayerStorageValue(cid, stg, cd) --allterado v2.8 return true end if not check and getPlayerStorageValue(cid, stg) >= 1 then setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1) else setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd) end local a = getPlayerStorageValue(cid, stg) if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then local item = getPlayerSlotItem(getCreatureMaster(cid), 8) doItemSetAttribute(item.uid, "silence", a) doItemSetAttribute(item.uid, "silenceEff", eff) end if a <= -1 then setPlayerStorageValue(cid, stg, -1) return true end doSendMagicEffect(getThingPos(cid), eff) addEvent(doSilence2, 1000, cid, -1, eff, a) end function doSlow2(cid, cd, eff, check, first) local stg = conds["Slow"] if not isCreature(cid) then return true end --is creature? if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then setPlayerStorageValue(cid, stg, cd) --allterado v2.8 return true end if not check and getPlayerStorageValue(cid, stg) >= 1 then setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1) else setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd) end local a = getPlayerStorageValue(cid, stg) if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then local item = getPlayerSlotItem(getCreatureMaster(cid), 8) doItemSetAttribute(item.uid, "slow", a) doItemSetAttribute(item.uid, "slowEff", eff) end if a <= -1 then doRemoveCondition(cid, CONDITION_PARALYZE) if not isSleeping(cid) and not isParalyze(cid) then addEvent(doRegainSpeed, 50, cid) --alterado end setPlayerStorageValue(cid, stg, -1) return true end if first then doAddCondition(cid, paralizeArea2) end doSendMagicEffect(getThingPos(cid), eff) addEvent(doSlow2, 1000, cid, -1, eff, a) end function doConfusion2(cid, cd, check) local stg = conds["Confusion"] if not isCreature(cid) then return true end --is creature? if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then setPlayerStorageValue(cid, stg, cd) --allterado v2.8 return true end if not check and getPlayerStorageValue(cid, stg) >= 1 then setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1) else setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd) end local a = getPlayerStorageValue(cid, stg) if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then local item = getPlayerSlotItem(getCreatureMaster(cid), 8) doItemSetAttribute(item.uid, "confuse", a) end if a <= -1 then if getCreatureCondition(cid, CONDITION_PARALYZE) == true then doRemoveCondition(cid, CONDITION_PARALYZE) addEvent(doAddCondition, 10, cid, paralizeArea2) end if not isSleeping(cid) and not isParalyze(cid) then doRegainSpeed(cid) --alterado end setPlayerStorageValue(cid, stg, -1) return true end if math.random(1, 6) >= 4 then doSendMagicEffect(getThingPos(cid), 31) end local isTarget = isSummon(cid) and getCreatureTarget(getCreatureMaster(cid)) or getCreatureTarget(cid) if isCreature(isTarget) and not isSleeping(cid) and not isParalyze(cid) and getPlayerStorageValue(cid, 654878) <= 0 then --alterado v2.6 doChangeSpeed(cid, -getCreatureSpeed(cid)) doChangeSpeed(cid, 100) doPushCreature(cid, math.random(0, 3), 1, 0) --alterado v2.6 doChangeSpeed(cid, -100) end local pos = getThingPos(cid) addEvent(doSendMagicEffect, math.random(0, 450), pos, 31) addEvent(doConfusion2, 1000, cid, -1, a) end function doBurn2(cid, cd, check, damage) local stg = conds["Burn"] if not isCreature(cid) then return true end --is creature? if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then setPlayerStorageValue(cid, stg, cd) --allterado v2.8 return true end if not check and getPlayerStorageValue(cid, stg) >= 1 then setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1) else setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd) end local a = getPlayerStorageValue(cid, stg) if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then local item = getPlayerSlotItem(getCreatureMaster(cid), 8) doItemSetAttribute(item.uid, "burn", a) doItemSetAttribute(item.uid, "burndmg", damage) end if a <= -1 then setPlayerStorageValue(cid, stg, -1) return true end doCreatureAddHealth(cid, -damage, 15, COLOR_BURN) addEvent(doBurn2, 3500, cid, -1, a, damage) end function doPoison2(cid, cd, check, damage) local stg = conds["Poison"] if not isCreature(cid) then return true end --is creature? ---------- if isSummon(cid) or ehMonstro(cid) and pokes[getCreatureName(cid)] then --alterado v2.6 local type = pokes[getCreatureName(cid)].type local type2 = pokes[getCreatureName(cid)].type2 if isInArray({"poison", "steel"}, type) or isInArray({"poison", "steel"}, type2) then return true end end --------- if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then setPlayerStorageValue(cid, stg, cd) --allterado v2.8 return true end if not check and getPlayerStorageValue(cid, stg) >= 1 then setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1) else setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd) end local a = getPlayerStorageValue(cid, stg) if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then local item = getPlayerSlotItem(getCreatureMaster(cid), 8) doItemSetAttribute(item.uid, "poison", a) doItemSetAttribute(item.uid, "poisondmg", damage) end if a <= -1 or getCreatureHealth(cid) == 1 then setPlayerStorageValue(cid, stg, -1) return true end local dano = getCreatureHealth(cid)-damage <= 0 and getCreatureHealth(cid)-1 or damage doCreatureAddHealth(cid, -dano, 8, COLOR_GRASS) addEvent(doPoison2, 1500, cid, -1, a, damage) end function doFear2(cid, cd, check, skill) local stg = conds["Fear"] if not isCreature(cid) then return true end --is creature? if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then setPlayerStorageValue(cid, stg, cd) --allterado v2.8 return true end if not check and getPlayerStorageValue(cid, stg) >= 1 then setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1) else setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd) end local a = getPlayerStorageValue(cid, stg) if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then local item = getPlayerSlotItem(getCreatureMaster(cid), 8) doItemSetAttribute(item.uid, "fear", a) doItemSetAttribute(item.uid, "fearSkill", skill) end if a <= -1 then if getCreatureCondition(cid, CONDITION_PARALYZE) == true then doRemoveCondition(cid, CONDITION_PARALYZE) addEvent(doAddCondition, 10, cid, paralizeArea2) end if not isSleeping(cid) and not isParalyze(cid) then doRegainSpeed(cid) --alterado end setPlayerStorageValue(cid, stg, -1) return true end if skill == "Roar" then eff = 244 else --edited Roar eff = 139 end if math.random(1, 6) >= 4 then doSendMagicEffect(getThingPos(cid), eff) end local isTarget = isSummon(cid) and getCreatureTarget(getCreatureMaster(cid)) or getCreatureTarget(cid) if isCreature(isTarget) and not isSleeping(cid) and not isParalyze(cid) and getPlayerStorageValue(cid, 654878) <= 0 then --alterado v2.6 local dir = getCreatureDirectionToTarget(cid, isTarget) doChangeSpeed(cid, -getCreatureSpeed(cid)) doChangeSpeed(cid, 100) doPushCreature(cid, roardirections[dir][1], 1, 0) --alterado v2.6 doChangeSpeed(cid, -100) end local pos = getThingPos(cid) addEvent(doSendMagicEffect, math.random(0, 450), pos, eff) addEvent(doFear2, 1000, cid, -1, a, skill) end function doStun2(cid, cd, eff, check, spell) local stg = conds["Stun"] if not isCreature(cid) then return true end --is creature? if not canDoMiss(cid, spell) then return true end if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then setPlayerStorageValue(cid, stg, cd) --allterado v2.8 return true end if not check and getPlayerStorageValue(cid, stg) >= 1 then setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1) else setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd) end local a = getPlayerStorageValue(cid, stg) if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then local item = getPlayerSlotItem(getCreatureMaster(cid), 8) doItemSetAttribute(item.uid, "stun", a) doItemSetAttribute(item.uid, "stunEff", eff) doItemSetAttribute(item.uid, "stunSpell", spell) end if a <= -1 then doRemoveCondition(cid, CONDITION_PARALYZE) if not isSleeping(cid) and not isParalyze(cid) then addEvent(doRegainSpeed, 50, cid) --alterado end setPlayerStorageValue(cid, stg, -1) return true end if getCreatureCondition(cid, CONDITION_PARALYZE) == false then doAddCondition(cid, paralizeArea2) end doSendMagicEffect(getThingPos(cid), eff) addEvent(doStun2, 1000, cid, -1, eff, a, spell) end function doParalyze2(cid, cd, eff, check, first) local stg = conds["Paralyze"] if not isCreature(cid) then return true end --is creature? if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then setPlayerStorageValue(cid, stg, cd) --allterado v2.8 return true end if not check and getPlayerStorageValue(cid, stg) >= 1 then setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1) else setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd) end local a = getPlayerStorageValue(cid, stg) if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then local item = getPlayerSlotItem(getCreatureMaster(cid), 8) doItemSetAttribute(item.uid, "paralyze", a) doItemSetAttribute(item.uid, "paralyzeEff", eff) end if a <= -1 then if isPlayer(cid) then if not isSleeping(cid) then --alterado mayNotMove(cid, false) end else if getCreatureCondition(cid, CONDITION_PARALYZE) == true then doRemoveCondition(cid, CONDITION_PARALYZE) addEvent(doAddCondition, 10, cid, paralizeArea2) end if not isSleeping(cid) then doRegainSpeed(cid) --alterado end end setPlayerStorageValue(cid, stg, -1) return true end if isPlayer(cid) then mayNotMove(cid, true) else --alterado v2.6 doChangeSpeed(cid, -2000) end doSendMagicEffect(getThingPos(cid), eff) addEvent(doParalyze2, 1000, cid, -1, eff, a, false) end function doSleep2(cid, cd, check, first) local stg = conds["Sleep"] if not isCreature(cid) then return true end --is creature? if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then setPlayerStorageValue(cid, stg, cd) --allterado v2.8 return true end if not isSleeping(cid) then addEvent(doSendSleepEffect, 500, cid) end if not check and getPlayerStorageValue(cid, stg) >= 1 then setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1) else setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd) end local a = getPlayerStorageValue(cid, stg) if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then local item = getPlayerSlotItem(getCreatureMaster(cid), 8) doItemSetAttribute(item.uid, "sleep", a) end if a <= -1 then if not isPlayer(cid) then local dittoStg = getPlayerStorageValue(cid, 1010) if getCreatureName(cid) == "Ditto" and isSummon(cid) and tostring(dittoStg) and dittoStg ~= "Ditto" then doSetCreatureOutfit(cid, {lookType = getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "transOutfit")}, -1) else doRemoveCondition(cid, CONDITION_OUTFIT) end if getPlayerStorageValue(cid, 625877) ~= -1 then doSetCreatureOutfit(cid, {lookType = getPlayerStorageValue(cid, 625877)}, -1) --alterado v2.6 end end if isPlayer(cid) then if not isParalyze(cid) then mayNotMove(cid, false) --alterado end else if getCreatureCondition(cid, CONDITION_PARALYZE) == true then doRemoveCondition(cid, CONDITION_PARALYZE) addEvent(doAddCondition, 10, cid, paralizeArea2) end if not isParalyze(cid) then doRegainSpeed(cid) --alterado end end setPlayerStorageValue(cid, stg, -1) return true end if first then if getCreatureName(cid) == "Ursaring" and getCreatureCondition(cid, CONDITION_OUTFIT) == true then elseif not isPlayer(cid) then if isInArray({604, 605, 1015, 1016, 1183, 1184}, getCreatureOutfit(cid).lookType) then Info = 0 --alterado v2.6 else Info = getMonsterInfo(getCreatureName(cid)).lookCorpse end local look = getCreatureOutfit(cid) --------- local dittoStg = getPlayerStorageValue(cid, 1010) if getCreatureName(cid) == "Ditto" and isSummon(cid) and tostring(dittoStg) and dittoStg ~= "Ditto" then local InfoDitto = getMonsterInfo(tostring(dittoStg)).lookCorpse if InfoDitto ~= 0 and look.lookType ~= 0 then doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(tostring(dittoStg)).lookCorpse}, -1) end else if getCreatureName(cid) == "Shiny Golem" and getCreatureOutfit(cid).lookType == 1403 then doRemoveCondition(cid, CONDITION_OUTFIT) elseif Info ~= 0 and look.lookType ~= 0 then doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(getCreatureName(cid)).lookCorpse}, -1) end end end end --alterado v2.6 if isPlayer(cid) then mayNotMove(cid, true) else doChangeSpeed(cid, -getCreatureSpeed(cid)) end addEvent(doSleep2, 1000, cid, -1, a, false) end function doLeech2(cid, attacker, cd, check, damage) local stg = conds["Leech"] if not isCreature(cid) then return true end --is creature? if attacker ~= 0 and not isCreature(attacker) then return true end --is creature? if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then setPlayerStorageValue(cid, stg, cd) --allterado v2.8 return true end if not check and getPlayerStorageValue(cid, stg) >= 1 then setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1) else setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd) end local a = getPlayerStorageValue(cid, stg) if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then local item = getPlayerSlotItem(getCreatureMaster(cid), 8) doItemSetAttribute(item.uid, "leech", a) doItemSetAttribute(item.uid, "leechdmg", damage) end if a <= -1 then setPlayerStorageValue(cid, stg, -1) return true end local life = getCreatureHealth(cid) ------ doCreatureAddHealth(cid, -damage) doSendAnimatedText(getThingPos(cid), "-"..damage.."", 144) doSendMagicEffect(getThingPos(cid), 45) ------ local newlife = life - getCreatureHealth(cid) if newlife >= 1 and attacker ~= 0 then doSendMagicEffect(getThingPos(attacker), 14) doCreatureAddHealth(attacker, newlife) doSendAnimatedText(getThingPos(attacker), "+"..newlife.."", 32) end addEvent(doLeech2, 2000, cid, attacker, -1, a, damage) end function doBuff2(cid, cd, eff, check, buff, first, attr) if not isCreature(cid) then return true end --is creature? --------------------- local atributo = attr and attr or "" if first and atributo == "" then for i = 1, 3 do if getPlayerStorageValue(cid, Buffs[2]) <= 0 then atributo = Buffs[1] break end end end if atributo == "" then return true end if ehMonstro(cid) then atributo = "Buff1" end ---------------------- local stg = conds[atributo] if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then return true end --n usar 2x if not check and getPlayerStorageValue(cid, stg) >= 1 then setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1) else setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd) end local a = getPlayerStorageValue(cid, stg) if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then local item = getPlayerSlotItem(getCreatureMaster(cid), 8) doItemSetAttribute(item.uid, atributo, a) doItemSetAttribute(item.uid, atributo.."eff", eff) doItemSetAttribute(item.uid, atributo.."skill", buff) end if a <= -1 then --alterado v2.6 if isInArray({"Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Minimize", "Bug Fighter", "Ancient Fury"}, buff) then if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then if isSummon(cid) then local item = getPlayerSlotItem(getCreatureMaster(cid), 8) doSetCreatureOutfit(cid, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1) --alterado v2.6.1 end elseif not isSleeping(cid) then doRemoveCondition(cid, CONDITION_OUTFIT) end setPlayerStorageValue(cid, 9658783, -1) setPlayerStorageValue(cid, 625877, -1) --alterado v2.6 end if isInArray({"Strafe", "Agility", "Ancient Fury", "War Dog", "Fighter Spirit", "Furious Legs", "Ultimate Champion", "Bug Fighter"}, buff) then setPlayerStorageValue(cid, 374896, -1) --alterado v2.6 end setPlayerStorageValue(cid, stg, -1) return true end doSendMagicEffect(getThingPos(cid), eff) if first then if buff == "Strafe" or buff == "Agility" then setPlayerStorageValue(cid, 374896, 1) --velo atk --alterado v2.6 doRaiseStatus(cid, 0, 0, 100, a) elseif buff == "Tailwind" then doRaiseStatus(cid, 0, 0, 200, a) elseif buff == "Rage" then doRaiseStatus(cid, 2, 0, 0, a) elseif buff == "Harden" then doRaiseStatus(cid, 0, 2, 0, a) elseif buff == "Calm Mind" then doRaiseStatus(cid, 0, 2, 0, a) elseif buff == "Ancient Fury" then doSetCreatureOutfit(cid, {lookType = outFurys[getCreatureName(cid)].outFury}, a*1000) setPlayerStorageValue(cid, 374896, 1) --velo atk if getCreatureName(cid) == "Shiny Charizard" then doRaiseStatus(cid, 2, 0, 0, a) --atk melee --alterado v2.6 else doRaiseStatus(cid, 0, 2, 0, a) --def end setPlayerStorageValue(cid, 625877, outFurys[getCreatureName(cid)].outFury) --alterado v2.6 elseif buff == "War Dog" then doRaiseStatus(cid, 1.5, 1.5, 0, a) setPlayerStorageValue(cid, 374896, 1) --velo atk elseif buff == "Rest" then doSleep2(cid, cd, getPlayerStorageValue(cid, conds["Sleep"]), true) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) elseif isInArray({"Fighter Spirit", "Furious Legs", "Ultimate Champion"}, buff) then doRaiseStatus(cid, 1.5, 0, 0, a) --atk melee --alterado v2.6 setPlayerStorageValue(cid, 374896, 1) --velo atk addEvent(setPlayerStorageValue, a*1000, cid, 465987, -1) elseif isInArray({"Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Minimize"}, buff) then doSetCreatureOutfit(cid, {lookType = outImune[buff]}, -1) setPlayerStorageValue(cid, 9658783, 1) setPlayerStorageValue(cid, 625877, outImune[buff]) --alterado v2.6 elseif buff == "Bug Fighter" then setPlayerStorageValue(cid, 374896, 1) --velo atk --alterado v2.6 doRaiseStatus(cid, 1.5, 1.5, 100, a) doSetCreatureOutfit(cid, {lookType = 1448}, a*1000) setPlayerStorageValue(cid, 625877, 1448) --alterado v2.6 end end addEvent(doBuff2, 1000, cid, -1, eff, a, buff, false, atributo) end if ret.buff and ret.buff ~= "" then doBuff2(ret.id, ret.cd, ret.eff, ret.check, ret.buff, ret.first, (ret.attr and ret.attr or false)) end if isSummon(ret.id) and getPokemonBoost(ret.id) ~= 0 and math.random(1, 100) <= getPokemonBoost(ret.id) then --sistema "pegou no boost" if ret.cond and not isInArray({"Poison", "Burn", "Leech", "Fear"}, ret.cond) then --alterado v2.6 doSendAnimatedText(getThingPosWithDebug(ret.id), "BOOST", 215) --alterado v2.8 return true end end if ret.cond and ret.cond == "Miss" then doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell) elseif ret.cond and ret.cond == "Silence" then doSilence2(ret.id, ret.cd, ret.eff, ret.check) elseif ret.cond and ret.cond == "Slow" then doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first) elseif ret.cond and ret.cond == "Confusion" then doConfusion2(ret.id, ret.cd, ret.check) elseif ret.cond and ret.cond == "Burn" then doBurn2(ret.id, ret.cd, ret.check, ret.damage) elseif ret.cond and ret.cond == "Poison" then doPoison2(ret.id, ret.cd, ret.check, ret.damage) elseif ret.cond and ret.cond == "Fear" then doFear2(ret.id, ret.cd, ret.check, ret.skill) elseif ret.cond and ret.cond == "Stun" then doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell) elseif ret.cond and ret.cond == "Paralyze" then doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first) elseif ret.cond and ret.cond == "Sleep" then doSleep2(ret.id, ret.cd, ret.check, ret.first) elseif ret.cond and ret.cond == "Leech" then doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage) end end -------------------------------- function cleanBuffs2(item) if item ~= 0 then for i = 1, 3 do doItemEraseAttribute(item, Buffs[1]) doItemEraseAttribute(item, Buffs[1].."eff") doItemEraseAttribute(item, Buffs[1].."skill") end end end -------------------------------- function doCureStatus(cid, type, playerballs) --alterado v2.9 \/ if not isCreature(cid) then return true end if playerballs and isPlayer(cid) then local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK) local mb = getPlayerSlotItem(cid, 8) local balls = getPokeballsInContainer(bp.uid) if isPokeball(mb.itemid) then if not type or type == "all" then for b = 1, #injuries2 do doItemSetAttribute(mb.uid, ""..injuries2.n.."", -1) end else doItemSetAttribute(mb.uid, ""..type.."", -1) end end if #balls >= 1 then for _, uid in ipairs(balls) do if not type or type == "all" then for b = 1, #injuries2 do doItemSetAttribute(uid, ""..injuries2.n.."", -1) end else doItemSetAttribute(uid, ""..type.."", -1) end end end end if type == "all" then for a = 1, #injuries2 do setPlayerStorageValue(cid, injuries2[a].m, -1) end return true end for a, b in pairs (injuries2) do if b.n == type then setPlayerStorageValue(cid, b.m, -1) end end end --------------------------------- function isWithCondition(cid) for i = 1, #injuries2 do if getPlayerStorageValue(cid, injuries2.m) >= 1 then return true end end return false end --------------------------------- function doCureBallStatus(item, type) if not type or type == "all" then for b = 1, #injuries2 do doItemSetAttribute(item, ""..injuries2.n.."", -1) end else doItemSetAttribute(item, ""..type.."", -1) end end --------------------------------- function isBurning(cid) if not isCreature(cid) then return false end if getPlayerStorageValue(cid, conds["Burn"]) >= 0 then return true end return false end function isPoisoned(cid) if not isCreature(cid) then return false end if getPlayerStorageValue(cid, conds["Poison"]) >= 0 then return true end return false end function isSilence(cid) if not isCreature(cid) then return false end if getPlayerStorageValue(cid, conds["Silence"]) >= 0 then return true end return false end function isParalyze(cid) if not isCreature(cid) then return false end if getPlayerStorageValue(cid, conds["Paralyze"]) >= 0 then return true end return false end function isSleeping(cid) if not isCreature(cid) then return false end if getPlayerStorageValue(cid, conds["Sleep"]) >= 0 then return true end return false end function isWithFear(cid) if not isCreature(cid) then return false end if getPlayerStorageValue(cid, conds["Fear"]) >= 0 then return true end return false end ----------------------------------- function doMoveInArea2(cid, eff, area, element, min, max, spell, ret) if not isCreature(cid) then return true end local pos = getPosfromArea(cid, area) --alterado v2.8 setPlayerStorageValue(cid, 21101, -1) --alterado v2.6 local skills = {"Skull Bash", "Gust", "Water Pulse", "Stick Throw", "Overheat", "Toxic", "Take Down", "Gyro Ball"} --alterado v2.7 local n = 0 local l = 0 while n < #pos do if not isCreature(cid) then return true 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 n = n+1 thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=253} local pid = getThingFromPosWithProtect(thing) ---- if pid ~= cid then if spell and isInArray(skills, spell) then if spell == "Stick Throw" then addEvent(sendEffWithProtect, l*300, cid, pos[n], eff) addEvent(sendMoveBack, 1200, cid, pos, eff, min, max) addEvent(doMoveDano2, l*300, cid, pid, element, min, max, ret, spell) --alterado v2.6 elseif spell and spell == "Gyro Ball" then --alterado v2.7 pos[n].x = pos[n].x+1 addEvent(sendEffWithProtect, l*200, cid, pos[n], eff) addEvent(doMoveDano2, l*200, cid, pid, element, min, max, ret, spell) else addEvent(sendEffWithProtect, l*200, cid, pos[n], eff) addEvent(doMoveDano2, l*200, cid, pid, element, min, max, ret, spell) --alterado v2.6 end elseif spell and spell == "Epicenter" then local random = math.random(50, 500) addEvent(sendEffWithProtect, random, cid, pos[n], eff) addEvent(doDanoWithProtect, random, cid, GROUNDDAMAGE, pos[n], crusher, -min, -max, 255) elseif spell and spell == "Shadowave" then posi = {x=pos[n].x, y=pos[n].y+1, z=pos[n].z} sendEffWithProtect(cid, posi, eff) doMoveDano2(cid, pid, element, min, max, ret, spell) --alterado v2.6 elseif spell and spell == "Surf" then addEvent(sendEffWithProtect, math.random(50, 500), cid, pos[n], eff) addEvent(doMoveDano2, 400, cid, pid, element, min, max, ret, spell) --alterado v2.6 elseif spell and spell == "Sand Attack" then addEvent(sendEffWithProtect, n*200, cid, pos[n], eff) addEvent(doMoveDano2, n*200, cid, pid, element, min, max, ret, spell) --alterado v2.6 elseif spell and (spell == "Muddy Water" or spell == "Venom Motion") then local arr = { [1] = 0, [2] = 0, [3] = 0, [4] = 200, [5] = 200, [6] = 200, [7] = 400, [8] = 400, [9] = 400, [10] = 600, [11] = 600, [12] = 600, [13] = 800, [14] = 800, [15] = 800 } local time = {0, 200, 400, 600, 800} addEvent(sendEffWithProtect, arr[n], cid, pos[n], eff) addEvent(doMoveDano2, arr[n], cid, pid, element, min, max, ret, spell) elseif spell and (spell == "Inferno" or spell == "Fissure" or spell == "Volcano Burst") then --alterado v2.8 addEvent(sendEffWithProtect, math.random(0, 500), cid, pos[n], eff) addEvent(doMoveDano2, math.random(0, 500), cid, pid, element, min, max, ret, spell) else sendEffWithProtect(cid, pos[n], eff) doMoveDano2(cid, pid, element, min, max, ret, spell) end end l = l+1 end end ------------------------------------------- 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 v2.6 end if ehNPC(pid) then return true end --- local canAtk = true --alterado v2.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" 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 v2.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 v2.6 end else doTargetCombatHealth(cid, pid, element, -(math.abs(min)), -(math.abs(max)), 255) end end elseif ehMonstro(cid) and (isSummon(pid) or (isPlayer(pid) and #getCreatureSummons(pid) <= 0)) and pid ~= cid then if canAtk then --alterado v2.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 v2.6 end else doTargetCombatHealth(cid, pid, element, -(math.abs(min)), -(math.abs(max)), 255) end end elseif isPlayer(cid) and ehMonstro(pid) and pid ~= cid then if canAtk then --alterado v2.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 v2.6 end else doTargetCombatHealth(cid, pid, element, -(math.abs(min)), -(math.abs(max)), 255) end end end end end -------------------------------------------------------------------------------- function sendEffWithProtect(cid, pos, eff) --Manda algum magic effect com proteçoes if not isCreature(cid) then return true 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 local checkpos = pos checkpos.stackpos = 0 if not hasTile(checkpos) then return true end if not canWalkOnPos2(pos, false, true, false, true, false) then --alterado v2.6 return true end doSendMagicEffect(pos, eff) end --------------------------------------------------------------------------------- function getThingPosWithDebug(what) if not isCreature(what) or getCreatureHealth(what) <= 0 then return {x = 1, y = 1, z = 10} end return getThingPos(what) end --------------------------------------------------------------------------------- function doDanoWithProtect(cid, element, pos, area, min, max, eff) --Da dano com proteçoes if not isCreature(cid) then return true 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 doAreaCombatHealth(cid, element, pos, area, -(math.abs(min)), -(math.abs(max)), eff) end --------------------------------------------------------------------------------- function doDanoWithProtectWithDelay(cid, target, element, min, max, eff, area) const_distance_delay = 56 if not isCreature(cid) then return true 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 target ~= 0 and isCreature(target) and not area then delay = getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) * const_distance_delay addEvent(doDanoWithProtect, delay, cid, element, getThingPosWithDebug(target), 0, min, max, eff) return true end addEvent(doDanoWithProtect, 200, cid, element, getThingPosWithDebug(target), area, min, max, eff) end -------------------------------------------------------------------------------- function sendDistanceShootWithProtect(cid, frompos, topos, eff) --Manda um efeito de distancia com proteçoes if not isCreature(cid) then return true 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 doSendDistanceShoot(frompos, topos, eff) end --------------------------------------------------------------------------------- function sendMoveBack(cid, pos, eff, min, max) --Manda o Atk do farfetchd de volta... local m = #pos+1 for i = 1, #pos do if not isCreature(cid) then return true end --- m = m-1 thing = {x=pos[m].x,y=pos[m].y,z=pos[m].z,stackpos=253} local pid = getThingFromPosWithProtect(thing) addEvent(doMoveDano2, i*200, cid, pid, FLYINGDAMAGE, min/4, max/4) addEvent(sendEffWithProtect, i*200, cid, pos[m], eff) --alterado v1.3 -- end end --------------------------------------------------------------------------------- function upEffect(cid, effDis) if not isCreature(cid) then return true 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 pos = getThingPos(cid) frompos = {x = pos.x+1, y = pos.y, z = pos.z} frompos.x = pos.x - math.random(4, 7) frompos.y = pos.y - math.random(5, 8) doSendDistanceShoot(getThingPos(cid), frompos, effDis) end --------------------------------------------------------------------------------- function fall(cid, master, element, effDis, effArea) --Function pra jogar efeitos pra cima e cair depois... tpw falling rocks e blizzard if isCreature(cid) then if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end pos = getThingPos(cid) pos.x = pos.x + math.random(-4,4) pos.y = pos.y + math.random(-4,4) if isMonster(cid) or isPlayer(cid) then frompos = {x = pos.x+1, y = pos.y, z = pos.z} elseif isSummon(cid) then frompos = getThingPos(master) end frompos.x = pos.x - 7 frompos.y = pos.y - 6 if effDis ~= -1 then --alterado! doSendDistanceShoot(frompos, pos, effDis) end doAreaCombatHealth(cid, element, pos, 0, 0, 0, effArea) end end --------------------------------------------------------------------------------- function canDoMiss(cid, nameAtk) --alterado v2.5 local atkTerra = {"Sand Attack", "Mud Shot", "Mud Bomb", "Stomp", "Crusher Stomp", "Mud Slap", "Sand Tomb"} --alterado v2.7 local atkElectric = {"Electric Storm", "Thunder Wave", "Thunder", "Electricity", "Wild Charge"} --alterado v2.7 if not isCreature(cid) then return false end if isPlayer(cid) then return true end if not pokes[getCreatureName(cid)] then return true end if isInArray(atkTerra, nameAtk) then if (pokes[getCreatureName(cid)].type == "flying") or (pokes[getCreatureName(cid)].type2 == "flying") or isInArray(specialabilities["levitate"], getCreatureName(cid)) then return false end elseif isInArray(atkElectric, nameAtk) then if (pokes[getCreatureName(cid)].type == "ground") or (pokes[getCreatureName(cid)].type2 == "ground") then return false end end return true end --------------------------------------------------------------------------------- function doMoveInAreaMulti(cid, effDis, effMagic, areaEff, areaDano, element, min, max, ret) --alterado v2.7 if not isCreature(cid) then return true end local pos = getPosfromArea(cid, areaEff) local pos2 = getPosfromArea(cid, areaDano) local n = 0 while n < #pos2 do if not isCreature(cid) then return true 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 n = n+1 thing = {x=pos2[n].x,y=pos2[n].y,z=pos2[n].z,stackpos=253} if n < #pos then addEvent(sendDistanceShootWithProtect, 50, cid, getThingPos(cid), pos[n], effDis) --39 addEvent(sendEffWithProtect, 100, cid, pos[n], effMagic) -- 112 --- --alterado v2.6.1 if math.random(1, 2) == 2 then addEvent(sendDistanceShootWithProtect, 450, cid, getThingPos(cid), pos[n], effDis) --550 addEvent(sendEffWithProtect, 550, cid, pos[n], effMagic) -- 650 end end local pid = getThingFromPosWithProtect(thing) if isCreature(pid) then if ret and ret.id == 0 then --alterado v2.8 ret.id = pid ret.check = getPlayerStorageValue(pid, conds[ret.cond]) end if not ret then ret = {} end --alterado v2.7 doMoveDano2(cid, pid, element, min, max, ret, getPlayerStorageValue(cid, 21102)) end end end --------------------------------------------------------------------------------------- function doDoubleHit(cid, pid, valor, races) --alterado v2.6 if isCreature(cid) and isCreature(pid) then if getPlayerStorageValue(cid, 374896) >= 1 then if getMasterTarget(cid) == pid then if isInArray({"Kadabra", "Alakazam", "Mew", "Shiny Abra", "Shiny Alakazam"}, getCreatureName(cid)) then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(pid), 39) end if isSummon(cid) then doTargetCombatHealth(getCreatureMaster(cid), pid, PHYSICALDAMAGE, -math.abs(valor), -math.abs(valor), 255) else doCreatureAddHealth(pid, -math.abs(valor), 3, races[getMonsterInfo(getCreatureName(pid)).race].cor) end end end end end ---------------------------------------------------------------------------------------- function doDanoInTarget(cid, target, combat, min, max, eff) --alterado v2.7 if not isCreature(cid) or not isCreature(target) then return true 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 doTargetCombatHealth(cid, target, combat, -math.abs(min), -math.abs(max), eff) end ----------------------------------------------------------------------------------------- function doDanoInTargetWithDelay(cid, target, combat, min, max, eff) --alterado v2.7 const_distance_delay = 56 if not isCreature(cid) or not isCreature(target) then return true 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 local delay = getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) * const_distance_delay addEvent(doDanoInTarget, delay, cid, target, combat, min, max, eff) end Link para o comentário https://xtibia.com/forum/topic/237016-encerrado-pokemon-dormido-e-segue-atacando/#findComment-1670778 Compartilhar em outros sites More sharing options...
joshua8822 2 Postado Outubro 2, 2015 Share Postado Outubro 2, 2015 Replace: move1.lua local msgs = {"use ", ""} function doAlertReady(cid, id, movename, n, cd) if not isCreature(cid) then return true end local myball = getPlayerSlotItem(cid, 8) if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") is ready!") return true end local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid) if not p or #p <= 0 then return true end for a = 1, #p do if getItemAttribute(p[a], cd) == "cd:"..id.."" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") is ready!") return true end end end function onSay(cid, words, param, channel) if param ~= "" then return true end if string.len(words) > 3 then return true end if #getCreatureSummons(cid) == 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.") return 0 end --alterado v1.5 local mypoke = getCreatureSummons(cid)[1] if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end if getCreatureName(mypoke) == "Evolution" then return true end if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then name = getPlayerStorageValue(mypoke, 1010) --edited else name = getCreatureName(mypoke) end --local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke) local it = string.sub(words, 2, 3) local move = movestable[name].move1 if getPlayerStorageValue(mypoke, 212123) >= 1 then cdzin = "cm_move"..it.."" else cdzin = "move"..it.."" --alterado v1.5 end if it == "2" then move = movestable[name].move2 elseif it == "3" then move = movestable[name].move3 elseif it == "4" then move = movestable[name].move4 elseif it == "5" then move = movestable[name].move5 elseif it == "6" then move = movestable[name].move6 elseif it == "7" then move = movestable[name].move7 elseif it == "8" then move = movestable[name].move8 elseif it == "9" then move = movestable[name].move9 elseif it == "10" then move = movestable[name].move10 elseif it == "11" then move = movestable[name].move11 elseif it == "12" then move = movestable[name].move12 elseif it == "13" then move = movestable[name].move13 end if not move then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end if getPlayerLevel(cid) < move.level then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need be atleast level "..move.level.." to use this move.") return true end if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." seconds to use "..move.name.." again.") return true end if getTileInfo(getThingPos(mypoke)).protection then doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.") return true end if getPlayerStorageValue(mypoke, 3894) >= 1 then return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v1.3 end if getPlayerStorageValue(mypoke, 98271) >= 1 then return doPlayerSendCancel(cid, "You can't attack because is sleeping") --alterado v1.5 end if getPlayerStorageValue(mypoke, 3895) >= 1 then return doPlayerSendCancel(cid, "You can't attack because is stuned") --alterado v1.5 end --alterado v1.6 if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!") return true end --alterado v1.7 \/\/\/ if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) then local target = getCreatureTarget(cid) if math.random(1, 100) <= passivesChances["Evasion"][getCreatureName(target)] then if isCreature(getMasterTarget(target)) then --alterado v1.6 doSendMagicEffect(getThingPos(target), 211) doSendAnimatedText(getThingPos(target), "TOO BAD", 215) doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false) doSendMagicEffect(getThingPos(target), 211) doFaceCreature(target, getThingPos(mypoke)) return true --alterado v1.6 end end end if move.target == 1 then if not isCreature(getCreatureTarget(cid)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don\'t have any targets.") return 0 end if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then return 0 end if getCreatureHealth(getCreatureTarget(cid)) <= 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.") return 0 end if not isCreature(getCreatureSummons(cid)[1]) then return true end if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.") return 0 end if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then return 0 end end local newid = 0 if isSleeping(mypoke) or isSilence(mypoke) then --alterado v1.5 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.") return 0 else newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd) end doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY) local summons = getCreatureSummons(cid) --alterado v1.6 addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin) for i = 2, #summons do if isCreature(summons[i]) and getPlayerStorageValue(cid, 637501) >= 1 then docastspell(summons[i], move.name) --alterado v1.6 end end docastspell(mypoke, move.name) doCreatureAddCondition(cid, playerexhaust) if useKpdoDlls then doUpdateCooldowns(cid) end return 0 end Link para o comentário https://xtibia.com/forum/topic/237016-encerrado-pokemon-dormido-e-segue-atacando/#findComment-1670830 Compartilhar em outros sites More sharing options...
Stigal 585 Postado Abril 21, 2018 Share Postado Abril 21, 2018 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. Link para o comentário https://xtibia.com/forum/topic/237016-encerrado-pokemon-dormido-e-segue-atacando/#findComment-1736778 Compartilhar em outros sites More sharing options...
Posts Recomendados