Introdução
Ao Motivo de fechar a minha "fabrica de spells" resolvi criar esse tutorial. Para os iniciantes aprederem sozinhos. Organizei em Spoiler os Tipos de Magia.
Spell De Attack:
#O Corpo da Spell:
#Simples: 1 Efeito
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE,COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT,CONST_ME_HITAREA) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.0, -500, 1.6, -600) arr = { {0, 1, 0}, {1, 3, 1}, {0, 1, 0} } local area = createCombatArea(arr) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
#Simples: 2 Efeitos
local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_POISONDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 21) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -6.0, -100, -3.0, -250) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 20) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1.0, -500, -1.3, -680) arr1 = { {0, 1, 0}, {1, 3, 1}, {0, 1, 0} } arr2 = { {1, 0, 1}, {0, 3, 0}, {1, 0, 1} } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) setCombatArea(combat1, area1) setCombatArea(combat2, area2) local function onCastSpell1(parameters) doCombat(parameters.cid, combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, combat2, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 100, parameters) return TRUE end
#Contruindo a Spell
#Fazendo Sua Magia: Simples 1 Efeito
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE,COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT,CONST_ME_HITAREA) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.0, -500, 1.6, -600)
setCombatParam(combat, COMBAT_PARAM_TYPE,COMBAT_PHYSICALDAMAGE) -> Tipo De Dano
setCombatParam(combat, COMBAT_PARAM_EFFECT,CONST_ME_HITAREA) -> Efeito da magia
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.0, -500, 1.0, -600) -> Formula do HIT da Spell
arr = { {0, 1, 0}, {1, 2, 1}, {0, 1, 0} }
Local em que a Spell vai sair ou seja, aonde esta o 2 sera o player.
Obs: Botando 2 o efeito da magia nao sai no player, botando 3 o efeito sai encima do player tb
local area = createCombatArea(arr) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
Nao mecheremos aqui, pois é uma spell simples.
#Fazendo Sua Magia: 2 Efeitos
local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_POISONDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 21) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -6.0, -100, -3.0, -250) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 20) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1.0, -500, -1.3, -680)
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_POISONDAMAGE) -> Tipo de Dano do primeiro efeito
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 21) -> Primeiro Efeito
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -6.0, -100, -3.0, -250) -> Formula do HIT do primeiro efeito
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) -> Tipo de dano do segundo efeito
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 20) -> Segundo Efeito
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1.0, -500, -1.3, -680) -> Formula do Hit do segundo efeito
arr1 = { {0, 1, 0}, {1, 3, 1}, {0, 1, 0} } arr2 = { {1, 0, 1}, {0, 3, 0}, {1, 0, 1} }
arr1 = Onde a spell vai se 'criar' o primeiro efeito
arr2 = onde a spell vai se 'criar' o segundo efeito
addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 100, parameters)
addEvent(onCastSpell1, 100, parameters) -> Quantos segundos apos a fala da magia ira criar o primeiro efeito
addEvent(onCastSpell2, 100, parameters) -> Quantos segundos apos a fala da magia ira criar o segundo efeito
Obs: 100= 1 segundo, 300= 3 segundos, 1000= 10 segundos
Spell De Cura:
#Corpo da Spell:
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, 36) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 11, 15) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
#Criando Sua Spell:
#Fazendo Sua Magia:
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
Esse Sera o a spell ira fazer
setCombatParam(combat, COMBAT_PARAM_EFFECT, 36)
Esse sera o efeito dela
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
Aqui e que essa spell nao é agressiva, entao pode ser usada em protect zone
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
Essa magia vai curar paralyze
setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 11, 15)
Formula da magia, o quanto ela vai healar.
function onCastSpell(cid, var) return doCombat(cid, combat, var) end
Nao precisamos mecher.
Spell de Suport:
#Corpo da Spell:
#Correr:
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_TICKS, 33000) setConditionFormula(condition, 0.3, -24, 0.3, -24) setCombatCondition(combat, condition) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
#Luz
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_LIGHT) setConditionParam(condition, CONDITION_PARAM_LIGHT_LEVEL, 6) setConditionParam(condition, CONDITION_PARAM_LIGHT_COLOR, 215) setConditionParam(condition, CONDITION_PARAM_TICKS, (6 * 60 + 10) * 1000) setCombatCondition(combat, condition) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
#Uma magia qualquer de trap
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 2) setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1497) local arr = { {0, 0, 0, 1, 0, 0 ,0}, {0, 0, 1, 1, 1, 0 ,0}, {0, 1, 0, 0, 0, 1 ,0}, {1, 0, 0, 2, 0, 0 ,1}, {0, 1, 0, 0, 0, 1 ,0}, {0, 0, 1, 1, 1, 0 ,0}, {0, 0, 0, 1, 0, 0 ,0} } local area = createCombatArea(arr) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
#Contruindo a Spell
#Correr
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
Efeito da Magia
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
Magia nao Agressiva, pode ser usada em Portect Zone
local condition = createConditionObject(CONDITION_HASTE)
Condição de Correr
setConditionParam(condition, CONDITION_PARAM_TICKS, 33000)
Tempo que vai durar, nesse caso 33 segundos
setConditionFormula(condition, 0.3, -24, 0.3, -24)
Formula da velocidade
setCombatCondition(combat, condition) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
Nao Mechemos aqui
#Luz:
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
Efeito da Magia
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
Magia nao agressiva, para ser usada em protect zone
local condition = createConditionObject(CONDITION_LIGHT)
Condição de criar Luz
setConditionParam(condition, CONDITION_PARAM_LIGHT_LEVEL, 6)
Tamanho da Luz
setConditionParam(condition, CONDITION_PARAM_LIGHT_COLOR, 215)
Cor da Luz
setConditionParam(condition, CONDITION_PARAM_TICKS, (6 * 60 + 10) * 1000)
Tempo que vai durar
setCombatCondition(combat, condition) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
Nao Mechemos aqui
#Uma Magia qualquer de Trap:
setCombatParam(combat, COMBAT_PARAM_EFFECT, 2)
Efeito que soltara, nesse caso "poff"
local arr = { {0, 0, 0, 1, 0, 0 ,0}, {0, 0, 1, 1, 1, 0 ,0}, {0, 1, 0, 0, 0, 1 ,0}, {1, 0, 0, 2, 0, 0 ,1}, {0, 1, 0, 0, 0, 1 ,0}, {0, 0, 1, 1, 1, 0 ,0}, {0, 0, 0, 1, 0, 0 ,0} }
Local em que as magic wall serao criadas
local area = createCombatArea(arr) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
Aqui nao mecheremos.
Bom é isso Pessoal.
Espero que tenham Gostado!
Obs: Quando eu tiver tempo, mostrarei todos os effects
Abraços