Postado Agosto 2, 2014 10 anos galera como fazer passivas de pokemon pela creaturescript ? detalhes nao uso base PDA tipo tem a script no exp.lua local expcond = createConditionObject(CONDITION_INFIGHT) setConditionParam(expcond, CONDITION_PARAM_TICKS, 4500) function onStatsChange(cid, attacker, enps, combatee, value) if isSummon(cid) and enps == STATSCHANGE_HEALTHLOSS then -------------------------------- Passivas ----------------------------------- --------- Eletric charges --------- local charge = {"Pikachu", "Raichu", "Shiny Raichu", "Electabuzz",} if isInArray(charge, getCreatureName(cid)) and math.random(1, 100) <= 15 then if getPlayerStorageValue(cid, 62530) >= 1 then return false end setPlayerStorageValue(cid, 62530, 5) doSendMagicEffectInSenconds(cid, 207, ELECTRICDAMAGE) end --------- Eletric charges --------- -------------------------------------------Counter Helix------------------------------------ local helix = {"Alakazam", "Gengar", "Tentacruel", "Shiny Tentacruel","Haunter", "Scyther", "Scizor", "Shiny Scyther", "Hitmontop", "Shiny Hitmontop", "Pineco", "Forretress"} if isInArray(helix, getCreatureName(cid)) and math.random(1, 100) <= 15 then doCounterHelix(cid) end -------------------------------------------Counter Helix------------------------------------ ---------------------------------------Stunning Confusion----------------------------------------- local ducks = {"Golduck", "Psyduck", "Wobbuffet"} if isInArray(ducks, getCreatureName(cid)) and math.random(1, 100) <= 20 then doStingConfusion(cid) end ---------------------------------------Stunning Confusion----------------------------------------- local hits = {"Hitmonlee", "Shiny Hitmonlee", "Hitmonchan", "Shiny Hitmonchan"} if isInArray(hits, getCreatureName(cid)) and math.random(1, 100) <= 20 then doHitmonAttacks(cid) end -------------------------------- Passivas ----------------------------------- end ------------------- Evento sudenAttacke -------------------------- if isZumbie(cid) and enps == STATSCHANGE_HEALTHLOSS or isHuman(cid) and enps == STATSCHANGE_HEALTHLOSS then if value >= getCreatureHealth(cid) and isZumbie(cid) then doTeleportThing(cid, {x = 1030, y =1040, z = 7}, false) doSendMagicEffect(getThingPos(cid), 21) doPlayerSendTextMessage(cid, 20, "Sorry, you loosed the event.") doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) setPlayerStorageValue(cid, 300, 0) if getGlobalStorageValue(3602) == 1 then setGlobalStorageValue(3602, getGlobalStorageValue(3602) +9) -- Aumenta o dano dos vampiros em 10% a mais. elseif getGlobalStorageValue(3602) >= 10 and getGlobalStorageValue(3602) <= 50 then setGlobalStorageValue(3602, getGlobalStorageValue(3602) +10) -- Aumenta o dano dos vampiros em 10% a mais. end doSendStatusDanger() doRemoveCondition(cid, CONDITION_OUTFIT) elseif value >= getCreatureHealth(cid) and isHuman(cid) then doPlayerSetVocation(cid, 1) doTeleportThing(cid, {x = 1030, y =1040, z = 7}, false) doSendMagicEffect(getThingPos(cid), 21) doPlayerSendTextMessage(cid, 20, "Sorry, you loosed the event.") doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) setPlayerStorageValue(cid, 301, 0) if getGlobalStorageValue(3602) > 1 then setGlobalStorageValue(3602, 1) end doSendStatusDanger() doRemoveCondition(cid, CONDITION_OUTFIT) end end if isZumbie(cid) and isZumbie(attacker) or isHuman(cid) and isHuman(attacker) then return false -- Pra não atacar um player da mesma raça. end if isZumbie(cid) and isHuman(attacker) then -- Pra tirar life doCreatureAddHealth(cid, -(math.floor(value*EventPlayerReduction*getGlobalStorageValue(3602)))) doSendAnimatedText(getThingPos(cid), (math.floor(value*EventPlayerReduction*getGlobalStorageValue(3602))), 180) doSendMagicEffect(getThingPos(cid), 9) elseif isZumbie(attacker) and isHuman(cid) then doCreatureAddHealth(cid, -(math.floor(value*EventPlayerReduction))) doSendAnimatedText(getThingPos(cid), math.floor(value*EventPlayerReduction), 180) doSendMagicEffect(getThingPos(cid), 209) end ------------------- Evento sudenAttacke -------------------------- ------------------- Para pokemon selvagem não atackar o outro -------------------------- if ehMonstro(cid) and ehMonstro(attacker) then return false end ------------------- Para pokemon selvagem não atackar o outro -------------------------- ------------------- Sleep Powder -------------------------- if isMonster(attacker) and isSleeping(attacker) then doSendMagicEffect(getThingPos(attacker), 32) return false elseif not isSleeping(cid) and getCreatureSpeed(cid) <= 0 then doChangeSpeed(cid, getCreatureBaseSpeed(cid)) setPlayerStorageValue(cid, 898, 0) end ------------------- Sleep Powder -------------------------- if getPlayerStorageValue(cid, 33) >= 1 then if isCreature(attacker) then return false end return true end if getPlayerStorageValue(cid, 34) >= 1 then if combatee ~= COMBAT_PHYSICALDAMAGE then if isCreature(attacker) then doSendMagicEffect(getThingPos(cid), 135) doSendMagicEffect(getThingPos(attacker), 3) doSendAnimatedText(getThingPos(cid), "REFLECT", 215) doCreatureAddHealth(attacker, -value) setPlayerStorageValue(cid, 34, 0) doSendAnimatedText(getThingPos(attacker), -value, 191) return false end end end if getPlayerStorageValue(cid, 35) >= 1 then if isCreature(attacker) or isSummon(attacker) then doSendAnimatedText(getThingPos(cid), "MISS", 215) setPlayerStorageValue(cid, 35, 0) return false end end if not isCreature(attacker) then return true end if isPlayer(attacker) and ehMonstro(cid) then return true end if enps == STATSCHANGE_HEALTHGAIN then return true end if enps == STATSCHANGE_HEALTHLOSS then if getCreatureHealth(cid) <= value then if isPlayer(cid) then if #getCreatureSummons(cid) == 0 then return true end return false end if isPlayer(getCreatureMaster(attacker)) then doTargetCombatHealth(getCreatureMaster(attacker), cid, combatee, -(getCreatureHealth(cid)), -(getCreatureHealth(cid)), 3) return false end return true end if isPlayer(getCreatureMaster(cid)) then doAddCondition(getCreatureMaster(cid), expcond) end if not isPlayer(cid) then if combatee == ELECTRICDAMAGE then if isInArray(electric2, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 1 else x = 2 end elseif isInArray(electric1, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 0.20 else x = 0.50 end elseif isInArray(electric0, getCreatureName(cid)) then x = 0 else x = 1 end elseif combatee == WATERDAMAGE then if isInArray(water2, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 1 else x = 2 end elseif isInArray(water1, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 0.20 else x = 0.50 end elseif isInArray(water0, getCreatureName(cid)) then x = 0 else x = 1 end elseif combatee == GRASSDAMAGE then if isInArray(grass2, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 1 else x = 0.50 end elseif isInArray(grass1, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 0.20 else x = 0.50 end elseif isInArray(grass0, getCreatureName(cid)) then x = 0 else x = 1 end elseif combatee == FLYDAMAGE then if isInArray(flying2, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 1 else x = 2 end elseif isInArray(flying1, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 0.20 else x = 0.50 end elseif isInArray(flying0, getCreatureName(cid)) then x = 0 else x = 1 end elseif combatee == FIREDAMAGE then if isInArray(fire2, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 1 else x = 2 end elseif isInArray(fire1, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 0.20 else x = 0.50 end elseif isInArray(fire0, getCreatureName(cid)) then x = 0 else x = 1 end elseif combatee == ROCKDAMAGE then if isInArray(rock2, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 1 else x = 2 end elseif isInArray(rock1, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 0.20 else x = 0.50 end elseif isInArray(rock0, getCreatureName(cid)) then x = 0 else x = 1 end elseif combatee == GROUNDDAMAGE then if isInArray(ground2, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 1 else x = 2 end elseif isInArray(ground1, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 0.20 else x = 0.50 end elseif isInArray(ground0, getCreatureName(cid)) then x = 0 else x = 1 end elseif combatee == GHOSTDAMAGE then if isInArray(ghost2, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 1 else x = 2 end elseif isInArray(ghost1, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 0.20 else x = 0.50 end elseif isInArray(ghost0, getCreatureName(cid)) then x = 0 else x = 1 end elseif combatee == BUGDAMAGE then if isInArray(bug2, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 1 else x = 2 end elseif isInArray(bug1, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 0.20 else x = 0.50 end elseif isInArray(bug0, getCreatureName(cid)) then x = 0 else x = 1 end elseif combatee == NORMALDAMAGE then if isInArray(normal2, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 1 else x = 2 end elseif isInArray(normal1, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 0.20 else x = 0.50 end elseif isInArray(normal0, getCreatureName(cid)) then x = 0 else x = 1 end elseif combatee == FIGHTDAMAGE then if isInArray(fighting2, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 1 else x = 2 end elseif isInArray(fighting1, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 0.20 else x = 0.50 end elseif isInArray(fighting0, getCreatureName(cid)) then x = 0 else x = 1 end elseif combatee == POISONDAMAGE then if isInArray(poison2, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x =1 else x = 2 end elseif isInArray(poison1, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 0.20 else x = 0.50 end elseif isInArray(poison0, getCreatureName(cid)) then x = 0 else x = 1 end elseif combatee == PSYCHICDAMAGE then if isInArray(psychic2, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 1 else x = 2 end elseif isInArray(psychic1, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 0.20 else x = 0.50 end elseif isInArray(psychic0, getCreatureName(cid)) then x = 0 else x = 1 end elseif combatee == ICEDAMAGE then if isInArray(ice2, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 1 else x = 2 end elseif isInArray(ice1, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 0.20 else x = 0.50 end elseif isInArray(ice0, getCreatureName(cid)) then x = 0 else x = 1 end elseif combatee == DRAGONDAMAGE then if isInArray(dragon2, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 1 else x = 2 end elseif isInArray(dragon1, getCreatureName(cid)) then if getPlayerStorageValue(cid, 4) >= 1 then x = 0.20 else x = 0.50 end elseif isInArray(dragon0, getCreatureName(cid)) then x = 0 else x = 1 end else x = 1 end else x = 1 end local xx = x if isSummon(cid) and getPokemonFeed(getCreatureMaster(cid)) <= configsFoodSystem.muitaFome.id then xx = math.floor(xx * 2.5) - getPokemonDefBoost(getPlayerSlotItem(getCreatureMaster(cid),8).uid) elseif isSummon(cid) and getPokemonFeed(getCreatureMaster(cid)) > configsFoodSystem.muitaFome.id and getPokemonFeed(getCreatureMaster(cid)) <= configsFoodSystem.comfome.id then xx = math.floor(xx * 2.2) - getPokemonDefBoost(getPlayerSlotItem(getCreatureMaster(cid),8).uid) elseif isSummon(cid) and getPokemonFeed(getCreatureMaster(cid)) > configsFoodSystem.comfome.id and getPokemonFeed(getCreatureMaster(cid)) <= configsFoodSystem.normal.id then xx = math.floor(xx * 2.0) - getPokemonDefBoost(getPlayerSlotItem(getCreatureMaster(cid),8).uid) elseif isSummon(cid) and getPokemonFeed(getCreatureMaster(cid)) > configsFoodSystem.normal.id and getPokemonFeed(getCreatureMaster(cid)) <= configsFoodSystem.semfome.id then xx = math.floor(xx * 1.2) - getPokemonDefBoost(getPlayerSlotItem(getCreatureMaster(cid),8).uid) elseif isSummon(cid) and getPokemonFeed(getCreatureMaster(cid)) > configsFoodSystem.semfome.id and getPokemonFeed(getCreatureMaster(cid)) <= configsFoodSystem.feliz.id then xx = math.floor(xx * 1) - getPokemonDefBoost(getPlayerSlotItem(getCreatureMaster(cid),8).uid) elseif isSummon(cid) and getPokemonFeed(getCreatureMaster(cid)) > configsFoodSystem.feliz.id and getPokemonFeed(getCreatureMaster(cid)) <= configsFoodSystem.superfeliz.id then xx = xx else xx = xx end if isSummon(cid) and getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid),8).uid, "boost") >= 1 then xx = math.floor(getPokemonBoostHit(getPlayerSlotItem(getCreatureMaster(cid),8).uid)/10) - xx end if combatee == PSYCHICDAMAGE then cor = COLOR_PSYCHIC elseif combatee == GRASSDAMAGE then cor = COLOR_GRASS elseif combatee == FIREDAMAGE then cor = COLOR_FIRE2 elseif combatee == WATERDAMAGE then cor = COLOR_WATER elseif combatee == ICEDAMAGE then cor = COLOR_ICE elseif combatee == NORMALDAMAGE then cor = COLOR_NORMAL elseif combatee == FLYDAMAGE then cor = COLOR_FLYING elseif combatee == GHOSTDAMAGE then cor = COLOR_GHOST elseif combatee == GROUNDDAMAGE then cor = COLOR_GROUND elseif combatee == ELECTRICDAMAGE then cor = COLOR_ELECTRIC elseif combatee == ROCKDAMAGE then cor = COLOR_ROCK elseif combatee == BUGDAMAGE then cor = COLOR_BUG elseif combatee == FIGHTDAMAGE then cor = COLOR_FIGHTING elseif combatee == DRAGONDAMAGE then cor = COLOR_DRAGON elseif combatee == POISONDAMAGE then cor = COLOR_POISON elseif getCreatureName(cid) == "Kakuna" or getCreatureName(cid) == "Metapod" then cor = COLOR_BUG elseif getCreatureName(cid) == "Golem" or getCreatureName(cid) == "Graveler" or getCreatureName(cid) == "Geodude" then cor = COLOR_ROCK else cor = NONE end local cores = cor if not isSummon(attacker) then if not isPlayer(cid) and not isPlayer(getCreatureMaster(cid)) then return false end if isSummon(cid) and getCreatureHealth(cid) <= (getCreatureMaxHealth(cid)*0.15) and not exhaustion.get(getCreatureMaster(cid), 88726) then exhaustion.set(getCreatureMaster(cid), 88726, 6) doSendMagicEffect(getThingPos(cid), 178) end if isPlayer(cid) then if #getCreatureSummons(cid) >= 1 then return false end doCreatureAddHealth(cid, -(math.floor(value*PlayerReduction))) -- Aqui é o valor que o playerleva doSendAnimatedText(getThingPos(cid), (math.floor(value*PlayerReduction)), 180) --doPlayerSendTextMessage(getCreatureMaster(cid), 27, "".. factor .."") doSendMagicEffect(getThingPos(cid), 3) return false end if getPlayerStorageValue(cid, 4) >= 1 then if getPlayerStorageValue(attacker, 898) >= 1 then return false end local damage = value --doSendMagicEffect(getThingPos(cid), 2) --doCreatureAddHealth(cid, -((math.floor(damage/2))*xx)) --doSendAnimatedText(getThingPos(cid), (math.floor((damage)/2)*xx), cores) else local damage = value if cor == NONE then return true end ------------------------------------------------------------------- if isSummon(cid) then -- Sumoner atacado if getPlayerStorageValue(attacker, 202) >= 1 then doCreatureAddHealth(cid, -(math.floor(xx+damage-getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid),8).uid, "boost")+ginasios[getPlayerStorageValue(attacker, 201)].healths))) --- MOnster atacado doSendAnimatedText(getThingPos(cid), (math.floor(xx+damage-getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid),8).uid, "boost")+ginasios[getPlayerStorageValue(attacker, 201)].healths)), cores) else doCreatureAddHealth(cid, -(math.floor(xx+damage-getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid),8).uid, "boost")))) --- MOnster atacado doSendAnimatedText(getThingPos(cid), (math.floor(xx+damage-getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid),8).uid, "boost"))), cores) end doSendMagicEffect(getThingPos(cid), 3) elseif ehMonstro(cid) then --- Monster atacado doCreatureAddHealth(cid, -(math.floor(xx+damage*getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid),8).uid, "boost")*MonsterReduction))) doSendAnimatedText(getThingPos(cid), (math.floor(xx+damage+getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid),8).uid, "boost"))), cores) doSendMagicEffect(getThingPos(cid), 3) end ------------------------------------------------------------------- return false end return false end if isSummon(attacker) then --pokemon do player if isSummon(cid) then return false end combatx = combatee local factor = value ------------------------------------------------------------------------------------------------------------------------ if isSummon(attacker) and ehMonstro(cid) and getPokemonFeed(getCreatureMaster(attacker)) <= configsFoodSystem.muitaFome.id then factor = factor * 0.4 + getPokemonBoostHit(getPlayerSlotItem(getCreatureMaster(attacker),8).uid)*MonsterReduction elseif isSummon(attacker) and ehMonstro(cid) and getPokemonFeed(getCreatureMaster(attacker)) > configsFoodSystem.muitaFome.id and getPokemonFeed(getCreatureMaster(attacker)) <= configsFoodSystem.comfome.id then factor = factor * 0.10 + getPokemonBoostHit(getPlayerSlotItem(getCreatureMaster(attacker),8).uid)*MonsterReduction elseif isSummon(attacker) and ehMonstro(cid) and getPokemonFeed(getCreatureMaster(attacker)) > configsFoodSystem.comfome.id and getPokemonFeed(getCreatureMaster(attacker)) <= configsFoodSystem.normal.id then factor = factor * 0.25 + getPokemonBoostHit(getPlayerSlotItem(getCreatureMaster(attacker),8).uid)*MonsterReduction elseif isSummon(attacker) and ehMonstro(cid) and getPokemonFeed(getCreatureMaster(attacker)) > configsFoodSystem.normal.id and getPokemonFeed(getCreatureMaster(attacker)) <= configsFoodSystem.semfome.id then factor = factor * 0.50 + getPokemonBoostHit(getPlayerSlotItem(getCreatureMaster(attacker),8).uid)*MonsterReduction elseif isSummon(attacker) and ehMonstro(cid) and getPokemonFeed(getCreatureMaster(attacker)) > configsFoodSystem.semfome.id and getPokemonFeed(getCreatureMaster(attacker)) <= configsFoodSystem.feliz.id then factor = factor * 0.60 + getPokemonBoostHit(getPlayerSlotItem(getCreatureMaster(attacker),8).uid)*MonsterReduction elseif isSummon(attacker) and ehMonstro(cid) and getPokemonFeed(getCreatureMaster(attacker)) > configsFoodSystem.feliz.id and getPokemonFeed(getCreatureMaster(attacker)) <= configsFoodSystem.superfeliz.id then factor = factor * 0.85 + getPokemonBoostHit(getPlayerSlotItem(getCreatureMaster(attacker),8).uid)*MonsterReduction else factor = factor + getPokemonBoostHit(getPlayerSlotItem(getCreatureMaster(attacker),8).uid)*MonsterReduction end if getPlayerStorageValue(cid, 202) >= 1 then factor = factor * 0.50 -- Para os pokemons de duel apanharem. end ------------------------------------------------------------------------------------------------------------------------ if getPlayerStorageValue(cid, 4) >= 1 then doTargetCombatHealth(getCreatureMaster(attacker), cid, combatx, -((factor / 2)*x), -(((factor / 2)+10)*x), 255) if not isPlayer(cid) then doSendAnimatedText(getThingPos(cid), math.floor(((factor / 2)*x), -(((factor / 2)+10)*x)), cores) end else doTargetCombatHealth(getCreatureMaster(attacker), cid, combatx, -((factor)*x), -((factor+10)*x), 255) if not isPlayer(cid) then doSendAnimatedText(getThingPos(cid), math.floor(((factor)*x), -((factor+10)*x)), cores) end end end end end entao ai mostra os nomes dos pokemon que vai usar a passiva, aonde que modifica o efeito da passiva que ira sair ? tipo area effect essas coisas, essa e minha duvida Editado Agosto 2, 2014 10 anos por Valakinhas (veja o histórico de edições)
Postado Agosto 3, 2014 10 anos Autor ta vendo -------------------------------------------Counter Helix------------------------------------ local helix = {"Alakazam", "Gengar", "Tentacruel", "Shiny Tentacruel","Haunter", "Scyther", "Scizor", "Shiny Scyther", "Hitmontop", "Shiny Hitmontop", "Pineco", "Forretress"} if isInArray(helix, getCreatureName(cid)) and math.random(1, 100) <= 15 then doCounterHelix(cid) end -------------------------------------------Counter Helix------------------------------------ essa seria a passiva que iria ativar do pokemon, queria saber o local que muda ela
Postado Maio 25, 2015 10 anos mlz pelo flood, mais ja tentou ver se na pasta lib tem alguma coisa falando sobre as passivas? Minhas Gambiarras [PDA] Pokedex Mostrando o Catch http://www.tibiaking.com/forum/topic/54998-pda-arrumando-a-dex/?view=findpost&p=323041
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.