Oto przykładowy czar z neta korzystający ze starej metody:
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 1)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.5, -140, -1.6, -140)
local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 17)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1.5, -140, -1.6, -140)
local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 11)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -1.5, -140, -1.6, -140)
local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 9)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -1.5, -140, -1.6, -140)
local combat5 = createCombatObject()
setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat5, COMBAT_PARAM_EFFECT, 8)
setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -1.5, -140, -1.6, -140)
local combat6 = createCombatObject()
setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat6, COMBAT_PARAM_EFFECT, 5)
setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -1.5, -140, -1.6, -140)
arr1 = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}
arr2 = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}
arr3 = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}
arr4 = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}
arr5 = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}
arr6 = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 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)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)
setCombatArea(combat4, area4)
setCombatArea(combat5, area5)
setCombatArea(combat6, area6)
function onCastSpell1(parameters)
doCombat(parameters.cid, parameters.combat1, parameters.var)
end
function onCastSpell2(parameters)
doCombat(parameters.cid, parameters.combat2, parameters.var)
end
function onCastSpell3(parameters)
doCombat(parameters.cid, parameters.combat3, parameters.var)
end
function onCastSpell4(parameters)
doCombat(parameters.cid, parameters.combat4, parameters.var)
end
function onCastSpell5(parameters)
doCombat(parameters.cid, parameters.combat5, parameters.var)
end
function onCastSpell6(parameters)
doCombat(parameters.cid, parameters.combat6, 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 }
addEvent(onCastSpell1, 0, parameters)
addEvent(onCastSpell2, 500, parameters)
addEvent(onCastSpell3, 1000, parameters)
addEvent(onCastSpell4, 1600, parameters)
addEvent(onCastSpell5, 2000, parameters)
addEvent(onCastSpell6, 2500, parameters)
end
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 1)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.5, -140, -1.6, -140)
local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 17)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1.5, -140, -1.6, -140)
local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 11)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -1.5, -140, -1.6, -140)
local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 9)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -1.5, -140, -1.6, -140)
local combat5 = createCombatObject()
setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat5, COMBAT_PARAM_EFFECT, 8)
setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -1.5, -140, -1.6, -140)
local combat6 = createCombatObject()
setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat6, COMBAT_PARAM_EFFECT, 5)
setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -1.5, -140, -1.6, -140)
arr1 = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}
arr2 = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}
arr3 = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}
arr4 = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}
arr5 = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}
arr6 = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 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)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)
setCombatArea(combat4, area4)
setCombatArea(combat5, area5)
setCombatArea(combat6, area6)
function onCastSpell1(parameters)
doCombat(parameters.cid, parameters.combat1, parameters.var)
end
function onCastSpell2(parameters)
doCombat(parameters.cid, parameters.combat2, parameters.var)
end
function onCastSpell3(parameters)
doCombat(parameters.cid, parameters.combat3, parameters.var)
end
function onCastSpell4(parameters)
doCombat(parameters.cid, parameters.combat4, parameters.var)
end
function onCastSpell5(parameters)
doCombat(parameters.cid, parameters.combat5, parameters.var)
end
function onCastSpell6(parameters)
doCombat(parameters.cid, parameters.combat6, 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 }
addEvent(onCastSpell1, 0, parameters)
addEvent(onCastSpell2, 500, parameters)
addEvent(onCastSpell3, 1000, parameters)
addEvent(onCastSpell4, 1600, parameters)
addEvent(onCastSpell5, 2000, parameters)
addEvent(onCastSpell6, 2500, parameters)
end
Spójrzmy jednak na taki czar:
function ShortSpell(dmg,arr,effect,min1,min2,max1,max1)
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, dmg)
setCombatParam(combat, COMBAT_PARAM_EFFECT, effect)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, min1, min2, max1, max2)
local area = createCombatArea(arr)
setCombatArea(combat, area)
return combat
end
local function onCastSpellEx(parameters)
doCombat(parameters.cid, parameters.cmb, parameters.var)
end
arr = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}
cmb1 = ShortSpell(COMBAT_PHYSICALDAMAGE,arr,1,-1.5,-140,-1,6,-140)
cmb2 = ShortSpell(COMBAT_PHYSICALDAMAGE,arr,17,-1.5,-140,-1,6,-140)
cmb3 = ShortSpell(COMBAT_PHYSICALDAMAGE,arr,11,-1.5,-140,-1,6,-140)
cmb4 = ShortSpell(COMBAT_PHYSICALDAMAGE,arr,9,-1.5,-140,-1,6,-140)
cmb5 = ShortSpell(COMBAT_PHYSICALDAMAGE,arr,8,-1.5,-140,-1,6,-140)
cmb6 = ShortSpell(COMBAT_PHYSICALDAMAGE,arr,5,-1.5,-140,-1,6,-140)
function onCastSpell(cid, var)
addEvent(onCastSpellEx, 1000, {cid = cid, var = var, cmb=cmb1})
addEvent(onCastSpellEx, 2000, {cid = cid, var = var, cmb=cmb2})
addEvent(onCastSpellEx, 3000, {cid = cid, var = var, cmb=cmb3})
addEvent(onCastSpellEx, 4000, {cid = cid, var = var, cmb=cmb4})
addEvent(onCastSpellEx, 5000, {cid = cid, var = var, cmb=cmb5})
addEvent(onCastSpellEx, 6000, {cid = cid, var = var, cmb=cmb6})
end
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, dmg)
setCombatParam(combat, COMBAT_PARAM_EFFECT, effect)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, min1, min2, max1, max2)
local area = createCombatArea(arr)
setCombatArea(combat, area)
return combat
end
local function onCastSpellEx(parameters)
doCombat(parameters.cid, parameters.cmb, parameters.var)
end
arr = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}
cmb1 = ShortSpell(COMBAT_PHYSICALDAMAGE,arr,1,-1.5,-140,-1,6,-140)
cmb2 = ShortSpell(COMBAT_PHYSICALDAMAGE,arr,17,-1.5,-140,-1,6,-140)
cmb3 = ShortSpell(COMBAT_PHYSICALDAMAGE,arr,11,-1.5,-140,-1,6,-140)
cmb4 = ShortSpell(COMBAT_PHYSICALDAMAGE,arr,9,-1.5,-140,-1,6,-140)
cmb5 = ShortSpell(COMBAT_PHYSICALDAMAGE,arr,8,-1.5,-140,-1,6,-140)
cmb6 = ShortSpell(COMBAT_PHYSICALDAMAGE,arr,5,-1.5,-140,-1,6,-140)
function onCastSpell(cid, var)
addEvent(onCastSpellEx, 1000, {cid = cid, var = var, cmb=cmb1})
addEvent(onCastSpellEx, 2000, {cid = cid, var = var, cmb=cmb2})
addEvent(onCastSpellEx, 3000, {cid = cid, var = var, cmb=cmb3})
addEvent(onCastSpellEx, 4000, {cid = cid, var = var, cmb=cmb4})
addEvent(onCastSpellEx, 5000, {cid = cid, var = var, cmb=cmb5})
addEvent(onCastSpellEx, 6000, {cid = cid, var = var, cmb=cmb6})
end
Nie musimy pisać combat = ... itd. tyle razy, ile chcemy użyć addEvent. Teraz to proste ;)
function ShortSpell(dmg,arr,effect,min1,min2,max1,max1)
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, dmg)
setCombatParam(combat, COMBAT_PARAM_EFFECT, effect)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, min1, min2, max1, max2)
local area = createCombatArea(arr)
setCombatArea(combat, area)
return combat
end
local function onCastSpellEx(parameters)
doCombat(parameters.cid, parameters.cmb, parameters.var)
end
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, dmg)
setCombatParam(combat, COMBAT_PARAM_EFFECT, effect)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, min1, min2, max1, max2)
local area = createCombatArea(arr)
setCombatArea(combat, area)
return combat
end
local function onCastSpellEx(parameters)
doCombat(parameters.cid, parameters.cmb, parameters.var)
end
Następnie określamy obszar czaru:
arr = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}
cmb1 = ShortSpell(COMBAT_PHYSICALDAMAGE,arr,1,-1.5,-140,-1,6,-140)
Drugi to obszar czaru, czyli w naszym przypadku arr.
Trzeci to wygląd czaru - czyli numer efektu.
Parametry od 4 do 6 to obrażenia czaru. Są identyczne z
setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -1.5, -140, -1.6, -140)
Zapraszam do korzystania z tego systemu, gdyż to poważnie skraca kod i czas pracy nad czarami z addEventem, a przecież nie chcemy mieć śmietnika ;]
Zakładki