Fala, Galera!
Eu estive desenvolvendo durante um tempo um sistema avançado de configuração de magias. De modo que você pode criar várias áreas, vários efeitos, vários danos, sem fazer um monte de variáveis de combate. Isso reduz o tamanho de magias em até 50%, falando em linhas de programação. O único conhecimento que você irá precisar é de edição de tabelas.
Veja abaixo o template do Advanced Spell Config 0.6:
local spellConfig = { {damage = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREAREA, area = createCombatArea(AREA_CIRCLE3X3), formula = { base = "magic", --[[skill or magic]] value = {-1, -100, -2, -200} --[[valores]] } } } local combats = {} for k, config in ipairs(spellConfig) do combats[k] = createCombatObject() setCombatParam(combats[k], COMBAT_PARAM_TYPE, config.damage) setCombatParam(combats[k], COMBAT_PARAM_EFFECT, config.effect) setCombatArea(combats[k], config.area) setCombatFormula(combats[k], (config.formula.base == "magic" and COMBAT_FORMULA_LEVELMAGIC or COMBAT_FORMULA_SKILL), unpack(config.formula.value)) end function callCombat(p) return doCombat(unpack(p)) end function onCastSpell(cid, var) for i, combat in ipairs(combats) do addEvent(callCombat, (#combats == 1 and 0 or 250*i), {cid, combat, var}) end return LUA_NO_ERROR end
Vocês podem estar pensando que eu só fiz complicar a vida de vocês, mas o código é grande apenas para uma variável de combate, imagine agora uma magia com 10 efeitos, 10 tipos de dano. Qual sairia melhor?
Você só precisar adicionar suas configurações na tabela spellConfig que o código irá fazer tudo sozinho.
local spellConfig = { {damage = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREAREA, area = createCombatArea(AREA_CIRCLE3X3), formula = {-1, -100, -2, -200} }, {damage = COMBAT_ICEDAMAGE, effect = CONST_ME_ICEATTACK, area = createCombatArea(AREA_CIRCLE3X3), formula = {-1, -100, -2, -200} }, {damage = COMBAT_ENERGYDAMAGE, effect = CONST_ME_PURPLEENERGY, area = createCombatArea(AREA_CIRCLE3X3), formula = {-1, -100, -2, -200} } }
Changelog
//0.6.1
- Revisado o sistema de fórmulas. O programador pode agora escolher se a fórmula é baseada em magiclevel ou skills.
- Corrigidos alguns bugs na estrutura do código.
//0.5.0
- Adicionado a praticidade de criação de "n" variáveis combat através da tabela spellConfig.