• 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

HERE IS THE OFFICIAL GALLERY THREAD TO SHOWOFF YOUR SPELLS! :)

PHP:
http://otland.net/f119/graphical-spell-creator-gallery-160688/#post1546888
 
But it should be same error on all direction spells :O

Code:
-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_Ball = createCombatObject()
setCombatParam(combat0_Ball, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat0_Ball,createCombatArea({{2},
{1}}))
function getDmg_Ball(cid, level, maglevel)
	return (100)*-1,(200)*-1 
end
setCombatCallback(combat0_Ball, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Ball")
local dfcombat0_Ball = {CONST_ANI_ENERGYBALL,0,1}

-- Areas/Combat for 1400ms
local combat14_Energy = createCombatObject()
setCombatParam(combat14_Energy, COMBAT_PARAM_EFFECT, CONST_ME_SOUND_YELLOW)
setCombatParam(combat14_Energy, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat14_Energy,createCombatArea({{0, 2, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{1, 1, 1}}))
function getDmg_Energy(cid, level, maglevel)
	return (100)*-1,(200)*-1 
end
setCombatCallback(combat14_Energy, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Energy")

-- Areas/Combat for 1200ms
local combat12_Ball = createCombatObject()
setCombatParam(combat12_Ball, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat12_Ball,createCombatArea({{0, 2, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{1, 1, 1}}))
function getDmg_Ball(cid, level, maglevel)
	return (100)*-1,(200)*-1 
end
setCombatCallback(combat12_Ball, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Ball")
local dfcombat12_Ball = {CONST_ANI_ENERGYBALL,1,5,0,5,-1,5}

-- Areas/Combat for 1100ms
local combat11_Energy = createCombatObject()
setCombatParam(combat11_Energy, COMBAT_PARAM_EFFECT, CONST_ME_SOUND_YELLOW)
setCombatParam(combat11_Energy, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat11_Energy,createCombatArea({{0, 2, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{1, 1, 1}}))
function getDmg_Energy(cid, level, maglevel)
	return (100)*-1,(200)*-1 
end
setCombatCallback(combat11_Energy, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Energy")

-- Areas/Combat for 900ms
local combat9_Ball = createCombatObject()
setCombatParam(combat9_Ball, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat9_Ball,createCombatArea({{0, 2, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{1, 1, 1}}))
function getDmg_Ball(cid, level, maglevel)
	return (100)*-1,(200)*-1 
end
setCombatCallback(combat9_Ball, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Ball")
local dfcombat9_Ball = {CONST_ANI_ENERGYBALL,1,4,0,4,-1,4}

-- Areas/Combat for 800ms
local combat8_Energy = createCombatObject()
setCombatParam(combat8_Energy, COMBAT_PARAM_EFFECT, CONST_ME_SOUND_YELLOW)
setCombatParam(combat8_Energy, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat8_Energy,createCombatArea({{0, 2, 0},
{0, 0, 0},
{0, 0, 0},
{1, 1, 1}}))
function getDmg_Energy(cid, level, maglevel)
	return (100)*-1,(200)*-1 
end
setCombatCallback(combat8_Energy, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Energy")

-- Areas/Combat for 600ms
local combat6_Ball = createCombatObject()
setCombatParam(combat6_Ball, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat6_Ball,createCombatArea({{0, 2, 0},
{0, 0, 0},
{0, 0, 0},
{1, 1, 1}}))
function getDmg_Ball(cid, level, maglevel)
	return (100)*-1,(200)*-1 
end
setCombatCallback(combat6_Ball, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Ball")
local dfcombat6_Ball = {CONST_ANI_ENERGYBALL,1,3,0,3,-1,3}

-- Areas/Combat for 500ms
local combat5_Energy = createCombatObject()
setCombatParam(combat5_Energy, COMBAT_PARAM_EFFECT, CONST_ME_SOUND_YELLOW)
setCombatParam(combat5_Energy, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat5_Energy,createCombatArea({{0, 2, 0},
{0, 0, 0},
{1, 1, 1}}))
function getDmg_Energy(cid, level, maglevel)
	return (100)*-1,(200)*-1 
end
setCombatCallback(combat5_Energy, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Energy")

-- Areas/Combat for 300ms
local combat3_Ball = createCombatObject()
setCombatParam(combat3_Ball, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat3_Ball,createCombatArea({{0, 2, 0},
{0, 0, 0},
{1, 1, 1}}))
function getDmg_Ball(cid, level, maglevel)
	return (100)*-1,(200)*-1 
end
setCombatCallback(combat3_Ball, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Ball")
local dfcombat3_Ball = {CONST_ANI_ENERGYBALL,1,2,-1,2,0,2}

-- Areas/Combat for 200ms
local combat2_Energy = createCombatObject()
setCombatParam(combat2_Energy, COMBAT_PARAM_EFFECT, CONST_ME_SOUND_YELLOW)
setCombatParam(combat2_Energy, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat2_Energy,createCombatArea({{2},
{1}}))
function getDmg_Energy(cid, level, maglevel)
	return (100)*-1,(200)*-1 
end
setCombatCallback(combat2_Energy, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Energy")

-- =============== 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)
	RunPart(combat0_Ball,cid,var,dfcombat0_Ball,startPos)
	addEvent(RunPart,1400,combat14_Energy,cid,var)
	addEvent(RunPart,1200,combat12_Ball,cid,var,dfcombat12_Ball,startPos)
	addEvent(RunPart,1100,combat11_Energy,cid,var)
	addEvent(RunPart,900,combat9_Ball,cid,var,dfcombat9_Ball,startPos)
	addEvent(RunPart,800,combat8_Energy,cid,var)
	addEvent(RunPart,600,combat6_Ball,cid,var,dfcombat6_Ball,startPos)
	addEvent(RunPart,500,combat5_Energy,cid,var)
	addEvent(RunPart,300,combat3_Ball,cid,var,dfcombat3_Ball,startPos)
	addEvent(RunPart,200,combat2_Energy,cid,var)
	return true
end

That spell is not directional.
You must set the Spell => Properties Directional parameter on for it to generate properly.
 
I'll look into it soon, not such a huge problem.

Ups, my fault, i added some lines into script made the addevent error, now its fixed! it wasent the creator fault. Im truely sorry :(
 
And again me... how i can make spell like Exevo Vis Hur?

Spell => Properties => Tick directional => Apply => Create your spell to the point the character is facing (Upwards). It'll rotate if you change direction then.
 
I have problem...

Lua Script Error: [Spell Interface]
data/spells/scripts/attack/on the face.lua:eek:nCastSpell

data/spells/scripts/attack/on the face.lua:41: attempt to call global 'getCreatureLookDirection' (a nil value)
stack traceback:
data/spells/scripts/attack/on the face.lua:41: in function <data/spells/scripts/attack/on the face.lua:39>
 
That's called a tibia version.
I need the distribution you use, and the contents of doc/lua_functions.
 
-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_NewItem21452 = createCombatObject()
setCombatParam(combat0_NewItem21452, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatParam(combat0_NewItem21452, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat0_NewItem21452,createCombatArea({{0, 1, 0, 1, 0},
{1, 0, 1, 0, 1},
{1, 0, 0, 0, 1},
{0, 1, 2, 1, 0},
{0, 0, 1, 0, 0}}))
function getDmg_NewItem21452(cid, level, maglevel)
return (10)*-1,(20)*-1
end
setCombatCallback(combat0_NewItem21452, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_NewItem21452")

-- =============== CORE FUNCTIONS ===============
function RunPart(c,cid,var,dirList,dirEmitPos,startDir) -- Part
if (isCreature(cid)) then
doCombat(cid, c, var)
if (dirList ~= nil) then -- Emit distance effects
local i = 2;
while (i < #dirList) do
if (startDir == 0) then -- N
doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList,y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
elseif (startDir == 2) then -- S
doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x+dirList,y=dirEmitPos.y+dirList[i+1],z=dirEmitPos.z},dirList[1])
elseif (startDir == 1) then -- E
doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x+dirList[i+1],y=dirEmitPos.y+dirList,z=dirEmitPos.z},dirList[1])
else -- W / Something weird happened
doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i+1],y=dirEmitPos.y-dirList,z=dirEmitPos.z},dirList[1])
end
i = i + 2
end
end
end
end

function onCastSpell(cid, var)
local startPos = getCreaturePosition(cid)
local startDir = getCreatureLookDirection(cid)
RunPart(combat0_NewItem21452,cid,var)
return true
end


You need this?
 
You ever downloaded a distribution, the server itself. What distribution did you download (it does not seem compatible with this).
The server SHOULD have a docs/lua_functions file, I need that file, nothing else..
 
Back
Top