Miziak
New Member
Hi All,
Yesterday I wrote `lib`(functions) to tfs, that simplify write spells:
To data/lib/050-function.lua or in old engines to data/global.lua lub data/functions.lua paste:
In old system "UE"(rage of the skies):
Simply
Variables in createCombat:
Animate spells:
Variables in createAnimatedCombat:
Damage patterns:
Example:
[HIGHLIGHT=lua]"lvl*100/mlvl"[/HIGHLIGHT]
Patterns is a text in quotes:
np you have 100 lvl i 10 mlvl if this patern is max damage:
Your max hit is 1000.
Ofc in calculations you may use all mathematicks tokens:
Greets,
Miziak
Sorry for my English.
Yesterday I wrote `lib`(functions) to tfs, that simplify write spells:
To data/lib/050-function.lua or in old engines to data/global.lua lub data/functions.lua paste:
Lua:
function createCombat(typea, effect, distEffect, area, mins, maxs)
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, typea)
setCombatParam(combat, COMBAT_PARAM_EFFECT, effect)
if(distEffect)then
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, distEffect)
end
if(type(mins) == "string" and type(maxs) == "string")then
function getSpellDamage(cid, skill, att, attackStrength)
local lvl, mlvl, minss, maxss = getPlayerLevel(cid), getPlayerMagLevel(cid), "", ""
minss = "return " .. mins
minss = minss:gsub("lvl", lvl)
minss = minss:gsub("mlvl", mlvl)
maxss = "return " .. maxs
maxss = maxss:gsub("lvl", lvl)
maxss = maxss:gsub("mlvl", mlvl)
local min = -math.ceil(loadstring(minss)())
local max = -math.ceil(loadstring(maxss)())
return min, max
end
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "getSpellDamage")
end
if(type(area) == "table")then
local areaa = createCombatArea(area)
setCombatArea(combat, areaa)
end
return combat
end
function createAnimatedCombat(visableTbl, areaTbl, attacksTbl)
local combatsTbl = {}
if(#visableTbl == #areaTbl and #visableTbl == #attacksTbl)then
for i,_ in pairs(visableTbl) do
local combat = createCombat(visableTbl[i][1], visableTbl[i][2], visableTbl[i][3], areaTbl[i], attacksTbl[i][1], attacksTbl[i][2])
table.insert(combatsTbl, combat)
end
end
return combatsTbl
end
function executeAnimatedCombat(cid, var, combat, delay)
if(#combat == 0)then
return false
else
for i,_ in pairs(combat) do
if(i == 1)then
addEvent(function() doCombat(cid, combat[i], var) end, i, nil)
else
addEvent(function() doCombat(cid, combat[i], var) end, (i-1)*(delay*1000), nil)
end
end
return true
end
return false
end
In old system "UE"(rage of the skies):
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 5, 12)
local area = createCombatArea(AREA_CROSS6X6)
setCombatArea(combat, area)
function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end[/HIGHLIGHT]
Now selfsame spell in [B]my system[/B]:
[code=lua]local combat = createCombat(COMBAT_ENERGYDAMAGE, CONST_ME_BIGCLOUDS, false, AREA_CROSS6X6, "lvl*10", "lvl*100")
function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end
Simply
Variables in createCombat:
Code:
createCombat(Damage type,
magic effect on map,
distance effect if not been write false,
area,
min damage,
max damage)
Animate spells:
Lua:
local arr = {
{0, 1, 0},
{1, 3, 1},
{0, 1, 0}
}
local arr1 = {
{1, 1, 1},
{1, 3, 1},
{1, 1, 1}
}
local arr2 = {
{1, 0, 1, 0, 1},
{0, 1, 1, 1, 0},
{1, 1, 3, 1, 1},
{0, 1, 1, 1, 0},
{1, 0, 1, 0, 1}
}
local v = {{COMBAT_EARTHDAMAGE, CONST_ME_PLANTATTACK}, {COMBAT_EARTHDAMAGE, CONST_ME_PLANTATTACK}, {COMBAT_EARTHDAMAGE, CONST_ME_PLANTATTACK}}
local a = {{"lvl*10", "lvl*100"}, {"lvl*10", "lvl*100"}, {"lvl*10", "lvl*100"}}
local combat = createAnimatedCombat(v, {arr, arr1, arr2}, a)
function onCastSpell(cid, var)
return executeAnimatedCombat(cid, var, combat, 1--[[opóźnienie w sekundach]])
end
Variables in createAnimatedCombat:
Code:
createAnimatedCombat(table with tables with damage type, magic effect and distance effect,
table with areas,
table with tables with damage)
Damage patterns:
Example:
[HIGHLIGHT=lua]"lvl*100/mlvl"[/HIGHLIGHT]
Patterns is a text in quotes:
your level * 100 / your magic level
np you have 100 lvl i 10 mlvl if this patern is max damage:
Code:
100*100/10 = 1000
Ofc in calculations you may use all mathematicks tokens:
+
-
*
/
%
^
Greets,
Miziak
Sorry for my English.