Jump to content
Vorkhon

[PEDIDO] Meteoros

Recommended Posts

Quero fazer essa spell hittar 5 vezes. Exatamente como ela ta mas 5 vezes.

 

local combat = createCombatObject()
local combat2 = createCombatObject()

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 36)

 
local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -10, -230, -9.40, -100)


local stun = createConditionObject(CONDITION_PARALYZE)
setConditionParam(stun, CONDITION_PARAM_TICKS, 2000)
setConditionFormula(stun, -0.9, 1, -0.9, 1)
setCombatCondition(combat1, stun)

local stun = createConditionObject(CONDITION_PARALYZE)
setConditionParam(stun, CONDITION_PARAM_TICKS, 3000)
setConditionFormula(stun, -0.9, 1, -0.9, 1)
setCombatCondition(combat2, stun)

local meteor_water = createCombatObject()
setCombatParam(meteor_water, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(meteor_water, COMBAT_PARAM_EFFECT, CONST_ME_LOSEENERGY)
setCombatFormula(meteor_water, COMBAT_FORMULA_LEVELMAGIC, -10, -300, -10.66, -100)

arr = {
{0, 0, 0, 0, 1, 0, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 3, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0, 0}
}


local combat_area = createCombatArea(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(0, 0) == 0) then
local ground = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 1})
if (isInArray(underWater, ground.itemid) == TRUE) then
local newpos = {x = pos.x - 9, y = pos.y - 8, z = pos.z}
addEvent(meteorCast, 100, {cid = cid, pos = pos, combat = meteor_water})
else
local newpos = {x = pos.x - 9, y = pos.y - 8, z = pos.z}
addEvent(meteorCast, 100, {cid = cid,pos = pos, combat = combat2})
end
end
end

function onTargetTile2(cid, pos)
if (math.random(0, 6) == 1) then
local ground = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 1})
if (isInArray(underWater, ground.itemid) == TRUE) then
local newpos = {x = pos.x - 9, y = pos.y - 8, z = pos.z}
doSendDistanceShoot(newpos, pos, 3)
addEvent(meteorCast, 100, {cid = cid, pos = pos, combat = meteor_water})
else
local newpos = {x = pos.x - 9, y = pos.y - 8, z = pos.z}
doSendDistanceShoot(newpos, pos, 3)
addEvent(meteorCast, 100, {cid = cid,pos = pos, combat = combat1})
end
end
end


setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")
setCombatCallback(combat2, CALLBACK_PARAM_TARGETTILE, "onTargetTile2")

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

 

Share this post


Link to post
Share on other sites

Este tópico foi movido para a seção de Suporte Otserv.


Tutoriais, lives, suporte, desafios, classificados e freelancer você encontra na Academia de Otserver.

separa10.png

 

Conheça nossos grupos:

 

academiaicone1.png                        academiaicone2.png

Academia de Mapping!        Academia de Coding!

 

academiaicone3.png

Academia de Design!

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

 

 

Precisando de Sprites?

 

 

Academia de Spriting

Academia de Spriting - Baixe Sprites gratuitas (FREE) em nosso blog!

 

 

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

« Mapas do Nolis »

 

 

 

 

Share this post


Link to post
Share on other sites

Não sei se é isso que você deseja mas testa ai.

 

local combat = createCombatObject()
local combat2 = createCombatObject()

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 36)

 
local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -10, -230, -9.40, -100)


local stun = createConditionObject(CONDITION_PARALYZE)
setConditionParam(stun, CONDITION_PARAM_TICKS, 2000)
setConditionFormula(stun, -0.9, 1, -0.9, 1)
setCombatCondition(combat1, stun)

local stun = createConditionObject(CONDITION_PARALYZE)
setConditionParam(stun, CONDITION_PARAM_TICKS, 3000)
setConditionFormula(stun, -0.9, 1, -0.9, 1)
setCombatCondition(combat2, stun)

local meteor_water = createCombatObject()
setCombatParam(meteor_water, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(meteor_water, COMBAT_PARAM_EFFECT, CONST_ME_LOSEENERGY)
setCombatFormula(meteor_water, COMBAT_FORMULA_LEVELMAGIC, -10, -300, -10.66, -100)

arr = {
	{0, 0, 0, 0, 1, 0, 0, 0, 0},
	{0, 0, 1, 1, 1, 1, 1, 0, 0},
	{0, 0, 1, 1, 1, 1, 1, 0, 0},
	{0, 1, 1, 1, 1, 1, 1, 1, 0},
	{1, 1, 1, 1, 3, 1, 1, 1, 1},
	{0, 1, 1, 1, 1, 1, 1, 1, 0},
	{0, 0, 1, 1, 1, 1, 1, 0, 0},
	{0, 0, 1, 1, 1, 1, 1, 0, 0},
	{0, 0, 0, 0, 1, 0, 0, 0, 0}
}


local combat_area = createCombatArea(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(0, 0) == 0) then
		local ground = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 1})
		if (isInArray(underWater, ground.itemid) == TRUE) then
			local newpos = {x = pos.x - 9, y = pos.y - 8, z = pos.z}
			addEvent(meteorCast, 100, {cid = cid, pos = pos, combat = meteor_water})
		else
			local newpos = {x = pos.x - 9, y = pos.y - 8, z = pos.z}
			addEvent(meteorCast, 100, {cid = cid,pos = pos, combat = combat2})
		end
	end
end

function onTargetTile2(cid, pos)
	if (math.random(0, 6) == 1) then
		local ground = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 1})
		if (isInArray(underWater, ground.itemid) == TRUE) then
			local newpos = {x = pos.x - 9, y = pos.y - 8, z = pos.z}
			doSendDistanceShoot(newpos, pos, 3)
			addEvent(meteorCast, 100, {cid = cid, pos = pos, combat = meteor_water})
		else
			local newpos = {x = pos.x - 9, y = pos.y - 8, z = pos.z}
			doSendDistanceShoot(newpos, pos, 3)
			addEvent(meteorCast, 100, {cid = cid,pos = pos, combat = combat1})
		end
	end
end


setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")
setCombatCallback(combat2, CALLBACK_PARAM_TARGETTILE, "onTargetTile2")

function onCastSpell(cid, var)
	for i=1, 4 do
		doCombat(cid, combat, var)
	end

	return doCombat(cid, combat, var)
end

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By bkruan
      queria sabe como eu posso configura meus comando de adm no meu serve pokemon
       
       
       
      boa tarde
    • By xWhiteWolf
      Fala galera do TK, hoje eu venho mais uma vez trazer uma das magias mais incríveis que eu já vi até hoje (sério). A magia original foi feita em outro fórum mas para a versão 10.1... como eu vi que ninguém conseguiu adaptar pra versões inferiores eu decidi criar a minha própria volatile spiderling.
      Confesso que no começo eu tive muita dificuldade em achar as funções certas mas depois de tentar ajudar o membro @234567890z no suporte eu tive uma epifania. Sem mais delongas eu vou explicar oque o script faz e em seguida ensinar a colocá-lo no seu server.

      • Explicação: A magia foi feita baseada na personagem Elise do jogo League of Legends: você faz uma cria que anda até os oponentes e se explodem causando dano em area e deixando eles envenenados. Aqui tem um gif da magia funcionando  
      obs: note que esse gif não fui eu que fiz mas ele demonstra exatamente como a magia funciona.
       
       
      • Instalação: Pra instalá-lo no seu servidor vai ser um pouco complicado pois ele requer diversas modificações... antes de mais nada, coloque essas linhas no seu spells.xml:
      <instant name="Volatile Spiderling" words="utevo res tera" lvl="40" mana="20" prem="1" selftarget="1" exhaustion="2000" groups="1,2000" icon="88" needlearn="0" event="script" value="especiais/spiderling.lua"> <vocation id="3"/> <vocation id="7"/> </instant> <instant name="poison explosion" words="poison explosion" lvl="0" mana="0" prem="0" aggressive="1" exhaustion="3000" needlearn="1" event="script" value="especiais/newspider.lua"> </instant> Agora você vai ter que criar os dois arquivos na pasta spells\scripts\especiais.
      Em newspider.lua coloque o seguinte:
      agora em spiderling.lua coloque o seguinte: Agora feito isso vc vai precisar criar o monstro que usará essa spell.. vá em monster\monsters.xml e adicione a seguinte linha: <monster name="Clone Spider" file="arachnids/newspider.xml"/> agora crie o arquivo data\monsters\arachnids\newspider.xml e adicione o seguinte nele:
      Agora eu vou ensinar vocês a editarem... não tem muito oque mudar, apenas se vc quiser alterar os danos da spell vá em newspider.lua e será possível editar os danos do poison e da explosão:
       
      local damageTable = {     {4, -3},     {9, -2},     {20, -1} }   aqui você muda quantos danos serão e quanto cada um tirará.. no caso serão 4 hits de -3, depois 9 hits de -2 e por fim 20 hits de -1 até o poison parar. Lembrando que esses danos saem de 4 em 4 segundos. Se você quiser que eles sejam mais rápidos é só editar aqui:
      addDamageCondition(poisonpowder, t[1], 4000, t[2]) (4000 significa 4 segundos).
      Feito isso será possível editar também a area e o dano da explosão respectivamente em: Area:    
      Dano:
      doAreaCombatHealth(cid, 1, getThingPos(cid), area, -1, -30, 20)
      Em vermelho temos o dano mínimo, analogamente, em azul, temos o dano máximo.
      Em verde é possível editar o efeito da explosão
      Só lembrando que as edições que forem feitas no newspider.lua devem ser feitas no spider.lua para que a magia tenha graça.. se não o dano da explosão/poison ao explodir será diferente caso ela morrer antes.  Em spiderling.lua vc pode editar a quantidade máxima de crias que um player pode ter... o normal está setado para 2 mas vc pode sentir-se livre pra colocar quantas queira.
      local maxsummon = 2   (Só lembre-se que ao explodir uma aranha pode acertar outra então não é muito bom deixar um numero maior que 3);
       
      Se você for daqueles bem chatinhos com a magia você ainda pode editar algumas coisas importantes tais como:
      O efeito que sai quando ela explode por morte ou pela spell:
       doSendMagicEffect(getThingPos(cid), 16) O tempo em que ela executa a spell, a chance da spell sair naquele tempo e quantos sqm de distancia a criatura alvo deve estar pra aranha se explodir: 
      <attack name="poison explosion" interval="1000" range="1" chance="50"/> interval = de quantos em quantos segundos ela executa a spell
      range = distancia em sqm que o alvo deve estar pra que ela execute a spell
      chance = chance de executar a spell a cada interval (nesse caso a cada 1 segundo tem 50% de chance dela soltar a magia)
       
      Você ainda pode editar aqui em vermelho:
      o tempo que leva pra criatura executar a magia.. Por padrão eu deixei 2 segundos, ou seja... eu sumono a aranha, ela vai até o alvo e a cada segundo q ela passa grudada no alvo (1 sqm de distancia) ela tem 50% de chance de ativar a spell e ficar parada no lugar durante 2 segundos até explodir. Se você quiser que ela leve menos tempo pra explodir é só baixar o 2000 (em milisegundos).. Se você quiser aumentar o dano e deixar ela parada por mais tempo até explodir pode editar a vontade aumentando os 2000.

      • Bom, isso é tudo que dava pra eu explicar... é óbvio que dá pra editar muito mais coisa mas se você não é scripter e não tem muita idéia de como editar eu dei uma ensinada básica doque você está autorizado a mexer. Espero que vocês curtam a spell e deem aquele REP+ pra fortalecer kkkk
      Eu não pretendia liberar essa spell visto que ela é extremamente complexa e nenhum servidor tem ela, mas, acho que seria muito babaca da minha parte ficar guardando um script tão bonito hahaha. Qualquer erro ou dúvida postem nos comentários que eu tento ajudar.
       
      ah, mais uma coisa: Os créditos são 90% meus visto que eu fiz praticamente tudo.. 9% é pro cara que fez a magia original (se vcs derem uma procurada vcs vão ver que não tem quase nada a ver com a minha mas os créditos dele são por ele ter me dado a idéia) e 1% pro cara no suporte que me pediu ajuda numa spell do mesmo gênero e me fez correr atrás de uma forma de fazer essa magia pra versões inferiores a TFS 1.0
    • By EddyHavoc
      Nome: Ice Wall
      Tipo: Spell
      Autor: Eddy Havoc
       
       
       
      Essa é a versão final da spell Ice Wall ou Block Wall criada por mim.
       
      Exibição in-game:
       
       
       
       
      Crie um arquivo chamado ice_wall.lua na pasta data/spells/scripts/conjuring e copie o conteúdo abaixo:
      --[[ Created by: Eddy Havoc name: Victor Amaral contact: victor.amaral1@gmail.com É proibido a venda ou a cópia sem os devidos créditos desse script. ]]-- local north = 0 local south = 2 local east = 1 local west = 3 local delay = 1 -- Tempo em segundos local itemh = 6728 local itemv = 6729 combat = createCombatObject() combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE) function onCastSpell(creature, variant) local cDir = creature:getDirection() local cPos = creature:getPosition () local pos = (Position(0,0,0)) if cDir == north then if not getTileInfo(cPos).house and not getTilePzInfo(cPos) then setCombatParam(combat, COMBAT_PARAM_CREATEITEM, itemv) pos = Position(cPos + Position(0, -1)) meffect = pos:sendMagicEffect(44) end elseif cDir == east then if not getTileInfo(cPos).house and not getTilePzInfo(cPos) then setCombatParam(combat, COMBAT_PARAM_CREATEITEM, itemh) pos = Position(cPos + Position(1, 0)) meffect = pos:sendMagicEffect(44) end elseif cDir == south then if not getTileInfo(cPos).house and not getTilePzInfo(cPos) then setCombatParam(combat, COMBAT_PARAM_CREATEITEM, itemv) pos = Position(cPos + Position(0, 1)) meffect = pos:sendMagicEffect(44) end elseif cDir == west then if not getTileInfo(cPos).house and not getTilePzInfo(cPos) then setCombatParam(combat, COMBAT_PARAM_CREATEITEM, itemh) pos = Position(cPos + Position(-1, 0)) meffect = pos:sendMagicEffect(44) end end addEvent(function() local wall = {itemh, itemv} for i = 1, 2 do if getTileItemById(pos, wall[i]).uid > 0 then doRemoveItem(getTileItemById(pos, wall[i]).uid) return TRUE end end end,delay*1000) return doCombat(creature, combat, variant) end Adicione a seguinte tag no arquivo spells.xml localizadon a pasta data/spells:
       
      <instant group="support" spellid="94" name="Protection" words="Ice Wall" level="1" mana="1" casterTargetOrDirection="1" blocktype="all" prem="0" cooldown="1000" groupcooldown="500" needlearn="0" script="conjuring/ice_wall.lua"> <vocation name="Elder Druid"/> </instant>  
       
       
      Para configurar qual item a spell irá conjurar edite itemh/itemv. Itemh: item que irá aparecer horizontalmente (norte e sul). Itemv: item que irá aparecer verticalmente (leste e oeste).  
       
      Qualquer dúvida estou a disposição,
      Atenciosamente, Eddy Havoc.
       
       
       
    • By Vorkhon
      Fala pessoal eu quero modificar a spell Undead Legion. E fazer algumas modificações dela. 
       
      1) Quero fazer uma para um corpse especcifico. Tipo que ela só funcione em dragon, ai vira um undead dragon.
      2) Eu quero adicionar que a spell nao consiga ser usada se não tiver o corpo por perto, não quero que os players possam usar ela do nada.
       
      A minha por enquanto é assim:
       
      function onTargetTile(cid, pos) local getPos = pos getPos.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE local corpse = getThingFromPos(getPos) if(corpse.uid > 0 and isCorpse(corpse.uid) and isMoveable(corpse.uid) and getCreatureSkullType(cid) ~= SKULL_BLACK) then doRemoveItem(corpse.uid) doConvinceCreature(cid, doCreateMonster("Undead", pos)) doSendMagicEffect(pos, CONST_ME_MORTAREA ) return true end return false end local area, combat = createCombatArea(AREA_CIRCLE3X3), createCombatObject() setCombatArea(combat, area) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_NONE) setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile") function onCastSpell(cid, var) return doCombat(cid, combat, var) end  
  • Recently Browsing   0 members

    No registered users viewing this page.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

Tibia King Recomenda

DokeHost - Soluções em Hospedagem

VPS Windows
VPS Linux
Servidor VPS
×
×
  • Create New...