Ir para conteúdo
  • Cadastre-se

Posts Recomendados

---- #1  BUG DOS POKEMONS VIRAR POKEBOLA! 

[Warning - IOLoginData::loadItems] Unserialize error for item with id 11829

Acontece isso e o pokemon vira pokebola!

EX: https://tibiaking.com/forums/topic/45435-error-bug-ball/
https://tibiaking.com/forums/topic/77977-pokemon-sumindo-virando-pokeball-vazia-pda/


------#2  Party não funciona, pokemon não tem corpo e ambos não ganha XP;

[Error - CreatureScript Interface] 
datapack/creaturescripts/scripts/pokeexp.lua:onDeath
Description: 
(luaGetCreatureStorage) Creature not found

[Error - CreatureScript Interface] 
datapack/creaturescripts/scripts/pokeexp.lua:onDeath
Description: 
datapack/creaturescripts/scripts/pokeexp.lua:56: attempt to compare boolean with number
stack traceback:
    datapack/creaturescripts/scripts/pokeexp.lua:56: in function <datapack/creaturescripts/scripts/pokeexp.lua:14>


------#3 Não faço e minima ideia, so sei que servidor fica lagado!

[Error - TalkAction Interface] 
In a timer event called from: 
datapack/talkactions/scripts/move1.lua:onSay
Description: 
datapack/lib/032-position.lua:169: bad argument #1 to 'getn' (table expected, got nil)
stack traceback:
    [C]: in function 'getn'
    datapack/lib/032-position.lua:169: in function 'getPosfromArea'
    datapack/lib/newStatusSyst.lua:696: in function <datapack/lib/newStatusSyst.lua:693>

 

 

-----#4 Tambem não sei para que server, mas quando tento arruma pokemons ficam sem dano! e quando da erro é quando pokemon ta sem dano!

[Error - CreatureScript Interface] 
In a timer event called from: 
datapack/creaturescripts/scripts/exp.lua:onStatsChange
Description: 
datapack/creaturescripts/scripts/exp.lua:47: attempt to call global 'getPokemonStatus' (a nil value)
stack traceback:
    datapack/creaturescripts/scripts/exp.lua:47: in function <datapack/creaturescripts/scripts/exp.lua:38>


-----#5 Esses tem varias spell assim, não se influicia; queria uma explicação do que é isso e como arruma!

 

[Error - TalkAction Interface] 
In a timer event called from: 
datapack/talkactions/scripts/move1.lua:onSay

 

 

----#6 Pokemons fala que esta no dp, dizendo max pokemon 6 bag; Sendo que não tem nenhum na Bag! SO EM BOX E /CB. 

 

Editado por Isac005 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

4 - Troca tudo por:

Spoiler

-- Script Feita Por BrendoGraphicsFx
function onKill(cid, target)
if isPlayer(cid) and isMonster(target) then
if getGlobalStorageValue(102590) - os.time() >= 1 then
local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier)
local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.5*exp)/2)
doPlayerAddExperience(cid, count)
addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60))
end
else
return TRUE
end
return TRUE
end
 

 

5 é o mesmo que o 3. Ocorre por conflito em spells, algum determinado pokémon tá dando esse erro ai, olha qual spells e edita ela em pokemons moves, na lib.

Testa esse move1.lua:

Spoiler

local msgs = {"use ", ""}

function doAlertReady(cid, id, movename, n, cd)
    if not isCreature(cid) then return true end
    local myball = getPlayerSlotItem(cid, ?
    if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then
    return true
    end
    local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)
    if not p or #p <= 0 then return true end
    for a = 1, #p do
        if getItemAttribute(p[a], cd) == "cd:"..id.."" then
        return true
        end
    end
end

function onSay(cid, words, param, channel)


    if param ~= "" then return true end
    if string.len(words) > 3 then return true end

    if #getCreatureSummons(cid) == 0 then
    doPlayerSendTextMessage(cid, 26, "Você precisa de um pokémon para usar moves.")
    return 0
    end
                      --alterado v1.5
local mypoke = getCreatureSummons(cid)[1]

    if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end
    if getCreatureName(mypoke) == "Evolution" then return true end

    if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then
       name = getPlayerStorageValue(mypoke, 1010)   --edited
    else
       name = getCreatureName(mypoke)
    end  
    
    --local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke)

local it = string.sub(words, 2, 3)
local move = movestable[name].move1
if getPlayerStorageValue(mypoke, 212123) >= 1 then
   cdzin = "cm_move"..it..""
else
   cdzin = "move"..it..""       --alterado v1.5
end

    if it == "2" then
        move = movestable[name].move2
    elseif it == "3" then
        move = movestable[name].move3
    elseif it == "4" then
        move = movestable[name].move4
    elseif it == "5" then
        move = movestable[name].move5
    elseif it == "6" then
        move = movestable[name].move6
    elseif it == "7" then
        move = movestable[name].move7
    elseif it == "8" then
        move = movestable[name].move8
    elseif it == "9" then
        move = movestable[name].move9
    elseif it == "10" then
        move = movestable[name].move10
    elseif it == "11" then
        move = movestable[name].move11
    elseif it == "12" then
        move = movestable[name].move12
    elseif it == "13" then
        move = movestable[name].move13
    end

    if not move then
        doPlayerSendTextMessage(cid, 26, "Seu pokémon não reconhece esse move.")
    return true
    end
    
    if getPlayerLevel(cid) < move.level then
       doPlayerSendTextMessage(cid, 26, "Você precisa ser level "..move.level.." para usar este move.")
       return true
    end

    if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then
        doPlayerSendTextMessage(cid, 26, "Você tem que esperar "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." segundos para usar "..move.name.." novamente.")
    return true
    end

    if getTileInfo(getThingPos(mypoke)).protection then
        doPlayerSendCancel(cid, "Você não atacar em PZ.")
    return true
    end
                                      --alterado v1.6                  
    if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then       
        doPlayerSendCancel(cid, "Os seus pokemon precisa estar em uma equipe para usar este move!")
    return true
    end
                                                                     --alterado v1.7 \/\/\/


if move.target == 1 then

    if not isCreature(getCreatureTarget(cid)) then
    doPlayerSendTextMessage(cid, 26, "Você não tem um alvo.")
    return 0
    end

    if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then
    return 0
    end

    if getCreatureHealth(getCreatureTarget(cid)) <= 0 then
    doPlayerSendTextMessage(cid, 26, "Você já derrotou o seu alvo.")
    return 0
    end

    if not isCreature(getCreatureSummons(cid)[1]) then
    return true
    end

    if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Aproxime-se o alvo de usar este move.")
    return 0
    end

    if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then
    return 0
    end
end

    local newid = 0
    
    if isSleeping(mypoke) or isSilence(mypoke) then  --alterado v1.5
            doPlayerSendTextMessage(cid, MESSAGE_ORANGE, "Sorry you can't do that right now.")
            return 0
        else
            newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)
        end
        
    --doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", 19)
    
    local summons = getCreatureSummons(cid) --alterado v1.6

    addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin)
    
    for i = 2, #summons do
       if isCreature(summons[i]) and getPlayerStorageValue(cid, 637501) >= 1 then
          docastspell(summons[i], move.name)        --alterado v1.6
       end
    end 

    docastspell(mypoke, move.name)

    if useKpdoDlls then
        doUpdateCooldowns(cid)
    end

return 0
end

 

Link para o post
Compartilhar em outros sites
1 hora atrás, Nysman disse:

4 - Troca tudo por:

  Mostrar conteúdo oculto

-- Script Feita Por BrendoGraphicsFx
function onKill(cid, target)
if isPlayer(cid) and isMonster(target) then
if getGlobalStorageValue(102590) - os.time() >= 1 then
local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier)
local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.5*exp)/2)
doPlayerAddExperience(cid, count)
addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60))
end
else
return TRUE
end
return TRUE
end
 

 

5 é o mesmo que o 3. Ocorre por conflito em spells, algum determinado pokémon tá dando esse erro ai, olha qual spells e edita ela em pokemons moves, na lib.

Testa esse move1.lua:

  Mostrar conteúdo oculto

local msgs = {"use ", ""}

function doAlertReady(cid, id, movename, n, cd)
    if not isCreature(cid) then return true end
    local myball = getPlayerSlotItem(cid, ?
    if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then
    return true
    end
    local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)
    if not p or #p <= 0 then return true end
    for a = 1, #p do
        if getItemAttribute(p[a], cd) == "cd:"..id.."" then
        return true
        end
    end
end

function onSay(cid, words, param, channel)


    if param ~= "" then return true end
    if string.len(words) > 3 then return true end

    if #getCreatureSummons(cid) == 0 then
    doPlayerSendTextMessage(cid, 26, "Você precisa de um pokémon para usar moves.")
    return 0
    end
                      --alterado v1.5
local mypoke = getCreatureSummons(cid)[1]

    if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end
    if getCreatureName(mypoke) == "Evolution" then return true end

    if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then
       name = getPlayerStorageValue(mypoke, 1010)   --edited
    else
       name = getCreatureName(mypoke)
    end  
    
    --local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke)

local it = string.sub(words, 2, 3)
local move = movestable[name].move1
if getPlayerStorageValue(mypoke, 212123) >= 1 then
   cdzin = "cm_move"..it..""
else
   cdzin = "move"..it..""       --alterado v1.5
end

    if it == "2" then
        move = movestable[name].move2
    elseif it == "3" then
        move = movestable[name].move3
    elseif it == "4" then
        move = movestable[name].move4
    elseif it == "5" then
        move = movestable[name].move5
    elseif it == "6" then
        move = movestable[name].move6
    elseif it == "7" then
        move = movestable[name].move7
    elseif it == "8" then
        move = movestable[name].move8
    elseif it == "9" then
        move = movestable[name].move9
    elseif it == "10" then
        move = movestable[name].move10
    elseif it == "11" then
        move = movestable[name].move11
    elseif it == "12" then
        move = movestable[name].move12
    elseif it == "13" then
        move = movestable[name].move13
    end

    if not move then
        doPlayerSendTextMessage(cid, 26, "Seu pokémon não reconhece esse move.")
    return true
    end
    
    if getPlayerLevel(cid) < move.level then
       doPlayerSendTextMessage(cid, 26, "Você precisa ser level "..move.level.." para usar este move.")
       return true
    end

    if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then
        doPlayerSendTextMessage(cid, 26, "Você tem que esperar "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." segundos para usar "..move.name.." novamente.")
    return true
    end

    if getTileInfo(getThingPos(mypoke)).protection then
        doPlayerSendCancel(cid, "Você não atacar em PZ.")
    return true
    end
                                      --alterado v1.6                  
    if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then       
        doPlayerSendCancel(cid, "Os seus pokemon precisa estar em uma equipe para usar este move!")
    return true
    end
                                                                     --alterado v1.7 \/\/\/


if move.target == 1 then

    if not isCreature(getCreatureTarget(cid)) then
    doPlayerSendTextMessage(cid, 26, "Você não tem um alvo.")
    return 0
    end

    if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then
    return 0
    end

    if getCreatureHealth(getCreatureTarget(cid)) <= 0 then
    doPlayerSendTextMessage(cid, 26, "Você já derrotou o seu alvo.")
    return 0
    end

    if not isCreature(getCreatureSummons(cid)[1]) then
    return true
    end

    if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Aproxime-se o alvo de usar este move.")
    return 0
    end

    if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then
    return 0
    end
end

    local newid = 0
    
    if isSleeping(mypoke) or isSilence(mypoke) then  --alterado v1.5
            doPlayerSendTextMessage(cid, MESSAGE_ORANGE, "Sorry you can't do that right now.")
            return 0
        else
            newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)
        end
        
    --doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", 19)
    
    local summons = getCreatureSummons(cid) --alterado v1.6

    addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin)
    
    for i = 2, #summons do
       if isCreature(summons[i]) and getPlayerStorageValue(cid, 637501) >= 1 then
          docastspell(summons[i], move.name)        --alterado v1.6
       end
    end 

    docastspell(mypoke, move.name)

    if useKpdoDlls then
        doUpdateCooldowns(cid)
    end

return 0
end

 

5 funcionou mais o 4 Não! vou mandar o 4! para vc ver!exp.lua

Link para o post
Compartilhar em outros sites

Pô vi agora que mandei errado, era esse:

Spoiler

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)
      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 #getCreatureSummons(attacker) > 0 then
      if pokes[getCreatureName(cid)].type == "fire" and pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" then
      valor = math.ceil(valor * 1.25)
                 
                         elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == pokes[getCreatureName(cid)].type then
                      if pokes[getCreatureName(getCreatureSummons(attacker)[1])].type ~= "ghost" then
                      if pokes[getCreatureName(getCreatureSummons(attacker)[1])].type ~= "dragon" then
      valor = math.ceil(valor / 3)
           
     end
     end
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "rock" and pokes[getCreatureName(cid)].type == "ghost" then
      valor = 500 + valor *2      
      elseif pokes[getCreatureName(cid)].type == "water" and pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" then
      valor = math.ceil(valor / 3)
            
      elseif pokes[getCreatureName(cid)].type == "ground" and pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" then
       
     return false
      elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "normal" and pokes[getCreatureName(cid)].type == "rock" then
      valor = math.ceil(valor / 3)
            
          elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "normal" and pokes[getCreatureName(cid)].type == "ghost" then
            
               return false
         elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "fire" then
      valor = math.ceil(valor / 3)
            
           elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "grass" then
      valor = math.ceil(valor * 1.25)
            
           elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "ice" then
      valor = math.ceil(valor * 1.25)
      
           elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "bug" then
      valor = math.ceil(valor * 1.25)
            
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "rock" then
      valor = math.ceil(valor / 3)
       
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "dragon" then
      valor = math.ceil(valor / 3)
       
                     elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "steel" then
      valor = math.ceil(valor * 1.25)
      
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "water" then
      valor = math.ceil(valor / 3)
            
                     elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "grass" then
      valor = math.ceil(valor / 3)
           
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "ground" then
      valor = math.ceil(valor * 1.25)
       
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "rock" then
      valor = math.ceil(valor * 1.25)
          
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "dragon" then
      valor = math.ceil(valor / 3)
           
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "water" then
      valor = math.ceil(valor * 1.25)
           
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "grass" then
      valor = math.ceil(valor / 3)
                    
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "flying" then
      valor = math.ceil(valor * 1.25)
              
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "dragon" then
      valor = math.ceil(valor / 3)
                  
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "fire" then
      valor = math.ceil(valor / 3)
           
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "water" then
      valor = math.ceil(valor * 1.25)
       
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "poison" then
      valor = math.ceil(valor / 3)
                 
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "ground" then
      valor = math.ceil(valor * 1.25)
       
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "flying" then
      valor = math.ceil(valor / 3)
             
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "bug" then
      valor = math.ceil(valor / 3)
       
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "rock" then
      valor = math.ceil(valor * 1.25)
           
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "dragon" then
      valor = math.ceil(valor / 3)
             
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "steel" then
      valor = math.ceil(valor / 3)
                      
                     elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "ice" then 
                  if pokes[getCreatureName(cid)].type == "fire" then
                        valor = math.ceil(valor / 3)
        
                      elseif pokes[getCreatureName(cid)].type == "water" then
                        valor = math.ceil(valor / 3)
        
                      elseif pokes[getCreatureName(cid)].type == "steel" then
                        valor = math.ceil(valor / 3)
        
                      elseif pokes[getCreatureName(cid)].type == "grass" then
                        valor = math.ceil(valor * 1.25)
        
                      elseif pokes[getCreatureName(cid)].type == "ground" then
                        valor = math.ceil(valor * 1.25)
        
                      elseif pokes[getCreatureName(cid)].type == "flying" then
                        valor = math.ceil(valor * 1.25)
       
                  elseif pokes[getCreatureName(cid)].type == "dragon" then
                        valor = math.ceil(valor * 1.25)
       
                  end     
             elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fighting" then 
                 if pokes[getCreatureName(cid)].type == "normal" or pokes[getCreatureName(cid)].type == "ice" or pokes[getCreatureName(cid)].type == "rock" or pokes[getCreatureName(cid)].type == "dark" or pokes[getCreatureName(cid)].type == "steel" then
                        valor = math.ceil(valor * 1.25)
       
                elseif pokes[getCreatureName(cid)].type == "poison" or pokes[getCreatureName(cid)].type == "flying" or pokes[getCreatureName(cid)].type == "bug" or pokes[getCreatureName(cid)].type == "psychic" or pokes[getCreatureName(cid)].type == "fairy" then
                                         valor = math.ceil(valor / 3)
      
            elseif pokes[getCreatureName(cid)].type == "ghost" then
                        
                     return false
                 end     
            elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "poison" then
            if pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "fairy" then
                                valor = math.ceil(valor * 1.25)
       
     elseif pokes[getCreatureName(cid)].type == "ground" or pokes[getCreatureName(cid)].type == "rock" or pokes[getCreatureName(cid)].type == "ghost" then
                                              valor = math.ceil(valor / 3)
       
     elseif pokes[getCreatureName(cid)].type == "steel" then
            
     return false
     end
                 elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "ground" then
                            if pokes[getCreatureName(cid)].type == "fire" or pokes[getCreatureName(cid)].type == "electric" or pokes[getCreatureName(cid)].type == "poison" or pokes[getCreatureName(cid)].type == "rock" then
                                valor = math.ceil(valor * 1.25)
       
     elseif pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "bug" then
                                              valor = math.ceil(valor / 3)
       
     elseif pokes[getCreatureName(cid)].type == "flying" then
            
     return false
     end
                      elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "flying" then
                            if pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "bug" then
                                valor = math.ceil(valor * 1.25)
       
     elseif pokes[getCreatureName(cid)].type == "electric" or pokes[getCreatureName(cid)].type == "rock" then
                                              valor = math.ceil(valor / 3)
       
     end
                           elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "psychic" then
                            if pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "poison"then
                                valor = math.ceil(valor * 1.25)
       
     elseif pokes[getCreatureName(cid)].type == "psychic" then
                                              valor = math.ceil(valor / 3)
       
     end
                           elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "bug" then
                            if pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "poison" or pokes[getCreatureName(cid)].type == "psychic" then
                                valor = math.ceil(valor * 1.25)
       
     elseif pokes[getCreatureName(cid)].type == "fire" or pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "flying" then
                                              valor = math.ceil(valor / 3)
       
     end
                                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "rock" then
                            if pokes[getCreatureName(cid)].type == "fire" or pokes[getCreatureName(cid)].type == "ice" or pokes[getCreatureName(cid)].type == "flying" or pokes[getCreatureName(cid)].type == "bug" then
                                valor = math.ceil(valor * 1.25)
       
     elseif pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "ground" then
                                              valor = math.ceil(valor / 3)
       
     end
                                     elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "ghost" then
                            if pokes[getCreatureName(cid)].type == "ghost" then
                                valor = math.ceil(valor * 1.25)
       
     elseif pokes[getCreatureName(cid)].type == "normal" or pokes[getCreatureName(cid)].type == "psychic" then
       
     return false
     end
                                          elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "dragon" then
                            if pokes[getCreatureName(cid)].type == "dragon" then
                                valor = math.ceil(valor * 1.25)
       
     end
      end

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
    valor = valor / math.ceil(getPlayerLevel(cid) / 55)

    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, ?
          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 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
        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
    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 == 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
   
   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

 

Link para o post
Compartilhar em outros sites
2 minutos atrás, Nysman disse:

Pô vi agora que mandei errado, era esse:

  Ocultar conteúdo

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)
      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 #getCreatureSummons(attacker) > 0 then
      if pokes[getCreatureName(cid)].type == "fire" and pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" then
      valor = math.ceil(valor * 1.25)
                 
                         elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == pokes[getCreatureName(cid)].type then
                      if pokes[getCreatureName(getCreatureSummons(attacker)[1])].type ~= "ghost" then
                      if pokes[getCreatureName(getCreatureSummons(attacker)[1])].type ~= "dragon" then
      valor = math.ceil(valor / 3)
           
     end
     end
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "rock" and pokes[getCreatureName(cid)].type == "ghost" then
      valor = 500 + valor *2      
      elseif pokes[getCreatureName(cid)].type == "water" and pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" then
      valor = math.ceil(valor / 3)
            
      elseif pokes[getCreatureName(cid)].type == "ground" and pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" then
       
     return false
      elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "normal" and pokes[getCreatureName(cid)].type == "rock" then
      valor = math.ceil(valor / 3)
            
          elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "normal" and pokes[getCreatureName(cid)].type == "ghost" then
            
               return false
         elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "fire" then
      valor = math.ceil(valor / 3)
            
           elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "grass" then
      valor = math.ceil(valor * 1.25)
            
           elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "ice" then
      valor = math.ceil(valor * 1.25)
      
           elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "bug" then
      valor = math.ceil(valor * 1.25)
            
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "rock" then
      valor = math.ceil(valor / 3)
       
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "dragon" then
      valor = math.ceil(valor / 3)
       
                     elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "steel" then
      valor = math.ceil(valor * 1.25)
      
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "water" then
      valor = math.ceil(valor / 3)
            
                     elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "grass" then
      valor = math.ceil(valor / 3)
           
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "ground" then
      valor = math.ceil(valor * 1.25)
       
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "rock" then
      valor = math.ceil(valor * 1.25)
          
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "dragon" then
      valor = math.ceil(valor / 3)
           
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "water" then
      valor = math.ceil(valor * 1.25)
           
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "grass" then
      valor = math.ceil(valor / 3)
                    
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "flying" then
      valor = math.ceil(valor * 1.25)
              
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "dragon" then
      valor = math.ceil(valor / 3)
                  
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "fire" then
      valor = math.ceil(valor / 3)
           
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "water" then
      valor = math.ceil(valor * 1.25)
       
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "poison" then
      valor = math.ceil(valor / 3)
                 
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "ground" then
      valor = math.ceil(valor * 1.25)
       
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "flying" then
      valor = math.ceil(valor / 3)
             
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "bug" then
      valor = math.ceil(valor / 3)
       
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "rock" then
      valor = math.ceil(valor * 1.25)
           
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "dragon" then
      valor = math.ceil(valor / 3)
             
                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "steel" then
      valor = math.ceil(valor / 3)
                      
                     elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "ice" then 
                  if pokes[getCreatureName(cid)].type == "fire" then
                        valor = math.ceil(valor / 3)
        
                      elseif pokes[getCreatureName(cid)].type == "water" then
                        valor = math.ceil(valor / 3)
        
                      elseif pokes[getCreatureName(cid)].type == "steel" then
                        valor = math.ceil(valor / 3)
        
                      elseif pokes[getCreatureName(cid)].type == "grass" then
                        valor = math.ceil(valor * 1.25)
        
                      elseif pokes[getCreatureName(cid)].type == "ground" then
                        valor = math.ceil(valor * 1.25)
        
                      elseif pokes[getCreatureName(cid)].type == "flying" then
                        valor = math.ceil(valor * 1.25)
       
                  elseif pokes[getCreatureName(cid)].type == "dragon" then
                        valor = math.ceil(valor * 1.25)
       
                  end     
             elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fighting" then 
                 if pokes[getCreatureName(cid)].type == "normal" or pokes[getCreatureName(cid)].type == "ice" or pokes[getCreatureName(cid)].type == "rock" or pokes[getCreatureName(cid)].type == "dark" or pokes[getCreatureName(cid)].type == "steel" then
                        valor = math.ceil(valor * 1.25)
       
                elseif pokes[getCreatureName(cid)].type == "poison" or pokes[getCreatureName(cid)].type == "flying" or pokes[getCreatureName(cid)].type == "bug" or pokes[getCreatureName(cid)].type == "psychic" or pokes[getCreatureName(cid)].type == "fairy" then
                                         valor = math.ceil(valor / 3)
      
            elseif pokes[getCreatureName(cid)].type == "ghost" then
                        
                     return false
                 end     
            elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "poison" then
            if pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "fairy" then
                                valor = math.ceil(valor * 1.25)
       
     elseif pokes[getCreatureName(cid)].type == "ground" or pokes[getCreatureName(cid)].type == "rock" or pokes[getCreatureName(cid)].type == "ghost" then
                                              valor = math.ceil(valor / 3)
       
     elseif pokes[getCreatureName(cid)].type == "steel" then
            
     return false
     end
                 elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "ground" then
                            if pokes[getCreatureName(cid)].type == "fire" or pokes[getCreatureName(cid)].type == "electric" or pokes[getCreatureName(cid)].type == "poison" or pokes[getCreatureName(cid)].type == "rock" then
                                valor = math.ceil(valor * 1.25)
       
     elseif pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "bug" then
                                              valor = math.ceil(valor / 3)
       
     elseif pokes[getCreatureName(cid)].type == "flying" then
            
     return false
     end
                      elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "flying" then
                            if pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "bug" then
                                valor = math.ceil(valor * 1.25)
       
     elseif pokes[getCreatureName(cid)].type == "electric" or pokes[getCreatureName(cid)].type == "rock" then
                                              valor = math.ceil(valor / 3)
       
     end
                           elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "psychic" then
                            if pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "poison"then
                                valor = math.ceil(valor * 1.25)
       
     elseif pokes[getCreatureName(cid)].type == "psychic" then
                                              valor = math.ceil(valor / 3)
       
     end
                           elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "bug" then
                            if pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "poison" or pokes[getCreatureName(cid)].type == "psychic" then
                                valor = math.ceil(valor * 1.25)
       
     elseif pokes[getCreatureName(cid)].type == "fire" or pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "flying" then
                                              valor = math.ceil(valor / 3)
       
     end
                                elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "rock" then
                            if pokes[getCreatureName(cid)].type == "fire" or pokes[getCreatureName(cid)].type == "ice" or pokes[getCreatureName(cid)].type == "flying" or pokes[getCreatureName(cid)].type == "bug" then
                                valor = math.ceil(valor * 1.25)
       
     elseif pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "ground" then
                                              valor = math.ceil(valor / 3)
       
     end
                                     elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "ghost" then
                            if pokes[getCreatureName(cid)].type == "ghost" then
                                valor = math.ceil(valor * 1.25)
       
     elseif pokes[getCreatureName(cid)].type == "normal" or pokes[getCreatureName(cid)].type == "psychic" then
       
     return false
     end
                                          elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "dragon" then
                            if pokes[getCreatureName(cid)].type == "dragon" then
                                valor = math.ceil(valor * 1.25)
       
     end
      end

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
    valor = valor / math.ceil(getPlayerLevel(cid) / 55)

    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, ?
          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 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
        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
    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 == 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
   
   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

 

Irei testar, sabe arruma o 1?

 

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por Muvuka
      Alguem tem anti-nuker igual a esse 
       

       
    • Por Muvuka
      [SQLite] -=[TFS]=- 0.4 8.60 Alguem faz apk mobile pra mim ip: dexsoft.ddns.net
       
      pra mim
       
      https://www.mediafire.com/file/5klqnyy6k7jda0u/OTClientV8.rar/file
       
      TA TUDO AI
    • Por yuriowns
      Salve rapazes, estou precisando de um client próprio para o meu servidor 7.4, preciso que algum programador experiente e com referências faça um client do jeito que eu procuro. Responda aqui para fazermos um orçamento, obrigado!

      Não sei se estou no lugar certo, se não me desculpem e peço que movam por gentileza!
    • Por paulo thush
      Pessoal to com um grande problema, estou com um servidor TFS 1.4x 10.98, recentemente começou dar um problema, sempre quando falava "trade" com o npc dava um erros, com qual quer npc, o erro e o seguinte.
       
       
      me falaram que o problema e nas sourcer que precisava mudar umas coisas me passaram um link no github esse aqui 
      https://github.com/otland/forgottenserver/pull/3996/files
       
      porem eu vi vídeos no youtube ensinando a compilar, já vi muitos tópicos como compilar a sourcer, ai quando vou compilar da esse erro
      já tentei instalar, desinstala muitas coisas, alterar também não vai, minha sourcer e essa 
      https://github.com/otland/forgottenserver
       
       
      Alguém poderia me ajuda com esse erro, ou ate compilar 100% as sourcer. os Tópicos que eu tentei para compilar e esse daqui, se não poder o link me desculpe.
      https://forums.otserv.com.br/index.php?/forums/topic/169234-windowsvc2019-compilando-sources-tfs-14-vcpkg/
       
      alguém me da uma luz por favor kkk
    • Por Ryzek
      Uso tfs 0.4 trunk3884 bem simples.
      Queria acrescentar magic effects para 255 pois o meu só vai até 69. Encontrei um tópico que falava sobre porém parece ter sido removido, não consigo acessar!
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo