Bem...
Farei este tutorial com ss além de texto, para facilitar...
^.^
Primeiramente abre a pasta do seu ot, a pasta data, a pasta spells e o arquivo spells.xml no bloco de notas:
Depois escolha uma magia lá, neste caso escolhi a Ultimate Explosion:
<instant name="Ultimate Explosion" words="exevo gran mas vis" lvl="60" maglv="40" mana="1200" soul="0" exhaustion="1" prem="1" enabled="1" script="ultimate explosion.lua"><vocation id="1"/><vocation id="5"/><vocation id="9"/></instant>
Em instant name="Ultimate Explosion" vc colok o nome da magia...
Em words="exevo gran mas vis" vc coloca as palavras q o player terá q falar para usá-la...
Em lvl="60" maglv="40" vc coloca o lvl mínimo para usar a magia e o magic lvl mínimo para usá-la...
Em mana="1200" soul="0" vc colok a mana q a magia gastará e qnts soul point ela consome....
Em prem="1" vc colok se a magia eh somente para premium players, 0=não e 1=sim
Em script="ultimate explosion.lua" vc coloca o nome script da magia localizada na pasta data/spell/script...
Em <vocation id="1"/> vc colok coloca ql vocation poderá usar a magia...
Embaixo colocarei cada vocation e sua respectiva id para evitar dúvidas:
-Sorcerer=1
-Druid=2
-Paladin=3
-Knight=4
-Master Sorcerer=5
-Elder Druid=6
-Royal Paladin=7
-Elite Knight=8
Agora editar[Retirado]s a área de alcance da magia, neste caso, da Ultimate Explosion...
Abra o script da magia q eh informado no arquivo spells.xml e q ja foi mostrada acima[ultimate explosion.lua]...
Quando vc abrir aparecerá o seguinte:
local combat = createCombatObject()setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -2.0, -150, -1.6, -150)
arr = {
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
}
local area = createCombatArea(arr)
setCombatArea(combat, area)
function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end
A área está em:
arr = {
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
}
1 significa a área aond vai a magia, 0 é aond não vai e 3 é aond ficará o player q irá utilizar a magia...
Vou colocar aki um exemplo de área de alcance menor, só para se ter noção de como faz:
local combat = createCombatObject()setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -2.0, -150, -1.6, -150)
arr = {
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 1, 1, 1, 3, 1, 1, 1, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
}
local area = createCombatArea(arr)
setCombatArea(combat, area)
function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end
Eu fiz tipo q uma comparação entre antes e depois:
ss da magia antes:
ss da magia depois:
Espero ter ajudado...
^.^