• 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!

OpenTibia SpellCreator: A graphical spell creation enviroment

Greet software, If someone has scared for scan report, I think it really false positive. ClamAV are stupid AV.
 
9.6 currently does not work, you can, however, use an older spr/dat combination and it will still work on 9.6.
I'll look into updating it soon.
 
Yo there! I wouldn't be bothering here if I really didn't need it, but I am impressed with your software! It works great! I don't understand very much Conditions but its great. Anyway, I got a problem when making a healing spell, it heals monsters but not players, I'm trying to make a spell that heals people but it doesn't.

heald.jpg

Code:
-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_Brush = createCombatObject()
setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLHOLY)
setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatArea(combat0_Brush,createCombatArea({{3}}))
function getDmg_Brush(cid, level, maglevel)
return (20),(30)
end
setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat0_Brush = {CONST_ANI_HOLY,0,0}

-- Areas/Combat for 1000ms
local combat10_Brush = createCombatObject()
setCombatParam(combat10_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
setCombatParam(combat10_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLHOLY)
setCombatParam(combat10_Brush, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatArea(combat10_Brush,createCombatArea({{3}}))
function getDmg_Brush(cid, level, maglevel)
return (20),(30)
end
setCombatCallback(combat10_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat10_Brush = {CONST_ANI_HOLY,0,0}

-- Areas/Combat for 2000ms
local combat20_Brush = createCombatObject()
setCombatParam(combat20_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
setCombatParam(combat20_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLHOLY)
setCombatParam(combat20_Brush, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatArea(combat20_Brush,createCombatArea({{3}}))
function getDmg_Brush(cid, level, maglevel)
return (20),(30)
end
setCombatCallback(combat20_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat20_Brush = {CONST_ANI_HOLY,0,0}

-- =============== CORE FUNCTIONS ===============
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
if (isCreature(cid)) then
doCombat(cid, c, var)
if (dirList ~= nil) then -- Emit distance effects
local i = 2;
while (i < #dirList) do
doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList,y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
i = i + 2
end
end
end
end

function onCastSpell(cid, var)
local startPos = getCreaturePosition(cid)
RunPart(combat0_Brush,cid,var,dfcombat0_Brush,startPos)
addEvent(RunPart,1000,combat10_Brush,cid,var,dfcombat10_Brush,startPos)
addEvent(RunPart,2000,combat20_Brush,cid,var,dfcombat20_Brush,startPos)
return true
end


This spell is suposed to shoot 3 times a healing spell on a sio" player and it does that but does not heal, got another one configuring the same but looking like exura gran mas res and only heals WILD and Summoned monsters, no player neither others.

:) Where do I have the bug? Been changing the spell for damn 3 hours! And tested more than 20 combinations and no way! Please :p

- - - Updated - - -

I don't know why I cannot EDIT post, it does not allow me, by the way, I've also put HEALING instead of Holy Damage...

- - - Updated - - -

Okey edited, but cannot delete things... Awww
 
Yo there! I wouldn't be bothering here if I really didn't need it, but I am impressed with your software! It works great! I don't understand very much Conditions but its great. Anyway, I got a problem when making a healing spell, it heals monsters but not players, I'm trying to make a spell that heals people but it doesn't.

View attachment 17435

Code:


This spell is suposed to shoot 3 times a healing spell on a sio" player and it does that but does not heal, got another one configuring the same but looking like exura gran mas res and only heals WILD and Summoned monsters, no player neither others.

:) Where do I have the bug? Been changing the spell for damn 3 hours! And tested more than 20 combinations and no way! Please :p

- - - Updated - - -

I don't know why I cannot EDIT post, it does not allow me, by the way, I've also put HEALING instead of Holy Damage...

- - - Updated - - -

Okey edited, but cannot delete things... Awww

If you want your spell to heal people, go to Spell => Properties and untick "Agressive". If you tick agressive, it will target opponents and thus heal them instead, if you untick agressive, it will target allied people and heal those (and yourself if the area covers it).
If you want it to be a targetted spell, you can tick "Req target" there.
Make sure you update both the script AND the xml whenever you make changes!
 
Ofcourse I've done that unticking Agressive, but stills making effect only on mobs.

- - - Updated - - -

Spell created from 0 again and tested, and made a video for you to check it out :p

http://www.youtube.com/watch?v=tHCEuRMxfzk&feature=youtu.be
 
Ofcourse I've done that unticking Agressive, but stills making effect only on mobs.

- - - Updated - - -

Spell created from 0 again and tested, and made a video for you to check it out :p

spells - YouTube

Your rev/server probably doesn't support this correctly (since I've got it working correctly myself..), try to set the damage formula to _LEVELMAGIC, with the values (in order): 0; 20; 0; 30.
Keep in mind many rev's/server's have a broken /reload spells, you might have to restart the server first.
 
Well well, Thank you so much about this spell creator, I love it !.
But i got a problem, i try to make a rune with this spell creator and the 'distanceshoot' effects, don't follow the way of the rune.
Can you help me about that? i dont know what i need to make the rune work as properly.
here is the script (sorry if it is very bad formated)
Lua:
-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_skeleton_rune_1 = createCombatObject()
setCombatParam(combat0_skeleton_rune_1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat0_skeleton_rune_1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat0_skeleton_rune_1,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
setCombatFormula(combat0_skeleton_rune_1, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat0_skeleton_rune_1 = {CONST_ANI_FIRE,0,3,1,2,2,1,3,0,2,-1,1,-2,0,-3,-1,-2,-2,-1,-3,0,-2,1,-1,2,0,2,-1,1,-2,0,-1,-1,-1,0,0,-1,0,-2,1,-1,2,0,1,0,1,1,0,1,0,0}

-- Areas/Combat for 300ms
local combat3_skeleton_rune_1 = createCombatObject()
setCombatParam(combat3_skeleton_rune_1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat3_skeleton_rune_1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat3_skeleton_rune_1,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 0, 1, 0, 0},
{0, 1, 0, 0, 0, 1, 0},
{1, 0, 0, 3, 0, 0, 1},
{0, 1, 0, 0, 0, 1, 0},
{0, 0, 1, 0, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
setCombatFormula(combat3_skeleton_rune_1, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat3_skeleton_rune_1 = {CONST_ANI_FIRE,0,3,1,2,2,1,3,0,2,-1,1,-2,0,-3,-1,-2,-2,-1,-3,0,-2,1,-1,2,0,0}

-- Areas/Combat for 500ms
local combat5_skeleton_rune_1 = createCombatObject()
setCombatParam(combat5_skeleton_rune_1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat5_skeleton_rune_1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat5_skeleton_rune_1,createCombatArea({{0, 0, 1, 0, 0},
{0, 1, 1, 1, 0},
{1, 1, 3, 1, 1},
{0, 1, 1, 1, 0},
{0, 0, 1, 0, 0}}))
setCombatFormula(combat5_skeleton_rune_1, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat5_skeleton_rune_1 = {CONST_ANI_FIRE,0,2,0,1,1,1,1,0,2,0,1,-1,0,-1,0,-2,-1,-1,-1,0,-2,0,-1,1,0,0}

-- Areas/Combat for 900ms
local combat9_skeleton_rune_2 = createCombatObject()
setCombatParam(combat9_skeleton_rune_2, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
setCombatParam(combat9_skeleton_rune_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat9_skeleton_rune_2,createCombatArea({{0, 0, 1, 0, 0},
{0, 1, 1, 1, 0},
{1, 1, 2, 1, 1},
{0, 1, 1, 1, 0},
{0, 0, 1, 0, 0}}))
setCombatFormula(combat9_skeleton_rune_2, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)local combat9_skeleton_rune_1 = createCombatObject()
setCombatParam(combat9_skeleton_rune_1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat9_skeleton_rune_1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat9_skeleton_rune_1,createCombatArea({{3}}))
setCombatFormula(combat9_skeleton_rune_1, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat9_skeleton_rune_1 = {CONST_ANI_FIRE,0,0}

-- Areas/Combat for 1100ms
local combat11_skeleton_rune_1 = createCombatObject()
setCombatParam(combat11_skeleton_rune_1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat11_skeleton_rune_1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat11_skeleton_rune_1,createCombatArea({{1, 1, 1},
{1, 2, 1},
{1, 1, 1}}))
setCombatFormula(combat11_skeleton_rune_1, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat11_skeleton_rune_1 = {CONST_ANI_FIRE,0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1}local combat11_skeleton_rune_2 = createCombatObject()
setCombatParam(combat11_skeleton_rune_2, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
setCombatParam(combat11_skeleton_rune_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat11_skeleton_rune_2,createCombatArea({{3}}))
setCombatFormula(combat11_skeleton_rune_2, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)

-- Areas/Combat for 1600ms
local combat16_skeleton_rune_3 = createCombatObject()
setCombatParam(combat16_skeleton_rune_3, COMBAT_PARAM_EFFECT, CONST_ME_PURPLEENERGY)
setCombatParam(combat16_skeleton_rune_3, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat16_skeleton_rune_3,createCombatArea({{0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0, 0},
{0, 1, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 3, 1, 0, 0, 1},
{0, 1, 0, 1, 1, 1, 1, 0, 0},
{1, 0, 0, 0, 0, 0, 0, 1, 0},
{0, 0, 1, 1, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 1, 0}}))
setCombatFormula(combat16_skeleton_rune_3, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)

-- Areas/Combat for 2400ms
local combat24_skeleton_rune_3 = createCombatObject()
setCombatParam(combat24_skeleton_rune_3, COMBAT_PARAM_EFFECT, CONST_ME_PURPLEENERGY)
setCombatParam(combat24_skeleton_rune_3, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat24_skeleton_rune_3,createCombatArea({{0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0},
{1, 0, 0, 0, 0, 0, 0, 1, 0},
{0, 1, 0, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 2, 1, 0, 1, 0},
{1, 0, 1, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 1, 0, 1},
{1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 1, 0, 0, 1, 0, 0, 0, 1}}))
setCombatFormula(combat24_skeleton_rune_3, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)

-- Areas/Combat for 2900ms
local combat29_skeleton_rune_4 = createCombatObject()
setCombatParam(combat29_skeleton_rune_4, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
setCombatParam(combat29_skeleton_rune_4, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat29_skeleton_rune_4,createCombatArea({{1, 1, 1},
{1, 2, 1},
{1, 1, 1}}))
setCombatFormula(combat29_skeleton_rune_4, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat29_skeleton_rune_4 = {CONST_ANI_ENERGY,1,1,-1,1,-1,-1,1,-1,0,-1,0,1,1,0,-1,0}

-- Areas/Combat for 3100ms
local combat31_skeleton_rune_4 = createCombatObject()
setCombatParam(combat31_skeleton_rune_4, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
setCombatParam(combat31_skeleton_rune_4, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat31_skeleton_rune_4,createCombatArea({{3}}))
setCombatFormula(combat31_skeleton_rune_4, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat31_skeleton_rune_4 = {CONST_ANI_ENERGY,0,0}

-- =============== CORE FUNCTIONS ===============
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
	if (isCreature(cid)) then
		doCombat(cid, c, var)
		if (dirList ~= nil) then -- Emit distance effects
			local i = 2;
			while (i < #dirList) do
				doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
				i = i + 2
			end		
		end
	end
end

function onCastSpell(cid, var)
	local startPos = getCreaturePosition(cid)
	local startDir = getCreatureLookDirection(cid)
	RunPart(combat0_skeleton_rune_1,cid,var,dfcombat0_skeleton_rune_1,startPos,startDir)
	addEvent(RunPart,300,combat3_skeleton_rune_1,cid,var,dfcombat3_skeleton_rune_1,startPos,startDir)
	addEvent(RunPart,500,combat5_skeleton_rune_1,cid,var,dfcombat5_skeleton_rune_1,startPos,startDir)
	addEvent(RunPart,900,combat9_skeleton_rune_2,cid,var)
	addEvent(RunPart,900,combat9_skeleton_rune_1,cid,var,dfcombat9_skeleton_rune_1,startPos,startDir)
	addEvent(RunPart,1100,combat11_skeleton_rune_1,cid,var,dfcombat11_skeleton_rune_1,startPos,startDir)
	addEvent(RunPart,1100,combat11_skeleton_rune_2,cid,var)
	addEvent(RunPart,1600,combat16_skeleton_rune_3,cid,var)
	addEvent(RunPart,2400,combat24_skeleton_rune_3,cid,var)
	addEvent(RunPart,2900,combat29_skeleton_rune_4,cid,var,dfcombat29_skeleton_rune_4,startPos,startDir)
	addEvent(RunPart,3100,combat31_skeleton_rune_4,cid,var,dfcombat31_skeleton_rune_4,startPos,startDir)
	return true
end
 
I don't really understand what you want. If you want a distance effect to go to the location the rune is casted on, use a "To-Target distance effect" in the brush editor.
 
how i can do that?, well i mean, if you cast a spell, the 'distance shoots' dont follow you, and in this case, is a rune and if i throw away from me, the distance shoots dont follow the rune effects, stay on me, you understand ?
 
Oh, I guess I get what you mean.
After:
Code:
if (dirList ~= nil) then -- Emit distance effects
in the script, place a new line:
Code:
dirEmitPos = getCreaturePosition(cid)
 
No, that's dont work ;s
[/code=luu]
-- =============== CORE FUNCTIONS ===============
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
if (isCreature(cid)) then
doCombat(cid, c, var)
dirEmitPos = getCreaturePosition(cid)
if (dirList ~= nil) then -- Emit distance effects
local i = 2;
while (i < #dirList) do
doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList,y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
i = i + 2
end
end
end
end
[/code]
 
Well, then explain exactly what you want since I simply do not understand what you're trying to say.
 
Alright i will do my best. (sorry for bad english)
I made a spell with this spellcreator, with 'distanceshoot' effects.
And I configure it for use on a rune, not on spell. if i throw the rune on myself, All is good, the distanceshoots work fine. But if i throw the rune on another sqm, the distanceshoots get's on myself and no go with the rune.
For example: distance shoots = 1, player pos = 2
1, 0, 0, 0, 1
1, 0, 2, 0, 1
1, 0, 0, ,0 1,

If i throw the rune on 'player pos' the distance shoots will go to 1's and the rune area effect's cast on 1's too.
But if i throw, like 2 sqm's away, the effects of the rune cast on 3's
but the distance shoots still on 1's
1, 0, 0, 0, 1, 3, 0, 0, 3,
1, 0, 2, 0, 1, 3, 0, 0, 3,
1, 0, 0, ,0 1, 3, 0, 0, 3,

And no like

0, 0, 0, 0, 1, 0, 0, 1,
0, 0, 2, 0, 1, 0, 0, 1,
0, 0, 0, ,0 1, 0, 0, 1,

You understand my problem now ? :s
 
Now I understand you :).
local target = variantToNumber(var)

Replace
Code:
local startPos = getCreaturePosition(cid)
with:
Code:
if (variantToNumber(var) == 0) return true; end
local startPos = variantToPosition(var);

- - - Updated - - -

(edit)

If the rune may be casted anywhere, remove the line
Code:
if (variantToNumber(var) == 0) return true; end
again, so you only replace it with:
Code:
local startPos = variantToPosition(var);
 
Nope, Still malfunctioning :/

i put like this
Code:
function onCastSpell(cid, var)
local target = variantToNumber(var)
if (variantToNumber(var) == 0) return true; end
local startPos = variantToPosition(var);
	RunPart(combat0_skeleton_rune_1,cid,var,dfcombat0_skeleton_rune_1,startPos, target)
	addEvent(RunPart,300,combat3_skeleton_rune_1,cid,var,dfcombat3_skeleton_rune_1,startPos, target)
	addEvent(RunPart,500,combat5_skeleton_rune_1,cid,var,dfcombat5_skeleton_rune_1,startPos, target)
	addEvent(RunPart,900,combat9_skeleton_rune_2,cid,var)
	addEvent(RunPart,900,combat9_skeleton_rune_1,cid,var,dfcombat9_skeleton_rune_1,startPos, target)
	addEvent(RunPart,1100,combat11_skeleton_rune_1,cid,var,dfcombat11_skeleton_rune_1,startPos, target)
	addEvent(RunPart,1100,combat11_skeleton_rune_2,cid,var)
	addEvent(RunPart,1600,combat16_skeleton_rune_3,cid,var)
	addEvent(RunPart,2400,combat24_skeleton_rune_3,cid,var)
	addEvent(RunPart,2900,combat29_skeleton_rune_4,cid,var,dfcombat29_skeleton_rune_4,startPos, target)
	addEvent(RunPart,3100,combat31_skeleton_rune_4,cid,var,dfcombat31_skeleton_rune_4,startPos, target)
	return true
end

And say this:
[05/12/2012 01:45:54] [Error - LuaScriptInterface::loadFile] data/spells/scripts/grim spells/skeleton rune.lua:139: 'then' expected near 'return'
[05/12/2012 01:45:54] [Warning - Event::loadScript] Cannot load script (data/spells/scripts/grim spells/skeleton rune.lua)
[05/12/2012 01:45:54] data/spells/scripts/grim spells/skeleton rune.lua:139: 'then' expected near 'return'

And i deleted the line
if (variantToNumber(var) == 0) return true; end

And the rune works, but still the problem i explain you, the distance shoots don't follow the rune direction ;/
 
Well, paste the whole script between [ code ] tags so I can try it myself, and the server you use.
 
Alright then this is it !
Code:
-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_skeleton_rune_1 = createCombatObject()
setCombatParam(combat0_skeleton_rune_1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat0_skeleton_rune_1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat0_skeleton_rune_1,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
setCombatFormula(combat0_skeleton_rune_1, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat0_skeleton_rune_1 = {CONST_ANI_FIRE,0,3,1,2,2,1,3,0,2,-1,1,-2,0,-3,-1,-2,-2,-1,-3,0,-2,1,-1,2,0,2,-1,1,-2,0,-1,-1,-1,0,0,-1,0,-2,1,-1,2,0,1,0,1,1,0,1,0,0}

-- Areas/Combat for 300ms
local combat3_skeleton_rune_1 = createCombatObject()
setCombatParam(combat3_skeleton_rune_1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat3_skeleton_rune_1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat3_skeleton_rune_1,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 0, 1, 0, 0},
{0, 1, 0, 0, 0, 1, 0},
{1, 0, 0, 3, 0, 0, 1},
{0, 1, 0, 0, 0, 1, 0},
{0, 0, 1, 0, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
setCombatFormula(combat3_skeleton_rune_1, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat3_skeleton_rune_1 = {CONST_ANI_FIRE,0,3,1,2,2,1,3,0,2,-1,1,-2,0,-3,-1,-2,-2,-1,-3,0,-2,1,-1,2,0,0}

-- Areas/Combat for 500ms
local combat5_skeleton_rune_1 = createCombatObject()
setCombatParam(combat5_skeleton_rune_1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat5_skeleton_rune_1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat5_skeleton_rune_1,createCombatArea({{0, 0, 1, 0, 0},
{0, 1, 1, 1, 0},
{1, 1, 3, 1, 1},
{0, 1, 1, 1, 0},
{0, 0, 1, 0, 0}}))
setCombatFormula(combat5_skeleton_rune_1, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat5_skeleton_rune_1 = {CONST_ANI_FIRE,0,2,0,1,1,1,1,0,2,0,1,-1,0,-1,0,-2,-1,-1,-1,0,-2,0,-1,1,0,0}

-- Areas/Combat for 900ms
local combat9_skeleton_rune_2 = createCombatObject()
setCombatParam(combat9_skeleton_rune_2, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
setCombatParam(combat9_skeleton_rune_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat9_skeleton_rune_2,createCombatArea({{0, 0, 1, 0, 0},
{0, 1, 1, 1, 0},
{1, 1, 2, 1, 1},
{0, 1, 1, 1, 0},
{0, 0, 1, 0, 0}}))
setCombatFormula(combat9_skeleton_rune_2, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)local combat9_skeleton_rune_1 = createCombatObject()
setCombatParam(combat9_skeleton_rune_1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat9_skeleton_rune_1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat9_skeleton_rune_1,createCombatArea({{3}}))
setCombatFormula(combat9_skeleton_rune_1, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat9_skeleton_rune_1 = {CONST_ANI_FIRE,0,0}

-- Areas/Combat for 1100ms
local combat11_skeleton_rune_1 = createCombatObject()
setCombatParam(combat11_skeleton_rune_1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat11_skeleton_rune_1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat11_skeleton_rune_1,createCombatArea({{1, 1, 1},
{1, 2, 1},
{1, 1, 1}}))
setCombatFormula(combat11_skeleton_rune_1, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat11_skeleton_rune_1 = {CONST_ANI_FIRE,0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1}local combat11_skeleton_rune_2 = createCombatObject()
setCombatParam(combat11_skeleton_rune_2, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
setCombatParam(combat11_skeleton_rune_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat11_skeleton_rune_2,createCombatArea({{3}}))
setCombatFormula(combat11_skeleton_rune_2, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)

-- Areas/Combat for 1600ms
local combat16_skeleton_rune_3 = createCombatObject()
setCombatParam(combat16_skeleton_rune_3, COMBAT_PARAM_EFFECT, CONST_ME_PURPLEENERGY)
setCombatParam(combat16_skeleton_rune_3, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat16_skeleton_rune_3,createCombatArea({{0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0, 0},
{0, 1, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 3, 1, 0, 0, 1},
{0, 1, 0, 1, 1, 1, 1, 0, 0},
{1, 0, 0, 0, 0, 0, 0, 1, 0},
{0, 0, 1, 1, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 1, 0}}))
setCombatFormula(combat16_skeleton_rune_3, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)

-- Areas/Combat for 2400ms
local combat24_skeleton_rune_3 = createCombatObject()
setCombatParam(combat24_skeleton_rune_3, COMBAT_PARAM_EFFECT, CONST_ME_PURPLEENERGY)
setCombatParam(combat24_skeleton_rune_3, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat24_skeleton_rune_3,createCombatArea({{0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0},
{1, 0, 0, 0, 0, 0, 0, 1, 0},
{0, 1, 0, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 2, 1, 0, 1, 0},
{1, 0, 1, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 1, 0, 1},
{1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 1, 0, 0, 1, 0, 0, 0, 1}}))
setCombatFormula(combat24_skeleton_rune_3, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)

-- Areas/Combat for 2900ms
local combat29_skeleton_rune_4 = createCombatObject()
setCombatParam(combat29_skeleton_rune_4, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
setCombatParam(combat29_skeleton_rune_4, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat29_skeleton_rune_4,createCombatArea({{1, 1, 1},
{1, 2, 1},
{1, 1, 1}}))
setCombatFormula(combat29_skeleton_rune_4, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat29_skeleton_rune_4 = {CONST_ANI_ENERGY,1,1,-1,1,-1,-1,1,-1,0,-1,0,1,1,0,-1,0}

-- Areas/Combat for 3100ms
local combat31_skeleton_rune_4 = createCombatObject()
setCombatParam(combat31_skeleton_rune_4, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
setCombatParam(combat31_skeleton_rune_4, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat31_skeleton_rune_4,createCombatArea({{3}}))
setCombatFormula(combat31_skeleton_rune_4, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat31_skeleton_rune_4 = {CONST_ANI_ENERGY,0,0}

-- =============== CORE FUNCTIONS ===============
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
	if (isCreature(cid)) then
		doCombat(cid, c, var)
            dirEmitPos = getCreaturePosition(cid)
                  if (dirList ~= nil) then -- Emit distance effects
                  dirEmitPos = getCreaturePosition(cid)
			local i = 2;
			while (i < #dirList) do
				doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
				i = i + 2
			end		
		end
	end
end

function onCastSpell(cid, var)
local target = variantToNumber(var)
local startPos = variantToPosition(var)
	RunPart(combat0_skeleton_rune_1,cid,var,dfcombat0_skeleton_rune_1,startPos, target)
	addEvent(RunPart,300,combat3_skeleton_rune_1,cid,var,dfcombat3_skeleton_rune_1,startPos, target)
	addEvent(RunPart,500,combat5_skeleton_rune_1,cid,var,dfcombat5_skeleton_rune_1,startPos, target)
	addEvent(RunPart,900,combat9_skeleton_rune_2,cid,var)
	addEvent(RunPart,900,combat9_skeleton_rune_1,cid,var,dfcombat9_skeleton_rune_1,startPos, target)
	addEvent(RunPart,1100,combat11_skeleton_rune_1,cid,var,dfcombat11_skeleton_rune_1,startPos, target)
	addEvent(RunPart,1100,combat11_skeleton_rune_2,cid,var)
	addEvent(RunPart,1600,combat16_skeleton_rune_3,cid,var)
	addEvent(RunPart,2400,combat24_skeleton_rune_3,cid,var)
	addEvent(RunPart,2900,combat29_skeleton_rune_4,cid,var,dfcombat29_skeleton_rune_4,startPos, target)
	addEvent(RunPart,3100,combat31_skeleton_rune_4,cid,var,dfcombat31_skeleton_rune_4,startPos, target)
	return true
end

And i got another question: if this rune can be used only by sorcerers and Master s. how i can do it ?
i put this on .xml but don't work D:
Code:
	<rune name="Skeleton Fire Rune" id="2268" allowfaruse="1" charges="1" lvl="1000" maglv="4" exhaustion="3200" selftarget="1" event="script" value="skeleton rune.lua"/>
		<vocation id="1"/>
		<vocation id="5" showInDescription="0"/>

- - - Updated - - -

Alright then this is it !
Code:
-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_skeleton_rune_1 = createCombatObject()
setCombatParam(combat0_skeleton_rune_1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat0_skeleton_rune_1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat0_skeleton_rune_1,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
setCombatFormula(combat0_skeleton_rune_1, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat0_skeleton_rune_1 = {CONST_ANI_FIRE,0,3,1,2,2,1,3,0,2,-1,1,-2,0,-3,-1,-2,-2,-1,-3,0,-2,1,-1,2,0,2,-1,1,-2,0,-1,-1,-1,0,0,-1,0,-2,1,-1,2,0,1,0,1,1,0,1,0,0}

-- Areas/Combat for 300ms
local combat3_skeleton_rune_1 = createCombatObject()
setCombatParam(combat3_skeleton_rune_1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat3_skeleton_rune_1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat3_skeleton_rune_1,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 0, 1, 0, 0},
{0, 1, 0, 0, 0, 1, 0},
{1, 0, 0, 3, 0, 0, 1},
{0, 1, 0, 0, 0, 1, 0},
{0, 0, 1, 0, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
setCombatFormula(combat3_skeleton_rune_1, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat3_skeleton_rune_1 = {CONST_ANI_FIRE,0,3,1,2,2,1,3,0,2,-1,1,-2,0,-3,-1,-2,-2,-1,-3,0,-2,1,-1,2,0,0}

-- Areas/Combat for 500ms
local combat5_skeleton_rune_1 = createCombatObject()
setCombatParam(combat5_skeleton_rune_1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat5_skeleton_rune_1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat5_skeleton_rune_1,createCombatArea({{0, 0, 1, 0, 0},
{0, 1, 1, 1, 0},
{1, 1, 3, 1, 1},
{0, 1, 1, 1, 0},
{0, 0, 1, 0, 0}}))
setCombatFormula(combat5_skeleton_rune_1, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat5_skeleton_rune_1 = {CONST_ANI_FIRE,0,2,0,1,1,1,1,0,2,0,1,-1,0,-1,0,-2,-1,-1,-1,0,-2,0,-1,1,0,0}

-- Areas/Combat for 900ms
local combat9_skeleton_rune_2 = createCombatObject()
setCombatParam(combat9_skeleton_rune_2, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
setCombatParam(combat9_skeleton_rune_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat9_skeleton_rune_2,createCombatArea({{0, 0, 1, 0, 0},
{0, 1, 1, 1, 0},
{1, 1, 2, 1, 1},
{0, 1, 1, 1, 0},
{0, 0, 1, 0, 0}}))
setCombatFormula(combat9_skeleton_rune_2, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)local combat9_skeleton_rune_1 = createCombatObject()
setCombatParam(combat9_skeleton_rune_1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat9_skeleton_rune_1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat9_skeleton_rune_1,createCombatArea({{3}}))
setCombatFormula(combat9_skeleton_rune_1, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat9_skeleton_rune_1 = {CONST_ANI_FIRE,0,0}

-- Areas/Combat for 1100ms
local combat11_skeleton_rune_1 = createCombatObject()
setCombatParam(combat11_skeleton_rune_1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat11_skeleton_rune_1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat11_skeleton_rune_1,createCombatArea({{1, 1, 1},
{1, 2, 1},
{1, 1, 1}}))
setCombatFormula(combat11_skeleton_rune_1, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat11_skeleton_rune_1 = {CONST_ANI_FIRE,0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1}local combat11_skeleton_rune_2 = createCombatObject()
setCombatParam(combat11_skeleton_rune_2, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
setCombatParam(combat11_skeleton_rune_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat11_skeleton_rune_2,createCombatArea({{3}}))
setCombatFormula(combat11_skeleton_rune_2, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)

-- Areas/Combat for 1600ms
local combat16_skeleton_rune_3 = createCombatObject()
setCombatParam(combat16_skeleton_rune_3, COMBAT_PARAM_EFFECT, CONST_ME_PURPLEENERGY)
setCombatParam(combat16_skeleton_rune_3, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat16_skeleton_rune_3,createCombatArea({{0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0, 0},
{0, 1, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 3, 1, 0, 0, 1},
{0, 1, 0, 1, 1, 1, 1, 0, 0},
{1, 0, 0, 0, 0, 0, 0, 1, 0},
{0, 0, 1, 1, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 1, 0}}))
setCombatFormula(combat16_skeleton_rune_3, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)

-- Areas/Combat for 2400ms
local combat24_skeleton_rune_3 = createCombatObject()
setCombatParam(combat24_skeleton_rune_3, COMBAT_PARAM_EFFECT, CONST_ME_PURPLEENERGY)
setCombatParam(combat24_skeleton_rune_3, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat24_skeleton_rune_3,createCombatArea({{0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0},
{1, 0, 0, 0, 0, 0, 0, 1, 0},
{0, 1, 0, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 2, 1, 0, 1, 0},
{1, 0, 1, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 1, 0, 1},
{1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 1, 0, 0, 1, 0, 0, 0, 1}}))
setCombatFormula(combat24_skeleton_rune_3, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)

-- Areas/Combat for 2900ms
local combat29_skeleton_rune_4 = createCombatObject()
setCombatParam(combat29_skeleton_rune_4, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
setCombatParam(combat29_skeleton_rune_4, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat29_skeleton_rune_4,createCombatArea({{1, 1, 1},
{1, 2, 1},
{1, 1, 1}}))
setCombatFormula(combat29_skeleton_rune_4, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat29_skeleton_rune_4 = {CONST_ANI_ENERGY,1,1,-1,1,-1,-1,1,-1,0,-1,0,1,1,0,-1,0}

-- Areas/Combat for 3100ms
local combat31_skeleton_rune_4 = createCombatObject()
setCombatParam(combat31_skeleton_rune_4, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
setCombatParam(combat31_skeleton_rune_4, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat31_skeleton_rune_4,createCombatArea({{3}}))
setCombatFormula(combat31_skeleton_rune_4, COMBAT_FORMULA_LEVELMAGIC, -9, -9, -9, -9)
local dfcombat31_skeleton_rune_4 = {CONST_ANI_ENERGY,0,0}

-- =============== CORE FUNCTIONS ===============
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
	if (isCreature(cid)) then
		doCombat(cid, c, var)
            dirEmitPos = getCreaturePosition(cid)
                  if (dirList ~= nil) then -- Emit distance effects
                  dirEmitPos = getCreaturePosition(cid)
			local i = 2;
			while (i < #dirList) do
				doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
				i = i + 2
			end		
		end
	end
end

function onCastSpell(cid, var)
local target = variantToNumber(var)
local startPos = variantToPosition(var)
	RunPart(combat0_skeleton_rune_1,cid,var,dfcombat0_skeleton_rune_1,startPos, target)
	addEvent(RunPart,300,combat3_skeleton_rune_1,cid,var,dfcombat3_skeleton_rune_1,startPos, target)
	addEvent(RunPart,500,combat5_skeleton_rune_1,cid,var,dfcombat5_skeleton_rune_1,startPos, target)
	addEvent(RunPart,900,combat9_skeleton_rune_2,cid,var)
	addEvent(RunPart,900,combat9_skeleton_rune_1,cid,var,dfcombat9_skeleton_rune_1,startPos, target)
	addEvent(RunPart,1100,combat11_skeleton_rune_1,cid,var,dfcombat11_skeleton_rune_1,startPos, target)
	addEvent(RunPart,1100,combat11_skeleton_rune_2,cid,var)
	addEvent(RunPart,1600,combat16_skeleton_rune_3,cid,var)
	addEvent(RunPart,2400,combat24_skeleton_rune_3,cid,var)
	addEvent(RunPart,2900,combat29_skeleton_rune_4,cid,var,dfcombat29_skeleton_rune_4,startPos, target)
	addEvent(RunPart,3100,combat31_skeleton_rune_4,cid,var,dfcombat31_skeleton_rune_4,startPos, target)
	return true
end

And i got another question: if this rune can be used only by sorcerers and Master s. how i can do it ?
i put this on .xml but don't work D:
Code:
	<rune name="Skeleton Fire Rune" id="2268" allowfaruse="1" charges="1" lvl="1000" maglv="4" exhaustion="3200" selftarget="1" event="script" value="skeleton rune.lua"/>
		<vocation id="1"/>
		<vocation id="5" showInDescription="0"/>

Edit
I use Naxed 8.0 ;D
 
Back
Top