Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

56b1bd820b8ca_lastManStanding.png.31060c

Olá, bom dia a todos.

 

Como tenho visto muitíssimos pedidos neste sentido, lhes apresento o LMS - Last Man Standing com BroadCast

Barra.png.06ae5a53fe8110033fa76049e8aac1

tfs04version.png.3dbef736f3974453465ce90

Spoiler

Barra.png.06ae5a53fe8110033fa76049e8aac1

 

O que é o 'Last Man Standing Event'?

Trata-se de um evento em que os 'player' lutam para sobreviver e ganharem algumas recompensas.

No fim das contas, irá privilegiar aqueles que visam utilizar táticas e técnicas que possam ser utilizadas em batalhas. Ou seja, não seria para qualquer um.
 

  • Este evento contém um 'broadcast' que avisa aos 'players' sobre o início do evento;
  • Este evento se repete a cada 2 (duas) horas (pode ser modificado este valor, é claro);
  • A cada 2 horas surge um 'teleport' por um prazo de 120 segundos (2 minutos) em determinado local;
  • Tem um mínimo de 12 'players' para funcionar.

 

Então vamos para o 'script'.

Barra.png.06ae5a53fe8110033fa76049e8aac1

passos.png.2af720c8fa5cd540ed87d24c6e9b8

Spoiler

1º - Vá na pasta 'data > globalevents > scripts' e crie outra pasta chamada 'LMS' dentro.

 

2º- Dentro desta pasta (a 'LMS') crie um arquivo chamado 'arena', salve com a extensão '.lua' e, dentro deste, coloque o seguinte:



local t = { 
	tmp = 	{ 
			{x = 382, y = 1343, z = 7}, -- quina à noroeste (acima e à esquerda) da area onde os players devem estar para ingressar no evento 
			{x = 389, y = 1346, z = 7} -- quina à Sudeste (abaixo e à direita)
			}, 
	arena = { 
			{x = 349, y = 1338, z = 6}, -- Quina de cima e à esquerda
			{x = 368, y = 1352, z = 6}, -- quina de baixo e à direita
			{x = 358, y = 1345, z = 6} -- Centro da Arena
			}, 
	
	noPlayers = {x=876, y=1025, z=7}, -- Para onde serão teleportados caso não haja campeão
	semChamps = {x=32345, y=32225, z=7}, -- Local para onde serão teleportados os 'players' caso passem os minutos sem campeão
			
	from = {x = 351, y = 1340, z = 6}, -- quina de cima e à esquerda de onde os players serão transportados (escolha será aleatória) 
	to = {x = 366, y = 1350, z = 6}, -- quina de baixo e à direita de onde os players serão transportados (escolha será aleatória) 

	minPlayers = 12, -- Número mínimo de players para iniciar o evento
	noPlayers = 1, -- Se houver este número de player na área o evento não começa 
	prize = {6527} -- prêmio que o vencedor vai receber
	expRewChamps = 0 -- Coloque aqui a experiência que o campeão ganhará. Deixe zero se não quiser.
	expRewPart = 0 -- Coloque aqui a experiência que todos os 'players' que participarão ganharão. Deixe zero se não quiser.
} 

local kick = 0 

function onThink() 
	local arenaPlayers = {} 
		
		for x = t.arena[1].x, t.arena[2].x do 
			for y = t.arena[1].y, t.arena[2].y do 
				for z = t.arena[1].z, t.arena[2].z do 
					local pos = {x = x, y = y, z = z} 
					local n = getTileInfo(pos).creatures 
			 
						if n ~= 0 then 
							pos.stackpos = 1 
							local c = getThingfromPos(pos) 
								while c.uid ~= 0 do 
									if c.itemid == 1 and c.type == 1 then 
										table.insert(arenaPlayers, c.uid) 
											if #arenaPlayers == n then 
												break 
											end 
									end 
									pos.stackpos = pos.stackpos + 1 
									c = getThingfromPos(pos) 
								end 
						end 
				end 
			end 
		end 

		if #arenaPlayers == 1 then 
			local p = getPlayerMasterPos(arenaPlayers[1]) 
				doTeleportThing(arenaPlayers[1], p) 
				doSendMagicEffect(p, CONST_ME_TELEPORT) 
				doPlayerSendTextMessage(arenaPlayers[1], MESSAGE_STATUS_CONSOLE_BLUE, "Voce ganhou este evento e recebeu este premio") 
				doBroadcastMessage(getCreatureName(arenaPlayers[1]) .." venceu o Last Man Standing Event.") 
				doPlayerAddItem(arenaPlayers[1], t.prize[math.random(#t.prize)], 10)
					if (t.expRewChamps > 0) then
						doPlayerAddExperience(arenaPlayers[1],t.expRewChamps)
						doSendMagicEffect(getPlayerPosition(arenaPlayers[1]), CONST_ME_MAGIC_RED)
						doSendAnimatedText(getPlayerPosition(arenaPlayers[1]), "Exp!", TEXTCOLOR_WHITE)
					end
				kick = 0 
		elseif #arenaPlayers > 1 then 
			if kick == 0 then 
				kick = os.time() 
			else 
				if os.time() - kick >= 840 then 
					kick = 0 
					for i = 1, #arenaPlayers do 
						doTeleportThing(arenaPlayers[i],t.semChamps)
						if (t.expRewPart > 0) then
							doPlayerAddExperience(arenaPlayers[1],t.expRewPart)
						end	
						doPlayerSendTextMessage(arenaPlayers[i], MESSAGE_STATUS_WARNING, "Muito tarde, tente de novo mais tarde.") 
					end 
				end 
			end 
		elseif #arenaPlayers == 0 then 
			kick = 0 

		local players = {} 
			for x = t.tmp[1].x, t.tmp[2].x do 
				for y = t.tmp[1].y, t.tmp[2].y do 
					for z = t.tmp[1].z, t.tmp[2].z do 
						local c = getTopCreature({x = x, y = y, z = z}) 
							if c.type == 1 then 
								table.insert(players, c.uid) 
							end 
					end 
				end 
			end 

			if #players >= t.minPlayers then 
				for i = 1, #players do 
					local p = {x = math.random(t.from.x, t.to.x), y = math.random(t.from.y, t.to.y), z = math.random(t.from.z, t.to.z)} 
					doTeleportThing(players[i], p) 
					doSendMagicEffect(p, CONST_ME_TELEPORT) 
					doPlayerSendTextMessage(players[i], MESSAGE_STATUS_WARNING, "A batalha começou. Sobrevivam para a glória!") 
				end 
			else 
				for i = 1, #players do 
					doTeleportThing(players[i],t.noPlayers) 
					doPlayerSendTextMessage(players[i], MESSAGE_STATUS_WARNING, "O evento não começou porque não haviam player suficientes!") 
				end 
			end 
		end 
	return true 
end


3º -Na sequência, crie um outro arquivo chamado 'lastman', salve-o com a extensão '.lua' e, dentro dele, coloque o seguinte:



local createpos = {x=273,y=1330,z=6} -- local onde, a cada 2 horas, o teleport irá aparecer
 local topos = {x=385,y=1345,z=7} -- Onde o teleport irá levar os players
 local msg = "O Last man standing Event Teleport acabou de fechar! Ele irá reaparecer de novo a cada 2 horas! Todos os participantes, preparem-se para a batalha!" 
 local timetoclose = 120 -- valor em segundos de quanto tempo o portal ficará aberto 

 local function remove() 
 local tp = getTileItemById(createpos,1387).uid 
 if tp ~= 0 then 
 doRemoveItem(tp) 
 doBroadcastMessage(msg) 
 end 
 end 

 function onThink(interval) 
 doCreateTeleport(1387, topos, createpos) 
 doBroadcastMessage("Last man standing event Teleport esta aberto!\nCatch o teleport vai fechar dentro de "..timetoclose.." segundos! O teleport esta localizado na sala de Eventos.") 
 addEvent(remove,timetoclose*1000) 
 return true 
 end

4º - Agora, vá ao arquivo 'data > globalevents > globalevents.xml', abra-o e procure por </globalevents>.

 

5º - Agora, antes deste texto adicione as seguintes linhas:



<globalevent name="LastMan" interval="36000" event="script" value="lms/lastman.lua"/> 
<globalevent name="arena" interval="36150" event="script" value="lms/arena.lua"/> 

Barra.png.06ae5a53fe8110033fa76049e8aac1

configuracoes.png.21129f98105c0c04476363

Pronto, feito isto vamos ver como configurar.

Spoiler

Dentro do 'script' que inseri dentro do 2º Passso havia algo mais ou menos assim:



local t = { 
 tmp = { 
 {x = 1111, y = 1111, z = 7},
 {x = 1111, y = 1111, z = 7}
 }, 
 arena = { 
 {x = 1111, y = 1111, z = 7},
 {x = 1111, y = 1111, z = 7},
 {x = 1111, y = 1111, z = 7} 
 }, 

 from = {x = 351, y = 1340, z = 6},
 to = {x = 366, y = 1350, z = 6},

 minPlayers = 2,
 noPlayers = 1,
 prize = {6527}
 }

Assim como você pode ver há estas duas linhas (as abaixo):



 {x = 382, y = 1343, z = 7},
 {x = 389, y = 1346, z = 7}

Esta será a área onde os 'players' deverão estar para poder ingressar no evento.

Isto significa que depois de entra no 'teleport' o jogador será teletransportado para uma 'sala de espera'.

Depois disto o 'teleport' será fechado e, na sequência, todos que estavam nesta sala de esperar serão levados para a 'arena'.


Depois da batalha o campeão vai tre que esperar no mínimo 30 segundos antes de receber o prêmio.

 

Barra.png.06ae5a53fe8110033fa76049e8aac1

Depois disto, preciso falar também destas 3 linhas:



{x = 349, y = 1338, z = 6},
 {x = 368, y = 1352, z = 6},
 {x = 358, y = 1345, z = 6}
 }, 

Aqui você irá selecionar as coordenadas corretas da Arena em que os 'players' irão lutar para, caso sobrevivam, ganhar o prêmio.

 

Barra.png.06ae5a53fe8110033fa76049e8aac1

E, por fim, dentro do arquivo 'lastman.lua' (criado no 3º passo) há as seguintes linhas:



local createpos = {x=273,y=1330,z=6} 
 local topos = {x=385,y=1345,z=7} 
 local msg = "O Last man standing Event Teleport acabou de fechar! Ele irá reaparecer de novo a cada 2 horas! Todos os participantes, preparem-se para a batalha!" 
 local timetoclose = 120

Aqui você poderá configurar

  • Na primeira linha: o local onde o 'Teleport' irá aparecer a cada 2 horas;
  • Na segunda Linha: o local para onde o portal irá levar o 'player';
  • Na Terceira Linha: a mensagem que irá aparecer no 'broadcast' avisando que o evento irá começar;
  • Na quarta linha: o tempo que o portal ficará disponível antes de desaparecer.

 

Ajudei de alguma Forma? REP+.

 

Edited: (25/01/2016 - 18h55min)

Funcional em:

  • TFS 0.3884 e 0.4 (Windows);
  • FS  0.3777 (Linux); 

Obrigado

Barra.png.06ae5a53fe8110033fa76049e8aac1

tfs10vers.png.737e2c03abfd0d4279c3b37eed

Spoiler

Esta é a versão que consegui para o TFS 1.0+

Barra.png.06ae5a53fe8110033fa76049e8aac1

Propriedades.png.1a83b4208cd00d40a4ad591

  • Spoiler

    • Este 'script' permite que você possa selecionar de 'quanto em quanto' tempo o evento será 'realizado';
    • É de simples instalação; Fornece premmiun points como recompensa (claro, pode ser editado o prêmio a ser fornecido);
    • Checa a cada 10 (dez) segundos o que aconteceu na 'arena'
      • Se houver somente 1 (um) 'player', este será o campeão do Evento;
    • A área para ficar aguardando o evento começar deve ser PZ (Peace Zone) e, também, 'anti-LogOut';
    • A área para luta deve ser PvP ('Player Versus Player') e, também, 'Anti-LogOut';

     

    • No mais, os arquivos podem ser configurados com um mínimo de noção de programação.

     

     

Barra.png.06ae5a53fe8110033fa76049e8aac1

Vamos lá:

passos.png.2af720c8fa5cd540ed87d24c6e9b8

Barra.png.06ae5a53fe8110033fa76049e8aac1

Spoiler

1º Passo -  Em primeiro lugar vá no arquivo 'data > globalevents > globalevents.xml' e adicione a seguinte linha (antes de </globalevents>).



<globalevent name="Last Man Standing" interval="300000" script="scripts/lms.lua"/>

2º Passo - Na sequência vá até o arquivo 'data > movements > movements.xml' e, antes de </movements> adicione as seguintes linhas:



<movevent event="StepIn" actionid="25001" script="scripts/lmsjoin.lua"/>
<movevent event="StepIn" actionid="25002" script="scripts/lmsleave.lua"/>

3º Passo - Ato contínuo, tendo em vista que como são vários arquivos, faça o 'download' dos arquivos a seguirdownload.png.561ffa2eb07c75db398712c2534

 

4º Passo - Este download é um arquivo '.zip'. Abra-o. Dentro haverá duas pastas. Uma nomeada por 'globalevents' e a outra por 'movements'.

 

5º - Passo - Pegue o arquivo chamado 'lms.lua', que está dentro da pasta 'globalevents' (do arquivo '.zip' que você acabou de fazer o 'download') e coloque dentro da pasta:



'data > globalevents > scripts'

6º Passo - Pegue os dois arquivos chamados 'lmsjoin.lua' e 'lmsleave.lua', que estão dentro da pasta 'movements' (do arquivo '.zip' que você acabou de fazer o 'download') e coloque dentro da pasta:



'data > movements > scripts'

7º Passo - Está pronto.

 

 

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

5YkRF3w.gif

 

 

 

 

 

 

CzysZUR.gifytaam6k.png

 

 

  • Respostas 38
  • Visualizações 8.1k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Muito Obrigado, @Azhaurn, espero poder contribuir com outros tópicos diferenciados. Obrigado pela atenção   @sirarcken, testei no TFS 0.3884 e 0.4 Windows. Meu amigo testou TFS .3777 em Lin

  • @Marek, não, ele não funcionava para o 1.2.   Por isto procurei pela 'net' e encontrei um muitíssimo elogiado e inseri ali.   Logo, acabei não o testando. Se você puder me fazer o

  • Opa, boa tarde.   Sim, tem como sim.   Agora estou no hospital, mas assim que chegar em casa já insiro.   Obrigado pelos elogios

Posted Images

Postado

51mutNo.png Parabéns, seu tópico de conteúdo foi aprovado!
 Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
 Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

 

Off;

Formatação e organização perfeitos, díficil ver tópico assim.

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

Postado

Boa ,o que eu tenho os players são teleportados de volta e não se atacam.

 

Funciona em qual tfs??

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

Postado
  • Autor

Muito Obrigado, @Azhaurn, espero poder contribuir com outros tópicos diferenciados. Obrigado pela atenção =D

 

@sirarcken, testei no TFS 0.3884 e 0.4 Windows. Meu amigo testou TFS .3777 em Linux e disse que funcionou também.

 

 

5YkRF3w.gif

 

 

 

 

 

 

CzysZUR.gifytaam6k.png

 

 

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.6k

Informação Importante

Confirmação de Termo