Ola Xtibia resolvi criar esse tutorial. Para os iniciantes aprederem sozinhos. Organizei em Spoiler os Tipos de Magia.
Spell De Attack:
Spoiler
#O Corpo da Spell:
#Simples: 1 Efeito
Spoiler
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
Spoiler
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
Spoiler
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
Spoiler
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:
Spoiler
#Corpo da Spell:
Spoiler
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:
Spoiler
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:
Spoiler
#Corpo da Spell:
#Correr:
Spoiler
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
Spoiler
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
Spoiler
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
Spoiler
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:
Spoiler
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:
Spoiler
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