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!