Ir para conteúdo

Meteor Spell


Posts Recomendados

Uma spell de meteoro, se quiser pode editar.

 

Adicione em spells.xml:

<instant name="meteor" words="meteor" lvl="8" mana="10" prem="1" range="6" casterTargetOrDirection="1" blockwalls="1" exhaustion="1000" needlearn="0" event="script" value="meteor.lua">

<vocation id="4"/>

<vocation id="8"/>

</instant>

Editando:

 

​-Vermelho: Variáveis (tiver duvida em alguma me fala)

 

Agora crie um arquivo.lua em data/spells/scripts nomeie para meteor e adicione:

local combat = createCombatObject()

 

local meteor = createCombatObject()

setCombatParam(meteor, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(meteor, COMBAT_PARAM_EFFECT, 15)

setCombatFormula(meteor, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)

setCombatParam(meteor, COMBAT_PARAM_CREATEITEM, 1492)

 

local meteor_water = createCombatObject()

setCombatParam(meteor_water, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(meteor_water, COMBAT_PARAM_EFFECT, 15)

setCombatFormula(meteor_water, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)

 

combat_arr = {

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

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

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

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

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

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

{0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0},

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

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

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

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

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

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

}

 

local combat_area = createCombatArea(combat_arr)

setCombatArea(combat, combat_area)

 

local function meteorCast(p)

doCombat(p.cid, p.combat, positionToVariant(p.pos))

end

 

local function stunEffect(cid)

doSendMagicEffect(getThingPos(cid), CONST_ME_STUN)

end

 

function onTargetTile(cid, pos)

if (math.random(1, 1) == 1) then

local ground = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0})

if (isInArray(water, ground.itemid) == TRUE) then

local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z}

doSendDistanceShoot(newpos, pos, 3)

addEvent(meteorCast, 6000, {cid = cid, pos = pos, combat = meteor_water})

else

local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z}

doSendDistanceShoot(newpos, pos, 3)

addEvent(meteorCast, 600, {cid = cid,pos = pos, combat = meteor})

end

end

end

 

setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

 

function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

Editando:

 

-Vermelho: Efeito (/z)

-Verde: Id do item a ser criado

-Laranja: 1 para aparecer mais um, 0 para cancelar (Se não entender pergunte)

-Marrom: Efeito (/x)

 

Imagem:

meteor2.png

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

meteor1f.png

Link para o comentário
Compartilhar em outros sites

@Bloxx

 

Sobre o attack faz assim:

 

setCombatFormula(meteor, COMBAT_FORMULA_LEVELMAGIC, -0, -0, -0, -0)

Modificando:

 

-Vermelho: Edita esses números para números maiores (ex: 0 para 50).

-Laranja: Edita o sinal, mais (+) para healar e menos (-) para tirar life.

 

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

 

@PostadorHunter

 

O Sprite do efeito você pode ver com o GM fazendo assim:

 

/z 0 até /z 68

 

Obs: Escreve /z 5 e aperta enter, ai vai aparecer um efeito, depois você substitui onde fala o tutorial.

Link para o comentário
Compartilhar em outros sites

if (math.random(1, 1) == 1) then

Genius, anyway;

o código está demasiadamente grande para o que faz, mas se está começando na area parabéns e continue estudando.

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

Queria saber como fazer pra cair meteoro em mais de 1 lgr, tipo uma chuva de meteoros (Não sei se vc ja jogou ot d epokemon, mais seria tipo uma Shadow Storm)

 

Se puder me ajudar te dou rep ^_^

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

Queria saber como fazer pra cair meteoro em mais de 1 lgr, tipo uma chuva de meteoros (Não sei se vc ja jogou ot d epokemon, mais seria tipo uma Shadow Storm)

 

Se puder me ajudar te dou rep ^_^

 

Isso?

function storm(cid, element, DistEfec, MagEfec, damage_1, damage_2)
if isCreature(cid) then
	local pos = getThingPos(cid)
	pos.x = pos.x + math.random(-4,4)
	pos.y = pos.y + math.random(-4,4)
	local frompos = getThingPos(cid)
	frompos.x = pos.x - 6
	frompos.y = pos.y - 6
	doSendDistanceShoot(frompos, pos, DistEfec)
	doAreaCombatHealth(cid, element, pos, 0, -damage_1, -damage_2, MagEfec)
end
end

function onCastSpell(cid, var)

for i = 1, 72 do
	addEvent(storm, i*35,cid,GHOSTDAMAGE,18,140, 110, 120)
end

return true
end


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

@Bolinhoo28

 

Edita na area:

combat_arr = {

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

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

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

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

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

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

{0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0},

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

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

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

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

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

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

 

}

Se quiser botar mais lugares faz assim:

 

-Troca o zero (0) pelo um (1).

 

Cada numero 1 representa uma areá, ficando assim:

 

combat_arr = {

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

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

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

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

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

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

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

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

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

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

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

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

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

 

}

Explicando:

 

-Laranja: Numero um (1) é onde ira aparecer o efeito, a magia, etc.

-Preto: Numero zero (0) é onde não aparecera nada

-Vermelho: Numero 3 é onde o player que recebe o dano está.

 

Obs: Caso não queira que onde o player que recebeu o attack (o sqm que ele esta) não apareça o efeito deixe dois (2).

 

No caso (no exemplo) está formando uma areá de 5x5 ao redor do player.

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

×
×
  • Criar Novo...