Ir para conteúdo

Magias Com Vários Efeitos


cheveko

Posts Recomendados

Olá pessoal XTibiano! Estou aqui para ensinar a vocês como criar magia com aqueles vários efeitos em UMA só!

 

Bom, vou postar uma magia aqui, e vou explicar em partes:

 

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 36)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 36)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 36)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 36)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

local combat5 = createCombatObject()
setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat5, COMBAT_PARAM_EFFECT, 36)
setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

local combat6 = createCombatObject()
setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat6, COMBAT_PARAM_EFFECT, 36)
setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

local combat7 = createCombatObject()
setCombatParam(combat7, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat7, COMBAT_PARAM_EFFECT, 36)
setCombatFormula(combat7, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

local combat8 = createCombatObject()
setCombatParam(combat8, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat8, COMBAT_PARAM_EFFECT, 36)
setCombatFormula(combat8, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

local combat9 = createCombatObject()
setCombatParam(combat9, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat9, COMBAT_PARAM_EFFECT, 36)
setCombatFormula(combat9, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

local combat10 = createCombatObject()
setCombatParam(combat10, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat10, COMBAT_PARAM_EFFECT, 36)
setCombatFormula(combat10, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

 

Aqui é o CORPO da magia. Como assim o Corpo? É o EFEITO, DANO, FORMULA DE DANO da MAGIA!

 

local combat10 = createCombatObject(): É o número do efeito da magia, ou seja, não pode ser repetido, senão a magia vai se repetir, então coloque em ordem: 1,2,3~

 

setCombatParam(combat10, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE): É o DANO que a magia irá dar, exemplo: Se quiser um dano de ENERGIA, você põe: setCombatParam(combat10, COMBAT_PARAM_TYPE,COMBAT_ENERGYDAMAGE

 

setCombatParam(combat10, COMBAT_PARAM_EFFECT, 36): Aqui é o efeito de quando a MAGIA for ATINGIR o alvo, exemplo: Quando você soltar um Exori Flam no alvo terá uma explosão de fogo, então aqui será o efeito que você quiser. Os efeitos podem ser encontrados no Global, na pasta DATA do seu OT

 

setCombatFormula(combat10, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15): Caso seu OT seja assim, a formula é complicada, não sei direito mais ACHO que é assim: Aqui está no sentido de MAGIC LEVEL entao será, 0.1*ML, -10DANO, (MINIMO) -0.3*ML, -15DANO (MÁXIMO) (Os danos estão em -, pra dar dano NEGATIVO nos alvos), eu já prefiro por essa fórmula:

function onGetFormulaValues(cid, level, maglevel)

min = -(maglevel * 3) - 5 (Aqui será o dano Mínimo, ML * 3) - 5 (Já expliquei o por que do dano NEGATIVO)

max = -(maglevel * 3) - 10 (Aqui será o dano Máximo, ML * 3) - 10(Já expliquei o por que do dano NEGATIVO)

 

Muito bem! Aprendemos o corpo da Magia!

 

Agora vamos Aprender as ÁREAS.

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

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

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

local arr4 = {
{0, 0, 0,},
{0, 3, 0,},
{0, 0, 0,},
{0, 0, 0,},
}

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

local arr6 = {
{0, 0, 0,},
{0, 2, 0,},
{0, 0, 0,},
{0, 0, 1,},
}

local arr7 = {
{0, 0, 0,},
{0, 2, 0,},
{0, 0, 1,},
{0, 0, 0,},
}

local arr8 = {
{0, 0, 0,},
{0, 2, 1,},
{0, 0, 0,},
{0, 0, 0,},
}

local arr9 = {
{0, 0, 0,},
{0, 3, 0,},
{0, 0, 0,},
{0, 0, 0,},
}

local arr10 = {
{0, 0, 0,},
{1, 2, 0,},
{0, 0, 0,},
{0, 0, 0,},
}

 

Muito bem! No local arr1~10 = { é a ÁREA do corpo da MAGIA que fizemos acima, exemplo: No local arr10 = { É a área do Corpo da Magia "10" = local combat10 = createCombatObject()

Agora vou explicar os 0,1,2,3... Bom, no 0 é onde a magia NÃO sera afetada, no 1 é o onde a magia SERÁ afetada, no 2 é onde será sintuado o PERSONAGEM, no 3 é quando a magia também cairá sobre o JOGADOR, só que ele não será afetado.

 

Muito bem! Aprendemos a Área!

 

Bom, agora você será "obrigado" a por isso, é apenas um complemento pros efeitos:

 

local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)
local area4 = createCombatArea(arr4)
local area5 = createCombatArea(arr5)
local area6 = createCombatArea(arr6)
local area7 = createCombatArea(arr7)
local area8 = createCombatArea(arr8)
local area9 = createCombatArea(arr9)
local area10 = createCombatArea(arr10)

setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)
setCombatArea(combat4, area4)
setCombatArea(combat5, area5)
setCombatArea(combat6, area6)
setCombatArea(combat7, area7)
setCombatArea(combat8, area8)
setCombatArea(combat9, area9)
setCombatArea(combat10, area10)

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

local function onCastSpell6(parameters)
doCombat(parameters.cid, parameters.combat6, parameters.var)
end

local function onCastSpell7(parameters)
doCombat(parameters.cid, parameters.combat7, parameters.var)
end

local function onCastSpell8(parameters)
doCombat(parameters.cid, parameters.combat8, parameters.var)
end

local function onCastSpell9(parameters)
doCombat(parameters.cid, parameters.combat9, parameters.var)
end

local function onCastSpell10(parameters)
doCombat(parameters.cid, parameters.combat10, parameters.var)
end

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var,combat1 = combat1,combat2 = combat2,combat3 = combat3,combat4 = combat4,combat5 = combat5,combat6 = combat6,combat7 = combat7,combat8 = combat8,combat9 = combat9,combat10 = combat10 }

 

Aqui você terá que por TODAS as Áreas feitas na sua Magia! Lembrando de seguir as ordens 1,2,3,4~

 

Agora a duração de cada Magia

No final, vamos por apenas o tempo das Magias...

 

addEvent(onCastSpell1, 0, parameters)

addEvent(onCastSpell2, 200, parameters)

addEvent(onCastSpell3, 400, parameters)

addEvent(onCastSpell4, 600, parameters)

addEvent(onCastSpell5, 800, parameters)

addEvent(onCastSpell6, 1000, parameters)

addEvent(onCastSpell7, 1200, parameters)

addEvent(onCastSpell8, 1400, parameters)

addEvent(onCastSpell9, 1600, parameters)

addEvent(onCastSpell10, 1800, parameters)

end

 

Aqui é o seguinte, quantos segundos após um efeito, outro efeito acontecerá? Aqui está assim: a cada 0.2 segundos acontece um efeito...

Lembrando que:

0 = Acontecimento IMEDIATO

1000 = 1 segundo

 

Se você quiser enfeitar mais, você pode por textos animados como: doSendAnimatedText(getThingPos(cid), "NOME!", TEXTCOLOR_COR)

 

Agora, a magia ficaria assim:

local combat1 = createCombatObject()

setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat1, COMBAT_PARAM_EFFECT, 36)

setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

 

local combat2 = createCombatObject()

setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat2, COMBAT_PARAM_EFFECT, 36)

setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

 

local combat3 = createCombatObject()

setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat3, COMBAT_PARAM_EFFECT, 36)

setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

 

local combat4 = createCombatObject()

setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat4, COMBAT_PARAM_EFFECT, 36)

setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

 

local combat5 = createCombatObject()

setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat5, COMBAT_PARAM_EFFECT, 36)

setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

 

local combat6 = createCombatObject()

setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat6, COMBAT_PARAM_EFFECT, 36)

setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

 

local combat7 = createCombatObject()

setCombatParam(combat7, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat7, COMBAT_PARAM_EFFECT, 36)

setCombatFormula(combat7, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

 

local combat8 = createCombatObject()

setCombatParam(combat8, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat8, COMBAT_PARAM_EFFECT, 36)

setCombatFormula(combat8, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

 

local combat9 = createCombatObject()

setCombatParam(combat9, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat9, COMBAT_PARAM_EFFECT, 36)

setCombatFormula(combat9, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

 

local combat10 = createCombatObject()

setCombatParam(combat10, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat10, COMBAT_PARAM_EFFECT, 36)

setCombatFormula(combat10, COMBAT_FORMULA_LEVELMAGIC, -0.1, -10, -0.3, -15)

 

local arr1 = {

{0, 0, 0,},

{0, 2, 0,},

{0, 0, 0,},

{1, 0, 0,},

}

 

local arr2 = {

{0, 0, 0,},

{0, 2, 0,},

{1, 0, 0,},

{0, 0, 0,},

}

 

local arr3 = {

{0, 0, 0,},

{1, 2, 0,},

{0, 0, 0,},

{0, 0, 0,},

}

 

local arr4 = {

{0, 0, 0,},

{0, 3, 0,},

{0, 0, 0,},

{0, 0, 0,},

}

 

local arr5 = {

{0, 0, 0,},

{0, 2, 1,},

{0, 0, 0,},

{0, 0, 0,},

}

 

local arr6 = {

{0, 0, 0,},

{0, 2, 0,},

{0, 0, 0,},

{0, 0, 1,},

}

 

local arr7 = {

{0, 0, 0,},

{0, 2, 0,},

{0, 0, 1,},

{0, 0, 0,},

}

 

local arr8 = {

{0, 0, 0,},

{0, 2, 1,},

{0, 0, 0,},

{0, 0, 0,},

}

 

local arr9 = {

{0, 0, 0,},

{0, 3, 0,},

{0, 0, 0,},

{0, 0, 0,},

}

 

local arr10 = {

{0, 0, 0,},

{1, 2, 0,},

{0, 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)

local area6 = createCombatArea(arr6)

local area7 = createCombatArea(arr7)

local area8 = createCombatArea(arr8)

local area9 = createCombatArea(arr9)

local area10 = createCombatArea(arr10)

 

setCombatArea(combat1, area1)

setCombatArea(combat2, area2)

setCombatArea(combat3, area3)

setCombatArea(combat4, area4)

setCombatArea(combat5, area5)

setCombatArea(combat6, area6)

setCombatArea(combat7, area7)

setCombatArea(combat8, area8)

setCombatArea(combat9, area9)

setCombatArea(combat10, area10)

 

 

 

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

 

local function onCastSpell6(parameters)

doCombat(parameters.cid, parameters.combat6, parameters.var)

end

 

local function onCastSpell7(parameters)

doCombat(parameters.cid, parameters.combat7, parameters.var)

end

 

local function onCastSpell8(parameters)

doCombat(parameters.cid, parameters.combat8, parameters.var)

end

 

local function onCastSpell9(parameters)

doCombat(parameters.cid, parameters.combat9, parameters.var)

end

 

local function onCastSpell10(parameters)

doCombat(parameters.cid, parameters.combat10, parameters.var)

end

 

 

 

function onCastSpell(cid, var)

local parameters = { cid = cid, var = var,combat1 = combat1,combat2 = combat2,combat3 = combat3,combat4 = combat4,combat5 = combat5,combat6 = combat6,combat7 = combat7,combat8 = combat8,combat9 = combat9,combat10 = combat10 }

 

doSendAnimatedText(getThingPos(cid), "MAGIA!", TEXTCOLOR_RED)

 

addEvent(onCastSpell1, 0, parameters)

addEvent(onCastSpell2, 200, parameters)

addEvent(onCastSpell3, 400, parameters)

addEvent(onCastSpell4, 600, parameters)

addEvent(onCastSpell5, 800, parameters)

addEvent(onCastSpell6, 1000, parameters)

addEvent(onCastSpell7, 1200, parameters)

addEvent(onCastSpell8, 1400, parameters)

addEvent(onCastSpell9, 1600, parameters)

addEvent(onCastSpell10, 1800, parameters)

end

 

Caso queira adicionar mais algum efeito, somente precisa por +1 CORPO pra magia, +1 Área, +1 Complemento, +1 Tempo de Duração

 

Bem pessoal! É isso! Espero que tenham entendido!

 

Aceito críticas, xingamentos, esculachamentos e sugestões, apesar, estou querendo ajudar os novatos! Então... É isso que consigo ajudar!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...