Ir para conteúdo
  • 0

[Resolvido] Bug no spell Heavy Slam


Josegvb

Pergunta

oi, preciso 1 ajuda enquanto esse spell q achei aki no forum

http://www.xtibia.com/forum/topic/235078-pedido-heavy-slam-e-passiva-iron-body/

 

coloquei tudo certo, testei de mil formas porem quando eu ligo o servidor, os bixos nao levam dano algum e fica spamando esse erro no log, alem de nao aparescer a cdBar

 

[16/02/2016 19:31:42] [Error - CreatureScript Interface]
[16/02/2016 19:31:42] data/creaturescripts/scripts/exp2.0.lua:onStatsChange
[16/02/2016 19:31:42] Description:
[16/02/2016 19:31:42] data/creaturescripts/scripts/exp2.0.lua:516: attempt to index global 'ironBody' (a nil value)
[16/02/2016 19:31:42] stack traceback:
[16/02/2016 19:31:42] data/creaturescripts/scripts/exp2.0.lua:516: in function <data/creaturescripts/scripts/exp2.0.lua:66>
meu exp2.0

local combats = { --alterado v1.6 \/
[PSYCHICDAMAGE] = {cor = COLOR_PSYCHIC},
[GRASSDAMAGE] = {cor = COLOR_GRASS},
[POISONEDDAMAGE] = {cor = COLOR_GRASS},
[FIREDAMAGE] = {cor = COLOR_FIRE2},
[bURNEDDAMAGE] = {cor = COLOR_BURN},
[WATERDAMAGE] = {cor = COLOR_WATER},
[iCEDAMAGE] = {cor = COLOR_ICE},
[NORMALDAMAGE] = {cor = COLOR_NORMAL},
[FLYDAMAGE] = {cor = COLOR_FLYING},
[GHOSTDAMAGE] = {cor = COLOR_GHOST},
[GROUNDDAMAGE] = {cor = COLOR_GROUND},
[ELECTRICDAMAGE] = {cor = COLOR_ELECTRIC},
[ROCKDAMAGE] = {cor = COLOR_ROCK},
[bUGDAMAGE] = {cor = COLOR_BUG},
[FIGHTDAMAGE] = {cor = COLOR_FIGHTING},
[DRAGONDAMAGE] = {cor = COLOR_DRAGON},
[POISONDAMAGE] = {cor = COLOR_POISON},
[DARKDAMAGE] = {cor = COLOR_DARK},
[sTEELDAMAGE] = {cor = COLOR_STEEL},
[MIRACLEDAMAGE] = {cor = COLOR_PSYCHIC},
[DARK_EYEDAMAGE] = {cor = COLOR_GHOST},
[sEED_BOMBDAMAGE] = {cor = COLOR_GRASS},
[sACREDDAMAGE] = {cor = COLOR_FIRE2},
[MUDBOMBDAMAGE] = {cor = COLOR_GROUND},
[FAIRYDAMAGE] = {cor = COLOR_PSYCHIC},
}
--alterado v1.5 tabelas agora estao em lib/configuration.lua
local function sendPlayerDmgMsg(cid, text)
if not isCreature(cid) then return true end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, text)
end
local races = {
[4] = {cor = COLOR_FIRE2},
[6] = {cor = COLOR_WATER},
[7] = {cor = COLOR_NORMAL},
[8] = {cor = COLOR_FIRE2},
[9] = {cor = COLOR_FIGHTING},
[10] = {cor = COLOR_FLYING},
[11] = {cor = COLOR_GRASS},
[12] = {cor = COLOR_POISON},
[13] = {cor = COLOR_ELECTRIC},
[14] = {cor = COLOR_GROUND},
[15] = {cor = COLOR_PSYCHIC},
[16] = {cor = COLOR_ROCK},
[17] = {cor = COLOR_ICE},
[18] = {cor = COLOR_BUG},
[19] = {cor = COLOR_DRAGON},
[20] = {cor = COLOR_GHOST},
[21] = {cor = COLOR_STEEL},
[22] = {cor = COLOR_DARK},
[23] = {cor = COLOR_PSYCHIC},
[1] = {cor = 180},
[2] = {cor = 180},
[3] = {cor = 180},
[5] = {cor = 180},
}
local damages = {GROUNDDAMAGE, ELECTRICDAMAGE, ROCKDAMAGE, FLYDAMAGE, BUGDAMAGE, FIGHTINGDAMAGE, DRAGONDAMAGE, POISONDAMAGE, DARKDAMAGE, STEELDAMAGE}
local fixdmgs = {PSYCHICDAMAGE, COMBAT_PHYSICALDAMAGE, GRASSDAMAGE, FIREDAMAGE, WATERDAMAGE, ICEDAMAGE, NORMALDAMAGE, GHOSTDAMAGE, FAIRYDAMAGE}
local ignored = {POISONEDDAMAGE, BURNEDDAMAGE} --alterado v1.6
local cannotkill = {BURNEDDAMAGE, POISONEDDAMAGE}
function onStatsChange(cid, attacker, type, combat, value)
if combat == FLYSYSTEMDAMAGE then return false end
if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV
if not isCreature(attacker) then --alterado v1.5 cid == attacker
if not isInArray(fixdamages, combat) and combats[combat] then
doSendAnimatedText(getThingPos(cid), value, combats[combat].cor)
end
return true
end
local damageCombat = combat
--------------------------------------------------
--alterado v1.6 retirado os combats sleep_powder e poison_powder daki!
--------------------------------------------------
if type == STATSCHANGE_HEALTHGAIN then
if cid == attacker then
return true
end
if isSummon(cid) and isSummon(attacker) and canAttackOther(cid, attacker) == "Cant" then
return false
end
return true
end
--------------------------------------------------
if isMonster(cid) then
local valor = value
if not pokes[getCreatureName(cid)] and damageCombat == COMBAT_PHYSICALDAMAGE then
valor = getOffense(attacker) * playerDamageReduction
doCreatureAddHealth(cid, -math.abs(valor), 3, races[7].cor) --alterado v1.6 dano nos npcs
return false
elseif not pokes[getCreatureName(cid)] and damageCombat ~= COMBAT_PHYSICALDAMAGE then
doCreatureAddHealth(cid, -math.abs(valor), 3, combats[damageCombat].cor)
return false
end
end
--------------------------------------------------
if isPlayer(attacker) then
local valor = value
if valor > getCreatureHealth(cid) then
valor = getCreatureHealth(cid)
end
if combat == COMBAT_PHYSICALDAMAGE then
return false
end
if combat == PHYSICALDAMAGE then
doSendMagicEffect(getThingPos(cid), 3)
doSendAnimatedText(getThingPos(cid), valor, races[getMonsterInfo(getCreatureName(cid)).race].cor)
end
if combats[damageCombat] and not isInArray(fixdmgs, damageCombat) then
doSendAnimatedText(getThingPos(cid), valor, combats[damageCombat].cor)
end
if #getCreatureSummons(attacker) >= 1 and not isInArray({POISONEDDAMAGE, BURNEDDAMAGE}, combat) then
--doPlayerSendTextMessage(attacker, cid, 20, "Seu "..getPokeName(getCreatureSummons(attacker)[1]).." causou "..valor.." de dano no "..getSomeoneDescription(cid)..".")
end
return true
end
--------------------------------------------------
if isPlayer(cid) and #getCreatureSummons(cid) >= 1 and type == STATSCHANGE_HEALTHLOSS then
--if ehMonstro(attacker) and getClosestFreeTile(getCreatureSummons(cid)[1]) >= 1 then
--doSendAnimatedText(getThingPosWithDebug(attacker), "Hmpfg!", 215)
--doMonsterSetTarget(attacker, getCreatureSummons(cid)[1])
--end
return false
end
--if isPlayer(cid) and #getCreatureSummons(cid) >= 1 and type == STATSCHANGE_HEALTHLOSS then
--if ehMonstro(attacker) and getClosestFreeTile(getCreatureSummons(cid)[1]) <= 0 then
--doSendAnimatedText(getThingPosWithDebug(attacker), "Grrr!", 215)
--doMonsterSetTarget(attacker, cid)
--end
--return true
--end
--------------------------------------------------
if isPlayer(cid) and #getCreatureSummons(cid) <= 0 and type == STATSCHANGE_HEALTHLOSS then
if isSummon(attacker) or isPlayer(attacker) then
if canAttackOther(cid, attacker) == "Cant" then return false end
end
local valor = 0
if combat == COMBAT_PHYSICALDAMAGE then
valor = getOffense(attacker)
else
valor = getSpecialAttack(attacker)
end
valor = valor * playerDamageReduction
valor = valor * math.random(83, 117) / 100
if valor >= getCreatureHealth(cid) then
valor = getCreatureHealth(cid)
end
valor = math.floor(valor)
if valor >= getCreatureHealth(cid) then
if getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 then
setPlayerStorageValue(cid, 6598754, -1)
setPlayerStorageValue(cid, 6598755, -1)
doRemoveCondition(cid, CONDITION_OUTFIT)
doTeleportThing(cid, {x = 1001, y = 1026, z = 14}, false)
doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
return false --alterado v1.8
elseif getPlayerStorageValue(cid, 577869) >= 1 then
setPlayerStorageValue(cid, 577869, 0)
doTeleportThing(cid, {x = 1009, y = 1084, z = 14}, false)
doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
return false
elseif getPlayerStorageValue(cid, 20000) >= 1 then
setPlayerStorageValue(cid, 20000, 0)
setPlayerStorageValue(cid,30,0)
doTeleportThing(cid, {x = 1172, y = 1366, z = 7}, false)
doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
doPlayerSendTextMessage(cid, 20, "Você morreu no Saffari por Favor volte mais tarde!")
return false
elseif getPlayerStorageValue(cid, 20001) >= 1 then
setPlayerStorageValue(cid,20001,0)
doTeleportThing(cid, {x = 1371, y = 1240, z = 7}, false)
doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
doRemoveCondition(cid, CONDITION_OUTFIT)
doPlayerSendTextMessage(cid, 20, "You are died in demon room, please come back!")
return false
end
------------------------------------------- ---
if getPlayerStorageValue(cid, 18) >= 1 then
setPlayerStorageValue(cid,18,0)
doRemoveCondition(cid, CONDITION_OUTFIT)
end
------------Saffari----------------------------------
if getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then
doRemoveCondition(cid, CONDITION_OUTFIT)
setPlayerStorageValue(cid, 17000, 0)
setPlayerStorageValue(cid, 17001, 0)
setPlayerStorageValue(cid, 63215, -1)
doChangeSpeed(cid, PlayerSpeed)
local item = getPlayerSlotItem(cid, 8)
local btype = getPokeballType(item.itemid)
if #getCreatureSummons(cid) <= 0 then
if isInArray(pokeballs[btype].all, item.itemid) then
doTransformItem(item.uid, pokeballs[btype].off)
doItemSetAttribute(item.uid, "hp", 0)
end
end
end
------------Edited Golden Arena------------------
if getPlayerStorageValue(cid, 22545) == 1 then
if getGlobalStorageValue(22550) == 1 then
doPlayerSendTextMessage(cid, 20, "Você foi o último sobrevivente da Golden Arena! Tome sua recompensa!")
doPlayerAddItem(cid, 2160, getPlayerStorageValue(cid, 22551)*30/4)
doPlayerAddExperience(cid, 1000, getPlayerStorageValue(cid, 22551)*30)
setPlayerStorageValue(cid, 22545, -1)
doTeleportThing(cid, getClosestFreeTile(cid, getClosestFreeTile(cid, posBackGolden)), false)
doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid))
--setPlayerRecordWaves(cid)
endGoldenArena()
return false --alterado v1.8
else
setGlobalStorageValue(22550, getGlobalStorageValue(22550)-1)
setPlayerStorageValue(cid, 22545, -1)
doTeleportThing(cid, getClosestFreeTile(cid, posBackGolden), false)
doPlayerAddItem(cid, 2152, getPlayerStorageValue(cid, 22551)*5)
doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid))
--setPlayerRecordWaves(cid)
return true
end
end
----------------------------------
if getPlayerSex(cid) == 1 then
local corpse = doCreateItem(3058, 1, getThingPos(cid))
doDecayItem(corpse)
doItemSetAttribute(corpse, "name", "dead human (Vol:8). You recognize ".. getCreatureName(cid) ..". He was killed by a ".. getCreatureName(attacker) .."")
elseif getPlayerSex(cid) == 0 then
local corpse = doCreateItem(3065, 1, getThingPos(cid))
doDecayItem(corpse)
doItemSetAttribute(corpse, "name", "dead human (Vol:8). You recognize ".. getCreatureName(cid) ..". She was killed by a ".. getCreatureName(attacker) .."")
end
end
doCreatureAddHealth(cid, -valor, 3, 180)
if not isPlayer(cid) then
addEvent(sendPlayerDmgMsg, 5, cid, "Você perdeu "..valor.." em pontos de vida por um attack de "..getSomeoneDescription(attacker)..".")
end
return false
end
--------------------------------------------------
--if isMonster(attacker) and getPlayerStorageValue(attacker, 201) ~= -1 then
-- if isPlayer(cid) then
-- return false
-- end
-- if getPlayerStorageValue(getCreatureMaster(cid), ginasios[getPlayerStorageValue(attacker, 201)].storage) ~= 1 then
-- return false
-- end
--end
---------------------------------------------------
--if isMonster(cid) and getPlayerStorageValue(cid, 201) ~= -1 then
-- if getPlayerStorageValue(getCreatureMaster(attacker), ginasios[getPlayerStorageValue(cid, 201)].storage) ~= 1 then
-- return false
-- end
--end
--------------------------------------------------
if ehMonstro(cid) and ehMonstro(attacker) then
return false --edited monstro nao atacar monstro
end
--------------------------------------------------
--------------------REFLECT-----------------------
if getPlayerStorageValue(cid, 21099) >= 1 and combat ~= COMBAT_PHYSICALDAMAGE then
if not isInArray({"Team Claw", "Team Slice"}, getPlayerStorageValue(attacker, 21102)) then
doSendMagicEffect(getThingPosWithDebug(cid), 135)
doSendAnimatedText(getThingPosWithDebug(cid), "REFLECT", COLOR_GRASS)
addEvent(docastspell, 100, cid, getPlayerStorageValue(attacker, 21102))
if getCreatureName(cid) == "Wobbuffet" then
doRemoveCondition(cid, CONDITION_OUTFIT)
end
setPlayerStorageValue(cid, 21099, -1) --alterado v1.6
setPlayerStorageValue(cid, 21100, 1)
setPlayerStorageValue(cid, 21101, attacker)
setPlayerStorageValue(cid, 21103, getTableMove(attacker, getPlayerStorageValue(attacker, 21102)).f)
setPlayerStorageValue(cid, 21104, getCreatureOutfit(attacker).lookType)
return false
end
end
-------------------------------------------------
local multiplier = 1
if isCreature(cid) then
poketype1 = pokes[getCreatureName(cid)].type --alterado v1.6
poketype2 = pokes[getCreatureName(cid)].type2
end
if not poketype1 or not poketype2 then return false end --alterado v1.6
if getCreatureCondition(cid, CONDITION_INVISIBLE) then
return false
end
if damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignored, damageCombat) then
if isInArray(effectiveness[damageCombat].super, poketype1) then
multiplier = multiplier + 0.5
end
if isInArray(effectiveness[damageCombat].super, poketype2) then
multiplier = multiplier + 0.5
end
if isInArray(effectiveness[damageCombat].weak, poketype1) then --Edited effetivenes = pxg... ;p
multiplier = multiplier - 0.25
end
if isInArray(effectiveness[damageCombat].weak, poketype2) then
multiplier = multiplier - 0.25
end
if isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) then
if isInArray(specialabilities["foresight"], getCreatureName(attacker)) then --alterado v1.5
multiplier = 0.5
end --alterado v1.6
end
-- X-Attack --
if isSummon(attacker) and isPlayer(getCreatureMaster(attacker)) then
local TierArray = {8, 9, 10, 11, 12, 13, 14}
local Tiers = {
[8] = {bonus = AtkBonus1},
[9] = {bonus = AtkBonus2},
[10] = {bonus = AtkBonus3},
[11] = {bonus = AtkBonus4},
[12] = {bonus = AtkBonus5},
[13] = {bonus = AtkBonus6},
[14] = {bonus = AtkBonus7},
}
local ball = getPlayerSlotItem(getCreatureMaster(attacker), 8)
local Tier = getItemAttribute(ball.uid, "heldx")
local bonusatk = {}
if isInArray(TierArray, getItemAttribute(ball.uid, "heldx")) then
bonusatk = Tiers[Tier].bonus
else
bonusatk = 1
end
multiplier = multiplier * bonusatk
end
-- X-Attack --
elseif combat == COMBAT_PHYSICALDAMAGE then
if isGhostPokemon(cid) then --alterado v1.3
if not isInArray(specialabilities["foresight"], getCreatureName(attacker)) then --passiva Foresight!!
doSendMagicEffect(getThingPos(cid), 3)
return false
end
end
local cd = getPlayerStorageValue(attacker, conds["Miss"])
local cd2 = getPlayerStorageValue(attacker, conds["Confusion"])
local cd3 = getPlayerStorageValue(attacker, conds["Stun"])
legendarios = { "Blue Tower 1", "Blue Tower 2", "Blue Tower 3", "Red Tower 1", "Red Tower 2", "Red Tower 3", "Entei", "Moltres2", "Zapdos2", "Articuno2", "Celebi2"}
if cd >= 0 or cd2 >= 0 or cd3 >= 0 and not isInArray(legendarios, getCreatureName(attacker))then
if math.random(1, 100) > 50 then --Edited miss system -- 50% chance de da miss no atk fisico
doSendMagicEffect(getThingPos(cid), 211)
doSendAnimatedText(getThingPos(attacker), "MISS", 215) --alterado v1.5
return false
end
end
end
--------------------------------------------------
local valor = value
if multiplier == 1.5 and poketype2 == "no type" then
multiplier = 2 --alterado v1.6
elseif multiplier == 1.5 and poketype2 ~= "no type" then
multiplier = 1.75
elseif multiplier == 1.25 then --edited effetivines = pxg
multiplier = 1
end
--------------------------------------------------
if isSummon(cid) and isSummon(attacker) then
if getCreatureMaster(cid) == getCreatureMaster(attacker) then
return false
end
if canAttackOther(cid, attacker) == "Cant" then
return false
end
end
valor = valor * multiplier
if isSummon(attacker) then
valor = valor * getHappinessRate(attacker)
else
valor = valor * summonReduction
end
valor = math.floor(valor)
if combat == COMBAT_PHYSICALDAMAGE then
block = 1 - (getDefense(cid) / (getOffense(attacker) + getDefense(cid)))
valor = getOffense(attacker) * block
if isInArray(specialabilities["counter"], getCreatureName(cid)) then
if math.random(1, 100) <= 10 then
doCreatureAddHealth(attacker, -valor, 3, 180)
valor = 0
doSendAnimatedText(getThingPosWithDebug(cid), "COUNTER", 215)
end
end
-- Return --
if isSummon(cid) and isPlayer(getCreatureMaster(cid)) then
local returnbonus = {}
local ball = getPlayerSlotItem(getCreatureMaster(cid), 8)
local Tiers = {
[15] = {bonus = DmgReturn1},
[16] = {bonus = DmgReturn2},
[17] = {bonus = DmgReturn3},
[18] = {bonus = DmgReturn4},
[19] = {bonus = DmgReturn5},
[20] = {bonus = DmgReturn6},
[21] = {bonus = DmgReturn7},
}
local Tier = getItemAttribute(ball.uid, "heldx")
if Tier and Tier > 14 and Tier < 22 then
returnbonus = math.floor((valor * Tiers[Tier].bonus))
elseif not isInArray(Tiers, Tier) then
returnbonus = 0
end
doCreatureAddHealth(attacker, -returnbonus)
end
-- Return --
else
-- Return --
if isSummon(cid) and isPlayer(getCreatureMaster(cid)) then
local returnbonus = {}
local ball = getPlayerSlotItem(getCreatureMaster(cid), 8)
local Tiers = {
[15] = {bonus = DmgReturn1},
[16] = {bonus = DmgReturn2},
[17] = {bonus = DmgReturn3},
[18] = {bonus = DmgReturn4},
[19] = {bonus = DmgReturn5},
[20] = {bonus = DmgReturn6},
[21] = {bonus = DmgReturn7},
}
local Tier = getItemAttribute(ball.uid, "heldx")
if Tier and Tier > 14 and Tier < 22 then
returnbonus = math.floor((valor * Tiers[Tier].bonus))
elseif not isInArray(Tiers, Tier) then
returnbonus = 0
end
doCreatureAddHealth(attacker, -returnbonus)
end
-- Return --
-- Critical --
if isSummon(attacker) and isPlayer(getCreatureMaster(attacker)) then
local Tiers = {
[50] = {chance = Critical1},
[51] = {chance = Critical2},
[52] = {chance = Critical3},
[53] = {chance = Critical4},
[54] = {chance = Critical5},
[55] = {chance = Critical6},
[56] = {chance = Critical7},
}
local ball = getPlayerSlotItem(getCreatureMaster(attacker), 8)
local Tier = getItemAttribute(ball.uid, "heldx")
if Tier and Tier > 84 and Tier < 92 then
if math.random(1,100) <= Tiers[Tier].chance then
valor = valor * 2
doSendAnimatedText(getThingPos(cid), "STK "..(valor * 0.25), 115)
end
end
end
-- Critical --
-- Return --
valor = valor / getDefense(cid)
end
-------------------------Edited CLAN SYSTEM-----------------------------------
if isSummon(attacker) and getPlayerStorageValue(getCreatureMaster(attacker), 86228) >= 1 then
valor = valor*getClanPorcent(getCreatureMaster(attacker), combat, "atk") --alterado v1.3
elseif isSummon(cid) and getPlayerStorageValue(getCreatureMaster(cid), 86228) >= 1 then
valor = valor - (valor*getClanPorcent(getCreatureMaster(cid), combat, "def", pokes[getCreatureName(cid)].type, pokes[getCreatureName(cid)].type2))
end
-----------------------------------------------------------------------
---------------------- FEAR / ROAR ------------------------------------
if getPlayerStorageValue(attacker, conds["Fear"]) >= 1 then --alterado!!
return true
end
--------------------------------------------------------------------------
if damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignored, damageCombat) then
if isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) then
if not isInArray(specialabilities["foresight"], getCreatureName(attacker)) then --alterado v1.6
valor = valor * 0 --alterado v1.5
end
end
end
if damageCombat == GROUNDDAMAGE then
if isInArray(specialabilities["levitate"], getCreatureName(cid)) then
valor = 0 --alterado v1.5
end
end
if getCreatureName(cid) == ironBody.name and getPlayerStorageValue(cid, 2818) < os.time() and math.random(1, 100) <= ironBody.chance then
doSetCreatureOutfit(cid, {lookType = ironBody.outfit}, ironBody.duration * 1000)
setPlayerStorageValue(cid, 9658783, 1)
setPlayerStorageValue(cid, 2818, os.time() + ironBody.cooldown)
addEvent(function()
if isCreature(cid) then
doRemoveCondition(cid, CONDITION_OUTFIT)
setPlayerStorageValue(cid, 9658783, -1)
end
end, ironBody.duration * 1000)
end
-----------------------------------------------------------------------------
local p = getThingPos(cid)
if p.x == 1 and p.y == 1 and p.z == 10 then
return false
end
if getPlayerStorageValue(cid, 9658783) == 1 then
return false --imune
end
-----------------------------------------------------------------------------
local config = {
sturdy = { --Pokémons que possuem a habilidade Sturdy. Configuração: ["nome_do_pokemon"] = lookType,
["Aggron"] = 2279,
["Mega Aggron"] = 2299,
["Shiny Mega Aggron"] = 2299,
["Shiny Aggron"] = 2280,
["Sudowoodo"] = 2282,
["Shiny Sudowoodo"] = 2282
},
cd = 0, --Cooldown da habilidade.
duration = 8, --Duração, em segundos, do Sturdy.
storage = 8402,
}
if getPlayerStorageValue(cid, config.storage) > -1 then
return false
end
local hp = getCreatureHealth(cid) - valor
if not isPlayer(cid) and hp <= 1 and config.sturdy[getCreatureName(cid)] then
local b = true
if isSummon(cid) then
local ball = getPlayerSlotItem(getCreatureMaster(cid), 8)
if ball and getCD(ball.uid, "sturdy") > 0 then
b = false
end
end
if b then
if hp < 1 then
doCreatureAddHealth(cid, hp < 0 and (hp * -1) + 1 or 1)
end
setPlayerStorageValue(cid, config.storage, 1)
if isSummon(cid) then
local ball = getPlayerSlotItem(getCreatureMaster(cid), 8)
if ball then
setCD(ball.uid, "sturdy", config.duration + config.cd)
end
end
doSetCreatureOutfit(cid, {lookType = config.sturdy[getCreatureName(cid)]}, config.duration * 1000)
addEvent(function()
if isCreature(cid) and getPlayerStorageValue(cid, config.storage) > -1 then
setPlayerStorageValue(cid, config.storage, -1)
doCreatureAddHealth(cid, -getCreatureHealth(cid))
end
end, config.duration * 1000)
end
end
if valor >= getCreatureHealth(cid) then
if isInArray(cannotKill, combat) and isPlayer(cid) then
valor = getCreatureHealth(cid) - 1
else
valor = getCreatureHealth(cid)
end
end
valor = math.floor(valor) --alterado v1.6
------------------ SKILLs Q CURAM O ATTACKER ---------------------------------
local function doHeal(cid, amount)
if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then
amount = math.abs(getCreatureHealth(cid)-getCreatureMaxHealth(cid))
end
if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then --alterado v1.6
doCreatureAddHealth(cid, amount)
doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65)
end
end
if damageCombat == PSYCHICDAMAGE or damageCombat == MIRACLEDAMAGE then
if getPlayerStorageValue(attacker, 95487) >= 1 then
doHeal(attacker, valor)
setPlayerStorageValue(attacker, 95487, -1) --alterado v1.6
end
elseif damageCombat == SEED_BOMBDAMAGE then
doHeal(attacker, valor)
end
--------------------------------------------
----------SACRED FIRE-----------------------
if combat == SACREDDAMAGE and not ehNPC(cid) then --alterado v1.6
local ret = {}
ret.id = cid
ret.cd = 9
ret.check = getPlayerStorageValue(cid, conds["Silence"])
ret.eff = 39
ret.cond = "Silence"
doCondition2(ret)
end
---------------------------------------------
--------------Passiva Lifesteal Clobat------------
if combat == COMBAT_PHYSICALDAMAGE then
if getCreatureName(attacker) == "Crobat" then --alterado v1.4
doCreatureAddHealth(attacker, math.floor(valor))
doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30)
end
end
--------------------------------------------
--------------Passiva Lifesteal Clobat------------
if combat == COMBAT_PHYSICALDAMAGE then
if getCreatureName(attacker) == "Golbat" then --alterado v1.4
doCreatureAddHealth(attacker, math.floor(valor))
doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30)
end
end
--------------------------------------------
--------------Passiva Lifesteal Clobat------------
if combat == COMBAT_PHYSICALDAMAGE then
if getCreatureName(attacker) == "Zubat" then --alterado v1.4
doCreatureAddHealth(attacker, math.floor(valor))
doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30)
end
end
--------------------------------------------
--------------Passiva Lifesteal Clobat------------
if combat == COMBAT_PHYSICALDAMAGE then
if getCreatureName(attacker) == "Shiny Crobat" then --alterado v1.4
doCreatureAddHealth(attacker, math.floor(valor))
doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30)
end
end
--------------------------------------------
--------------Passiva Lifesteal Clobat------------
if combat == COMBAT_PHYSICALDAMAGE then
if getCreatureName(attacker) == "Shiny Golbat" then --alterado v1.4
doCreatureAddHealth(attacker, math.floor(valor))
doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30)
end
end
--------------------------------------------
--------------Passiva Lifesteal Clobat------------
if combat == COMBAT_PHYSICALDAMAGE then
if getCreatureName(attacker) == "Shiny Zubat" then --alterado v1.4
doCreatureAddHealth(attacker, math.floor(valor))
doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30)
end
end
--------------------------------------------
valor = math.abs(valor) --alterado v1.9
if isSummon(cid) and valor >= getCreatureHealth(cid) then
onPokeHealthChange(getCreatureMaster(cid), true)
elseif isSummon(cid) then
onPokeHealthChange(getCreatureMaster(cid))
end
if isSummon(attacker) then
if combat == COMBAT_PHYSICALDAMAGE then
doTargetCombatHealth(getCreatureMaster(attacker), cid, PHYSICALDAMAGE, -valor, -valor, 255)
addEvent(doDoubleHit, 1000, attacker, cid, valor, races) --alterado v1.6
else
doTargetCombatHealth(getCreatureMaster(attacker), cid, damageCombat, -valor, -valor, 255)
end
else
if combat ~= COMBAT_PHYSICALDAMAGE then
doCreatureAddHealth(cid, -math.abs(valor), 3, combats[damageCombat].cor)
else
doCreatureAddHealth(cid, -math.abs(valor), 3, races[getMonsterInfo(getCreatureName(cid)).race].cor)
addEvent(doDoubleHit, 1000, attacker, cid, valor, races) --alterado v1.6
end
if isSummon(cid) and valor ~= 0 then
--addEvent(sendPlayerDmgMsg, 5, getCreatureMaster(cid), "Seu "..getCreatureName(cid).." perdeu "..valor.." de vida pelo attack do "..getSomeoneDescription(attacker)..".")
end
end
if damageCombat == FIREDAMAGE and not isBurning(cid) then
-- Helfire --
local hellfire = {}
if isSummon(attacker) and isPlayer(getCreatureMaster(attacker)) then
local ball = getPlayerSlotItem(getCreatureMaster(attacker), 8)
local TierArray = {22, 23, 24, 25, 26, 27, 28}
local Tiers = {
[22] = {bonus = HellBonus1},
[23] = {bonus = HellBonus2},
[24] = {bonus = HellBonus3},
[25] = {bonus = HellBonus4},
[26] = {bonus = HellBonus5},
[27] = {bonus = HellBonus6},
[28] = {bonus = HellBonus7},
}
local Tier = getItemAttribute(ball.uid, "heldx")
if Tier and Tier > 21 and Tier < 29 then
hellfire = Tiers[Tier].bonus
else
hellfire = 1
end
end
-- Hellfire --
local ret = {}
ret.id = cid
ret.cd = math.random(5, 12)
ret.check = getPlayerStorageValue(cid, conds["Burn"])
ret.damage = isSummon(attacker) and (getMasterLevel(attacker)+getPokemonBoost(attacker)) * hellfire or getPokemonLevel(attacker)
ret.cond = "Burn"
doCondition2(ret)
elseif damageCombat == POISONDAMAGE and not isPoisoned(cid) then
-- Poison --
local xpoison = {}
if isSummon(attacker) and isPlayer(getCreatureMaster(attacker)) then
local ball = getPlayerSlotItem(getCreatureMaster(attacker), 8)
local TierArray = {29, 30, 31, 32, 33, 34, 35}
local Tiers = {
[29] = {bonus = PoisonBonus1},
[30] = {bonus = PoisonBonus2},
[31] = {bonus = PoisonBonus3},
[32] = {bonus = PoisonBonus4},
[33] = {bonus = PoisonBonus5},
[34] = {bonus = PoisonBonus6},
[35] = {bonus = PoisonBonus7},
}
local Tier = getItemAttribute(ball.uid, "heldx")
if Tier and Tier > 28 and Tier < 36 then
xpoison = Tiers[Tier].bonus
elseif not isInArray(TierArray, getItemAttribute(ball.uid, "heldx")) then
xpoison = 1
end
end
-- Poison --
local ret = {}
ret.id = cid
ret.cd = math.random(6, 15)
ret.check = getPlayerStorageValue(cid, conds["Poison"])
local lvl = isSummon(attacker) and (getMasterLevel(attacker)) * xpoison or getPokemonLevel(attacker)
ret.damage = math.floor((getPokemonLevel(attacker)+lvl)/2)
ret.cond = "Poison"
doCondition2(ret)
end
--[[---------------CD BAR-----------------------
if isSummon(cid) then
doCreatureExecuteTalkAction(getCreatureMaster(cid), "/pokeread")
end ]]
------------------------------------POTIONS-------------------------------------------
if isSummon(cid) and type == STATSCHANGE_HEALTHLOSS then
if getPlayerStorageValue(cid, 173) >= 1 then
if damageCombat ~= BURNEDDAMAGE and damageCombat ~= POISONEDDAMAGE then
setPlayerStorageValue(cid, 173, -1) --alterado v1.6
doSendAnimatedText(getThingPos(cid), "LOST HEAL", 144)
end
end
end
----------------------------------------PASSIVAS------------------------------------- --alterado v1.6 \/ todas as passivas agora estao em lib/pokemon moves.lua
-------------------------------------------Counter Helix------------------------------------
if passivesChances["Helix"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Helix"][getCreatureName(cid)] then
docastspell(cid, "Counter Helix")
end
-------------------------------------------Lava-Counter----------------------------
if passivesChances["Lava"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Lava"][getCreatureName(cid)] then
docastspell(cid, "Lava-Counter")
end
-------------------------------------------Shock-Counter----------------------------
if passivesChances["Shock"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Shock"][getCreatureName(cid)] then
docastspell(cid, "Shock-Counter")
end
-------------------------------------------Bone Spin----------------------------
if passivesChances["Bone"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Bone"][getCreatureName(cid)] then
docastspell(cid, "Bone-Spin")
end
---------------------------------------Stunning Confusion-----------------------------------------
if passivesChances["Stunning"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Stunning"][getCreatureName(cid)] then
docastspell(cid, "Stunning Confusion")
end
--------------------------------------Electric Charge---------------------------------------------
if passivesChances["Electric Charge"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Electric Charge"][getCreatureName(cid)] then
docastspell(cid, "Electric Charge", 0, 0)
end
-------------------------------------Melody------------------------------------
if passivesChances["Melody"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Melody"][getCreatureName(cid)] then
docastspell(cid, "Melody")
end
------------------------------------- Dragon Fury / Fury ---------------------------------------
if passivesChances["Dragon Fury"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Dragon Fury"][getCreatureName(cid)] then
docastspell(cid, "Dragon Fury", 0, 0)
end
------------------------------------- Mega Drain ---------------------------------------
if passivesChances["Mega Drain"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Mega Drain"][getCreatureName(cid)] then
docastspell(cid, "Mega Drain")
end
------------------------------------- Spores Reaction ---------------------------------------
if passivesChances["Spores Reaction"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Spores Reaction"][getCreatureName(cid)] then
docastspell(cid, "Spores Reaction")
end
------------------------------------ Amnesia ----------------------------------------
if passivesChances["Amnesia"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Amnesia"][getCreatureName(cid)] then
docastspell(cid, "Amnesia", 0, 0)
end
----------------------------------- Zen Mind -----------------------------------------
if passivesChances["Zen Mind"][getCreatureName(cid)] and isWithCondition(cid) and math.random(1, 100) <= passivesChances["Zen Mind"][getCreatureName(cid)] then
docastspell(cid, "Zen Mind", 0, 0)
end
---------------------------------- Mirror Coat ---------------------------------------
if passivesChances["Mirror Coat"][getCreatureName(cid)] and math.random(1, 80) <= passivesChances["Mirror Coat"][getCreatureName(cid)] then
docastspell(cid, "Mirror Coat", 0, 0)
end
--------------------------------- Illusion -----------------------------------------
return false
end

 

Editado por josegvb
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Você deve colocar essa tabela em algum arquivo da lib:

ironBody = {
    name = "Bronzong",    --Nome do pokémon.
    outfit = xxx,         --Outfit.
    duration = 5,         --Duração.
    chance = 35,          --Chance, em %, de ativar a passiva.
    cooldown = 15,        --Cooldown para usá-la novamente.
}
Link para o comentário
Compartilhar em outros sites

  • 0

 

Você deve colocar essa tabela em algum arquivo da lib:

ironBody = {
    name = "Bronzong",    --Nome do pokémon.
    outfit = xxx,         --Outfit.
    duration = 5,         --Duração.
    chance = 35,          --Chance, em %, de ativar a passiva.
    cooldown = 15,        --Cooldown para usá-la novamente.
}

 

sim eu coloquei, mesmo assim fica dando esse erro, nem faço ideia de o pq tb coloquei aquele arquevo no goback

 

[19/02/2016 17:59:33] [Error - CreatureScript Interface]
[19/02/2016 17:59:33] data/creaturescripts/scripts/exp2.0.lua:onStatsChange
[19/02/2016 17:59:33] Description:
[19/02/2016 17:59:33] data/creaturescripts/scripts/exp2.0.lua:506: attempt to index global 'ironBody' (a nil value)
[19/02/2016 17:59:33] stack traceback:
[19/02/2016 17:59:33] data/creaturescripts/scripts/exp2.0.lua:506: in function <data/creaturescripts/scripts/exp2.0.lua:66>
goback

local EFFECTS = {
--[OutfitID] = {Effect}
["Magmar"] = 35,
["Shiny Magmar"] = 35,
["Shiny Magmortar"] = 35,
["Shiny Electivire"] = 48,
["Magmortar"] = 35,
["Electivire"] = 48,
["Jynx"] = 17, --alterado v1.5
["Shiny Jynx"] = 17,
["Piloswine"] = 205, --alterado v1.8
["Swinub"] = 205,
}
function onUse(cid, item, frompos, item2, topos)
if exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) > 0 then return true end
if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1
or getPlayerStorageValue(cid, 75846) >= 1 or getPlayerStorageValue(cid, 5700) >= 1 then --alterado v1.9 <<
return true
end
local ballName = getItemAttribute(item.uid, "poke")
local btype = getPokeballType(item.itemid)
local usando = pokeballs[btype]
if not usando then
doPlayerSendTextMessage(cid, 27, "Error in your pokeball.")
print(getCreatureName(cid).."'s pokeball presented error. Pokeball type: "..btype.." - NOT IN pokeballs TABLE (lib)")
return true
end
usando = usando.use
local effect = pokeballs[btype].effect
if not effect then
effect = 21
end
unLock(item.uid) --alterado v1.8
if item.itemid == usando then
if getPlayerStorageValue(cid, 990) == 1 then -- GYM
doPlayerSendCancel(cid, "No puedes regresar e pokemon en batallas de gimnasio.")
return true
end
---------------------------------------------------------------------------------------
if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then --alterado v1.6
if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 then
BackTeam(cid)
end
end
---------------------------------------------------------------------------------------
if #getCreatureSummons(cid) == 2 and getPlayerStorageValue(cid, 212124) >= 1 then
doPlayerSendCancel(cid, "No puedes ejecutar esto usando Control Mind")
return true --alterado v1.5
end
---------------------------------------------------------------------------------------
if #getCreatureSummons(cid) <= 0 then
if isInArray(pokeballs[btype].all, item.itemid) then
doTransformItem(item.uid, pokeballs[btype].off)
doItemSetAttribute(item.uid, "hp", 0)
doPlayerSendCancel(cid, "Tu pokemon esta muerto.")
return true
end
end
local cd = getCD(item.uid, "blink", 30)
if cd > 0 then
setCD(item.uid, "blink", 0)
end
local z = getCreatureSummons(cid)[1]
if getCreatureCondition(z, CONDITION_INVISIBLE) and not isGhostPokemon(z) then
return true
end
doReturnPokemon(cid, z, item, effect)
elseif item.itemid == pokeballs[btype].on then
if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then
doPlayerSendCancel(cid, "You must put your pokeball in the correct place!")
return TRUE
end
local thishp = getItemAttribute(item.uid, "hp")
if thishp <= 0 then
if isInArray(pokeballs[btype].all, item.itemid) then
doTransformItem(item.uid, pokeballs[btype].off)
doItemSetAttribute(item.uid, "hp", 0)
doPlayerSendCancel(cid, "Tu pokemon esta muerto.")
return true
end
end
local pokemon = getItemAttribute(item.uid, "poke")
if not pokes[pokemon] then
return true
end
----------------------- Sistema de nao poder carregar mais que 3 pokes lvl baixo e + q 1 poke de lvl medio/alto ---------------------------------
if not isInArray({5, 6}, getPlayerGroupId(cid)) then
local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK)
local lowPokes = {"Rattata", "Caterpie", "Weedle", "Oddish", "Pidgey", "Paras", "Poliwag", "Bellsprout", "Magikarp", "Hoppip", "Sunkern"}
local low = {}
local lw = 1
for e, f in pairs(pokeballs) do
for times = 1, 3 do
local items = getItemsInContainerById(bp.uid, pokeballs[e].all[times])
if #items >= 1 then --alterado v1.6
for _, uid in pairs(items) do
local nome1 = getItemAttribute(uid, "poke")
if not isInArray(lowPokes, pokemon) and nome1 == pokemon then
return doPlayerSendTextMessage(cid, 27, "Lo sentimos, No puedes usar 2 Pokemones iguales!")
elseif isInArray(lowPokes, pokemon) then
if nome1 == pokemon then
table.insert(low, lw, nome1)
lw = lw +1
end
end
end
end
end
end
if #low >= 3 then
return doPlayerSendTextMessage(cid, 27, "Lo sentimos, no puedes usar mas de 3 pokemones iguales de level bajo!")
end
end
---------------------------------------------------------------------------------------------------------------------------------------------------
local x = pokes[pokemon]
local boost = getItemAttribute(item.uid, "boost") or 0
if getPlayerLevel(cid) < (x.level+boost) then
doPlayerSendCancel(cid, "Necesitas ser level "..(x.level+boost).." para usar este pokemon.")
return true
end
---------------------------- Sistema pokes de clan --------------------------------------
local shinysClan = {
["Shiny Fearow"] = {4, "Wingeon"},
["Shiny Flareon"] = {1, "Volcanic"},
["Shiny Vaporeon"] = {2, "Seavel"},
["Shiny Jolteon"] = {9, "Raibolt"},
["Shiny Hypno"] = {7, "Psycraft"},
["Shiny Golem"] = {3, "Orebound"},
["Shiny Vileplume"] = {8, "Naturia"},
["Shiny Nidoking"] = {5, "Malefic"},
["Shiny Hitmontop"] = {6, "Gardestrike"}, --alterado v1.4
}
if shinysClan[pokemon] and (getPlayerGroupId(cid) < 3 or getPlayerGroupId(cid) > 6) then
if getPlayerStorageValue(cid, 86228) ~= shinysClan[pokemon][1] then
doPlayerSendCancel(cid, "You need be a member of the clan "..shinysClan[pokemon][2].." to use this pokemon!")
return true
elseif getPlayerStorageValue(cid, 862281) ~= 5 then
doPlayerSendCancel(cid, "Necesitas ser entrenador Rango 5 de tu clan para poder usar este pokemon!")
return true
end
end
--------------------------------------------------------------------------------------
doSummonMonster(cid, pokemon)
local pk = getCreatureSummons(cid)[1]
if not isCreature(pk) then return true end
------------------------passiva hitmonchan------------------------------
if isSummon(pk) then --alterado v1.8 \/
if pokemon == "Shiny Hitmonchan" or pokemon == "Hitmonchan" then
if not getItemAttribute(item.uid, "hands") then
doSetItemAttribute(item.uid, "hands", 0)
end
local hands = getItemAttribute(item.uid, "hands")
doSetCreatureOutfit(pk, {lookType = hitmonchans[pokemon][hands].out}, -1)
end
end
-------------------------------------------------------------------------
local pk = getCreatureSummons(cid)[1]
if isSummon(pk) then --alterado v1.8 \/
if pokemon == "Shiny Ditto" or pokemon == "Ditto" then
doItemSetAttribute(item.uid, "nick", "Ditto")
end
end
local pk = getCreatureSummons(cid)[1]
if isSummon(pk) then --alterado v1.8 \/
if pokemon == "Shiny Ditto" then
doItemSetAttribute(item.uid, "Held", 1)
end
end
-------------------------------------------------------------------------
---------movement magmar, jynx-------------
if EFFECTS[getCreatureName(pk)] then
markPosEff(pk, getThingPos(pk))
sendMovementEffect(pk, EFFECTS[getCreatureName(pk)], getThingPos(pk))
end
--------------------------------------------------------------------------
---if getCreatureName(pk) == "Ditto" or getCreatureName(pk) == "Shiny Ditto" then --edited
-- local left = getItemAttribute(item.uid, "transLeft")
-- local name = getItemAttribute(item.uid, "transName")
-- if left and left > 0 then
-- setPlayerStorageValue(pk, 1010, name)
-- doSetCreatureOutfit(pk, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)
-- addEvent(deTransform, left * 1000, pk, getItemAttribute(item.uid, "transTurn"))
-- doItemSetAttribute(item.uid, "transBegin", os.clock())
-- else
-- setPlayerStorageValue(pk, 1010, getCreatureName(pk) == "Ditto" and "Ditto" or "Shiny Ditto") --edited
-- end
-- end
if isGhostPokemon(pk) then doTeleportThing(pk, getPosByDir(getThingPos(cid), math.random(0, 7)), false) end
doCreatureSetLookDir(pk, 2)
adjustStatus(pk, item.uid, true, true, true)
doRegenerateWithY(getCreatureMaster(pk), pk)
doCureWithY(getCreatureMaster(pk), pk)
doTransformItem(item.uid, item.itemid+1)
local pokename = getPokeName(pk) --alterado v1.7
local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", pokename)
doCreatureSay(cid, mgo, TALKTYPE_SAY)
doSendMagicEffect(getCreaturePosition(pk), effect)
if pokename == ironBody.name then
doSetCreatureOutfit(pk, {lookType = ironBody.outfit}, ironBody.duration * 1000)
setPlayerStorageValue(pk, 9658783, 1)
setPlayerStorageValue(pk, 2818, os.time() + ironBody.cooldown)
addEvent(function()
if isCreature(pk) then
doRemoveCondition(pk, CONDITION_OUTFIT)
setPlayerStorageValue(pk, 9658783, -1)
end
end, ironBody.duration * 1000)
end
if useOTClient then
doPlayerSendCancel(cid, '12//,show') --alterado v1.7
end
else
doPlayerSendCancel(cid, "This pokemon is fainted.")
end
if useKpdoDlls then
doUpdateMoves(cid)
end
return true
end

passiveschances

passivesChances = {
["Helix"] = { --counter helix, counter spin e afins
["Scyther"] = 18,
["Scizor"] = 18,
["Shiny Scyther"] = 22,
["Hitmontop"] = 22,
["Rolling Hitmontop"] = 22,
["Shiny Hitmontop"] = 22,
["Pineco"] = 10,
["Forretress"] = 15,
["Kangaskhan"] = 18,
["Shiny Scizor"] = 22.5,
["Mega Lucario"] = 23,
},
["Lava"] = {
["Magmar"] = 18,
["Shiny Magmar"] = 22,
["Shiny Magmortar"] = 26,
["Magmortar"] = 20,
["Magby"] = 15,
["Ho-oh"] = 20,
["Entei"] = 20,
},
["Bone"] = {
["Marowak"] = 15,
["Shiny Marowak"] = 22,
["Cubone"] = 10,
["Shiny Cubone"] = 15,
},
["Stunning"] = { --stunning confusion
["Golduck"] = 20,
["Psyduck"] = 18,
["Wobbuffet"] = 50,
["Green Wobbuffet"] = 55,
["Purple Wobbuffet"] = 55,
["Mega Wobbuffet"] = 85,
["Mega Alakazam"] = 70,
["Dark Mega Alakazam"] = 70,
},
["Shock"] = {
["Electabuzz"] = 18,
["Shiny Electabuzz"] = 22,
["Shiny Electivire"] = 26,
["Electivire"] = 20,
["Elekid"] = 15,
["Raikou"] = 20,
["Mini Zapdos"] = 26,
},
["Electric Charge"] = {
["Pikachu"] = 12,
["Raichu"] = 18,
["Shiny Raichu"] = 22,
},
["Melody"] = {
["Wigglytuff"] = 20,
["Sylveon"] = 22,
},
["Groundshock"] = {
["Kangaskhan"] = 20,
["Shiny Aggron"] = 25,
["Mega Aggron"] = 40,
},
["Dragon Fury"] = {
["Persian"] = 15,
["Raticate"] = 10,
["Shiny Raticate"] = 15,
["Gyarados"] = 18,
["Shiny Gyarados"] = 22,
["Dratini"] = 8,
["Dragonair"] = 12,
["Dragonite"] = 18,
["Salamence"] = 18,
["Shiny Salamence"] = 23,
["Shiny Dratini"] = 15,
["Shiny Dragonair"] = 22,
},
["Mega Drain"] = {
["Oddish"] = 10,
["Gloom"] = 15,
["Vileplume"] = 18,
["Bellossom"] = 18,
["Kabuto"] = 10,
["Kabutops"] = 18,
["Paras"] = 8,
["Parasect"] = 18,
["Tangela"] = 18,
["Venonat"] = 10,
["Venomoth"] = 18,
["Hoppip"] = 8,
["Skiploom"] = 12,
["Jumpluff"] = 18,
["Shiny Oddish"] = 20,
["Shiny Venonat"] = 20,
["Shiny Venomoth"] = 20,
["Shiny Vileplume"] = 20,
["Shiny Paras"] = 20,
["Shiny Parasect"] = 20,
["Shiny Tangela"] = 20,
["Tangrowth"] = 18,
["Shiny Tangrowth"] = 21.2,
["Mega Venusaur"] = 24,
["Mega Tangrowth"]= 21.2
},
["Spores Reaction"] = {
["Oddish"] = 10,
["Tangela"] = 18,
["Shiny Tangela"] = 20,
["Gloom"] = 15,
["Vileplume"] = 18,
["Bellossom"] = 18,
["Hoppip"] = 8,
["Skiploom"] = 12,
["Jumpluff"] = 18,
["Paras"] = 8,
["Parasect"] = 18,
["Shiny Vileplume"] = 20,
["Shiny Oddish"] = 20,
["Shiny Paras"] = 20,
["Shiny Parasect"] = 20,
["Tangrowth"] = 19,
["Shiny Tangrowth"] = 25,
},
["Amnesia"] = {
["Wooper"] = 10,
["Quagsire"] = 15,
["Swinub"] = 10,
["Wailord"] = 10,
["Piloswine"] = 15,
["Lorelei Piloswine"] = 15,
["Shiny Piloswine"] = 15,
},
["Zen Mind"] = {
["Slowking"] = 20,
["Shiny Slowking"] = 20,
["Blue Tower 1"] = 100,
["Blue Tower 2"] = 100,
["Blue Tower 3"] = 100,
["Red Tower 1"] = 100,
["Red Tower 2"] = 100,
["Red Tower 3"] = 100,
},
["Mirror Coat"] = {
["Wobbuffet"] = 50,
["Green Wobbuffet"] = 56,
["Purple Wobbuffet"] = 56,
["Mega Wobbuffet"] = 85,
},
["Demon Kicker"] = {
["Hitmonlee"] = 25,
["Shiny Hitmonlee"] = 28,
},
["Demon Puncher"] = {
["Hitmonchan"] = 25,
["Shiny Hitmonchan"] = 28,
},
["Evasion"] = {
["Shiny Scizor"] = 28,
["Scyther"] = 28,
["Shiny Scyther"] = 30,
["Scizor"] = 28,
["Hitmonlee"] = 28,
["Hitmonchan"] = 28,
["Hitmontop"] = 28,
["Shiny Hitmonlee"] = 28,
["Furios Scyther"] = 28,
["Rolling Hitmontop"] = 28,
["Puncher Hitmonchan"] = 28,
["Shiny Hitmonchan"] = 30,
["Shiny Hitmontop"] = 30,
["Tyrogue"] = 15,
["Ledian"] = 15,
["Ledyba"] = 10,
["Sneasel"] = 20,
["Beedrill"] = 20,
["Shiny Beedrill"] = 28,
["Mega Lucario"] = 30,
},
ironBody = {
name = "Bronzong", --Nome do pokémon.
outfit = 2042, --Outfit.
duration = 5, --Duração.
chance = 90, --Chance, em %, de ativar a passiva.
cooldown = 15, --Cooldown para usá-la novamente.
}
}

o goback tb esta fazendo o cdBar somer

 

Editado por josegvb
Link para o comentário
Compartilhar em outros sites

  • 0

Cara, você não coloca a tabela que eu mandei dentro de passiveschances. Sendo mais preciso, deixe-a separada no arquivo.

 

valeu, tira 1 ultima duvida pfv, enquanto esse msm post,

onde tem que adicionar essa funçao?

 

function jump(cid, rounds)

Link para o comentário
Compartilhar em outros sites

  • 0

Coloque o código da função em qualquer arquivo da lib (pode ser 050-function.lua, para melhor organização, ou até mesmo abaixo da tabela do Iron Body).

 

pronto ficou dahora, unica coisa que esta faltando é q a spell Heavy Slam nao esta puxando os bixos, e tb vi que o cara la falou pra você enquanto o Earthquake (que os pokes sao elevados a cada vez q eles toman 1 hit do quake mas fecharam o topico la e isso nao tive resposta =x coloquei aqui mas é o onix quem se eleva 1x kkk

Link para o comentário
Compartilhar em outros sites

  • 0

O Heavy Slam empurra, não puxa. Se você instalou os códigos corretamente e a base usada é a mesma, então a spell está funcionando como deveria.

 

Quanto ao Earthquake e outras spells elevarem outras criaturas, faça o seguinte:

Em qualquer arquivo da lib, coloque a seguinte tabela e configura nela as magias que realizem tal efeito:

JUMP_SPELLS = {"Earthquake"}

Depois, em newStatusSyst.lua (data/lib), no código da função:

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

Abaixo de:

if isSummon(cid) and (ehMonstro(pid) or (isSummon(pid) and canAttackOther(cid, pid) == "Can") or (isPlayer(pid) and canAttackOther(cid, pid) == "Can" and #getCreatureSummons(pid) <= 0)) and pid ~= cid then
    if canAtk then     --alterado v1.6

coloque:

if isInArray(JUMP_SPELLS, spell) then
    jump(pid, 1)
end

Por fim, abaixo destas linhas:

elseif ehMonstro(cid) and (isSummon(pid) or (isPlayer(pid) and #getCreatureSummons(pid) <= 0)) and pid ~= cid then
    if canAtk then    --alterado v1.6

coloque:

if isInArray(JUMP_SPELLS, spell) then
    jump(pid, 1)
end

Assim, as spells que usam a função doMoveInArea2 poderão levantar outras criaturas atacáveis. Entretanto, outras magias não poderiam ser generalizadas assim, porque as funções usadas são originárias das sources.

Para mudar isso, você teria que, em alguns casos, modificar individualmente o código das spells ou complementar funções usadas, em outros casos (como da função doDanoWithProtect, usada em várias magias em área).

Link para o comentário
Compartilhar em outros sites

  • 0

funfando 99% @@zipter98, unico erro é que quando o pokemon entra na area to Earhtquake, logo apos entrar ele fica Parado, e nem se meche ate a spell parar, ele ainda fica tacando cd e tals porem para de se mexer e paresce q for alguma stun sla

f0854376d0cf4dc0c8e562180d7eede2.gif

 

e olha a configuraçao do item

7cd6ecb312a568e3922ccc51ab584e91.png

 

Link para o comentário
Compartilhar em outros sites

  • 0

É por causa que o tempo que o pokémon fica levantado coincide com o intervalo entre cada tick do Earthquake. Talvez diminuindo o primeiro conseguimos corrigir este problema.

Nestas linhas, altere o número 200 até encontrar um valor agradável (quanto menor, mais rápido):

end, rounds == 1 and 200 or (i + 2) * 100)
end, i * (rounds == 1 and 200 or 100))
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

@@zipter98, entao

b6744cc5ebcaf4ee5055774ac913f635.gif

function jump(cid, rounds)
    doChangeSpeed(cid, -getCreatureSpeed(cid))
    doCreatureSetNoMove(cid, true)
    for i = 1, rounds do
        addEvent(function()
            if isCreature(cid) then
                local pos = getThingPos(cid)
                local item = doCreateItem(15545, 1, pos)
                addEvent(function()
                    local it = getTileItemById(pos, 15545).uid
                    if it > 0 then
                        doRemoveItem(it)
                    end
                    if i == rounds then
                        doRegainSpeed(cid)
                        doCreatureSetNoMove(cid, false)
                    end
                end, rounds == 1 and 2 or (i + 2) * 100)
            end
        end, i * (rounds == 1 and 2 or 100))
    end
end 

testei 150, 110, 50, 10 e ate 2 e ficou assim

 

Link para o comentário
Compartilhar em outros sites

  • 0

 

Remova estas linhas:

doChangeSpeed(cid, -getCreatureSpeed(cid))
doCreatureSetNoMove(cid, true)
doRegainSpeed(cid)
doCreatureSetNoMove(cid, false)

 

100% :D mandei 1 duvida enquanto 1 spell no PM, se tiver como ajudar la agradesço muito ^^ adorei esse sistema, ficou igual a pxg msm

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...