Ir para conteúdo

[Tutorial] Criando Magias


Kimoszin

Posts Recomendados

Introdão

Ao Motivo de fechar a minha "fabrica de spells" resolvi criar esse tutorial. Para os iniciantes aprederem sozinhos. Organizei em Spoiler os Tipos de Magia.

 

Spell De Attack:

 

 

#O Corpo da Spell:

 

#Simples: 1 Efeito

 

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

 

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

 

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.

tutorial1.png

 

 

#Fazendo Sua Magia: 2 Efeitos

 

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

tutorialw.png

 

 

 

Spell De Cura:

 

#Corpo da Spell:

 

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:

 

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.

tutorialrm.png

 

 

 

Spell de Suport:

 

#Corpo da Spell:

#Correr:

 

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

 

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

 

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

 

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:

 

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:

 

 

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

 

Abraços

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

Tenho , uma duvida é quando o effects seria tipo esses :

 

setCombatParam(combat1, COMBAT_PARAM_EFFECT, 44)

setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, 11)

 

tipo é 2combat ai , seria como ? poderia da um exemplo ?

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

Tenho , uma duvida é quando o effects seria tipo esses :

 

setCombatParam(combat1, COMBAT_PARAM_EFFECT, 44)

setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, 11)

 

tipo é 2combat ai , seria como ? poderia da um exemplo ?

 

Como assim cara?

Nao entendi sua duvida

 

ae desculpa so novato no xtibia se poderia me dizer onde eu posso fazer minhas perguntas MINHAS DUVIDAS

 

Depende Cara, vc pode pedir duvida nesses topicos:

Dúvidas sobre Scripts

Dúvidas sobre Mapping

Dúvidas sobre OT Servidores

Dúvidas sobre Websites

Dúvidas de programação

 

So escolher a area que vc tenha duvida, faça um topico com a duvida e espere um membro responder.

Abraços

 

 

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

Brother, desculpa ai, seu tutorial está ótimo, quando digo ótimo é ótimo mesmo!

Mas , não achas que já tem 1 milhão de tutoriais sobre isso?

Não é querer ser chato, mas pá..

Valeu, obrigado a dedicação a fazer esse tuto..

 

Só minha opnião..

Abraços!

Link para o comentário
Compartilhar em outros sites

Cara,comecei a mexer hoje nesse negócio de server, otserver. então eu não entendi NADA o_O'. mas pelos comentários,deve ser uma coisa bem simples que eu , retardado,não entendi.

 

Abraços :D :XTibia_smile:

Link para o comentário
Compartilhar em outros sites

Não consegui ;x

Tipo, depois de tudo que é feito aí, não tem que levar algo pro spells.xml , e fazer algo tipo :

 

<instant name="Death Strike" words="exori mort" lvl="16" mana="20" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/death strike.lua">

<vocation id="1"/>

<vocation id="2"/>

<vocation id="5"/>

<vocation id="6"/>

</instant>

 

onde você escolhe as palavas a serem ditas pra fazer a magia, e o nome da magia? Ou é só fazer o que você mostrou , salvar e pronto? Se for isso, não consegui mesmo.

 

 

Link para o comentário
Compartilhar em outros sites

  • 4 months later...
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...