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

Lua Spell problem

Hameq

Banned User
Joined
Aug 8, 2010
Messages
374
Reaction score
36
Hello otlanders,

It is possible to replace damage value -50 by magic level formula damage?

Code:
local combat = createCombatObject(COMBAT_POISONDAMAGE)
 setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)

 local condition = createConditionObject(CONDITION_POISON)
 setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
 setConditionParam(condition, CONDITION_PARAM_STARTVALUE, [COLOR="#FF0000"]-50[/COLOR])
 setConditionParam(condition, CONDITION_PARAM_MAXVALUE, [COLOR="#FF0000"]-50[/COLOR])
 setCombatCondition(combat, condition)

 local arr = {
 {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
 {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
 {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
 {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
 {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}
 }

 local area = createCombatArea(arr)
 setCombatArea(combat, area)

 function onCastSpell(cid, var)
 return doCombat(cid, combat, var)
 end
 
here is formula depends on level and ml
Lua:
function onGetFormulaValues(cid, level, maglevel)
	local min =  (level * 3.5 + maglevel * 1.3) * 1.7 + 150 
	local max = (level * 3.8 + maglevel * 1.3) * 1.8 + 250 
	return -min, -max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
 
here is formula depends on level and ml
Lua:
function onGetFormulaValues(cid, level, maglevel)
	local min =  (level * 3.5 + maglevel * 1.3) * 1.7 + 150 
	local max = (level * 3.8 + maglevel * 1.3) * 1.8 + 250 
	return -min, -max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

But now how replace your formula with -50 damage?
 
try this
Lua:
local combat = createCombatObject(COMBAT_POISONDAMAGE)
 setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)

 local condition = createConditionObject(CONDITION_POISON)
 setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
 setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN)
 setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_NONE)
 setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, , , 50, )
 setCombatCondition(combat, condition)

 local arr = {
 {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
 {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
 {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
 {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
 {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}
 }

 local area = createCombatArea(arr)
 setCombatArea(combat, area)

 function onCastSpell(cid, var)
 return doCombat(cid, combat, var)
 end
 
I see problem is in , , , 5
try this:
Lua:
-----Spell by Cronox-----

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_NONE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 50, 50, 50, 50)

local arr = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 2, 1, 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},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 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 area = createCombatArea(arr)
setCombatArea(combat, area)

function onCastSpell(cid, var)
	return doCombat(cid, combat, var)
end
 
When i casting spell nothing happens no errors, just it gives infight condition and "exevo gran mas pox" msg
 
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 6, 6, 6, 13)

 local arr = {
 {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
 {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
 {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
 {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
 {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}
 }

 local area = createCombatArea(arr)
 setCombatArea(combat, area)

 function onCastSpell(cid, var)
 return doCombat(cid, combat, var)
 end
 
Last edited:
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 6, 6, 6, 13)

 local arr = {
 {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
 {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
 {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
 {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
 {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}
 }

 local area = createCombatArea(arr)
 setCombatArea(combat, area)

 function onCastSpell(cid, var)
 return doCombat(cid, combat, var)
 end
error
Code:
attempt to call global "setAttackFormula" a nil value

I can compile it but i have to know it will work for sure.
 
try this
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 6, 6, 6, 13)
 
 local arr = {
 {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
 {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
 {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
 {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
 {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}
 }
 
 local area = createCombatArea(arr)
 setCombatArea(combat, area)
 
 function onCastSpell(cid, var)
 return doCombat(cid, combat, var)
 end
 
try this
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 6, 6, 6, 13)
 
 local arr = {
 {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
 {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
 {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
 {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
 {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}
 }
 
 local area = createCombatArea(arr)
 setCombatArea(combat, area)
 
 function onCastSpell(cid, var)
 return doCombat(cid, combat, var)
 end

now effect work but spell doesn't add any damage :/
 
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 6, 6, 6, 13)
 
 local arr = {
 {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
 {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
 {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
 {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
 {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
 {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}
 }
 
 local area = createCombatArea(arr)
 setCombatArea(combat, area)
 
 function onCastSpell(cid, var)
 return doCombat(cid, combat, var)
 end
 
You gaved me "exura gran mas res" but like "exevo gran mas pox" arrea. Do you fucking know what you doing? cuz it going to waste my time.
 
try editing http://otland.net/f132/soulfire-spell-110317/#post1098553
it's not very optimized, keep that in mind :p

instead of setting how many times should it hit (green), you should set the damage (red)
Code:
addDamageCondition(t[a][b], [COLOR="#008000"]10[/COLOR], 9000, -[COLOR="#FF0000"](math.ceil(a / 3 + b / 3))[/COLOR])
 
try editing http://otland.net/f132/soulfire-spell-110317/#post1098553
it's not very optimized, keep that in mind :p

instead of setting how many times should it hit (green), you should set the damage (red)
Code:
addDamageCondition(t[a][b], [COLOR="#008000"]10[/COLOR], 9000, -[COLOR="#FF0000"](math.ceil(a / 3 + b / 3))[/COLOR])

Thanks ill check it :)

Thanks ill check it :)


Yes it works, but you forgot to add one line, maybe only for old engine eversions like mine avesta 7.4

Code:
setCombatCondition(combat, t[a][b])

You helped me THANKS
 
Last edited:
soulfire rune:
Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
 
local t = {}
for a = 1, 400 do
	t[a] = {}
	for b = 0, 156 do
		t[a][b] = createConditionObject(CONDITION_FIRE)
		setConditionParam(t[a][b], CONDITION_PARAM_DELAYED, 1)
		addDamageCondition(t[a][b], math.ceil(a / 3 + b / 3), 9000, -10)
	end
end
 
function onTargetCreature(cid, target) return doTargetCombatCondition(target, t[getPlayerLevel(cid)][getPlayerMagLevel(cid)], CONST_ME_NONE) end 
setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")

function onCastSpell(cid, var)
   doCombat(cid, combat, var)
end

This version is small better because on some servers function "variantToPosition(var)" doesnt work like is on my server. It's fix for it.
 
Back
Top