• 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 spell with delay use cant get actual position 1.3(8.6 downport)

raku0

New Member
Joined
Feb 23, 2019
Messages
16
Reaction score
0
Hello i have a problem. I have a wave and wanna use it after lets say 2s and cast in on player look direction. On tfs 0.4.3 is work good but here when i using and moving is getting first look position no after some time. here is a code. Maybe someone too can give me a tip how use less code? And is possible to use onGetFormulaValues one in like here 12 combats?
Lua:
local P1 = Combat()
P1:setParameter(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
P1:setParameter(COMBAT_PARAM_EFFECT, 490)
P1:setArea(createCombatArea(FALA_P)) --PRAWO POCZATEK
local P2xS = Combat()
P2xS:setParameter(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
P2xS:setParameter(COMBAT_PARAM_EFFECT, 491)
P2xS:setArea(createCombatArea(FALA_S2)) --PRAWO 2X SRODEK
local PK3 = Combat()
PK3:setParameter(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
PK3:setParameter(COMBAT_PARAM_EFFECT, 484)
PK3:setArea(createCombatArea(FALA_K)) --PRAWO KONIEC
local L1 = Combat()
L1:setParameter(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
L1:setParameter(COMBAT_PARAM_EFFECT, 484)
L1:setArea(createCombatArea(FALA_P)) --Lewo POCZATEK
local L2xS = Combat()
L2xS:setParameter(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
L2xS:setParameter(COMBAT_PARAM_EFFECT, 491)
L2xS:setArea(createCombatArea(FALA_S2)) --Lewo 2X SRODEK
local LK3 = Combat()
LK3:setParameter(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
LK3:setParameter(COMBAT_PARAM_EFFECT, 490)
LK3:setArea(createCombatArea(FALA_K)) --Lewo KONIEC
local G1 = Combat()
G1:setParameter(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
G1:setParameter(COMBAT_PARAM_EFFECT, 487)
G1:setArea(createCombatArea(FALA_P)) --Góra POCZATEK
local G2xS = Combat()
G2xS:setParameter(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
G2xS:setParameter(COMBAT_PARAM_EFFECT, 486)
G2xS:setArea(createCombatArea(FALA_S2)) --Góra 2X SRODEK
local GK3 = Combat()
GK3:setParameter(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
GK3:setParameter(COMBAT_PARAM_EFFECT, 485)
GK3:setArea(createCombatArea(FALA_K)) --Góra KONIEC
local D1 = Combat()
D1:setParameter(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
D1:setParameter(COMBAT_PARAM_EFFECT, 485)
D1:setArea(createCombatArea(FALA_P)) --Dół POCZATEK
local D2xS = Combat()
D2xS:setParameter(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
D2xS:setParameter(COMBAT_PARAM_EFFECT, 486)
D2xS:setArea(createCombatArea(FALA_S2)) --Dół 2X SRODEK
local DK3 = Combat()
DK3:setParameter(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
DK3:setParameter(COMBAT_PARAM_EFFECT, 487)
DK3:setArea(createCombatArea(FALA_K)) --Doł KONIEC

function onGetFormulaValues1(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 4.5) + 20
    local max = (level / 5) + (magicLevel * 7.6) + 48
    return -min, -max
end
function onGetFormulaValues2(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.8) + 11
    local max = (level / 5) + (magicLevel * 3) + 19
    return -min, -max
end
function onGetFormulaValues3(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.8) + 11
    local max = (level / 5) + (magicLevel * 3) + 19
    return -min, -max
end
function onGetFormulaValues4(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 4.5) + 20
    local max = (level / 5) + (magicLevel * 7.6) + 48
    return -min, -max
end
function onGetFormulaValues5(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.8) + 11
    local max = (level / 5) + (magicLevel * 3) + 19
    return -min, -max
end
function onGetFormulaValues6(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.8) + 11
    local max = (level / 5) + (magicLevel * 3) + 19
    return -min, -max
end
function onGetFormulaValues7(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 4.5) + 20
    local max = (level / 5) + (magicLevel * 7.6) + 48
    return -min, -max
end
function onGetFormulaValues8(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.8) + 11
    local max = (level / 5) + (magicLevel * 3) + 19
    return -min, -max
end
function onGetFormulaValues9(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.8) + 11
    local max = (level / 5) + (magicLevel * 3) + 19
    return -min, -max
end
function onGetFormulaValues10(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 4.5) + 20
    local max = (level / 5) + (magicLevel * 7.6) + 48
    return -min, -max
end
function onGetFormulaValues11(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.8) + 11
    local max = (level / 5) + (magicLevel * 3) + 19
    return -min, -max
end
function onGetFormulaValues12(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.8) + 11
    local max = (level / 5) + (magicLevel * 3) + 19
    return -min, -max
end
P1:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues1")
P2xS:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues2")
PK3:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues3")
L1:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues4")
L2xS:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues5")
LK3:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues6")
G1:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues7")
G2xS:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues8")
GK3:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues9")
D1:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues10")
D2xS:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues11")
DK3:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues12")

function sup(creature)     
       doCreatureSay(creature, 'Super...!', TALKTYPE_ORANGE_1)                 
           addEvent(ska,550,creature)
     end
function ska(creature)         
       doCreatureSay(creature, 'Ka...!', TALKTYPE_ORANGE_1)                 
           addEvent(sma,550,creature)
     end
function sma(creature)         
       doCreatureSay(creature, 'Me...!', TALKTYPE_ORANGE_1)                 
           addEvent(sha2,550,creature)   
     end
function sha2(creature)       
       doCreatureSay(creature, 'Ha...!', TALKTYPE_ORANGE_1)                 
           addEvent(sma2,550,creature)
     end
function sma2(creature)       
       doCreatureSay(creature, 'Me...!', TALKTYPE_ORANGE_1)                 
           addEvent(sma3,800,creature)
     end
function sma3(creature)         
       doCreatureSay(creature, 'Haaaa!', TALKTYPE_ORANGE_1)   
     end
function executeWave(creature,var)
if(getPlayerLookDir(creature)==0) then
    G1:execute(creature, var)
    G2xS:execute(creature, var)
    GK3:execute(creature, var)
    end
    if(getPlayerLookDir(creature)==1) then
    P1:execute(creature, var)
    P2xS:execute(creature, var)
    PK3:execute(creature, var)
    end
    if(getPlayerLookDir(creature)==2) then
    D1:execute(creature, var)
    D2xS:execute(creature, var)
    DK3:execute(creature, var)
    end
    if(getPlayerLookDir(creature)==3) then
    L1:execute(creature,  var)
    L2xS:execute(creature, var )
    LK3:execute(creature,  var)
    end
    return true
end
function onCastSpell(creature,variant)
    addEvent(sup,1,creature)
    addEvent(executeWave,3000,creature,variant)
    return false
end
1567354820723.png
 
Solution
Lua:
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 88)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr1 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{1, 2, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
}

local area1 = createCombatArea(arr1)

setCombatArea(combat1, area1)

local combat10 = createCombatObject()
setCombatParam(combat10, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat10, COMBAT_PARAM_EFFECT, 89)
setCombatFormula(combat10, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr10 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0...
Lua:
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 88)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr1 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{1, 2, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
}

local area1 = createCombatArea(arr1)

setCombatArea(combat1, area1)

local combat10 = createCombatObject()
setCombatParam(combat10, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat10, COMBAT_PARAM_EFFECT, 89)
setCombatFormula(combat10, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr10 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 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, 0, 2},
{0, 0, 0, 0, 0, 0},
{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 area10 = createCombatArea(arr10)

setCombatArea(combat10, area10)

local combat100 = createCombatObject()
setCombatParam(combat100, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat100, COMBAT_PARAM_EFFECT, 90)
setCombatFormula(combat100, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr100 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{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, 2},
{0, 0, 0, 0, 0, 0},
{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 area100 = createCombatArea(arr100)

setCombatArea(combat100, area100)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 90)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr2 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{2, 1, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
}

local area2 = createCombatArea(arr2)

setCombatArea(combat2, area2)

local combat20 = createCombatObject()
setCombatParam(combat20, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat20, COMBAT_PARAM_EFFECT, 89)
setCombatFormula(combat20, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr20 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 2, 0, 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},
{0, 0, 0, 0, 0, 0},
}

local area20 = createCombatArea(arr20)

setCombatArea(combat20, area20)

local combat200 = createCombatObject()
setCombatParam(combat200, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat200, COMBAT_PARAM_EFFECT, 88)
setCombatFormula(combat200, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr200 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{2, 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},
}

local area200 = createCombatArea(arr200)

setCombatArea(combat200, area200)

local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 93)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)


local arr3 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 2, 0},
{0, 0, 0, 1, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
}

local area3 = createCombatArea(arr3)

setCombatArea(combat3, area3)

local combat30 = createCombatObject()
setCombatParam(combat30, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat30, COMBAT_PARAM_EFFECT, 92)
setCombatFormula(combat30, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

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

local area30 = createCombatArea(arr30)

setCombatArea(combat30, area30)

local combat300 = createCombatObject()
setCombatParam(combat300, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat300, COMBAT_PARAM_EFFECT, 91)
setCombatFormula(combat300, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr300 = {
{0, 0, 2, 0, 0, 0},
{0, 0, 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},
{0, 0, 0, 0, 0, 0},
}

local area300 = createCombatArea(arr300)

setCombatArea(combat300, area300)

local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 91)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr4 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 1, 0},
{0, 0, 0, 2, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
}

local area4 = createCombatArea(arr4)

setCombatArea(combat4, area4)

local combat40 = createCombatObject()
setCombatParam(combat40, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat40, COMBAT_PARAM_EFFECT, 92)
setCombatFormula(combat40, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr40 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 2, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 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 area40 = createCombatArea(arr40)

setCombatArea(combat40, area40)

local combat400 = createCombatObject()
setCombatParam(combat400, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat400, COMBAT_PARAM_EFFECT, 93)
setCombatFormula(combat400, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr400 = {
{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, 2, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
}

local area400 = createCombatArea(arr400)

setCombatArea(combat400, area400)

function ha(cid)
if isPlayer(cid) == true and
getPlayerLookDir(cid) == 1 then   
              
doCombat(cid, combat1, numberToVariant(cid))
doCombat(cid, combat10, numberToVariant(cid))
doCombat(cid, combat100, numberToVariant(cid))
doCreatureSay(cid, 'Haaaa!', TALKTYPE_ORANGE_1)

elseif isPlayer(cid) == true and
getPlayerLookDir(cid) == 2 then   
              
        doCombat(cid, combat4, numberToVariant(cid))
doCombat(cid, combat40, numberToVariant(cid))
doCombat(cid, combat400, numberToVariant(cid))
doCreatureSay(cid, 'Haaaa!', TALKTYPE_ORANGE_1)

elseif isPlayer(cid) == true and
getPlayerLookDir(cid) == 3 then   
                
        doCombat(cid, combat2, numberToVariant(cid))
doCombat(cid, combat20, numberToVariant(cid))
doCombat(cid, combat200, numberToVariant(cid))
doCreatureSay(cid, 'Haaaa!', TALKTYPE_ORANGE_1)

elseif isPlayer(cid) == true and
getPlayerLookDir(cid) == 0 then   
                
        doCombat(cid, combat3, numberToVariant(cid))
doCombat(cid, combat30, numberToVariant(cid))
doCombat(cid, combat300, numberToVariant(cid))
 doCreatureSay(cid, 'Haaaa!', TALKTYPE_ORANGE_1)
     end
end

function ma2(cid)
if isPlayer(cid) == true then     
       doCreatureSay(cid, 'Me...!', TALKTYPE_ORANGE_1)                 
           addEvent(ha,450,cid)
     end
     end
function ha2(cid)       
if isPlayer(cid) == true then     
       doCreatureSay(cid, 'Ha...!', TALKTYPE_ORANGE_1)                 
           addEvent(ma2,450,cid)
     end
     end
function ma(cid)       
if isPlayer(cid) == true then     
       doCreatureSay(cid, 'Me...!', TALKTYPE_ORANGE_1)                 
           addEvent(ha2,450,cid)
     end
     end
function ka(cid)       
if isPlayer(cid) == true then     
       doCreatureSay(cid, 'Ka...!', TALKTYPE_ORANGE_1)                 
           addEvent(ma,450,cid)
     end
     end
function onCastSpell(cid, var)
if isPlayer(cid) == true then     
     addEvent(ka,0,cid.uid)
     return true
     end
     end
 
Solution
Lua:
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 88)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr1 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{1, 2, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
}

local area1 = createCombatArea(arr1)

setCombatArea(combat1, area1)

local combat10 = createCombatObject()
setCombatParam(combat10, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat10, COMBAT_PARAM_EFFECT, 89)
setCombatFormula(combat10, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr10 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 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, 0, 2},
{0, 0, 0, 0, 0, 0},
{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 area10 = createCombatArea(arr10)

setCombatArea(combat10, area10)

local combat100 = createCombatObject()
setCombatParam(combat100, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat100, COMBAT_PARAM_EFFECT, 90)
setCombatFormula(combat100, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr100 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{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, 2},
{0, 0, 0, 0, 0, 0},
{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 area100 = createCombatArea(arr100)

setCombatArea(combat100, area100)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 90)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr2 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{2, 1, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
}

local area2 = createCombatArea(arr2)

setCombatArea(combat2, area2)

local combat20 = createCombatObject()
setCombatParam(combat20, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat20, COMBAT_PARAM_EFFECT, 89)
setCombatFormula(combat20, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr20 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 2, 0, 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},
{0, 0, 0, 0, 0, 0},
}

local area20 = createCombatArea(arr20)

setCombatArea(combat20, area20)

local combat200 = createCombatObject()
setCombatParam(combat200, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat200, COMBAT_PARAM_EFFECT, 88)
setCombatFormula(combat200, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr200 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{2, 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},
}

local area200 = createCombatArea(arr200)

setCombatArea(combat200, area200)

local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 93)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)


local arr3 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 2, 0},
{0, 0, 0, 1, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
}

local area3 = createCombatArea(arr3)

setCombatArea(combat3, area3)

local combat30 = createCombatObject()
setCombatParam(combat30, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat30, COMBAT_PARAM_EFFECT, 92)
setCombatFormula(combat30, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

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

local area30 = createCombatArea(arr30)

setCombatArea(combat30, area30)

local combat300 = createCombatObject()
setCombatParam(combat300, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat300, COMBAT_PARAM_EFFECT, 91)
setCombatFormula(combat300, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr300 = {
{0, 0, 2, 0, 0, 0},
{0, 0, 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},
{0, 0, 0, 0, 0, 0},
}

local area300 = createCombatArea(arr300)

setCombatArea(combat300, area300)

local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 91)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr4 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 1, 0},
{0, 0, 0, 2, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
}

local area4 = createCombatArea(arr4)

setCombatArea(combat4, area4)

local combat40 = createCombatObject()
setCombatParam(combat40, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat40, COMBAT_PARAM_EFFECT, 92)
setCombatFormula(combat40, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr40 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 2, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 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 area40 = createCombatArea(arr40)

setCombatArea(combat40, area40)

local combat400 = createCombatObject()
setCombatParam(combat400, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat400, COMBAT_PARAM_EFFECT, 93)
setCombatFormula(combat400, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)

local arr400 = {
{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, 2, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
}

local area400 = createCombatArea(arr400)

setCombatArea(combat400, area400)

function ha(cid)
if isPlayer(cid) == true and
getPlayerLookDir(cid) == 1 then  
             
doCombat(cid, combat1, numberToVariant(cid))
doCombat(cid, combat10, numberToVariant(cid))
doCombat(cid, combat100, numberToVariant(cid))
doCreatureSay(cid, 'Haaaa!', TALKTYPE_ORANGE_1)

elseif isPlayer(cid) == true and
getPlayerLookDir(cid) == 2 then  
             
        doCombat(cid, combat4, numberToVariant(cid))
doCombat(cid, combat40, numberToVariant(cid))
doCombat(cid, combat400, numberToVariant(cid))
doCreatureSay(cid, 'Haaaa!', TALKTYPE_ORANGE_1)

elseif isPlayer(cid) == true and
getPlayerLookDir(cid) == 3 then  
               
        doCombat(cid, combat2, numberToVariant(cid))
doCombat(cid, combat20, numberToVariant(cid))
doCombat(cid, combat200, numberToVariant(cid))
doCreatureSay(cid, 'Haaaa!', TALKTYPE_ORANGE_1)

elseif isPlayer(cid) == true and
getPlayerLookDir(cid) == 0 then  
               
        doCombat(cid, combat3, numberToVariant(cid))
doCombat(cid, combat30, numberToVariant(cid))
doCombat(cid, combat300, numberToVariant(cid))
doCreatureSay(cid, 'Haaaa!', TALKTYPE_ORANGE_1)
     end
end

function ma2(cid)
if isPlayer(cid) == true then    
       doCreatureSay(cid, 'Me...!', TALKTYPE_ORANGE_1)                
           addEvent(ha,450,cid)
     end
     end
function ha2(cid)      
if isPlayer(cid) == true then    
       doCreatureSay(cid, 'Ha...!', TALKTYPE_ORANGE_1)                
           addEvent(ma2,450,cid)
     end
     end
function ma(cid)      
if isPlayer(cid) == true then    
       doCreatureSay(cid, 'Me...!', TALKTYPE_ORANGE_1)                
           addEvent(ha2,450,cid)
     end
     end
function ka(cid)      
if isPlayer(cid) == true then    
       doCreatureSay(cid, 'Ka...!', TALKTYPE_ORANGE_1)                
           addEvent(ma,450,cid)
     end
     end
function onCastSpell(cid, var)
if isPlayer(cid) == true then    
     addEvent(ka,0,cid.uid)
     return true
     end
     end
Thanks dude is work perfect. Can u explain me the numbers 0,1,2,3? what they do?
 
Thanks dude is work perfect. Can u explain me the numbers 0,1,2,3? what they do?
0 is a filler number to provide a means to get to the position offset required
1 is where the combat will take effect
2 is where the creature/player is located
3 is where the creature/player is located AND the combat will also take effect there
 
0 is a filler number to provide a means to get to the position offset required
1 is where the combat will take effect
2 is where the creature/player is located
3 is where the creature/player is located AND the combat will also take effect there
Oh thank you. Also can u explain me how this work
Lua:
setCombatFormula(combat10, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)
and how change it to somethink like this?
Lua:
function onGetFormulaValues12(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.8) + 11
    local max = (level / 5) + (magicLevel * 3) + 19
    return -min, -max
end
 
Oh thank you. Also can u explain me how this work
Lua:
setCombatFormula(combat10, COMBAT_FORMULA_LEVELMAGIC, -4.1, 0, -5.4, 0)
and how change it to somethink like this?
Lua:
function onGetFormulaValues12(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.8) + 11
    local max = (level / 5) + (magicLevel * 3) + 19
    return -min, -max
end
The 4 numbers in the formula are identified as: mina, minb, maxa, maxb
mina: multiplier
minb: added bonus value
maxb: multiplier
maxb: added bonus value
When using COMBAT_FORMULA_LEVELMAGIC, the resulting formula looks like this with those values:
Lua:
local levelFormula = player:getLevel() * 2 + player:getMagicLevel() * 3
local damage = math.random(levelFormula * mina + minb, levelFormula * maxa + maxb)

If you want to use a callback like onGetFormulaValues, you need to use combat:setCallback

Lua:
function onGetFormulaValues12(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.8) + 11
    local max = (level / 5) + (magicLevel * 3) + 19
    return -min, -max
end

combat:setFormula(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues12")

In your case, replace combat with the name of the combat variables you have, such as combat1, combat200, etc.
 
Back
Top