Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Eai meus queridos colegas do Tibia King, hoje vim trazer uma spell que um amigo egípcio (sim, você leu certo) pediu pra mim fazer pra ele. Sei que eu ando meio ausente mas é que a faculdade está realmente complicada e to entrando em semana de provas mas tirei esse fds pra tentar trazer algo legal pra vocês ^^

A spell cria uma orb congelada embaixo de você que vai ficar dando dano em area enquanto roda uns efeitos de gelo, ela é bem bonita e foi um dos motivos que eu decidi fazer :grin:

Aqui tem um pequeno GIF dela funcionando:

Spoiler


N9tQFJ8.gif


em spells.xml coloque:

<instant name="Frozen Orb" words="exori grav frigo" lvl="80" manapercent="3" prem="1" maglv="50" exhaustion="1000" needlearn="0" event="script" value="attack/frozenorb.lua">
	<vocation id="5"/>
	<vocation id="6"/>
	<vocation id="7"/>
	<vocation id="8"/>
</instant>

Note que ela remove % da mana, se quiser mudar isso troque manapercent ="3" por mana = "quantidade que vai gastar".

Agora vamos ao script:
Crie um arquivo chamado frozenorb.lua e coloque na pasta spells/scripts/attack e coloque o segundo conteúdo dentro dele:

Spoiler

local config = {
velocidade = 350, -- intervalo entre os giros (quanto menor, mais rapido)
hits = 24, -- quantos hits vai dar
msg = "Frozen Orb", -- msg ao soltar a spell
key = 13871, -- storage que sera utilizado pro cooldown
cooldown = 3, -- tempo em segundos de cooldown entre um uso da spell e outro.
effect1 = 36, -- efeito de distancia que vai ficar rodando
effect2 = 56, -- efeito no sqm do item
effect3 = 37, -- efeito ao castar a spell
effect4 = 43 -- efeito ao acertar a roda no player
}
--[[Note que a velocidade multiplicada pelo numero de hits deve dar algo proximo de 8550 pra que a magia nao fique ruim ou um efeito acabe antes do outro.
Nos valores que eu utilizei eles dao 8400, oque ja eh considerado perto pois temos 200 milisegundos iniciais, 
8550 eh o tempo que o item sera removido e coincide com o tempo de duracao do efeito 56 (config.effect2)]]

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 255)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)
function onTargetCreature(cid, target)
   doSendMagicEffect(getCreaturePosition(target), config.effect4)
end
setCombatCallback(combat, 4, "onTargetCreature")

local arr = {
{1, 1, 1},
{1, 3, 1}, -- area que vai acertar a spell enquanto estiver rodando
{1, 1, 1},
}

local area = createCombatArea(arr)
setCombatArea(combat, area)

function initEffect(position)
	for i = 0, 3 do
		local pos = {x = position.x, y = position.y, z = position.z}
		local dir = getPosByDir(pos, i)
		doSendDistanceShoot(position, dir, config.effect1)
	end
addEvent(doSendMagicEffect, 300, position, config.effect2)
return true
end

function middleEffect(cid, param, position, lim, count)
n = count or 0
	if isCreature(cid) and n < lim then
		for i = 0, 3 do
			local pos = {x = position.x, y = position.y, z = position.z}
			local pos2 = {x = position.x, y = position.y, z = position.z}
			local dir = getPosByDir(pos, i)
			local dir2 = getPosByDir(pos2, i + 1 <= 3 and i + 1 or 0)
			doSendDistanceShoot(dir, dir2, config.effect1)
		end
		doCombat(cid, combat, param)
		addEvent(middleEffect, config.velocidade, cid, param, position, lim, n + 1)
	end
return true
end

function endEffect(position)
	for i = 0, 3 do
		local pos = {x = position.x, y = position.y, z = position.z}
		local dir = getPosByDir(pos, i)
		doSendDistanceShoot(dir, position, config.effect1)
	end
	local item = getTileItemById(position, 2180)
	if item.uid > 0 then
		doRemoveItem(item.uid)
	end
return true
end

function onCastSpell(cid, var)
if getPlayerStorageValue(cid, config.key) - os.time() <= 0 then
	setPlayerStorageValue(cid, config.key, os.time() + config.cooldown)
	local position = getCreaturePosition(cid)
	doCreatureSay(cid, config.msg, 20)
	local orb = doCreateItem(2180, 1, position)
	addEvent(endEffect, 8.55 * 1000, position)
	doSendMagicEffect(position, config.effect3)
	initEffect(position)
	addEvent(middleEffect, 200, cid, var, position, config.hits)
else
	doPlayerSendCancel(cid, "You're exhausted.")
	return false
end
return true
end

 

Todas as explicações estão dentro do script, qualquer dúvida venham falar cmg.
A versão testada foi TFS 0.3.6, tibia 8.54 mas deve funcionar em 8.6 sem problema. Qualquer erro escrevam aí que eu tento ajudar.

Agradecimentos: Primeiramente à equipe do DeathZot por ter criado à spell, eu retirei a idéia de uma magia que eles fizeram pro servidor deles.
Segundamente Em segundo lugar, pro meu querido amigo, Ahmed, por ter me mostrado o vídeo e confiado em minhas habilidades de roubar idéias scripting

Editado por xWhiteWolf (veja o histórico de edições)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

  • Respostas 42
  • Visualizações 6.9k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Escreve local na frente de cada função e copia pros outros scripts que deve resolver.

  • ^nao, é ao castar.. se quiser colocar uma perda de mana por segundo dá pra adicionar ali no middleEfect uma função de remover mana por cada rodada, considerando que a rodada é a cada 0,35 segundos vc

  • não, testa ela usando como magia de player.. se falhar eu reabro meu sv hoje a noite qnd voltar da prova pra ver ql q é o problema e se consigo resolver. 

Postado

You are one of the best LUA Scripter i have ever seen ;) 
Good Job mate ... +++ REP +++ 
I Love This Script So Much .. Thanks 

Postado
  • Autor

PS: Ignorem as shurikens e meu outfit brilhando, é parte do gran castle system que eu esqueci de remover antes de fazer o vídeo  :jester:  :10r351f:

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Postado

Muito bom. Mas o inimigo fica congelado? Ou é só pq é um trainer?

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo