Opa galerinha, tranquilo?
Eu vi que tem um pessoal pedindo um tutorial de como criar um pokémon na base do PokéLight. Então resolvi fazê-lo!
Lembrando, eu irei adicionar uma Chikorita, mas o processo é o mesmo para qual quer outro pokémon!
Quais items devo criar?
Você deve criar um item (Portrait) com atributos de Not Moveable e Pickupable.
Com a configuração no items.xml assim:
<item id="ITEMID" article="a" name="portrait"> <attribute key="slotType" value="legs"/> </item>
E deve ser criado também um item (Corpse) com atributo de Not Moveable.
Com a configuração no items.xml assim:
<item id="ITEMID" article="a" name="fainted POKENAME"> <attribute key="containerSize" value="8" /> <attribute key="decayTo" value="0" /> <attribute key="duration" value="60" /> </item>
Não deve ser alterado nada além do que o informado!
Como o XML deve ser feito?
Primeiramente você deve ir em data/monster/ e criar uma pasta ou neste mesmo diretório já criar o XML dele.
Como na imagem anterior, eu criei a pasta NewPokemons e nela adicionei o Chikorita.xml.
Dentro do Chikorita.xml você deve adicionar isso:
<?xml version="1.0" encoding="UTF-8"?><monster name="Chikorita" nameDescription="a chikorita" race="blood" experience="5" speed="100" manacost="200"> <health now="20" max="20"/> <look type="1" corpse="12804"/> <targetchange interval="2000" chance="0"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="1"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="1"/> <flag convinceable="1"/> <flag pushable="1"/> <flag canpushitems="0"/> <flag canpushcreatures="0"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="2000" skill="10" attack="10"/> </attacks> <defenses armor="0" defense="0"/> <voices interval="5000" chance="50"> <voice sentence="Chiko!"/> <voice sentence="Chikoriiita!"/> </voices> <loot> </loot></monster>
O que é importante mudar?
<monster name="Chikorita" nameDescription="a chikorita" race="blood" experience="5" speed="100" manacost="200">
Deve-se mudar o name e nameDescription de acordo com o nome do pokémon!
<look type="1" corpse="12804"/>
Em type, você deve colocar o looktype do pokémon que é encontrado no client.
Já em corpse você deve por o itemID do corpse que você deve criar no server.
Como devo configurar o pokémon?
Para finalizar tudo, vá em data/lib/ e abra o arquivo 200 - Pokemon Tables.lua:
Na tabela poke_status você deve adicionar isso:
["POKENAME"] = {hp = 45, attack = 49, defense = 49, sp_attack = 65, sp_defense = 70, speed = 45, type1 = "grass", type2 = "poison", gender = 875, level = 1},
- Você deve alterar POKENAME para o nome do pokémon (Lembrando, a primeira letra deve ser Maiúscula), por exemplo, "Chikorita".
- Em gender, caso você por 0 vai ser 100% de chance de ser fêmea,
- Se colocar 1000 vai ser 100% de chance de ser macho,
- Se colocar um valor maior que 1000, vai ser 100% de chance de ser genderless
- Caso, o valor esteja entre 0 e 1000, quanto maior o valor, mais chance de ser macho.
- Em level, você coloca o level mínimo para o player utilizar este pokémon.
- Em type1/type2 você deve colocar o type do pokémon, caso ele não tenha, você deve colocar "none"
- O resto é auto-explicativo
Na tabela poke_special você deve adicionar isso:
["POKENAME"] = {level_min = 001, fotopoke = 12538, light = false, blink = false, rocksmash = false, cut = true, dig = false},
- Em POKENAME você colocar o nome do pokémon, lembrando a primeira letra é maiúscula, por exemplo, Chikorita.
- Em level_min não precisa mexer.
- Em fotopoke você coloca o ItemID do portrait.
- O restante você coloca true ou false, caso queira que ele tenha essa habilidade.
Na tabela poke_catch você deve adicionar isso:
["POKENAME"] = {chance = 5, exp = 1000 , stoCatch = 666001, dex_exp = 50},
- Em POKENAME você colocar o nome do pokémon, lembrando a primeira letra é maiúscula, por exemplo, Chikorita.
- Em chance você coloca a chance de catch do pokémon, lembrando que quanto maior, mais dificil o catch.
- Em exp você coloca a exp ganha ao dar catch
- Em stoCatch você deve por sempre um valor maior que o anterior
- Em dex_exp é a exp ganha ao dar dex no pokémon
Na tabela pokesPrice você deve adicionar isso:
["POKENAME"] = {price = 3000},
- Em price você deve colocar o preço que irá aparecer ao dar look da pokeball.
Na tabela PokeMoves você deve adicionar isso:
['POKENAME'] = { [1] = {spell = "MOVE NAME", minLv = 1, min = 10, max = 20, target = "yes",dista = 7 , cd = 3}, },
- Em spell você coloca o nome da spell, lembrando que ela deve existir!
- Em minLv você coloca o level mínimo para o player utilizar a spell
- Em min e max você coloca a proporção de dano que essa spell dá.
- Em target você coloca "yes", caso a spell precise de target ou "no". Lembrando que não pode ser nenhum diferente desses 2
- Em dista você coloca a distancia mínima, caso tenha target, em que o pokémon pode utilizar a magia.
- Em cd você coloca o tempo mínimo para utilizar a spell novamente
- Para adicionar uma nova magia você deve colocar outra barra neste estilo:
[2] = {spell = "MOVE NAME", minLv = 1, min = 10, max = 20, target = "no",dista = 1 , cd = 3},
Caso queira que o pokémon tenha ride ou fly, você deve ir em data/lib/201 - Geral configs.lua
Para que o pokemon tenha ride ou fly, você deve colocar isso na tabela rides ou flys:
["POKENAME"] = {looktype = 252, speed = 150},
- Em looktype você coloca a looktype que o player fica ao dá ride
- Em speed você coloca a velocidade extra que o player ganha
Para adicionar uma evolução ao pokemon você deve ir na tabela pokeevo e adicionar isso nela:
["POKENAME"] = { evo = "POKENAME EVO", count = 1, stoneid = 7752, stoneid2 = 0, level = 16},
- Em POKENAME EVO, você deve colocar o nome da evolução do POKENAME, lembrando que a primeira letra é sempre maiúscula.
- Em stoneid você coloca o ItemID da primeira stone utilizada no pokémon.
- Em stoneid2, caso o pokémon utiliza + de 1 tipo de stone, você deve colocar o ItemID da segunda stone.
- Caso você colocar 2 em count vai utilizar 2x da primeira stone.
Pessoal, espero que gostem do tutorial!
Qual quer coisa faltando ou erro só avisar que eu corrijo