Ir para conteúdo

Addon System (Fly, ride, surf, look e evolution)


Bodak Reborn

Posts Recomendados

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 por Bodak Reborn
Link para o comentário
Compartilhar em outros sites

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 por FlamesAdmin
Link para o comentário
Compartilhar em outros sites

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

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

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 por FlamesAdmin
Link para o comentário
Compartilhar em outros sites

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

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

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 por Bodak Reborn
Link para o comentário
Compartilhar em outros sites

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

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 por Bodak Reborn
Link para o comentário
Compartilhar em outros sites

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, 8):

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

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...