• 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 magic doesn't damage the element

darkmu

Well-Known Member
Joined
Aug 26, 2007
Messages
274
Solutions
1
Reaction score
50
Location
Paraná,Brazil
Does anyone know how to fix the problem that when casting spells the element does not appear? Example Knight using exori or exori gran hits physics instead of hitting ice and physics.

using: 12.40 cliente with otg 1.3 premmium version

1595854546068.png
1595854579930.png
 
Solution
events.cpp

C++:
        /*
            Only EK with dealing physical damage will get elemental damage on skill
        */
        if (damage.origin == ORIGIN_SPELL) {
            if (player->getVocationId() != 4 && player->getVocationId() != 8) {
                damage.primary.value = damage.primary.value + damage.secondary.value;
                damage.secondary.type = COMBAT_NONE;
                damage.secondary.value = 0;
            }
        }


Check your vocation.xml, becouse only 4 and 8 dealing effect :)
When you use exori, does server log show 2 separate damages?
 
@Xikini

U can help me?

is there a possibility to get the weapon id I'm using? There is no way to define the type of combat for the element I want.

Lua:
local config = {
 [12354] = { combat = 'COMBAT_ICEDAMAGE'},
 [123456] = { combat = 'COMBAT_ENERGYDAMAGE'},
 [43545] = { combat = 'COMBAT_EARTHDAMAGE'},
 [54667] = { combat = 'COMBAT_FIREDAMAGE'},
}


local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
combat:setParameter(COMBAT_PARAM_BLOCKARMOR, 1)
combat:setParameter(COMBAT_PARAM_USECHARGES, 1)
combat:setArea(createCombatArea(AREA_SQUARE1X1))

function onGetFormulaValues(player, skill, attack, factor)
    local damage = config[player:getSlotItem(CONST_SLOT_LEFT)]   
    if not damage  then
        return false
    end
    
    local skillTotal = skill * attack
    local levelTotal = player:getLevel() / 5
    return -(((skillTotal * 0.07) + 7) + (levelTotal)), -(((skillTotal * 0.09) + 11) + (levelTotal))
end

combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

function onCastSpell(creature, var)
    return combat:execute(creature, var)
end
 
Someone help with my script, I'm trying to solve the problem.

Lua:
local config = {
 [12354] = { combat = 'COMBAT_ICEDAMAGE'},
 [123456] = { combat = 'COMBAT_ENERGYDAMAGE'},
 [2432] = { combat = 'COMBAT_EARTHDAMAGE'},
 [54667] = { combat = 'COMBAT_FIREDAMAGE'},
}


local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE)
combat:setParameter(COMBAT_PARAM_BLOCKARMOR, 1)
combat:setParameter(COMBAT_PARAM_USECHARGES, 1)

local combat1 = Combat()
combat1:setParameter(COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
combat1:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
combat1:setParameter(COMBAT_PARAM_BLOCKARMOR, 1)
combat1:setParameter(COMBAT_PARAM_USECHARGES, 1)
combat1:setArea(createCombatArea(AREA_SQUARE1X1))

local combat2 = Combat()
combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat2:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
combat2:setParameter(COMBAT_PARAM_BLOCKARMOR, 1)
combat2:setParameter(COMBAT_PARAM_USECHARGES, 1)
combat2:setArea(createCombatArea(AREA_SQUARE1X1))

local combat3 = Combat()
combat3:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
combat3:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
combat3:setParameter(COMBAT_PARAM_BLOCKARMOR, 1)
combat3:setParameter(COMBAT_PARAM_USECHARGES, 1)
combat3:setArea(createCombatArea(AREA_SQUARE1X1))

local combat4 = Combat()
combat4:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat4:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
combat4:setParameter(COMBAT_PARAM_BLOCKARMOR, 1)
combat4:setParameter(COMBAT_PARAM_USECHARGES, 1)
combat4:setArea(createCombatArea(AREA_SQUARE1X1))


function onGetFormulaValues(player, skill, attack, factor)
    local item_left = player:getSlotItem(CONST_SLOT_LEFT)
    
    if item_left =~ nill then
        local item_left_hand = item_left:getId()
        for name, v in pairs(config) do
            if (name == item_left_hand) then
                combat1:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
            end
            else
            
            end
        end       
    end   

    
    local skillTotal = skill * attack
    local levelTotal = player:getLevel() / 5
    return -(((skillTotal * 0.07) + 7) + (levelTotal)), -(((skillTotal * 0.09) + 11) + (levelTotal))
end

combat1:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

function onCastSpell(creature, var)
    return combat1:execute(creature, var)
end
 
Lua:
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE)
combat:setParameter(COMBAT_PARAM_BLOCKARMOR, 1)
combat:setParameter(COMBAT_PARAM_USECHARGES, 1)

function onGetFormulaValues(player, skill, attack, factor)
    local skillTotal = skill * attack
    local levelTotal = player:getLevel() / 5
    return -(((skillTotal * 0.07) + 7) + (levelTotal)), -(((skillTotal * 0.09) + 11) + (levelTotal))
end

combat1:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

function onCastSpell(creature, var)
    return combat1:execute(creature, var)
end

try this
 
Lua:
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE)
combat:setParameter(COMBAT_PARAM_BLOCKARMOR, 1)
combat:setParameter(COMBAT_PARAM_USECHARGES, 1)

function onGetFormulaValues(player, skill, attack, factor)
    local skillTotal = skill * attack
    local levelTotal = player:getLevel() / 5
    return -(((skillTotal * 0.07) + 7) + (levelTotal)), -(((skillTotal * 0.09) + 11) + (levelTotal))
end

combat1:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

function onCastSpell(creature, var)
    return combat1:execute(creature, var)
end

try this

still doesn't work, what can I be doing wrong?
 
take a look at this threads maybe you find out something
 
events.cpp

C++:
        /*
            Only EK with dealing physical damage will get elemental damage on skill
        */
        if (damage.origin == ORIGIN_SPELL) {
            if (player->getVocationId() != 4 && player->getVocationId() != 8) {
                damage.primary.value = damage.primary.value + damage.secondary.value;
                damage.secondary.type = COMBAT_NONE;
                damage.secondary.value = 0;
            }
        }


Check your vocation.xml, becouse only 4 and 8 dealing effect :)
 
Last edited:
Solution
events.cpp

C++:
        /*
            Only EK with dealing physical damage will get elemental damage on skill
        */
        if (damage.origin == ORIGIN_SPELL) {
            if (player->getVocationId() != 4 && player->getVocationId() != 8) {
                damage.primary.value = damage.primary.value + damage.secondary.value;
                damage.secondary.type = COMBAT_NONE;
                damage.secondary.value = 0;
            }
        }


Check your vocation.xml, becouse only 4 and 8 dealing effect :)

Thanks !!

take a look at this threads maybe you find out something

Nice !!
 
Back
Top