Jump to content

Recommended Posts

  • 3 months later...
  • 4 months later...
Em 15/03/2014 em 19:37, Soulviling disse:

Colocando pokebar (a barrinha que troca de pokemon) no seu pda sem level. Se quiser que eu faça com pda com level comentem ai.

 

 

  Mostrar conteúdo oculto

 

 

140430051409227784.jpg

 

 

 

 

 

 

PDA SEM LEVEL

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

 

Procure por:


endreturn retend

e embaixo coloque:

 

  Ocultar conteúdo

 

 

 



function doUpdatePokemonsBar(cid)if not isCreature(cid) then return true endif getPlayerStorageValue(cid, 656494) > 0 thenreturn trueendsetPlayerStorageValue(cid, 656494, 1000)addEvent(setPlayerStorageValue, 100, cid, 656494, -1)local ret = {}table.insert(ret, "p#,")local balls = getPlayerPokeballs(cid)local times = 0for 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..",")    endenddoPlayerSendCancel(cid, table.concat(ret))end

 

 

 

4. Vá na pasta data\lib\some functions.lua

Troque por esse:

 

  Ocultar conteúdo

 



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 endsendAllPokemonsBarPoke(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)   endif getPlayerGroupId(cid) > 4 thenlocal 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)          endendsendAllPokemonsBarPoke(cid)return trueend ---------------------------function unLock(ball)                                                             if not ball or ball <= 0 then return false endif 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   endendreturn falseendfunction getGuildMembersOnline(GuildId)local players = {}for _, pid in pairs(getPlayersOnline()) do    if getPlayerGuildId(pid) == tonumber(GuildId) then       table.insert(players, pid)    endend                                                   --by Vodkartreturn #players > 0 and players or falseendfunction 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()endreturn #players > 0 and players or falseend --/////////////////////////////////////////////////////////////////////////////////---function sendMsgToPlayer(cid, tpw, msg)      --alterado v1.7 \/\/\/if not isCreature(cid) or not tpw or not msg then return true endreturn doPlayerSendTextMessage(cid, tpw, msg)endfunction getPlayerDesc(cid, thing, TV)if (not isCreature(cid) or not isCreature(thing)) and not TV then return "" endlocal 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))..".")endif getPlayerGuildId(thing) > 0 then   table.insert(str, " "..art.." "..getPlayerGuildRank(thing).." from the "..getPlayerGuildName(thing)..".")endif TV then   table.insert(str, " "..art.." watching TV.")endtable.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) thenlocal cid = getCreatureMaster(pk)if cid thenlocal ball = getPlayerSlotItem(cid, 8)if ball.uid ~= 0 thenreturn getItemAttribute(ball.uid, "level") or 1endendendreturn falseendfunction addValuePokeLevel(level, value)if tonumber(level) thenvalue = value/100value = value*levelreturn valueendreturn falseendfunction 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[i]) then                           table.insert(items, itemsbag[i])                        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	endreturn itemsendfunction 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.1if 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   endendreturn falseend------------------------------------------------------------------------------------------------------function pokeHaveReflect(cid)if not isCreature(cid) then return false endlocal table = getTableMove(cid, "Reflect")if table and table.name then     --alterado v1.6   return true endreturn falseend------------------------------------------------------------------------------------------------------function nextHorario(cid)    horarioAtual = os.date("%X")    horario = string.explode(horarioAtual, ":")        for i = 1, #horas do        horarioComparacao = horas[i]        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"))    endendif tonumber(dateFormat[1][2]) == 0 and tonumber(dateFormat[2][2]) == 0 then   return "seconds"endreturn table.concat(out)endfunction 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"))    endendreturn 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)    endreturn 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)   endendendfunction ehNPC(cid)   --alterado v1.9return isCreature(cid) and not isPlayer(cid) and not isSummon(cid) and not isMonster(cid)endfunction ehMonstro(cid)   --alterado v1.9return cid and cid >= AUTOID_MONSTERS and cid < AUTOID_NPCSendfunction 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 endfunction doDisapear(cid)   --Faz um pokemon ficar invisivelif not isCreature(cid) then return true enddoCreatureAddCondition(cid, permanentinvisible)doCreatureSetHideHealth(cid, true)doSetCreatureOutfit(cid, {lookType = 2}, -1)endfunction hasTile(pos)    --Verifica se tem TILE na pospos.stackpos = 0if getTileThingByPos(pos).itemid >= 1 then   return trueendreturn falseendfunction getThingFromPosWithProtect(pos)  --Pega uma creatura numa posiçao com proteçoesif hasTile(pos) then   if isCreature(getRecorderCreature(pos)) then      return getRecorderCreature(pos)   else      pos.stackpos = 253      pid = getThingfromPos(pos).uid   endelse   pid = getThingfromPos({x=1,y=1,z=10,stackpos=253}).uidendreturn pidendfunction getTileThingWithProtect(pos)    --Pega um TILE com proteçoesif hasTile(pos) thenpos.stackpos = 0   pid = getTileThingByPos(pos)else   pid = getTileThingByPos({x=1,y=1,z=10,stackpos=0})endreturn pidendfunction canAttackOther(cid, pid)         --Function q verifica se um poke/player pode atacar outro poke/playerif not isCreature(cid) or not isCreature(pid) then return "Cant" endlocal master1 = isSummon(cid) and getCreatureMaster(cid) or cidlocal 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"   endreturn "Cant"end         function stopNow(cid, time)    --function q faz o poke/player ficar imovel por um tempoif not isCreature(cid) or not tonumber(time) or isSleeping(cid) then return true endlocal function podeMover(cid)                         --alterado v1.9 \/if isCreature(cid) then mayNotMove(cid, false) endendmayNotMove(cid, true)addEvent(podeMover, time, cid)endfunction doReduceStatus(cid, off, def, agi)   --reduz os statusif not isCreature(cid) then return true endlocal A = getOffense(cid)local B = getDefense(cid)local C = getSpeed(cid)if off > 0 then   setPlayerStorageValue(cid, 1001, A - off)endif def > 0 then   setPlayerStorageValue(cid, 1002, B - def)endif agi > 0 then   setPlayerStorageValue(cid, 1003, C - agi)   if getCreatureSpeed(cid) ~= 0 then      doRegainSpeed(cid)   end                                              --alterado v1.5  functions arrumadas...endendfunction doRaiseStatus(cid, off, def, agi, time)  if not isCreature(cid) then return true endlocal A = getOffense(cid)local B = getDefense(cid)local C = getSpeed(cid)if off > 0 then   setPlayerStorageValue(cid, 1001, A * off)endif def > 0 then   setPlayerStorageValue(cid, 1002, B * def)endif agi > 0 then   setPlayerStorageValue(cid, 1003, C + agi)   if getCreatureSpeed(cid) ~= 0 then      doRegainSpeed(cid)   endendlocal D = getOffense(cid)local E = getDefense(cid)local F = getSpeed(cid)---------------------------local G = D - Alocal H = E - Blocal I = F - CaddEvent(doReduceStatus, time*1000, cid, G, H, I)endfunction BackTeam(cid)            if isCreature(cid) then     local summon = getCreatureSummons(cid)   --alterado v1.6     for i = 2, #summon do         doSendMagicEffect(getThingPos(summon[i]), 211)         doRemoveCreature(summon[i])     end     setPlayerStorageValue(cid, 637501, -1)  end  end    function choose(...) -- by mock    local arg = {...}    return arg[math.random(1,#arg)]endfunction AddPremium(cid, days)local function removerPlayer(cid)if isCreature(cid) then   doRemoveCreature(cid)endenddb.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 TRUEendfunction isShiny(cid) return isCreature(cid) and string.find(getCreatureName(cid), "Shiny")  --alterado v1.9endfunction isShinyName(name)        return tostring(name) and string.find(doCorrectString(name), "Shiny") --alterado v1.9endfunction 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 thenreturn t[type][2]elsereturn t[type][1]endendfunction 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] thenreturn t[stoneID]elsereturn ""endendfunction isStone(id)if id >= leaf and id <= ice thenreturn trueendif id == boostStone then  --alterado v1.9return trueendif id == 12232 or id == 12242 or id == 12244 or id == 12245 thenreturn true                                 endif (id >= sfire and id <= searth) or id == 12417 or id == 12419 thenreturn true endreturn falseendfunction isWater(id)return tonumber(id) and id >= 4820 and id <= 4825 --alterado v1.9endfunction getTopCorpse(position)local pos = positionfor 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)    endendreturn nullendbpslot = CONST_SLOT_BACKPACKfunction 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	endreturn falseendfunction isNpcSummon(cid)return isNpc(getCreatureMaster(cid))endfunction 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!")	endreturn table.concat(str)endfunction doSetItemAttribute(item, key, value)doItemSetAttribute(item, key, value)endfunction 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)endfunction isTransformed(cid)return isCreature(cid) and not isInArray({-1, "Ditto", "Shiny Ditto"}, getPlayerStorageValue(cid, 1010))  --alterado v1.9endfunction doSendFlareEffect(pos)	local random = {28, 29, 79}	doSendMagicEffect(pos, random[math.random(1, 3)])endfunction isDay()	local a = getWorldTime()	if a >= 360 and a < 1080 then	return true	endreturn falseendfunction 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)	endendfunction 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	endendfunction doCorrectPokemonName(poke)return doCorrectString(poke)endfunction doCorrectString(str)local name = str:explode(" ")  --alterado v1.9local final = {}for _, s in ipairs(name) do    table.insert(final, s:sub(1, 1):upper()..s:sub(2, #s):lower())endreturn 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	endreturn 1endfunction 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)		endendfunction 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)	endendlocal EFFECTS = {  --[OutfitID] = {Effect}  ["Magmar"] = 35,    --magmar            --alterado v2.5  ["Magmortar"] = 35,    --magmar      ["Jynx"] = 17,    --jynx  ["Shiny Jynx"] = 17,    --shiny jynx  ["Piloswine"] = 210,    --piloswine  ["Swinub"] = 210,    --swinub}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   endif #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)	endendfunction 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 speedendfunction 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	endreturn trueendfunction 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	endreturn genderendfunction 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		endreturn retendfunction 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		endreturn retendfunction doCreatureSetOutfit(cid, outfit, time)	doSetCreatureOutfit(cid, outfit, time)endfunction 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	endend		function isItemPokeball(item)         --alterado v1.9 \/if not item then return false endfor a, b in pairs (pokeballs) do	if isInArray(b.all, item) then return true endendreturn falseendfunction 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	endreturn "none"endrandomdiagonaldir = {[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])endfunction 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)endfunction getFaceOpposite(dir)local d = {[NORTH] = SOUTH,[SOUTH] = NORTH,[EAST] = WEST,[WEST] = EAST,[NORTHEAST] = SOUTHWEST,[NORTHWEST] = SOUTHEAST,[SOUTHEAST] = NORTHWEST,[SOUTHWEST] = NORTHEAST}return d[dir]endfunction getResistance(cid, combat)	if isPlayer(cid) then return false endlocal poketype1 = pokes[getCreatureName(cid)].typelocal poketype2 = pokes[getCreatureName(cid)].type2local 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	endreturn multiplierendfunction 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		endendfunction getSomeoneDescription(cid)	if isPlayer(cid) then return getPlayerNameDescription(cid) endreturn getMonsterInfo(getCreatureName(cid)).descriptionend	function isGhostPokemon(cid)  if not isCreature(cid) then return false end                             --alterado v2.7  if isInArray({"Mismagius", "Dusknoir", "Sableye" , "Shuppet" , "Banette" , "Duskull" , "Dusclops" , "Gengar", "Haunter", "Gastly", "Misdreavus", "Shiny Gengar", "Shiny Abra", "Ghost Marowak"}, getCreatureName(cid)) then  return true  endreturn falseendfunction 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 trueendfunction doRemoveElementFromTable(t, e)	local ret = {}	for a = 1, #t do		if t[a] ~= e then		table.insert(ret, t[a])		end	endreturn retendfunction 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)		enddoCreatureSetLookDir(sid, ret)doChangeSpeed(sid, -1)return trueendfunction doCreatureAddCondition(cid, condition)if not isCreature(cid) then return true enddoAddCondition(cid, condition)endfunction doCreatureRemoveCondition(cid, condition)if not isCreature(cid) then return true enddoRemoveCondition(cid, condition)endfunction 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()endfunction 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	endreturn numberendfunction doSendMoveEffect(cid, target, effect)if not isCreature(cid) or not isCreature(target) then return true enddoSendDistanceShoot(getThingPos(cid), getThingPos(target), effect)return trueendfunction doSetItemActionId(uid, actionid)doItemSetAttribute(uid, "aid", actionid)return trueendfunction threeNumbers(number)	if number <= 9 then	return "00"..number..""	elseif number <= 99 then	return "0"..number..""	endreturn ""..number..""endfunction isBr(cid)if getPlayerStorageValue(cid, 105505) ~= -1 thenreturn trueendreturn falseendfunction isBeingUsed(ball)            if not ball then return false endfor a, b in pairs (pokeballs) do           --alterado v1.9    if b.use == ball then return true endendreturn falseendfunction doRemoveTile(pos)-- Script by mockpos.stackpos = 0local sqm = getTileThingByPos(pos)doRemoveItem(sqm.uid,1)endfunction doCreateTile(id,pos) -- By mockdoAreaCombatHealth(0,0,pos,0,0,0,CONST_ME_NONE)doCreateItem(id,1,pos)endfunction hasSqm(pos)local f = getTileThingByPos(pos)if f.itemid ~= 0 and f.itemid ~= 1 thenreturn trueendreturn falseendfunction getPosDirs(p, dir) -- By MatheusMkaloreturn 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}endfunction canWalkOnPos(pos, creature, pz, water, sqm, proj)if not pos then return false endif not pos.x then return false endif getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid <= 1 and sqm then return false endif getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 919 then return false endif 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 endif getTopCreature(pos).uid > 0 and creature then return false endif 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 trueendfunction canWalkOnPos2(pos, creature, pz, water, sqm, proj)     --alterado v1.6if not pos then return false endif not pos.x then return false endif getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid <= 1 and sqm then return false endif getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 919 then return false endif 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 endif getTopCreature(pos).uid > 0 and creature then return false endif 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 trueendfunction 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[b]) < range then					ret = positions[b]					range = getDistanceBetween(getThingPos(cid), positions[b])				end			end			return ret		else			return positions[math.random(#positions)]		end	endreturn getThingPos(cid)endfunction 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 trueendfunction isPlayerSummon(cid, uid)return getCreatureMaster(uid) == cid  --alterado v1.9endfunction isSummon(sid)return isCreature(sid) and getCreatureMaster(sid) ~= sid and isPlayer(getCreatureMaster(sid))   --alterado v1.9end function getItemsInContainerById(container, itemid) -- Function By Kydrailocal 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[i])          end       else          if itemid == item.itemid then             table.insert(items, item.uid)          end       end   endendreturn itemsendfunction 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[i])					end				elseif isPokeball(item.itemid) then					table.insert(items, item.uid)				end		end	endreturn itemsendfunction getItensUniquesInContainer(container)    --alterado v1.6if not isContainer(container) then return {} endlocal 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[i])          end       elseif getItemAttribute(item.uid, "unique") then          table.insert(items, item)       end   endendreturn itemsendfunction hasSpaceInContainer(container)                --alterado v1.6if not isContainer(container) then return false endif getContainerSize(container) < getContainerCap(container) then return true endfor slot = 0, (getContainerSize(container)-1) do    local item = getContainerItem(container, slot)    if isContainer(item.uid) then       if hasSpaceInContainer(item.uid) then          return true       end    endendreturn falseendfunction doPlayerAddItemStacking(cid, itemid, quant) -- by mkalolocal item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)local piles = 0if #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   endelse   return doPlayerAddItem(cid, itemid, quant)endif piles == #item then   doPlayerAddItem(cid, itemid, quant)endendfunction createBallByStatus(cid, status, id)slot = getPlayerSlotItem(cid, 8)if slot.uid == 0 thenitem = doPlayerAddItem(cid, id) elseitem = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, id, 1)endsetStatusPokeballByStatusStr(item, status)endfunction getPokemonByName(cid, pokemon)local arraypoke = {}local container = getPlayerSlotItem(cid, 3).uidlocal pokeballs = getPokeballsInContainer(container) for i =1, #pokeballs doname = getItemAttribute(pokeballs[i], "poke") if pokemon == name thentable.insert(arraypoke, pokeballs[i])return arraypoke[1]endendreturn falseendfunction tranfBallInShiny(pokeball)doItemSetAttribute(pokeball, "shiny", "shiny")return trueendfunction getShinyByPokeball(pokeball)local shiny = getItemAttribute(pokeball, "shiny") return shiny == "shiny" and true or falseendfunction getShinyNameByPokeball(pokeball)local shiny = getItemAttribute(pokeball, "shiny") return shiny and "Shiny "..getItemAttribute(pokeball, "poke").."" or getItemAttribute(pokeball, "poke")endfunction 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 dodoItemSetAttribute(pokeball, x[i], attr[i])endendfunction 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 dolocal attr = getItemAttribute(pokeball, x[i]) or 0local t = attr ..sepstr = str..tendreturn str endfunction atualizaPokes(cid)local item = getPlayerSlotItem(cid, 8)if item.uid <= 0 then return true endif not getItemAttribute(item.uid, "poke") thenreturn trueend    for i, x in pairs(fotos) doif string.lower(getItemAttribute(item.uid, "poke")) == string.lower(i) thendoTransformItem(getPlayerSlotItem(cid, 7).uid, fotos[i])if useOTClient thendoPlayerSendCancel(cid, '12//,show')endif useKpdoDlls thendoUpdateMoves(cid)endendendendfunction 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                                                                                                                        endif exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) > 0 then return true endif #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then     --alterado v1.6if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 then  BackTeam(cid)       endend   if #getCreatureSummons(cid) > 0 thent = getPlayerSlotItem(cid, 8)local btype = getPokeballType(t.itemid)local effect = pokeballs[btype].effect or 21	doReturnPokemon(cid, getCreatureSummons(cid)[1], t,effect)endt = getPlayerSlotItem(cid, 8)if t.uid ~= 0 thenpokeslot = getItemAttribute(t.uid, "poke") if pokeslot == pokemon thent = getPlayerSlotItem(cid, 8)doGoPokemon(cid, t)atualizaPokes(cid)return trueendif getPokemonByName(cid, pokemon) thenlocal poke = getPokemonByName(cid, pokemon)local attr = copieAllStatusBalls(t.uid)local id = t.itemiddoRemoveItem(t.uid)local attr2 = copieAllStatusBalls(poke)local id2 = getThing(poke).itemiddoRemoveItem(getPokemonByName(cid, pokemon))createBallByStatus(cid, attr2, id2)createBallByStatus(cid, attr, id)t = getPlayerSlotItem(cid, 8)doGoPokemon(cid, t)atualizaPokes(cid)return trueendendif getPokemonByName(cid, pokemon) thenlocal id = getThing(getPokemonByName(cid, pokemon)).itemidlocal attr = copieAllStatusBalls(getPokemonByName(cid, pokemon))doRemoveItem(getPokemonByName(cid, pokemon))createBallByStatus(cid, attr, id)t = getPlayerSlotItem(cid, 8)doGoPokemon(cid, t)atualizaPokes(cid)return trueendreturn falseendfunction sendPokeInfo(cid)local activeimg = truelocal poke = getPlayerSlotItem(cid, 8)local pokeslot = getItemAttribute(poke.uid, "poke") local pokeboost = getItemAttribute(poke.uid, "boost") or 0local pokehappy = getPlayerStorageValue(getCreatureSummons(cid)[1], 1008) or 1 doPlayerSendCancel(cid, "NewInfo/"..pokeslot.."/"..pokeboost.."/"..pokehappy.."")if activeimg thenlocal img = "ShowPoke/"doPlayerSendCancel(cid, img..pokeslot)endendfunction 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 dotable.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)endlocal pos = getThingPos(cid)local pos = getThingPos(cid)local t = 5local 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)) doif isPlayer(pid) thendoPlayerSendCancel(pid, "Audio "..audio.."")endendendfunction doShowSelectChar(cid)doPlayerSendCancel(cid, "ShowChar")endfunction doCloseSelectChar(cid)doPlayerSendCancel(cid, "CloseChar")endfunction doShowLookPlayer(cid, target, msg)doPlayerSendCancel(cid, "ShowLook/"..getPlayerStorageValue(target, 21121).."/"..msg.."")endfunction doCloseInfoPoke(cid)local activeimg = truedoPlayerSendCancel(cid, "InfoClosed")if activeimg thenlocal close = "ClosePoke"doPlayerSendCancel(cid, close)endendfunction sendAllPokemonsBarPoke(cid)local container = getPlayerSlotItem(cid, 3).uidlocal pokes = "Pokebar"local t = getPlayerSlotItem(cid, 8)if t.uid ~= 0 thenpokeslot = getItemAttribute(t.uid, "poke") pokes = pokes.."/"..pokeslot..""endlocal pokeballs = getPokeballsInContainer(container) for i =1, #pokeballs dopokemons = getItemAttribute(pokeballs[i], "poke") pokes = pokes.."/"..pokemons..""enddoPlayerSendCancel(cid, pokes)endfunction addLevelAllpokes(cid, levelup)local container = getPlayerSlotItem(cid, 3).uidlocal pokes = "Parabens seus pokemons subiram de level"local msg = ""x = falselocal t = getPlayerSlotItem(cid, 8)local pokeballs = getPokeballsInContainer(container) for i =1, #pokeballs dopokemons = getItemAttribute(pokeballs[i], "poke") local level = getItemAttribute(pokeballs[i], "level") and getItemAttribute(pokeballs[i], "level") or 1local up = level+levelupdoItemSetAttribute(pokeballs[i], "level", up)msg = msg..pokemons.." Subiu para o level "..up.."\n"x = trueendif t.uid ~= 0 thenpokeslot = getItemAttribute(t.uid, "poke") local level = getItemAttribute(t.uid, "level") and getItemAttribute(t.uid, "level") or 1local up = level+levelupdoItemSetAttribute(t.uid, "level", up)msg = msg..pokeslot.." Subiu para o level "..up.."\n"endreturn 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()) thendoPlayerSendTextMessage(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.")elseif doSendPokemon(cid, param) thensendAllPokemonsBarPoke(cid)setPlayerStorageValue(cid, cfg.storage, os.time() + cfg.exhausted)return trueenddoPlayerSendTextMessage(cid, 27, "Sua barra esta desatualizada")sendAllPokemonsBarPoke(cid)endreturn trueend

 

 

Coloque o game_barpoke dentro da pasta modules.

 

Download: www.mediafire.com/download/8bavucwof24bkxv/game_barpoke.rar

 

 


Créditos:
Soulviling
Caotic

quando vou usar o pokebar o addon do pokemon some poderia me ajuda com isso

Link to comment
Share on other sites

  • 1 year later...
×
×
  • Create New...