outbreaks 1 Postado Novembro 10, 2013 Share Postado Novembro 10, 2013 SERVER E "PDA" Gente eu n conseguir concerta 2 bug vir recorrer a vcs 1º - no começo do jogo, quando player fala com npc, e clica no bau n e teleportado 2º - sempre da erro quando da look no player [erro] [09/11/2013 22:36:47] [Error - CreatureScript Interface][09/11/2013 22:36:47] data/creaturescripts/scripts/look.lua:onLook[09/11/2013 22:36:47] Description:[09/11/2013 22:36:47] data/lib/some functions.lua:53: attempt to concatenate a boolean value[09/11/2013 22:36:47] stack traceback:[09/11/2013 22:36:47] data/lib/some functions.lua:53: in function 'getPlayerDesc'[09/11/2013 22:36:47] data/creaturescripts/scripts/look.lua:136: in function as script sao : look local NPCBattle = {["Brock"] = {artig = "He is", cidbat = "Pewter"},["Misty"] = {artig = "She is", cidbat = "Cerulean"},["Blaine"] = {artig = "He is", cidbat = "Cinnabar"},["Sabrina"] = {artig = "She is", cidbat = "Saffron"}, --alterado v1.9 \/ peguem tudo!["Kira"] = {artig = "She is", cidbat = "Viridian"},["Koga"] = {artig = "He is", cidbat = "Fushcia"},["Erika"] = {artig = "She is", cidbat = "Celadon"},["Surge"] = {artig = "He is", cidbat = "Vermilion"},}function onLook(cid, thing, position, lookDistance)local str = {}if not isCreature(thing.uid) thenlocal iname = getItemInfo(thing.itemid)if isPokeball(thing.itemid) and getItemAttribute(thing.uid, "poke") thenunLock(thing.uid)local lock = getItemAttribute(thing.uid, "lock")local pokename = getItemAttribute(thing.uid, "poke")table.insert(str, "You see "..iname.article.." "..iname.name..".")if getItemAttribute(thing.uid, "unique") thentable.insert(str, " It's an unique item.")endif pokesPrice[pokename] thentable.insert(str, "\nIt contains "..getArticle(pokename).." "..pokename..". Price: $"..pokesPrice[pokename].price..".\n")elsetable.insert(str, "\nIt contains "..getArticle(pokename).." "..pokename..". Price: unsellable.\n")endif lock and lock > 0 thentable.insert(str, "It will unlock in ".. os.date("%d/%m/%y %X", lock)..".\n")endlocal boost = getItemAttribute(thing.uid, "boost") or 0if boost > 0 thentable.insert(str, "Boost level: +"..boost..".\n")endif getItemAttribute(thing.uid, "nick") thentable.insert(str, "It's nickname is: "..getItemAttribute(thing.uid, "nick")..".\n")endif getItemAttribute(thing.uid, "gender") == SEX_MALE thentable.insert(str, "It is male.")elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE thentable.insert(str, "It is female.")elsetable.insert(str, "It is genderless.")enddoPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))return falseelseif string.find(iname.name, "fainted") or string.find(iname.name, "defeated") thentable.insert(str, "You see a "..string.lower(iname.name)..". ")if isContainer(thing.uid) thentable.insert(str, "(Vol: "..getContainerCap(thing.uid)..")")endtable.insert(str, "\n")if getItemAttribute(thing.uid, "gender") == SEX_MALE thentable.insert(str, "It is male.")elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE thentable.insert(str, "It is female.")elsetable.insert(str, "It is genderless.")enddoPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))return falseelseif isContainer(thing.uid) then --containersif iname.name == "dead human" and getItemAttribute(thing.uid, "pName") thentable.insert(str, "You see a dead human (Vol:"..getContainerCap(thing.uid).."). ")table.insert(str, "You recognize ".. getItemAttribute(thing.uid, "pName")..". ".. getItemAttribute(thing.uid, "article").." was killed by a ")table.insert(str, getItemAttribute(thing.uid, "attacker")..".")elsetable.insert(str, "You see "..iname.article.." "..iname.name..". (Vol:"..getContainerCap(thing.uid)..").")endif getPlayerGroupId(cid) >= 4 and getPlayerGroupId(cid) <= 6 thentable.insert(str, "\nItemID: ["..thing.itemid.."]")local pos = getThingPos(thing.uid)table.insert(str, "\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]")enddoPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))return falseelseif getItemAttribute(thing.uid, "unique") thenlocal p = getThingPos(thing.uid)table.insert(str, "You see ")if thing.type > 1 thentable.insert(str, thing.type.." "..iname.plural..".")elsetable.insert(str, iname.article.." "..iname.name..".")endtable.insert(str, " It's an unique item.\n"..iname.description)if getPlayerGroupId(cid) >= 4 and getPlayerGroupId(cid) <= 6 thentable.insert(str, "\nItemID: ["..thing.itemid.."]")table.insert(str, "\nPosition: ["..p.x.."]["..p.y.."]["..p.z.."]")endsendMsgToPlayer(cid, MESSAGE_INFO_DESCR, table.concat(str))return falseelsereturn trueendendlocal npcname = getCreatureName(thing.uid)if ehNPC(thing.uid) and NPCBattle[npcname] then --npcs dueltable.insert(str, "You see "..npcname..". "..NPCBattle[npcname].artig.." leader of the gym from "..NPCBattle[npcname].cidbat..".")doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))return falseendif getPlayerStorageValue(thing.uid, 697548) ~= -1 thentable.insert(str, getPlayerStorageValue(thing.uid, 697548))local pos = getThingPos(thing.uid)if youAre[getPlayerGroupId(cid)] thentable.insert(str, "\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]")enddoPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))return falseendif not isPlayer(thing.uid) and not isMonster(thing.uid) then --outros npcstable.insert(str, "You see "..getCreatureName(thing.uid)..".")doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))return falseendif isPlayer(thing.uid) then --playerdoPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, getPlayerDesc(cid, thing.uid, false))return falseendif getCreatureName(thing.uid) == "Evolution" then return false endif not isSummon(thing.uid) then --monstrostable.insert(str, "You see a wild "..string.lower(getCreatureName(thing.uid))..".\n")table.insert(str, "Hit Points: "..getCreatureHealth(thing.uid).." / "..getCreatureMaxHealth(thing.uid)..".\n")if getPokemonGender(thing.uid) == SEX_MALE thentable.insert(str, "It is male.")elseif getPokemonGender(thing.uid) == SEX_FEMALE thentable.insert(str, "It is female.")elsetable.insert(str, "It is genderless.")enddoPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))return falseelseif isSummon(thing.uid) and not isPlayer(thing.uid) then --summonslocal boostlevel = getItemAttribute(getPlayerSlotItem(getCreatureMaster(thing.uid), 8).uid, "boost") or 0if getCreatureMaster(thing.uid) == cid thenlocal myball = getPlayerSlotItem(cid, 8).uidtable.insert(str, "You see your "..string.lower(getCreatureName(thing.uid))..".")if boostlevel > 0 thentable.insert(str, "\nBoost level: +"..boostlevel..".")endtable.insert(str, "\nHit points: "..getCreatureHealth(thing.uid).."/"..getCreatureMaxHealth(thing.uid)..".")table.insert(str, "\n"..getPokemonHappinessDescription(thing.uid))doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))elsedoPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You see a "..string.lower(getCreatureName(thing.uid))..".\nIt belongs to "..getCreatureName(getCreatureMaster(thing.uid))..".")endreturn falseendreturn trueend some functions function unLock(ball) --alterado v1.8 \/\/ peguem ele todo!if not ball or ball <= 0 then return false endif getItemAttribute(ball, "lock") and getItemAttribute(ball, "lock") > 0 thenlocal vipTime = getItemAttribute(ball, "lock")local timeNow = os.time()local days = math.ceil((vipTime - timeNow)/(24 * 60 * 60))if days <= 0 thendoItemEraseAttribute(ball, "lock")doItemEraseAttribute(ball, "unique")return trueendendreturn falseendfunction getGuildMembersOnline(GuildId)local players = {}for _, pid in pairs(getPlayersOnline()) doif getPlayerGuildId(pid) == tonumber(GuildId) thentable.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) thenrepeattable.insert(players,query:getDataString("name"))until not query:next() --by Vodkartquery: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 enddoPlayerSendTextMessage(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) --alterado v1.8local art = thing == cid and "You are" or (getPlayerSex(thing) == 0 and "She is" or "He is")local str = "You see "..name..". "..art.." "if youAre[getPlayerGroupId(thing)] thenstr = str..""..(ocup).." and "..rank.." from ".. getTownName(getPlayerTown(thing)).."."elsestr = str..""..(rank).." from ".. getTownName(getPlayerTown(thing)).."."endif getPlayerGuildId(thing) > 0 thenstr = str.." "..art.." "..getPlayerGuildRank(thing).." from the "..getPlayerGuildName(thing).."."endif TV thenstr = str.." "..art.." watching TV."endstr = str..""..((isPlayer(cid) and youAre[getPlayerGroupId(cid)]) and "\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]" or "") --alterado v1.8return strend------------------------------------------------------------------------------------------------- /\/\function getLivePokeballs(cid, container, duel)if not isCreature(cid) then return {} endif not isContainer(container) then return {} endlocal items = {}---local ballSlot = getPlayerSlotItem(cid, 8)if ballSlot.uid ~= 0 thenfor a, b in pairs (pokeballs) doif ballSlot.itemid == b.on or ballSlot.itemid == b.use thenif duel and getPlayerLevel(cid) >= (pokes[getItemAttribute(ballSlot.uid, "poke")].level + getPokeballBoost(ballSlot)) thentable.insert(items, ballSlot.uid) --alterado v1.8elseif not duel thentable.insert(items, ballSlot.uid)endendendend---if isContainer(container) and getContainerSize(container) > 0 thenfor slot=0, (getContainerSize(container)-1) dolocal item = getContainerItem(container, slot)if isContainer(item.uid) thenlocal itemsbag = getPokeballsInContainer(item.uid)for i=0, #itemsbag doif not isInArray(items, itemsbag) thentable.insert(items, itemsbag)endendelseif isPokeball(item.itemid) thenfor a, b in pairs (pokeballs) doif item.itemid == b.on thenif duel and getPlayerLevel(cid) >= (pokes[getItemAttribute(item.uid, "poke")].level + getPokeballBoost(item)) thentable.insert(items, item.uid) --alterado v1.8elseif not duel thentable.insert(items, item.uid)endendendendendendreturn itemsendfunction addItemInFreeBag(container, item, num)if not isContainer(container) then return false endif not item then return false endif not num then num = 1 end --alterado v1.6.1if getContainerSize(container) < getContainerCap(container) thenreturn doAddContainerItem(container, item, num)elsefor slot = 0, (getContainerSize(container)-1) dolocal container2 = getContainerItem(container, slot)if isContainer(container2.uid) and getContainerSize(container2.uid) < getContainerCap(container2.uid) thenreturn doAddContainerItem(container2.uid, item, num)endendendreturn falseend------------------------------------------------------------------------------------------------------function pokeHaveReflect(cid)if not isCreature(cid) then return false endlocal table = getTableMove(cid, "Reflect")if table and table.name then --alterado v1.6return trueendreturn falseend------------------------------------------------------------------------------------------------------function nextHorario(cid)horarioAtual = os.date("%X")horario = string.explode(horarioAtual, ":")for i = 1, #horas dohorarioComparacao = horashorarioComp = string.explode(horarioComparacao, ":")---------------if tonumber(horarioComp[1]) > tonumber(horario[1]) thenreturn horarioComparacao --alterado v1.3elseif tonumber(horarioComp[1]) == tonumber(horario[1]) and tonumber(horario[2]) < tonumber(horarioComp[2]) thenreturn horarioComparacaoendendreturn horas[1] --alterado v1.3endfunction getTimeDiff(timeDiff)local dateFormat = {{'hour', timeDiff / 60 / 60}, --6%{'min', timeDiff / 60 % 60},}local out = {} --alterado v1.3for k, t in ipairs(dateFormat) dolocal v = math.floor(t[2])if(v > -1) thentable.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 thenreturn "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) dolocal v = math.floor(t[2])if(v > 0) thentable.insert(out, (k < #dateFormat and ' ' or ' and ') .. v .. '' .. (v <= 1 and t[1] or t[1].."s"))endendreturn table.concat(out)endfunction 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}--- --alterado v1.3comparacao = t1-tif hComp < hAtual thenv = 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 thenfor c = 1, 15 do --alterado v1.5local str = "cm_move"..csetCD(item, str, 0)endendendfunction ehNPC(cid)if isCreature(cid) and not isPlayer(cid) and not isSummon(cid) and not isMonster(cid) thenreturn trueend --alterado v1.5return falseendfunction ehMonstro(cid)if not isPlayer(cid) and not isSummon(cid) and not isNpc(cid) thenreturn trueend --function pro exp.lua...return falseendfunction doAppear(cid) --Faz um poke q tava invisivel voltar a ser visivel...if not isCreature(cid) then return true enddoRemoveCondition(cid, CONDITION_INVISIBLE)doRemoveCondition(cid, CONDITION_OUTFIT)doCreatureSetHideHealth(cid, false)if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" thenif isSummon(cid) thenlocal item = getPlayerSlotItem(getCreatureMaster(cid), 8)doSetCreatureOutfit(cid, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1) --alterado v1.6.1endendendfunction 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 thenreturn trueendreturn falseendfunction getThingFromPosWithProtect(pos) --Pega uma creatura numa posiçao com proteçoesif hasTile(pos) thenif isCreature(getRecorderCreature(pos)) thenreturn getRecorderCreature(pos)elsepos.stackpos = 253pid = getThingfromPos(pos).uidendelsepid = getThingfromPos({x=1,y=1,z=10,stackpos=253}).uidendreturn pidendfunction getTileThingWithProtect(pos) --Pega um TILE com proteçoesif hasTile(pos) thenpos.stackpos = 0pid = getTileThingByPos(pos)elsepid = 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--alterado v1.6.1 Party system agora eh simplismente party system kk---- --alterado v1.6 duel systemif getPlayerStorageValue(master1, 6598754) >= 5 and getPlayerStorageValue(master2, 6598754) >= 5 thenif getPlayerStorageValue(master1, 6598754) ~= getPlayerStorageValue(master2, 6598754) thenif isDuelingAgainst(master1, master2) then --alterado v1.8if isSummon(cid) and isPlayer(pid) thenreturn "Cant"elsereturn "Can"endendendend---- pvp systemif getPlayerStorageValue(master1, 6598754) >= 1 and getPlayerStorageValue(master2, 6598755) >= 1 thenreturn "Can"endif getPlayerStorageValue(master1, 6598755) >= 1 and getPlayerStorageValue(master2, 6598754) >= 1 then ---estar em times diferentesreturn "Can"end----if ehMonstro(cid) or ehMonstro(pid) thenreturn "Can"endreturn "Cant"endfunction stopNow(cid, time) --function q faz o poke/player ficar imovel por um tempoif not isCreature(cid) then return true endif isSleeping(cid) then return true endlocal speed = getCreatureSpeed(cid)if isPlayer(cid) thenmayNotMove(cid, true)addEvent(mayNotMove, time, cid, false)elsedoChangeSpeed(cid, -speed)addEvent(doRegainSpeed, time, cid)endendfunction 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 thensetPlayerStorageValue(cid, 1001, A - off)endif def > 0 thensetPlayerStorageValue(cid, 1002, B - def)endif agi > 0 thensetPlayerStorageValue(cid, 1003, C - agi)if getCreatureSpeed(cid) ~= 0 thendoRegainSpeed(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 thensetPlayerStorageValue(cid, 1001, A * off)endif def > 0 thensetPlayerStorageValue(cid, 1002, B * def)endif agi > 0 thensetPlayerStorageValue(cid, 1003, C + agi)if getCreatureSpeed(cid) ~= 0 thendoRegainSpeed(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) thenlocal summon = getCreatureSummons(cid) --alterado v1.6for i = 2, #summon dodoSendMagicEffect(getThingPos(summon), 211)doRemoveCreature(summon)endsetPlayerStorageValue(cid, 637501, -1)endendfunction choose(...) -- by mocklocal arg = {...}return arg[math.random(1,#arg)]endfunction AddPremium(cid, days)local function removerPlayer(cid)if isCreature(cid) thendoRemoveCreature(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)if not isCreature(cid) thenreturn falseendif string.find(tostring(getCreatureName(cid)), "Shiny") thenreturn trueendreturn falseendfunction isShinyName(name) --verifica se um nome tem a palavra "Shiny" nele...if string.find(tostring(name), "Shiny") thenreturn trueendreturn falseendfunction 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"},}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",}if t[stoneID] thenreturn t[stoneID]elsereturn ""endendfunction isStone(id)if id >= leaf and id <= ice thenreturn trueendif id == 12232 or id == 12242 or id == 12244 or id == 12245 thenreturn true --alterado v1.7 com as stones shinys tb soh pra garantir.. ^^endif (id >= sfire and id <= searth) or id == 12417 or id == 12419 thenreturn trueendreturn falseendfunction isWater(id)if id >= 4820 and id <= 4825 thenreturn trueendreturn falseendfunction getTopCorpse(position)local pos = positionfor n = 1, 255 dopos.stackpos = nlocal item = getTileThingByPos(pos)if item.itemid >= 2 and (string.find(getItemNameById(item.itemid), "fainted ") or string.find(getItemNameById(item.itemid), "defeated ")) thenreturn getTileThingByPos(pos)endendreturn nullendbpslot = CONST_SLOT_BACKPACKfunction hasPokemon(cid)if not isCreature(cid) then return false endif getCreatureMana(cid) <= 0 then return false endif #getCreatureSummons(cid) >= 1 then return true endlocal item = getPlayerSlotItem(cid, CONST_SLOT_FEET)local bp = getPlayerSlotItem(cid, bpslot)for a, b in pairs (pokeballs) doif item.itemid == b.on or item.itemid == b.use thenreturn true --alterado v1.4endif #getItemsInContainerById(bp.uid, b.on) >= 1 thenreturn trueendendreturn falseendfunction isNpcSummon(cid)return isNpc(getCreatureMaster(cid))endfunction getPokemonHappinessDescription(cid)if not isCreature(cid) then return true endlocal str = ""if getPokemonGender(cid) == SEX_MALE thenstr = "He"elseif getPokemonGender(cid) == SEX_FEMALE thenstr = "She"elsestr = "It"endlocal h = getPlayerStorageValue(cid, 1008)if h >= tonumber(getConfigValue('PokemonStageVeryHappy')) thenstr = str.." is very happy with you!"elseif h >= tonumber(getConfigValue('PokemonStageHappy')) thenstr = str.." is happy."elseif h >= tonumber(getConfigValue('PokemonStageOK')) thenstr = str.." is unhappy."elseif h >= tonumber(getConfigValue('PokemonStageSad')) thenstr = str.." is sad."elseif h >= tonumber(getConfigValue('PokemonStageMad')) thenstr = str.." is mad."elsestr = str.." is very mad at you!"endreturn strendfunction doSetItemAttribute(item, key, value)doItemSetAttribute(item, key, value)endfunction deTransform(cid, check)if not isCreature(cid) then return true endlocal m = getCreatureMaster(cid)local p = getPlayerSlotItem(m, 8)if getItemAttribute(p.uid, "transTurn") ~= check then return true endsetPlayerStorageValue(cid, 1010, getCreatureName(cid) == "Ditto" and "Ditto" or "Shiny Ditto") --editeddoRemoveCondition(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)if getPlayerStorageValue(cid, 1010) == "Ditto" or getPlayerStorageValue(cid, 1010) == "Shiny Ditto" thenreturn false --editedelsereturn trueendendfunction 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 thenreturn trueendreturn falseendfunction doPlayerSendTextWindow(cid, p1, p2)if not isCreature(cid) then return true endlocal item = 460local text = ""if type(p1) == "string" thendoShowTextDialog(cid, item, p1)elsedoShowTextDialog(cid, p1, p2)endendfunction getClockString(tw)local a = getWorldTime()local b = a / 60local hours = math.floor(b)local minut = a - (60 * hours)if not tw thenif hours < 10 thenhours = "0"..hours..""endif minut < 10 thenminut = "0"..minut..""endreturn hours..":"..minutelselocal sm = "a.m"if hours >= 12 thenhours = hours - 12sm = "p.m"endif hours < 10 thenhours = "0"..hours..""endif minut < 10 thenminut = "0"..minut..""endreturn hours..":"..minut.." "..smendendfunction doCorrectPokemonName(poke)return doCorrectString(poke)endfunction doCorrectString(poke)local name = ""local n = string.explode(poke, " ")local str = string.sub(n[1], 1, 1)local sta = string.sub(n[1], 2, string.len(n[1]))name = ""..string.upper(str)..""..string.lower(sta)..""if n[2] thenstr = string.sub(n[2], 1, 1)sta = string.sub(n[2], 2, string.len(n[2]))name = name.." "..string.upper(str)..""..string.lower(sta)..""endif n[3] thenstr = string.sub(n[3], 1, 1)sta = string.sub(n[3], 2, string.len(n[3]))name = name.." "..string.upper(str)..""..string.lower(sta)..""endreturn nameendfunction getHappinessRate(cid)if not isCreature(cid) then return 1 endlocal a = getPlayerStorageValue(cid, 1008)if a == -1 then return 1 endif a >= getConfigValue('PokemonStageVeryHappy') thenreturn happinessRate[5].rateelseif a >= getConfigValue('PokemonStageHappy') thenreturn happinessRate[4].rateelseif a >= getConfigValue('PokemonStageOK') thenreturn happinessRate[3].rateelseif a >= getConfigValue('PokemonStageSad') thenreturn happinessRate[2].rateelsereturn happinessRate[1].rateendreturn 1endfunction doBodyPush(cid, target, go, pos)if not isCreature(cid) or not isCreature(target) thendoRegainSpeed(cid)doRegainSpeed(target)return trueendif go thenlocal a = getThingPos(cid)doChangeSpeed(cid, -getCreatureSpeed(cid))if not isPlayer(target) thendoChangeSpeed(target, -getCreatureSpeed(target))enddoChangeSpeed(cid, 800)doTeleportThing(cid, getThingPos(target))doChangeSpeed(cid, -800)addEvent(doBodyPush, 350, cid, target, false, a)elsedoChangeSpeed(cid, 800)doTeleportThing(cid, pos)doRegainSpeed(cid)doRegainSpeed(target)endendfunction doReturnPokemon(cid, pokemon, pokeball, effect, hideeffects, blockevo)--////////////////////////////////////////////////////////////////////////////////////////--checkDuel(cid) --alterado v1.6 duel system--////////////////////////////////////////////////////////////////////////////////////////--if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then --alterado v1.6if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 thenBackTeam(cid)endend-----------------local edit = trueif not pokeball thenpokeball = getPlayerSlotItem(cid, 8)endif blockevo thenedit = falsedoPlayerSendCancel(cid, "Your pokemon couldn't evolve due to server mistakes, please wait until we fix the problem.")endlocal happy = getPlayerStorageValue(pokemon, 1008)local hunger = getPlayerStorageValue(pokemon, 1009)local pokelife = (getCreatureHealth(pokemon) / getCreatureMaxHealth(pokemon))if edit thendoItemSetAttribute(pokeball.uid, "happy", happy)doItemSetAttribute(pokeball.uid, "hunger", hunger)doItemSetAttribute(pokeball.uid, "hp", pokelife)endif getCreatureName(pokemon) == "Ditto" thenif isTransformed(pokemon) thenlocal left = getItemAttribute(pokeball.uid, "transLeft") - (os.clock() - getItemAttribute(pokeball.uid, "transBegin"))doItemSetAttribute(pokeball.uid, "transLeft", left)endendif hideeffects thendoRemoveCreature(pokemon)return trueendlocal pokename = getPokeName(pokemon)local mbk = gobackmsgs[math.random(1, #gobackmsgs)].back:gsub("doka", pokename)if getCreatureCondition(cid, CONDITION_INFIGHT) thenif isCreature(getCreatureTarget(cid)) thendoItemSetAttribute(pokeball.uid, "happy", happy - 5)elsedoItemSetAttribute(pokeball.uid, "happy", happy - 2)endenddoTransformItem(pokeball.uid, pokeball.itemid-1)doCreatureSay(cid, mbk, TALKTYPE_SAY)doSendMagicEffect(getCreaturePosition(pokemon), effect)doRemoveCreature(pokemon)unLock(pokeball.uid) --alterado v1.8if useOTClient thendoPlayerSendCancel(cid, '12//,hide') --alterado v1.7endif useKpdoDlls thendoUpdateMoves(cid)endendlocal EFFECTS = {--[OutfitID] = {Effect}["Magmar"] = 35, --alterado v1.5["Jynx"] = 17,["Shiny Jynx"] = 17,["Piloswine"] = 205, --alterado v1.8["Swinub"] = 205,}function doGoPokemon(cid, item)if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 thenreturn trueend---------------------------------------------------------------local ballName = getItemAttribute(item.uid, "poke")btype = getPokeballType(item.itemid)local effect = pokeballs[btype].effectif not effect theneffect = 21end-----------------------------------------------------------------if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid thendoPlayerSendCancel(cid, "You must put your pokeball in the correct place!")return TRUEendlocal thishp = getItemAttribute(item.uid, "hp")if thishp <= 0 thenif isInArray(pokeballs[btype].all, item.itemid) thendoTransformItem(item.uid, pokeballs[btype].off)doItemSetAttribute(item.uid, "hp", 0)doPlayerSendCancel(cid, "This pokemon is fainted.")return trueendendlocal pokemon = getItemAttribute(item.uid, "poke")if not pokes[pokemon] thenreturn trueend----------------------- 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)) thenlocal bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK)local lowPokes = {"Rattata", "Caterpie", "Weedle", "Oddish", "Pidgey", "Paras", "Poliwag", "Bellsprout", "Magikarp", "Hoppip", "Sunkern"}local low = {}local lw = 1for e, f in pairs(pokeballs) dofor times = 1, 3 dolocal items = getItemsInContainerById(bp.uid, pokeballs[e].all[times])if #items >= 1 then --alterado v1.6for _, uid in pairs(items) dolocal nome1 = getItemAttribute(uid, "poke")if not isInArray(lowPokes, pokemon) and nome1 == pokemon thenreturn doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry more than two pokemons equals!")elseif isInArray(lowPokes, pokemon) thenif nome1 == pokemon thentable.insert(low, lw, nome1)lw = lw +1endendendendendendif #low >= 3 thenreturn doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry more than three pokemons equals of low level!")endend---------------------------------------------------------------------------------------------------------------------------------------------------local x = pokes[pokemon]local boosts = getItemAttribute(item.uid, "boost") or 0if getPlayerLevel(cid) < (x.level + boosts) then --alterado v1.8 \/doPlayerSendCancel(cid, "You need level "..(x.level + boosts).." to use this pokemon.")return trueend--------------------------------------------------------------------------------------shinysClan = {["Shiny Fearow"] = {4, "Wingeon"},["Sper Fearow"] = {4, "Wingeon"},["Shiny Flareon"] = {1, "Volcanic"},["Esparta Flareon"] = {1, "Volcanic"},["Shiny Vaporeon"] = {2, "Seavel"},["Esparta Vaporeon"] = {2, "Seavel"},["Shiny Jolteon"] = {9, "Raibolt"},["Esparta Jolteon"] = {9, "Raibolt"},["Shiny Hypno"] = {7, "Psycraft"},["Shiny Golem"] = {3, "Orebound"},["Espinho Golem"] = {3, "Orebound"},["Shiny Vileplume"] = {8, "Naturia"},["Shiny Nidoking"] = {5, "Malefic"},["Tanker Nidoking"] = {5, "Malefic"},["Shiny Hitmontop"] = {6, "Gardestrike"},["Shiny Hitmonlee"] = {6, "Gardestrike"},["Shiny Hitmonchan"] = {6, "Gardestrike"},--alterado v1.4}if shinysClan[pokemon] and (getPlayerGroupId(cid) < 3 or getPlayerGroupId(cid) > 6) thenif getPlayerStorageValue(cid, 86228) ~= shinysClan[pokemon][1] thendoPlayerSendCancel(cid, "You need be a member of the clan "..shinysClan[pokemon][2].." to use this pokemon!")return trueelseif getPlayerStorageValue(cid, 862281) ~= 5 thendoPlayerSendCancel(cid, "You need be atleast rank 5 to use this pokemon!")return trueendend--------------------------------------------------------------------------------------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" thenif getItemAttribute(getPlayerSlotItem(cid, 8).uid, "hands") thendoSetCreatureOutfit(pk, {lookType = hitmonchans[nameHIT][hands].out}, -1)elsedoPlayerSendTextMessage(cid, 27, "Contact a GameMaster! Error in passive system! Attribute \"hands\" missing")endendend----------------------------------------------------------------------------------movement magmar, jynx-------------if EFFECTS[getCreatureName(pk)] then --alterado v1.5markPosEff(pk, getThingPos(pk))sendMovementEffect(pk, EFFECTS[getCreatureName(pk)], getThingPos(pk)) --alterado v1.5end--------------------------------------------------------------------------if getCreatureName(pk) == "Ditto" thenlocal left = getItemAttribute(item.uid, "transLeft")local name = getItemAttribute(item.uid, "transName")if left and left > 0 thensetPlayerStorageValue(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())elsesetPlayerStorageValue(pk, 1010, "Ditto")endendif isGhostPokemon(pk) then doTeleportThing(pk, getPosByDir(getThingPos(cid), math.random(0, 7)), false) enddoCreatureSetLookDir(pk, 2)adjustStatus(pk, item.uid, true, true, true)doAddPokemonInOwnList(cid, pokemon)doTransformItem(item.uid, item.itemid+1)local pokename = getPokeName(pk) --alterado v1.7local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", pokename)doCreatureSay(cid, mgo, TALKTYPE_SAY)doSendMagicEffect(getCreaturePosition(pk), effect)unLock(item.uid) --alterado v1.8if useKpdoDlls thendoUpdateMoves(cid)endendfunction doRegainSpeed(cid)if not isCreature(cid) then return true endif isPlayer(cid) or ehNPC(cid) then --alterado v1.7 \/doChangeSpeed(cid, -getCreatureSpeed(cid))local speed = PlayerSpeedif isPlayer(cid) and isInArray({4, 5, 6}, getPlayerGroupId(cid)) thenspeed = 150*getPlayerGroupId(cid)endif getCreatureCondition(cid, CONDITION_PARALYZE) == true thendoRemoveCondition(cid, CONDITION_PARALYZE)addEvent(doAddCondition, 10, cid, paralizeArea2)enddoChangeSpeed(cid, speed)return speedendlocal speed = getSpeed(cid)if speed > 1500 then speed = 1500 enddoChangeSpeed(cid, -getCreatureSpeed(cid))if getCreatureCondition(cid, CONDITION_PARALYZE) == true thendoRemoveCondition(cid, CONDITION_PARALYZE)addEvent(doAddCondition, 10, cid, paralizeArea2)enddoChangeSpeed(cid, speed)return speedendfunction isPosEqualPos(pos1, pos2, checkstackpos)if pos1.x ~= pos2.x or pos1.y ~= pos2.y and pos1.z ~= pos2.z thenreturn falseendif checkstackpos and pos1.stackpos and pos2.stackpos and pos1.stackpos ~= pos2.stackpos thenreturn falseendreturn trueendfunction getRandomGenderByName(name)local rate = newpokedex[name]if not rate then return 0 endrate = rate.genderif rate == 0 thengender = 3elseif rate == 1000 thengender = 4elseif rate == -1 thengender = 0elseif math.random(1, 1000) <= rate thengender = 4elsegender = 3endreturn genderendfunction getRecorderPlayer(pos, cid)local ret = 0if cid and getThingPos(cid).x == pos.x and getThingPos(cid).y == pos.y thenreturn cidendlocal s = {}s.x = pos.xs.y = pos.ys.z = pos.zfor a = 0, 255 dos.stackpos = alocal b = getTileThingByPos(s).uidif b > 1 and isPlayer(b) and getCreatureOutfit(b).lookType ~= 814 thenret = bendendreturn retendfunction getRecorderCreature(pos, cid)local ret = 0if cid and getThingPos(cid).x == pos.x and getThingPos(cid).y == pos.y thenreturn cidendlocal s = {}s.x = pos.xs.y = pos.ys.z = pos.zfor a = 0, 255 dos.stackpos = alocal b = getTileThingByPos(s).uidif b > 1 and isCreature(b) and getCreatureOutfit(b).lookType ~= 814 thenret = bendendreturn retendfunction doCreatureSetOutfit(cid, outfit, time)doSetCreatureOutfit(cid, outfit, time)endfunction doMagicalFlower(cid, away)if not isCreature(cid) then return true endfor x = -3, 3 dofor y = -3, 3 dolocal a = getThingPos(cid)a.x = a.x + xa.y = a.y + yif away thendoSendDistanceShoot(a, getThingPos(cid), 21)elsedoSendDistanceShoot(getThingPos(cid), a, 21)endendendendfunction isItemPokeball(item)if not item then return false endfor a, b in pairs (pokeballs) doif isInArray(b.all, item) then return true endendreturn falseendfunction isPokeball(item)if not item then return false endif item >= 11826 and item <= 11837 thenreturn trueendif item >= 11737 and item <= 11748 thenreturn trueendif item >= 12930 and item <= 12932 thenreturn trueendif item >= 12933 and item <= 12935 thenreturn trueendif item >= 12332 and item <= 12333 thenreturn trueendif item >= 12335 and item <= 12336 thenreturn trueendif item >= 12339 and item <= 12340 thenreturn trueendif item >= 12930 and item <= 12932 thenreturn trueendif item >= 2397 and item <= 2399 thenreturn trueendif item >= 2401 and item <= 2406 thenreturn trueendreturn falseendfunction getPokeballType(id)for a, b in pairs (pokeballs) doif isInArray(b.all, id) thenreturn aendendreturn "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 = 1if effectiveness[combat].super and isInArray(effectiveness[combat].super, poketype1) thenmultiplier = multiplier * 2endif poketype2 and effectiveness[combat].super and isInArray(effectiveness[combat].super, poketype2) thenmultiplier = multiplier * 2endif effectiveness[combat].weak and isInArray(effectiveness[combat].weak, poketype1) thenmultiplier = multiplier * 0.5endif poketype2 and effectiveness[combat].weak and isInArray(effectiveness[combat].weak, poketype2) thenmultiplier = multiplier * 0.5endif effectiveness[combat].non and isInArray(effectiveness[combat].non, poketype1) thenmultiplier = multiplier * 0endif poketype2 and effectiveness[combat].non and isInArray(effectiveness[combat].non, poketype2) thenmultiplier = multiplier * 0endif multiplier == 0.25 thenmultiplier = 0.5elseif multiplier == 4 thenmultiplier = 2endreturn multiplierendfunction getCreatureDirectionToTarget(cid, target, ranged)if not isCreature(cid) then return true endif not isCreature(target) then return getCreatureLookDir(cid) endlocal 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 xelselocal xdistance = math.abs(getThingPos(cid).x - getThingPos(target).x)local ydistance = math.abs(getThingPos(cid).y - getThingPos(target).y)if xdistance > ydistance thenreturn dirs[x][2]elseif ydistance > xdistance thenreturn dirs[x][1]elseif isInArray(dirs[x], getCreatureLookDir(cid)) thenreturn getCreatureLookDir(cid)elsereturn dirs[x][math.random(1, 2)]endendendfunction getSomeoneDescription(cid)if isPlayer(cid) then return getPlayerNameDescription(cid) endreturn getMonsterInfo(getCreatureName(cid)).descriptionendfunction isGhostPokemon(cid)if not isCreature(cid) then return false endghosts = {"Gastly", "Haunter", "Gengar", "Shiny Gengar", "Misdreavus", "Shiny Abra"}if isInArray(ghosts, getCreatureName(cid)) thenreturn trueendreturn falseendfunction updateGhostWalk(cid)if not isCreature(cid) then return false endlocal pos = getThingPos(cid)pos.x = pos.x + 1pos.y = pos.y + 1local ret = getThingPos(cid)doTeleportThing(cid, pos, false)doTeleportThing(cid, ret, false)return trueendfunction doRemoveElementFromTable(t, e)local ret = {}for a = 1, #t doif t[a] ~= e thentable.insert(ret, t[a])endendreturn retendfunction doFaceCreature(sid, pos)if not isCreature(sid) then return true endif getThingPos(sid).x == pos.x and getThingPos(sid).y == pos.y then return true endlocal ret = 0local 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 enddoChangeSpeed(sid, 1)if dir == 4 thenret = math.random(2, 3)elseif dir == 5 thenret = math.random(1, 2)elseif dir == 6 thenlocal dirs = {0, 3}ret = dirs[math.random(1, 2)]elseif dir == 7 thenret = math.random(0, 1)elseret = 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) thendoItemEraseAttribute(item, tipo)return trueenddoItemSetAttribute(item, tipo, "cd:"..(tempo + os.time()).."")return tempo + os.time()endfunction getCD(item, tipo, limite)if not getItemAttribute(item, tipo) thenreturn 0endlocal string = getItemAttribute(item, tipo):gsub("cd:", "")local number = tonumber(string) - os.time()if number <= 0 thenreturn 0endif limite and limite < number thenreturn 0endreturn 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 thenreturn "00"..number..""elseif number <= 99 thenreturn "0"..number..""endreturn ""..number..""endfunction isBr(cid)if getPlayerStorageValue(cid, 105505) ~= -1 thenreturn trueendreturn falseendfunction isBeingUsed(ball)if isInArray({11827, 11830, 11833, 11836, 11738, 11741, 11744, 11747}, ball) thenreturn trueendreturn 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 endlocal n = not proj and 3 or 2 --alterado v1.6for i = 0, 255 dopos.stackpos = ilocal tile = getTileThingByPos(pos)if tile.itemid ~= 0 and i ~= 253 and not isCreature(tile.uid) then --editedif hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) thenreturn falseendendendreturn 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 2for i = 0, 255 dopos.stackpos = i --edited pra retirar um bug.. ;xlocal tile = getTileThingByPos(pos)if tile.itemid ~= 0 and i ~= 253 and not isCreature(tile.uid) then --editedif hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) thenreturn falseendendend ]]return trueendfunction getFreeTile(pos, cid)if canWalkOnPos(pos, true, false, true, true, false) thenreturn posendlocal positions = {}for a = 0, 7 doif canWalkOnPos(getPosByDir(pos, a), true, false, true, true, false) thentable.insert(positions, pos)endendif #positions >= 1 thenif isCreature(cid) thenlocal range = 1000local ret = getThingPos(cid)for b = 1, #positions doif getDistanceBetween(getThingPos(cid), positions) < range thenret = positionsrange = getDistanceBetween(getThingPos(cid), positions)endendreturn retelsereturn positions[math.random(#positions)]endendreturn getThingPos(cid)endfunction isWalkable(pos, creature, proj, pz, water)-- by Nordif getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false endif isWater(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, true endlocal n = not proj and 3 or 2for i = 0, 255 dopos.stackpos = ilocal tile = getTileThingByPos(pos)if tile.itemid ~= 0 and not isCreature(tile.uid) thenif hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) thenreturn falseendendendreturn trueendfunction isPlayerSummon(cid, uid)if getCreatureMaster(uid) == cid thenreturn TRUEendreturn FALSEendfunction isSummon(sid)if not isCreature(sid) then return false end--if isPlayer(sid) thenreturn falseendif isPlayer(getCreatureMaster(sid)) thenreturn trueendreturn falseendfunction getItemsInContainerById(container, itemid) -- Function By Kydrailocal items = {}if isContainer(container) and getContainerSize(container) > 0 thenfor slot=0, (getContainerSize(container)-1) dolocal item = getContainerItem(container, slot)if isContainer(item.uid) thenlocal itemsbag = getItemsInContainerById(item.uid, itemid)for i=0, #itemsbag dotable.insert(items, itemsbag)endelseif itemid == item.itemid thentable.insert(items, item.uid)endendendendreturn itemsendfunction getPokeballsInContainer(container) -- Function By Kydraiif not isContainer(container) then return {} endlocal items = {}if isContainer(container) and getContainerSize(container) > 0 thenfor slot=0, (getContainerSize(container)-1) dolocal item = getContainerItem(container, slot)if isContainer(item.uid) thenlocal itemsbag = getPokeballsInContainer(item.uid)for i=0, #itemsbag dotable.insert(items, itemsbag)endelseif isPokeball(item.itemid) thentable.insert(items, item.uid)endendendreturn itemsendfunction getItensUniquesInContainer(container) --alterado v1.6if not isContainer(container) then return {} endlocal items = {}if isContainer(container) and getContainerSize(container) > 0 thenfor slot=0, (getContainerSize(container)-1) dolocal item = getContainerItem(container, slot)if isContainer(item.uid) thenlocal itemsbag = getItensUniquesInContainer(item.uid)for i=0, #itemsbag dotable.insert(items, itemsbag)endelseif getItemAttribute(item.uid, "unique") thentable.insert(items, item)endendendreturn 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) dolocal item = getContainerItem(container, slot)if isContainer(item.uid) thenif hasSpaceInContainer(item.uid) thenreturn trueendendendreturn falseend starter local starterpokes = {["Squirtle"] = {x = 51, y = 70, z = 7},["Charmander"] = {x = 47, y = 70, z = 7}, --Alterado por min, stylo para meu MAPA'["Bulbasaur"] = {x = 49, y = 70, z = 7},}local btype = "ultra"function onUse(cid, item, frompos, item2, topos)if getPlayerLevel(cid) > 5 then --alterado v1.3return trueendlocal pokemon = ""for a, b in pairs (starterpokes) doif isPosEqualPos(topos, b) thenpokemon = aendendif pokemon == "" then return true endif getPlayerStorageValue(cid, 9658754) ~= 1 then --alterado v1.7 -opicional-sendMsgToPlayer(cid, 27, "Talk to the Prof. Robert to choose your beginner {city first}/Falê com o Prof. Robert para escolher sua {cidade primeiro}!")return trueendlocal gender = getRandomGenderByName(pokemon)local happy = 250doPlayerAddItem(cid, 2392,30)doPlayerAddItem(cid, 2393,50)doPlayerAddItem(cid, 12343,5) --Alterado por min, Stylo ' "KIT INICIAL"~~doPlayerAddItem(cid, 12346,20)doPlayerAddItem(cid, 12348,30)doPlayerAddItem(cid, 12222,100)local item = doCreateItemEx(2219)doItemSetAttribute(item, "poke", pokemon)doItemSetAttribute(item, "hp", 1)doItemSetAttribute(item, "happy", happy)doItemSetAttribute(item, "gender", gender)doItemSetAttribute(item, "description", "Contains a "..pokemon..".")doItemSetAttribute(item, "fakedesc", "Contains a "..pokemon..".")doItemSetAttribute(item, "unique", getCreatureName(cid)) --alterado v1.6doPlayerAddItemEx(cid, item, true)doTransformItem(item, pokeballs[btype].on)doPlayerSendTextMessage(cid, 27, "You got your first pokemon! You also received some pokeballs to help you in your way.")doPlayerSendTextMessage(cid, 27, "Don\'t forget to use your pokedex on every undiscovered pokemon!")doSendMagicEffect(getThingPos(cid), 28)doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))doSendMagicEffect(getThingPos(cid), 27)doSendMagicEffect(getThingPos(cid), 28)return TRUEend Link para o comentário https://xtibia.com/forum/topic/223732-encerrado-look-player/ Compartilhar em outros sites More sharing options...
zipter98 1102 Postado Novembro 10, 2013 Share Postado Novembro 10, 2013 (editado) Sobre o erro do baú, faça o seguinte: (testei aqui, e tá funcionando perfeitamente.) Em some functions.lua, adicione a seguinte função: function addPokeToPlayer(cid, pokemon, boost, gender, ball, unique) local genders = { ["male"] = 4, ["female"] = 3, [1] = 4, [0] = 3, [4] = 4, [3] = 3, } if not isCreature(cid) then return false end local pokemon = doCorrectString(pokemon) if not pokes[pokemon] then return false end local GENDER = (gender and genders[gender]) and genders[gender] or getRandomGenderByName(pokemon) local btype = (ball and pokeballs[ball]) and ball or isShinyName(pokemon) and "shinynormal" or "normal" local happy = 250 if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then item = doCreateItemEx(11826) else item = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, 11826, 1) end if not item then return false end doItemSetAttribute(item, "poke", pokemon) doItemSetAttribute(item, "hp", 1) doItemSetAttribute(item, "happy", happy) doItemSetAttribute(item, "gender", GENDER) 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, "Você já está carregando seis pokémon, seu novo pokémon será teleportado para o Centro Pokémon.") 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 return true end Depois, substitua seu código do baú por este: local starterpokes = { ["Squirtle"] = {x = 51, y = 70, z = 7}, ["Charmander"] = {x = 47, y = 70, z = 7}, --Alterado por min, stylo para meu MAPA' ["Bulbasaur"] = {x = 49, y = 70, z = 7}, } local btype = "ultra" function onUse(cid, item, frompos, item2, topos) if getPlayerLevel(cid) > 5 then --alterado v1.3 return true end local pokemon = "" for a, b in pairs (starterpokes) do if isPosEqualPos(topos, b) then pokemon = a end end if pokemon == "" then return true end if getPlayerStorageValue(cid, 9658754) ~= 1 then --alterado v1.7 -opicional- sendMsgToPlayer(cid, 27, "Talk to the Prof. Robert to choose your beginner {city first}/Falê com o Prof. Robert para escolher sua {cidade primeiro}!") return true end doPlayerSendTextMessage(cid, 27, "You got your first pokemon! You also received some pokeballs to help you in your way.") doPlayerSendTextMessage(cid, 27, "Don\'t forget to use your pokedex on every undiscovered pokemon!") doPlayerAddItem(cid, 2392, 30) doPlayerAddItem(cid, 2393, 50) doPlayerAddItem(cid, 12343, 5) --Alterado por min, Stylo ' "KIT INICIAL"~~ doPlayerAddItem(cid, 12346, 20) doPlayerAddItem(cid, 12348, 30) doPlayerAddItem(cid, 12222, 100) addPokeToPlayer(cid, pokemon, 0, nil, btype, true) doSendMagicEffect(getThingPos(cid), 28) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(getThingPos(cid), 27) doSendMagicEffect(getThingPos(cid), 28) return TRUE end Spoiler tá bugando comigo, nice ._. Editado Novembro 10, 2013 por zipter98 Link para o comentário https://xtibia.com/forum/topic/223732-encerrado-look-player/#findComment-1580799 Compartilhar em outros sites More sharing options...
outbreaks 1 Postado Novembro 10, 2013 Autor Share Postado Novembro 10, 2013 (editado) aaa man descobrir erro e outro do bau, tipo n sei o que eu fiz com mapa ele bugo cidade, pq tentei usa teleport, e o comando town n funciono! vc sabe arruma isso no map editor? na questao do bau a script ta funcionando perfeitamente so que n ta achando a cidade! na hr do teleport podem fecha topico conseguir concerta! Editado Novembro 10, 2013 por outbreaks Link para o comentário https://xtibia.com/forum/topic/223732-encerrado-look-player/#findComment-1580801 Compartilhar em outros sites More sharing options...
Omega 377 Postado Novembro 10, 2013 Share Postado Novembro 10, 2013 Tópico movido para a seção de dúvidas e pedidos resolvidos. Link para o comentário https://xtibia.com/forum/topic/223732-encerrado-look-player/#findComment-1580992 Compartilhar em outros sites More sharing options...
Stigal 584 Postado Abril 21, 2018 Share Postado Abril 21, 2018 A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta. + Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda. * Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado. Link para o comentário https://xtibia.com/forum/topic/223732-encerrado-look-player/#findComment-1735675 Compartilhar em outros sites More sharing options...
Posts Recomendados