LO
poketibia

[Encerrado] AJUDA PORFAVOR ERRO NO CLAN SYSTEM

Por lol08, 19 de set. de 2015 em Tópicos Sem Resposta

ajuda nesse erro pf
27
4.4k
lol08L
19 de setembro de 2015 às 23:48

Galera meu server ta com um erro que do nada o player bug o clan system ou algo assim .


ai começa lagar e os pokemon nao hit ele .


me ajudem pf


post-381773-0-68696400-1442717246_thumb.jpg

LumusL
19 de setembro de 2015 às 23:48

Poste o script clan system para que fique mais fácil de ajuda-lo.

lol08L
19 de setembro de 2015 às 23:52
Clan System


local clansAtk = {

[1] = {

[FIREDAMAGE] = {

[1] = {atk = 1.17},

[2] = {atk = 1.22},

[3] = {atk = 1.27},

[4] = {atk = 1.32},

[5] = {atk = 1.37},

},

["null"] = {

},

},

[2] = {

[WATERDAMAGE] = {

[1] = {atk = 1.05},

[2] = {atk = 1.10},

[3] = {atk = 1.15},

[4] = {atk = 1.20},

[5] = {atk = 1.25},

},

[iCEDAMAGE] = {

[1] = {atk = 1.10},

[2] = {atk = 1.15},

[3] = {atk = 1.20},

[4] = {atk = 1.25},

[5] = {atk = 1.30},

},

},

[3] = {

[ROCKDAMAGE] = {

[1] = {atk = 1.05},

[2] = {atk = 1.10},

[3] = {atk = 1.15},

[4] = {atk = 1.20},

[5] = {atk = 1.25},

},

[GROUNDDAMAGE] = {

[1] = {atk = 1.05},

[2] = {atk = 1.10},

[3] = {atk = 1.15},

[4] = {atk = 1.20},

[5] = {atk = 1.25},

},

},

[4] = {

[FLYDAMAGE] = {

[1] = {atk = 1.15},

[2] = {atk = 1.20},

[3] = {atk = 1.25},

[4] = {atk = 1.30},

[5] = {atk = 1.35},

},

[DRAGONDAMAGE] = {

[1] = {atk = 1.10},

[2] = {atk = 1.15},

[3] = {atk = 1.20},

[4] = {atk = 1.25},

[5] = {atk = 1.30},

},

},

[5] = {

[GHOSTDAMAGE] = {

[1] = {atk = 1.05},

[2] = {atk = 1.10},

[3] = {atk = 1.15},

[4] = {atk = 1.20},

[5] = {atk = 1.25},

},

[POISONDAMAGE] = {

[1] = {atk = 1.08},

[2] = {atk = 1.13},

[3] = {atk = 1.18},

[4] = {atk = 1.23},

[5] = {atk = 1.28},

},

},

[6] = {

[FIGHTDAMAGE] = {

[1] = {atk = 1.05},

[2] = {atk = 1.10},

[3] = {atk = 1.15},

[4] = {atk = 1.20},

[5] = {atk = 1.25},

},

[NORMALDAMAGE] = {

[1] = {atk = 1.05},

[2] = {atk = 1.10},

[3] = {atk = 1.15},

[4] = {atk = 1.20},

[5] = {atk = 1.25},

},

},

[7] = {

[PSYCHICDAMAGE] = {

[1] = {atk = 1.10},

[2] = {atk = 1.15},

[3] = {atk = 1.20},

[4] = {atk = 1.25},

[5] = {atk = 1.30},

},

["null"] = {

},

},

[8] = {

[GRASSDAMAGE] = {

[1] = {atk = 1.05},

[2] = {atk = 1.10},

[3] = {atk = 1.15},

[4] = {atk = 1.20},

[5] = {atk = 1.25},

},

[bUGDAMAGE] = {

[1] = {atk = 1.05},

[2] = {atk = 1.10},

[3] = {atk = 1.15},

[4] = {atk = 1.20},

[5] = {atk = 1.25},

},

},

[9] = {

[ELECTRICDAMAGE] = {

[1] = {atk = 1.12},

[2] = {atk = 1.17},

[3] = {atk = 1.22},

[4] = {atk = 1.27},

[5] = {atk = 1.32},

},

["null"] = {

},

}

}


local clansDef = {

[1] = {

["fire"] = {

[1] = {def = 0.17},

[2] = {def = 0.22},

[3] = {def = 0.27},

[4] = {def = 0.32},

[5] = {def = 0.37},

},

["null"] = {

},

},

[2] = {

["water"] = {

[1] = {def = 0.05},

[2] = {def = 0.10},

[3] = {def = 0.15},

[4] = {def = 0.20},

[5] = {def = 0.25},

},

["ice"] = {

[1] = {def = 0.10},

[2] = {def = 0.15},

[3] = {def = 0.20},

[4] = {def = 0.25},

[5] = {def = 0.30},

},

},

[3] = {

["rock"] = {

[1] = {def = 0.05},

[2] = {def = 0.10},

[3] = {def = 0.15},

[4] = {def = 0.20},

[5] = {def = 0.25},

},

["ground"] = {

[1] = {def = 0.10},

[2] = {def = 0.15},

[3] = {def = 0.20},

[4] = {def = 0.25},

[5] = {def = 0.30},

},

},

[4] = {

["flying"] = {

[1] = {def = 0.15},

[2] = {def = 0.20},

[3] = {def = 0.25},

[4] = {def = 0.30},

[5] = {def = 0.35},

},

["dragon"] = {

[1] = {def = 0.10},

[2] = {def = 0.15},

[3] = {def = 0.20},

[4] = {def = 0.25},

[5] = {def = 0.30},

},

},

[5] = {

["ghost"] = {

[1] = {def = 0.05},

[2] = {def = 0.10},

[3] = {def = 0.15},

[4] = {def = 0.20},

[5] = {def = 0.25},

},

["poison"] = {

[1] = {def = 0.08},

[2] = {def = 0.13},

[3] = {def = 0.18},

[4] = {def = 0.23},

[5] = {def = 0.28},

},

},

[6] = {

["fighting"] = {

[1] = {def = 0.05},

[2] = {def = 0.10},

[3] = {def = 0.15},

[4] = {def = 0.20},

[5] = {def = 0.25},

},

["normal"] = {

[1] = {def = 0.05},

[2] = {def = 0.10},

[3] = {def = 0.15},

[4] = {def = 0.20},

[5] = {def = 0.25},

},

},

[7] = {

["psychic"] = {

[1] = {def = 0.10},

[2] = {def = 0.15},

[3] = {def = 0.20},

[4] = {def = 0.25},

[5] = {def = 0.30},

},

["null"] = {

},

},

[8] = {

["grass"] = {

[1] = {def = 0.05},

[2] = {def = 0.10},

[3] = {def = 0.15},

[4] = {def = 0.20},

[5] = {def = 0.25},

},

["bug"] = {

[1] = {def = 0.05},

[2] = {def = 0.10},

[3] = {def = 0.15},

[4] = {def = 0.20},

[5] = {def = 0.25},

},

},

[9] = {

["electric"] = {

[1] = {def = 0.12},

[2] = {def = 0.17},

[3] = {def = 0.22},

[4] = {def = 0.27},

[5] = {def = 0.32},

},

}

}


local clansName = {

--[num do clan] = {nome do clan, storage outfit normal, storage outfit rank5},

[1] = {'Volcanic', 181613, 181625},

[2] = {'Seavell', 181619, 181622},

[3] = {'Orebound', 181620, 181627},

[4] = {'Wingeon', 181616, 181626},

[5] = {'Malefic', 181615, 181624},

[6] = {'Gardestrike', 181614, 181628},

[7] = {'Psycraft', 181618, 181629},

[8] = {'Naturia', 181612, 181623},

[9] = {'Raibolt', 181617, 181621},

}



function getClanPorcent(master, combat, option, type, type2) --alterado v1.9 \/

if getPlayerClanNum(master) >= 1 then

local clanAtk = clansAtk[getPlayerClanNum(master)]

local clanDef = clansDef[getPlayerClanNum(master)]


if option == "atk" and clanAtk[combat] then

return clanAtk[combat][getPlayerClanRank(master)].atk

else

if option == "def" and clanDef[type] then

return clanDef[type][getPlayerClanRank(master)].def

elseif option == "def" and clanDef[type2] then

return clanDef[type2][getPlayerClanRank(master)].def

end

end

end

return option == "atk" and 1 or 0

end


function getPlayerClanName(cid)

if not isCreature(cid) then return 'No Clan!' end

return clansName[getPlayerClanNum(cid)] and clansName[getPlayerClanNum(cid)][1] or 'No Clan!'

end


function getPlayerClanNum(cid)

if not isCreature(cid) then return -1 end

return getPlayerStorageValue(cid, 86228)

end


function getPlayerClanRank(cid)

if not isCreature(cid) then return -1 end

return getPlayerStorageValue(cid, 862281)

end


function setPlayerClan(cid, clan)

if not isCreature(cid) or not clan then return false end

if removePlayerClan(cid) then --para evitar possiveis problemas!

if type(clan) == "number" and (clan >= 1 and clan <= 9) then

setPlayerStorageValue(cid, 86228, clan) --sto clan

setPlayerClanRank(cid, 1) --set rank 1

setPlayerStorageValue(cid, clansName[clan][2], 1) --sto roupa

return true

elseif type(clan) == "string" then

clan = string.lower(clan)

for e, f in pairs(clansName) do

local clan2 = string.lower(f[1])

if clan == clan2 then

setPlayerStorageValue(cid, 86228, e) --sto clan

setPlayerClanRank(cid, 1) --set rank 1

setPlayerStorageValue(cid, clansName[e][2], 1) --sto roupa

return true

end

end

end

end

return false

end


function setPlayerClanRank(cid, rank)

if not isCreature(cid) or not rank then return false end

if type(rank) == "number" and (rank >= 1 and rank <= 5) then

setPlayerStorageValue(cid, 862281, rank)

if rank == 5 then

setPlayerStorageValue(cid, clansName[getPlayerClanNum(cid)][3], 1)

end

return true

end

return false

end


function removePlayerClan(cid)

if not isCreature(cid) then return false end

if getPlayerStorageValue(cid, 854789) >= 1 then return false end --nao pode remover o clan se o player tiver fazendo missoes de rank!

setPlayerStorageValue(cid, 86228, -1) --sto do clan

setPlayerStorageValue(cid, 862281, -1) --sto do rank

setPlayerStorageValue(cid, 854789, -1) --sto da quest de rank

setPlayerStorageValue(cid, 854788, -1) --sto catch, quest de rank

setPlayerStorageValue(cid, 854787, -1) --sto task, quest de rank

for i = 181612, 181638 do

setPlayerStorageValue(cid, i, -1) --sto das roupas de clan

end

return true

end


function checkItensForTask(cid, itens)

local check = 0

local array = {}

local missing = {}

table.insert(missing, "Are missing: ")

local c = 0

for i = 1, #itens do

if getPlayerItemCount(cid, itens[1]) >= itens[2] then

check = check + 1

else

table.insert(array, {itens[1], (itens[2]-getPlayerItemCount(cid, itens[1]))})

end

end

if check == #itens then

for b = 1, #itens do

doPlayerRemoveItem(cid, itens[1], itens[2])

end

return 0

else

for a = 1, #array do

table.insert(missing, ((a == #array and c ~= 0) and " and " or a ~= 1 and ", " or "{")..(array[a][2]).." "..(getItemNameById(array[a][1])))

c = c+1

end

table.insert(missing, "} yet.")

return table.concat(missing)

end

end


function checkPokemonForTask(cid, poke)

local pbs = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)

local slot = getPlayerSlotItem(cid, 8)

if slot.itemid > 0 and isPokeball(slot.itemid) then

if getItemAttribute(slot.uid, "poke") == poke and getItemAttribute(slot.uid, "task") and getItemAttribute(slot.uid, "task") >= 1 then

doRemoveItem(slot.uid, 1)

doTransformItem(getPlayerSlotItem(cid, CONST_SLOT_LEGS).uid, 2395)

return true

end

end

for i = 1, #pbs do

if getItemAttribute(pbs, "poke") == poke and getItemAttribute(pbs, "task") and getItemAttribute(pbs, "task") >= 1 then

doRemoveItem(pbs, 1)

return true

end

end

return false

end

20 de setembro de 2015 às 00:02

O que vc quer que faça? Explique sobre o erro e o que deseja fazer

lol08L
20 de setembro de 2015 às 00:05

Tipo quando o clan buga nao sei como os player faz isso começa da esse erro ai , e tipo o pokemon nao recebe dano nem da dano e o erro so da quando algumpokemon selvagem tenta atacar ele.

LumusL
20 de setembro de 2015 às 00:08

Poste o exp 2.0.lua por favor.

20 de setembro de 2015 às 00:15

procure saber se vc não colocou algum "tipo de elemento" que não possui no servidor em algum ataque

lol08L
20 de setembro de 2015 às 00:26
Exp 2.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}

}


--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},

[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}

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"])

if cd >= 0 or cd2 >= 0 or cd3 >= 0 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 --

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

-----------------------------------------------------------------------------

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

-----------------------------------------------------------------------------

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 Setembro 20 por lol08

20 de setembro de 2015 às 00:28

quando for postar algum script grande, use [.spoiler] script aqui [./spoiler]

Sem os " . "

lol08L
21 de setembro de 2015 às 10:26
Galera mais uma ajuda quando o player buga da esse erro quando vc da look nele


[21/09/2015 10:10:45] [Error - CreatureScript Interface]

[21/09/2015 10:10:45] data/creaturescripts/scripts/look.lua:onLook

[21/09/2015 10:10:45] Description:

[21/09/2015 10:10:45] data/lib/some functions.lua:149: attempt to concatenate local 'rank' (a nil value)

[21/09/2015 10:10:45] stack traceback:

[21/09/2015 10:10:46] data/lib/some functions.lua:149: in function 'getPlayerDesc'

[21/09/2015 10:10:46] data/creaturescripts/scripts/look.lua:218: in function <data/creaturescripts/scripts/look.lua:89>



Alguns arquivos

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}

}


--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},

[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}

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"])

if cd >= 0 or cd2 >= 0 or cd3 >= 0 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 --

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

-----------------------------------------------------------------------------

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

-----------------------------------------------------------------------------

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 Setembro 21 por lol08

21 de setembro de 2015 às 11:11

sobre o erro do some functions. Você precisa adicionar a descrição do clan em lib/configuration.lua e procure por:

lookClans = {
lol08L
21 de setembro de 2015 às 11:40

lookClans = {


[1] = {"a Volcanic Spark", "a Volcanic Flame","a Volcanic Firetamer","a Volcanic Pyromancer","a Volcanic Master"},

[2] = {"a Seavell Drop", "a Seavell Icelake","a Seavell Waterfall","a Seavell Frost","a Seavell Master"},

[3] = {"an Orebound Sand", "an Orebound Rock","an Orebound Solid","an Orebound Hardskin","an Orebound Hero"},

[4] = {"a Wingeon Cloud", "a Wingeon Wind","a Wingeon Sky","a Wingeon Falcon","a Wingeon Dragon"},

[5] = {"a Malefic Troublemaker", "a Malefic Venomancer","a Malefic Spectre","a Malefic Nightwalker","a Malefic Master"},

[6] = {"a Gardestrike Fist", "a Gardestrike Tamer","a Gardestrike Fighter","a Gardestrike DeathHand","a Gardestrike Champion"},

[7] = {"a Psycraft Mind", "a Psycraft Brain","a Psycraft Scholar","a Psycraft Telepath","a Psycraft Medium"},

[8] = {"a Naturia Seed", "a Naturia Sprout","a Naturia Webhead","a Naturia Woodtrunk","a Naturia Keeper"},

[9] = {"a Raibolt Shock", "a Raibolt Watt","a Raibolt Electrician","a Raibolt Overcharged","a Raibolt Legend"},

}


Editado Setembro 21 por lol08

21 de setembro de 2015 às 11:43

caso for o Ironhard, troque o seu por esse:

lookClans = {
[1] = {"a Volcanic Spark", "a Volcanic Flame","a Volcanic Firetamer","a Volcanic Pyromancer","a Volcanic Master"},
[2] = {"a Seavell Drop", "a Seavell Icelake","a Seavell Waterfall","a Seavell Frost","a Seavell Master"},
[3] = {"an Orebound Sand", "an Orebound Rock","an Orebound Solid","an Orebound Hardskin","an Orebound Hero"},
[4] = {"a Wingeon Cloud", "a Wingeon Wind","a Wingeon Sky","a Wingeon Falcon","a Wingeon Dragon"},
[5] = {"a Malefic Troublemaker", "a Malefic Venomancer","a Malefic Spectre","a Malefic Nightwalker","a Malefic Master"},
[6] = {"a Gardestrike Fist", "a Gardestrike Tamer","a Gardestrike Fighter","a Gardestrike Deathhand","a Gardestrike Champion"},
[7] = {"a Psycraft Mind", "a Psycraft Brain","a Psycraft Scholar","a Psycraft Telepath","a Psycraft Medium"},
[8] = {"a Naturia Seed", "a Naturia Sprout","a Naturia Webhead","a Naturia Woodtrunk","a Naturia Keeper"},
[9] = {"a Raibolt Shock", "a Raibolt Watt","a Raibolt Electrician","a Raibolt Overcharged","a Raibolt Legend"},
[10] = {"a Ironhard Smither", "a Ironhard Forge","a Ironhard Hammer","a Ironhard Metal","a Ironhard Titan"},
}
lol08L
21 de setembro de 2015 às 12:06

eU NAO ADC ESSE CLAN EU ACHO

 

21 de setembro de 2015 às 12:18

poste o seu look.lua da pasta creaturescripts