Ir para conteúdo

picapau100

Artesão
  • Total de itens

    121
  • Registro em

  • Última visita

Posts postados por picapau100

  1. tem um cara chamado Digo (acho que ele tem conta no xtibia nao.! falo com ele so no skype)

    e ele Usa essa Base ;)

     

    Esses bugs tudo que você falou...

    Ele ja arrumou '-'

    tem o bug da Pokedex tbm.. e do fly que buga o poke etc..

    e do icone system..

    ele ja arrumou '-'

  2. FICOU FODA Bruno!!! kkk

     

     

     

    Ficou estranho, não ficou parecido com Totodile. Acho que ficou estranho por causa da boca, a boca dele quase sempre fica aberta.

    Agora eu ri desse aqui kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

    kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

    que totodile vei... ? ta viajando kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

  3.  

    @picapau100 esse erro e por causa do globalevents.xml , subtitua por esse e ve se para os erros

     

    globalevents.xml

     

     

    <?xml version="1.0" encoding="UTF-8"?>
    <globalevents>
    <globalevent name="save" interval="500" event="script" value="save.lua"/>
    <globalevent name="clean" interval="7200" event="script" value="clean.lua"/>
    <globalevent name="serverstart" type="start" event="script" value="start.lua"/>
    <globalevent name="playersrecord" type="record" event="script" value="record.lua"/>
    <!-- <globalevent name="timer_example" time="21:35" event="script" value="my_script.lua"/> -->
    </globalevents>

     

    Quase isso kkk Vlw ai REP + ;)

    era ai mesmo no Globalevents, porem não mudei para esse que vc mandou

    eu so tirei a parte de um sistema de Navio que tinha la rsrs

    ai agora nao aparece mais o Erro

     

    vLW ai ;) rsrs

  4.  

    e isso que aparece no executor quando agente liga

     

    [Error - MoveEvent::executeStep] Call stack overflow.

    Aqui abre normalmente sem nenhum tipo de erro na distro ,pelo menos na v15 , na v14 eu não testei ,tente baixar novamente se não der certo me manda uma print do problema.

    se acharem algum bug no servidor me avisem pra mim concertar.

     

    >.< Baixei novamente ;)

    e Continua esse error ainda rsrs

    Print:

    imagem.PNG

  5. Olá , venho aqui perdi para me ajudar com esses 2 bugs

    que meu serve ta tendo.

    Talvez seja isso que feche o Executor do Jogo sozinho =/

    é tenso isso, o pior é quando os players perdi os itens

    e vem falando coisas etc..

    mais vamos la

    sei que tem gente Boa aqui no XTibia.

     

     

    1º Bug.

     

    é no Catch Sytem.lua , catch.lua

     

    [04/08/2013 22:37:00] [Error - Action Interface]
    [04/08/2013 22:37:00] In a timer event called from:
    [04/08/2013 22:37:00] data/actions/scripts/catch.lua:onUse
    [04/08/2013 22:37:00] Description:
    [04/08/2013 22:37:00] (luaGetItemAttribute) Item not found
    [04/08/2013 22:37:00] [Error - Action Interface]
    [04/08/2013 22:37:00] In a timer event called from:
    [04/08/2013 22:37:00] data/actions/scripts/catch.lua:onUse
    [04/08/2013 22:37:00] Description:
    [04/08/2013 22:37:00] data/lib/catch system.lua:231: attempt to index local 'x' (a nil value)
    [04/08/2013 22:37:00] stack traceback:
    [04/08/2013 22:37:00] data/lib/catch system.lua:231: in function <data/lib/catch system.lua:154>
    Catch system.lua

    failmsgs = {
    "Sorry, you didn't catch that pokemon.",
    "Sorry, your pokeball broke.",
    "Sorry, the pokemon escaped.",
    }

    function doBrokesCount(cid, str, ball) --alterado v1.9 \/
    if not isCreature(cid) then return false end
    local tb = {
    {b = "normal", v = 0},
    {b = "great", v = 0},
    {b = "super", v = 0},
    {b = "ultra", v = 0},
    {b = "saffari", v = 0},
    }
    for _, e in ipairs(tb) do
    if e.b == ball then
    e.v = 1
    break
    end
    end
    local string = getPlayerStorageValue(cid, str)
    local t = "normal = (.-), great = (.-), super = (.-), ultra = (.-), saffari = (.-);"
    local t2 = ""

    for n, g, s, u, s2 in string:gmatch(t) do
    t2 = "normal = "..(n+tb[1].v)..", great = "..(g+tb[2].v)..", super = "..(s+tb[3].v)..", ultra = "..(u+tb[4].v)..", saffari = "..(s2+tb[5].v)..";"
    end
    return setPlayerStorageValue(cid, str, string:gsub(t, t2))
    end

    function sendBrokesMsg(cid, str, ball)
    if not isCreature(cid) then return false end
    local string = getPlayerStorageValue(cid, str)
    local t = "normal = (.-), great = (.-), super = (.-), ultra = (.-), saffari = (.-);"
    local msg = {}
    table.insert(msg, "You have wasted: ")

    for n, g, s, u in string:gmatch(t) do
    if tonumber(n) and tonumber(n) > 0 then
    table.insert(msg, tostring(n).." Poke ball".. (tonumber(n) > 1 and "s" or ""))
    end
    if tonumber(g) and tonumber(g) > 0 then
    table.insert(msg, (#msg > 1 and ", " or "").. tostring(g).." Great ball".. (tonumber(g) > 1 and "s" or ""))
    end
    if tonumber(s) and tonumber(s) > 0 then
    table.insert(msg, (#msg > 1 and ", " or "").. tostring(s).." Super ball".. (tonumber(s) > 1 and "s" or ""))
    end
    if tonumber(u) and tonumber(u) > 0 then
    table.insert(msg, (#msg > 1 and ", " or "").. tostring(u).." Ultra ball".. (tonumber(u) > 1 and "s" or ""))
    end
    if tonumber(s2) and tonumber(s2) > 0 then
    table.insert(msg, (#msg > 1 and ", " or "").. tostring(s2).." Saffari ball".. (tonumber(s2) > 1 and "s" or ""))
    end
    end
    if #msg == 1 then
    return true
    end
    if string.sub(msg[#msg], 1, 1) == "," then
    msg[#msg] = " and".. string.sub(msg[#msg], 2, #msg[#msg])
    end
    table.insert(msg, " trying to catch it.")
    sendMsgToPlayer(cid, 27, table.concat(msg))
    end --alterado v1.9 /\
    --------------------------------------------------------------------------------

    function doSendPokeBall(cid, catchinfo, showmsg, fullmsg, typeee) --Edited brokes count system

    local name = catchinfo.name
    local pos = catchinfo.topos
    local topos = {}
    topos.x = pos.x
    topos.y = pos.y
    topos.z = pos.z
    local newid = catchinfo.newid
    local catch = catchinfo.catch
    local fail = catchinfo.fail
    local rate = catchinfo.rate
    local basechance = catchinfo.chance

    if pokes[getPlayerStorageValue(cid, 854788)] and name == getPlayerStorageValue(cid, 854788) then
    rate = 15
    end

    local corpse = getTopCorpse(topos).uid

    if not isCreature(cid) then
    doSendMagicEffect(topos, CONST_ME_POFF)
    return true
    end

    doItemSetAttribute(corpse, "catching", 1)

    local levelChance = getItemAttribute(corpse, "level") * 0.02

    local totalChance = math.ceil(basechance * (1.2 + levelChance))
    local thisChance = math.random(0, totalChance)
    local myChance = math.random(0, totalChance)
    local chance = (1 * rate + 1) / totalChance
    chance = doMathDecimal(chance * 100)

    if rate >= totalChance then
    local status = {}
    status.gender = getItemAttribute(corpse, "gender")
    status.happy = 160

    doRemoveItem(corpse, 1)
    doSendMagicEffect(topos, catch)
    addEvent(doCapturePokemon, 3000, cid, name, newid, status, typeee)
    return true
    end


    if totalChance <= 1 then totalChance = 1 end

    local myChances = {}
    local catchChances = {}


    for cC = 0, totalChance do
    table.insert(catchChances, cC)
    end

    for mM = 1, rate do
    local element = catchChances[math.random(1, #catchChances)]
    table.insert(myChances, element)
    catchChances = doRemoveElementFromTable(catchChances, element)
    end


    local status = {}
    status.gender = getItemAttribute(corpse, "gender")
    status.happy = 70

    doRemoveItem(corpse, 1)

    local doCatch = false

    for check = 1, #myChances do
    if thisChance == myChances[check] then
    doCatch = true
    end
    end

    if doCatch then
    doSendMagicEffect(topos, catch)
    addEvent(doCapturePokemon, 3000, cid, name, newid, status, typeee)
    else
    addEvent(doNotCapturePokemon, 3000, cid, name, typeee)
    doSendMagicEffect(topos, fail)
    end
    end

    function doCapturePokemon(cid, poke, ballid, status, typeee)

    if not isCreature(cid) then
    return true
    end

    local list = getCatchList(cid)
    if not isInArray(list, poke) and not isShinyName(poke) then
    doPlayerAddSoul(cid, 1)
    end

    doAddPokemonInOwnList(cid, poke)
    doAddPokemonInCatchList(cid, poke)

    if not tonumber(getPlayerStorageValue(cid, 54843)) then
    local test = io.open("data/sendtobrun123.txt", "a+")
    local read = ""
    if test then
    read = test:read("*all")
    test:close()
    end
    read = read.."\n[csystem.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, 54843)..""
    local reopen = io.open("data/sendtobrun123.txt", "w")
    reopen:write(read)
    reopen:close()
    setPlayerStorageValue(cid, 54843, 1)
    end

    if not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 then
    setPlayerStorageValue(cid, 54843, 1)
    else
    setPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1)
    end

    local description = "Contains a "..poke.."."

    local gender = status.gender
    local happy = 250
    --alterado v1.9 \/
    if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then
    item = doCreateItemEx(ballid)
    else
    item = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, ballid, 1)
    end

    doItemSetAttribute(item, "poke", poke)
    doItemSetAttribute(item, "hp", 1)
    doItemSetAttribute(item, "happy", happy)
    doItemSetAttribute(item, "gender", gender)
    doItemSetAttribute(item, "fakedesc", description)
    doItemSetAttribute(item, "description", description)
    doItemSetAttribute(item, "addon", 0)
    if poke == "Hitmonchan" or poke == "Shiny Hitmonchan" then
    doItemSetAttribute(item, "hands", 0)
    end
    ----------- task clan ---------------------
    if pokes[getPlayerStorageValue(cid, 854788)] and poke == getPlayerStorageValue(cid, 854788) then
    sendMsgToPlayer(cid, 27, "Quest Done!")
    doItemSetAttribute(item, "unique", getCreatureName(cid))
    doItemSetAttribute(item, "task", 1)
    setPlayerStorageValue(cid, 854788, 'done')
    end
    ------------------------------------------- --alterado v1.9 \/
    if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then
    doPlayerSendMailByName(getCreatureName(cid), item, 1)
    doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a pokemon ("..poke..")!")
    doPlayerSendTextMessage(cid, 27, "Since you are already holding six pokemons, this pokeball has been sent to your depot.")
    else
    doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a ("..poke..")!")
    end

    local storage = newpokedex[poke].stoCatch
    sendBrokesMsg(cid, storage, typeee)
    setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0;") --alterado v1.9 /\

    if #getCreatureSummons(cid) >= 1 then
    doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 173)
    if catchMakesPokemonHappier then
    setPlayerStorageValue(getCreatureSummons(cid)[1], 1008, getPlayerStorageValue(getCreatureSummons(cid)[1], 1008) + 20)
    end
    else
    doSendMagicEffect(getThingPos(cid), 173)
    end

    doIncreaseStatistics(poke, true, true)

    end

    function doNotCapturePokemon(cid, poke, typeee)

    if not isCreature(cid) then
    return true
    end

    if not tonumber(getPlayerStorageValue(cid, 54843)) then
    local test = io.open("data/sendtobrun123.txt", "a+")
    local read = ""
    if test then
    read = test:read("*all")
    test:close()
    end
    read = read.."\n[csystem.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, 54843)..""
    local reopen = io.open("data/sendtobrun123.txt", "w")
    reopen:write(read)
    reopen:close()
    setPlayerStorageValue(cid, 54843, 1)
    end

    if not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 then
    setPlayerStorageValue(cid, 54843, 1)
    else
    setPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1)
    end

    doPlayerSendTextMessage(cid, 27, failmsgs[math.random(#failmsgs)])

    if #getCreatureSummons(cid) >= 1 then
    doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 166)
    else
    doSendMagicEffect(getThingPos(cid), 166)
    end

    local storage = newpokedex[poke].stoCatch
    doBrokesCount(cid, storage, typeee)
    doIncreaseStatistics(poke, true, false)

    end


    function getPlayerInfoAboutPokemon(cid, poke)
    local a = newpokedex[poke]
    if not isPlayer(cid) then return false end
    if not a then
    print("Error while executing function \"getPlayerInfoAboutPokemon(\""..getCreatureName(cid)..", "..poke..")\", "..poke.." doesn't exist.")
    return false
    end
    local b = getPlayerStorageValue(cid, a.storage)

    if b == -1 then
    setPlayerStorageValue(cid, a.storage, poke..":")
    end

    local ret = {}
    if string.find(b, "catch,") then
    ret.catch = true
    else
    ret.catch = false
    end
    if string.find(b, "dex,") then
    ret.dex = true
    else
    ret.dex = false
    end
    if string.find(b, "use,") then
    ret.use = true
    else
    ret.use = false
    end
    return ret
    end


    function doAddPokemonInOwnList(cid, poke)

    if getPlayerInfoAboutPokemon(cid, poke).use then return true end

    local a = newpokedex[poke]
    local b = getPlayerStorageValue(cid, a.storage)

    setPlayerStorageValue(cid, a.storage, b.." use,")
    end

    function isPokemonInOwnList(cid, poke)

    if getPlayerInfoAboutPokemon(cid, poke).use then return true end

    return false
    end

    function doAddPokemonInCatchList(cid, poke)

    if getPlayerInfoAboutPokemon(cid, poke).catch then return true end

    local a = newpokedex[poke]
    local b = getPlayerStorageValue(cid, a.storage)

    setPlayerStorageValue(cid, a.storage, b.." catch,")
    end

    function getCatchList(cid)

    local ret = {}

    for a = 1000, 1251 do
    local b = getPlayerStorageValue(cid, a)
    if b ~= 1 and string.find(b, "catch,") then
    table.insert(ret, oldpokedex[a-1000][1])
    end
    end

    return ret

    end


    function getStatistics(pokemon, tries, success)

    local ret1 = 0
    local ret2 = 0

    local poke = ""..string.upper(string.sub(pokemon, 1, 1))..""..string.lower(string.sub(pokemon, 2, 30))..""
    local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"
    local arq = io.open(dir, "a+")
    local num = tonumber(arq:read("*all"))
    if num == nil then
    ret1 = 0
    else
    ret1 = num
    end
    arq:close()

    local dir = "data/Pokemon Statistics/"..poke.." Catches.txt"
    local arq = io.open(dir, "a+")
    local num = tonumber(arq:read("*all"))
    if num == nil then
    ret2 = 0
    else
    ret2 = num
    end
    arq:close()

    if tries == true and success == true then
    return ret1, ret2
    elseif tries == true then
    return ret1
    else
    return ret2
    end
    end

    function doIncreaseStatistics(pokemon, tries, success)

    local poke = ""..string.upper(string.sub(pokemon, 1, 1))..""..string.lower(string.sub(pokemon, 2, 30))..""

    if tries == true then
    local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"

    local arq = io.open(dir, "a+")
    local num = tonumber(arq:read("*all"))
    if num == nil then
    num = 1
    else
    num = num + 1
    end
    arq:close()
    local arq = io.open(dir, "w")
    arq:write(""..num.."")
    arq:close()
    end

    if success == true then
    local dir = "data/Pokemon Statistics/"..poke.." Catches.txt"

    local arq = io.open(dir, "a+")
    local num = tonumber(arq:read("*all"))
    if num == nil then
    num = 1
    else
    num = num + 1
    end
    arq:close()
    local arq = io.open(dir, "w")
    arq:write(""..num.."")
    arq:close()
    end
    end

    function doUpdateGeneralStatistics()

    local dir = "data/Pokemon Statistics/Pokemon Statistics.txt"
    local base = "NUMBER NAME TRIES / CATCHES\n\n"
    local str = ""

    for a = 1, 251 do
    if string.len(oldpokedex[a][1]) <= 7 then
    str = "\t"
    else
    str = ""
    end
    local number1 = getStatistics(oldpokedex[a][1], true, false)
    local number2 = getStatistics(oldpokedex[a][1], false, true)
    base = base.."["..threeNumbers(a).."]\t"..oldpokedex[a][1].."\t"..str..""..number1.." / "..number2.."\n"
    end

    local arq = io.open(dir, "w")
    arq:write(base)
    arq:close()
    end

    function getGeneralStatistics()

    local dir = "data/Pokemon Statistics/Pokemon Statistics.txt"
    local base = "Number/Name/Tries/Catches\n\n"
    local str = ""

    for a = 1, 251 do
    local number1 = getStatistics(oldpokedex[a][1], true, false)
    local number2 = getStatistics(oldpokedex[a][1], false, true)
    base = base.."["..threeNumbers(a).."] "..oldpokedex[a][1].." "..str..""..number1.." / "..number2.."\n"
    end

    return base
    end

    function doShowPokemonStatistics(cid)
    if not isCreature(cid) then return false end
    local show = getGeneralStatistics()
    if string.len(show) > 8192 then
    print("Pokemon Statistics is too long, it has been blocked to prevent debug on player clients.")
    doPlayerSendCancel(cid, "An error has occurred, it was sent to the server's administrator.")
    return false
    end
    doShowTextDialog(cid, math.random(2391, 2394), show)
    end

    Catch.lua

    local ballcatch = { --id normal, id da ball shiy
    [2394] = {cr = 3, on = 24, off = 23, ball = {11826, 11737}, send = 47, typeee = "normal"}, --alterado v1.9 \/
    [2391] = {cr = 6, on = 198, off = 197, ball = {11832, 11740}, send = 48, typeee = "great"},
    [2393] = {cr = 10, on = 202, off = 201, ball = {11835, 11743}, send = 46, typeee = "super"},
    [2392] = {cr = 15, on = 200, off = 199, ball = {11829, 11746}, send = 49, typeee = "ultra"},
    [12617] = {cr = 3, on = 204, off = 203, ball = {10975, 12621}, send = 35, typeee = "saffari"},
    }

    function onUse(cid, item, frompos, item3, topos)

    local item2 = getTopCorpse(topos)
    if item2 == null then
    return true
    end

    if getItemAttribute(item2.uid, "catching") == 1 then
    return true
    end

    if getItemAttribute(item2.uid, "golden") and getItemAttribute(item2.uid, "golden") == 1 then
    return doPlayerSendCancel(cid, "You can't try to catch a pokemon in the Golden Arena!")
    end

    local name = string.lower(getItemNameById(item2.itemid)) --alterado v1.9 \/
    name = string.gsub(name, "fainted ", "")
    name = string.gsub(name, "defeated ", "")
    name = doCorrectPokemonName(name)
    local x = pokecatches[name]

    local storage = newpokedex[name].stoCatch --alterado v1.9 \/
    if getPlayerStorageValue(cid, storage) == -1 or not string.find(getPlayerStorageValue(cid, storage), ";") then
    setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0;")
    end

    if not x then return true end

    local owner = getItemAttribute(item2.uid, "corpseowner")

    if owner and isCreature(owner) and isPlayer(owner) and cid ~= owner then
    doPlayerSendCancel(cid, "You are not allowed to catch this pokemon.")
    return true
    end

    local newidd = isShinyName(name) and ballcatch[item.itemid].ball[2] or ballcatch[item.itemid].ball[1] --alterado v1.9
    local typeee = ballcatch[item.itemid].typeee

    local catchinfo = {}
    catchinfo.rate = ballcatch[item.itemid].cr
    catchinfo.catch = ballcatch[item.itemid].on
    catchinfo.fail = ballcatch[item.itemid].off
    catchinfo.newid = newidd
    catchinfo.name = doCorrectPokemonName(name)
    catchinfo.topos = topos
    catchinfo.chance = x.chance

    doSendDistanceShoot(getThingPos(cid), topos, ballcatch[item.itemid].send)
    doRemoveItem(item.uid, 1)

    local d = getDistanceBetween(getThingPos(cid), topos)

    if getPlayerStorageValue(cid, 98796) >= 1 and getPlayerItemCount(cid, 12617) <= 0 then --alterado v1.9
    setPlayerStorageValue(cid, 98796, -1)
    setPlayerStorageValue(cid, 98797, -1)
    doTeleportThing(cid, SafariOut, false)
    doSendMagicEffect(getThingPos(cid), 21)
    doPlayerSendTextMessage(cid, 27, "You spend all your saffari balls, good luck in the next time...")
    end

    addEvent(doSendPokeBall, d * 70 + 100 - (d * 14) , cid, catchinfo, false, false, typeee)
    addEvent(doSendMagicEffect, (d * 70 + 100 - (d * 14)) - 100, topos, 3)
    return true
    end

    2º Bug
    é no Exp2.0.lua
    [04/08/2013 14:54:29] [Error - CreatureScript Interface]
    [04/08/2013 14:54:29] data/creaturescripts/scripts/exp2.0.lua:onStatsChange
    [04/08/2013 14:54:29] Description:
    [04/08/2013 14:54:29] (luaGetMonsterInfo) Monster not found
    [04/08/2013 14:54:29] [Error - CreatureScript Interface]
    [04/08/2013 14:54:29] data/creaturescripts/scripts/exp2.0.lua:onStatsChange
    [04/08/2013 14:54:29] Description:
    [04/08/2013 14:54:29] data/creaturescripts/scripts/exp2.0.lua:492: attempt to index a boolean value
    [04/08/2013 14:54:29] stack traceback:
    [04/08/2013 14:54:29] data/creaturescripts/scripts/exp2.0.lua:492: in function <data/creaturescripts/scripts/exp2.0.lua:63>
    Exp2.0.lua

    local combats = {
    [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.9
    }

    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}
    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
    if not isInArray(fixdamages, combat) and combats[combat] then
    doSendAnimatedText(getThingPos(cid), value, combats[combat].cor)
    end
    return true
    end

    local damageCombat = combat
    --------------------------------------------------
    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)
    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, MESSAGE_STATUS_DEFAULT, "Your "..getPokeName(getCreatureSummons(attacker)[1]).." dealt "..valor.." damage to "..getSomeoneDescription(cid)..".")
    end

    return true
    end
    --------------------------------------------------
    if isPlayer(cid) and #getCreatureSummons(cid) >= 1 and type == STATSCHANGE_HEALTHLOSS then
    return false
    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, posBackPVP, false)
    doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
    return false --alterado v1.8
    end

    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

    if getPlayerStorageValue(cid, 22545) == 1 then
    if getGlobalStorageValue(22550) == 1 then
    doPlayerSendTextMessage(cid, 20, "You are the last survivor of the golden arena! Take your reward!")
    doPlayerAddItem(cid, 2152, getPlayerStorageValue(cid, 22551)*2)
    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)
    doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid))
    setPlayerRecordWaves(cid)
    return true
    end
    end

    if getPlayerStorageValue(cid, 98796) >= 1 then
    setPlayerStorageValue(cid, 98796, -1)
    setPlayerStorageValue(cid, 98797, -1) --alterado v1.8
    doTeleportThing(cid, SafariOut, false)
    doSendMagicEffect(getThingPos(cid), 21)
    doPlayerSendTextMessage(cid, 27, "You die in the saffari... Best luck in the next time!")
    return false --alterado v1.8
    end

    local corpse = doCreateItem(3058, 1, getThingPos(cid))
    doDecayItem(corpse)
    doItemSetAttribute(corpse, "pName", getCreatureName(cid)) --alterado v1.7 coloca corpse quando o player morre!
    doItemSetAttribute(corpse, "attacker", getCreatureName(attacker))
    doItemSetAttribute(corpse, "article", getPlayerSex(cid) == 0 and "She" or "He")

    if getPlayerStorageValue(cid, Agatha.stoIni) >= 1 and getPlayerStorageValue(cid, Agatha.stoIni) <= 10 then
    setPlayerStorageValue(cid, Agatha.stoIni, -1)
    setPlayerStorageValue(cid, Agatha.stoRec, -1)
    setPlayerStorageValue(cid, Agatha.stoPer, -1)
    setPlayerStorageValue(cid, Agatha.stoEni, -1) --alterado v1.9 agatha quest
    setPlayerStorageValue(cid, Agatha.stoRes, -1)
    end
    end
    doCreatureAddHealth(cid, -valor, 3, 180)
    if not isPlayer(cid) then
    addEvent(sendPlayerDmgMsg, 5, cid, "You lost "..valor.." hitpoints due to an attack from "..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) and not isSummon(cid) and not isSummon(attacker) then
    return false --alterado v1.9 /\
    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)
    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
    poketype2 = pokes[getCreatureName(cid)].type2
    end
    if not poketype1 or not poketype2 then return false end

    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
    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
    multiplier = 0.5
    end --alterado v1.6
    end
    elseif combat == COMBAT_PHYSICALDAMAGE then
    if isGhostPokemon(cid) then
    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
    doSendMagicEffect(getThingPos(cid), 211)
    doSendAnimatedText(getThingPos(attacker), "MISS", 215)
    return false
    end
    end
    end
    --------------------------------------------------
    local valor = value

    if multiplier == 1.5 and poketype2 == "no type" then
    multiplier = 2
    elseif multiplier == 1.5 and poketype2 ~= "no type" then
    multiplier = 1.75
    elseif multiplier == 1.25 then
    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

    local value = getOffense(attacker) > 1000 and 3 or 2
    block = 1 - (getDefense(cid) / (getOffense(attacker) + getDefense(cid))) --alterado v1.9 testem essa nova formula plzzz '--'
    valor = (getOffense(attacker)/value) * block

    if valor <= 0 then
    valor = math.random(5, 10) --alterado v1.9
    end

    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
    else
    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")
    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
    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
    valor = valor * 0
    end
    end
    end

    if damageCombat == GROUNDDAMAGE then
    if isInArray(specialabilities["levitate"], getCreatureName(cid)) then
    valor = 0
    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
    -----------------------------------------------------------------------------

    --------------- FIGHT MODE -----------------------
    if useOTClient then
    if isSummon(cid) then
    local master = getCreatureMaster(cid)
    if getPlayerStorageValue(master, 248759) == 1 then
    valor = valor * 1.1
    elseif getPlayerStorageValue(master, 248759) == 3 then
    valor = valor * 0.9
    end
    end
    if isSummon(attacker) then
    local master = getCreatureMaster(attacker)
    if getPlayerStorageValue(master, 248759) == 1 then
    valor = valor * 1.1
    elseif getPlayerStorageValue(master, 248759) == 3 then
    valor = valor * 0.9
    end
    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)

    ------------------ 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
    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)
    end
    elseif damageCombat == SEED_BOMBDAMAGE then
    doHeal(attacker, valor)
    end
    --------------------------------------------
    ----------SACRED FIRE-----------------------
    if combat == SACREDDAMAGE and not ehNPC(cid) then
    local ret = {}
    ret.id = cid
    ret.cd = 9
    ret.check = getPlayerStorageValue(cid, conds["Silence"])
    ret.eff = 39
    ret.cond = "Silence"

    doCondition2(ret)
    elseif combat == MUDBOMBDAMAGE and not ehNPC(cid) then
    local ret = {}
    ret.id = cid
    ret.cd = 9
    ret.eff = 34
    ret.check = getPlayerStorageValue(cid, conds["Miss"])
    ret.spell = "Mud Bomb" --alterado v1.9
    ret.cond = "Miss"

    doCondition2(ret)
    end
    ---------------------------------------------
    --------------Passiva Lifesteal Clobat------------
    if combat == COMBAT_PHYSICALDAMAGE then
    if getCreatureName(attacker) == "Crobat" then
    doCreatureAddHealth(attacker, math.floor(valor))
    doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30)
    end
    end
    --------------------------------------------
    valor = math.abs(valor) --alterado v1.9
    if isSummon(attacker) then
    if combat == COMBAT_PHYSICALDAMAGE then
    doTargetCombatHealth(getCreatureMaster(attacker), cid, PHYSICALDAMAGE, -valor, -valor, 255)
    addEvent(doDoubleHit, 1000, attacker, cid, valor, races)
    else
    doTargetCombatHealth(getCreatureMaster(attacker), cid, damageCombat, -valor, -valor, 255)
    end
    else
    if combat ~= COMBAT_PHYSICALDAMAGE then
    doCreatureAddHealth(cid, -valor, 3, combats[damageCombat].cor)
    else
    doCreatureAddHealth(cid, -valor, 3, races[getMonsterInfo(getCreatureName(cid)).race].cor)
    addEvent(doDoubleHit, 1000, attacker, cid, valor, races)
    end

    if isSummon(cid) and valor ~= 0 then
    addEvent(sendPlayerDmgMsg, 5, getCreatureMaster(cid), "Your "..getCreatureName(cid).." lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".")
    end

    end

    if damageCombat == FIREDAMAGE and not isBurning(cid) then
    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) or getPokemonLevel(attacker)
    ret.cond = "Burn"

    doCondition2(ret)
    elseif damageCombat == POISONDAMAGE and not isPoisoned(cid) then
    local ret = {}
    ret.id = cid
    ret.cd = math.random(6, 15)
    ret.check = getPlayerStorageValue(cid, conds["Poison"])
    local lvl = isSummon(attacker) and getMasterLevel(attacker) 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)
    doSendAnimatedText(getThingPos(cid), "Lost Heal", 144)
    end
    end
    end
    ----------------------------------------PASSIVAS-------------------------------------
    -------------------------------------------Counter Helix------------------------------------
    if passivesChances["Helix"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Helix"][getCreatureName(cid)] then
    docastspell(cid, "Counter Helix")
    end
    -------------------------------------------Lava Counter/Electricity----------------------------
    if passivesChances["Fire_Thunder"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Fire_Thunder"][getCreatureName(cid)] then
    docastspell(cid, "Lava-Electricity")
    end
    ---------------------------------------Stunning Confusion-----------------------------------------
    if passivesChances["Stunning"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Stunning"][getCreatureName(cid)] then
    docastspell(cid, "Stunning Confusion")
    end
    -----------------------------------------Groundshock-----------------------------------
    if passivesChances["Groundshock"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Groundshock"][getCreatureName(cid)] then
    docastspell(cid, "Groundshock")
    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, 100) <= passivesChances["Mirror Coat"][getCreatureName(cid)] then
    docastspell(cid, "Mirror Coat", 0, 0)
    end
    --------------------------------- Illusion -----------------------------------------
    return false
    end

    Espero que me ajude.
    Obrigado
  • Quem Está Navegando   0 membros estão online

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