Ir para conteúdo

[spells] Preciso De Ajuda Com Spells Focados


JamesRocket

Posts Recomendados

Olá! Faço parte de um projeto OpenTibia, e fiquei encarregado da criação dos spells. A versão que estamos usando é YurOts 8.0, estamos simplesmente usando ela como base, implementando nossa preferências nela. Indo direto ao assunto, preciso criar spells focados ( que atinjam o alvo, não como o "exura sio", por exemplo, mas como uma SD ) do tipo instant. Já tentei pegar os scripts da SD e transformar em instant, mudando o tipo de dano, a animação e outras coisas, mas não obtive sucesso. O que aconteceu foi que quando tentei usar o spell, o client acusou o seguinte : "A player with that name is not online" Oo ( WTF ). Tentei também editar o já existente "exori flam", mas na codificação do nosso OT, ele não é focado, simplesmente ataca o tile da frente. As exigências do spell são as seguintes :

 

Spell que atinja o alvo que estiver marcado no momento;

A animação do projétil deve ser uma bola de fogo;

Ao causar dano no alvo, ele deve causar dano em uma área em forma de cruz em volta do alvo, um tile pra cada direção;

Deve se chamar "fire launch"

 

Abaixo um exemplo de script de spell do nosso server:

É o código referente ao spell "breath of fire", editado por mim a partir do já existente "exevo flam hur"

 

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 arr = {
{1, 1, 1, 1, 1},
{0, 1, 1, 1, 0},
{0, 0, 3, 0, 0},
}

local area = createCombatArea(arr)

setCombatArea(combat, area)

function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end

 

Gostaria que alguém mais experiente postasse o script da spell "fire launch" com as exigências citadas acima, usando o script de "breath of fire" como exemplo do sistema de codificação do nosso OT. Eu tomaria o código mostrado como exemplo pra poder fazer outros spells focados.

 

Bom, expliquei minha necessidade... preciso muito da orientação de alguém mais experiente, aprender só com tutoriais tá me deixando meio grog.

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

simplesmente fácil para mim! tenho o prazer de ajudá-lo explicando como:

 

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.7, -3, -1.1, 0)

local 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

 

nessa spell (fire launch) eu utilizei a mesma fórmula e animações do fire breath, com excessão do distance effect.

explicando:

-para fazer esta spell, é só você criar como se fosse uma instant spell de área comum, só que no meio da área (onde o player se encontra) vai ser '3', e não '2' ou '1'.

-para fazer com que ela seja focada, existe uma função que faz a spell precisar de target, a função 'needtarget="1"' (o valor '1' indica positivo, 0 indica negativo). há também outras variantes de funções como 'needdirection' ou 'exhaustion', bem como 'manapercent'.

 

<instant name="Fire Launch" words="xxx" lvl="x" [color="#FF0000"]needtarget="1"[/color] maglv="x" mana="x" soul="x" exhaustion="1" prem="x" enabled="1" script="fire launch.lua"><vocation id="x"/></instant>

 

-como você pode ver, a parte 'needtarget' se encontra na linha de identificação da spell em 'spells.xml'

 

*as partes em que eu coloquei 'x' você deve editar conforme sua preferência.*

**para fazer uma desas sem área, não copie o 'ethereal spear', basta retirar as funções que reconhecem e criam a área em combate.**

funções:

local arr = {

{0, 1, 0},

{1, 3, 1},

{0, 1, 0},

}

 

local area = createCombatArea(arr)

setCombatArea(combat, area)

 

***se a spell for instant sem foco, você só precisa substituir o '3' da área por '2', mas isso não é uma certeza minha.***

 

 

meu ot é 8.1, por tanto qualquer dúvida que tiver poste ok? se o bug do "player with name isn't online." continuar me avise

 

braço!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...