Ir para conteúdo

Adicionando novas spells - PDA


Slicer

Posts Recomendados

Ola galera hoje trago para vocês um tutorial de como adicionar novas spells aos pokemons em um servidor 'PDA'...
Tutorial feito a pedido do usuario: @josegremista

Importante: Antes de começar gostaria de deixar claro que criar uma nova spell em um servidor de pokemon eh totalmente diferente que criar uma spell em um servidor de tibia, as spells de pokemon são criadas em lib/pokemon moves.lua e não na pasta spells como no tibia... A pasta spells vai simplismente 'chamar' as spells feitas na pasta lib.

Vão em lib/pokemon moves.lua e achem isso..
Caso estejam usando meu servidor:

--/////////////////////// PASSIVAS /////////////////////////--
Caso usem outro tipo de 'PDA', vão ao final do script e achem isso:
end
return true
end

E entao adicionem um outro 'elseif'...
elseif spell == "xxxx" then
Onde "xxxx" é o nome da nova spell...

E então embaixo disso, criem o script da nova spell..
Exemplo:
local pos = getThingPosWithDebug(cid)

doMoveInArea2(cid, 91, inferno1, FIREDAMAGE, 0, 0, spell)
addEvent(doDanoWithProtect, math.random(100, 400), cid, FIREDAMAGE, pos, inferno2, -min, -max, 0)

Importante: Caso usem meu servidor, aconcelho a olharem o arquivo lib/newStatusSyst.lua, la estão todas as funções de dano do servidor...

Importante: Não coloquem areas de spells nesse arquivo! As areas de spells devem ser colocadas em lib/areas.lua, para deixar o outro script mais organizado...

Depois de criado o script da spell, vão em lib/configuration.lua e achem a tabela movestable, e então adicionem a nova spell nos pokes q vocês quiserem...
No meu 'PDA' usem:
move1 = {name = "xxxx", level = aa, cd = bb, dist = cc, target = dd, f = ee, t = "yyyy"},
Onde:
"xxxx" = nome da spell,
aa = level que o poke/player precisa ter para usar a spell,
bb = cd, tempo de espera, para usar a spell denovo,
cc = distância minima que o poke tem q tar pra usar a spell,
dd = coloquem 1, caso precise ter um target pra usar a spell, ou coloquem 0, caso não precise de target pra usar a spell,
ee = esse é o 'dano' da spell, esse valor vai ser usado na formula final de dano de cada spell -caso seja uma spell que não tem dano coloquem 0-,
"yyyy" = é o 'tipo' da spell -"grass", "water", "fire"...-

Caso usem outro tipo de 'PDA' usem:
move1 = {name = "xxxx", level = aa, cd = bb, dist = cc, target = dd},
Onde:
"xxxx" = nome da spell,
aa = level que o poke/player precisa ter para usar a spell,
bb = cd, tempo de espera, para usar a spell denovo,
cc = distância minima que o pokemon tem que tar pra usar a spell,
dd = coloquem 1, caso precise ter um target pra usar a spell, ou coloquem 0, caso nao precise de target pra usar a spell

Importante: caso usem outro tipo de 'PDA' o dano e o 'tipo' da spell ficam em lib/moves.lua...
["xxxx"] = {f = aa, t = "yyyy"},
Onde:
"xxxx" = nome da spell,
aa = esse é o 'dano' da spell, esse valor vai ser usado na formula final de dano de cada skill -caso seja uma skill que n]ao tem dano coloquem 0-,
"yyyy" = é o tipo da spell -"grass", "water", "fire"...

Depois de feito isso, vão em spells/ps/ e copiem algum arquivo la e mudem o nome para o nome da sua nova spell e depois abram esse arquivo e mudem isso:
docastspell(cid, "xxxx")
Onde "xxxx" é o nome da spell...

Depois abram o arquivo spells/spells.xml e adicionem uma nova linha...
<instant name="xxxx" words="yyyy" lvl="1000" mana="0" event="script" value="ps/xxxx.lua"></instant>
Onde:
"xxxx" = nome da nova spell,
"yyyy" = vocês colocam "spellYYY" onde "YYY" eh o proximo numero em sequencia, olhem a ultima spell adicionada q vocês vão intender...

E por ultimo, vão em monster/pokes/ e adicionem a spell nos pokemons que vocês quiserem...
<attack name="xxxx" interval="yyyy" chance="zzzz" range="aaaa"/>
Onde:
"xxxx" = nome da spell,
"yyyy" = de quanto em quantos, milésimos de segundos -1s = 1000-, o pokemon tentara usar a spell,
"zzzz" = a chance do pokemon conseguir usar a spell,
"aaaa" = distância minima pro pokemon começar a usar a spell

Pronto, espero q vocês gostem do tutorial. Qualquer erro ou se faltou alguma coisa me avisem para eu editar o post ^^ Editado por Slicer
Link para o comentário
Compartilhar em outros sites

@Slicer uma dúvida em Areas Devemos colocar o que?? Ah tipo se eu usar o spells maker pra criar a area tipo :

area = {

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},

{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},

{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},

{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},

{1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1},

{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},

{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},

{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},

{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

}

 

isso que devemos colocar em Area é ?

 

E usando o spells maker pra criar da error em algum coisa ?

Link para o comentário
Compartilhar em outros sites

mano podes usar as outras areas la como exemplo... mas tpw.. depende de qual funçao de dano tu usar...

se usar as principais: doMoveInArea2 e doMoveInAreaMulti, utilize desse jeito ae q tu coloco, soh lembrando de inventar um nome diferente pras areas neh...

caso use outras funçoes de dano tem q usar assim..

SilverWing = createCombatArea{
{1, 0, 1},
{0, 3, 0},
{1, 0, 1},
}

Link para o comentário
Compartilhar em outros sites

@Slicer tipo num tem o efeio da habibildade do poke tipo quando o Dragonite solta um Meteoro do Dragão. Ai começa a subir um foginho vermelho pro cel e dps cai no chão, Ai como faço para alterar o efeito da habilidade entendeu algo ? Esse efeito, num precisa pegar o efeito no usando o dat editor pra saber o id dele lá ?

Editado por josegremista
Link para o comentário
Compartilhar em outros sites

clr neh mano.. ;x mas dai depender de quais funçoes de dano tu vai usar.. ;/ exemplo do draco..

 

elseif spell == "Draco Meteor" then

 

local effD = 5

local eff = 248

local master = isSummon(cid) and getCreatureMaster(cid) or cid

 

local function doFall(cid)

for rocks = 5, 42 do

addEvent(fall, rocks*35, cid, master, DRAGONDAMAGE, effD, eff)

end

end

 

for up = 1, 10 do

addEvent(upEffect, up*75, cid, effD)

end

addEvent(doFall, 450, cid)

addEvent(doDanoWithProtect, 1400, cid, DRAGONDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)

 

em vermelho ali eh os efeitos q vao ser usados... mas dai vai de quem ta criando as spells ;/

Link para o comentário
Compartilhar em outros sites

@Slicer Minha última dúvida tipo eu vejo no dat editor o tipo qual id eu coloco do efeito tipo em no 1°que vc marcou em vermelho o local effD = 5 no Dat editor séria o Ditance ? e o segundo local eff = 248 Séria o Effects?

 

 

Vou mostrar uma print do dat edito e tu diz se eu acertei o lugar do efeito O 1 local effD = 533; o primeiro que eu falei que o 2 local eff = 248; o Segundo:

 

 

Acertei os lugares certos ? o local effD = 5 inves de 5 séria local effD = 56

e o local eff = 248 ao inves de 248 séria local eff = 265 ??

 

 

Vish disfarça dei uma olhada no dat editor e descobri como é eu tenho que procura o itemtype, meu deus como eu sou burro.

 

Veja as prints que eu tirei do dat editor da minha burrise

Print 1

post-354920-0-44864100-1357137622_thumb.png

 

 

Print 2

post-354920-0-08562900-1357137612_thumb.png

 

 

Malz ae pela minha burrise.

Editado por josegremista
Link para o comentário
Compartilhar em outros sites

Legal seu tutorial, Slicer, dá dicas bem legais para servidores de Pokétibia. Mas, eu, geralmente, espero de um tutorial, algo um pouco mais formal, com a gramática correta e sem internetês.

 

Abraços.

Link para o comentário
Compartilhar em outros sites

@oneShot

eh eh, eu estava realmente com um pouco de pressa... e meu pt nem eh la essas coisas... dei uma editada no texto.. ^^

 

@dino

ty ^^

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...