Ir para conteúdo

Tutorial criar spells (básico mesmo)


Duuhzinhow

Posts Recomendados

Eae galerinha do xtibia, vim aqui hoje para ensinar uma coisa simples, mas que muitos nao sabem, e queriam aprender de uma forma bem facil. Vou ensinar á criar spells básicas de damage, de area, e alvo unico... Primeiro, irei ensinar uma de alvo unico.

 

Vá em data/spells/scripts copie um arquivo .lua e renomeie para o que desejar:

 

 

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 22)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -120.2, 1, -125.2, 1)
 
function onCastSpell(cid, var)
local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z}
doSendMagicEffect(position1, 196)
return doCombat(cid, combat, var)
end
 
Verde: é o tipo do dano, seja physical, fire, earth, ice, energy, lifedrain, manadrain, etc...
 
 setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 22)
 
Vermelho: é o numero do efeito que irá até o alvo, voce pode escolher usando o comando "/x"
 
 setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -120.2, 1, -125.2, 1)
 
Roxo: é o dano minimo, e maximo da spell. Baseado no level.
 
 doSendMagicEffect(position1, 196)
 
Azul claro: Efeito que vai dar no target, quando o efeito "22" bater nele, voce pode escolher pelo comando "/z"
 
E agora, vamos colocar sua spell no spells.xml:
 
 <instant name="Nome da spell" words="Nome da spell" lvl="Level necessario" mana="mana que ira gastar" aggressive="1" range="7" blockwalls="1" needtarget="1" exhaustion="1500" needlearn="0" event="script" value="Nome do arquivo.lua">
<vocation id="id da vocaçao"/>
 
Agressive: se for para dar dano coloque "1" se nao for apra dano coloque "0"
Blockwalls: se o jutsu pode atravessar paredes coloque "0", se nao atravessar coloque "1"
Needtarget: se precisa estar atacando coloque "1" se nao, coloque "0"
Exhaustion: Tempo de exalst, 1500 = 1,5 segundos.
 
Bem, fazendo tudo isso certinho, sua spell estará pronta, agora vou explicar uma spell simples de area.
 
----------------------------------------------------------------------------------------------
 
Copie qualquer arquivo, e renomeie para o que desejar. Vou utilizar um script bem simples que eu criei agora, só para demonstraçao.
 
 local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 214)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -93.5, 1, -106.5, 1)
 
arr1 = {
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 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},
{1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1},
{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, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}
}
 
local area1 = createCombatArea(arr1)
setCombatArea(combat1, area1)
 
local function onCastSpell1(parameters)
    return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var)
end
 
function onCastSpell(cid, var)
local position1 = {x=getCreaturePosition(cid).x+2, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z}
local parameters = { cid = cid, var = var}
addEvent(onCastSpell1, 100, parameters)
return TRUE
end
 
 setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
 
Essa parte, como expliquei na spell anterior, apenas mude o tipo de dano, á seu gosto.
 
 setCombatParam(combat1, COMBAT_PARAM_EFFECT, 214)
 
Aqui, voce muda o efeito, que está o numero 214, voce pode modificar, vendo os numeros pelo comando "/z"
 
 setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -93.5, 1, -106.5, 1)
 
Aqui, voce escolhe dano minimo e máximo, baseado no level.
 
 arr1 = {
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 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},
{1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1},
{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, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}
}
 
Essa seria a area da spell, os numeros:
3: local onde o player que executou a spell irá estar. (sempre no meio)
1: local onde sairá a spell, ou seja, onde ira sair o efeito, e ira dar dano.
0: nao sairá nada
 
Agora, vamos coloca a tag da spell em spells.xml:
 
 <instant name="Nome da spell" words="Nome da spell" lvl="level necessario" needtarget="0" mana="mana que ira gastar" aggressive="1"  exhaustion="1600" needlearn="0" event="script" value="Nome do arquivo.lua">
<vocation id="id da vocaçao"/>
 
O resto ja expliquei na spell anterior.
 
Bem galera, por enquanto é isso, muito simples né.. mdr.gif Estou aceitando criticas e dicas para o topico, que eu estarei editando... e, em breve farei um tutorial mais aprofundado .... Se gostou nao esqueça de deixar seu rep rules.gif
Editado por Duuhzinhow
Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
  • 2 weeks later...
  • 3 years later...
×
×
  • Criar Novo...