• 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 me with some spell :)!

zxzxzx

New Member
Joined
Mar 12, 2011
Messages
334
Reaction score
3
Hello! I just need to add different "arr" in this spell for third effect, how to make it work?

the spell
Code:
local combatConfig = {
    [0] = {type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_POFF, distanceEffect = CONST_ANI_THROWINGSTAR},
    [1] = {type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_POFF, distanceEffect = CONST_ANI_GREENSTAR},
    [2] = {type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_POFF, distanceEffect = CONST_ANI_REDSTAR},
    [3] = {type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_HOLYAREA, distanceEffect = CONST_ANI_SMALLHOLY},
}
function onGetFormulaValues0(player, level, maglevel)
    local min = (level / 5) + (maglevel * 1.8) + 11
    local max = (level / 5) + (maglevel * 3) + 19
    return -min, -max
end
function onGetFormulaValues1(player, level, maglevel)
    local min = (level / 5) + (maglevel * 1.8) + 11
    local max = (level / 5) + (maglevel * 3) + 19
    return -min, -max
end
function onGetFormulaValues2(player, level, maglevel)
    local min = (level / 5) + (maglevel * 1.8) + 11
    local max = (level / 5) + (maglevel * 3) + 19
    return -min, -max
end
function onGetFormulaValues3(player, level, maglevel)
    local min = (level / 5) + (maglevel * 1.8) + 11
    local max = (level / 5) + (maglevel * 3) + 19
    return -min, -max
end
function onTargetTile0(creature, position)
    creature:getPosition():sendDistanceEffect(position, combatConfig[0].distanceEffect)
end
function onTargetTile1(creature, position)
    creature:getPosition():sendDistanceEffect(position, combatConfig[1].distanceEffect)
end
function onTargetTile2(creature, position)
    creature:getPosition():sendDistanceEffect(position, combatConfig[2].distanceEffect)
end
function onTargetTile3(creature, position)
    creature:getPosition():sendDistanceEffect(position, combatConfig[3].distanceEffect)
end
function onTargetCreature0(creature, target)
    return doChallengeCreature(creature, target)
end
function onTargetCreature1(creature, target)
    return doChallengeCreature(creature, target)
end
function onTargetCreature2(creature, target)
    return doChallengeCreature(creature, target)
end
function onTargetCreature3(creature, target)
    return doChallengeCreature(creature, target)
end
local combat = {}
for i = 0, 3 do
    combat[i] = Combat()
    combat[i]:setParameter(COMBAT_PARAM_TYPE, combatConfig[i].type)
    combat[i]:setParameter(COMBAT_PARAM_EFFECT, combatConfig[i].effect)
    combat[i]:setArea(createCombatArea(AREA_CROSS6X6))
    combat[i]:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues"..i)
    combat[i]:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile"..i)
    combat[i]:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature"..i)
end
local function combatCallBack(cid, id, variant)
    local player = Player(cid)
    if not player then
        return false
    end
    return combat[id]:execute(player, variant)
end
function onCastSpell(creature, variant)
    local cid = creature:getId()
    for i = 0, 3 do
        addEvent(combatCallBack, i * 500, cid, i, variant)
    end
    return true
end


I tried many times with this lines and every time I do it bad..

Code:
for i = 0, 3 do
    combat[i] = Combat()
    combat[i]:setParameter(COMBAT_PARAM_TYPE, combatConfig[i].type)
    combat[i]:setParameter(COMBAT_PARAM_EFFECT, combatConfig[i].effect)
    combat[i]:setArea(createCombatArea(AREA_CROSS6X6))
    combat[i]:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues"..i)
    combat[i]:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile"..i)
    combat[i]:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature"..i)
end


The spell needs to look like this:


There's different callbacks too..


Help me! I be very grateful! rep++

bump ;c
 
Last edited by a moderator:
I dont know much about spells and stuff, but could it be the fault that you do not count i +1 at then end of a loop, because you say for 0, 3 do?
So I understand it as following: do the loop 4 times -- 0,1,2,3 -- ?

end of the for-loop -> i++
or what ever it is called in the programming language.
 
Up yes, I try to modify it and make it double with different
Code:
for i = 0, 3 do
like
Code:
for i = 0, 1  do,  for i = 2, 3 do
etc but its not working.. the spell must have more arr so I can't use only
Code:
  combat[i]:setArea(createCombatArea(AREA_CROSS6X6))
, that's the main probleem..

Code:
for i = 0, 3 do
    combat[i] = Combat()
    combat[i]:setParameter(COMBAT_PARAM_TYPE, combatConfig[i].type)
    combat[i]:setParameter(COMBAT_PARAM_EFFECT, combatConfig[i].effect)
    combat[i]:setArea(createCombatArea(AREA_CROSS6X6))
    combat[i]:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues"..i)
    combat[i]:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile"..i)
    combat[i]:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature"..i)
end
 
Please... Write in appropriate english so we can understand you better.
I don't understand the problem at all. What is meant with "arr" ?
 
Like u see The spell attack 4 times with 2 different areas, I need to make this double :
Code:
combat[i]:setArea(createCombatArea(AREA_CROSSX))

arr -
Code:
AREA_CROSSX = {
{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, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 1, 1, 1, 3, 1, 1, 1, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 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}
}
 
Code:
for i = 0, 3 do
    combat[i] = Combat()
    combat[i]:setParameter(COMBAT_PARAM_TYPE, combatConfig[i].type)
    combat[i]:setParameter(COMBAT_PARAM_EFFECT, combatConfig[i].effect)
    combat[i]:setArea(createCombatArea(AREA_CROSS6X6))
    combat[i]:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues"..i)
    combat[i]:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile"..i)
    combat[i]:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature"..i)
    i = i +1
end
 
not working, at line 50 error with compat, I don't think that what u post is solution for the problem, I find this script:

Code:
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.0, -100, -1.0, -200)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)
local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)

local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)
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, 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, 1, 2, 1, 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, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0},
{0, 0, 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, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 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},
}
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, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 2, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}

arr4 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 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, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 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},
}
local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)
local area4 = createCombatArea(arr4)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)
setCombatArea(combat4, area4)
local function onCastSpell1(parameters)
    doCombat(parameters.cid, parameters.combat1, parameters.var)
end
local function onCastSpell2(parameters)
    doCombat(parameters.cid, parameters.combat2, parameters.var)
end
local function onCastSpell3(parameters)
    doCombat(parameters.cid, parameters.combat3, parameters.var)
end

local function onCastSpell4(parameters)
    doCombat(parameters.cid, parameters.combat4, parameters.var)
end
function onCastSpell(cid, var)
local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4}
addEvent(onCastSpell1, 1, parameters)
addEvent(onCastSpell2, 1000, parameters)
addEvent(onCastSpell3, 2000, parameters)
addEvent(onCastSpell4, 3000, parameters)
end


If u know how to change
Code:
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.0, -100, -1.0, -200)
with this
Code:
function onGetFormulaValues0(player, level, maglevel)
    local min = (level / 5) + (maglevel * 1.8) + 11
    local max = (level / 5) + (maglevel * 3) + 19
    return -min, -max
end
- it will solve my problem

bump
 
Last edited by a moderator:
not working, at line 50 error with compat, I don't think that what u post is solution for the problem, I find this script:

Code:
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.0, -100, -1.0, -200)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)
local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)

local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)
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, 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, 1, 2, 1, 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, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0},
{0, 0, 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, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 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},
}
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, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 2, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}

arr4 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 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, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 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},
}
local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)
local area4 = createCombatArea(arr4)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)
setCombatArea(combat4, area4)
local function onCastSpell1(parameters)
    doCombat(parameters.cid, parameters.combat1, parameters.var)
end
local function onCastSpell2(parameters)
    doCombat(parameters.cid, parameters.combat2, parameters.var)
end
local function onCastSpell3(parameters)
    doCombat(parameters.cid, parameters.combat3, parameters.var)
end

local function onCastSpell4(parameters)
    doCombat(parameters.cid, parameters.combat4, parameters.var)
end
function onCastSpell(cid, var)
local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4}
addEvent(onCastSpell1, 1, parameters)
addEvent(onCastSpell2, 1000, parameters)
addEvent(onCastSpell3, 2000, parameters)
addEvent(onCastSpell4, 3000, parameters)
end


If u know how to change
Code:
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.0, -100, -1.0, -200)
with this
Code:
function onGetFormulaValues0(player, level, maglevel)
    local min = (level / 5) + (maglevel * 1.8) + 11
    local max = (level / 5) + (maglevel * 3) + 19
    return -min, -max
end
- it will solve my problem

^ This is just a damage formula, but if you say so, try this;

Lua:
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 6)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)
local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)

local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)
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, 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, 1, 2, 1, 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, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0},
{0, 0, 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, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 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},
}
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, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 2, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}

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

function onGetFormulaValues(cid, level, maglevel)
    min = (level / 5) + (maglevel * 1.8) + 11
    max = (level / 5) + (maglevel * 3) + 19
    return min, max
end

setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)
local area4 = createCombatArea(arr4)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)
setCombatArea(combat4, area4)
local function onCastSpell1(parameters)
    doCombat(parameters.cid, parameters.combat1, parameters.var)
end
local function onCastSpell2(parameters)
    doCombat(parameters.cid, parameters.combat2, parameters.var)
end
local function onCastSpell3(parameters)
    doCombat(parameters.cid, parameters.combat3, parameters.var)
end

local function onCastSpell4(parameters)
    doCombat(parameters.cid, parameters.combat4, parameters.var)
end
function onCastSpell(cid, var)
local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4}
addEvent(onCastSpell1, 1, parameters)
addEvent(onCastSpell2, 1000, parameters)
addEvent(onCastSpell3, 2000, parameters)
addEvent(onCastSpell4, 3000, parameters)
end

Though I am sure this code could've been written better
 
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 6)

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

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 6)

local area2 = createCombatArea({
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 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, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 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},
})
setCombatArea(combat2, area2)

local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 6)

local area3 = createCombatArea({
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 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, 0, 0, 0},
{0, 0, 0, 0, 1, 3, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
})
setCombatArea(combat3, area3)

local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 6)

local area4 = createCombatArea({
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 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, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 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},
})
setCombatArea(combat4, area4)

function onGetFormulaValues(cid, level, maglevel)
    min = -((level / 5) + (maglevel * 5.5) + 25)
    max = -((level / 5) + (maglevel * 11) + 50)
    return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")


function onCastSpell(cid, var)
    addEvent(doCombat, 1000, cid, combat2, var)
    addEvent(doCombat, 2000, cid, combat3, var)
    addEvent(doCombat, 3000, cid, combat4, var)
    return doCombat(cid, combat, var)
end
 
Lua:
local area =
{
    {
        {0, 1, 0},
        {1, 3, 1},
        {0, 1, 0},
    },
    {
        {1, 0, 1},
        {0, 3, 0},
        {1, 0, 1},
    },
    {
        {0, 1, 0},
        {1, 3, 1},
        {0, 1, 0},
    },
    {
        {1, 0, 1},
        {0, 3, 0},
        {1, 0, 1},
    }

}

local combat = {}

for i = 1, #area do
    combat[i] = createCombatObject()
    setCombatParam(combat[i], COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
    setCombatParam(combat[i], COMBAT_PARAM_EFFECT, 6)
    setCombatArea(combat[i], createCombatArea(area[i]))

    _G['onGetFormulaValues'..i] = function(cid, level, maglevel)
        min = -((level / 5) + (maglevel * 5.5) + 25)
        max = -((level / 5) + (maglevel * 11) + 50)
        return min, max
    end

    setCombatCallback(combat[i], CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues"..i)
end

local time = {1, 500, 1000, 1500}

function onCastSpell(cid, var)
    for x = 1, #area do
        addEvent(function(x)
            doCombat(cid, combat[x], var)
        end,
        time[x], x)
    end
    return true
end
 
Last edited:
Lua:
local area =
{
    {
        {0, 1, 0},
        {1, 3, 1},
        {0, 1, 0},
    },
    {
        {1, 0, 1},
        {0, 3, 0},
        {1, 0, 1},
    },
    {
        {0, 1, 0},
        {1, 3, 1},
        {0, 1, 0},
    },
    {
        {1, 0, 1},
        {0, 3, 0},
        {1, 0, 1},
    }

}

local combat = {}

for i = 1, #area do
    combat[i] = createCombatObject()
    setCombatParam(combat[i], COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
    setCombatParam(combat[i], COMBAT_PARAM_EFFECT, 6)
    setCombatArea(combat[i], createCombatArea(area[i]))

    _G['onGetFormulaValues'..i] = function(cid, level, maglevel)
        min = -((level / 5) + (maglevel * 5.5) + 25)
        max = -((level / 5) + (maglevel * 11) + 50)
        return min, max
    end

    setCombatCallback(combat[i], CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues"..i)
end

local time = {1, 500, 1000, 1500}

function onCastSpell(cid, var)
    for x = 1, #area do
        addEvent(function(x)
            doCombat(cid, combat[x], var)
        end
        time[x], x)
    end
    return true
end


well... there's error in line 47 ')' expected to close '(' at line 47 near 'time' - I try to add '(' there but the error is still showing..
 
well... there's error in line 47 ')' expected to close '(' at line 47 near 'time' - I try to add '(' there but the error is still showing..
There should be a comma after end on line 49, sometimes I overlook things hehe
Line 49 - this
Lua:
        end
Should be this
Lua:
        end,
I updated the code so just recopy it.
 
Good! now working but u changed little bit my script, u clean
Code:
local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)

and u added
Code:
for i = 1, #area do
    combat[i] = createCombatObject()
    setCombatParam(combat[i], COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
    setCombatParam(combat[i], COMBAT_PARAM_EFFECT, 6)
    setCombatArea(combat[i], createCombatArea(area[i]))

but I'm going to make some distance effect like in video, earlier I want to add more
Code:
local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)
lanes only for the distance shoot effect but with u new formula I don't know how.. I tried this:
Code:
for i = 1, #area do
    combat[i] = createCombatObject()
    setCombatParam(combat[i], COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
    setCombatParam(combat[i], COMBAT_PARAM_EFFECT, 6)
    setCombatParam(combat[i], COMBAT_PARAM_EFFECT, CONST_ANI_SMALLHOLY)
    setCombatArea(combat[i], createCombatArea(area[i]))
but the spell can only use 1 effect type.. :<

bump, please make it look like in the video so I will be 300% grateful ;)

bump

bumb2
 
Last edited by a moderator:
You said I changed your script, yea I did, well I altered the script @mackerel gave you.
This line of code here:
Lua:
setCombatCallback(combat[i], CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues"..i)
Is just a reference to the onGetFormulaValues callback function.

It behaves in the same manor as this:
Lua:
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)

Except the callback function is user defined where as the setCombatFormula is not, its a static formula, your goal is to return no value, you can't negate 0, 0 is neither positive nor negative.
 
Friend xD I think we don't understand each other, maybee because my English is to bad :c I only wan't to make this spell lool like in the video with this dmg calculation:
Code:
        min = -((level / 5) + (maglevel * 5.5) + 25)
        max = -((level / 5) + (maglevel * 11) + 50)
, thats all.. but I can't add distance effects only ground effect like exori, I'm not a scripter, I'm hoster. to late to learn c++ :/

bump

bump

damn.. bump.. someone have multi area effect whick using
Code:
function onGetFormulaValues1(player, level, maglevel)
    local min = (level / 5) + (maglevel * 1.8) + 11
    local max = (level / 5) + (maglevel * 3) + 19
    return -min, -max
end
?..

bump

bump

bump
 
Last edited by a moderator:
Back
Top