Ir para conteúdo

Elisson Lima

Campones
  • Total de itens

    3
  • Registro em

  • Última visita

Posts postados por Elisson Lima

  1. Em 21/09/2016 em 19:27, JairKevick disse:

    Salve Galera, venho hoje trazer um tutorial bastante pedido pela galera que é de como colocar a famosa pokebar ! ah mas para você que n sabe segue a imagem abaixo da pokebar 

     

    http://www.tibiaking.com/forum/uploads/monthly_06_2015/post-93401-0-80396700-1433180183.png

     

    vamos ao tutorial?

     

     

    1. Vá na pasta data\actions\scripts\goback.lua
    e embaixo da parte:
    function onUse(cid, item, frompos, item2, topos)
    coloque: 
    sendAllPokemonsBarPoke(cid)
    2. Vá na pasta data\lib\catch system.lua
    Procure por:
    setPlayerStorageValue(cid, 854788, 'done') end
    e embaixo coloque: 
    sendAllPokemonsBarPoke(cid)

    3. Vá na pasta data\lib\cooldown bar.lua

    e troque tudo por esse:
     
      Mostrar conteúdo oculto

    function getPlayerPokeballs(cid)                                   --alterado v1.9 \/
    local ret = {}
    local container = 0
     
    if isCreature(cid) then
       container = getPlayerSlotItem(cid, 3).uid
       local myball = getPlayerSlotItem(cid, 8):
       if myball.uid > 0 then
          table.insert(ret, myball)
       end
    else
       container = cid
    end
     
    if isContainer(container) and getContainerSize(container) > 0 then
       for slot = 0, (getContainerSize(container) - 1) do
           local item = getContainerItem(container, slot)
           if isContainer(item.uid) then
              local itemsbag = getPlayerPokeballs(item.uid)
              if itemsbag and #itemsbag > 0 then
                 for i = 0, #itemsbag do
                     table.insert(ret, itemsbag)
                 end
              end
           elseif isPokeball(item.itemid) then
              table.insert(ret, item)
           end
       end
    end
    return ret
    end
     
    function doUpdatePokemonsBar(cid)
    if not isCreature(cid) then return true end
    if getPlayerStorageValue(cid, 656494) > 0 then
    return true
    end
    setPlayerStorageValue(cid, 656494, 1000)
    addEvent(setPlayerStorageValue, 100, cid, 656494, -1)
     
    local ret = {}
    table.insert(ret, "p#,")
    local balls = getPlayerPokeballs(cid)
    local times = 0
    for a = 1, #balls do
        local item = balls[a]
        local hp = math.ceil(getItemAttribute(item.uid, "hp") * 100)
        local name = getItemAttribute(item.uid, "poke")
        local port = getPlayerSlotItem(cid, CONST_SLOT_LEGS) 
        if fotos[name] >= 11137 and fotos[name] <= 11387 then
           times = times + 1
           local foto = fotos[name] - 911
           doItemSetAttribute(item.uid, "ballorder", times)
           table.insert(ret, foto..","..name..""..times..","..hp..",")                
        elseif fotos[name] >= 12605 then                                           
           times = times + 1                                                      
           local foto = fotos[name] - 1178  --alterado v1.9 
           doItemSetAttribute(item.uid, "ballorder", times)
           table.insert(ret, foto..","..name..""..times..","..hp..",")
        else
           times = times + 1
           local foto = fotos[name] - 928
           doItemSetAttribute(item.uid, "ballorder", times)
           table.insert(ret, foto..","..name..""..times..","..hp..",")
        end
    end
    doPlayerSendCancel(cid, table.concat(ret))
    end
     
    function getNewMoveTable(table, n)
    if table == nil or not n then return false end
     
    local moves = {table.move1, table.move2, table.move3, table.move4, table.move5, table.move6, table.move7, table.move8, table.move9,
    table.move10, table.move11, table.move12}
     
    return moves[n] or false
    end
     
     
    function doUpdateMoves(cid)
    if not isCreature(cid) then return true end
    local summon = getCreatureSummons(cid)[1]
    local ret = {}
    table.insert(ret, "12&,")
    if not summon then
       for a = 1, 12 do
           table.insert(ret, "n/n,")
       end
       doPlayerSendCancel(cid, table.concat(ret))
       addEvent(doUpdateCooldowns, 100, cid)
    return true
    end
    if isTransformed(summon) then  --alterado v1.9
       moves = movestable[getPlayerStorageValue(summon, 1010)]
    else                                                       
       moves = movestable[getCreatureName(summon)]
    end
    for a = 1, 12 do
        local b = getNewMoveTable(moves, a)
        if b then
           table.insert(ret, b.name..",")
        else
           table.insert(ret, "n/n,")
        end
    end
    doPlayerSendCancel(cid, table.concat(ret))
    addEvent(doUpdateCooldowns, 100, cid)
    end
     
    function doUpdateCooldowns(cid)
    if not isCreature(cid) then return true end
    local a = getPlayerSlotItem(cid, 8):
    local ret = {}
    table.insert(ret, "12|,")
    if a.uid <= 0 or #getCreatureSummons(cid) <= 0 then
       for cds = 1, 12 do
           if useOTClient then table.insert(ret, "-1|0,") else table.insert(ret, "-1,") end  
       end
       doPlayerSendCancel(cid, table.concat(ret))
    return true
    end
    for cds = 1, 12 do                                                         
        ----
        local summon = getCreatureSummons(cid)[1]
        if summon and getPlayerStorageValue(summon, 212123) >= 1 then
           cdzin = "cm_move"..cds
        else                       
           cdzin = "move"..cds
        end
        ----
        if isTransformed(summon) then  --alterado v1.9
           moves = movestable[getPlayerStorageValue(summon, 1010)]
        else                                                       
           moves = movestable[getCreatureName(summon)]
        end
        local b = getNewMoveTable(moves, cds)
        if not b then
           for cds = 1, 12 do
               if useOTClient then table.insert(ret, "-1|0,") else table.insert(ret, "-1,") end   --alterado v1.9
           end
           doPlayerSendCancel(cid, table.concat(ret))
        return true
        end
        ----
        if getCD(a.uid, cdzin) > 0 then
           if (useOTClient and b) then table.insert(ret, (getCD(a.uid, cdzin)).."|"..b.level..",") else table.insert(ret, (getCD(a.uid, cdzin))..",") end
        else
           if (useOTClient and b) then table.insert(ret, "0|"..b.level..",") else table.insert(ret, "0,") end  
        end
    end
    doPlayerSendCancel(cid, table.concat(ret))                                             
    end
     
    function getBallsAttributes(item)
    local t = {"poke", "gender", "nick", "boost", "happy", "hp", "description", "transBegin", "hunger", "transLeft", "transTurn", "transOutfit", "transName", 
    "trans", "light", "blink", "move1", "move2", "move3", "move4", "move5", "move6", "move7", "move8", "move9", "move10", "move11", "move12", "ballorder", 
    "hands", "aura", "burn", "burndmg", "poison", "poisondmg", "confuse", "sleep", "miss", "missSpell", "missEff", "fear", "fearSkill", "silence", 
    "silenceEff", "stun", "stunEff", "stunSpell", "paralyze", "paralyzeEff", "slow", "slowEff", "leech", "leechdmg", "Buff1", "Buff2", "Buff3", "Buff1skill",
    "Buff2skill", "Buff3skill", "control", "unique", "task", "lock"} 
    local ret = {}
    for a = 1, #t do
    if getItemAttribute(item, t[a]) == "hands" then
    return
    end
    ret[t[a]] = getItemAttribute(item, t[a]) or false
    end
    return ret
    end
     
    function doChangeBalls(cid, item1, item2)
    if not isCreature(cid) then return true end
    if item1.uid == item2.uid then
       if #getCreatureSummons(cid) <= 0 then
          doGoPokemon(cid, getPlayerSlotItem(cid, 8))
       else
          doReturnPokemon(cid, getCreatureSummons(cid)[1], getPlayerSlotItem(cid, 8), pokeballs[getPokeballType(getPlayerSlotItem(cid, 8).itemid)].effect)
       end
    return true
    end
     
    if item1.uid > 0 and item2.uid > 0 then
       local io = getBallsAttributes(item1.uid)
       local it = getBallsAttributes(item2.uid)
       for a, b in pairs (io) do
           if b then
              doItemSetAttribute(item2.uid, a, b)
           else
              doItemEraseAttribute(item2.uid, a)
           end
       end
       for a, b in pairs (it) do
           if b then
              doItemSetAttribute(item1.uid, a, b)
           else
              doItemEraseAttribute(item1.uid, a)
           end
       end
       local id = item2.itemid
       doTransformItem(item2.uid, item1.itemid)
       doTransformItem(item1.uid, id)
       doGoPokemon(cid, getPlayerSlotItem(cid, 8))
    else
       local id = item2.itemid
       local b = getBallsAttributes(item2.uid)
       local a = doPlayerAddItem(cid, 2643, false)
       for c, d in pairs (b) do
           if d then
              doItemSetAttribute(a, c, d)
           else
              doItemEraseAttribute(a, c)
           end
       end
       doRemoveItem(item2.uid, 1)
       doTransformItem(a, id)
       doGoPokemon(cid, getPlayerSlotItem(cid, 8))
    end
    end

     

    4. Vá na pasta data\lib\some functions.lua
    Troque por esse:

     

      Mostrar conteúdo oculto

    function addPokeToPlayer(cid, pokemon, boost, gender, ball, unique, level)             --alterado v1.9 \/ peguem ele todo...
    local genders = {
    ["male"] = 4,
    ["female"] = 3,
    [1] = 4,
    [0] = 3,
    [4] = 4,
    [3] = 3,
    }
     
     
    if not isCreature(cid) then return false end
     
    sendAllPokemonsBarPoke(cid)
    local pokemon = doCorrectString(pokemon)
    if not pokes[pokemon] then return false end
     
       local GENDER = (gender and genders[gender]) and genders[gender] or getRandomGenderByName(pokemon)
       local btype = (ball and pokeballs[ball]) and ball or isShinyName(pokemon) and "shinynormal" or "normal"
       local happy = 250
     
       if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then 
          item = doCreateItemEx(11826)
       else
          item = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, 11826, 1)   
       end
       if not item then return false end
     
       doItemSetAttribute(item, "poke", pokemon)
       doItemSetAttribute(item, "hp", 1)
       doItemSetAttribute(item, "level", level and level or 1)
       doItemSetAttribute(item, "happy", happy)
       doItemSetAttribute(item, "gender", GENDER)
       doSetItemAttribute(item, "hands", 0)
       doItemSetAttribute(item, "description", "Contains a "..pokemon..".")
       doItemSetAttribute(item, "fakedesc", "Contains a "..pokemon..".") 
       if boost and tonumber(boost) and tonumber(boost) > 0 and tonumber(boost) <= 50 then
          doItemSetAttribute(item, "boost", boost)
       end
       if unique then
          doItemSetAttribute(item, "unique", getCreatureName(cid))
       end
                                                                                 
       if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then
          doPlayerSendMailByName(getCreatureName(cid), item, 1)
          sendMsgToPlayer(cid, 27, "You are already holding six pokemons, so your new pokemon was sent to your depot.")
       end
       if (isShinyName(pokemon) or (boost and tonumber(boost) and tonumber(boost) >= 10)) and pokeballs["shiny"..btype] then
          doTransformItem(item, pokeballs["shiny"..btype].on)
       else
          doTransformItem(item, pokeballs[btype].on)
       end
     
    if getPlayerGroupId(cid) > 4 then
    local shinys = {
    "Venusaur", "Charizard", "Blastoise", "Butterfree", "Beedrill", "Pidgeot", "Rattata", "Raticate", "Raichu", "Zubat", "Golbat", "Paras", "Parasect", 
    "Venonat", "Venomoth", "Growlithe", "Arcanine", "Abra", "Alakazam", "Tentacool", "Tentacruel", "Farfetch'd", "Grimer", "Muk", "Gengar", "Onix", "Krabby", 
    "Kingler", "Voltorb", "Electrode", "Cubone", "Marowak", "Hitmonlee", "Hitmonchan", "Tangela", "Horsea", "Seadra", "Scyther", "Jynx", "Electabuzz", "Pinsir", 
    "Magikarp", "Gyarados", "Snorlax", "Dragonair", "Dratini", "Dragonite"}
     
    if isInArray(shinys, pokemon) then
               sendMsgToPlayer(cid, 27, "Transform Poke In Shiny")
               tranfBallInShiny(item)
              end
    end
     
     
    sendAllPokemonsBarPoke(cid)
    return true
    end 
    ---------------------------
     
    function unLock(ball)                                                             
    if not ball or ball <= 0 then return false end
    if getItemAttribute(ball, "lock") and getItemAttribute(ball, "lock") > 0 then
       local vipTime = getItemAttribute(ball, "lock")
       local timeNow = os.time()
       local days = math.ceil((vipTime - timeNow)/(24 * 60 * 60))
       if days <= 0 then
          doItemEraseAttribute(ball, "lock")    
          doItemEraseAttribute(ball, "unique")
          return true
       end
    end
    return false
    end
     
    function getGuildMembersOnline(GuildId)
    local players = {}
    for _, pid in pairs(getPlayersOnline()) do
        if getPlayerGuildId(pid) == tonumber(GuildId) then
           table.insert(players, pid)
        end
    end                                                   --by Vodkart
    return #players > 0 and players or false
    end
     
    function getGuildMembers(GuildId)
    local players,query = {},db.getResult("SELECT `name` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. GuildId .. ");")
    if (query:getID() ~= -1) then  
       repeat
             table.insert(players,query:getDataString("name"))
       until not query:next()                           --by Vodkart
       query:free()
    end
     
    return #players > 0 and players or false
    end 
    --/////////////////////////////////////////////////////////////////////////////////---
    function sendMsgToPlayer(cid, tpw, msg)      --alterado v1.7 \/\/\/
    if not isCreature(cid) or not tpw or not msg then return true end
    return doPlayerSendTextMessage(cid, tpw, msg)
    end
     
    function getPlayerDesc(cid, thing, TV)
    if (not isCreature(cid) or not isCreature(thing)) and not TV then return "" end
     
    local pos = getThingPos(thing)
    local ocup = youAre[getPlayerGroupId(thing)]
    local rank = (getPlayerStorageValue(thing, 86228) <= 0) and "a Pokemon Trainer" or lookClans[getPlayerStorageValue(thing, 86228)][getPlayerStorageValue(thing, 862281)]
    local name = thing == cid and "yourself" or getCreatureName(thing)     
    local art = thing == cid and "You are" or (getPlayerSex(thing) == 0 and "She is" or "He is")
       
    local str = {}
    table.insert(str, "You see "..name..". "..art.." ")
    if youAre[getPlayerGroupId(thing)] then
       table.insert(str, (ocup).." and "..rank.." from ".. getTownName(getPlayerTown(thing))..".")       
    else
       table.insert(str, (rank).." from ".. getTownName(getPlayerTown(thing))..".")
    end
    if getPlayerGuildId(thing) > 0 then
       table.insert(str, " "..art.." "..getPlayerGuildRank(thing).." from the "..getPlayerGuildName(thing)..".")
    end
    if TV then
       table.insert(str, " "..art.." watching TV.")
    end
    table.insert(str, ((isPlayer(cid) and youAre[getPlayerGroupId(cid)]) and "\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]" or "")) 
     
    return table.concat(str) 
    end
    -------------------------------------------------------------------------------------------------   /\/\
     
     
    function getPokemonLevelByPokemon(pk)
    if isSummon(pk) then
    local cid = getCreatureMaster(pk)
    if cid then
    local ball = getPlayerSlotItem(cid, 8):
    if ball.uid ~= 0 then
    return getItemAttribute(ball.uid, "level") or 1
    end
    end
    end
    return false
    end
     
     
    function addValuePokeLevel(level, value)
    if tonumber(level) then
    value = value/100
    value = value*level
    return value
    end
    return false
    end
     
     
     
    function getLivePokeballs(cid, container, duel) 
        if not isCreature(cid) then return {} end     
    if not isContainer(container) then return {} end
    local items = {}
    ---
    local ballSlot = getPlayerSlotItem(cid, 8):
        if ballSlot.uid ~= 0 then
           for a, b in pairs (pokeballs) do
               if ballSlot.itemid == b.on or ballSlot.itemid == b.use then
                  if duel and getPlayerLevel(cid) >= (pokes[getItemAttribute(ballSlot.uid, "poke")].level + getPokeballBoost(ballSlot)) then
                     table.insert(items, ballSlot.uid)                                                                      --alterado v1.8
                  elseif not duel then
                     table.insert(items, ballSlot.uid)
                  end
               end
           end
        end
        ---     
    if isContainer(container) and getContainerSize(container) > 0 then      
    for slot=0, (getContainerSize(container)-1) do
    local item = getContainerItem(container, slot)
    if isContainer(item.uid) then
    local itemsbag = getPokeballsInContainer(item.uid)
    for i=0, #itemsbag do
    if not isInArray(items, itemsbag) then
                               table.insert(items, itemsbag)
                            end
    end
    elseif isPokeball(item.itemid) then
       for a, b in pairs (pokeballs) do
                            if item.itemid == b.on then
                               if duel and getPlayerLevel(cid) >= (pokes[getItemAttribute(item.uid, "poke")].level + getPokeballBoost(item)) then    
             table.insert(items, item.uid)                                            --alterado v1.8
                               elseif not duel then
                                  table.insert(items, item.uid)
                               end
                       end
                        end
    end
    end
    end
    return items
    end
     
    function addItemInFreeBag(container, item, num)
    if not isContainer(container) or not item then return false end                                             
    if not num or num <= 0 then num = 1 end                                            --alterado v1.6.1
    if getContainerSize(container) < getContainerCap(container) then
       return doAddContainerItem(container, item, num)
    else
       for slot = 0, (getContainerSize(container)-1) do
           local container2 = getContainerItem(container, slot)
           if isContainer(container2.uid) and getContainerSize(container2.uid) < getContainerCap(container2.uid) then
              return doAddContainerItem(container2.uid, item, num)
           end
       end
    end
    return false
    end
    ------------------------------------------------------------------------------------------------------
    function pokeHaveReflect(cid)
    if not isCreature(cid) then return false end
    local table = getTableMove(cid, "Reflect")
    if table and table.name then     --alterado v1.6
       return true 
    end
    return false
    end
    ------------------------------------------------------------------------------------------------------
    function nextHorario(cid)
        horarioAtual = os.date("%X")
        horario = string.explode(horarioAtual, ":")
        
        for i = 1, #horas do
            horarioComparacao = horas
            horarioComp = string.explode(horarioComparacao, ":")
            ---------------
            if tonumber(horarioComp[1]) > tonumber(horario[1]) then
               return horarioComparacao                                
            elseif tonumber(horarioComp[1]) == tonumber(horario[1]) and tonumber(horario[2]) < tonumber(horarioComp[2]) then
               return horarioComparacao
            end
        end 
        return horas[1]                                  
    end                                                               
     
    function getTimeDiff(timeDiff)
    local dateFormat = {
    {'hour', timeDiff / 60 / 60}, --6%
    {'min', timeDiff / 60 % 60},
    }
    local out = {}                                   
    for k, t in ipairs(dateFormat) do
        local v = math.floor(t[2])
        if(v > -1) then
             table.insert(out, (k < #dateFormat and '' or ' and ') .. v .. '' .. (v <= 1 and t[1] or t[1].."s"))
        end
    end
    if tonumber(dateFormat[1][2]) == 0 and tonumber(dateFormat[2][2]) == 0 then
       return "seconds"
    end
    return table.concat(out)
    end
     
    function getTimeDiff2(timeDiff)
    local dateFormat = {
    {'hour', timeDiff / 60 / 60}, --6%
    {'min', timeDiff / 60 % 60},
    {'sec', timeDiff % 60},
    }
    local out = {}                                  
    for k, t in ipairs(dateFormat) do
        local v = math.floor(t[2])
        if(v > 0) then
             table.insert(out, (k < #dateFormat and ' ' or ' and ') .. v .. '' .. (v <= 1 and t[1] or t[1].."s"))
        end
    end
    return table.concat(out)
    end 
     
    function showTimeDiff(timeComp)
    local b = string.explode(os.date("%X"), ":")
    local c = string.explode(timeComp, ":")
        ---
        local d, m, y = os.date("%d"), os.date("%m"), os.date("%Y")
        local hAtual, mAtual = tonumber(b[1]), tonumber(b[2])
        local hComp, mComp = tonumber(c[1]), tonumber(c[2])
        ---
        local t = os.time{year= y, month= m, day= d, hour= hAtual, min= mAtual}
        local t1 = os.time{year= y, month= m, day= d, hour= hComp, min= mComp}
        ---                                                                       
        comparacao = t1-t
        if hComp < hAtual then
           v = os.time{year= y, month= m, day= d, hour= 24, min= 0}
           v2 = os.time{year= y, month= m, day= d, hour= 0, min= 0}
           comparacao = (v-t)+(t1-v2)
        end
    return getTimeDiff(comparacao)
    end
    -------------------------------------------------------------------------
    function cleanCMcds(item)
    if item ~= 0 then
       for c = 1, 15 do              --alterado v1.5
          local str = "cm_move"..c
          setCD(item, str, 0)
       end
    end
    end
     
    function ehNPC(cid)   --alterado v1.9
    return isCreature(cid) and not isPlayer(cid) and not isSummon(cid) and not isMonster(cid)
    end
     
    function ehMonstro(cid)   --alterado v1.9
    return cid and cid >= AUTOID_MONSTERS and cid < AUTOID_NPCS
    end
     
    function doAppear(cid)    --Faz um poke q tava invisivel voltar a ser visivel...
    if not isCreature(cid) then return true end
    doRemoveCondition(cid, CONDITION_INVISIBLE)
        doRemoveCondition(cid, CONDITION_OUTFIT)
    doCreatureSetHideHealth(cid, false)
    if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then
           if isSummon(cid) then
              local item = getPlayerSlotItem(getCreatureMaster(cid), 8):
              doSetCreatureOutfit(cid, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)   --alterado v1.6.1
           end
        end 
    end
     
    function doDisapear(cid)   --Faz um pokemon ficar invisivel
    if not isCreature(cid) then return true end
    doCreatureAddCondition(cid, permanentinvisible)
    doCreatureSetHideHealth(cid, true)
    doSetCreatureOutfit(cid, {lookType = 2}, -1)
    end
     
    function hasTile(pos)    --Verifica se tem TILE na pos
    pos.stackpos = 0
    if getTileThingByPos(pos).itemid >= 1 then
       return true
    end
    return false
    end
     
    function getThingFromPosWithProtect(pos)  --Pega uma creatura numa posiçao com proteçoes
    if hasTile(pos) then
       if isCreature(getRecorderCreature(pos)) then
          return getRecorderCreature(pos)
       else
          pos.stackpos = 253
          pid = getThingfromPos(pos).uid
       end
    else
       pid = getThingfromPos({x=1,y=1,z=10,stackpos=253}).uid
    end
    return pid
    end
     
    function getTileThingWithProtect(pos)    --Pega um TILE com proteçoes
    if hasTile(pos) then
    pos.stackpos = 0
       pid = getTileThingByPos(pos)
    else
       pid = getTileThingByPos({x=1,y=1,z=10,stackpos=0})
    end
    return pid
    end
     
    function canAttackOther(cid, pid)         --Function q verifica se um poke/player pode atacar outro poke/player
     
    if not isCreature(cid) or not isCreature(pid) then return "Cant" end
     
    local master1 = isSummon(cid) and getCreatureMaster(cid) or cid
    local master2 = isSummon(pid) and getCreatureMaster(pid) or pid
       
       ----             
       if getPlayerStorageValue(master1, 6598754) >= 5 and getPlayerStorageValue(master2, 6598754) >= 5 then
          if getPlayerStorageValue(master1, 6598754) ~= getPlayerStorageValue(master2, 6598754) then
             if isDuelingAgainst(master1, master2) then   --alterado v1.8
                if isSummon(cid) and isPlayer(pid) then
                   return "Cant"
                else
                   return "Can"
                end
             end
          end
       end
       ----              pvp system
       if getPlayerStorageValue(master1, 6598754) >= 1 and getPlayerStorageValue(master2, 6598755) >= 1 then
          return "Can" 
       end
       if getPlayerStorageValue(master1, 6598755) >= 1 and getPlayerStorageValue(master2, 6598754) >= 1 then  ---estar em times diferentes
          return "Can"
       end
       ----
       if ehMonstro(cid) or ehMonstro(pid) then
          return "Can"
       end
     
    return "Cant"
    end
       
          
    function stopNow(cid, time)    --function q faz o poke/player ficar imovel por um tempo
    if not isCreature(cid) or not tonumber(time) or isSleeping(cid) then return true end
     
    local function podeMover(cid)                         --alterado v1.9 \/
    if isCreature(cid) then mayNotMove(cid, false) end
    end
     
    mayNotMove(cid, true)
    addEvent(podeMover, time, cid)
    end
     
    function doReduceStatus(cid, off, def, agi)   --reduz os status
    if not isCreature(cid) then return true end
    local A = getOffense(cid)
    local B = getDefense(cid)
    local C = getSpeed(cid)
     
    if off > 0 then
       setPlayerStorageValue(cid, 1001, A - off)
    end
    if def > 0 then
       setPlayerStorageValue(cid, 1002, B - def)
    end
    if agi > 0 then
       setPlayerStorageValue(cid, 1003, C - agi)
       if getCreatureSpeed(cid) ~= 0 then
          doRegainSpeed(cid)
       end                                              --alterado v1.5  functions arrumadas...
    end
    end
     
    function doRaiseStatus(cid, off, def, agi, time)  
    if not isCreature(cid) then return true end
    local A = getOffense(cid)
    local B = getDefense(cid)
    local C = getSpeed(cid)
     
    if off > 0 then
       setPlayerStorageValue(cid, 1001, A * off)
    end
    if def > 0 then
       setPlayerStorageValue(cid, 1002, B * def)
    end
    if agi > 0 then
       setPlayerStorageValue(cid, 1003, C + agi)
       if getCreatureSpeed(cid) ~= 0 then
          doRegainSpeed(cid)
       end
    end
     
    local D = getOffense(cid)
    local E = getDefense(cid)
    local F = getSpeed(cid)
    ---------------------------
    local G = D - A
    local H = E - B
    local I = F - C
     
    addEvent(doReduceStatus, time*1000, cid, G, H, I)
    end
     
     
    function BackTeam(cid)          
      if isCreature(cid) then
         local summon = getCreatureSummons(cid)   --alterado v1.6
         for i = 2, #summon do
             doSendMagicEffect(getThingPos(summon), 211)
             doRemoveCreature(summon)
         end
         setPlayerStorageValue(cid, 637501, -1)
      end  
    end
        
    function choose(...) -- by mock
        local arg = {...}
        return arg[math.random(1,#arg)]
    end
     
    function AddPremium(cid, days)
    local function removerPlayer(cid)
    if isCreature(cid) then
       doRemoveCreature(cid)
    end
    end
     
    db.executeQuery("UPDATE `accounts` SET `premdays` = '"..days.."' WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";")
    doPlayerSendTextMessage(cid,25,"Você será kickado em 5 segundos.")    
    addEvent(removerPlayer, 5*1000, cid)     
    return TRUE
    end
     
    function isShiny(cid) 
    return isCreature(cid) and string.find(getCreatureName(cid), "Shiny")  --alterado v1.9
    end
     
    function isShinyName(name)        
    return tostring(name) and string.find(doCorrectString(name), "Shiny") --alterado v1.9
    end
     
    function doConvertTypeToStone(type, string)
    local t = {
    ["fly"] = {heart, "heart"},
    ["flying"] = {heart, "heart"},
    ["normal"] = {heart, "heart"},
    ["fire"] = {fire, "fire"},
    ["grass"] = {leaf, "leaf"},
    ["leaf"] = {leaf, "leaf"},
    ["water"] = {water, "water"},
    ["poison"] = {venom, "venom"},
    ["venom"] = {venom, "venom"},
    ["electric"] = {thunder, "thunder"},
    ["thunder"] = {thunder, "thunder"},
    ["rock"] = {rock, "rock"},
    ["fight"] = {punch, "punch"},
    ["fighting"] = {punch, "punch"},
    ["bug"] = {coccon, "coccon"},
    ["dragon"] = {crystal, "crystal"},
    ["dark"] = {dark, "dark"},
    ["ghost"] = {dark, "dark"},
    ["ground"] = {earth, "earth"},
    ["earth"] = {earth, "earth"},
    ["psychic"] = {enigma, "enigma"},
    ["steel"] = {metal, "metal"},
    ["metal"] = {metal, "metal"},
    ["ice"] = {ice, "ice"},
    ["boost"] = {boostStone, "boost"},  --alterado v1.9
    }
     
    if string then
    return t[type][2]
    else
    return t[type][1]
    end
    end
     
    function doConvertStoneIdToString(stoneID)
    local t = {
    [11453] = "Heart Stone",
    [11441] = "Leaf Stone",
    [11442] = "Water Stone",
    [11443] = "Venom Stone",
    [11444] = "Thunder Stone",
    [11445] = "Rock Stone",
    [11446] = "Punch Stone", 
    [11447] = "Fire Stone",               --alterado v1.6
    [11448] = "Cocoon Stone", 
    [11449] = "Crystal Stone",
    [11450] = "Darkess Stone", 
    [11451] = "Earth Stone",
    [11452] = "Enigma Stone",
    [11454] = "Ice Stone", 
    [12244] = "King's Rock",
    [12232] = "Metal Stone",
    [12242] = "Sun Stone",
    [12401] = "Shiny Fire Stone",
    [12402] = "Shiny Water Stone",
    [12403] = "Shiny Leaf Stone",
    [12404] = "Shiny Heart Stone",
    [12405] = "Shiny Enigma Stone",
    [12406] = "Shiny Rock Stone",
    [12407] = "Shiny Venom Stone", 
    [12408] = "Shiny Ice Stone",
    [12409] = "Shiny Thunder Stone",
    [12410] = "Shiny Crystal Stone",
    [12411] = "Shiny Cocoon Stone",
    [12412] = "Shiny Darkness Stone",
    [12413] = "Shiny Punch Stone",
    [12414] = "Shiny Earth Stone",
    [boostStone] = "Boost Stone",  --alterado v1.9
    }
    if t[stoneID] then
    return t[stoneID]
    else
    return ""
    end
    end
     
    function isStone(id)
    if id >= leaf and id <= ice then
    return true
    end
    if id == boostStone then  --alterado v1.9
    return true
    end
    if id == 12232 or id == 12242 or id == 12244 or id == 12245 then
    return true                                 
    end
    if (id >= sfire and id <= searth) or id == 12417 or id == 12419 then
    return true 
    end
    return false
    end
     
    function isWater(id)
    return tonumber(id) and id >= 4820 and id <= 4825 --alterado v1.9
    end
     
    function getTopCorpse(position)
    local pos = position
    for n = 1, 255 do
        pos.stackpos = n
        local item = getTileThingByPos(pos)
        if item.itemid >= 2 and (string.find(getItemNameById(item.itemid), "fainted ") or string.find(getItemNameById(item.itemid), "defeated ")) then
           return getTileThingByPos(pos)
        end
    end
    return null
    end
     
    bpslot = CONST_SLOT_BACKPACK
     
    function hasPokemon(cid)
    if not isCreature(cid) then return false end
    if getCreatureMana(cid) <= 0 then return false end
    if #getCreatureSummons(cid) >= 1 then return true end
    local item = getPlayerSlotItem(cid, CONST_SLOT_FEET)
    local bp = getPlayerSlotItem(cid, bpslot)
    for a, b in pairs (pokeballs) do
            if item.itemid == b.on or item.itemid == b.use then
            return true                              --alterado v1.4
            end
            if #getItemsInContainerById(bp.uid, b.on) >= 1 then
            return true
            end
    end
    return false
    end
     
    function isNpcSummon(cid)
    return isNpc(getCreatureMaster(cid))
    end
     
    function getPokemonHappinessDescription(cid)
    if not isCreature(cid) then return true end
    local str = {}
    if getPokemonGender(cid) == SEX_MALE then
    table.insert(str, "He")
    elseif getPokemonGender(cid) == SEX_FEMALE then
    table.insert(str, "She")
    else
    table.insert(str, "It")
    end
    local h = getPlayerStorageValue(cid, 1008)
    if h >= tonumber(getConfigValue('PokemonStageVeryHappy')) then
    table.insert(str, " is very happy with you!")
    elseif h >= tonumber(getConfigValue('PokemonStageHappy')) then
    table.insert(str, " is happy.")
    elseif h >= tonumber(getConfigValue('PokemonStageOK')) then
    table.insert(str, " is unhappy.")
    elseif h >= tonumber(getConfigValue('PokemonStageSad')) then
    table.insert(str, " is sad.")
    elseif h >= tonumber(getConfigValue('PokemonStageMad')) then
    table.insert(str, " is mad.")
    else
    table.insert(str, " is very mad at you!")
    end
    return table.concat(str)
    end
     
    function doSetItemAttribute(item, key, value)
    doItemSetAttribute(item, key, value)
    end
     
    function deTransform(cid, check)
    if not isCreature(cid) then return true end
     
    local m = getCreatureMaster(cid)
    local p = getPlayerSlotItem(m, 8):
     
    if getItemAttribute(p.uid, "transTurn") ~= check then return true end
     
    setPlayerStorageValue(cid, 1010, getCreatureName(cid) == "Ditto" and "Ditto" or "Shiny Ditto")        --edited
    doRemoveCondition(cid, CONDITION_OUTFIT)
    doSendMagicEffect(getThingPos(cid), 184)
    doCreatureSay(cid, "DITTO!", TALKTYPE_MONSTER)
    doItemSetAttribute(p.uid, "transBegin", 0)
    doItemSetAttribute(p.uid, "transLeft", 0)
    doItemEraseAttribute(p.uid, "transName")
    adjustStatus(cid, p.uid, true, true, true)
    end
     
    function isTransformed(cid)
    return isCreature(cid) and not isInArray({-1, "Ditto", "Shiny Ditto"}, getPlayerStorageValue(cid, 1010))  --alterado v1.9
    end
     
    function doSendFlareEffect(pos)
    local random = {28, 29, 79}
    doSendMagicEffect(pos, random[math.random(1, 3)])
    end
     
    function isDay()
    local a = getWorldTime()
    if a >= 360 and a < 1080 then
    return true
    end
    return false
    end
     
    function doPlayerSendTextWindow(cid, p1, p2)
    if not isCreature(cid) then return true end
    local item = 460
    local text = ""
    if type(p1) == "string" then
    doShowTextDialog(cid, item, p1)
    else
    doShowTextDialog(cid, p1, p2)
    end
    end
     
    function getClockString(tw)
    local a = getWorldTime()
    local b = a / 60
    local hours = math.floor(b)
    local minut = a - (60 * hours)
     
    if not tw then
    if hours < 10 then
    hours = "0"..hours..""
    end
    if minut < 10 then
    minut = "0"..minut..""
    end
    return hours..":"..minut
    else
    local sm = "a.m"
    if hours >= 12 then
    hours = hours - 12
    sm = "p.m"
    end
    if hours < 10 then
    hours = "0"..hours..""
    end
    if minut < 10 then
    minut = "0"..minut..""
    end
    return hours..":"..minut.." "..sm
    end
    end
     
    function doCorrectPokemonName(poke)
    return doCorrectString(poke)
    end
     
    function doCorrectString(str)
    local name = str:explode(" ")  --alterado v1.9
    local final = {}
    for _, s in ipairs(name) do
        table.insert(final, s:sub(1, 1):upper()..s:sub(2, #s):lower())
    end
    return table.concat(final, (name[2] and " " or ""))
    end   
     
    function getHappinessRate(cid)
    if not isCreature(cid) then return 1 end
    local a = getPlayerStorageValue(cid, 1008)
    if a == -1 then return 1 end
    if a >= getConfigValue('PokemonStageVeryHappy') then
    return happinessRate[5].rate
    elseif a >= getConfigValue('PokemonStageHappy') then
    return happinessRate[4].rate
    elseif a >= getConfigValue('PokemonStageOK') then
    return happinessRate[3].rate
    elseif a >= getConfigValue('PokemonStageSad') then
    return happinessRate[2].rate
    else
    return happinessRate[1].rate
    end
    return 1
    end
     
    function doBodyPush(cid, target, go, pos)
    if not isCreature(cid) or not isCreature(target) then
    doRegainSpeed(cid)
    doRegainSpeed(target)
    return true
    end
    if go then
    local a = getThingPos(cid)
    doChangeSpeed(cid, -getCreatureSpeed(cid))
    if not isPlayer(target) then
    doChangeSpeed(target, -getCreatureSpeed(target))
    end
    doChangeSpeed(cid, 800)
    doTeleportThing(cid, getThingPos(target))
    doChangeSpeed(cid, -800)
    addEvent(doBodyPush, 350, cid, target, false, a)
    else
    doChangeSpeed(cid, 800)
    doTeleportThing(cid, pos)
    doRegainSpeed(cid)
    doRegainSpeed(target)
    end
    end
     
    function doReturnPokemon(cid, pokemon, pokeball, effect, hideeffects, blockevo)
     
        -----------------
    local edit = true
     
    if not pokeball then
    pokeball = getPlayerSlotItem(cid, 8):
    end
     
    if blockevo then
    edit = false
    doPlayerSendCancel(cid, "Your pokemon couldn't evolve due to server mistakes, please wait until we fix the problem.")
    end
     
    local happy = getPlayerStorageValue(pokemon, 1008)
    local hunger = getPlayerStorageValue(pokemon, 1009)
    local pokelife = (getCreatureHealth(pokemon) / getCreatureMaxHealth(pokemon))
     
    if edit then
    doItemSetAttribute(pokeball.uid, "happy", happy)
    doItemSetAttribute(pokeball.uid, "hunger", hunger)
    doItemSetAttribute(pokeball.uid, "hp", pokelife)
    end
     
    if getCreatureName(pokemon) == "Ditto" then
    if isTransformed(pokemon) then
    local left = getItemAttribute(pokeball.uid, "transLeft") - (os.clock() - getItemAttribute(pokeball.uid, "transBegin"))
    doItemSetAttribute(pokeball.uid, "transLeft", left)
    end
    end
     
    if hideeffects then
    doRemoveCreature(pokemon)
    return true
    end
     
    local pokename = getPokeName(pokemon)
     
    local mbk = gobackmsgs[math.random(1, #gobackmsgs)].back:gsub("doka", pokename)
     
    if getCreatureCondition(cid, CONDITION_INFIGHT) then
    if isCreature(getCreatureTarget(cid)) then
    doItemSetAttribute(pokeball.uid, "happy", happy - 5)
    else
    doItemSetAttribute(pokeball.uid, "happy", happy - 2)
    end
    end
     
    doTransformItem(pokeball.uid, pokeball.itemid-1)
    doCreatureSay(cid, mbk, TALKTYPE_SAY)
     
    doSendMagicEffect(getCreaturePosition(pokemon), effect)
     
    doRemoveCreature(pokemon)
                    doCloseInfoPoke(cid)
     
        unLock(pokeball.uid) --alterado v1.8
        
        if useOTClient then
           doPlayerSendCancel(cid, '12//,hide')  --alterado v1.7
        end
        
    if useKpdoDlls then
    doUpdateMoves(cid)
    end
     
    end
     
    local EFFECTS = {
    --[OutfitID] = {Effect}
    ["Magmar"] = 35,                --alterado v1.5
    ["Jynx"] = 17,   
    ["Shiny Jynx"] = 17,    
    ["Piloswine"] = 205,  --alterado v1.8
        ["Swinub"] = 205, 
    }
     
    function doGoPokemon(cid, item)
    sendAllPokemonsBarPoke(cid)
     
    if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then
    return true
    end
     
     
    ---------------------------------------------------------------
    local ballName = getItemAttribute(item.uid, "poke")
     
       btype = getPokeballType(item.itemid)                   
     
    local effect = pokeballs[btype].effect
    if not effect then
    effect = 21
    end
    -----------------------------------------------------------------
    if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then
    doPlayerSendCancel(cid, "You must put your pokeball in the correct place!")
    return TRUE
    end
     
    local thishp = getItemAttribute(item.uid, "hp")
     
    if thishp <= 0 then
    if isInArray(pokeballs[btype].all, item.itemid) then
    doTransformItem(item.uid, pokeballs[btype].off)
    doItemSetAttribute(item.uid, "hp", 0)
    doPlayerSendCancel(cid, "This pokemon is fainted.")
       return true
    end
    end
     
    local pokemon = getItemAttribute(item.uid, "poke")
     
    if not pokes[pokemon] then
    return true
    end
     
    ----------------------- Sistema de nao poder carregar mais que 3 pokes lvl baixo e + q 1 poke de lvl medio/alto ---------------------------------
    if not isInArray({5, 6}, getPlayerGroupId(cid)) then
       local balls = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)      --alterado v1.9 \/
       local low = {}
       local lowPokes = {"Rattata", "Caterpie", "Weedle", "Oddish", "Pidgey", "Paras", "Poliwag", "Bellsprout", "Magikarp", "Hoppip", "Sunkern"}
       if #balls >= 1 then
          for _, uid in ipairs(balls) do
              local nome = getItemAttribute(uid, "poke")
              if not isInArray(lowPokes, pokemon) and nome == pokemon then
                 return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry two pokemons equals!")
              else
                 if nome == pokemon then
                    table.insert(low, nome)
                 end
              end
          end
       end
    if #low >= 3 then
       return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry more than three pokemons equals of low level!")
    end   
    end
    ---------------------------------------------------------------------------------------------------------------------------------------------------
     
    local x = pokes[pokemon]
    local boosts = getItemAttribute(item.uid, "boost") or 0
     
    if getPlayerLevel(cid) < (x.level + boosts) then   --alterado v1.8 \/
    doPlayerSendCancel(cid, "You need level "..(x.level + boosts).." to use this pokemon.")
    return true
    end
     
    --------------------------------------------------------------------------------------
    shinysClan = {
    ["Shiny Fearow"] = {4, "Wingeon"},
    ["Shiny Flareon"] = {1, "Volcanic"},
    ["Shiny Vaporeon"] = {2, "Seavel"}, 
    ["Shiny Jolteon"] = {9, "Raibolt"},
    ["Shiny Hypno"] = {7, "Psycraft"},
    ["Shiny Golem"] = {3, "Orebound"},         
    ["Shiny Vileplume"] = {8, "Naturia"},
    ["Shiny Nidoking"] = {5, "Malefic"},
    ["Shiny Hitmontop"] = {6, "Gardestrike"},   
    }
     
    if shinysClan[pokemon] and (getPlayerGroupId(cid) < 4 or getPlayerGroupId(cid) > 6) then --alterado v1.9
      if getPlayerStorageValue(cid, 86228) ~= shinysClan[pokemon][1] then
         doPlayerSendCancel(cid, "You need be a member of the clan "..shinysClan[pokemon][2].." to use this pokemon!")
         return true   
           elseif getPlayerStorageValue(cid, 862281) ~= 5 then
              doPlayerSendCancel(cid, "You need be atleast rank 5 to use this pokemon!")
         return true
           end
        end
        --------------------------------------------------------------------------------------
     
    doSummonMonster(cid, pokemon)
     
    local pk = getCreatureSummons(cid)[1]
    if not isCreature(pk) then return true end
     
    ------------------------passiva hitmonchan------------------------------
    if isSummon(pk) then                                                  --alterado v1.8 \/
           if pokemon == "Shiny Hitmonchan" or pokemon == "Hitmonchan" then
              if not getItemAttribute(item.uid, "hands") then
                 doSetItemAttribute(item.uid, "hands", 0)
              end
              local hands = getItemAttribute(item.uid, "hands")
              doSetCreatureOutfit(pk, {lookType = hitmonchans[pokemon][hands].out}, -1)
           end
        end
    -------------------------------------------------------------------------
        ---------movement magmar, jynx-------------
        if EFFECTS[getCreatureName(pk)] then     
           markPosEff(pk, getThingPos(pk))
           sendMovementEffect(pk, EFFECTS[getCreatureName(pk)], getThingPos(pk))   
        end
        --------------------------------------------------------------------------  
     
    if getCreatureName(pk) == "Ditto" then
     
    local left = getItemAttribute(item.uid, "transLeft")
    local name = getItemAttribute(item.uid, "transName")
     
    if left and left > 0 then
    setPlayerStorageValue(pk, 1010, name)
    doSetCreatureOutfit(pk, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)
    addEvent(deTransform, left * 1000, pk, getItemAttribute(item.uid, "transTurn"))
    doItemSetAttribute(item.uid, "transBegin", os.clock())
    else
    setPlayerStorageValue(pk, 1010, "Ditto")
    end
    end
     
    if isGhostPokemon(pk) then doTeleportThing(pk, getPosByDir(getThingPos(cid), math.random(0, 7)), false) end
     
    doCreatureSetLookDir(pk, 2)
     
                 if not getItemAttribute(item.uid, "level") then
                 doSetItemAttribute(item.uid, "level", 1)
              end
     
    adjustStatus(pk, item.uid, true, true, true)
    doAddPokemonInOwnList(cid, pokemon)
     
    doTransformItem(item.uid, item.itemid+1)
     
    local pokename = getPokeName(pk) --alterado v1.7
     
    local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", pokename)
    doCreatureSay(cid, mgo, TALKTYPE_SAY)
                    sendAudio(cid, "006")
                    sendPokeInfo(cid)
    doSendMagicEffect(getCreaturePosition(pk), effect)
     
        unLock(item.uid) --alterado v1.8
     
    if useKpdoDlls then
    doUpdateMoves(cid)
    end
    end
     
    function doRegainSpeed(cid)              --alterado v1.9 \/
    if not isCreature(cid) then return true end
     
       local speed = PlayerSpeed
       if isMonster(cid) then
          speed = getSpeed(cid)
       elseif isPlayer(cid) and isInArray({4, 5, 6}, getPlayerGroupId(cid)) then
          speed = 200*getPlayerGroupId(cid) 
       end
       
       doChangeSpeed(cid, -getCreatureSpeed(cid))
       if getCreatureCondition(cid, CONDITION_PARALYZE) == true then
          doRemoveCondition(cid, CONDITION_PARALYZE)
          addEvent(doAddCondition, 10, cid, paralizeArea2)             
       end
        
    doChangeSpeed(cid, speed)
    return speed
    end
     
    function isPosEqualPos(pos1, pos2, checkstackpos)
    if pos1.x ~= pos2.x or pos1.y ~= pos2.y and pos1.z ~= pos2.z then
    return false
    end
    if checkstackpos and pos1.stackpos and pos2.stackpos and pos1.stackpos ~= pos2.stackpos then
    return false
    end
    return true
    end
     
    function getRandomGenderByName(name)
    local rate = newpokedex[name]
    if not rate then return 0 end
    rate = rate.gender
    if rate == 0 then
    gender = 3
    elseif rate == 1000 then
    gender = 4
    elseif rate == -1 then
    gender = 0
    elseif math.random(1, 1000) <= rate then
    gender = 4
    else
    gender = 3
    end
    return gender
    end
     
    function getRecorderPlayer(pos, cid)
    local ret = 0
    if cid and isPosEqual(getThingPos(cid), pos) then   --alterado v1.9
      return cid
    end
    local s = {}
    s.x = pos.x
    s.y = pos.y
    s.z = pos.z
    for a = 0, 255 do
    s.stackpos = a
    local b = getTileThingByPos(s).uid
    if b > 1 and isPlayer(b) and getCreatureOutfit(b).lookType ~= 814 then
    ret = b
    end
    end
    return ret
    end
     
    function getRecorderCreature(pos, cid)
    local ret = 0
    if cid and isPosEqual(getThingPos(cid), pos) then   --alterado v1.9
      return cid
    end
    local s = {}
    s.x = pos.x
    s.y = pos.y
    s.z = pos.z
    for a = 0, 255 do
    s.stackpos = a
    local b = getTileThingByPos(s).uid
    if b > 1 and isCreature(b) and getCreatureOutfit(b).lookType ~= 814 then
    ret = b
    end
    end
    return ret
    end
     
    function doCreatureSetOutfit(cid, outfit, time)
    doSetCreatureOutfit(cid, outfit, time)
    end
     
    function doMagicalFlower(cid, away)
    if not isCreature(cid) then return true end
    for x = -3, 3 do
    for y = -3, 3 do
    local a = getThingPos(cid)
    a.x = a.x + x
    a.y = a.y + y
    if away then
    doSendDistanceShoot(a, getThingPos(cid), 21)
    else
    doSendDistanceShoot(getThingPos(cid), a, 21)
    end
    end
    end
    end 
     
    function isItemPokeball(item)         --alterado v1.9 \/
    if not item then return false end
    for a, b in pairs (pokeballs) do
    if isInArray(b.all, item) then return true end
    end
    return false
    end
     
    function isPokeball(item)
    return isItemPokeball(item)
    end                                    --/\
     
    function getPokeballType(id)
    for a, b in pairs (pokeballs) do
    if isInArray(b.all, id) then
    return a
    end
    end
    return "none"
    end
     
    randomdiagonaldir = {
    [NORTHEAST] = {NORTH, EAST},
    [sOUTHEAST] = {SOUTH, EAST},
    [NORTHWEST] = {NORTH, WEST},
    [sOUTHWEST] = {SOUTH, WEST}}
     
    function doFaceOpposite(cid)
    local a = getCreatureLookDir(cid)
    local d = {
    [NORTH] = SOUTH,
    [sOUTH] = NORTH,
    [EAST] = WEST,
    [WEST] = EAST,
    [NORTHEAST] = SOUTHWEST,
    [NORTHWEST] = SOUTHEAST,
    [sOUTHEAST] = NORTHWEST,
    [sOUTHWEST] = NORTHEAST}
    doCreatureSetLookDir(cid, d[a])
    end
     
    function doFaceRandom(cid)
    local a = getCreatureLookDir(cid)
    local d = {
    [NORTH] = {SOUTH, WEST, EAST},
    [sOUTH] = {NORTH, WEST, EAST},
    [WEST] = {SOUTH, NORTH, EAST},
    [EAST] = {SOUTH, WEST, NORTH}}
    doChangeSpeed(cid, 1)
    doCreatureSetLookDir(cid, d[a][math.random(1, 3)])
    doChangeSpeed(cid, -1)
    end
     
    function getFaceOpposite(dir)
    local d = {
    [NORTH] = SOUTH,
    [sOUTH] = NORTH,
    [EAST] = WEST,
    [WEST] = EAST,
    [NORTHEAST] = SOUTHWEST,
    [NORTHWEST] = SOUTHEAST,
    [sOUTHEAST] = NORTHWEST,
    [sOUTHWEST] = NORTHEAST}
    return d[dir]
    end
     
    function getResistance(cid, combat)
    if isPlayer(cid) then return false end
    local poketype1 = pokes[getCreatureName(cid)].type
    local poketype2 = pokes[getCreatureName(cid)].type2
    local multiplier = 1
    if effectiveness[combat].super and isInArray(effectiveness[combat].super, poketype1) then
    multiplier = multiplier * 2
    end
    if poketype2 and effectiveness[combat].super and isInArray(effectiveness[combat].super, poketype2) then
    multiplier = multiplier * 2
    end
    if effectiveness[combat].weak and isInArray(effectiveness[combat].weak, poketype1) then
    multiplier = multiplier * 0.5
    end
    if poketype2 and effectiveness[combat].weak and isInArray(effectiveness[combat].weak, poketype2) then
    multiplier = multiplier * 0.5
    end
    if effectiveness[combat].non and isInArray(effectiveness[combat].non, poketype1) then
    multiplier = multiplier * 0
    end
    if poketype2 and effectiveness[combat].non and isInArray(effectiveness[combat].non, poketype2) then
    multiplier = multiplier * 0
    end
     
    if multiplier == 0.25 then
    multiplier = 0.5
    elseif multiplier == 4 then
    multiplier = 2
    end
     
    return multiplier
    end
     
    function getCreatureDirectionToTarget(cid, target, ranged)
    if not isCreature(cid) then return true end
    if not isCreature(target) then return getCreatureLookDir(cid) end
    local dirs = {
    [NORTHEAST] = {NORTH, EAST},
    [sOUTHEAST] = {SOUTH, EAST},
    [NORTHWEST] = {NORTH, WEST},
    [sOUTHWEST] = {SOUTH, WEST}}
    local x = getDirectionTo(getThingPos(cid), getThingPos(target), false)
    if x <= 3 then return x
    else
    local xdistance = math.abs(getThingPos(cid).x - getThingPos(target).x)
    local ydistance = math.abs(getThingPos(cid).y - getThingPos(target).y)
    if xdistance > ydistance then
    return dirs[x][2]
    elseif ydistance > xdistance then
    return dirs[x][1]
    elseif isInArray(dirs[x], getCreatureLookDir(cid)) then
    return getCreatureLookDir(cid)
    else
    return dirs[x][math.random(1, 2)]
    end
    end
    end
     
    function getSomeoneDescription(cid)
    if isPlayer(cid) then return getPlayerNameDescription(cid) end
    return getMonsterInfo(getCreatureName(cid)).description
    end
     
     
    function isGhostPokemon(cid)
    if not isCreature(cid) then return false end
    local ghosts = {"Gastly", "Haunter", "Gengar", "Shiny Gengar", "Misdreavus", "Shiny Abra"}
    return isInArray(ghosts, getCreatureName(cid))
    end
     
    function updateGhostWalk(cid)
    if not isCreature(cid) then return false end
    local pos = getThingPos(cid)
    pos.x = pos.x + 1
    pos.y = pos.y + 1
    local ret = getThingPos(cid)
    doTeleportThing(cid, pos, false)
    doTeleportThing(cid, ret, false)
    return true
    end
     
    function doRemoveElementFromTable(t, e)
    local ret = {}
    for a = 1, #t do
    if t[a] ~= e then
    table.insert(ret, t[a])
    end
    end
    return ret
    end
     
    function doFaceCreature(sid, pos)
    if not isCreature(sid) then return true end
    if getThingPos(sid).x == pos.x and getThingPos(sid).y == pos.y then return true end
    local ret = 0
     
    local ld = getCreatureLookDir(sid)
    local dir = getDirectionTo(getThingPos(sid), pos)
    local al = {
    [NORTHEAST] = {NORTH, EAST},
    [NORTHWEST] = {NORTH, WEST},
    [sOUTHEAST] = {SOUTH, EAST},
    [sOUTHWEST] = {SOUTH, WEST}}
     
    if dir >= 4 and isInArray(al[dir], ld) then return true end
     
    doChangeSpeed(sid, 1)
    if dir == 4 then
    ret = math.random(2, 3)
    elseif dir == 5 then
    ret = math.random(1, 2)
    elseif dir == 6 then
    local dirs = {0, 3}
    ret = dirs[math.random(1, 2)]
    elseif dir == 7 then
    ret = math.random(0, 1)
    else
    ret = getDirectionTo(getThingPos(sid), pos)
    end
    doCreatureSetLookDir(sid, ret)
    doChangeSpeed(sid, -1)
    return true
    end
     
    function doCreatureAddCondition(cid, condition)
    if not isCreature(cid) then return true end
    doAddCondition(cid, condition)
    end
     
    function doCreatureRemoveCondition(cid, condition)
    if not isCreature(cid) then return true end
    doRemoveCondition(cid, condition)
    end
     
    function setCD(item, tipo, tempo)
     
    if not tempo or not tonumber(tempo) then
    doItemEraseAttribute(item, tipo)
    return true
    end
     
    doItemSetAttribute(item, tipo, "cd:"..(tempo + os.time()).."")
    return tempo + os.time()
    end
     
    function getCD(item, tipo, limite)
     
    if not getItemAttribute(item, tipo) then
    return 0
    end
     
    local string = getItemAttribute(item, tipo):gsub("cd:", "")
    local number = tonumber(string) - os.time()
     
    if number <= 0 then
    return 0
    end
     
    if limite and limite < number then
    return 0
    end
     
    return number
    end
     
    function doSendMoveEffect(cid, target, effect)
    if not isCreature(cid) or not isCreature(target) then return true end
    doSendDistanceShoot(getThingPos(cid), getThingPos(target), effect)
    return true
    end
     
    function doSetItemActionId(uid, actionid)
    doItemSetAttribute(uid, "aid", actionid)
    return true
    end
     
    function threeNumbers(number)
    if number <= 9 then
    return "00"..number..""
    elseif number <= 99 then
    return "0"..number..""
    end
    return ""..number..""
    end
     
    function isBr(cid)
    if getPlayerStorageValue(cid, 105505) ~= -1 then
    return true
    end
    return false
    end
     
    function isBeingUsed(ball)            
    if not ball then return false end
    for a, b in pairs (pokeballs) do           --alterado v1.9
        if b.use == ball then return true end
    end
    return false
    end
     
    function doRemoveTile(pos)-- Script by mock
    pos.stackpos = 0
    local sqm = getTileThingByPos(pos)
    doRemoveItem(sqm.uid,1)
    end
     
    function doCreateTile(id,pos) -- By mock
    doAreaCombatHealth(0,0,pos,0,0,0,CONST_ME_NONE)
    doCreateItem(id,1,pos)
    end
     
    function hasSqm(pos)
    local f = getTileThingByPos(pos)
    if f.itemid ~= 0 and f.itemid ~= 1 then
    return true
    end
    return false
    end
     
    function getPosDirs(p, dir) -- By MatheusMkalo
    return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z}
    end
     
    function canWalkOnPos(pos, creature, pz, water, sqm, proj)
    if not pos then return false end
    if not pos.x then return false end
    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid <= 1 and sqm then return false end
    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 919 then return false end
    if isInArray({4820, 4821, 4822, 4823, 4824, 4825}, getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false end
    if getTopCreature(pos).uid > 0 and creature then return false end
    if getTileInfo(pos).protection and pz then return false end
        local n = not proj and 3 or 2                                    --alterado v1.6
        for i = 0, 255 do
            pos.stackpos = i                           
            local tile = getTileThingByPos(pos)        
            if tile.itemid ~= 0 and i ~= 253 and not isCreature(tile.uid) then     --edited
                if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
                    return false
                end
            end
        end   
    return true
    end
     
    function canWalkOnPos2(pos, creature, pz, water, sqm, proj)     --alterado v1.6
    if not pos then return false end
    if not pos.x then return false end
    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid <= 1 and sqm then return false end
    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 919 then return false end
    if isInArray({4820, 4821, 4822, 4823, 4824, 4825}, getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false end
    if getTopCreature(pos).uid > 0 and creature then return false end
    if getTileInfo(pos).protection and pz then return false end
        --[[local n = not proj and 3 or 2
        for i = 0, 255 do
            pos.stackpos = i                           --edited pra retirar um bug.. ;x
            local tile = getTileThingByPos(pos)        
            if tile.itemid ~= 0 and i ~= 253 and not isCreature(tile.uid) then     --edited
                if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
                    return false
                end
            end
        end ]]  
    return true
    end
     
    function getFreeTile(pos, cid)
    if canWalkOnPos(pos, true, false, true, true, false) then
    return pos
    end
    local positions = {}
    for a = 0, 7 do
    if canWalkOnPos(getPosByDir(pos, a), true, false, true, true, false) then
    table.insert(positions, pos)
    end
    end
    if #positions >= 1 then
    if isCreature(cid) then
    local range = 1000
    local ret = getThingPos(cid)
    for b = 1, #positions do
    if getDistanceBetween(getThingPos(cid), positions) < range then
    ret = positions
    range = getDistanceBetween(getThingPos(cid), positions)
    end
    end
    return ret
    else
    return positions[math.random(#positions)]
    end
    end
    return getThingPos(cid)
    end
     
    function isWalkable(pos, creature, proj, pz, water)-- by Nord
        if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
        if isWater(getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false end
        if getTopCreature(pos).uid > 0 and creature then return false end
        if getTileInfo(pos).protection and pz then return false, true end
        local n = not proj and 3 or 2
        for i = 0, 255 do
            pos.stackpos = i
            local tile = getTileThingByPos(pos)
            if tile.itemid ~= 0 and not isCreature(tile.uid) then
                if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
                    return false
                end
            end
        end
        return true
    end
     
     
    function isPlayerSummon(cid, uid)
    return getCreatureMaster(uid) == cid  --alterado v1.9
    end
     
    function isSummon(sid)
    return isCreature(sid) and getCreatureMaster(sid) ~= sid and isPlayer(getCreatureMaster(sid))   --alterado v1.9
    end 
     
    function getItemsInContainerById(container, itemid) -- Function By Kydrai
    local items = {}
    if isContainer(container) and getContainerSize(container) > 0 then
       for slot=0, (getContainerSize(container)-1) do
           local item = getContainerItem(container, slot)
           if isContainer(item.uid) then
              local itemsbag = getItemsInContainerById(item.uid, itemid)
              for i=0, #itemsbag do
                  table.insert(items, itemsbag)
              end
           else
              if itemid == item.itemid then
                 table.insert(items, item.uid)
              end
           end
       end
    end
    return items
    end
     
    function getPokeballsInContainer(container) -- Function By Kydrai
    if not isContainer(container) then return {} end
    local items = {}
    if isContainer(container) and getContainerSize(container) > 0 then
    for slot=0, (getContainerSize(container)-1) do
    local item = getContainerItem(container, slot)
    if isContainer(item.uid) then
    local itemsbag = getPokeballsInContainer(item.uid)
    for i=0, #itemsbag do
    table.insert(items, itemsbag)
    end
    elseif isPokeball(item.itemid) then
    table.insert(items, item.uid)
    end
    end
    end
    return items
    end
     
    function getItensUniquesInContainer(container)    --alterado v1.6
    if not isContainer(container) then return {} end
    local items = {}
    if isContainer(container) and getContainerSize(container) > 0 then
       for slot=0, (getContainerSize(container)-1) do
           local item = getContainerItem(container, slot)
           if isContainer(item.uid) then
              local itemsbag = getItensUniquesInContainer(item.uid)
              for i=0, #itemsbag do
             table.insert(items, itemsbag)
              end
           elseif getItemAttribute(item.uid, "unique") then
              table.insert(items, item)
           end
       end
    end
    return items
    end
     
    function hasSpaceInContainer(container)                --alterado v1.6
    if not isContainer(container) then return false end
    if getContainerSize(container) < getContainerCap(container) then return true end
     
    for slot = 0, (getContainerSize(container)-1) do
        local item = getContainerItem(container, slot)
        if isContainer(item.uid) then
           if hasSpaceInContainer(item.uid) then
              return true
           end
        end
    end
    return false
    end
     
    function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo
    local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)
    local piles = 0
    if #item > 0 then
       for i,x in pairs(item) do
           if getThing(x).type < 100 then
              local it = getThing(x)
              doTransformItem(it.uid, itemid, it.type+quant)
              if it.type+quant > 100 then
                 doPlayerAddItem(cid, itemid, it.type+quant-100)
              end
           else
              piles = piles+1
           end
       end
    else
       return doPlayerAddItem(cid, itemid, quant)
    end
    if piles == #item then
       doPlayerAddItem(cid, itemid, quant)
    end
    end
     
     
    function createBallByStatus(cid, status, id)
    slot = getPlayerSlotItem(cid, 8):
    if slot.uid == 0 then
    item = doPlayerAddItem(cid, id) 
    else
    item = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, id, 1)
    end
    setStatusPokeballByStatusStr(item, status)
    end
     
     
    function getPokemonByName(cid, pokemon)
    local arraypoke = {}
    local container = getPlayerSlotItem(cid, 3).uid
    local pokeballs = getPokeballsInContainer(container) 
    for i =1, #pokeballs do
    name = getItemAttribute(pokeballs, "poke") 
    if pokemon == name then
    table.insert(arraypoke, pokeballs)
    return arraypoke[1]
    end
    end
    return false
    end
     
    function tranfBallInShiny(pokeball)
    doItemSetAttribute(pokeball, "shiny", "shiny")
    return true
    end
     
    function getShinyByPokeball(pokeball)
    local shiny = getItemAttribute(pokeball, "shiny") 
    return shiny == "shiny" and true or false
    end
     
     
    function getShinyNameByPokeball(pokeball)
    local shiny = getItemAttribute(pokeball, "shiny") 
    return shiny and "Shiny "..getItemAttribute(pokeball, "poke").."" or getItemAttribute(pokeball, "poke")
    end
     
     
    function setStatusPokeballByStatusStr(pokeball, status)
    local attr = string.explode(status, ",")
    local x = {"poke", "hp", "offense", "defense", "speed", "vitality", "specialattack", "happy", "gender", "hands", "description", "fakedesc", "boost", "ball", "defeated", "shiny", "level"}
    for i =1, #attr do
    doItemSetAttribute(pokeball, x, attr)
    end
    end
     
     
    function copieAllStatusBalls(pokeball)
    local x = {"poke", "hp", "offense", "defense", "speed", "vitality", "specialattack", "happy", "gender", "hands", "description", "fakedesc", "boost", "ball", "defeated", "shiny", "level"}
    str = ""
    sep = ","
    for i =1, #x do
    local attr = getItemAttribute(pokeball, x) or 0
    local t = attr ..sep
    str = str..t
    end
     
    return str 
    end
     
     
    function atualizaPokes(cid)
    local item = getPlayerSlotItem(cid, 8):
    if item.uid <= 0 then return true end
    if not getItemAttribute(item.uid, "poke") then
    return true
    end    
    for i, x in pairs(fotos) do
    if string.lower(getItemAttribute(item.uid, "poke")) == string.lower(i) then
    doTransformItem(getPlayerSlotItem(cid, 7).uid, fotos)
    if useOTClient then
    doPlayerSendCancel(cid, '12//,show')
    end
    if useKpdoDlls then
    doUpdateMoves(cid)
    end
     
    end
    end
    end
     
     
     
    function doSendPokemon(cid, pokemon)
     
     
    if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 
    or getPlayerStorageValue(cid, 75846) >= 1 or getPlayerStorageValue(cid, 5700) >= 1  then    --alterado v1.9 <<
    return true                                                                                                                        
    end
     
    if exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) > 0 then return true end
     
     
    if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then     --alterado v1.6
    if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 then  
    BackTeam(cid)       
    end
    end   
     
    if #getCreatureSummons(cid) > 0 then
    t = getPlayerSlotItem(cid, 8):
    local btype = getPokeballType(t.itemid)
    local effect = pokeballs[btype].effect or 21 
     
    doReturnPokemon(cid, getCreatureSummons(cid)[1], t,effect)
    end
     
    t = getPlayerSlotItem(cid, 8):
    if t.uid ~= 0 then
    pokeslot = getItemAttribute(t.uid, "poke") 
     
     
    if pokeslot == pokemon then
    t = getPlayerSlotItem(cid, 8):
    doGoPokemon(cid, t)
    atualizaPokes(cid)
    return true
    end
     
    if getPokemonByName(cid, pokemon) then
    local poke = getPokemonByName(cid, pokemon)
    local attr = copieAllStatusBalls(t.uid)
    local id = t.itemid
    doRemoveItem(t.uid)
    local attr2 = copieAllStatusBalls(poke)
    local id2 = getThing(poke).itemid
    doRemoveItem(getPokemonByName(cid, pokemon))
    createBallByStatus(cid, attr2, id2)
    createBallByStatus(cid, attr, id)
    t = getPlayerSlotItem(cid, 8):
    doGoPokemon(cid, t)
    atualizaPokes(cid)
    return true
    end
    end
     
     
    if getPokemonByName(cid, pokemon) then
    local id = getThing(getPokemonByName(cid, pokemon)).itemid
    local attr = copieAllStatusBalls(getPokemonByName(cid, pokemon))
    doRemoveItem(getPokemonByName(cid, pokemon))
    createBallByStatus(cid, attr, id)
    t = getPlayerSlotItem(cid, 8):
    doGoPokemon(cid, t)
    atualizaPokes(cid)
    return true
    end
    return false
    end
     
     
    function sendPokeInfo(cid)
    local activeimg = true
    local poke = getPlayerSlotItem(cid, 8):
    local pokeslot = getItemAttribute(poke.uid, "poke") 
    local pokeboost = getItemAttribute(poke.uid, "boost") or 0
    local pokehappy = getPlayerStorageValue(getCreatureSummons(cid)[1], 1008) or 1 
    doPlayerSendCancel(cid, "NewInfo/"..pokeslot.."/"..pokeboost.."/"..pokehappy.."")
    if activeimg then
    local img = "ShowPoke/"
    doPlayerSendCancel(cid, img..pokeslot)
    end
    end
     
    function sendAudio(cid, audio)
     
    local function getSpectatorsFromArea(fromPosition, toPosition, multifloor)
        local lenght = ((math.max(fromPosition.x, toPosition.x) - math.min(fromPosition.x, toPosition.x)) * 0.5) + 1
        local width = ((math.max(fromPosition.y, toPosition.y) - math.min(fromPosition.y, toPosition.y)) * 0.5) + 1
     
        if multifloor == true then
            local ret = {}
            for f = math.min(fromPosition.z, toPosition.z), math.max(fromPosition.z, toPosition.z) do
                local tmp = getSpectators({x = math.min(fromPosition.x, toPosition.x) + lenght, y = math.min(fromPosition.y, toPosition.y) + width, z = f}, lenght, width, false)
                for k = 1, #tmp do
    table.insert(ret, tmp[k])
    end
            end
            return ret
        end
        return getSpectators({x = math.min(fromPosition.x, toPosition.x) + lenght, y = math.min(fromPosition.y, toPosition.y) + width, z = fromPosition.z}, lenght, width, false)
    end
     
    local pos = getThingPos(cid)
     
     
    local pos = getThingPos(cid)
    local t = 5
    local pos1 = {x = pos.x-t, y = pos.y-t, z = pos.z}
    local pos2 = {x = pos.x+t, y = pos.y+t, z = pos.z}
    for _, pid in pairs(getSpectatorsFromArea(pos1, pos2, true)) do
    if isPlayer(pid) then
    doPlayerSendCancel(pid, "Audio "..audio.."")
    end
    end
    end
     
    function doShowSelectChar(cid)
    doPlayerSendCancel(cid, "ShowChar")
    end
     
    function doCloseSelectChar(cid)
    doPlayerSendCancel(cid, "CloseChar")
    end
     
    function doShowLookPlayer(cid, target, msg)
    doPlayerSendCancel(cid, "ShowLook/"..getPlayerStorageValue(target, 21121).."/"..msg.."")
    end
     
    function doCloseInfoPoke(cid)
    local activeimg = true
    doPlayerSendCancel(cid, "InfoClosed")
    if activeimg then
    local close = "ClosePoke"
    doPlayerSendCancel(cid, close)
    end
    end
     
    function sendAllPokemonsBarPoke(cid)
    local container = getPlayerSlotItem(cid, 3).uid
    local pokes = "Pokebar"
    local t = getPlayerSlotItem(cid, 8):
    if t.uid ~= 0 then
    pokeslot = getItemAttribute(t.uid, "poke") 
    pokes = pokes.."/"..pokeslot..""
    end
    local pokeballs = getPokeballsInContainer(container) 
    for i =1, #pokeballs do
    pokemons = getItemAttribute(pokeballs, "poke") 
    pokes = pokes.."/"..pokemons..""
    end
    doPlayerSendCancel(cid, pokes)
    end
     
     
    function addLevelAllpokes(cid, levelup)
    local container = getPlayerSlotItem(cid, 3).uid
    local pokes = "Parabens seus pokemons subiram de level"
    local msg = ""
    x = false
    local t = getPlayerSlotItem(cid, 8):
    local pokeballs = getPokeballsInContainer(container) 
    for i =1, #pokeballs do
    pokemons = getItemAttribute(pokeballs, "poke") 
    local level = getItemAttribute(pokeballs, "level") and getItemAttribute(pokeballs, "level") or 1
    local up = level+levelup
    doItemSetAttribute(pokeballs, "level", up)
    msg = msg..pokemons.." Subiu para o level "..up.."\n"
    x = true
    end
     
    if t.uid ~= 0 then
    pokeslot = getItemAttribute(t.uid, "poke") 
    local level = getItemAttribute(t.uid, "level") and getItemAttribute(t.uid, "level") or 1
    local up = level+levelup
    doItemSetAttribute(t.uid, "level", up)
    msg = msg..pokeslot.." Subiu para o level "..up.."\n"
    end
    return doPlayerSendTextMessage(cid, 27, msg.."------------------------------------")
    end

     

    5. Vá na pasta data\talkactions\talkactions.xml
    Coloque essa tag:
    <talkaction words="/poke" case-sensitive="no" event="script" value="poke.lua"/>
     
    depois crie um data\talkactions\scripts\poke.lua
     
      Ocultar conteúdo

    function onSay(cid, words, param)
     
    local cfg = {
    exhausted = 5, -- Time you are exhausted in seconds.
    storage = 5858, -- Storage used for "exhaust."
    exp = 2.0 -- this means 2x more experence then default
    }
     
     
    if(getPlayerStorageValue(cid, cfg.storage) > os.time() and getPlayerStorageValue(cid, cfg.storage) < 100+os.time()) then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "You must wait another " .. getPlayerStorageValue(cid, cfg.storage) - os.time() .. ' second' .. ((getPlayerStorageValue(cid, cfg.storage) - os.time()) == 1 and "" or "s") .. " to use new pokemon.")
    else
    if doSendPokemon(cid, param) then
    sendAllPokemonsBarPoke(cid)
    setPlayerStorageValue(cid, cfg.storage, os.time() + cfg.exhausted)
    return true
    end
    doPlayerSendTextMessage(cid, 27, "Sua barra esta desatualizada")
    sendAllPokemonsBarPoke(cid)
    end
    return true
    end

     

    Coloque o game_barpoke dentro da pasta modules.
    Download: game_barpoke.rar

    game_barpoke.rar 1010.5 kB · 1069 downloads

    Salve mano! tudo bem?

    fiz esse tutorial igualzinho como ta, mas na hora de ligar o servidor deu um monte de erro, você sabe como arrumar? ou alguem do Xtibia pode me ajudar? queria muito uma pokebar no meu server! Agradeço dês de já.

    imagem_2022-03-17_224344.png

    imagem_2022-03-17_224525.png

    Captura de Tela (166).png

  2. Olá tudo bem, preciso de ajuda para resolver esses problemas:

    Quando eu uso a shiny stone no poke, fala que não posso usar, ja tentei de todas as formas mas não consigo transformar o poke em shiny mesmo com os script, não sei se tem algo desativado.

     

    Também quero por o level pra aparecer do lado da barra de vida do pokemon e o sexo, por mais que ja tenha o script, não sei se tem algo desativado ou faltando colocar.

    Peço humildemente a ajuda dos universitários, agradeço dês de já! ;)

     

    (NÃO CONSEGUI ACHAR OS SCRIPTS DA SHINY STONE.) :( 

     

    (TFS 0.3.6) Servidor PokeZring

    level system.lua

  • Quem Está Navegando   0 membros estão online

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