Ir para conteúdo

Magias Mistas


Xiaoxu

Posts Recomendados

Olá a todos! Estou aqui para tentar mostrar como se faz uma magia "mista", com vários efeitos e etc...

 

Para começar abra a pasta spells\scripts e crie um novo arquivo .lua(ou copie um e apague tudo de dentro).

Vamos dar uma olhada nessa spell já pronta.

 

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, 2.0, -150, 1.6, -150)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, 2.0, -150, 1.6, -150)

local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, 2.0, -150, 1.6, -150)

local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, 2.0, -150, 1.6, -150)

local combat5 = createCombatObject()
setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat5, COMBAT_PARAM_EFFECT, CONST_ME_WHIRLWIND)
setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, 2.0, -150, 1.6, -150)

arr1 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0},
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}

arr2 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0},
{0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}

arr3 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0},
{0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}

arr4 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}

arr5 = {
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
}

local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)
local area4 = createCombatArea(arr4)
local area5 = createCombatArea(arr5)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)
setCombatArea(combat4, area4)
setCombatArea(combat5, area5)

local function onCastSpell1(parameters)
doCombat(parameters.cid, parameters.combat1, parameters.var)
end

local function onCastSpell2(parameters)
doCombat(parameters.cid, parameters.combat2, parameters.var)
end

local function onCastSpell3(parameters)
doCombat(parameters.cid, parameters.combat3, parameters.var)
end

local function onCastSpell4(parameters)
  doCombat(parameters.cid, parameters.combat4, parameters.var)
end

local function onCastSpell5(parameters)
  doCombat(parameters.cid, parameters.combat5, parameters.var)
end

function onCastSpell(cid, var) 
local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5 }
addEvent(onCastSpell1, 0, parameters) 
addEvent(onCastSpell2, 0, parameters) 
addEvent(onCastSpell3, 0, parameters) 
addEvent(onCastSpell4, 0, parameters)
addEvent(onCastSpell5, 0, parameters)

end

 

Cada um dos

 

local combatx = createCombatObject()
setCombatParam(combatx, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combatx, COMBAT_PARAM_EFFECT, ME_EXPLOSIONAREA)
setCombatFormula(combatx, COMBAT_FORMULA_LEVELMAGIC, 2.0, -150, 1.6, -150)

 

é o tipo de dano(aqui no caso fisico), efeito visual(aqui no caso explosão) e cálculo de dano de cada uma das partes da magia(aqui no caso por ML).

 

As partes como

 

arr1 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0},
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}

 

são as áreas de cada parte da magia(cada número de area corresponde ao mesmo número nas linhas de tipo de dano, etc...

 

Esta parte

 

function onCastSpell(cid, var) 
local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5 }
addEvent(onCastSpell1, 0, parameters) 
addEvent(onCastSpell2, 0, parameters) 
addEvent(onCastSpell3, 0, parameters) 
addEvent(onCastSpell4, 0, parameters)
addEvent(onCastSpell5, 0, parameters)

 

corresponde ao tempo de execução de cada uma das partes da magia(aqui todos estão 0, a magia inteira é executada instantaneamente) em milissegundos a partir do momento em que o player pronuncia as palavras. Claro, cada um dos "addEvent(onCastSpellx, x, parameters)" corresponde ao tempo de execução de cada uma das partes da magia.

 

damnationyp7.jpg

 

Esse exemplo é uma espécie de UE com 5 efeitos diferentes, um central e quatro nas diagonais. Você pode editar cada um dos tempos, efeitos, cálculo de dano, áreas para que a magia possa ser executada de inúmeras maneiras diferentes. Pode-se botar áreas iguais, com tempos e efeitos diferentes, para que elas se sobreponham uma atrás da outra, dando vários hits. Sintam-se livres para usar o meu exemplo de qualquer maneira que achem útil. Exijo apenas créditos se forem postar em algum lugar.

 

Espero ter ajudado, dúvidas por favor postem.

 

Créditos para mim e para um usuário de outro fórum, que criou uma UE progressiva que me inspirou o tutorial.

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

  • Respostas 54
  • Created
  • Última resposta

Top Posters In This Topic

Faltou mais cor, pra dar uma melhor explicação.

Se a pessoa ler sem prestar atenção, não entende.

 

Por exemplo.

 

[color="#0000FF"]Palavra1[/color]      [color="#FF0000"]Palavra2[/color]

 

Significa Isso...

 

Signifika Akilo

 

Assim, facilita o entendimento.

 

Mas o conteúdo está ótimo, parabéns.

 

Creio que irá ajudar muitos iniciantes.

 

Abraço.

Link para o comentário
Compartilhar em outros sites

otimo tutorial msmo ;]

eh pra que versao ?

e se eu quizer fazer uma magia tpw

 

::: ::: ::: :::

 

::: = fire

::: = poison

::: = energy

::: = sd ^.-

 

tpw um exevo vis lux... soh que com "magias mistas"

 

\/ says : Exevo vis flam pox death hur.

0

/|\ ::::::::::::

.|

/ \

-----------

 

acho q deu pra entende o q eu quero fazer neh ?!?!? asehasheuiahse

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

É para versão 8.0, não testei com outras versões.

 

@capeta7 Bom, você teria que criar quatro áreas, com um quadrado cada, consecutivos em linha reta a partir do 2(que seria a posição do player que usa a magia). Cada uma das áreas deveria ter o seu respectivo efeito definido no começo da magia e o tempo de execução de cada uma das partes seria igual a 0.

Link para o comentário
Compartilhar em outros sites

Valeu.

Valeu ?

Creio que não é necessario ficar agradecendo.

 

@Post.

Parabéns ai gostei muito da pra ter uma ideia e por tal fazer divesas outras magias.

Vou fazer um Teste aqui qualquer dúvida em edito.

Editado por Mister's
Link para o comentário
Compartilhar em outros sites


×
×
  • Criar Novo...