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

TFS 0.X TFS 0.4 ancient version Exori weapon type dmg

miguelshta

Member
Joined
Mar 21, 2009
Messages
351
Solutions
1
Reaction score
13
Location
Toronto, Canada
hello i want to add the weapon type damage like newers version to some spells
example:
if i wear a fire axe and i use exori spells it will hit pysical dmg + the fire dmg of the axe
exori_mas_by_gustavo_santiago_dd359yj-200h.png


here is my berser.lua code

Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

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

function onGetFormulaValues(cid, level, skill, attack, factor)
    local skillTotal, levelTotal = skill + attack, level / 5
    return -(skillTotal * 1 + levelTotal), -(skillTotal * 1.7 + levelTotal)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end
 
Solution


XML:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Lessaire's mixtape" version="1.105" author="Xaekai" contact="https://otland.net/members/lessaire.71608/" enabled="yes">
    <notes><![CDATA[

        Here is your silly little spell.

    ]]></notes>

    <instant name="Diamond Fireslash" words="exevo gran mas exori flam hur" lvl="0" mana="0" prem="1" needweapon="1" exhaustion="100" groups="1,2000" icon="80" needlearn="0" event="script"><![CDATA[
function onGetFormulaValues(cid, level, skill, attack, factor)
    local skillTotal, levelTotal = skill + attack, level / 5
    return - (skillTotal * 1 + levelTotal), -(skillTotal * 1.7 + levelTotal)
end

local fireweapons = { 2392, 2432, 12690, 12691, 12689 }

-- HOW...
Lua:
--[[ Lessaire thinks your idea is cute ]]--
function onGetFormulaValues(cid, level, skill, attack, factor)
    local skillTotal, levelTotal = skill + attack, level / 5
    return -(skillTotal * 1 + levelTotal), -(skillTotal * 1.7 + levelTotal)
end

local exoriPhysical = createCombatObject();
setCombatArea(exoriPhysical, createCombatArea(AREA_SQUARE1X1))
setCombatParam(exoriPhysical, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(exoriPhysical, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(exoriPhysical, COMBAT_PARAM_USECHARGES, true)
setCombatCallback(exoriPhysical, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

-- firestrike the targeted creature
local firestrike = createCombatObject()
setCombatParam(firestrike, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(firestrike, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(firestrike, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatFormula(firestrike, COMBAT_FORMULA_SKILL, 0, 0, 1.0, 0)

-- the creature is gonna have a bad day
local immolation = createCombatObject()
setCombatParam(immolation, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

local napalm = createConditionObject(CONDITION_FIRE)
setConditionParam(napalm, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(napalm, 4, 2000, -2)
addDamageCondition(napalm, 6, 2000, -1)
addDamageCondition(napalm, 5, 3000, -25)
addDamageCondition(napalm, 1, 5000, -100)
setCombatCondition(immolation, napalm)

local fireweapons = nil -- ??????????
local function dispatcher(cid, var)
    local target = variantToNumber(var)
    local fireweapon = false -- <---------- you didn't provide conditions for activation in your request
    if(target ~= 0 and fireweapon) then
        local chance = math.random(0, 100)
        if(chance > 90) then
            return doCombat(cid, exoriPhysical, var),
                   doCombat(cid, firestrike, var),
                   doCombat(cid, immolation, var)
        end
        return doCombat(cid, exoriPhysical, var),
               doCombat(cid, firestrike, var)
    else
        return doCombat(cid, exoriPhysical, var)
    end
end

function onCastSpell(cid, var)
    return dispatcher(cid, var)
end
 
Last edited:
Lua:
--[[ Lessaire thinks your idea is cute ]]--
function onGetFormulaValues(cid, level, skill, attack, factor)
    local skillTotal, levelTotal = skill + attack, level / 5
    return -(skillTotal * 1 + levelTotal), -(skillTotal * 1.7 + levelTotal)
end

local exoriPhysical = createCombatObject();
setCombatArea(exoriPhysical, createCombatArea(AREA_SQUARE1X1))
setCombatParam(exoriPhysical, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(exoriPhysical, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(exoriPhysical, COMBAT_PARAM_USECHARGES, true)
setCombatCallback(exoriPhysical, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

-- firestrike the targeted creature
local firestrike = createCombatObject()
setCombatParam(firestrike, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(firestrike, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(firestrike, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatFormula(firestrike, COMBAT_FORMULA_SKILL, 0, 0, 1.0, 0)

-- the creature is gonna have a bad day
local immolation = createCombatObject()
setCombatParam(immolation, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

local napalm = createConditionObject(CONDITION_FIRE)
setConditionParam(napalm, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(napalm, 4, 2000, -2)
addDamageCondition(napalm, 6, 2000, -1)
addDamageCondition(napalm, 5, 3000, -25)
addDamageCondition(napalm, 1, 5000, -100)
setCombatCondition(immolation, napalm)

local fireweapons = nil -- ??????????
local function dispatcher(cid, var)
    local target = variantToNumber(var)
    local fireweapon = false -- <---------- you didn't provide conditions for activation in your request
    if(target ~= 0 and fireweapon) then
        local chance = math.random(0, 100)
        if(chance > 90) then
            return doCombat(cid, exoriPhysical, var),
                   doCombat(cid, firestrike, var),
                   doCombat(cid, immolation, var)
        end
        return doCombat(cid, exoriPhysical, var),
               doCombat(cid, firestrike, var)
    else
        return doCombat(cid, exoriPhysical, var)
    end
end

function onCastSpell(cid, var)
    return dispatcher(cid, var)
end
looks nice but how i can activate it i put fire axe and use exori and the dmg not change only physical
 
you didn't specify that in your OP and my script made that very clear.

Provide the array of ITEMIDs that you want to be able to access the extra damage stuff.
 
make the following changes then:

Diff:
setCombatCondition(immolation, napalm)

-local fireweapons = nil -- ??????????
+local fireweapons = { "2432", "12690", "12691", "12689" }
local function dispatcher(cid, var)
     local target = variantToNumber(var)
-    local fireweapon = false -- <---------- you didn't provide conditions for activation in your request
+    local weapon = getPlayerWeapon(cid, true)
+    weapon = weapon ~= nil and weapon.itemid or 0
+    local fireweapon = isInArray(fireweapons, weapon)

     if(target ~= 0 and fireweapon) then
         local chance = math.random(0, 100)
 
Last edited:
make the following changes then:

Diff:
setCombatCondition(immolation, napalm)

-local fireweapons = nil -- ??????????
+local fireweapons = { "2432", "12690", "12691", "12689" }
local function dispatcher(cid, var)
     local target = variantToNumber(var)
-    local fireweapon = false -- <---------- you didn't provide conditions for activation in your request
+    local weapon = getPlayerWeapon(cid, true)
+    weapon = weapon ~= nil and weapon.itemid or 0
+    local fireweapon = isInArray(fireweapons, weapon)

     if(target ~= 0 and fireweapon) then
         local chance = math.random(0, 100)
didnt work but no console errors

Lua:
--[[ Lessaire thinks your idea is cute ]]--
function onGetFormulaValues(cid, level, skill, attack, factor)
    local skillTotal, levelTotal = skill + attack, level / 5
    return -(skillTotal * 1 + levelTotal), -(skillTotal * 1.7 + levelTotal)
end

local exoriPhysical = createCombatObject();
setCombatArea(exoriPhysical, createCombatArea(AREA_SQUARE1X1))
setCombatParam(exoriPhysical, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(exoriPhysical, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(exoriPhysical, COMBAT_PARAM_USECHARGES, true)
setCombatCallback(exoriPhysical, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

-- firestrike the targeted creature
local firestrike = createCombatObject()
setCombatParam(firestrike, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(firestrike, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(firestrike, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatFormula(firestrike, COMBAT_FORMULA_SKILL, 0, 0, 1.0, 0)

-- the creature is gonna have a bad day
local immolation = createCombatObject()
setCombatParam(immolation, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

local napalm = createConditionObject(CONDITION_FIRE)
setConditionParam(napalm, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(napalm, 4, 2000, -2)
addDamageCondition(napalm, 6, 2000, -1)
addDamageCondition(napalm, 5, 3000, -25)
addDamageCondition(napalm, 1, 5000, -100)
setCombatCondition(immolation, napalm)


local fireweapons = { "2432", "12690", "12691", "12689" }
local function dispatcher(cid, var)
     local target = variantToNumber(var)
    local weapon = getPlayerWeapon(cid, true)
    weapon = weapon ~= nil and weapon.itemid or 0
    local fireweapon = isInArray(fireweapons, weapon)

     if(target ~= 0 and fireweapon) then
         local chance = math.random(0, 100)
        if(chance > 90) then
            return doCombat(cid, exoriPhysical, var),
                   doCombat(cid, firestrike, var),
                   doCombat(cid, immolation, var)
        end
        return doCombat(cid, exoriPhysical, var),
               doCombat(cid, firestrike, var)
    else
        return doCombat(cid, exoriPhysical, var)
    end
end

function onCastSpell(cid, var)
    return dispatcher(cid, var)
end
 
didnt work but no console errors
Lua:
if(target ~= 0 and fireweapon) then
         local chance = math.random(0, 100)
        if(chance > 90) then
            return doCombat(cid, exoriPhysical, var),
                   doCombat(cid, firestrike, var),
                   doCombat(cid, immolation, var)
        end

Maybe the chance didn't came higher then 90 in your 0/100 math.random variable. Change for testing purposes the if(chance > 90) to if(chance > 0) on line '43'.

Sincerely,
Ralumbi(Caleb)
 
My bad. I'm almost done getting my TFS 3884 fork all fixed up for modern systems, then I'll be able to actually test these scripts instead of executing them in my head. 😂
Diff:
-local fireweapons = { "2432", "12690", "12691", "12689" }
+local fireweapons = { 2432, 12690, 12691, 12689 }
 
My bad. I'm almost done getting my TFS 3884 fork all fixed up for modern systems, then I'll be able to actually test these scripts instead of executing them in my head. 😂
Diff:
-local fireweapons = { "2432", "12690", "12691", "12689" }
+local fireweapons = { 2432, 12690, 12691, 12689 }
still not working here is the full modified script

Lua:
--[[ Lessaire thinks your idea is cute ]]--
function onGetFormulaValues(cid, level, skill, attack, factor)
    local skillTotal, levelTotal = skill + attack, level / 5
    return -(skillTotal * 1 + levelTotal), -(skillTotal * 1.7 + levelTotal)
end

local exoriPhysical = createCombatObject();
setCombatArea(exoriPhysical, createCombatArea(AREA_SQUARE1X1))
setCombatParam(exoriPhysical, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(exoriPhysical, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(exoriPhysical, COMBAT_PARAM_USECHARGES, true)
setCombatCallback(exoriPhysical, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

-- firestrike the targeted creature
local firestrike = createCombatObject()
setCombatParam(firestrike, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(firestrike, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(firestrike, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatFormula(firestrike, COMBAT_FORMULA_SKILL, 0, 0, 1.0, 0)

-- the creature is gonna have a bad day
local immolation = createCombatObject()
setCombatParam(immolation, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

local napalm = createConditionObject(CONDITION_FIRE)
setConditionParam(napalm, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(napalm, 4, 2000, -2)
addDamageCondition(napalm, 6, 2000, -1)
addDamageCondition(napalm, 5, 3000, -25)
addDamageCondition(napalm, 1, 5000, -100)
setCombatCondition(immolation, napalm)


local fireweapons = { 2432, 12690, 12691, 12689 }
local function dispatcher(cid, var)
     local target = variantToNumber(var)
    local weapon = getPlayerWeapon(cid, true)
    weapon = weapon ~= nil and weapon.itemid or 0
    local fireweapon = isInArray(fireweapons, weapon)

     if(target ~= 0 and fireweapon) then
         local chance = math.random(0, 100)
        if(chance > 90) then
            return doCombat(cid, exoriPhysical, var),
                   doCombat(cid, firestrike, var),
                   doCombat(cid, immolation, var)
        end
        return doCombat(cid, exoriPhysical, var),
               doCombat(cid, firestrike, var)
    else
        return doCombat(cid, exoriPhysical, var)
    end
end

function onCastSpell(cid, var)
    return dispatcher(cid, var)
end
 


XML:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Lessaire's mixtape" version="1.105" author="Xaekai" contact="https://otland.net/members/lessaire.71608/" enabled="yes">
    <notes><![CDATA[

        Here is your silly little spell.

    ]]></notes>

    <instant name="Diamond Fireslash" words="exevo gran mas exori flam hur" lvl="0" mana="0" prem="1" needweapon="1" exhaustion="100" groups="1,2000" icon="80" needlearn="0" event="script"><![CDATA[
function onGetFormulaValues(cid, level, skill, attack, factor)
    local skillTotal, levelTotal = skill + attack, level / 5
    return - (skillTotal * 1 + levelTotal), -(skillTotal * 1.7 + levelTotal)
end

local fireweapons = { 2392, 2432, 12690, 12691, 12689 }

-- HOW CAN SHE SLAP?!
local pimphand = createCombatObject();
    setCombatArea(pimphand, createCombatArea(AREA_CIRCLE2X2))
    setCombatParam(pimphand, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
    setCombatParam(pimphand, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
    setCombatParam(pimphand, COMBAT_PARAM_USECHARGES, true)
    setCombatCallback(pimphand, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

-- Firestrike the targeted creature
local firestrike = createCombatObject()
    setCombatParam(firestrike, COMBAT_PARAM_BLOCKARMOR, 1)
    setCombatParam(firestrike, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
    setCombatParam(firestrike, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
    setCombatFormula(firestrike, COMBAT_FORMULA_SKILL, 0, 0, 1.0, 0)

-- I'm having a bad day
local napalm = createConditionObject(CONDITION_FIRE)
    addDamageCondition(napalm, 4, 2000, -2)
    addDamageCondition(napalm, 6, 2000, -1)
    addDamageCondition(napalm, 5, 3000, -25)
    addDamageCondition(napalm, 1, 5000, -100)
    setConditionParam(napalm, CONDITION_PARAM_DELAYED, 1)
local immolation = createCombatObject()
    setCombatParam(immolation, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
    setCombatParam(immolation, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
    setCombatFormula(immolation, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 10, 10, 3.6, 3.6)
    setCombatCondition(immolation, napalm)

-- Now we are cooking with gas
local combust = createCombatObject()
    setCombatArea(combust, createCombatArea(AREA_CIRCLE3X3))
    setCombatParam(combust, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
    setCombatParam(combust, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
    setAttackFormula(combust, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1.4, 2.8, 40, 70)

-- !!! JVDEA DELENDA EST !!!
local holocaust = createCombatObject()
    setCombatArea(holocaust, createCombatArea(AREA_WAVE4, AREADIAGONAL_WAVE4))
    setCombatParam(holocaust, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
    setCombatParam(holocaust, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
    setCombatParam(holocaust, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
    setCombatParam(holocaust, COMBAT_PARAM_CREATEITEM, 1492)
    setCombatFormula(holocaust, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 10, 10, 3.6, 3.6)

-- Are you prepared for when Javascript replaces Lua?
local animeMistake = createConditionObject(CONDITION_FIRE)
    addDamageCondition(animeMistake, 1, 3080, -45)
    addDamageCondition(animeMistake, 1, 3060, -40)
    addDamageCondition(animeMistake, 1, 3070, -35)
    addDamageCondition(animeMistake, 1, 3050, -34)
    addDamageCondition(animeMistake, 2, 3030, -33)
    addDamageCondition(animeMistake, 2, 3000, -32)
    addDamageCondition(animeMistake, 2, 3090, -31)
    addDamageCondition(animeMistake, 2, 3040, -30)
    addDamageCondition(animeMistake, 3, 3060, -29)
    addDamageCondition(animeMistake, 3, 3060, -25)
    addDamageCondition(animeMistake, 3, 3090, -24)
    addDamageCondition(animeMistake, 4, 3020, -23)
    addDamageCondition(animeMistake, 4, 3010, -20)
    addDamageCondition(animeMistake, 5, 3030, -19)
    addDamageCondition(animeMistake, 5, 3030, -15)
    addDamageCondition(animeMistake, 6, 3070, -10)
    addDamageCondition(animeMistake, 10, 3101, -5)
    setConditionParam(animeMistake, CONDITION_PARAM_DELAYED, 1)
-- The Jew fears the Samurai
local hiroshima = createCombatObject()
    setCombatArea(hiroshima, createCombatArea(AREA_CROSS6X6))
    setCombatParam(hiroshima, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
    setCombatParam(hiroshima, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
    setCombatParam(hiroshima, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
    setCombatParam(hiroshima, COMBAT_PARAM_CREATEITEM, 1492)
    setCombatFormula(hiroshima, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 10, 10, 3.6, 3.6)
    setCombatCondition(hiroshima, animeMistake)

local function radiance(cid, var)
    local weapon = getPlayerWeapon(cid)
    local weaponid = weapon and weapon.itemid or 0
    local fireweapon = isInArray(fireweapons, weaponid)

    if(not (var.type == 2 and getCreatureTarget(cid) > 0 and fireweapon)) then
        return doCombat(cid, pimphand, var)
    end

    local WeaponType = getItemInfo(weaponid)['weaponType']
    local types = {
        [WEAPON_CLUB]  = SKILL_CLUB,
        [WEAPON_SWORD] = SKILL_AXE,
        [WEAPON_AXE]   = SKILL_SWORD,
    }
    local skill = getPlayerSkillLevel(cid, types[WeaponType])
    local chance = math.random(0, 100) + (skill^(1/2)) + (skill^(1/3))
    local target = getCreatureTarget(cid)
    local waveVar = targetPositionToVariant(getCreaturePosition(cid))
    local spotVar = positionToVariant(getCreaturePosition(target))

    -- DEUS VULT
    if(chance > 99) then
        local function lafiriWing(feather)
            local spot = getThingPosition(cid)
            local spectators = getSpectators(spot, 7, 7)
            local pack = {}
            for _, bystander in ipairs(spectators) do
                local lasVegasCrowd = getThingPosition(bystander)
                if(cid ~= bystander) then
                    print(dump(spot))
                    print(dump(lasVegasCrowd))
                    print(dump(positionToVariant(lasVegasCrowd)))
                    if(isSightClear(spot, lasVegasCrowd, false)) then
                        table.insert(pack, doCombat(cid, feather, positionToVariant(lasVegasCrowd)))
                    end
                end
            end
            return unpack(pack)
        end

        return doCombat(cid, pimphand, var),
            doCombat(cid, firestrike, var),
            doCombat(cid, immolation, var),
            doCombat(cid, combust, var),
            doCombat(cid, holocaust, waveVar),
            lafiriWing(hiroshima)
    end
    -- WITNESS ME!!!
    if(chance > 90) then
        return doCombat(cid, pimphand, var),
            doCombat(cid, firestrike, var),
            doCombat(cid, immolation, var),
            doCombat(cid, combust, var),
            doCombat(cid, holocaust, waveVar)
    end
    if(chance > 80) then
        return doCombat(cid, pimphand, var),
            doCombat(cid, firestrike, var),
            doCombat(cid, immolation, var),
            doCombat(cid, combust, var)
    end
    if(chance > 70) then
        return doCombat(cid, pimphand, var),
            doCombat(cid, firestrike, var),
            doCombat(cid, immolation, var)
    end
    if(chance > 60) then
        return doCombat(cid, pimphand, var),
                doCombat(cid, firestrike, var)
    end
    -- MEATY OKRE
    return doCombat(cid, pimphand, var)

end

function onCastSpell(cid, var)
    return radiance(cid, var)
end
    ]]><vocation id="0"/></instant>

</mod>
 
Solution
Back
Top