Bodak Reborn 28 Postado Agosto 25, 2016 Share Postado Agosto 25, 2016 (editado) Yo boyz! Eu estava procurando um Addon System funcional e vi que todos tinham bugs, então eu peguei um código que achei em outro fórum, corrigi os bugs e fiz para que o sistema funcione com fly, ride, surf, look e que o addon suma quando o pokémon evoluir. Também é possível substituir um addon por outro, sem que o pokémon fique com o addon antigo. São muitos arquivos envolvidos, então, se eu esquecer algo e o sistema não esteja 100%, por favor, me fale. Deixei alguns exemplos no código para caso você esteja com preguiça e queira testar, além de comentar como adicionar novos addons. OBS: Eu testei apenas em PDA PokexCyan (TFS 0.3.6). actions/scripts nome_arquivo.lua local addons = {[14876] = {pokemon = "Shiny Charizard" , looktype = 1950},[12344] = {pokemon = "Pidgeot" , looktype = 205},[13990] = {pokemon = "Pidgeot" , looktype = 201},--[ID do item] = {nome do pokémon, looktype},}local function getOldAddon (looktype) for index, value in pairs (addons) do if value.looktype == looktype then return index end endendfunction onUse(cid, item, fromPosition, itemEx, toPosition) local numero = addons[item.itemid].looktype local pb = itemEx.uid local pk = addons[item.itemid].pokemon if not isPokeball(itemEx.itemid) then doPlayerSendCancel(cid, "Você só poder usar este item em uma poke ball.") return true end if getPlayerSlotItem (cid, 8).uid == pb and (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1) then doPlayerSendCancel (cid, "Desmonte do seu pokémon e volte-o para a poke ball.") return true end if getItemAttribute(pb, "addon") and getItemAttribute(pb, "addon") == numero then doPlayerSendCancel(cid, "Seu pokémon já está com este addon.") return true end if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, "Por favor, volte o seu pokémon para a poke ball.") return true end if getItemAttribute(pb, "poke") ~= pk then doPlayerSendCancel(cid, "Desculpe, você não pode adicionar este addon neste pokémon.") return true end if getItemAttribute (pb, "addon") and getItemAttribute (pb, "addon") > 1 then doPlayerSendTextMessage(cid, 27, "Você substituiu um "..getItemNameById (getOldAddon (getItemAttribute (pb, "addon"))).." por um "..getItemNameById (item.itemid).."!") else doPlayerSendTextMessage(cid, 27, "Agora seu pokémon usará este "..getItemNameById (item.itemid).."!") end doRemoveItem(item.uid, 1) doSetItemAttribute(pb, "addon", numero) return trueend actions.xml: <action itemid="13989;12344;13990;ID do item; ID do item;" event="script" value="nome_arquivo.lua"/> em actions/order.lua, abaixo de: if not isCreature(pk) then pk = doCreateMonster(pokemon, backupPos) if not isCreature(pk) then doPlayerSendCancel(cid, "You can't stop flying/riding here.") return true end doConvinceCreature(cid, pk) end adicione: local pb = getPlayerSlotItem(cid, 8).uid local flyAdd = flysAddon[getItemAttribute (pb, "addon")] local rideAdd = ridesAddon[getItemAttribute (pb, "addon")] if flyAdd then if getItemAttribute(pb, "addon") > 1 then doSetCreatureOutfit(pk, {lookType = getItemAttribute (pb, "addon")}, -1) end elseif rideAdd then if getItemAttribute(pb, "addon") > 1 then doSetCreatureOutfit(pk, {lookType = getItemAttribute (pb, "addon")}, -1) end end em lib/configuration.lua, será necessário adicionar três tabelas, uma para fly, outra para ride e outra para surf. Nesta tabela, o nome do pokémon não é requirido, o que talvez faça você se perder. Se você achar necessário, comente com "--" o nome do pokémon. Exemplo: [205] = {540}, -- Pidgeot[850] = {210}, -- Dragonair procure por: flys e acima disso adicione: flysAddon = {[205] = {540},[201] = {541},--[número do looktype do addon] = {looktype do addon voando}} procure por: rides e acima disso adicione: ridesAddon = {[556] = {555},--[número do looktype do addon] = {looktype do addon montado}} procure por: rides e acima disso adicione: surfsAddon = {[201] = {541},[552] = {553},--[número do looktype do addon] = {looktype do addon nadando}} em lib/order.lua, procure por: elseif skill == "fly" then e abaixo adicione: local pb = getPlayerSlotItem(cid, 8).uid if getItemAttribute(pb, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = flys[getPokemonName(getCreatureSummons(cid)[1])][1] + 351}, -1) else doSetCreatureOutfit(cid, {lookType = flysAddon[getItemAttribute (pb, "addon")][1]}, -1) end depois, no mesmo arquivo, procure por: elseif skill == "ride" then e abaixo adicione: local pb = getPlayerSlotItem(cid, 8).uid if getItemAttribute(pb, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = rides[getPokemonName(getCreatureSummons(cid)[1])][1] + 351}, -1) else doSetCreatureOutfit(cid, {lookType = ridesAddon[getItemAttribute (pb, "addon")][1]}, -1) end em movements/surf.lua, procure por: if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then doPlayerSendCancel(cid, "You can't do it while in the PVP Zone!") --alterado v1.7 doTeleportThing(cid, fromPosition, false)return trueend e abaixo adicione: local pb = getPlayerSlotItem(cid, 8).uid if getItemAttribute(pb, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = surfs[getPokemonName(getCreatureSummons(cid)[1])].lookType}, -1)else doSetCreatureOutfit(cid, {lookType = surfsAddon[getItemAttribute(pb, "addon")][1]}, -1)end logo abaixo disso, vocês vão encontrar: (isso não envolve o funcionamento do sistema de addon, mas é um bug que eu achei no meu surf. Todos os pokémon tinham velocidade fixa de 1500.) local speed = 75 + PlayerSpeed + getSpeed(getCreatureSummons(cid)[1]) * 8 * speedRate substitua por: local speed = 75 + PlayerSpeed + surfs[getPokemonName(getCreatureSummons(cid)[1])].speed * 8 * speedRate no mesmo arquivo, procure por: if getItemAttribute(item.uid, "nick") then doCreatureSay(cid, getItemAttribute(item.uid, "nick")..", I'm tired of surfing!", 1) else doCreatureSay(cid, getItemAttribute(item.uid, "poke")..", I'm tired of surfing!", 1) end doSummonMonster(cid, pokemon) local pk = getCreatureSummons(cid)[1] e abaixo adicione: local pb = getPlayerSlotItem(cid, 8).uid if surfsAddon[getItemAttribute(pb, "addon")] then if getItemAttribute(pb, "addon") > 1 then doSetCreatureOutfit(pk, {lookType = getItemAttribute(pb, "addon")}, -1) end end em actions/goback.lua, procure por: doSendMagicEffect(getCreaturePosition(pk), effect) abaixo adicione: local pk = getCreatureSummons(cid)[1] local pb = getPlayerSlotItem(cid, 8).uid local look = getItemAttribute(pb, "addon") if not look then doSetItemAttribute(pb, "addon", 0) end if look and look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end em actions/evolution.lua, procure por: local ball = getPlayerSlotItem(cid, 8).uid há 12 linhas iguais a essa nesse arquivo e embaixo de TODAS elas, adicione: doItemSetAttribute (ball, "addon", 0) em creaturescripts/look.lua, procure por: if getItemAttribute(thing.uid, "gender") == SEX_MALE then table.insert(str, "It is male.") elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then table.insert(str, "It is female.") else table.insert(str, "It is genderless.") end se novamente, esse código aparece duas vezes no arquivo. E também, novamente, embaixo dos dois, adicione: if getItemAttribute(thing.uid, "addon") then if flysAddon[getItemAttribute (thing.uid, "addon")] or ridesAddon[getItemAttribute (thing.uid, "addon")] or surfsAddon[getItemAttribute (thing.uid, "addon")] then if getItemAttribute(thing.uid, "addon") > 1 then table.insert(str, " Has the addon "..getItemNameById (getAddonId (getItemAttribute (thing.uid, "addon")))..".") end end end E no começo desse arquivo, adicione: local addons = {[14876] = {pokemon = "Shiny Charizard" , looktype = 1950},[12344] = {pokemon = "Pidgeot" , looktype = 205},[13990] = {pokemon = "Pidgeot" , looktype = 201},--[ID do item] = {nome do pokémon, looktype},}local function getAddonId (looktype) for index, value in pairs (addons) do if value.looktype == looktype then return index end endend a tabela "addons" deve ser a mesma que a do actions/addon.lua. Então, quando você adicionar algo no addon.lua, deverá adicionar também no look.lua. em login.lua, procure por: doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) e substitua por: if getItemAttribute(item.uid, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) else doSetCreatureOutfit(cid, {lookType = flysAddon[getItemAttribute (item.uid, "addon")][1]}, -1) end procure por: doSetCreatureOutfit(cid, {lookType = surfs[poke].lookType + 351}, -1 substitua por: if getItemAttribute(item.uid, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = surfs[poke].looktype + 351}, -1) else doSetCreatureOutfit(cid, {lookType = surfsAddon[getItemAttribute (item.uid, "addon")][1]}, -1) end procure por: doSetCreatureOutfit(cid, {lookType = rides[poke][1] + 351}, -1) substitua por: if getItemAttribute(item.uid, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = rides[poke][1] + 351}, -1) else doSetCreatureOutfit(cid, {lookType = ridesAddon[getItemAttribute (item.uid, "addon")][1]}, -1) end Editado Agosto 26, 2016 por Bodak Reborn Link para o comentário Compartilhar em outros sites More sharing options...
FlamesAdmin 261 Postado Agosto 25, 2016 Share Postado Agosto 25, 2016 (editado) Testando aqui no DxP Dúvida: Caso o poke tem fly/ride com o addon, qual looktype devo adicionar no look.lua e no actions/scripts/? Deu esse erro no surf: [25/08/2016 19:31:19] [Error - MoveEvents Interface] [25/08/2016 19:31:19] data/movements/scripts/surf.lua:onStepIn[25/08/2016 19:31:19] Description: [25/08/2016 19:31:19] data/movements/scripts/surf.lua:91: attempt to index field '?' (a nil value)[25/08/2016 19:31:19] stack traceback:[25/08/2016 19:31:19] data/movements/scripts/surf.lua:91: in function <data/movements/scripts/surf.lua:11> Editado Agosto 25, 2016 por FlamesAdmin Link para o comentário Compartilhar em outros sites More sharing options...
Bodak Reborn 28 Postado Agosto 25, 2016 Autor Share Postado Agosto 25, 2016 6 minutos atrás, FlamesAdmin disse: Testando aqui no DxP Dúvida: Caso o poke tem fly/ride com o addon, qual looktype devo adicionar no look.lua e no actions/scripts/? Você define a looktype do pokémon no fly/ride/surf pelo configuration.lua, em addons.lua e look.lua é a addon (looktype) normal. [205] = {540}, -- Pidgeot 205 = looktype normal 540 = looktype no fly/ride/surf Link para o comentário Compartilhar em outros sites More sharing options...
FlamesAdmin 261 Postado Agosto 25, 2016 Share Postado Agosto 25, 2016 (editado) @Bodak Reborn Olha o comentário acima Editado Agosto 25, 2016 por FlamesAdmin Link para o comentário Compartilhar em outros sites More sharing options...
Bodak Reborn 28 Postado Agosto 25, 2016 Autor Share Postado Agosto 25, 2016 1 minuto atrás, FlamesAdmin disse: @Bodak Reborn Olha o comentário acima Isso acontece quando looktype que tu colocou no addon.lua não é a mesma que você configurou na lib. Exemplo: [13990] = {pokemon = "Poliwag" , looktype = 201}, eu defini que o Poliwag terá a looktype 201 quando o item 13990 for usado nele. surfsAddon = { [202] = {541}, } na tabela da lib está 202, logo, vai dar erro. Pra dar certo, teria que ser assim: surfsAddon = { [201] = {541}, } Link para o comentário Compartilhar em outros sites More sharing options...
JG6 44 Postado Agosto 25, 2016 Share Postado Agosto 25, 2016 O meu funcionou só não funfa o fly, ride, surf, fica a outfit normal do poke Link para o comentário Compartilhar em outros sites More sharing options...
FlamesAdmin 261 Postado Agosto 25, 2016 Share Postado Agosto 25, 2016 (editado) Coloquei tudo certo, revi e vi os códigos, mais unico que realmente teve efeito, foi o fly Ride tem o addon, mais quando "munta", fica com looktype normal do pokémon Dúvida: No ride/surf está assim: --[número do looktype] = {looktype montado, número da tabela abaixo.} no fly, vc colocou --[número do looktype normal], ou seja, no ride/fly é a mesma coisa? Looktype normal do poke? Editado Agosto 25, 2016 por FlamesAdmin Link para o comentário Compartilhar em outros sites More sharing options...
Bodak Reborn 28 Postado Agosto 25, 2016 Autor Share Postado Agosto 25, 2016 10 minutos atrás, FlamesAdmin disse: Coloquei tudo certo, revi e vi os códigos, mais unico que realmente teve efeito, foi o fly Ride tem o addon, mais quando "munta", fica com looktype normal do pokémon Dúvida: No ride/surf está assim: --[número do looktype] = {looktype montado, número da tabela abaixo.} no fly, vc colocou --[número do looktype normal], ou seja, no ride/fly é a mesma coisa? Looktype normal do poke? Looktype normal = looktype do addon, o pokémon com o addon apenas, sem ride, fly, surf... 21 minutos atrás, joaopera disse: O meu funcionou só não funfa o fly, ride, surf, fica a outfit normal do poke Você deve ter configurado errado, veja bem os comentários que eu deixei no configuration.lua. Link para o comentário Compartilhar em outros sites More sharing options...
Josegvb 87 Postado Agosto 25, 2016 Share Postado Agosto 25, 2016 q dahora, mt obrigado por compartilhar esses sistemas ^^ nao estou usando ainda pq no DxP tem mts coisas q rever antes de ficar adicionando spr de fly/ride/surf como você pode ver tem mts usando DxP e ele é mt parescido pra PDA se tiver chance de dar uma olhada nele e ajudar com os bugs mts irao ficar gratos ^^ Link para o comentário Compartilhar em outros sites More sharing options...
Bodak Reborn 28 Postado Agosto 26, 2016 Autor Share Postado Agosto 26, 2016 (editado) 28 minutos atrás, Josegvb disse: q dahora, mt obrigado por compartilhar esses sistemas ^^ nao estou usando ainda pq no DxP tem mts coisas q rever antes de ficar adicionando spr de fly/ride/surf como você pode ver tem mts usando DxP e ele é mt parescido pra PDA se tiver chance de dar uma olhada nele e ajudar com os bugs mts irao ficar gratos ^^ De nada bro, fico feliz que tenha gostado. Eu já olhei ele, baixei, arrumei algumas coisas e desisti. Ele tem algumas funções/sistemas legais, mas como disseram: "há muitos erros e armadilhas nas sources", o Gabriel Netto chegou a falar disso também. Como ele é parecido com o PDA, acho que é melhorar utilizar alguns sistemas dele no PDA e deixá-lo de lado, ou esperar que arrumem os erros nas sources dele. Editado Agosto 26, 2016 por Bodak Reborn Link para o comentário Compartilhar em outros sites More sharing options...
Drakopoulos 219 Postado Agosto 26, 2016 Share Postado Agosto 26, 2016 Daora man, rep + Link para o comentário Compartilhar em outros sites More sharing options...
JG6 44 Postado Agosto 26, 2016 Share Postado Agosto 26, 2016 Configurei do jeito q ta ai deve ser pq to usando o dxp Link para o comentário Compartilhar em outros sites More sharing options...
FlamesAdmin 261 Postado Agosto 26, 2016 Share Postado Agosto 26, 2016 Uma coisa que tambem ficaria mais complexo o sistema, seria colocar quando o poke usar alguma spell de dormir, como o Rest do Snorlax. E tambem as passivas, tipo do Scyther, Scizor... Link para o comentário Compartilhar em outros sites More sharing options...
Bodak Reborn 28 Postado Agosto 26, 2016 Autor Share Postado Agosto 26, 2016 (editado) 1 hora atrás, FlamesAdmin disse: Uma coisa que tambem ficaria mais complexo o sistema, seria colocar quando o poke usar alguma spell de dormir, como o Rest do Snorlax. E tambem as passivas, tipo do Scyther, Scizor... Isso é fácil de fazer, mas ao mesmo tempo, é muito complexo. A outfit dos pokémon na passiva é no pokemon moves.lua, na lib. É apenas colocar uma verificação se o pokémon tem addon em cada skill, se tiver, a outfit será tal. Porém, é muito difícil de eu adicionar isso ao tópico, porque pode ter uma passiva que tem no servidor de alguém e não tem no meu ou vice-versa. 10 horas atrás, joaopera disse: Configurei do jeito q ta ai deve ser pq to usando o dxp Hmm, acho que não bro... tu viu a explicação que eu dei pro Flames? Olha: Em 25/08/2016 at 19:38, Bodak Reborn disse: Isso acontece quando looktype que tu colocou no addon.lua não é a mesma que você configurou na lib. Exemplo: [13990] = {pokemon = "Poliwag" , looktype = 201}, eu defini que o Poliwag terá a looktype 201 quando o item 13990 for usado nele. surfsAddon = {[202] = {541},} na tabela da lib está 202, logo, vai dar erro. Pra dar certo, teria que ser assim: surfsAddon = {[201] = {541},} se tu fez tudo isso e ainda está bugado, deve ser as storages que são diferentes do DxP, porque se fosse algo relacionado à funções, daria erro na distro. Editado Agosto 26, 2016 por Bodak Reborn Link para o comentário Compartilhar em outros sites More sharing options...
iStark 13 Postado Agosto 29, 2016 Share Postado Agosto 29, 2016 Funcionou PDA? E outra... Poderia fazer um video adicionando esse sistema, pois e mt complexo e podemos errar em alguns coisas só lendo Em 25/08/2016 at 18:47, Bodak Reborn disse: local ball = getPlayerSlotItem(cid, 8).uid No meu arquivo não tem nenhuma dessa!!! MEU ARQUIVO : Spoiler local special = specialevo --alterado v1.9 \/ peguem ele todo! local types = { [leaf] = {"Bulbasaur", "Ivysaur", "Oddish", "Gloom", "Bellsprout", "Weepinbell", "Exeggcute", "Chikorita", "Bayleef", "Hoppip", "Skiploom", "Sunkern"}, [water] = {"Squirtle", "Wartortle", "Horsea", "Goldeen", "Magikarp", "Psyduck", "Poliwag", "Poliwhirl", "Tentacool", "Krabby", "Staryu", "Omanyte", "Eevee", "Totodile", "Croconow", "Chinchou", "Marill", "Wooper", "Slowpoke", "Remoraid", "Seadra"}, [venom] = {"Zubat", "Ekans", "Nidoran male", "Nidoran female", "Nidorino", "Nidorina", "Gloom", "Venonat", "Tentacool", "Grimer", "Koffing", "Spinarak", "Golbat"}, [thunder] = {"Magnemite", "Pikachu", "Voltorb", "Eevee", "Chinchou", "Pichu", "Mareep", "Flaaffy", "Elekid"}, [rock] = {"Geodude", "Graveler", "Rhyhorn", "Kabuto", "Slugma", "Pupitar"}, [punch] = {"Machop", "Machoke", "Mankey", "Poliwhirl", "Tyrogue"}, [fire] = {"Charmander", "Charmeleon", "Vulpix", "Growlithe", "Ponyta", "Eevee", "Cyndaquil", "Quilava", "Slugma", "Houndour", "Magby"}, [coccon] = {"Caterpie", "Metapod", "Weedle", "Kakuna", "Paras", "Venonat", "Scyther", "Ledyba", "Spinarak", "Pineco"}, [crystal] = {"Dratini", "Dragonair", "Magikarp", "Omanyte", "Kabuto", "Seadra"}, [dark] = {"Gastly", "Haunter", "Eevee", "Houndour", "Pupitar"}, [earth] = {"Cubone", "Sandshrew", "Nidorino", "Nidorina", "Diglett", "Onix", "Rhyhorn", "Wooper", "Swinub", "Phanpy", "Larvitar"}, [enigma] = {"Abra", "Kadabra", "Psyduck", "Slowpoke", "Drowzee", "Eevee", "Natu", "Smoochum"}, [heart] = {"Rattata", "Pidgey", "Pidgeotto", "Spearow", "Clefairy", "Jigglypuff", "Meowth", "Doduo", "Porygon", "Chansey", "Sentret", "Hoothoot", "Cleffa", "Igglybuff", "Togepi", "Snubull", "Teddiursa"}, [ice] = {"Seel", "Shellder", "Smoochum", "Swinub"}, [king] = {"Slowpoke", "Poliwhirl"}, [metal] = {"Onix", "Scyther"}, [dragon] = {"Seadra"}, [upgrade] = {"Porygon"}, [sun] = {"Sunkern", "Gloom"}, [sfire] = {"Shiny Charmander", "Shiny Charmeleon", "Shiny Vulpix", "Shiny Growlithe", "Shiny Ponyta", "Shiny Eevee"}, [swater] = {"Shiny Squirtle", "Shiny Wartortle", "Shiny Horsea", "Shiny Goldeen", "Shiny Magikarp", "Shiny Psyduck", "Shiny Poliwag", "Shiny Poliwhirl", "Shiny Tentacool", "Shiny Krabby", "Shiny Staryu", "Shiny Omanyte", "Shiny Eevee"}, [sleaf] = {"Shiny Bulbasaur", "Shiny Ivysaur", "Shiny Oddish", "Shiny Gloom", "Shiny Bellsprout", "Shiny Weepinbell", "Shiny Exeggcute"}, [sheart] = {"Shiny Rattata", "Shiny Pidgey", "Shiny Pidgeotto", "Shiny Spearow", "Shiny Clefairy", "Shiny Jigglypuff", "Shiny Meowth", "Shiny Doduo", "Shiny Porygon", "Shiny Chansey"}, [senigma] = {"Shiny Abra", "Shiny Kadabra", "Shiny Psyduck", "Shiny Slowpoke", "Shiny Drowzee", "Shiny Eevee"}, [srock] = {"Shiny Geodude", "Shiny Graveler", "Shiny Rhyhorn", "Shiny Kabuto"}, [svenom] = {"Shiny Zubat", "Shiny Ekans", "Shiny Nidoran male", "Shiny Nidoran female", "Shiny Nidorino", "Shiny Nidorina", "Shiny Gloom", "Shiny Venonat", "Shiny Tentacool", "Shiny Grimer", "Shiny Koffing"}, [sice] = {"Shiny Seel", "Shiny Shellder"}, [sthunder] = {"Shiny Magnemite", "Shiny Pikachu", "Shiny Voltorb", "Shiny Eevee"}, [scrystal] = {"Shiny Dratini", "Shiny Dragonair", "Shiny Magikarp", "Shiny Omanyte", "Shiny Kabuto"}, [scoccon] = {"Shiny Caterpie", "Shiny Metapod", "Shiny Weedle", "Shiny Kakuna", "Shiny Paras", "Shiny Venonat", "Shiny Scyther"}, [sdarkness] = {"Shiny Gastly", "Shiny Haunter", "Shiny Eevee"}, [spunch] = {"Shiny Machop", "Shiny Machoke", "Shiny Mankey", "Shiny Poliwhirl"}, [searth] = {"Shiny Cubone", "Shiny Sandshrew", "Shiny Nidorino", "Shiny Nidorina", "Shiny Diglett", "Shiny Onix", "Shiny Rhyhorn"} } local specEvos = { --alterado v1.9 \/ ["Eevee"] = { [thunder] = "Jolteon", [water] = "Vaporeon", [fire] = "Flareon", [enigma] = "Espeon", [dark] = "Umbreon", [leaf] = "Leafeon", [ice] = "Glaceon", }, } function onUse(cid, item, frompos, item2, topos) local pokeball = getPlayerSlotItem(cid, if not isMonster(item2.uid) or not isSummon(item2.uid) then return true end if #getCreatureSummons(cid) > 1 then return true --alterado v1.9 end if getCreatureCondition(item2.uid, CONDITION_INVISIBLE) then return true end local pevo = poevo[getCreatureName(item2.uid)] if not isInArray(specialevo, getCreatureName(item2.uid)) then if not pevo then doPlayerSendCancel(cid, "This pokemon can't evolve.") return true end if not isPlayer(getCreatureMaster(item2.uid)) or getCreatureMaster(item2.uid) ~= cid then doPlayerSendCancel(cid, "You can only use stones on pokemons you own.") return true end if pevo.stoneid ~= item.itemid and pevo.stoneid2 ~= item.itemid then doPlayerSendCancel(cid, "This isn't the needed stone to evolve this pokemon.") return true end end local minlevel = 0 if getPokemonName(item2.uid) == "Eevee" then local eevee = specEvos["Eevee"][item.itemid] if not eevee then doPlayerSendCancel(cid, "This isn't the required stone to evolve this pokemon.") return true end minlevel = pokes[eevee].level if getPlayerLevel(cid) < minlevel then doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").") return true end doRemoveItem(item.uid, 1) doEvolvePokemon(cid, item2, eevee, 0, 0) return true end if isInArray(specialevo, getPokemonName(item2.uid)) then if getPokemonName(item2.uid) == "Poliwhirl" then local evolution = 0 local theevo = "" if item.itemid == water then if getPlayerItemCount(cid, king) >= 1 then evolution = king theevo = "Politoed" elseif getPlayerItemCount(cid, punch) >= 1 then evolution = punch theevo = "Poliwrath" else doPlayerSendCancel(cid, "You need a water stone and a punch stone (Poliwrath) or a King's Rock (Politoed) to evolve this pokemon.") return true end minlevel = pokes[theevo].level if getPlayerLevel(cid) < minlevel then doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").") return true end if getPlayerItemCount(cid, punch) >= 1 and getPlayerItemCount(cid, king) >= 1 then doPlayerSendCancel(cid, "Please, use your Punch Stone to evolve this pokemon to a Poliwrath, or a King's Rock to a Politoed.") return true end doEvolvePokemon(cid, item2, theevo, evolution, water) elseif item.itemid == punch then minlevel = pokes["Poliwrath"].level if getPlayerLevel(cid) < minlevel then doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").") return true end if getPlayerItemCount(cid, water) <= 0 then doPlayerSendCancel(cid, "You need at least one Punch Stone and one Water Stone to evolve this pokemon.") return true end local theevo = "Poliwrath" doEvolvePokemon(cid, item2, theevo, water, punch) elseif item.itemid == king then minlevel = pokes["Politoed"].level if getPlayerLevel(cid) < minlevel then doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").") return true end if getPlayerItemCount(cid, water) <= 0 then doPlayerSendCancel(cid, "You need at least one Punch Stone and one King's Rock to evolve this pokemon.") return true end local theevo = "Politoed" doEvolvePokemon(cid, item2, theevo, water, king) end elseif getPokemonName(item2.uid) == "Gloom" then local theevo = "" local evolution = 0 if item.itemid == leaf then if getPlayerItemCount(cid, venom) >= 1 then theevo = "Vileplume" evolution = venom elseif getPlayerItemCount(cid, sun) >= 1 then theevo = "Bellossom" evolution = sun else doPlayerSendCancel(cid, "You need at least one Leaf Stone, and a Sun Stone (Bellossom) or a Venom Stone (Vileplume) to evolve this pokemon.") return true end minlevel = pokes[theevo].level if getPlayerLevel(cid) < minlevel then doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").") return true end if getPlayerItemCount(cid, venom) >= 1 and getPlayerItemCount(cid, sun) >= 1 then doPlayerSendCancel(cid, "Please, use your Venom Stone to evolve this pokemon to a Vileplume, or a Sun Stone to a Bellossom.") return true end doEvolvePokemon(cid, item2, theevo, evolution, leaf) elseif item.itemid == venom then minlevel = pokes["Vileplume"].level if getPlayerLevel(cid) < minlevel then doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").") return true end if getPlayerItemCount(cid, leaf) <= 0 then doPlayerSendCancel(cid, "You need at least one Leaf Stone and one Venom Stone to evolve this pokemon.") return true end doEvolvePokemon(cid, item2, "Vileplume", venom, leaf) elseif item.itemid == sun then minlevel = pokes["Bellossom"].level if getPlayerLevel(cid) < minlevel then doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").") return true end if getPlayerItemCount(cid, leaf) <= 0 then doPlayerSendCancel(cid, "You need at least one Leaf Stone and one Sun Stone to evolve this pokemon.") return true end doEvolvePokemon(cid, item2, "Bellossom", sun, leaf) end elseif getPokemonName(item2.uid) == "Slowpoke" then if item.itemid == enigma then minlevel = pokes["Slowbro"].level if getPlayerLevel(cid) < minlevel then doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").") return true end doEvolvePokemon(cid, item2, "Slowbro", enigma, 0) elseif item.itemid == king then minlevel = pokes["Slowking"].level if getPlayerLevel(cid) < minlevel then doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").") return true end doEvolvePokemon(cid, item2, "Slowking", king, 0) end elseif getPokemonName(item2.uid) == "Tyrogue" then local evolution = "" evolution = choose("Hitmonlee", "Hitmonchan", "Hitmontop") minlevel = pokes[evolution].level if getPlayerLevel(cid) < minlevel then doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").") return true end doEvolvePokemon(cid, item2, evolution, punch, 0) end return true end local count = poevo[getPokemonName(item2.uid)].count local stnid = poevo[getPokemonName(item2.uid)].stoneid local stnid2 = poevo[getPokemonName(item2.uid)].stoneid2 local evo = poevo[getPokemonName(item2.uid)].evolution if stnid2 > 1 and (getPlayerItemCount(cid, stnid2) < count or getPlayerItemCount(cid, stnid) < count) then doPlayerSendCancel(cid, "You need at least one "..getItemNameById(stnid).." and one "..getItemNameById(stnid2).." to evolve this pokemon!") return true end if getPlayerItemCount(cid, stnid) < count then local str = "" if count >= 2 then str = "s" end return doPlayerSendCancel(cid, "You need at least "..count.." "..getItemNameById(stnid)..""..str.." to evolve this pokemon!") end minlevel = pokes[evo].level if getPlayerLevel(cid) < minlevel then doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").") return true end if count >= 2 then stnid2 = stnid end doEvolvePokemon(cid, item2, evo, stnid, stnid2) doPlayerRemoveItem(cid, stnid, count - 2) return TRUE end Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados