• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

TFS 1.X+ Need help Converting 3 Spells from TFS 0.4 (8.6) to TFS 1.3 (10.98)

jo31

New Member
Joined
May 24, 2010
Messages
72
Reaction score
3
Location
Sweden
Twitch
Byrre_
YouTube
Byrre6969
As the title says i need help converting these TFS 0.4 spells into TFS 1.3 language, im very new at using TFS 1.X so im still learning but i cant seem to understand what the difference is and what to change and where to change, so i ask for help so i can maybe understand it later on.
Really Appreciate the help <3



1.
C++:
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, 1)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 37)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -10, -320, -10, 330)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, 1)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 4)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -11, -403, -11, -403)

local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, 1)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 37)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -3, -210, -3, -230)

arr1 = {
{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, 1, 1, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0},
{0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0},
{0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 0, 1, 1, 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, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 0},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 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, 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, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 3, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
}

local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)

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

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

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

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var}
addEvent(onCastSpell1, 0, parameters)
addEvent(onCastSpell2, 0, parameters)
addEvent(onCastSpell3, 0, parameters)
return TRUE
end






2.


C++:
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, 1)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 4)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -14, -166, -14, -170)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, 1)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 17)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -14, -176, -15, -179)

local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, 1)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 17)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -13, -185, -14, -190)

arr1 = {
{0, 0, 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, 0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0},
{0, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 0},
{0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 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, 0, 0}
}
arr2 = {
{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, 1, 1, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0},
{0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0},
{0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0},
{0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 0, 1, 1, 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, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 3, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
}
local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)

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

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

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

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var}
addEvent(onCastSpell1, 0, parameters)
addEvent(onCastSpell2, 0, parameters)
addEvent(onCastSpell3, 0, parameters)
return TRUE
end



3.
C++:
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, 1)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 37)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -10, -500, -11, -1100)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, 1)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 17)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -10, -500, -11, -1100)

local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, 1)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 17)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -10, -550, -11, -1300)

arr1 = {
{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, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0},
{0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0},
{0, 0, 1, 0, 1, 0, 3, 0, 1, 0, 1, 0, 0},
{0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0},
{0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 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, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0},
{0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0},
{0, 1, 0, 1, 0, 1, 3, 1, 0, 1, 0, 1, 0},
{0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0},
{0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 1, 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, 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, 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},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)

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

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

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

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var}
addEvent(onCastSpell1, 0, parameters)
addEvent(onCastSpell2, 0, parameters)
addEvent(onCastSpell3, 0, parameters)
return TRUE
end
 
Solution
I will do this. In fact, I'll do even better. I'll make a video on how it's done.
Post automatically merged:

Alright. Tutorial will be here. I'm not a YouTuber, and this wasn't scripted, so don't expect production quality
I really didn't like that, so I tried again as I was converting the second spell. 😞

I'll leave the third spell as an exercise for you.

LUA:
local denseBlast = {
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0 },
    { 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0 },
    { 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0 },
    { 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0 },
    { 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0 },
    { 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0 },
    { 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0 },
    { 0...
I will do this. In fact, I'll do even better. I'll make a video on how it's done.
Post automatically merged:

Alright. Tutorial will be here. I'm not a YouTuber, and this wasn't scripted, so don't expect production quality
I really didn't like that, so I tried again as I was converting the second spell. 😞

I'll leave the third spell as an exercise for you.

LUA:
local denseBlast = {
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0 },
    { 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0 },
    { 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0 },
    { 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0 },
    { 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0 },
    { 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0 },
    { 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0 },
    { 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0 },
    { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
}

local cardinalBlast = {
    { 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 focusBlast = {
    { 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, 1, 0, 0, 3, 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 },
}

local magicBlastDense    = createCombatArea(denseBlast)
local magicBlastCardinal = createCombatArea(cardinalBlast)
local magicBlastTarget   = createCombatArea(focusBlast)

local combat_FirstBrush  = Combat()
local combat_SecondBrush = Combat()
local combat_ThirdBrush  = Combat()

combat_FirstBrush :setArea(magicBlastDense)
combat_SecondBrush:setArea(magicBlastCardinal)
combat_ThirdBrush :setArea(magicBlastTarget)

combat_FirstBrush :setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat_SecondBrush:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat_ThirdBrush :setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

combat_FirstBrush :setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
combat_SecondBrush:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
combat_ThirdBrush :setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)

combat_FirstBrush :setFormula(COMBAT_FORMULA_LEVELMAGIC, -10, -320, -10,  330)
combat_SecondBrush:setFormula(COMBAT_FORMULA_LEVELMAGIC, -11, -403, -11, -403)
combat_ThirdBrush :setFormula(COMBAT_FORMULA_LEVELMAGIC,  -3, -210,  -3, -230)

function onCastSpell(cid, target)
    return combat_FirstBrush:execute(cid, target),
        combat_SecondBrush:execute(cid, target),
        combat_ThirdBrush:execute(cid, target)
end

LUA:
local blastStar = {
    { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 },
    { 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0 },
    { 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 },
    { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 },
    { 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1 },
    { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 },
    { 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 },
    { 0, 0, 1, 0, 0, 1, 0, 0, 1, 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 blastHalo = {
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0 },
    { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0 },
    { 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0 },
    { 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0 },
    { 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0 },
    { 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0 },
    { 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0 },
    { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0 },
    { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
}

local blastFocus = {
    { 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, 1, 0, 0, 3, 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 },
}

local magicBlastStar  = createCombatArea(blastStar)
local magicBlastHalo  = createCombatArea(blastHalo)
local magicBlastFocus = createCombatArea(blastFocus)

local combatBlast = Combat()
local combatHalo  = Combat()
local combatFocus = Combat()

combatBlast:setArea(magicBlastStar)
combatHalo :setArea(magicBlastHalo)
combatFocus:setArea(magicBlastFocus)

combatBlast:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combatHalo :setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combatFocus:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

combatBlast:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
combatHalo :setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
combatFocus:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)

combatBlast:setFormula(COMBAT_FORMULA_LEVELMAGIC, -14, -166, -14, -170)
combatHalo :setFormula(COMBAT_FORMULA_LEVELMAGIC, -14, -176, -15, -179)
combatFocus:setFormula(COMBAT_FORMULA_LEVELMAGIC, -13, -185, -14, -190)

function onCastSpell(caster, target)
    return combatBlast:execute(caster, target),
        combatHalo :execute(caster, target),
        combatFocus:execute(caster, target)
end

~
 
Last edited:
Solution
I will do this. In fact, I'll do even better. I'll make a video on how it's done.
Post automatically merged:

Alright. Tutorial will be here. I'm not a YouTuber, and this wasn't scripted, so don't expect production quality
I really didn't like that, so I tried again as I was converting the second spell. 😞

I'll leave the third spell as an exercise for you.

LUA:
local denseBlast = {
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0 },
    { 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0 },
    { 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0 },
    { 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0 },
    { 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0 },
    { 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0 },
    { 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0 },
    { 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0 },
    { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
}

local cardinalBlast = {
    { 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 focusBlast = {
    { 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, 1, 0, 0, 3, 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 },
}

local magicBlastDense    = createCombatArea(denseBlast)
local magicBlastCardinal = createCombatArea(cardinalBlast)
local magicBlastTarget   = createCombatArea(focusBlast)

local combat_FirstBrush  = Combat()
local combat_SecondBrush = Combat()
local combat_ThirdBrush  = Combat()

combat_FirstBrush :setArea(magicBlastDense)
combat_SecondBrush:setArea(magicBlastCardinal)
combat_ThirdBrush :setArea(magicBlastTarget)

combat_FirstBrush :setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat_SecondBrush:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat_ThirdBrush :setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

combat_FirstBrush :setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
combat_SecondBrush:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
combat_ThirdBrush :setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)

combat_FirstBrush :setFormula(COMBAT_FORMULA_LEVELMAGIC, -10, -320, -10,  330)
combat_SecondBrush:setFormula(COMBAT_FORMULA_LEVELMAGIC, -11, -403, -11, -403)
combat_ThirdBrush :setFormula(COMBAT_FORMULA_LEVELMAGIC,  -3, -210,  -3, -230)

function onCastSpell(cid, target)
    return combat_FirstBrush:execute(cid, target),
        combat_SecondBrush:execute(cid, target),
        combat_ThirdBrush:execute(cid, target)
end

LUA:
local blastStar = {
    { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 },
    { 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0 },
    { 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 },
    { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 },
    { 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1 },
    { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 },
    { 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 },
    { 0, 0, 1, 0, 0, 1, 0, 0, 1, 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 blastHalo = {
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0 },
    { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0 },
    { 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0 },
    { 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0 },
    { 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0 },
    { 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0 },
    { 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0 },
    { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0 },
    { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
}

local blastFocus = {
    { 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, 1, 0, 0, 3, 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 },
}

local magicBlastStar  = createCombatArea(blastStar)
local magicBlastHalo  = createCombatArea(blastHalo)
local magicBlastFocus = createCombatArea(blastFocus)

local combatBlast = Combat()
local combatHalo  = Combat()
local combatFocus = Combat()

combatBlast:setArea(magicBlastStar)
combatHalo :setArea(magicBlastHalo)
combatFocus:setArea(magicBlastFocus)

combatBlast:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combatHalo :setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combatFocus:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

combatBlast:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
combatHalo :setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
combatFocus:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)

combatBlast:setFormula(COMBAT_FORMULA_LEVELMAGIC, -14, -166, -14, -170)
combatHalo :setFormula(COMBAT_FORMULA_LEVELMAGIC, -14, -176, -15, -179)
combatFocus:setFormula(COMBAT_FORMULA_LEVELMAGIC, -13, -185, -14, -190)

function onCastSpell(caster, target)
    return combatBlast:execute(caster, target),
        combatHalo :execute(caster, target),
        combatFocus:execute(caster, target)
end

~

nice tutorial
 
Back
Top