• 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 1.2 function doAreaCombatCondition

lazarus321

Member
Joined
May 8, 2017
Messages
209
Reaction score
20
I am trying to use this function "doAreaCombatCondition(cid, pos, area, condition, effect)" is crashing the server.

Have another similar function for add Condition in area?

I thought of selecting the creature by Tile and then add for "doAddCondition(cid, condition)" but dont work.
 
Solution
Use this otland/forgottenserver (https://github.com/otland/forgottenserver/blob/1b0bcb642a15e9be639ad76672c4ea2c59931f97/data/lib/core/combat.lua#L1) to get position of the creatures inside that combat area...

Example:
Lua:
local area = {
{1, 1, 1},
{1, 3, 1},
{1, 1, 1}
}

local combat = Combat()
combat:setArea(area)

local condition = Condition(...)

function onCastSpell(creature, variant)
    local positions = combat:getPositions() -- get positions of creatures from combat area
    for _, position in ipairs(positions) do
        local tile = Tile(position) -- create a tile for this position
        for _, creature in ipairs(tile:getCreatures()) do
            creature:addCondition(...)
        end
    end
end
Use this otland/forgottenserver (https://github.com/otland/forgottenserver/blob/1b0bcb642a15e9be639ad76672c4ea2c59931f97/data/lib/core/combat.lua#L1) to get position of the creatures inside that combat area...

Example:
Lua:
local area = {
{1, 1, 1},
{1, 3, 1},
{1, 1, 1}
}

local combat = Combat()
combat:setArea(area)

local condition = Condition(...)

function onCastSpell(creature, variant)
    local positions = combat:getPositions() -- get positions of creatures from combat area
    for _, position in ipairs(positions) do
        local tile = Tile(position) -- create a tile for this position
        for _, creature in ipairs(tile:getCreatures()) do
            creature:addCondition(...)
        end
    end
end
 
Solution
I get this error in the example.

C++:
Lua Script Error: [Spell Interface]
data/spells/scripts/attack/teste.lua:onCastSpell
data/spells/scripts/attack/teste.lua:19: attempt to call method 'getPosition' (a nil value)
stack traceback:
        [C]: in function 'getPosition'
        data/spells/scripts/attack/teste.lua:19: in function <data/spells/scripts/attack/teste.lua:18>


I try add this code.
C++:
local combat = Combat()
combat:setArea(createCombatArea(AREA_CIRCLE3X3))

local condition = Condition(CONDITION_FIRE)
condition:addDamage(5, 3000, -25)


function onCastSpell(creature, variant)
    local positions = combat:getPosition() -- get positions of creatures from combat area
    for _, position in ipairs(positions) do
        local tile = Tile(position) -- create a tile for this position
        for _, creature in ipairs(tile:getCreatures()) do
            creature:addCondition(condition)
        end
    end
end
 
Back
Top