gabrielbsales 174 Postado Janeiro 8, 2014 Share Postado Janeiro 8, 2014 Bom, a function ehmonstro que estou usando tem um problema, os ataques plantas não pegam em pokemons que ela é weak. a Function: function ehMonstro(cid) --alterado v1.9return cid and cid >= AUTOID_MONSTERS and cid < AUTOID_NPCS end Link para o comentário Compartilhar em outros sites More sharing options...
Jakson Souza 95 Postado Janeiro 8, 2014 Share Postado Janeiro 8, 2014 vo dar um conselho para vc, pda é um erro atras do outro arruma um aparece outro esquece pda amigo, alem disso ele contem erro no source e não temos os sources para corrigir. Link para o comentário Compartilhar em outros sites More sharing options...
MaxxSilva 13 Postado Janeiro 8, 2014 Share Postado Janeiro 8, 2014 vc tentou me ajudar la e eu vou te passar o script que no meu da certo os pokes dão slew powder hypnossis e sing normalmente se vc quiser tentar function getLivePokeballs(cid, container)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 thentable.insert(items, ballSlot.uid)endendend---if isContainer(container) and getContainerSize(container) > 0 then --alterado v1.6.1for 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 thentable.insert(items, item.uid)endendendendendreturn 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 beginDuel(cid, pid, n)if not isCreature(cid) or not isCreature(pid) then return true endif n == 0 thensetPlayerStorageValue(cid, 6598754, 10)setPlayerStorageValue(cid, 52482, getCreatureName(pid))doSendAnimatedText(getThingPosWithDebug(cid), "START", 215)doSendAnimatedText(getThingPosWithDebug(pid), "START", 215)return true --alterado v1.6.1elsedoSendAnimatedText(getThingPosWithDebug(cid), ""..n.."!", 215)n = n-1endaddEvent(beginDuel, 1000, cid, pid, n)endfunction endInviting(cid)if isCreature(cid) and getPlayerStorageValue(cid, 52483) == 0 thensetPlayerStorageValue(cid, 52480, -1) --sto de duelosetPlayerStorageValue(cid, 52481, -1) --sto de pokes no duelsetPlayerStorageValue(cid, 52482, -1) --sto do player q vai duela contigo --alterado v1.6 duel systemsetPlayerStorageValue(cid, 52483, -1) --sto de aceitaçao de duelsetPlayerStorageValue(cid, 6598754, -1) --sto do canAttackOtherdoCreatureSetSkullType(cid, 0)doPlayerSendTextMessage(cid, 20, "The other player don't accepted the duel...")endendfunction checkDuel(cid)if getPlayerStorageValue(cid, 52481) >= 1 thensetPlayerStorageValue(cid, 52481, getPlayerStorageValue(cid, 52481)-1)doSendAnimatedText(getThingPos(cid), "POKE DOWN", 65)endif getPlayerStorageValue(cid, 52481) == 0 then --alterado v1.6.1local sid = getPlayerByName(getPlayerStorageValue(cid, 52482))if isCreature(sid) thenaddEvent(doSendAnimatedText, 1000, getThingPosWithDebug(sid), "WIN", COLOR_ELECTRIC)setPlayerStorageValue(sid, 52480, -1)setPlayerStorageValue(sid, 52481, -1)setPlayerStorageValue(sid, 52482, -1)setPlayerStorageValue(sid, 52483, -1)setPlayerStorageValue(sid, 6598754, -1)doCreatureSetSkullType(sid, 0)doRemoveCondition(sid, CONDITION_INFIGHT)endaddEvent(doSendAnimatedText, 1000, getThingPosWithDebug(cid), "LOSE", COLOR_BURN)setPlayerStorageValue(cid, 52480, -1)setPlayerStorageValue(cid, 52481, -1)setPlayerStorageValue(cid, 52482, -1)setPlayerStorageValue(cid, 52483, -1)setPlayerStorageValue(cid, 6598754, -1)doCreatureSetSkullType(cid, 0)doRemoveCondition(cid, CONDITION_INFIGHT)endend--/////////////////////////////////////////////////////////////////////////////////////////////--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 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 getPlayerStorageValue(master1, 52482) == getCreatureName(master2) and getPlayerStorageValue(master2, 52482) == getCreatureName(master1) thenif 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] = "Coccon 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 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)if useKpdoDlls thendoUpdateMoves(cid)endendlocal EFFECTS = {--[OutfitID] = {Effect}["Magmar"] = 35, --magmar --alterado v1.5["Jynx"] = 17, --jynx["Shiny Jynx"] = 17, --shiny jynx}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 thendoPlayerSendCancel(cid, "You need level "..x.level.." to use this pokemon.")return trueend--------------------------------------------------------------------------------------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"}, --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 = getItemAttribute(item.uid, "nick") or getCreatureName(pk)local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", pokename)doCreatureSay(cid, mgo, TALKTYPE_SAY)doSendMagicEffect(getCreaturePosition(pk), effect)if useKpdoDlls thendoUpdateMoves(cid)endendfunction doRegainSpeed(cid)if not isCreature(cid) then return true endif isPlayer(cid) or isNpc(cid) or ehNPC(cid) then --alterado v1.5doChangeSpeed(cid, - getCreatureSpeed(cid))local speed = PlayerSpeedif isPlayer(cid) and getPlayerGroupId(cid) >= 4 and getPlayerGroupId(cid) <= 7 thenspeed = 140*getPlayerGroupId(cid)endif getCreatureCondition(cid, CONDITION_PARALYZE) == true thendoRemoveCondition(cid, CONDITION_PARALYZE)addEvent(doAddCondition, 10, cid, paralizeArea2) --alterado v1.5enddoChangeSpeed(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) --alterado v1.5addEvent(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 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 Mas acho q n vai funcionar o duel se vc conseguir editar e tals Link para o comentário Compartilhar em outros sites More sharing options...
gabrielbsales 174 Postado Janeiro 8, 2014 Autor Share Postado Janeiro 8, 2014 (editado) Resolvido, fiz uma gambiarra aqui. Max, valeu, peguei parte do script. Rep + Editado Janeiro 8, 2014 por gabrielbsales Link para o comentário Compartilhar em outros sites More sharing options...
zipter98 1101 Postado Janeiro 8, 2014 Share Postado Janeiro 8, 2014 Tópico movido para a seção de dúvidas e pedidos resolvidos. Link para o comentário 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 Compartilhar em outros sites More sharing options...
Posts Recomendados