Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...
  • 0

Tour des démons


MeehmetYeeah

Question

  • Réponses 13
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans cette question

13 réponses à cette question

Messages recommandés

  • 0
  • Robot

Teste celle-ci

 

quest deviltower_zone begin
	state start begin
		when login begin
			if pc.get_map_index() == 66 then
				if pc.get_x() < 2048+88 or pc.get_y() < 6656+577 or pc.get_x() > 2048+236 or pc.get_y() > 6656+737 then
					pc.warp((5376+532)*100, (512+596+4)*100, 65)
				end

				pc.set_warp_location(65, 5376+532, 512+596+4)
				elseif pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
				pc.set_warp_location(65, 5376+532, 512+596+4)
			end
		end

	----------------------
	-- Garde de la tour --
	----------------------

		when deviltower_man.chat."Entrer dans la tour du démon" with pc.get_map_index() == 65 begin
			if pc.get_level() < 40 then
				---                                                   l
				say_title("Le garde de la tour du démon:")
				say("Il y a beaucoup de démons dans la tour, il vous")
				say("faut être courageux et fort. Malheuresement,")
				say("vous n'avez pas cette force...")
				say("Revenez me voir une fois le niveau 40 atteint.")
			else
				---                                                   l
				say_title("Le garde de la tour du démon:")
				say("Il y a beaucoup de démons dans la tour, il vous")
				say("faudra être courageux et fort. Aucune personne")
				say("ne survit dans la tour du démon.")
				say("Voulez-vous vraiment entrer ?")

				local s = select("Entrer", "Ne pas Entrer")

				if s == 1 then
					pc.warp(216500,727000)
				end
			end
		end

	------------------------------------
	-- Tour du démon : Rez-de-chaussé --
	------------------------------------

		when devil_stone1.kill begin
			timer("devil_stone1_1", 6)
		end

	-----------------------------
	-- Tour du démon : Étage 1 --
	-----------------------------

		when devil_stone1_1.timer begin

			local mapto7= pc.count_item(30302)
			pc.remove_item(30302,mapto7)

			local boxto7= pc.count_item(30300)
			pc.remove_item(30300,boxto7)

			d.new_jump_all(66, special.devil_tower[1][1], special.devil_tower[1][2])
			d.regen_file("data/dungeon/deviltower2_regen.txt")
			d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[2][1], special.devil_tower[2][2], "data/dungeon/deviltower3_regen.txt")
		end

	-----------------------------
	-- Tour du démon : Étage 2 --
	-----------------------------

		when devil_stone3.kill begin
			d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[3][1], special.devil_tower[3][2], "data/dungeon/deviltower4_regen.txt")
			d.check_eliminated()
		end

	-----------------------------
	-- Tour du démon : Étage 3 --
	-----------------------------

		function get_4floor_stone_pos()
			local positions = {
				{368, 629},
				{419, 630},
				{428, 653},
				{422, 679},
				{395, 689},
				{369, 679},
				{361, 658},
			}

			for i = 1, 6 do

				local j = number(i, 7)

				if i != j then
					local t = positions[i];
					positions[i] = positions[j];
					positions[j] = t;
				end
			end
			return positions
		end

		when 8016.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
			d.setf("level", 4)

			local positions = deviltower_zone.get_4floor_stone_pos()

			for i = 1, 6 do
				chat(positions[i][1], positions[i][2])
				d.set_unique("fake" .. i , d.spawn_mob(8017, positions[i][1], positions[i][2]))
			end

			chat(positions[7][1], positions[7][2])
			local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])
			chat(vid)
			d.set_unique("real", vid)

			server_loop_timer('devil_stone4_update', 10, pc.get_map_index())
			server_timer('devil_stone4_fail1', 5*60, pc.get_map_index())

			d.notice("Vous êtes devant la porte du choix au troisième");
			d.notice("étage. Beaucoup de fausses pierres Metin trompent");
			d.notice("vos sens. Trouvez la bonne pierre Metin et");
			d.notice("détruisez-la dans les 15 minutes qui suivent.");
			d.notice("C'est le seul moyen de franchir cette porte.");
		end

		when devil_stone4_fail1.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.notice("Il reste 10 minutes.")
				server_timer('devil_stone4_fail2', 5*60, get_server_timer_arg())
			end
		end

		when devil_stone4_fail2.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.notice("Il reste 5 minutes.")
				server_timer('devil_stone4_fail', 5*60, get_server_timer_arg())
			end
		end

		when devil_stone4_fail.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.notice("Temps écoulé!")
				d.exit_all()
				clear_server_timer('devil_stone4_update', get_server_timer_arg())
			end
		end

		when devil_stone4_update.server_timer begin
			if d.select(get_server_timer_arg()) then
				if not d.is_unique_dead("real") then

					for i = 1, 6 do

						if d.getf("fakedead" .. i) == 0 then
							if d.unique_get_hp_perc("fake" .. i) < 50 then
								d.purge_unique("fake" .. i)
								d.setf("fakedead" .. i, 1)
								d.notice("Les fausses pierres metin disparaissent.");
							end
						end
					end
				else
					server_timer("devil_stone4_end", 5, get_server_timer_arg())

					d.notice("Vous avez fait la preuve de la finesse de votre")
					d.notice("ouie et de la sûreté de votre instinct. Vous avez")
					d.notice("détruit la vraie pierre Metin! Vous allez")
					d.notice("maintenant atteindre le 4ème étage.")

					clear_server_timer('devil_stone4_fail1', get_server_timer_arg())
					clear_server_timer('devil_stone4_fail2', get_server_timer_arg())
					clear_server_timer('devil_stone4_fail', get_server_timer_arg())
				end
			else
				server_timer('devil_stone4_stop_timer', 1, get_server_timer_arg())
			end
		end

		when devil_stone4_stop_timer.server_timer begin
			clear_server_timer('devil_stone4_update', get_server_timer_arg())
		end

	-----------------------------
	-- Tour du démon : Étage 4 --
	-----------------------------

		when devil_stone4_end.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.setf("level", 5)
				d.setf("stone_count", 5)
				d.notice("Vous êtes à la porte scellée du quatrième étage.") 
				d.notice("Vous devez ouvrir les 5 sceaux anciens pour") 
				d.notice("accéder à l'étage supérieur. L'endroit est") 
				d.notice("rempli de monstres prêts à vous sauter dessus.")
				d.notice("Certains d'entre eux ont une pierre d'ouverture")
				d.notice("sur eux. Récupérez suffisamment de pierres")
				d.notice("d'ouvertures afin d'ouvrir les 5 sceaux anciens")
				d.notice("et ainsi d'accéder au 5ème étage. Attention : ")
				d.notice("vous n'avez que 20 minutes ! ")
				d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])

				server_timer('devil_stone5_fail1', 5*60, get_server_timer_arg())
				clear_server_timer('devil_stone4_update', get_server_timer_arg())

				d.set_regen_file("data/dungeon/deviltower5_regen.txt")
				d.spawn_mob(20073, 421, 452)
				d.spawn_mob(20073, 380, 460)
				d.spawn_mob(20073, 428, 414)
				d.spawn_mob(20073, 398, 392)
				d.spawn_mob(20073, 359, 426)
			end
		end

		when devil_stone5_fail1.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.notice("Il reste 15 minutes.")
				server_timer('devil_stone5_fail2', 5*60, get_server_timer_arg())
			end
		end

		when devil_stone5_fail2.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.notice("Il reste 10 minutes.")
				server_timer('devil_stone5_fail3', 5*60, get_server_timer_arg())
			end
		end

		when devil_stone5_fail3.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.notice("Il reste 5 minutes.")
				server_timer('devil_stone5_fail', 5*60, get_server_timer_arg())
			end
		end

		when devil_stone5_fail.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.notice("Temps écoulé!")
				d.exit_all()
			end
		end

		when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin

			local KILL_COUNT_FOR_DROP_KEY = 50
			local n =d.getf("count") + 1

			d.setf("count", n)
			if n == KILL_COUNT_FOR_DROP_KEY then
				game.drop_item(50084, 1)
				d.setf("count", 0)
			end
		end

		when devil_stone5.take with item.vnum == 50084 begin
			npc.purge()
			item.remove()
			d.setf("stone_count", d.getf("stone_count") - 1)

			if d.getf("stone_count") <= 0 then
				d.setf("level", 6)
				d.clear_regen()
				d.regen_file("data/dungeon/deviltower6_regen.txt")
				d.notice("Vous avez réussi à desceller la pierre. Rendez")
				d.notice("vous maintenant au cinquième étage, l'étage du") 
				d.notice("roi des démons et tuez tous les monstres qui s'y")
				d.notice("trouvent.")
				d.jump_all(special.devil_tower[5][1], special.devil_tower[5][2])

				clear_server_timer('devil_stone5_fail1', get_server_timer_arg())
				clear_server_timer('devil_stone5_fail2', get_server_timer_arg())
				clear_server_timer('devil_stone5_fail3', get_server_timer_arg())
				clear_server_timer('devil_stone5_fail', get_server_timer_arg())
			else
				d.notice("Vous avez descellé la pierre ! Il en reste "..d.getf("stone_count").." .")
			end
		end
	-----------------------------
	-- Tour du démon : Étage 5 --
	-----------------------------

		when devil_stone6.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
			d.kill_all()
			d.check_eliminated()
			d.notice("Vous avez tué tous les monstres. En récompense")
			d.notice("vous obtenez une amélioration d'un de vos objets")
			d.notice("par le forgeron. Faites glisser l'objet que vous")
			d.notice("souhaitez améliorer sur le forgeron.")
			local reward_alchemist = {20074, 20075, 20076}
			d.spawn_mob(reward_alchemist[number(1,3)], 425, 216);
			d.setqf("can_refine", 1)
		end

		when 20074.chat."Les étages supérieurs." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
			---                                                   l
			say_title(""..mob_name(20074)..":")
			say("Vous voulez entrer au 6eme étage de la Tour? Il")
			say("faut de grandes compétences et beaucoup")
			say("d'intelligence pour survivre à cet étage. Quand")
			say("vous serez au niveau 75 je pourrai vous y")
			say("téléporter.")
			wait()

			if pc.level >=75 then
				---                                                   l
				say_title(""..mob_name(20074)..":")
				say("Tu à l'air bien expérimenté, donc je peu")
				say("te téléporter aux étages supérieurs.")
				say("Bonne chance.")
				timer("devil_jump_7", 6)
				return
			end

			---                                                   l
			say_title(""..mob_name(20074)..":")
			say("Votre niveaux n'est pas assez élevé. Je ne peux")
			say("pas vous autoriser à pénétrer dans les étages")
			say("supérieurs. Revenez quand vous serez plus")
			say("expérimenté. Vous devez être au moins au niveau")
			say("75.")
			wait()
			pc.warp(590500, 110500)
			return
		end

		when 20075.chat."Les étages supérieurs." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
			---                                                   l
			say_title(""..mob_name(20075)..":")
			say("Vous voulez entrer au 6eme étage de la Tour? Il")
			say("faut de grandes compétences et beaucoup")
			say("d'intelligence pour survivre à cet étage. Quand")
			say("vous serez au niveau 75 je pourrai vous y")
			say("téléporter.")
			wait()

			if pc.level >=75 then
				---                                                   l
				say_title(""..mob_name(20075)..":")
				say("Tu à l'air bien expérimenté, donc je peu")
				say("te téléporter aux étages supérieurs.")
				say("Bonne chance.")
				timer("devil_jump_7", 6)
				return
			end

			---                                                   l
			say_title(""..mob_name(20075)..":")
			say("Votre niveaux n'est pas assez élevé. Je ne peux")
			say("pas vous autoriser à pénétrer dans les étages")
			say("supérieurs. Revenez quand vous serez plus")
			say("expérimenté. Vous devez être au moins au niveau")
			say("75.")
			wait()
			pc.warp(590500, 110500)
			return
		end

		when 20076.chat."Les étages supérieurs." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
			---                                                   l
			say_title(""..mob_name(20076)..":")
			say("Vous voulez entrer au 6eme étage de la Tour? Il")
			say("faut de grandes compétences et beaucoup")
			say("d'intelligence pour survivre à cet étage. Quand")
			say("vous serez au niveau 75 je pourrai vous y")
			say("téléporter.")
			wait()

			if pc.level >=75 then
				---                                                   l
				say_title(""..mob_name(20076)..":")
				say("Tu à l'air bien expérimenté, donc je peu")
				say("te téléporter aux étages supérieurs.")
				say("Bonne chance.")
				timer("devil_jump_7", 6)
				return
			end

			---                                                   l
			say_title(""..mob_name(20076)..":")
			say("Votre niveaux n'est pas assez élevé. Je ne peux")
			say("pas vous autoriser à pénétrer dans les étages")
			say("supérieurs. Revenez quand vous serez plus")
			say("expérimenté. Vous devez être au moins au niveau")
			say("75.")
			wait()
			pc.warp(590500, 110500)
			return
		end

	-----------------------------
	-- Tour du démon : Étage 6 --
	-----------------------------

		when devil_jump_7.timer begin
			d.clear_regen()
			d.spawn_mob(8018, 639, 658)
			d.spawn_mob(8018, 611, 637)
			d.spawn_mob(8018, 596, 674)
			d.spawn_mob(8018, 629, 670)
			d.setf("level", 7)
			d.jump_all(2048+590, 6656+638)
		end
	
		when 8018.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin

			local cont = d.getf("7_stone_kill") + 1

			d.setf("7_stone_kill", cont)

			if cont >= 4 then
				d.setf("7_stone_kill", 0)
				d.set_regen_file("data/dungeon/deviltower7_regen.txt")
			end	
		end

		when 8019.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
			game.drop_item(30300, 1)	-- Vieux coffre inconnu
		end

		when 30300.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
			pc.remove_item("30300", 1)

			local pct = number(1,10)

			if pct == 1 then
				game.drop_item(30302, 1)	-- Plan tour Zin-Sa-Gui (Vrai)
				d.clear_regen()
			else
				game.drop_item(30301, 1)	-- Plan tour de Sa-Gui (Faux)
			end
		end

		when 30302.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
			---                                                   l
			say("Vous avez trouvé le vrai Plan Zin-Sa-Gui.")
			pc.remove_item("30302", 1)
			timer("devil_jump_8", 6)
			d.clear_regen()
		end

	-----------------------------
	-- Tour du démon : Étage 7 --
	-----------------------------

		when devil_jump_8.timer begin
			d.setf("level", 8)
			d.jump_all(2048+590, 6656+403)
			d.set_regen_file("data/dungeon/deviltower8_regen.txt")
			d.spawn_mob(20366, 640, 460)

			d.notice("Trouvez la bonne clé. Il vous faut la Clé de")
			d.notice("Zin-Bong pour ouvrir le sceau de Sa-Soe et")
			d.notice("atteindre l'étage suivant.")

			local _count= pc.count_item(30302)
			pc.remove_item(30302,_count)
		end

		when 1040.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin

			local pct1 = number(1, 5)

			if pct1 == 1 then

				local pct2 = number(1, 10)

				if pct2 == 1 then
					game.drop_item(30304, 1)	-- Clé de Zin-Bong (Vrai)
				else
					game.drop_item(30303, 1)	-- Clé de Bong-In (Faux)
				end
			else
				return
			end
		end

		when 20366.take with item.vnum == 30304 begin
			npc.purge()
			item.remove()
			timer("devil_jump_9", 6)
		end

	-----------------------------
	-- Tour du démon : Étage 8 --
	-----------------------------

		when devil_jump_9.timer begin
			d.setf("level", 9)
			d.jump_all(2048+590, 6656+155)
			d.regen_file("data/dungeon/deviltower9_regen.txt")
			d.notice("Vous voilà au dernière étage de la tour démoniaque.")
			d.notice("Tuez tout les démons, et ensuite la Faucheuse !")
		end

		when 1093.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
			d.notice("Vous avez réussi la quête. Vous allez être");
			d.notice("téléporté à l'extérieur dans quelques minutes.");
			d.notice("Je t'attendrai dans les Catacombes du Diable !");
			d.notice("Suis-moi et ma colère s'abattra sur toi telle un");
			d.notice("raz-de-marée !");
			d.kill_all()
			timer("devil_end_jump", 60)
		end

		when devil_end_jump.timer begin
			d.exit_all()
		end
	end
end

 

french_banner.gif

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Merci pour ta quête ça fonctionne ! 

Mais arriver aux sceaux aucune pierre d'ouvertures se drop.. Normal ?

EDIT : Les bugs que j'ai sont : Pas de pierre d'ouverture qui se drop
Je n'arrive pas a up des items HL ( les dernière armures du FR par exemple ) 
 

Modifié par MeehmetYeeah
Lien vers le commentaire
Partager sur d’autres sites

  • 0
when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin

			local KILL_COUNT_FOR_DROP_KEY = 50
			local n =d.getf("count") + 1

			d.setf("count", n)
			if n == KILL_COUNT_FOR_DROP_KEY then
				game.drop_item(50084, 1)
				d.setf("count", 0)
			end
		end

Salut, si je comprends bien ce bout de code, pour drop une pierre d'ouverture tu dois tuer 50 monstres avec l'id 1062.  As-tu tue 50 monstres avec l'id 1062, ou tu t'es arrete avant? Essaye de check il s'agit de quel monstres, d'essayer de 'compter' 50 morts de ces monstres... Et voir si tu drops ou pas une pierre.

Lien vers le commentaire
Partager sur d’autres sites

Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.


  • brilliantdiscord_widget
  • Flux d'Activité

    1. 37
    2. 21

      Metin2 en 2020 peut-on en parler?

    3. 0

      METIN2Project

    4. 3

      Ressources - UnPack - Metin2 Client - Officiel

    5. 0

      Barre des tâches d'argent étendue

    6. 16

      Redémarrage automatique des channels

    7. 16

      Multi Logo GM / SGM / GA

  • En ligne récemment

    • Aucun utilisateur enregistré regarde cette page.

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.