Bom. muitos tem duvidas no fato de como almentar o dano mudar os efeitos a area e tudo mais sobre as magias entao vou explica-las.
Crie Um Bloco de Notas Com O Nome DE "exemplo" Sem Aspas
Nesse Tutorial Usaremos o Seguinte Script, sendo uma magia de ataque em area que podera sempre ser usada como base.
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE,COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT,CONST_ME_FIREAREA)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -2.0, 0, -1.0, 0)
arr = {
{0, 0, 0, 0, 0, 0, 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, 0, 0},
{0, 0, 0, 1, 2, 1, 0, 0, 0},
{0, 0, 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 area = createCombatArea(arr)
setCombatArea(combat, area)
function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end
-Damage Type-
Nesse Script temos como Damage o formato COMBAT_PHYSICALDAMAGE que pode ser trocado por qualquer um desses:
COMBAT_PHYSICALDAMAGECOMBAT_ENERGYDAMAGE
COMBAT_EARTHDAMAGE
COMBAT_POISONDAMAGE
COMBAT_FIREDAMAGE
COMBAT_UNDEFINEDDAMAGE
COMBAT_LIFEDRAIN
COMBAT_MANADRAIN
COMBAT_HEALING
COMBAT_DROWNDAMAGE
COMBAT_ICEDAMAGE
COMBAT_HOLYDAMAGE
COMBAT_DEATHDAMAGE
-Efeito-
Temos como efeito CONST_ME_FIREAREA que pode ser trocado por qualquer um desses:
CONST_ME_DRAWBLOOD
CONST_ME_LOSEENERGY
CONST_ME_POFF
CONST_ME_BLOCKHIT
CONST_ME_EXPLOSIONAREA
CONST_ME_EXPLOSIONHIT
CONST_ME_FIREAREA
CONST_ME_YELLOW_RINGS
CONST_ME_GREEN_RINGS
CONST_ME_HITAREA
CONST_ME_TELEPORT
CONST_ME_ENERGYHIT
CONST_ME_MAGIC_BLUE
CONST_ME_MAGIC_RED
CONST_ME_MAGIC_GREEN
CONST_ME_HITBYFIRE
CONST_ME_HITBYPOISON
CONST_ME_MORTAREA
CONST_ME_SOUND_GREEN
CONST_ME_SOUND_RED
CONST_ME_POISONAREA
CONST_ME_SOUND_YELLOW
CONST_ME_SOUND_PURPLE
CONST_ME_SOUND_BLUE
CONST_ME_SOUND_WHITE
CONST_ME_BUBBLES
CONST_ME_CRAPS
CONST_ME_GIFT_WRAPS
CONST_ME_FIREWORK_YELLOW
CONST_ME_FIREWORK_RED
CONST_ME_FIREWORK_BLUE
CONST_ME_STUN
CONST_ME_SLEEP
CONST_ME_WATERCREATURE
CONST_ME_GROUNDSHAKER
CONST_ME_HEARTS
CONST_ME_FIREATTACK
CONST_ME_ENERGYAREA
CONST_ME_SMALLCLOUDS
CONST_ME_HOLYDAMAGE
CONST_ME_BIGCLOUDS
CONST_ME_ICEAREA
CONST_ME_ICETORNADO
CONST_ME_ICEATTACK
CONST_ME_STONES
CONST_ME_SMALLPLANTS
CONST_ME_CARNIPHILA
CONST_ME_PURPLEENERGY
CONST_ME_YELLOWENERGY
CONST_ME_HOLYAREA
CONST_ME_BIGPLANTS
CONST_ME_CAKE
CONST_ME_GIANTICE
CONST_ME_WATERSPLASH
CONST_ME_PLANTATTACK
CONST_ME_TUTORIALARROW
CONST_ME_TUTORIALSQUARE
CONST_ME_MIRRORHORIZONTAL
CONST_ME_MIRRORVERTICAL
CONST_ME_SKULLHORIZONTAL
CONST_ME_SKULLVERTICAL
CONST_ME_ASSASSIN
CONST_ME_STEPSHORIZONTAL
CONST_ME_BLOODYSTEPS
CONST_ME_STEPSVERTICAL
CONST_ME_YALAHARIGHOST
CONST_ME_BATS
CONST_ME_SMOKE
CONST_ME_INSECTS
-Formula-
A Formula desta magia é COMBAT_FORMULA_LEVELMAGIC, -2.0, 0, -1.0, 0 Ou Seja o Dano Dela ira variar do seu Level e de Seu Magic Level.(Aconselho sempre Usar FORMULA_LEVELMAGIC. e Alterar Somente no 2.0 e no 1.0 nunca mudar os que estao somente 0)Vamos usar como exemplo que -2.0, seria o level e -1.0 o magic level ou seja a magia ira Hitar muito mais quando o player upar 1 Level do que quando upar 1 Magic Level,Porem se fosse mudado para -0.8 e 1.0 Se o Player Almentasse 1 magic level iria hitar mais do que se upasse 1 Level.
PS:É aconselhavel sempre que mexer na formula testar a magia para verificar o Damage.
-Area-
Neste Caso a Area Vai Ser 8 Quadrados exatos em volta do player.
o Numero 2 Representa a posição do Player.
O numero 1 Representara onde a magia ira acertar
O Numero 0 Será somente espaço onde você pode colocar o Numero 1
arr = {
{0, 0, 0, 0, 0, 0, 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, 0, 0},
{0, 0, 0, 1, 2, 1, 0, 0, 0},
{0, 0, 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}
}
-Spells.xml-
<instant group="attack" spellid="137" name="NOME DA MAGIA" words="OQUE O PLAYER DIGITARA PARA MANDAR A MAGIA" lvl="30" mana="45" selftarget="1" prem="1" cooldown="4000" groupcooldown="2000" needlearn="0" script="attack/exemplo.lua">
<vocation name="Sorcerer"/>
<vocation name="Master Sorcerer"/>
</instant>
Grat'Z DeadLock