Fire Aura

Oneshot
em Globalevents e Spells

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

Nome: Fire Aura

Autor: Oneshot

Tipo: Magia

 


 

Faz tempo que eu não faço magias, então eu resolvi escrever qualquer coisa e deu nisso, uma aura que fica circundando o jogador por X tempo causando dano.

 


Crie um arquivo chamado fire aura.lua, e coloque o conteúdo abaixo:

 

local offsets = {
[0] = {{0, 0}, {1, 0}, {1, 1}, {1, 2}, {0, 2}, {-1, 2}, {-1, 1}, {-1, 0}},
[1] = {{0, 0}, {0, 1}, {-1, 1}, {-2, 1}, {-2, 0}, {-2, -1}, {-1, -1}, {0, -1}},
[2] = {{0, 0}, {-1, 0}, {-1, -1}, {-1, -2}, {0, -2}, {1, -2}, {1, -1}, {1, 0}},
[3] = {{0, 0}, {0, -1}, {1, -1}, {2, -1}, {2, 0}, {2, 1}, {1, 1}, {0, 1}}
}

local storage = 88888

local k = 1

local duration = 30

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 10, 10, 2.4, 2.4)

function onCastAura(cid, lastDirection)
local position = getPositionByDirection(getThingPosition(cid), lastDirection, 1)
local offset = offsets[lastDirection][(k > #offsets[lastDirection] and ((k % #offsets[lastDirection]) == 0 and #offsets[lastDirection] or (k % #offsets[lastDirection])) or k)]
local tmp = {x = position.x + offset[1], y = position.y + offset[2], z = position.z}
doCombat(cid, combat, positionToVariant(tmp))
doCreatureSetLookDirection(cid, lastDirection)
if os.time() < getCreatureStorage(cid, storage) then
	addEvent(onCastAura, 100, cid, getCreatureLookDirection(cid))
else
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "Aura effect ended.")
	mayNotMove(cid, false)
end
k = k + 1
end

function onCastSpell(cid, var)
doCreatureSetStorage(cid, storage, os.time() + duration)
mayNotMove(cid, true)
onCastAura(cid, getCreatureLookDirection(cid))
return true
end

 

No spells.xml, adicione uma linha:

 

<instant name="Fire Aura" words="fire aura" lvl="100" mana="550" needlearn="0" event="script" value="fire aura.lua"/>

 

A magia tem uma duração de 30 segundos, porém essa duração é configurável. Como ainda não criei uma lógica relacionando o movimento do jogador com a aura, então resolvi travar o movimento do jogador enquanto a magia é executada.

 

Abaixo a demonstração em GIF dela.

 

IM3kG.gif

 

O script está bem pogado, talvez eu consiga entender melhor o padrão e melhorar a construção do código.

 

Mude aqui efeito e tipo de dano se quiser, para criar outras auras:

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 10, 10, 2.4, 2.4)

 


 

Abraços.

jhon992

Dono JhonBot
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/06/11Posts: 631Char no Tibia: Warrior of Mort

Gostei, ficou show. Rep+

Mais acho que com distance effect ficaria mais legal hem, com aquele foguinho girando em volta. Fica a dica. happy.png

caotic

Afinal de contas,sou um mordomo e tanto
avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 04/03/11Posts: 1599Char no Tibia: No Have

Achei interessante a duração.

Bem configuravel e funcional

 

Tambem acho que distance effect ficaria foda.

Mais ta excelente.

Raidou

Nunca vendeu maconha.
avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 31/07/12Posts: 279Char no Tibia: Raidou

Gostei,nunca vi nada do tipo.

REP++

Qkpoy.png

 

 

Ajudo no que eu posso!

Seja feliz com isso.

kbsao

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 04/05/08Posts: 3
ph34r.png Legal!

Tondes

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 03/09/10Posts: 9Char no Tibia: Mano teddy

Oneshot tem coomo transforma essa spell pra mim 8.40 ?'

Meunometemvinteletra

Phony people come to pray...
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 06/09/12Posts: 60Char no Tibia: Lawliet Tequilla

Ótimo sistema! REP+

Perguntinha... Se eu tentar mudar o sistema pra fazer outros tipos de Aura vai funcionar? Exemplo:

 

Trocar essa parte:

 

 

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)

 

Por essa:

 

 

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, 1)

 

 

Ou seja, mudar o Effect da spell, dos quais são vistos pelo /x, /y e /z

 

-------------------------------------------------------------------------------------------------------------

Trabalhando seriamente há 2 anos, em busca do server perfeito.

 

------------- Attr: [member='Meunometemvinteletra']


Consider it done.

rohfagundes

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/02/11Posts: 377

Ótimo sistema! REP+

Perguntinha... Se eu tentar mudar o sistema pra fazer outros tipos de Aura vai funcionar? Exemplo:

 

Trocar essa parte:

 

 

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)

 

Por essa:

 

 

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, 1)

 

 

Ou seja, mudar o Effect do item, dos quais são vistos pelo /x, /y e /z

 

 

cara se vc mudar só o effect n tem problema nenhum '-'