Ir para conteúdo

Criando Spells 7.92 E 8.0


Wallacy

Posts Recomendados

Esse tutorial é dedicado à todas as pessoas que têm net compartilhada e não podem usar o rapidshare. Esse tutorial é também um apelo para que parem de colocar todos os downloads com esse link. PORÉM, quero que todos saibam que, o que um programa pode fazer, um teclado também pode. --Registrado. Tutorial By Koti.--

 

Vou dividir o tutorial em seis partes: 1- Magias do tipo "UE" 2- Magias do tipo "Wave" 3- Magias do tipo "Heal" 4- Magias do tipo "Haste" 5- Magias de conjuração 6- Magias de "runa".

 

A parte 1 do tutorial vai ser usada como base para não alterar a estética do tópico e não ficar repitindo o que já foi dito anteriormente.

 

Começando

 

Um server padrão 8.0 contém em sua pasta "data" um arquivo chamado "global". Ele contém As animações que seu server pode ou não fazer. PORÉM, na maioria das vezes ele vem incompleto, limitando suas magias. Para acabar com esse problema é só adicionar os seguintes complementos em meio as tag "parecidas".

 

ATENÇÃO: Adicionar nas tags com o mesmo prefixo, quer dizer que o início da "tag", deve ser o mesmo, na coluna na qual você vai adicionar. Ex: CONST_ME ou CONST_ANI. O mesmo vale para qualquer magia. Ex: Se você tirou um CONST_ME, você terá que colocar no lugar outro CONST_ME.

CONST_ME_WATERCREATURE = 33

CONST_ME_GROUNDSHAKER = 34

CONST_ME_STUN = 31

CONST_ME_SLEEP = 32

 

CONST_ANI_ENCHANTEDSPEAR = 17

CONST_ANI_ASSASSINSTAR = 18

CONST_ANI_GREENSTAR = 19

CONST_ANI_ROYALSPEAR = 20

CONST_ANI_SNIPERARROW = 21

CONST_ANI_ONYXARROW = 22

CONST_ANI_PIERCINGBOLT = 23

CONST_ANI_WHIRLWINDSWORD = 24

CONST_ANI_WHIRLWINDAXE = 25

CONST_ANI_WHIRLWINDCLUB = 26

CONST_ANI_ENCHANTEDSPEAR = 27

CONST_ANI_WEAPONTYPE = 254

Uma vez feito isso vamos trabalhar:

 

Parte 1: Magias do tipo "UE"

 

1- A magia do tipo "UE" consiste em uma magia que não tem direção, e que pode ser bloqueada.

 

2- Pra começar, copie um arquivo de data>spells>scripts cole-o em qualquer local e renomei-o para um nome de sua escolha.

 

3- Pra facilitar a vida de todo mundo eu colocarei uma "fórmula" para fazer magias desse tipo, O que você deve fazer é só alterar algumas partes e sua magia vai estar pronta. (Só altere as partes coloridas)

Fórmula:

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)

 

local condition = createConditionObject(CONDITION_FIRE)

setConditionParam(condition, CONDITION_PARAM_DELAYED, 2)

addDamageCondition(condition, 5, 2000, -35)

setCombatCondition(combat, condition)

 

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

Vermelho: Essa é talvez a coisa que mais foi modificada do server 7.9 para os servers 7.92 e 8.0. Essa frase define não só o tipo da magia (físico..) como também a antiga "hiteffect" (a animação que ocorre quando algo é atingido).

Verde: Opcional.

Azul: A animação da área da magia.

Preto: Valor do dano da magia.

Marrom: Condição que o player vai ficar, nesse exemplo, o player vai ficar pegando fogo após ser atingido pela magia.

Roxo: A quantidade de dano. Nesse exemplo o player vai tomar "5" danos de "35" cada um (o traço "-" antes no valor do damage é necessário).

Rosa: Área da magia. "0": Representa uma área em que a magia não vai pegar. "1": Representa uma área em que a magia vai pegar. "3 ou 2": "3": Representa o centro da magia, onde o player vai estar, a magia vai passar embaixo do player mais não vai dar dano. "2": A magia não passa embaixo do player.

 

4- Agora no SPELLS.XML Coloque:

<instant name="Ultimate Explosion" words="exevo gran mas vis" lvl="60" maglv="3" mana="600" soul="0" exhaustion="1" prem="1" enabled="1" script="ultimate explosion.lua"><vocation id="1"/><vocation id="5"/><vocation id="9"/></instant>

Vermelho: Level necessário para usar a magia.

Azul: Magic level necessário para usar a magia.

Verde: Palavras necessárias para se usar a spell.

Marrom: Se é premium ou não. "1"= É premium. "0"= Não é premium.

Preto: O valor de Soul que a magia vai gastar.

Roxo: Qalquer um.

Laranja: Pode ser feito de duas maneiras: 1- Alterar apenas o valor de "mana". 2- Digitar ao invés de só: mana="600" digitar: manapercent="20" no lugar. Isso vai definir uma porcentagem de mana utilizada. Para definir a porcentagem é só alterar o valor em negrito.

Rosa: O nome do documento, escolhido anteriormente.

Cinza: Vocações que poderão usar a magia.

 

Pronto! Agora é só configurar do seu jeito e fazer a magia.

 

Parte 2: Magias do tipo "Wave"

 

1- Repita o passo 2 da parte um do tutorial.

 

2- "Fórmula":

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.7, -3, -1.1, 0)

 

local condition = createConditionObject(CONDITION_FIRE)

setConditionParam(condition, CONDITION_PARAM_DELAYED, 2)

addDamageCondition(condition, 5, 2000, -35)

setCombatCondition(combat, condition)

 

local arr = {

{1, 1, 1},

{1, 1, 1},

{1, 1, 1},

{0, 1, 0},

{0, 3, 0},

}

 

local area = createCombatArea(arr)

 

setCombatArea(combat, area)

 

function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

Cores: Têm o MESMO signoficado das cores da parte 1

 

3- No spells.xml coloque:

<instant name="Fire Wave" words="exevo flam hur" direction="1" lvl="18" maglv="3" mana="80" soul="0" exhaustion="1" prem="0" enabled="1" script="fire wave.lua"><vocation id="1"/><vocation id="5"/><vocation id="9"/></instant>

 

MUDANÇA!: ADICIONE ISSO NA TAG.

 

Cores: Têm o MESMO signoficado das cores da parte 1

 

4- Agora é só configurar do seu jeito.

 

Parte 3: Magias do tipo "Heal"

 

Existem 3 tipos de magia heal:

1: Heal Condition Ex: Exana pox

2: Heal Life Ex: Exura

3: Heal Area Ex: Exura gran mas res.

 

Eu vou ensinar os 3.

 

Heal Condition

 

1- Repita o passo 2 da parte um do tutorial.

 

2- Fórmula:

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)

setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_POISON)

 

function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

Vermelho: A animação que vai "aparecer" em você quando usar a magia.

Azul: A condição que ela deve curar.

 

3- No spells.xml:

<instant name="Antidote" words="exana pox" selftarget="1" aggressive="0" lvl="10" maglv="2" mana="30" soul="0" exhaustion="1" prem="0" enabled="1" script="antidote.lua"><vocation id="2"/><vocation id="1"/><vocation id="3"/></instant>

MUDANÇA!: ADICIONE ISSO NA TAG.

 

Cores: Têm o MESMO signoficado das cores da parte 1

 

4- Agora é só configurar a seu gosto.

 

Heal Life

 

1- Repita o passo 2 da parte um do tutorial.

 

2- "Fórmula":

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)

setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1)

setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)

 

function onGetFormulaValues(cid, level, maglevel)

min = (level * 2 + maglevel * 3) * 2

max = (level * 2 + maglevel * 3) * 2.8

 

return min, max

end

 

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

 

function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

Preto: O quanto de vida aumenta.

Vermelho: Animação da cura.

Azul: Condição a ser curada quando usa spell. (Nesse caso é paralyze)

Verde: Opcional

 

3- No spells.xml, a tag dessa magia vai ser igual a tag anterior, você só deve alterar os valores.

 

4- Configure a magia do seu jeito.

 

Heal Area

 

1- Repita o passo 2 da parte um.

 

2- "Fórmula":

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)

setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1)

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0.6, -30, 1.2, 0)

 

local arr = {

{0, 0, 1, 1, 1, 0, 0},

{0, 1, 1, 1, 1, 1, 0},

{1, 1, 1, 1, 1, 1, 1},

{1, 1, 1, 3, 1, 1, 1},

{1, 1, 1, 1, 1, 1, 1},

{0, 1, 1, 1, 1, 1, 0},

{0, 0, 1, 1, 1, 0, 0}

}

 

local area = createCombatArea(arr)

setCombatArea(combat, area)

 

function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

Vermelho: Animação da magia.

Preto: O quanto a magia cura.

Azul: Área da magia.

 

3- No spells.xml:

<instant name="Mass Healing" words="exura gran mas res" aggressive="0" lvl="36" maglv="3" mana="150" soul="0" exhaustion="1" prem="1" enabled="1" script="mass healing.lua"><vocation id="2"/><vocation id="6"/><vocation id="10"/></instant>

 

Negrito: A ÚNICA coisa que deve ser adicionada na tag, o resto dela é igual ao da parte 1 do tutorial.

 

4- Agora é só configurar.

 

Parte 4: Magias do tipo "Haste"

 

Magias do tipo haste, pra você que não sabe o que é haste, pense em: "utani hur".

 

1- Repita o passo 2 da parte um do tutorial.

 

2- "Fórmula":

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)

setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

 

local condition = createConditionObject(CONDITION_HASTE)

setConditionParam(condition, CONDITION_PARAM_TICKS, 20000)

setConditionFormula(condition, 0.7, -56, 0.7, -56)

setCombatCondition(combat, condition)

 

function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

Vermelho: Animação da magia.

Verde: Tempo de haste

Azul: O quanto de velocidade aumenta.

 

3- No spells.xml:

<instant name="Strong Haste" words="utani gran hur" selftarget="1" aggressive="0" lvl="20" maglv="3" mana="100" soul="0" exhaustion="1" prem="1" enabled="1" script="strong haste.lua"><vocation id="2"/><vocation id="1"/><vocation id="6"/><vocation id="5"/><vocation id="9"/><vocation id="10"/></instant>

 

MUDANÇA!: ADICIONE ISSO NA TAG.

 

Cores: Têm o MESMO signoficado das cores da parte 1

 

4- Agora configure a seu gosto.

 

Parte 5: Magias de conjuração

 

Tem dois tipos de magia de conjuração:

1: Runas, Energy Staff, Enchanted Spear.

2: Munição.

 

Vou ensinar as duas.

 

Runas, Energy Staff, Enchanted Spear

 

1: Abra o spells.xml e crie uma linha como essa:

<conjure name="Light Magic Missile" words="adori" reagentId="2260" conjureId="2287" aggressive="0" conjureCount="1" maglv="3" mana="120" soul="0" prem="0" enabled="1" function="conjureRune"><vocation id="2"/><vocation id="1"/><vocation id="3"/><vocation id="11"/></conjure>

Vermelho: Nome da magia (qualeur um)

Azul: Palavras mágicas

Verde: O id do item que tem que estar na sua mão para se transformar em outro (nesse caso é a blank rune)

Marrom: O id do item que o id do reagente irá se tornar (nesse caso uma hmm)

Preto: Quantas cargas vai ter.

Cinza: Vocações

Roxo: O quanto de soul ela gasta.

Rosa: Magic level necessário.

Laranja: Mana

 

2- Configure e pronto! As magias de conjuração não têm script.

 

Munição

 

1: Abra o spells.xml e crie uma linha como essa:

<conjure name="Conjure Arrow" words="exevo con" conjureId="2544" conjureCount="100" aggressive="0" lvl="8" maglv="0" mana="100" soul="0" prem="0" enabled="1" function="conjureItem"><vocation id="3"/><vocation id="7"/><vocation id="11"/></conjure>

 

É idêntica a tag de cima. Só o que muda é a function e o conjure id, que nesse caso não tem reagent id.

 

2- Agora é só configurar.

 

Parte 6: Magias de "runa"

 

Existem dois tipos de magias de runas:

Focadas Ex: SD

De área Ex: Great fire ball.

 

Vou ensinar as duas:

 

Focadas

 

1- Repita o passo 2 da primeira parte do tutorial.

 

2- "fórmula":

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)

setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH)

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.4, -50, -1.9, 0)

 

function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

Vermelho: Tipo de dano.

Azul: A animação que faz quando acerta o player. (só funciona em runas)

Verde: Animação do tiro. (ex: sd, fogo...)

Marrom: Dano.

 

3- No spells.xml:

<rune name="Sudden Death" id="2268" charges="1" needtarget="1" maglv="15" exhaustion="1" enabled="1" allowfaruse="1" script="sd.lua"></rune>

Verde: Nome da runa.

Vermelho: ID da runa.

Rosa: Nome do script.

Cinza: Número de cargas.

Laranja: Magic level necessário para se usar a runa.

Preto: Se precisa ser tacado em um alvo como uma criatura ou player, é por esse número que você não pode tacar sd no chão. "1"= Precisa. "0"= Não precisa.

 

4- Agora é só configurar.

 

De área

 

1- Repita o passo 2 da primeira parte do tutorial.

 

2- "fórmula":

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)

setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.2, -30, -0.4, 0)

 

local arr = {

{0, 0, 1, 1, 1, 0, 0},

{0, 1, 1, 1, 1, 1, 0},

{1, 1, 1, 1, 1, 1, 1},

{1, 1, 1, 3, 1, 1, 1},

{1, 1, 1, 1, 1, 1, 1},

{0, 1, 1, 1, 1, 1, 0},

{0, 0, 1, 1, 1, 0, 0}

}

 

local area = createCombatArea(arr)

setCombatArea(combat, area)

 

function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

Azul: Tipo de dano.

Verde: Efeito na área atingida.

Laranja: Animação do projétil. (nesse caso é uma bola de fogo)

Roxo: Dano causado.

Preto: Área afetada.

 

3- No spells.xml:

<rune name="Great Fireball" id="2304" charges="2" maglv="4" exhaustion="1" enabled="1" allowfaruse="1" script="gfb.lua"></rune>

 

Só o que muda é que não tem a tag do needtarget.

 

4- Agora basta configurar.

 

Bem pessoal, é só isso. Simples não?

Espero que façam grandes criações, Atenciosamente, Koti. (tempo para fazer o tópico: 4h e 22 min)

Editado por Koti
Link para o comentário
Compartilhar em outros sites

Krakaaaa...

To sem palavras..

O único e melhor tutorial de spells q eu consegui entender direitinho...

Parabéns Bro.

Nota 10.

 

Abraço.

 

 

Atenciosamente, LancellotWillis.

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

Olá Xtibiano,

 

Parabéns, seu tutorial foi aprovado.

 

Estarei movendo ele para a área de tutoriais.

 

Obrigado por trazer conteúdo para o Xtibia.com e espero que continue com o ótimo trabalho.

 

 

Atenciosamente,

JV Chequer *Diretor de Fórum Xtibia.com*

Link para o comentário
Compartilhar em outros sites

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