Jump to content
×
×
  • Create New...

Recommended Posts

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.

 

 

 

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:

 

 

 

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:

 

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

 

 

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
Edited by Soulviling
Link to post
Share on other sites
  • Replies 63
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

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.             PDA SEM LEVEL 1. Vá na pasta data\actions\script

E um erro muito indagado quando eu fiz o sistema más felizmente ele tem uma solução simples.   Antes do pokemon for sumonado basta adicionar: if getCreatureCondition(cid, CONDITION_INFIGHT) == tru

O cara cria o tópico, mais nem da suporte. É foda ...

Posted Images

ayuda Como soluciono esto

 

[15/03/2014 17:21:12] [Error - TalkAction Interface]
[15/03/2014 17:21:12] data/talkactions/scripts/poke.lua:onSay
[15/03/2014 17:21:12] Description:
[15/03/2014 17:21:12] data/lib/034-exhaustion.lua:126: field 'day' missing in date table
[15/03/2014 17:21:12] stack traceback:
[15/03/2014 17:21:12] [C]: in function 'time'
[15/03/2014 17:21:12] data/lib/034-exhaustion.lua:126: in function 'get'
[15/03/2014 17:21:12] data/lib/some functions.lua:1732: in function 'doSendPokemon'
[15/03/2014 17:21:12] data/talkactions/scripts/poke.lua:13: in function <data/talkactions/scripts/poke.lua:1>

Link to post
Share on other sites

Seu servidor é com level?

Troque some functions por:

 

 


function addPokeToPlayer(cid, pokemon, level, extStr, gender, boost, ball, unique) --alterado v1.9 \/ peguem ele todo...
local genders = {
["male"] = 4,
["female"] = 3,
[1] = 4,
[0] = 3,
[4] = 4,
[3] = 3,
}
if not isCreature(cid) then return false end
sendAllPokemonsBarPoke(cid)
local pokemon = doCorrectString(pokemon)
if not pokes[pokemon] then return false end
local GENDER = (gender and genders[gender]) and genders[gender] or getRandomGenderByName(pokemon)
local btype = (ball and pokeballs[ball]) and ball or isShinyName(pokemon) and "shinynormal" or "normal"
local happy = 250
local level = tonumber(level) and tonumber(level) or pokes[pokemon].level
local extra = tonumber(extStr) and tonumber(extStr) or 1
local mypoke = pokes[pokemon]
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
local off = mypoke.offense * level * extra
local def = mypoke.defense * level * extra
local sp = mypoke.specialattack * level * extra
local vit = mypoke.vitality * level * extra
local agi = mypoke.agility * level * extra
local leveltable = getPokemonExperienceTable(pokemon)
doItemSetAttribute(item, "poke", pokemon)
doItemSetAttribute(item, "hp", 1)
doItemSetAttribute(item, "level", level)
doItemSetAttribute(item, "exp", leveltable[level])
doItemSetAttribute(item, "nextlevelexp", leveltable[level+1] - leveltable[level])
doItemSetAttribute(item, "offense", off)
doItemSetAttribute(item, "defense", def)
doItemSetAttribute(item, "speed", agi)
doItemSetAttribute(item, "vitality", vit)
doItemSetAttribute(item, "specialattack", sp)
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
local off = mypoke.offense * boost_rate * tonumber(boost)
local def = mypoke.defense * boost_rate * tonumber(boost)
local agi = mypoke.agility * tonumber(boost)
local spatk = mypoke.specialattack * boost_rate * tonumber(boost)
local vit = mypoke.vitality * boost_rate * tonumber(boost)
doItemSetAttribute(item, "boost", tonumber(boost))
doItemSetAttribute(item, "offense", getItemAttribute(item, "offense") + off)
doItemSetAttribute(item, "defense", getItemAttribute(item, "defense") + def)
doItemSetAttribute(item, "speed", getItemAttribute(item, "speed") + agi)
doItemSetAttribute(item, "specialattack", getItemAttribute(item, "specialattack") + spatk)
doItemSetAttribute(item, "vitality", getItemAttribute(item, "vitality") + vit)
end
if unique then
doItemSetAttribute(item, "unique", getCreatureName(cid))
end
if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then
doPlayerSendMailByName(getCreatureName(cid), item, 1)
sendMsgToPlayer(cid, 27, "You are already holding six pokemons, so your new pokemon was sent to your depot.")
end
if (isShinyName(pokemon) or (boost and tonumber(boost) and tonumber(boost) >= 10)) and pokeballs["shiny"..btype] then
doTransformItem(item, pokeballs["shiny"..btype].on)
else
doTransformItem(item, pokeballs[btype].on)
end
sendAllPokemonsBarPoke(cid)
return true
end
---------------------------
function unLock(ball)
if not ball or ball <= 0 then return false end
if getItemAttribute(ball, "lock") and getItemAttribute(ball, "lock") > 0 then
local vipTime = getItemAttribute(ball, "lock")
local timeNow = os.time()
local days = math.ceil((vipTime - timeNow)/(24 * 60 * 60))
if days <= 0 then
doItemEraseAttribute(ball, "lock")
doItemEraseAttribute(ball, "unique")
return true
end
end
return false
end
function getGuildMembersOnline(GuildId)
local players = {}
for _, pid in pairs(getPlayersOnline()) do
if getPlayerGuildId(pid) == tonumber(GuildId) then
table.insert(players, pid)
end
end --by Vodkart
return #players > 0 and players or false
end
function getGuildMembers(GuildId)
local players,query = {},db.getResult("SELECT `name` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. GuildId .. ");")
if (query:getID() ~= -1) then
repeat
table.insert(players,query:getDataString("name"))
until not query:next() --by Vodkart
query:free()
end
return #players > 0 and players or false
end
--/////////////////////////////////////////////////////////////////////////////////---
function sendMsgToPlayer(cid, tpw, msg) --alterado v1.7 \/\/\/
if not isCreature(cid) or not tpw or not msg then return true end
return doPlayerSendTextMessage(cid, tpw, msg)
end
function getPlayerDesc(cid, thing, TV)
if (not isCreature(cid) or not isCreature(thing)) and not TV then return "" end
local pos = getThingPos(thing)
local ocup = youAre[getPlayerGroupId(thing)]
local rank = (getPlayerStorageValue(thing, 86228) <= 0) and "a Pokemon Trainer" or lookClans[getPlayerStorageValue(thing, 86228)][getPlayerStorageValue(thing, 862281)]
local name = thing == cid and "yourself" or getCreatureName(thing)
local art = thing == cid and "You are" or (getPlayerSex(thing) == 0 and "She is" or "He is")
local str = {}
table.insert(str, "You see "..name..". "..art.." ")
if youAre[getPlayerGroupId(thing)] then
table.insert(str, (ocup).." and "..rank.." from ".. getTownName(getPlayerTown(thing))..".")
else
table.insert(str, (rank).." from ".. getTownName(getPlayerTown(thing))..".")
end
if getPlayerGuildId(thing) > 0 then
table.insert(str, " "..art.." "..getPlayerGuildRank(thing).." from the "..getPlayerGuildName(thing)..".")
end
if TV then
table.insert(str, " "..art.." watching TV.")
end
table.insert(str, ((isPlayer(cid) and youAre[getPlayerGroupId(cid)]) and "\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]" or ""))
return table.concat(str)
end
------------------------------------------------------------------------------------------------- /\/\
function getLivePokeballs(cid, container, duel) --alterado v2.8
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 v2.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 v2.8
elseif not duel then
table.insert(items, item.uid)
end
end
end
end
end
end
return items
end
function addItemInFreeBag(container, item, num)
if not isContainer(container) or not item then return false end
if not num or num <= 0 then num = 1 end --alterado v1.6.1
if getContainerSize(container) < getContainerCap(container) then
return doAddContainerItem(container, item, num)
else
for slot = 0, (getContainerSize(container)-1) do
local container2 = getContainerItem(container, slot)
if isContainer(container2.uid) and getContainerSize(container2.uid) < getContainerCap(container2.uid) then
return doAddContainerItem(container2.uid, item, num)
end
end
end
return false
end
------------------------------------------------------------------------------------------------------
function pokeHaveReflect(cid)
if not isCreature(cid) then return false end
local table = getTableMove(cid, "Reflect")
if table and table.name then --alterado v1.6
return true
end
return false
end
------------------------------------------------------------------------------------------------------
function nextHorario(cid)
horarioAtual = os.date("%X")
horario = string.explode(horarioAtual, ":")
for i = 1, #horas do
horarioComparacao = horas
horarioComp = string.explode(horarioComparacao, ":")
---------------
if tonumber(horarioComp[1]) > tonumber(horario[1]) then
return horarioComparacao
elseif tonumber(horarioComp[1]) == tonumber(horario[1]) and tonumber(horario[2]) < tonumber(horarioComp[2]) then
return horarioComparacao
end
end
return horas[1]
end
function getTimeDiff(timeDiff)
local dateFormat = {
{'hour', timeDiff / 60 / 60}, --6%
{'min', timeDiff / 60 % 60},
}
local out = {}
for k, t in ipairs(dateFormat) do
local v = math.floor(t[2])
if(v > -1) then
table.insert(out, (k < #dateFormat and '' or ' and ') .. v .. '' .. (v <= 1 and t[1] or t[1].."s"))
end
end
if tonumber(dateFormat[1][2]) == 0 and tonumber(dateFormat[2][2]) == 0 then
return "seconds"
end
return table.concat(out)
end
function getTimeDiff2(timeDiff)
local dateFormat = {
{'hour', timeDiff / 60 / 60}, --6%
{'min', timeDiff / 60 % 60},
{'sec', timeDiff % 60},
}
local out = {}
for k, t in ipairs(dateFormat) do
local v = math.floor(t[2])
if(v > 0) then
table.insert(out, (k < #dateFormat and ' ' or ' and ') .. v .. '' .. (v <= 1 and t[1] or t[1].."s"))
end
end
return table.concat(out)
end
function showTimeDiff(timeComp)
local b = string.explode(os.date("%X"), ":")
local c = string.explode(timeComp, ":")
---
local d, m, y = os.date("%d"), os.date("%m"), os.date("%Y")
local hAtual, mAtual = tonumber(b[1]), tonumber(b[2])
local hComp, mComp = tonumber(c[1]), tonumber(c[2])
---
local t = os.time{year= y, month= m, day= d, hour= hAtual, min= mAtual}
local t1 = os.time{year= y, month= m, day= d, hour= hComp, min= mComp}
---
comparacao = t1-t
if hComp < hAtual then
v = os.time{year= y, month= m, day= d, hour= 24, min= 0}
v2 = os.time{year= y, month= m, day= d, hour= 0, min= 0}
comparacao = (v-t)+(t1-v2)
end
return getTimeDiff(comparacao)
end
-------------------------------------------------------------------------
function cleanCMcds(item)
if item ~= 0 then
for c = 1, 15 do --alterado v1.5
local str = "cm_move"..c
setCD(item, str, 0)
end
end
end
function ehNPC(cid) --alterado v1.9
return isCreature(cid) and not isPlayer(cid) and not isSummon(cid) and not isMonster(cid)
end
function ehMonstro(cid) --alterado v1.9
return cid and cid >= AUTOID_MONSTERS and cid < AUTOID_NPCS
end
function doAppear(cid) --Faz um poke q tava invisivel voltar a ser visivel...
if not isCreature(cid) then return true end
doRemoveCondition(cid, CONDITION_INVISIBLE)
doRemoveCondition(cid, CONDITION_OUTFIT)
doCreatureSetHideHealth(cid, false)
if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then
if isSummon(cid) then
local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
doSetCreatureOutfit(cid, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1) --alterado v1.6.1
end
end
end
function doDisapear(cid) --Faz um pokemon ficar invisivel
if not isCreature(cid) then return true end
doCreatureAddCondition(cid, permanentinvisible)
doCreatureSetHideHealth(cid, true)
doSetCreatureOutfit(cid, {lookType = 2}, -1)
end
function hasTile(pos) --Verifica se tem TILE na pos
pos.stackpos = 0
if getTileThingByPos(pos).itemid >= 1 then
return true
end
return false
end
function getThingFromPosWithProtect(pos) --Pega uma creatura numa posiçao com proteçoes
if hasTile(pos) then
if isCreature(getRecorderCreature(pos)) then
return getRecorderCreature(pos)
else
pos.stackpos = 253
pid = getThingfromPos(pos).uid
end
else
pid = getThingfromPos({x=1,y=1,z=10,stackpos=253}).uid
end
return pid
end
function getTileThingWithProtect(pos) --Pega um TILE com proteçoes
if hasTile(pos) then
pos.stackpos = 0
pid = getTileThingByPos(pos)
else
pid = getTileThingByPos({x=1,y=1,z=10,stackpos=0})
end
return pid
end
function canAttackOther(cid, pid) --Function q verifica se um poke/player pode atacar outro poke/player
if not isCreature(cid) or not isCreature(pid) then return "Cant" end
local master1 = isSummon(cid) and getCreatureMaster(cid) or cid
local master2 = isSummon(pid) and getCreatureMaster(pid) or pid
----
if getPlayerStorageValue(master1, 6598754) >= 5 and getPlayerStorageValue(master2, 6598754) >= 5 then
if getPlayerStorageValue(master1, 6598754) ~= getPlayerStorageValue(master2, 6598754) then
if isDuelingAgainst(master1, master2) then --alterado v1.8
if isSummon(cid) and isPlayer(pid) then
return "Cant"
else
return "Can"
end
end
end
end
---- pvp system
if getPlayerStorageValue(master1, 6598754) >= 1 and getPlayerStorageValue(master2, 6598755) >= 1 then
return "Can"
end
if getPlayerStorageValue(master1, 6598755) >= 1 and getPlayerStorageValue(master2, 6598754) >= 1 then ---estar em times diferentes
return "Can"
end
----
if ehMonstro(cid) or ehMonstro(pid) then
return "Can"
end
return "Cant"
end
function stopNow(cid, time) --function q faz o poke/player ficar imovel por um tempo
if not isCreature(cid) or not tonumber(time) or isSleeping(cid) then return true end
local function podeMover(cid) --alterado v1.9 \/
if isCreature(cid) then mayNotMove(cid, false) end
end
mayNotMove(cid, true)
addEvent(podeMover, time, cid)
end
function doReduceStatus(cid, off, def, agi) --reduz os status
if not isCreature(cid) then return true end
local A = getOffense(cid)
local B = getDefense(cid)
local C = getSpeed(cid)
if off > 0 then
setPlayerStorageValue(cid, 1001, A - off)
end
if def > 0 then
setPlayerStorageValue(cid, 1002, B - def)
end
if agi > 0 then
setPlayerStorageValue(cid, 1003, C - agi)
if getCreatureSpeed(cid) ~= 0 then
doRegainSpeed(cid)
end --alterado v1.5 functions arrumadas...
end
end
function doRaiseStatus(cid, off, def, agi, time)
if not isCreature(cid) then return true end
local A = getOffense(cid)
local B = getDefense(cid)
local C = getSpeed(cid)
if off > 0 then
setPlayerStorageValue(cid, 1001, A * off)
end
if def > 0 then
setPlayerStorageValue(cid, 1002, B * def)
end
if agi > 0 then
setPlayerStorageValue(cid, 1003, C + agi)
if getCreatureSpeed(cid) ~= 0 then
doRegainSpeed(cid)
end
end
local D = getOffense(cid)
local E = getDefense(cid)
local F = getSpeed(cid)
---------------------------
local G = D - A
local H = E - B
local I = F - C
addEvent(doReduceStatus, time*1000, cid, G, H, I)
end
function BackTeam(cid)
if isCreature(cid) then
local summon = getCreatureSummons(cid) --alterado v1.6
for i = 2, #summon do
doSendMagicEffect(getThingPos(summon), 211)
doRemoveCreature(summon)
end
setPlayerStorageValue(cid, 637501, -1)
end
end
function choose(...) -- by mock
local arg = {...}
return arg[math.random(1,#arg)]
end
function AddPremium(cid, days)
local function removerPlayer(cid)
if isCreature(cid) then
doRemoveCreature(cid)
end
end
db.executeQuery("UPDATE `accounts` SET `premdays` = '"..days.."' WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";")
doPlayerSendTextMessage(cid,25,"Você será kickado em 5 segundos.")
addEvent(removerPlayer, 5*1000, cid)
return TRUE
end
function isShiny(cid)
return isCreature(cid) and string.find(getCreatureName(cid), "Shiny") --alterado v1.9
end
function isShinyName(name)
return tostring(name) and string.find(doCorrectString(name), "Shiny") --alterado v1.9
end
function doConvertTypeToStone(type, string)
local t = {
["fly"] = {heart, "heart"},
["flying"] = {heart, "heart"},
["normal"] = {heart, "heart"},
["fire"] = {fire, "fire"},
["grass"] = {leaf, "leaf"},
["leaf"] = {leaf, "leaf"},
["water"] = {water, "water"},
["poison"] = {venom, "venom"},
["venom"] = {venom, "venom"},
["electric"] = {thunder, "thunder"},
["thunder"] = {thunder, "thunder"},
["rock"] = {rock, "rock"},
["fight"] = {punch, "punch"},
["fighting"] = {punch, "punch"},
["bug"] = {coccon, "coccon"},
["dragon"] = {crystal, "crystal"},
["dark"] = {dark, "dark"},
["ghost"] = {dark, "dark"},
["ground"] = {earth, "earth"},
["earth"] = {earth, "earth"},
["psychic"] = {enigma, "enigma"},
["steel"] = {metal, "metal"},
["metal"] = {metal, "metal"},
["ice"] = {ice, "ice"},
["boost"] = {boostStone, "boost"}, --alterado v1.9
}
if string then
return t[type][2]
else
return t[type][1]
end
end
function doConvertStoneIdToString(stoneID)
local t = {
[11453] = "Heart Stone",
[11441] = "Leaf Stone",
[11442] = "Water Stone",
[11443] = "Venom Stone",
[11444] = "Thunder Stone",
[11445] = "Rock Stone",
[11446] = "Punch Stone",
[11447] = "Fire Stone", --alterado v1.6
[11448] = "Cocoon Stone",
[11449] = "Crystal Stone",
[11450] = "Darkess Stone",
[11451] = "Earth Stone",
[11452] = "Enigma Stone",
[11454] = "Ice Stone",
[12244] = "King's Rock",
[12232] = "Metal Stone",
[12242] = "Sun Stone",
[12401] = "Shiny Fire Stone",
[12402] = "Shiny Water Stone",
[12403] = "Shiny Leaf Stone",
[12404] = "Shiny Heart Stone",
[12405] = "Shiny Enigma Stone",
[12406] = "Shiny Rock Stone",
[12407] = "Shiny Venom Stone",
[12408] = "Shiny Ice Stone",
[12409] = "Shiny Thunder Stone",
[12410] = "Shiny Crystal Stone",
[12411] = "Shiny Cocoon Stone",
[12412] = "Shiny Darkness Stone",
[12413] = "Shiny Punch Stone",
[12414] = "Shiny Earth Stone",
[boostStone] = "Boost Stone", --alterado v1.9
}
if t[stoneID] then
return t[stoneID]
else
return ""
end
end
function isStone(id)
if id >= leaf and id <= ice then
return true
end
if id == boostStone then --alterado v1.9
return true
end
if id == 12232 or id == 12242 or id == 12244 or id == 12245 then
return true
end
if (id >= sfire and id <= searth) or id == 12417 or id == 12419 then
return true
end
return false
end
function isWater(id)
return tonumber(id) and id >= 4820 and id <= 4825 --alterado v1.9
end
function getTopCorpse(position)
local pos = position
for n = 1, 255 do
pos.stackpos = n
local item = getTileThingByPos(pos)
if item.itemid >= 2 and (string.find(getItemNameById(item.itemid), "fainted ") or string.find(getItemNameById(item.itemid), "defeated ")) then
return getTileThingByPos(pos)
end
end
return null
end
bpslot = CONST_SLOT_BACKPACK
function hasPokemon(cid)
if not isCreature(cid) then return false end
if getCreatureMana(cid) <= 0 then return false end
if #getCreatureSummons(cid) >= 1 then return true end
local item = getPlayerSlotItem(cid, CONST_SLOT_FEET)
local bp = getPlayerSlotItem(cid, bpslot)
for a, b in pairs (pokeballs) do
if item.itemid == b.on or item.itemid == b.use then
return true --alterado v1.4
end
if #getItemsInContainerById(bp.uid, b.on) >= 1 then
return true
end
end
return false
end
function isNpcSummon(cid)
return isNpc(getCreatureMaster(cid))
end
function doSetItemAttribute(item, key, value)
doItemSetAttribute(item, key, value)
end
function getPokemonHappinessDescription(cid)
if not isCreature(cid) then return true end
local str = ""
if getPokemonGender(cid) == SEX_MALE then
str = "He"
elseif getPokemonGender(cid) == SEX_FEMALE then
str = "She"
else
str = "It"
end
local h = getPlayerStorageValue(cid, 1008)
if h >= tonumber(getConfigValue('PokemonStageVeryHappy')) then
str = str.." is very happy with you!"
elseif h >= tonumber(getConfigValue('PokemonStageHappy')) then
str = str.." is happy."
elseif h >= tonumber(getConfigValue('PokemonStageOK')) then
str = str.." is unhappy."
elseif h >= tonumber(getConfigValue('PokemonStageSad')) then
str = str.." is sad."
elseif h >= tonumber(getConfigValue('PokemonStageMad')) then
str = str.." is mad."
else
str = str.." is very mad at you!"
end
return str
end
function deTransform(cid, check)
if not isCreature(cid) then return true end
local m = getCreatureMaster(cid)
local p = getPlayerSlotItem(m, 8)
if getItemAttribute(p.uid, "transTurn") ~= check then return true end
setPlayerStorageValue(cid, 1010, "Ditto")
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")
doItemEraseAttribute(p.uid, "boffense")
doItemEraseAttribute(p.uid, "bdefense")
doItemEraseAttribute(p.uid, "bsattack")
doItemEraseAttribute(p.uid, "bagility")
end
function isTransformed(cid)
return isCreature(cid) and not isInArray({-1, "Ditto", "Shiny Ditto"}, getPlayerStorageValue(cid, 1010)) --alterado v2.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 v2.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 v2.8
end
--////////////////////////////////////////////////////////////////////////////////////////--
if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then --alterado v2.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, 8)
end
if blockevo then
edit = false
doPlayerSendCancel(cid, "Your pokemon couldn't evolve due to server mistakes, please wait until we fix the problem.")
end
local happy = getPlayerStorageValue(pokemon, 1008)
local hunger = getPlayerStorageValue(pokemon, 1009)
local pokelife = (getCreatureHealth(pokemon) / getCreatureMaxHealth(pokemon))
if edit then
doItemSetAttribute(pokeball.uid, "happy", happy)
doItemSetAttribute(pokeball.uid, "hunger", hunger)
doItemSetAttribute(pokeball.uid, "hp", pokelife)
end
if getCreatureName(pokemon) == "Ditto" then
if isTransformed(pokemon) then
local left = getItemAttribute(pokeball.uid, "transLeft") - (os.clock() - getItemAttribute(pokeball.uid, "transBegin"))
doItemSetAttribute(pokeball.uid, "transLeft", left)
end
end
if hideeffects then
doRemoveCreature(pokemon)
return true
end
local pokename = getPokeName(pokemon)
local mbk = gobackmsgs[math.random(1, #gobackmsgs)].back:gsub("doka", pokename)
if getCreatureCondition(cid, CONDITION_INFIGHT) then
if isCreature(getCreatureTarget(cid)) then
doItemSetAttribute(pokeball.uid, "happy", happy - 5)
else
doItemSetAttribute(pokeball.uid, "happy", happy - 2)
end
end
doTransformItem(pokeball.uid, pokeball.itemid-1)
doCreatureSay(cid, mbk, TALKTYPE_SAY)
doSendMagicEffect(getCreaturePosition(pokemon), effect)
doRemoveCreature(pokemon)
doCloseInfoPoke(cid)
unLock(pokeball.uid) --alterado v1.8
if useOTClient then
doPlayerSendCancel(cid, '12//,hide') --alterado v1.7
end
if useKpdoDlls then
doUpdateMoves(cid)
end
end
local EFFECTS = {
--[OutfitID] = {Effect}
["Magmar"] = 35, --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
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
--local e = getCreatureMaster(cid)
local nameHIT = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke")
local hands = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "hands")
if nameHIT == "Shiny Hitmonchan" or nameHIT == "Hitmonchan" then
if getItemAttribute(getPlayerSlotItem(cid, 8).uid, "hands") then
doSetCreatureOutfit(pk, {lookType = hitmonchans[nameHIT][hands].out}, -1)
else
doPlayerSendTextMessage(cid, 27, "Contact a GameMaster! Error in passive system! Attribute \"hands\" missing")
end
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, false, true)
doAddPokemonInOwnList(cid, pokemon)
doTransformItem(item.uid, item.itemid+1)
local pokename = getPokeName(pk) --alterado v2.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 v2.8
if useKpdoDlls then
doUpdateMoves(cid)
end
end
function doRegainSpeed(cid) --alterado v2.9 \/
if not isCreature(cid) then return true end
local speed = PlayerSpeed
if isMonster(cid) then
speed = getCreatureBaseSpeed(cid) + getSpeed(cid) * speedRate
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 isPosEqualPos(pos1, pos2, checkstackpos)
if pos1.x ~= pos2.x or pos1.y ~= pos2.y and pos1.z ~= pos2.z then
return false
end
if checkstackpos and pos1.stackpos and pos2.stackpos and pos1.stackpos ~= pos2.stackpos then
return false
end
return true
end
function getRandomGenderByName(name)
local rate = newpokedex[name]
if not rate then return 0 end
rate = rate.gender
if rate == 0 then
gender = 3
elseif rate == 1000 then
gender = 4
elseif rate == -1 then
gender = 0
elseif math.random(1, 1000) <= rate then
gender = 4
else
gender = 3
end
return gender
end
function getRecorderPlayer(pos, cid)
local ret = 0
if cid and isPosEqual(getThingPos(cid), pos) then --alterado v1.9
return cid
end
local s = {}
s.x = pos.x
s.y = pos.y
s.z = pos.z
for a = 0, 255 do
s.stackpos = a
local b = getTileThingByPos(s).uid
if b > 1 and isPlayer(b) and getCreatureOutfit(b).lookType ~= 814 then
ret = b
end
end
return ret
end
function getRecorderCreature(pos, cid)
local ret = 0
if cid and isPosEqual(getThingPos(cid), pos) then --alterado v1.9
return cid
end
local s = {}
s.x = pos.x
s.y = pos.y
s.z = pos.z
for a = 0, 255 do
s.stackpos = a
local b = getTileThingByPos(s).uid
if b > 1 and isCreature(b) and getCreatureOutfit(b).lookType ~= 814 then
ret = b
end
end
return ret
end
function doCreatureSetOutfit(cid, outfit, time)
doSetCreatureOutfit(cid, outfit, time)
end
function doMagicalFlower(cid, away)
if not isCreature(cid) then return true end
for x = -3, 3 do
for y = -3, 3 do
local a = getThingPos(cid)
a.x = a.x + x
a.y = a.y + y
if away then
doSendDistanceShoot(a, getThingPos(cid), 21)
else
doSendDistanceShoot(getThingPos(cid), a, 21)
end
end
end
end
function isItemPokeball(item) --Icone System \/
if not item then return false end
for a, b in pairs (pokeballs) do
if isInArray(b.all, item) then return true end
if item >= 13541 and item <= 13552 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 --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
end
return false
end
function updateGhostWalk(cid)
if not isCreature(cid) then return false end
local pos = getThingPos(cid)
pos.x = pos.x + 1
pos.y = pos.y + 1
local ret = getThingPos(cid)
doTeleportThing(cid, pos, false)
doTeleportThing(cid, ret, false)
return true
end
function doRemoveElementFromTable(t, e)
local ret = {}
for a = 1, #t do
if t[a] ~= e then
table.insert(ret, t[a])
end
end
return ret
end
function doFaceCreature(sid, pos)
if not isCreature(sid) then return true end
if getThingPos(sid).x == pos.x and getThingPos(sid).y == pos.y then return true end
local ret = 0
local ld = getCreatureLookDir(sid)
local dir = getDirectionTo(getThingPos(sid), pos)
local al = {
[NORTHEAST] = {NORTH, EAST},
[NORTHWEST] = {NORTH, WEST},
[sOUTHEAST] = {SOUTH, EAST},
[sOUTHWEST] = {SOUTH, WEST}}
if dir >= 4 and isInArray(al[dir], ld) then return true end
doChangeSpeed(sid, 1)
if dir == 4 then
ret = math.random(2, 3)
elseif dir == 5 then
ret = math.random(1, 2)
elseif dir == 6 then
local dirs = {0, 3}
ret = dirs[math.random(1, 2)]
elseif dir == 7 then
ret = math.random(0, 1)
else
ret = getDirectionTo(getThingPos(sid), pos)
end
doCreatureSetLookDir(sid, ret)
doChangeSpeed(sid, -1)
return true
end
function doCreatureAddCondition(cid, condition)
if not isCreature(cid) then return true end
doAddCondition(cid, condition)
end
function doCreatureRemoveCondition(cid, condition)
if not isCreature(cid) then return true end
doRemoveCondition(cid, condition)
end
function setCD(item, tipo, tempo)
if not tempo or not tonumber(tempo) then
doItemEraseAttribute(item, tipo)
return true
end
doItemSetAttribute(item, tipo, "cd:"..(tempo + os.time()).."")
return tempo + os.time()
end
function getCD(item, tipo, limite)
if not getItemAttribute(item, tipo) then
return 0
end
local string = getItemAttribute(item, tipo):gsub("cd:", "")
local number = tonumber(string) - os.time()
if number <= 0 then
return 0
end
if limite and limite < number then
return 0
end
return number
end
function doSendMoveEffect(cid, target, effect)
if not isCreature(cid) or not isCreature(target) then return true end
doSendDistanceShoot(getThingPos(cid), getThingPos(target), effect)
return true
end
function doSetItemActionId(uid, actionid)
doItemSetAttribute(uid, "aid", actionid)
return true
end
function threeNumbers(number)
if number <= 9 then
return "00"..number..""
elseif number <= 99 then
return "0"..number..""
end
return ""..number..""
end
function isBr(cid)
if getPlayerStorageValue(cid, 105505) ~= -1 then
return true
end
return false
end
function isBeingUsed(ball)
if not ball then return false end
for a, b in pairs (pokeballs) do --alterado v1.9
if b.use == ball then return true end
end
return false
end
function doRemoveTile(pos)-- Script by mock
pos.stackpos = 0
local sqm = getTileThingByPos(pos)
doRemoveItem(sqm.uid,1)
end
function doCreateTile(id,pos) -- By mock
doAreaCombatHealth(0,0,pos,0,0,0,CONST_ME_NONE)
doCreateItem(id,1,pos)
end
function hasSqm(pos)
local f = getTileThingByPos(pos)
if f.itemid ~= 0 and f.itemid ~= 1 then
return true
end
return false
end
function getPosDirs(p, dir) -- By MatheusMkalo
return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z}
end
function canWalkOnPos(pos, creature, pz, water, sqm, proj)
if not pos then return false end
if not pos.x then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid <= 1 and sqm then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 919 then return false end
if isInArray({4820, 4821, 4822, 4823, 4824, 4825}, getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false end
local n = not proj and 3 or 2 --alterado v1.6
for i = 0, 255 do
pos.stackpos = i
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and i ~= 253 and not isCreature(tile.uid) then --edited
if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
return false
end
end
end
return true
end
function canWalkOnPos2(pos, creature, pz, water, sqm, proj) --alterado v1.6
if not pos then return false end
if not pos.x then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid <= 1 and sqm then return false end
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 919 then return false end
if isInArray({4820, 4821, 4822, 4823, 4824, 4825}, getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false end
--[[local n = not proj and 3 or 2
for i = 0, 255 do
pos.stackpos = i --edited pra retirar um bug.. ;x
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and i ~= 253 and not isCreature(tile.uid) then --edited
if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
return false
end
end
end ]]
return true
end
function getFreeTile(pos, cid)
if canWalkOnPos(pos, true, false, true, true, false) then
return pos
end
local positions = {}
for a = 0, 7 do
if canWalkOnPos(getPosByDir(pos, a), true, false, true, true, false) then
table.insert(positions, pos)
end
end
if #positions >= 1 then
if isCreature(cid) then
local range = 1000
local ret = getThingPos(cid)
for b = 1, #positions do
if getDistanceBetween(getThingPos(cid), positions) < range then
ret = positions
range = getDistanceBetween(getThingPos(cid), positions)
end
end
return ret
else
return positions[math.random(#positions)]
end
end
return getThingPos(cid)
end
function isWalkable(pos, creature, proj, pz, water)-- by Nord
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
if isWater(getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false, true end
local n = not proj and 3 or 2
for i = 0, 255 do
pos.stackpos = i
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and not isCreature(tile.uid) then
if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
return false
end
end
end
return true
end
function isPlayerSummon(cid, uid)
return getCreatureMaster(uid) == cid --alterado v1.9
end
function isSummon(sid)
return isCreature(sid) and getCreatureMaster(sid) ~= sid and isPlayer(getCreatureMaster(sid)) --alterado v1.9
end
function getItemsInContainerById(container, itemid) -- Function By Kydrai
local items = {}
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getItemsInContainerById(item.uid, itemid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
else
if itemid == item.itemid then
table.insert(items, item.uid)
end
end
end
end
return items
end
function getPokeballsInContainer(container) -- Function By Kydrai
if not isContainer(container) then return {} end
local items = {}
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getPokeballsInContainer(item.uid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
elseif isPokeball(item.itemid) then
table.insert(items, item.uid)
end
end
end
return items
end
function getItensUniquesInContainer(container) --alterado v1.6
if not isContainer(container) then return {} end
local items = {}
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getItensUniquesInContainer(item.uid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
elseif getItemAttribute(item.uid, "unique") then
table.insert(items, item)
end
end
end
return items
end
function hasSpaceInContainer(container) --alterado v1.6
if not isContainer(container) then return false end
if getContainerSize(container) < getContainerCap(container) then return true end
for slot = 0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
if hasSpaceInContainer(item.uid) then
return true
end
end
end
return false
end
function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo
local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)
local piles = 0
if #item > 0 then
for i,x in pairs(item) do
if getThing(x).type < 100 then
local it = getThing(x)
doTransformItem(it.uid, itemid, it.type+quant)
if it.type+quant > 100 then
doPlayerAddItem(cid, itemid, it.type+quant-100)
end
else
piles = piles+1
end
end
else
return doPlayerAddItem(cid, itemid, quant)
end
if piles == #item then
doPlayerAddItem(cid, itemid, quant)
end
end
function createBallByStatus(cid, status, id)
slot = getPlayerSlotItem(cid, 8)
if slot.uid == 0 then
item = doPlayerAddItem(cid, id)
else
item = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, id, 1)
end
setStatusPokeballByStatusStr(item, status)
end
function getPokemonByName(cid, pokemon)
local arraypoke = {}
local container = getPlayerSlotItem(cid, 3).uid
local pokeballs = getPokeballsInContainer(container)
for i =1, #pokeballs do
name = getItemAttribute(pokeballs, "poke")
if pokemon == name then
table.insert(arraypoke, pokeballs)
return arraypoke[1]
end
end
return false
end
function tranfBallInShiny(pokeball)
doItemSetAttribute(pokeball, "shiny", "shiny")
return true
end
function getShinyByPokeball(pokeball)
local shiny = getItemAttribute(pokeball, "shiny")
return shiny == "shiny" and true or false
end
function getShinyNameByPokeball(pokeball)
local shiny = getItemAttribute(pokeball, "shiny")
return shiny and "Shiny "..getItemAttribute(pokeball, "poke").."" or getItemAttribute(pokeball, "poke")
end
function setStatusPokeballByStatusStr(pokeball, status)
local attr = string.explode(status, ",")
local x = {"poke", "hp", "offense", "defense", "speed", "vitality", "specialattack", "happy", "gender", "hands", "description", "fakedesc", "boost", "ball", "defeated", "shiny", "level"}
for i =1, #attr do
doItemSetAttribute(pokeball, x, attr)
end
end
function copieAllStatusBalls(pokeball)
local x = {"poke", "hp", "offense", "defense", "speed", "vitality", "specialattack", "happy", "gender", "hands", "description", "fakedesc", "boost", "ball", "defeated", "shiny", "level"}
str = ""
sep = ","
for i =1, #x do
local attr = getItemAttribute(pokeball, x) or 0
local t = attr ..sep
str = str..t
end
return str
end
function atualizaPokes(cid)
local item = getPlayerSlotItem(cid, 8)
if item.uid <= 0 then return true end
if not getItemAttribute(item.uid, "poke") then
return true
end
for i, x in pairs(fotos) do
if string.lower(getItemAttribute(item.uid, "poke")) == string.lower(i) then
doTransformItem(getPlayerSlotItem(cid, 7).uid, fotos)
if useOTClient then
doPlayerSendCancel(cid, '12//,show')
end
if useKpdoDlls then
doUpdateMoves(cid)
end
end
end
end
function doSendPokemon(cid, pokemon)
if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1
or getPlayerStorageValue(cid, 75846) >= 1 or getPlayerStorageValue(cid, 5700) >= 1 then --alterado v1.9 <<
return true
end
if exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) > 0 then return true end
if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then --alterado v1.6
if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 then
BackTeam(cid)
end
end
if #getCreatureSummons(cid) > 0 then
t = getPlayerSlotItem(cid, 8)
local btype = getPokeballType(t.itemid)
local effect = pokeballs[btype].effect or 21
doReturnPokemon(cid, getCreatureSummons(cid)[1], t,effect)
end
t = getPlayerSlotItem(cid, 8)
if t.uid ~= 0 then
pokeslot = getItemAttribute(t.uid, "poke")
if pokeslot == pokemon then
t = getPlayerSlotItem(cid, 8)
doGoPokemon(cid, t)
atualizaPokes(cid)
return true
end
if getPokemonByName(cid, pokemon) then
local poke = getPokemonByName(cid, pokemon)
local attr = copieAllStatusBalls(t.uid)
local id = t.itemid
doRemoveItem(t.uid)
local attr2 = copieAllStatusBalls(poke)
local id2 = getThing(poke).itemid
doRemoveItem(getPokemonByName(cid, pokemon))
createBallByStatus(cid, attr2, id2)
createBallByStatus(cid, attr, id)
t = getPlayerSlotItem(cid, 8)
doGoPokemon(cid, t)
atualizaPokes(cid)
return true
end
end
if getPokemonByName(cid, pokemon) then
local id = getThing(getPokemonByName(cid, pokemon)).itemid
local attr = copieAllStatusBalls(getPokemonByName(cid, pokemon))
doRemoveItem(getPokemonByName(cid, pokemon))
createBallByStatus(cid, attr, id)
t = getPlayerSlotItem(cid, 8)
doGoPokemon(cid, t)
atualizaPokes(cid)
return true
end
return false
end
function sendPokeInfo(cid)
local activeimg = true
local poke = getPlayerSlotItem(cid, 8)
local pokeslot = getItemAttribute(poke.uid, "poke")
local pokeboost = getItemAttribute(poke.uid, "boost") or 0
local pokehappy = getPlayerStorageValue(getCreatureSummons(cid)[1], 1008) or 1
doPlayerSendCancel(cid, "NewInfo/"..pokeslot.."/"..pokeboost.."/"..pokehappy.."")
if activeimg then
local img = "ShowPoke/"
doPlayerSendCancel(cid, img..pokeslot)
end
end
function sendAudio(cid, audio)
local function getSpectatorsFromArea(fromPosition, toPosition, multifloor)
local lenght = ((math.max(fromPosition.x, toPosition.x) - math.min(fromPosition.x, toPosition.x)) * 0.5) + 1
local width = ((math.max(fromPosition.y, toPosition.y) - math.min(fromPosition.y, toPosition.y)) * 0.5) + 1
if multifloor == true then
local ret = {}
for f = math.min(fromPosition.z, toPosition.z), math.max(fromPosition.z, toPosition.z) do
local tmp = getSpectators({x = math.min(fromPosition.x, toPosition.x) + lenght, y = math.min(fromPosition.y, toPosition.y) + width, z = f}, lenght, width, false)
for k = 1, #tmp do
table.insert(ret, tmp[k])
end
end
return ret
end
return getSpectators({x = math.min(fromPosition.x, toPosition.x) + lenght, y = math.min(fromPosition.y, toPosition.y) + width, z = fromPosition.z}, lenght, width, false)
end
local pos = getThingPos(cid)
local pos = getThingPos(cid)
local t = 5
local pos1 = {x = pos.x-t, y = pos.y-t, z = pos.z}
local pos2 = {x = pos.x+t, y = pos.y+t, z = pos.z}
for _, pid in pairs(getSpectatorsFromArea(pos1, pos2, true)) do
if isPlayer(pid) then
doPlayerSendCancel(pid, "Audio "..audio.."")
end
end
end
function doShowSelectChar(cid)
doPlayerSendCancel(cid, "ShowChar")
end
function doCloseSelectChar(cid)
doPlayerSendCancel(cid, "CloseChar")
end
function doShowLookPlayer(cid, target, msg)
doPlayerSendCancel(cid, "ShowLook/"..getPlayerStorageValue(target, 21121).."/"..msg.."")
end
function doCloseInfoPoke(cid)
local activeimg = true
doPlayerSendCancel(cid, "InfoClosed")
if activeimg then
local close = "ClosePoke"
doPlayerSendCancel(cid, close)
end
end
function sendAllPokemonsBarPoke(cid)
local container = getPlayerSlotItem(cid, 3).uid
local pokes = "Pokebar"
local t = getPlayerSlotItem(cid, 8)
if t.uid ~= 0 then
pokeslot = getItemAttribute(t.uid, "poke")
pokes = pokes.."/"..pokeslot..""
end
local pokeballs = getPokeballsInContainer(container)
for i =1, #pokeballs do
pokemons = getItemAttribute(pokeballs, "poke")
pokes = pokes.."/"..pokemons..""
end
doPlayerSendCancel(cid, pokes)
end
function addLevelAllpokes(cid, levelup)
local container = getPlayerSlotItem(cid, 3).uid
local pokes = "Parabens seus pokemons subiram de level"
local msg = ""
x = false
local t = getPlayerSlotItem(cid, 8)
local pokeballs = getPokeballsInContainer(container)
for i =1, #pokeballs do
pokemons = getItemAttribute(pokeballs, "poke")
local level = getItemAttribute(pokeballs, "level") and getItemAttribute(pokeballs, "level") or 1
local up = level+levelup
doItemSetAttribute(pokeballs, "level", up)
msg = msg..pokemons.." Subiu para o level "..up.."\n"
x = true
end
if t.uid ~= 0 then
pokeslot = getItemAttribute(t.uid, "poke")
local level = getItemAttribute(t.uid, "level") and getItemAttribute(t.uid, "level") or 1
local up = level+levelup
doItemSetAttribute(t.uid, "level", up)
msg = msg..pokeslot.." Subiu para o level "..up.."\n"
end
return doPlayerSendTextMessage(cid, 27, msg.."------------------------------------")
end

 

 

 

--EDIT--

Tinha colocado errado, tente esse agora

Edited by Soulviling
Link to post
Share on other sites

sigue dando el mismo error

 

mi servidor es sem level

 

[15/03/2014 17:41:29] [Error - TalkAction Interface]
[15/03/2014 17:41:29] data/talkactions/scripts/poke.lua:onSay
[15/03/2014 17:41:29] Description:
[15/03/2014 17:41:29] data/lib/034-exhaustion.lua:126: field 'day' missing in date table
[15/03/2014 17:41:29] stack traceback:
[15/03/2014 17:41:29] [C]: in function 'time'
[15/03/2014 17:41:29] data/lib/034-exhaustion.lua:126: in function 'get'
[15/03/2014 17:41:29] data/lib/some functions.lua:1742: in function 'doSendPokemon'
[15/03/2014 17:41:29] data/talkactions/scripts/poke.lua:13: in function <data/talkactions/scripts/poke.lua:1>


com a contagem do GOD não dá problemas, mas os jogadores estão dando problemas

Link to post
Share on other sites

tu colocou isso no some fuction?

 

 

function doSendPokemon(cid, pokemon)


if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 
or getPlayerStorageValue(cid, 75846) >= 1 or getPlayerStorageValue(cid, 5700) >= 1  then    --alterado v1.9 <<
return true                                                                                                                        
end

if exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) > 0 then return true end


if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then     --alterado v1.6
if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 then  
BackTeam(cid)       
end
end   

if #getCreatureSummons(cid) > 0 then
t = getPlayerSlotItem(cid, 8)
local btype = getPokeballType(t.itemid)
local effect = pokeballs[btype].effect or 21  

doReturnPokemon(cid, getCreatureSummons(cid)[1], t,effect)
end

t = getPlayerSlotItem(cid, 8)
if t.uid ~= 0 then
pokeslot = getItemAttribute(t.uid, "poke") 


if pokeslot == pokemon then
t = getPlayerSlotItem(cid, 8)
doGoPokemon(cid, t)
atualizaPokes(cid)
return true
end

if getPokemonByName(cid, pokemon) then
local poke = getPokemonByName(cid, pokemon)
local attr = copieAllStatusBalls(t.uid)
local id = t.itemid
doRemoveItem(t.uid)
local attr2 = copieAllStatusBalls(poke)
local id2 = getThing(poke).itemid
doRemoveItem(getPokemonByName(cid, pokemon))
createBallByStatus(cid, attr2, id2)
createBallByStatus(cid, attr, id)
t = getPlayerSlotItem(cid, 8)
doGoPokemon(cid, t)
atualizaPokes(cid)
return true
end
end


if getPokemonByName(cid, pokemon) then
local id = getThing(getPokemonByName(cid, pokemon)).itemid
local attr = copieAllStatusBalls(getPokemonByName(cid, pokemon))
doRemoveItem(getPokemonByName(cid, pokemon))
createBallByStatus(cid, attr, id)
t = getPlayerSlotItem(cid, 8)
doGoPokemon(cid, t)
atualizaPokes(cid)
return true
end
return false
end

 

 

Edited by Soulviling
Link to post
Share on other sites
  • 3 weeks later...
  • 3 weeks later...
  • 1 year later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.


    Administrador |  Diretor |  Coordenador |  Moderador |  Suporter |  Estagiário |  Herói
  • Similar Content

    • By Nightstar
      Tenho um scripting (mais precisamente um mod) de elo que recebe de acordo com seu frag. Queria saber se uma alma bondosa poderia me ajudar a adicionar bônus de acordo com o titulo que a pessoa tem.
      Exemplo: Titulo Calamidade +5 de ML
                     Titulo Lord Demônio +10 de ML
                     e etc

      Segue o mod: 

       
       
    • By Black Tall
      Servidor Novo Abril Hoje Olympus Global
      Site: olympus-global.sytes.net
      Versao: 12.5 Rate: 800x

      Venha Ser Top Level e se Divertir os Primeiros Ganham 1k de Coins so Falar com ADM!

      Sobre:
      Maioria das quests sem precisar de missão;
      Client Novo 12.51, login com e-mail;
      Novas Deep Desert;
      Bestiary;
      Charms;
      Novos Bosses;
      Issavi;
      Hirelings;
      Golden Outfit;
      Novas Falcons;
      Novas MOTA extension;
      Novas Deathlings;
      Daily Reward;
      Prey system;
      Novas Asuras;
      Quickloot;
      Exercise Training;
      Raids 100%;
      Monstros 100%;
      Trainer Offline 100%;
      Trainer Online 100%;
      Database Completa;
      War System 100%;
      Divirtam-se
    • By MarceloHeuheuheu
      Olá pessoal é com muita satisfação que eu venho apresentar-lhes o Avesta 063!
       
       
       
       
      Um OTServer oldschool desenvolvido por Exploit & Boman (OtLand) e liberado sobre a licença GNU com sua source code no google code, isso que é melhor, você poder ter acesso ao source code e modificar ao seu gosto!
       
       
       
       
       
      Source Code Google: https://code.google.com/p/avesta74/
       
       
       
       
       
      Download Avesta 7.60 Global Map: https://www.mediafir...3ook587w1t8sbwr
       
       
       
       
       
      Scan do download: https://www.virustot...sis/1398278014/ (Eu sei que tem bastante coisa no arquivo, a maioria eu pesquisei e são alertas falsos, estou rodando esse servidor no meu micro e jogando de boa, vai da sua conta e risco!!!)
       
       
       
       
       
      Download Tibia 7.60: https://clients.tibia...oad/windows/760
       
       
       
       
       
      IpChanger: https://static.otland.net/ipchanger.exe
       
       
       
       
       
       
       
       
      Espero que gostem pessoal!
       
       
       
       
       

       
       

       
       

       
       

       
    • By Hiquez
      Olá rapazeada do xtibia, estou tendo problemas em adaptar um script meu aqui para uma quest "sacrifice"
      estou precisando que uma action tenha uma tabela onde eu possa colocar varios itens diferentes, por exemplo: 1000, 1010, 10022 e outros
      preciso que a action verifique se há algum desses item em x Position, se algum desses item da tabela estiver na postion "x" então o item irá se transformar no item "2000"
      Obs: todos os itens da tabela devem se transformar no item "2000", se puder colocar pra aparecer um effect quando o item for transformado será ótimo
      o script precisa checar algum dos itens que existirá na tabela e se algum desses itens estiver la na position, então ele irá se transformar em "2000"
       
      Eu estava tentando adaptar o script da shovel mais não tive muito êxito, alguém poderia me ajudar por favor
      ?
      local holes = {468, 481, 483, 7932, 8579}
      local sand = {231, 9059}
      function onUse(cid, item, fromPosition, itemEx, toPosition)
          if(isInArray(holes, itemEx.itemid)) then
              local newId = itemEx.itemid + 1
              if(itemEx.itemid == 8579) then
                  newId = 8585
              end
              doTransformItem(itemEx.uid, newId)
              doDecayItem(itemEx.uid)
          elseif(isInArray(sand, itemEx.itemid)) then
              local rand = math.random(1, 100)
              if(itemEx.actionid  == 100 and rand <= 20) then
                  doTransformItem(itemEx.uid, 489)
                  doDecayItem(itemEx.uid)
              elseif(rand >= 1 and rand <= 5) then
                  doCreateItem(2159, 1, toPosition)
              elseif(rand > 85) then
                  doCreateMonster("Scarab", toPosition, false)
              end
              doSendMagicEffect(toPosition, CONST_ME_POFF)
          end
          return true
      end
       
      Esse é o script da shovel se caso puder ajudar, agradeço desde ja! ❤️ 
    • By saddnl
      Versão do Servidor: TFS - 1.0 Tipo de Script: actions Código:  
       
       
      Guys, recentemente inseri o sistema de Refiner feito pelo Oneshot (https://xtibia.com/forum/topic/187075-perfect-upgrade-system/) 
      O sistema funcionou perfeitamente, eu inseri 3 refiners no server e todos funcionaram. Porém, nenhum dos 3 que eu inseri acabam. Quando uso o item ele continua na mesma quantidade.
       
      LIB
       
       
      ACTION