Ir para conteúdo
  • Cadastre-se

Programação [Error - MoveEvents Interface] Ajuda


Posts Recomendados

 

Boa dia, tarde, noite, preciso de uma ajuda com meu servidor, as vezes eu coloco o pokémon para fora da pokebola , e no voltar ele cria outro pokémon, segue imagens, e as vezes no lugar do portrait que estava o certo do pokémon , vira outra coisa tipo uma stone

 

Codigo Portrait / Some Functions

 

 

Citar

function onEquip (cid, item, slot)

    if not cid then return true end
    if item.uid <= 0 then return true end

    if not getItemAttribute(item.uid, "poke") then
    return true
    end
    sendAllPokemonsBarPoke(cid)
    doPlayerSendCancel(cid, "#NewInfo," .. getItemAttribute(item.uid, "poke") .. ",1,1")
    for i, x in pairs(fotos) do
        if string.lower(getItemAttribute(item.uid, "poke")) == string.lower(i) then
            doTransformItem(getPlayerSlotItem(cid, 7).uid, fotos)
        return true
        end
    end
end

function onDeEquip(cid, item, slot)

    if not cid then return true end
    if item.uid <= 0 then return true end

    if not getItemAttribute(item.uid, "poke") then
    return true
    end
    sendAllPokemonsBarPoke(cid)
    doPlayerSendCancel(cid, "#NewInfo,none,1,1")
    doTransformItem(getPlayerSlotItem(cid, CONST_SLOT_LEGS).uid, 2395)
end
 

Citar

happinessRate = {
[5] = {rate = 1.5, effect = 183, n = getConfigValue(PokemonStageVeryHappy)},
[4] = {rate = 1.2, effect = 170, n = getConfigValue(PokemonStageHappy)},
[3] = {rate = 1.0, effect = 182, n = getConfigValue(PokemonStageOK)},
[2] = {rate = 0.7, effect = 169, n = getConfigValue(PokemonStageSad)},
[1] = {rate = 0.4, effect = 168, n = getConfigValue(PokemonStageMad)}
}

function doSetPlayerSpeedLevel(cid)
local speed = 220
local spood = getCreatureSpeed(cid)
local level = getPlayerLevel(cid)
doChangeSpeed(cid, -spood)
doChangeSpeed(cid, speed + (level * 3)) 
end

function levelSystem(cid)

local slot = getPlayerSlotItem(cid, <em>?</em>
local attr = getItemAttribute(slot.uid, "level")

if not attr then
    doItemSetAttribute(slot.uid, "level", 1)
    doPlayerSendCancel(cid, '12//,levelsystem')
end
    
if attr == 0 then
    doItemSetAttribute(slot.uid, "level", 1)
    doPlayerSendCancel(cid, '12//,levelsystem')
end
end

function addPokeToPlayer(cid, pokemon, boost, gender, ball, unique, level)             --alterado v1.9 \/ peguem ele todo...
local genders = {
["male"] = 4,
["female"] = 3,
["indefinido"] = 1,
["genderless"] = 1,
[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, "happy", happy)
   doItemSetAttribute(item, "gender", GENDER)
   doItemSetAttribute(item, "exp", 0)
   doItemSetAttribute(item, "level", 1)
   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) <= 1 and not isInArray({3, 2}, 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 "..getPlayerVocationName(thing).." " 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.." (Level ".. getPlayerLevel(thing) .."). "..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 hasProfession(thing) then -- Profession System
    table.insert(str, "\n "..art.." "..getProfessionName(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 getLivePokeballs(cid, container, duel) 
    if not isCreature(cid) then return {} end     
    if not isContainer(container) then return {} end
    local items = {}
    ---
    local ballSlot = getPlayerSlotItem(cid, <em>?</em>
    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 and getCreatureMaster(cid) == cid
end                                                       --alterado v1.9.1 /\

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), <em><em><em><em>?</em></em></em></em>
          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 getTileInfo(getThingPos(cid)).pvp then
return "Can"
end
   
   if ehMonstro(cid) and ehMonstro(pid) then 
      return "Can"
   end
 
return "Cant"
end
   
      
function stopNow(cid, time)   
if not isCreature(cid) or not tonumber(time) or isSleeping(cid) then return true end
                                                        --alterado v1.9.1 \/
local function podeMover(cid)                         
if isPlayer(cid) then 
   mayNotMove(cid, false) 
elseif isCreature(cid) then 
   doRegainSpeed(cid) 
end
end

if isPlayer(cid) then mayNotMove(cid, true) else doChangeSpeed(cid, -getCreatureSpeed(cid)) end
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, <em><em><em><em><em><em>?</em></em></em></em></em></em>

    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)

    --////////////////////////////////////////////////////////////////////////////////////////--
    checkDuel(cid)                                                                      --alterado v1.6 duel system
    --////////////////////////////////////////////////////////////////////////////////////////--
    if getPlayerStorageValue(cid, 52480) >= 1 and getPlayerStorageValue(cid, 52484) ~= 10 then
       return sendMsgToPlayer(cid, 27, "You can't do that while the duel don't begins!")        --alterado v1.8
    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
    -----------------
    local edit = true

    if not pokeball then
        pokeball = getPlayerSlotItem(cid, <em><em><em><em><em><em>?</em></em></em></em></em></em>
    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)
    local mbken = gobackmsgsen[math.random(1, #gobackmsgsen)].back:gsub("doka", pokename)
    local mbkes = gobackmsgses[math.random(1, #gobackmsgses)].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)
    if getPlayerLanguage(cid) == 2 then
    doCreatureSay(cid, mbken, 19)
    doPlayerAddMana(cid, -getCreatureMana(cid))
    sendScreanSound(cid, "ball1.mp3")
    end
    if getPlayerLanguage(cid) == 0 then
    doCreatureSay(cid, mbk, 19)
    sendScreanSound(cid, "ball1.mp3")
    end
    if getPlayerLanguage(cid) == 1 then
    doCreatureSay(cid, mbkes, 19)
    sendScreanSound(cid, "ball1.mp3")
    end

    doSendMagicEffect(getCreaturePosition(pokemon), effect)

    doRemoveCreature(pokemon)

    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)

    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)

    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)

    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
   if speed > 1500 then speed = 1500 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 doRegainSpeedLevel(cid)

local speed = 220
local spood = getCreatureSpeed(cid)
local level = getPlayerLevel(cid)

if isPlayer(cid) then
doChangeSpeed(cid, -spood)
doChangeSpeed(cid, speed + (level * 3))
setPlayerStorageValue(cid, 1242343, (speed + (level * 3)))
end
return true
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 = 1
    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 getPlayerLanguage(cid) -- By Acubens
    local Lang = db.getResult("SELECT `language` FROM `accounts` WHERE `id` = " .. getPlayerAccountId(cid) .. " LIMIT 1")
    if Lang:getID() ~= LUA_ERROR then
        local langid = Lang:getDataInt("language")
        Lang:free()
        return langid
    end
    return LUA_ERROR
end

function doPlayerSetLanguage(cid, new) -- By Drazyn1291
    local acc = getPlayerAccountId(cid)
    if new == 2 then
        db.executeQuery("UPDATE `accounts` SET language = 2 WHERE `id` = " .. acc)
    elseif new == 1 then
        db.executeQuery("UPDATE `accounts` SET language = 1 WHERE `id` = " .. acc)
    else
        db.executeQuery("UPDATE `accounts` SET language = 0 WHERE `id` = " .. acc)
    end  
end

 
 
function createBallByStatus(cid, status, id)
slot = getPlayerSlotItem(cid, <em><em><em><em><em><em><em><em><em><strong><strong><strong>?</strong></strong></strong></em></em></em></em></em></em></em></em></em>
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, <em><em><em><em><em><em><em><em><em><em><em><em><em><em><strong><strong><strong>?</strong></strong></strong></em></em></em></em></em></em></em></em></em></em></em></em></em></em>
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
useOTClient = true
useKpdoDlls = true
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, <em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><strong><strong><strong>?</strong></strong></strong></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>
local btype = getPokeballType(t.itemid)
local effect = pokeballs[btype].effect or 21 
 
doReturnPokemon(cid, getCreatureSummons(cid)[1], t,effect)
end
 
t = getPlayerSlotItem(cid, <em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><strong><strong><strong>?</strong></strong></strong></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>
if t.uid ~= 0 then
pokeslot = getItemAttribute(t.uid, "poke") 
 
 
if pokeslot == pokemon then
t = getPlayerSlotItem(cid, <em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><strong><strong><strong>?</strong></strong></strong></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>
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, <em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><strong><strong><strong>?</strong></strong></strong></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>
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, <em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><strong><strong><strong>?</strong></strong></strong></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>
doGoPokemon(cid, t)
atualizaPokes(cid)
return true
end
return false
end
 
 
function sendPokeInfo(cid)
local activeimg = true
local poke = getPlayerSlotItem(cid, <em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><strong><strong><strong>?</strong></strong></strong></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>
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, <em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><strong><strong><strong>?</strong></strong></strong></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>
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, <em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><strong><strong><strong>?</strong></strong></strong></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>
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

 

 

 

bug.thumb.png.599af7eed21e771cf5c9916b8995fad8.png

Sem título.png

 

Editado por NickFuCked (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
15 horas atrás, NickFuCked disse:

 

Boa dia, tarde, noite, preciso de uma ajuda com meu servidor, as vezes eu coloco o pokémon para fora da pokebola , e no voltar ele cria outro pokémon, segue imagens, e as vezes no lugar do portrait que estava o certo do pokémon , vira outra coisa tipo uma stone

 

Codigo Portrait / Some Functions

 

 

 

 

 

bug.thumb.png.599af7eed21e771cf5c9916b8995fad8.png

Sem título.png

 

mexeu no serve

16 horas atrás, NickFuCked disse:

 

Boa dia, tarde, noite, preciso de uma ajuda com meu servidor, as vezes eu coloco o pokémon para fora da pokebola , e no voltar ele cria outro pokémon, segue imagens, e as vezes no lugar do portrait que estava o certo do pokémon , vira outra coisa tipo uma stone

 

Codigo Portrait / Some Functions

 

 

 

 

 

bug.thumb.png.599af7eed21e771cf5c9916b8995fad8.png

Sem título.pngtenta esse daki 

Spoiler

function onEquip (cid, item, slot)

    if not cid then return true end
    if item.uid <= 0 then return true end
    
    
    if not getItemAttribute(item.uid, "poke") then
    return true
    end
    
    portraitSendLifeOTC(cid, item)
    
    for i, x in pairs(fotos) do
        if string.lower(getItemAttribute(item.uid, "poke")) == string.lower(i) then
            doTransformItem(getPlayerSlotItem(cid, 7).uid, fotos)
        return true
        end
    end
    
    
end

function onDeEquip(cid, item, slot)

    if not cid then return true end
    if item.uid <= 0 then 
    return true 
    end

    if not getItemAttribute(item.uid, "poke") then
    return true
    end

    doTransformItem(getPlayerSlotItem(cid, CONST_SLOT_LEGS).uid, 2395)
    doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, "0|0")
end

 

 

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