Ir para conteúdo

(Resolvido)[PEDIDO] Summon Indo para onde vc for e conforme lvl upado ele fica mais forte também

Featured Replies

Postado

eu tenho 1 sistema de hipnose, conforme a força do jogador ele consegue hipnotizar os monstros, será q n ficaria legal?

Toda terça-feira um tópico novo:

Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/

Peça sua spell (Suporte):                https://tibiaking.com/forums/topic/84162-peça-sua-spell/                        

Chuva de flechas (Spell):                https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/

Doom (Spell):                                https://tibiaking.com/forums/topic/51622-doom-spell/

Utilização do VS Code (Infra)       https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/

SD com Combo (Spell):                 https://tibiaking.com/forums/topic/94520-sd-modificada/

Alteração attack speed (C++):        https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/  

Bônus de Speed (NPC)                  https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
 

  • Respostas 12
  • Visualizações 2.6k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Ei amigo! Só passando pra informar que finalizei a primeira parte do seu pedido. Peço desculpas pela demora, conforme lhe expliquei, minha faculdade é realmente puxada, agora mesmo estou virando a noi

Postado
  • Autor

mas tipo o bicho ficando hipnotizado não importa pra onde vc for ele vai junto? eu me refiro no caso de descer buraco, escadas, etc... pq o utevo res se tem q sair da tela de visão do monstro pra ele se teleportar.

Postado
  • Solução

Ei amigo! Só passando pra informar que finalizei a primeira parte do seu pedido. Peço desculpas pela demora, conforme lhe expliquei, minha faculdade é realmente puxada, agora mesmo estou virando a noite estudando, mas dei uma pausa e resolvi trabalhar no que você pediu pra esfriar a cabeça.

 

Enfim, fiz a parte sobre o summon seguir o jogador. Vamos lá.

 

Vá na pasta data/globalevents/scripts e crie um novo arquivo chamado summonseguir.lua e cole o seguinte conteúdo nele:

function onThink(cid, interval)

	for _, pid in ipairs(getPlayersOnline()) do

		local distmax = 3
		local efeito = CONST_ME_TELEPORT

		if #getCreatureSummons(pid) > 0 then
			local tmp = #getCreatureSummons(pid)
			if getTilePzInfo(getCreaturePosition(pid)) then return true else
				while tmp > 0 do
					if getDistanceBetween(getCreaturePosition(pid), getCreaturePosition(getCreatureSummons(pid)[tmp])) > distmax then
						doTeleportThing(getCreatureSummons(pid)[tmp], getCreaturePosition(pid), false)
						doSendMagicEffect(getCreaturePosition(getCreatureSummons(pid)[tmp]), efeito)
					end
					tmp = tmp - 1
				end
			end
		end

	end

return true
end

 

Logo no início do script você vê algumas variáveis locais. O valor da variável distmax representa, logicamente, a distância máxima que pode existir entre o summon e o jogador para que o summon seja teleportado. No caso eu coloquei 3, mas no script que você pegou tinha 7, então acho que é a melhor escolha usar igual aos de Pokémon. Por outro lado, a variável efeito foi criada mesmo só pra você conseguir alterar facilmente o efeito que aparecerá no summon quando ele for teleportado. Enfim, é basicamente isso de configuração. Continuemos.

 

Após ter criado o arquivo do script, vá no seu globalevents.xml e adicione a seguinte tag:

<globalevent name="Summon Seguir" interval="????" event="script" value="summonseguir.lua"/>

 

Perceba que no parâmetro interval eu coloquei interrogações. No lugar dessas interrogações, você deve colocar o tempo em milissegundos que leva para ocorrer a checagem de posição. Em outras palavras, é o delay pra que o summon seja teleportado. Quanto mais tempo, mais demorará a checagem, e maior é a probabilidade de o summon ficar muito distante. Eu realmente não faço ideia de quanto tempo eles usam nos OTs pokémon, mas acredito que seja uns 1000ms. Como eu te disse por MP, o problema da função onThink é que ela deixa o servidor muito pesado, então é bom não abusar. Contudo, pelos scripts que você postou, os próprios servidores de Pokémon usam desse jeito, então acho que não há problema.

 

O script que você passou dos servidores de pokémon teleportava apenas o primeiro summon do jogador. No caso de Poketibias, isso não atrapalha, pois cada jogador pode summonar no máximo uma criatura. Contudo, como seu servidor não é um Poketibia, fiz o script pensando em teleportar todos os summons que o jogador invocou, independentemente de qual a quantidade máxima de summons que seu servidor permite (aquela que você configura no config.lua). Porém, fique avisado que quanto maior for o número máximo de summons, mais pesado ficará o script, pois maior será a checagem. De um pra dois summons máximos parece coisa pouca, mas entenda que não é simplesmente "um" summon a mais, e sim um summon a mais por jogador. Dependendo de quantos jogadores online seu servidor tenha, isso é bastante coisa. Por isso, recomendo que deixe no máximo 2 summons por vez.

 

Enfim, é isso cara. Consegui arranjar um tempo pra fazer essa primeira parte, vou tentar não demorar muito pra concluir a segunda, mas como já te disse por MP meu tempo é apertado. Qualquer novidade posto nesse tópico e te aviso por MP.

 

Abraço.

 

@EDIT: Para quem tiver a mesma necessidade do dono do tópico, desenvolvi uma base para a magia Summon Creature na forma de MOD. Essa magia no TFS 0.4 é uma função pré-definida, impedindo que se faça algum tipo de alteração nela via script. Porém, como o que o autor do tópico queria era justamente uma personalização da Summon Creature, fez-se necessário reescrever a magia por completo na forma de script, e deixarei aqui para quem tiver interesse. Para utilizar, basta desativar a Summon Creature original no arquivo spells.xml e adicionar a seguinte mod ao seu servidor:

 

<?xml version="1.0" encoding="UTF-8"?>
<mod name="Summon Monster Personalizado" version="1.0" author="Tiago Melo Juca" contact="TibiaKing" enabled="yes">

	<talkaction words="utevo res" filter="word-spaced" event="script"><![CDATA[

		-- General Configuration
		local lvlmin = 25
		local exhaustion = 2000
		local needlearn = 0
		local learnstorage = 77890
		local vocations = {1, 2, 5, 6}
		local maxsummons = getConfigValue("maxPlayerSummons")
		summonlist =	{
				[1] = {'rat', 50},
				[2] = {'wolf', 100},
				[3] = {'demon skeleton', 300}
				}

		-- Player Info
		local lvl = getPlayerLevel(cid)
		local vocp = getPlayerVocation(cid)
		local mana = getCreatureMana(cid)
		local pos = getCreaturePosition(cid)

		-- Statements
		local learned = 0
		local voccan = 0
		local cansummon = 0
		local manacost = 0
		local exhaustorage = 77889

		-- Loop Control
		local vocs = #vocations
		local slistn = #summonlist

		-- Conversions
		param = string.lower(param)
		param = string.gsub(param, '\"', '')
		exhaustion = exhaustion/1000

		-- Initial Verification
		if needlearn == 0 then learned = 1 end
		if needlearn == 1 and getPlayerStorageValue(cid, learnstorage) > 0 then learned = 1 end

		while vocs > 0 do
			if vocp == vocations[vocs] then voccan = 1 end
			vocs = vocs - 1
		end

		while slistn > 0 do
			if param == summonlist[slistn][1] then
				cansummon = 1
				manacost = summonlist[slistn][2]
			end
			slistn = slistn - 1
		end

		-- Summon Monster
		if getTilePzInfo(pos) then
			doPlayerSendCancel(cid, 'This action is not permitted in a protection zone.')
		else

			if lvl < lvlmin then
				doSendMagicEffect(pos, CONST_ME_POFF)
				doPlayerSendCancel(cid, 'You do not have enough level.')
			else

				if learned == 1 then
					if voccan == 1 then
						if getPlayerStorageValue(cid, exhaustorage) >= os.time() then
							doSendMagicEffect(pos, CONST_ME_POFF)
							doPlayerSendCancel(cid, 'You are exhausted.')
						else
							if cansummon == 1 then
								if mana >= manacost then
									if #getCreatureSummons(cid) < maxsummons then
										doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE)
										doCreatureAddMana(cid, 0-manacost, false)
										local summon = doCreateMonster(param, pos)
										doConvinceCreature(cid, summon)
										doSendMagicEffect(getCreaturePosition(summon), CONST_ME_TELEPORT)
										setPlayerStorageValue(cid, exhaustorage, os.time()+exhaustion)
									else
										doSendMagicEffect(pos, CONST_ME_POFF)
										doPlayerSendCancel(cid, 'You cannot summon more creatures.')

									end
								else
									doSendMagicEffect(pos, CONST_ME_POFF)
									doPlayerSendCancel(cid, 'You do not have enough mana.')
								end
							else
								doSendMagicEffect(pos, CONST_ME_POFF)
								doPlayerSendCancel(cid, 'Sorry, not possible.')
							end
						end
					else
						doSendMagicEffect(pos, CONST_ME_POFF)
						doPlayerSendCancel(cid, 'Your vocation cannot use this spell.')
					end
				else
					doSendMagicEffect(pos, CONST_ME_POFF)
					doPlayerSendCancel(cid, 'You need to learn this spell first.')
				end

			end

		end
		
	return

]]></talkaction>
</mod>

A MOD acima nada mais é do que a magia Summon Creature do próprio Tibia reescrita na forma de script, a fim de poder fazer personalizações nela (no caso do autor do tópico, deixar os summons mais fortes de acordo com Level e Magic Level). Através dessa base, é possível fazer variações mais elaboradas da magia Summon Creature.

 

Lembrando que, por motivos de limitação do próprio TFS, monstros summonados por essa MOD devem, obrigatoriamente, apresentar a flag convinceable ligada em seu arquivo XML. Contudo, não é necessário que a flag summonable seja ligada; na realidade, pouco importa se ela está ligada ou desligada, pois a MOD trabalha com a flag convinceable e não summonable (uma vez que o TFS trabalha com doCreateMonster + doConvinceCreature). Outra ressalva é que todos os monstros que podem ser summonados devem ser adicionados naquela listinha no início do script, mas isso por incompetência minha mesmo, não arranjei uma forma mais fácil de fazer isso. Qualquer monstro que não esteja naquela listinha (nome e custo de mana para invocá-lo), não poderá ser summonado (será a mesma coisa de tentar summonar um Demon no tibia global, por ex, ele vai dizer que não é possível).

 

Bem, é isso. Espero que essa base para a magia ajude quem precisar de uma Summon Creature customizada! Por motivos éticos, não disponibilizarei a versão final adaptada para a necessidade do rheyn, já que é do projeto dele. Porém com a MOD que eu passei vocês facilmente incrementam a magia sozinhos.

 

Abraço.

Editado por admkhbr
Adicionar MOD (veja o histórico de edições)

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