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

[Help] My Custom Spell Based On Just " Weapon "

hucko

Special Order
Joined
May 6, 2011
Messages
79
Reaction score
1
I made some of custom spell by "Spell creator" and i tried to made it based on Skills,Level and Magic,level

but i noticed that
My full equipment doesn't make any change

Explain :
i have full don and hit with
11:03 You deal 60 damage to a training monk. , 11:03 You deal 58 damage to a training monk.

after equip Donation star " Weapon "

11:04 You deal 1166 damage to a training monk.
11:04 You deal 1304 damage to a training monk.

Code:
-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 100ms
local combat1_Brush = createCombatObject()
setCombatParam(combat1_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
function onGetFormulaValues(cid, level, skill, attack, factor)
local skillTotal, levelTotal = skill + attack, level / 5
   return -(skillTotal * 0.5 + levelTotal), -(skillTotal * 1.5 + levelTotal)
end
setCombatArea(combat1_Brush,createCombatArea({{0, 1, 0, 1, 0},
{1, 0, 0, 0, 1},
{0, 0, 2, 0, 0},
{1, 0, 0, 0, 1},
{0, 1, 0, 1, 0}}))
setCombatCallback(combat1_Brush, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
local dfcombat1_Brush = {CONST_ANI_HOLY,2,1,2,-1,1,-2,-1,-2,-2,-1,-2,1,-1,2,1,2}local combat1_Brush_4 = createCombatObject()
setCombatParam(combat1_Brush_4, COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA)
setCombatParam(combat1_Brush_4, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
function onGetFormulaValues(cid, level, skill, attack, factor)
local skillTotal, levelTotal = skill + attack, level / 5
   return -(skillTotal * 0.5 + levelTotal), -(skillTotal * 1.5 + levelTotal)
end
setCombatArea(combat1_Brush_4,createCombatArea({{0, 0, 1, 0, 0},
{0, 0, 0, 0, 0},
{1, 0, 2, 0, 1},
{0, 0, 0, 0, 0},
{0, 0, 1, 0, 0}}))
setCombatCallback(combat1_Brush_4, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

-- Areas/Combat for 0ms
local combat0_Brush_4 = createCombatObject()
setCombatParam(combat0_Brush_4, COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA)
setCombatParam(combat0_Brush_4, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
function onGetFormulaValues(cid, level, skill, attack, factor)
local skillTotal, levelTotal = skill + attack, level / 5
   return -(skillTotal * 0.5 + levelTotal), -(skillTotal * 1.5 + levelTotal)
end
setCombatArea(combat0_Brush_4,createCombatArea({{1, 1, 1},
{1, 2, 1},
{1, 1, 1}}))
setCombatCallback(combat0_Brush_4, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

-- Areas/Combat for 200ms
local combat2_Brush_5 = createCombatObject()
setCombatParam(combat2_Brush_5, COMBAT_PARAM_EFFECT, CONST_ME_FIREWORK_YELLOW)
setCombatParam(combat2_Brush_5, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
function onGetFormulaValues(cid, level, skill, attack, factor)
local skillTotal, levelTotal = skill + attack, level / 5
   return -(skillTotal * 0.5 + levelTotal), -(skillTotal * 1.5 + levelTotal)
end
setCombatArea(combat2_Brush_5,createCombatArea({{0, 1, 0, 0, 0, 1, 0},
{1, 0, 0, 0, 0, 0, 1},
{0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 2, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0},
{1, 0, 0, 0, 0, 0, 1},
{0, 1, 0, 0, 0, 1, 0}}))
setCombatCallback(combat2_Brush_5, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

-- =============== 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)
   addEvent(RunPart,100,combat1_Brush,cid,var,dfcombat1_Brush,startPos)
   addEvent(RunPart,100,combat1_Brush_4,cid,var)
   RunPart(combat0_Brush_4,cid,var)
   addEvent(RunPart,200,combat2_Brush_5,cid,var)
   return true
end
 
the problem is if i didn't have any weapon ... the spell won't make damage ...

my donation equipment doesn't make any char with spell .. it's +distance fighting value

the problem is my spell based on just weapon not on donation equipment or skills and level
 
Last edited:
If the skill and level is alot lower than the attack, then there won't be much damage based on skill and level.

This part gives the damage.
Code:
function onGetFormulaValues(cid, level, skill, attack, factor)
     local skillTotal, levelTotal = skill + attack, level / 5
     return -(skillTotal * 0.5 + levelTotal), -(skillTotal * 1.5 + levelTotal)
end

If skill should have more effect you can do for example (skill * 5).
Same goes for level, instead of level / 5 you can do level * 10.
 
dude that's not i mean .. i know what did you say

but there is something wrong in this .. i can't explain what is that you can try and watch what will happend....


Code:
-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_Brush = createCombatObject()
setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_TELEPORT)
setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat0_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
setCombatFormula(combat0_Brush, COMBAT_FORMULA_SKILL, 10, 10, 30, 30)

-- Areas/Combat for 200ms
local combat2_Brush_2 = createCombatObject()
setCombatParam(combat2_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat2_Brush_2, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGYBALL)
setCombatParam(combat2_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat2_Brush_2,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
setCombatFormula(combat2_Brush_2, COMBAT_FORMULA_SKILL, 10, 10, 30, 30)
local dfcombat2_Brush_2 = {CONST_ANI_ENERGYBALL,-1,1,-3,0,1,0,2,1,3,2,3,1,-1,2,-3,3,0,3,-2,2,-2,3,1,3,3,3,-3,2,-1,3,2,3,0,2,1,2,2,2,1,1,-2,1,-2,0,0,1,-3,1,-1,0,2,0,3,0,3,-1,2,-1,1,-1,0,-1,-1,-1,-2,-1,-3,-1,-3,-2,-2,-2,-1,-2,0,-2,1,-2,2,-2,3,-2,3,-3,2,-3,1,-3,0,-3,-1,-3,-2,-3,-3,-3}

-- =============== 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_Brush,cid,var)
   addEvent(RunPart,200,combat2_Brush_2,cid,var,dfcombat2_Brush_2,startPos)
   return true
end

try once by equip wand ... and change it for another wand..

try second time without weapon , and you will know what i'm talking about
 
You can use what I posted instead of setCombatFormula(combat0_Brush, COMBAT_FORMULA_SKILL, 10, 10, 30, 30).
It's the some thing but then more easy to calculate.
 
i did like you said

now it's stop working 0 damage xD

Code:
-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_Brush = createCombatObject()
setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_TELEPORT)
setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatArea(combat0_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function onGetFormulaValues(cid, level, skill, attack, factor)
  local skillTotal, levelTotal = skill + attack, level / 5
  return -(skillTotal * 0.5 + levelTotal), -(skillTotal * 1.5 + levelTotal)
end

-- Areas/Combat for 200ms
local combat2_Brush_2 = createCombatObject()
setCombatParam(combat2_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat2_Brush_2, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGYBALL)
setCombatParam(combat2_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat2_Brush_2,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function onGetFormulaValues(cid, level, skill, attack, factor)
  local skillTotal, levelTotal = skill + attack, level / 5
  return -(skillTotal * 0.5 + levelTotal), -(skillTotal * 1.5 + levelTotal)
end
local dfcombat2_Brush_2 = {CONST_ANI_ENERGYBALL,-1,1,-3,0,1,0,2,1,3,2,3,1,-1,2,-3,3,0,3,-2,2,-2,3,1,3,3,3,-3,2,-1,3,2,3,0,2,1,2,2,2,1,1,-2,1,-2,0,0,1,-3,1,-1,0,2,0,3,0,3,-1,2,-1,1,-1,0,-1,-1,-1,-2,-1,-3,-1,-3,-2,-2,-2,-1,-2,0,-2,1,-2,2,-2,3,-2,3,-3,2,-3,1,-3,0,-3,-1,-3,-2,-3,-3,-3}

-- =============== 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_Brush,cid,var)
   addEvent(RunPart,200,combat2_Brush_2,cid,var,dfcombat2_Brush_2,startPos)
   return true
end
 
You also have to add the callback for the combat under the function.
Code:
setCombatCallback(combat0_Brush, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
 
Back
Top