Jump to content

[Procuro] Pessoa para criar quest (PAGO)


Nukayool
 Share

Recommended Posts

Boas Malta,

 

Procuro alguém que me consiga criar uma quest tipo torre.

Pois tenho um mapa que têm várias salas e eu queria por a malta a fazer aquilo tipo a torre,

1 - Matar uma metin  e sobem mas neste caso o grupo para uma lobby privada tipo nemere e isso

2 - Depois derrotar monstros

3 - Depois dropar algo e arrastar para os selos

5 - Depois derrotar monstros (pode ser a sala do 2 de novo)

4- Sala do boss

 

Isto foi uma ideia, até aceito mais ideias para a quest, dai procurar alguem e pago pelo mesmo isso não há problema

Deixo aqui print do mapa para verem

mTkwcab.jpg

 

Edited by pontofinal
Link to comment
Share on other sites

Não precisas de pagar para tal coisa e rejeito qualquer tipo de recompensa por algo como isso.  Tirei 30 minutos do meu tempo para analisar o que querias e fiz exatamente da forma como pedes.

 

--[[
	De: Mário
	Para: IPontoFinal
	
	Descrição: Dungeon com 4 pisos, lobby privada, derrotar monstros, dropar e arrastar selos, derrotar monstros (2 piso de novo), sala do boss
]]
quest ipontofinal begin
	state start begin
		function settings() -- São as definições para a dungeon
			local ipontofinal_settings = {}
				ipontofinal_settings.map_index = 1 -- Número que está situado no MAP_INDEX
				ipontofinal_settings.coordenadas = {10,10} -- Coordenadas do mapa
				ipontofinal_settings.coordenadas1 = {20,20} -- Coordenadas do primeiro piso
				ipontofinal_settings.coordenadas2 = {30,30} -- Coordenadas do segundo piso
				ipontofinal_settings.coordenadas3 = {40,40} -- Coordenadas do terceiro piso
				ipontofinal_settings.coordenadas4 = {50,50} -- Coordenadas do piso final
				ipontofinal_settings.temporizador = 5 -- Tempo para o teleporte entre dois pisos
				ipontofinal_settings.conclusao = 60 -- Tempo que terão disponível dentro do mapa depois de completarem a dungeon
			return ipontofinal_settings
		end
		
		function apagar() -- Dá clear em todos os registros
			local mapa = d.get_map_index()
			
			clear_server_timer("piso_final4", mapa)
			clear_server_timer("piso_3", mapa)
			clear_server_timer("piso_2", mapa)
			clear_server_timer("falhou", mapa)
			clear_server_timer("ipontofinal", mapa)
			d.setf("piso",0)
			d.setf("piso_final",0)
			pc.setqf("ipontofinal",0)
		end
			
		
		when login begin
			-- Se desligarem o cliente com a personagem dentro do mapa mesmo quando o tempo ainda não tenha passado/com o tempo passado, serão teleportados para a cidade.
			if pc.get_map_index() == 1 and pc.getqf("ipontofinal") == 0 then -- Mudar o número do index pelo da dungeon
				warp_to_village()
			end
		end
		
		when falhou.timer begin -- Condição em caso de falharem
			if d.select(get_server_timer_arg()) then
				notice_multiline("Infelizmente o tempo já passou e não conseguiram concluir a dungeon.[ENTER]Fica para à próxima",d.notice)
				d.exit_all()
				pc.setqf("ipontofinal",0)
			end
		end
		
		when 9010.chat."Dungeon IPontoFinal" begin
			say_title("IPontoFinal:")
			say()
			say("Sentes-te preparado para enfrentares[ENTER]",
			"A melhor dungeon de sempre?")
			
			if select("Sim","Não") == 1 then
				-- Em caso de quereres que a dungeon seja só feita com grupo
				if not party.is_leader() then
					say_title("IPontoFinal:")
					say()
					say("Apesar de admirar a tua coragem,[ENTER]",
					"não poderás fazer a dungeon sem um grupo.")
					return
				end
				
				-- Em caso de quereres que a dungeon seja feita somente com um guerreiro disponível
				local personagem = pc.get_job()
				
				if personagem == 0 or personagem == 4 then -- Guerreiro Masculino/Feminino
					guerreiros = true
				end

				if guerreiro == false then
					say_title("IPontoFinal:")
					say()
					say("Não podes fazer a dungeon sem um guerreiro.")
					say("")
					return false
				end

				timer("ipontofinal",2) -- É ativado um timer.
				pc.setqf("ipontofinal",1)
			end
		end
		
		when ipontofinal.timer begin
			local settings = ipontofinal.settings()
			local mapa = settings.coordenadas
			local piso = settings.coordenadas1
			d.new_jump_party(settings.map_index,(mapa[1] + piso[1]), (mapa[2] + piso[2]))
			d.regen_file("data/dungeon/ipontofinal/primeiro_piso.txt") -- Diretório da dungeon
			d.notice("Tens que matar a pedra de forma a subires para o próximo piso.[ENTER]Tens uma hora para completares a dungeon.")
			d.setf("piso",1)
			server_timer('falhou', 10*60, get_server_timer_arg())
			chat("Estás no primeiro piso.")
		end
	
		when 2000.kill with d.getf("piso") == 1 begin -- ID da pedra a ser eliminada
			if pc.get_map_index() == 1 then -- Mudar o número do index do mapa pela da dungeon
				local settings = ipontofinal.settings()
				local tempo = settings.temporizador
			
				notice_multiline("Parabéns, a pedra foi eliminada com sucesso.[ENTER]Vais ser teleportado para o próximo piso", d.notice)
				d.set_regen_file("data/dungeon/ipontofinal/segundo_piso.txt")
				d.setf("piso",2)
				server_timer("piso_2",tempo,d.get_map_index())
			end
		end
		
		when piso_2.timer begin
			local settings = ipontofinal.settings()
			local mapa = settings.coordenadas
			local piso = settings.coordenadas2
			local monstros = d.count_monster()
			local tempo = settings.temporizador
			
			d.jump_all((mapa[1] + piso[1]), (mapa[2] + piso[2]))
			notice_multiline("Precisas de derrotar todos os monstros para seres teleportado para o próximo piso.[ENTER]Boa sorte", d.notice)
			chat("Estás no segundo piso.")
			
			if monstros <= 0 and d.getf("piso") == 2 then 
				d.notice("Parabéns, todos os monstros foram eliminados com sucesso.[ENTER]Vais ser teleportado para o próximo piso.")
				d.setf("piso",3)
				d.clear_regen()
                d.kill_all()
				d.set_regen_file("data/dungeon/ipontofinal/terceiro_piso.txt")
				server_timer("piso_3",tempo,d.get_map_index())
			end
		end
		
		when piso_3.timer begin
			local settings = ipontofinal.settings()
			local mapa = settings.coordenadas
			local piso = settings.coordenadas3
			local monstros = d.count_monster()
			local tempo = settings.temporizador
			
			d.jump_all((mapa[1] + piso[1]), (mapa[2] + piso[2]))
			d.notice("Terás que dropar a chave para dares nos selos.")
			chat("Estás no terceiro piso.")
		end
		
		when 10.kill with d.getf("piso") == 3 begin -- ID do monstro que irá dropar 
			local contagem = d.getf("chaves")+1
			d.setf("chaves", contagem) 
			
			if contagem == 10 then
				game.drop_item(10, 1) -- ID da chave
				d.setf("chaves", 0)
			end
		end
		
		when 9010.take with item.vnum == 10 begin -- ID do NPC a pedir o selo
			npc.purge()
			item.remove()
			d.setf("contagem", d.getf("contagem")-1)
			
			if d.getf("contagem") <= 0 then
				local settings = ipontofinal.settings()
				local mapa = settings.coordenadas
				local piso = settings.coordenadas2
				local tempo = settings.temporizador
			
				d.setf("piso",4) -- Na verdade voltam para o piso 2 na mesma
				d.clear_regen()
				d.set_regen_file("data/dungeon/ipontofinal/segundo_piso.txt")
				d.notice("Parabéns, todos os selos foram eliminados. Serás teleportado para o próximo piso.")
				server_timer("piso_4",tempo,d.get_map_index())
			end
		end
		
		when piso_4.timer begin
			local settings = ipontofinal.settings()
			local mapa = settings.coordenadas
			local piso = settings.coordenadas2
			local monstros = d.count_monster()
			local tempo = settings.temporizador
			
			d.jump_all((mapa[1] + piso[1]), (mapa[2] + piso[2]))
			notice_multiline("Precisas de derrotar todos os monstros para seres teleportado para o próximo piso.[ENTER]Boa sorte", d.notice)
			chat("Estás no quarto piso.")
			
			if monstros <= 0 and d.getf("piso") == 2 then 
				d.notice("Parabéns, todos os monstros foram eliminados com sucesso.[ENTER]Vais ser teleportado para o piso final.")
				d.setf("piso_final",1)
				d.clear_regen()
				d.kill_all()
				d.set_regen_file("data/dungeon/ipontofinal/piso_final.txt")
				server_timer("piso_final",tempo,d.get_map_index())
			end
		end
		
		when piso_final4.timer begin
			local settings = ipontofinal.settings()
			local mapa = settings.coordenadas
			local piso = settings.coordenadas4
			local tempo = settings.temporizador
			
			d.jump_all((mapa[1] + piso[1]), (mapa[2] + piso[2]))
			notice_multiline("Chegaste ao último piso.[ENTER]Foca-te apenas no boss e vencerás a dungeon.", d.notice)
			chat("Estás no último piso.")
		end
		
		when 100.kill with d.getf("piso_final") == 1 begin -- ID do boss			
			local probabilidade = math.random(1, 100) -- Probabilidade de sair itens de 1 a 100
			local settings = ipontofinal.settings()
			local tempo = settings.conclusao
			
			if probabilidade >= 10 then -- Se for inferior a 10
				game.drop_item_with_ownership(279, 1) -- ID e quantidade
			elseif probabilidade <= 10 then -- Se for superior a 10
				game.drop_item_with_ownership(289, 1)
			end
			
			d.notice("Parabéns, completaste a dungeon.[ENTER]Dentro de 60 segundos, serão teleportados para a cidade.")
			d.clear_regen()
			ipontofinal.apagar()
			server_timer("conclusao",tempo,d.get_map_index())
			d.kill_all() -- Podes remover isto se quiseres que os monstros continuem lá mesmo depois de terem matado o boss
			notice_all("O grupo do "..pc.get_name().." matou o boss da nova dungeon!")
		end
		
		when conclusao.timer begin
			warp_to_village()
		end
	end
end

 

OBS: Não testei nem poderei dar prioridade visto que tenho outros trabalhos. Se alguma coisa estiver incorreto ou não estiver a funcionar, diz-me. Desculpa não ter deixado a quest mais esclarecedora do que aquilo que costumo fazer, mas penso que todos os passos são compreensíveis.

 

 

Edited by Mário.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...