• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

Lua deal less damage depending on the area of the attack

Lurk

Active Member
Joined
Dec 4, 2017
Messages
336
Reaction score
49
ok so I have this script
LUA:
local test = createCombatArea{
    {1, 1, 1},
    {1, 3, 1},
    {1, 1, 1}
}

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 0)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 39)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 24)
setCombatArea(combat, test)

local extra = 0

function onGetFormulaValues(cid, level, skill, attack, factor)
    if getPlayerStorageValue(cid, 378378) > 0 then -- dano extra com reset
        extra = (getPlayerStorageValue(cid, 378378)*23000)
        local skillTotal, levelTotal = skill, level / 5
        return -(229000+(skillTotal * 0.65 + (levelTotal/3)+extra)), -(299000+(skillTotal * 1.1 + (levelTotal/3)+extra))
    else
        local skillTotal, levelTotal = skill, level / 5
        return -(229000+(skillTotal * 0.65 + (levelTotal/3))), -(299000+(skillTotal * 1.1 + (levelTotal/3)))
    end
end
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")


function onUseWeapon(cid, var)
return doCombat(cid, combat, var)
end

but I wanted that the hits that are in the 1 of the area to do less damage than the one in the center (3), any idea?
 
solved! it doesn't look pretty but
LUA:
local test = createCombatArea{
    {0, 0, 0},
    {0, 3, 0},
    {0, 0, 0}
}

local test2 = createCombatArea{
    {1, 1, 1},
    {1, 3, 1},
    {1, 1, 1}
}

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 0)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 39)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 24)
setCombatArea(combat, test)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_BLOCKARMOR, 0)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 39)
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, 24)
setCombatArea(combat2, test2)

local extra = 0

function onGetFormulaValues(cid, level, skill, attack, factor)
    if getPlayerStorageValue(cid, 378378) > 0 then -- dano extra com reset
        extra = (getPlayerStorageValue(cid, 378378)*23000)
        local skillTotal, levelTotal = skill, level / 5
        return -(229000+(skillTotal * 0.65 + (levelTotal/3)+extra)), -(299000+(skillTotal * 1.1 + (levelTotal/3)+extra))
    else
        local skillTotal, levelTotal = skill, level / 5
        return -(229000+(skillTotal * 0.65 + (levelTotal/3))), -(299000+(skillTotal * 1.1 + (levelTotal/3)))
    end
end

function onGetFormulaValues2(cid, level, skill, attack, factor)
    if getPlayerStorageValue(cid, 378378) > 0 then -- dano extra com reset
        extra = (getPlayerStorageValue(cid, 378378)*23000)
        local skillTotal, levelTotal = skill, level / 5
        return -(9000+(skillTotal * 0.65 + (levelTotal/3)+extra)), -(9100+(skillTotal * 1.1 + (levelTotal/3)+extra))
    else
        local skillTotal, levelTotal = skill, level / 5
        return -(9000+(skillTotal * 0.65 + (levelTotal/3))), -(9100+(skillTotal * 1.1 + (levelTotal/3)))
    end
end
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
setCombatCallback(combat2, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues2")


function onUseWeapon(cid, var)
doCombat(cid, combat2, var)
return doCombat(cid, combat, var)
end
 
Back
Top