Jump to content
×
×
  • Create New...
  • 0

Problème avec les gorge du purgatoire.


PaJa41
 Share

Question

[Message d'introduction]

 

Version des files : 2012

Domaine (Base de données, Core, etc.) :

Votre niveau (débutant, intermédiaire, avancé) : intermédiaire

 

Description du problème : Problème varier

Comment reproduire le problème :

Recherches et tests effectué : modification de quete, de base position ect.

Résultat des recherches et tests : aucun.

 

Message d'erreur, capture d'écran :

 

En postant ma demande d'aide, j'affirme avoir lu et accepté le règlement des demandes d'aides.

 

J'ai un probleme de quêtes du purgatoire. Le "tp" me téléporte en hors map. Les pilliers ne sont pas pop, et quand j'en pop un manuellement, la pierre d'ouverture ne fonctionne pas. Les mob ne drop pas la pierre d'ouverture. Et je peux cliquer directement sur le pnj 20085 qui me dis qu'une nouvelle zone est accessible sans m'y téléporter. Voici la quete que j'utilise :

quest blazingpurgatory begin 
   state start begin 
       when 20394.chat."Les Gorges du Pugatoire" begin --- Changer lID du PNJ soit le garde du purgatoire qui se trouve map flame
           say_title("Gardien du Purgatoire: ") 
           say("Le Dieu de tous les démons, Razador, s'est") 
           say("réveillé, la fin de l'humanité est proche!") 
           say("Lutte, vaillant guerrier, avec l'aide de ton") 
           say("groupe pour sauver le monde de la") 
           say("destruction de ce nouveau mal !") 
           say("") 
           say("") 
           say("") 
           wait() 
           say_title("Gardien du Purgatoire: ") 
           say("Pour accéder au Purgatoire vous devez") 
           say("il doit y avoir au moins un level 185 dans le") 
           say("groupe et que le chef demande à rejoindre les") 
           say("Gorges en ayant les") 
		say_reward("Larmes de Baljit-Elvedin dans son inventaire.") --- Changer lID de litem pour rentrer dans les gorges 
		say("")
		say(" Êtes vous prêt à tenter votre chance ?")
           say("") 
           say("") 
           wait() 
           say_title("Gardien du Purgatoire: ") 
		if pc.get_level() < 100 then 
			say("Désolé, le chef du groupe n'est pas lvl 185.")
			party.chat("Le chef du groupe doit être lvl 185.")
			return
		end -- if
		if not party.is_party() then 
			say("Vous devez être dans un groupe pour rejoindre")
			say("les Gorges du Purgatoire.")
			return
		end
		if not party.is_leader() then
			say("Amenez moi le chef de votre groupe...")
			say("je vais lui transmettre ce que je sais.")
			return
		end
		if pc.count_item(30189) == 0 then
			say_reward("Il vous faut des larmes pour entrer") --- à modifier
		else
			say("Parfait, vous avez toutes les qualitées pour")
			say("entrer, voulez vous essayer de vaincre Razador ?")
			local x = select("Oui !", "Non")
			if x == 2 then 
				return
			elseif x == 1 then
				notice_all("Le groupe de "..pc.name.." s'est engagé dans la bataille contre Razador !")
				pc.remove_item(30189,1)
				d.join(235) --- ID purgatoires: 235
			end
		end
       end 

       when login with pc.get_map_index() >= 2350000 and pc.get_map_index() < 2355000 begin --- ID du purgatoire 235 
           say("Vous avez acceptez d'entrez dans l'antre de Razador") 
           say("Que le combat commence !") 
           say("") 
		d.setf("temps", get_time()) --- Nécessaire pour avoir le temps de combat

           if party.is_party() then 
               if party.is_leader() then 
                   blazingpurgatory.start() 
               end 
           else 
               if pc.is_gm() then 
                   blazingpurgatory.start() 
               end 
           end 
       end 

       function start() 
           d.regen_file("data/dungeon/purgatory/npc.txt") 
           d.setf("purgatory_gate_sequence",number(1,7)) 
           local sequence = {{1,2,3,4,5,6},{4,1,3,2,5,6},{2,5,3,1,4,6},{3,1,6,2,4,5},{5,3,2,4,6,1},{6,1,5,2,4,3},{6,3,5,3,1,4}}  --- charge aléaoirement une de ces séquences, les étapes sont donc aléatoires
           for i = 1, 6 do 
               d.regen_file("data/dungeon/purgatory/blazingpurgatory_gate_"..sequence[d.getf("purgatory_gate_sequence")][i]..".txt") --- charge la regen correspondant à l'étape où on est
           end 
           d.setf("acutal_round",0) 
           d.setf("time", get_time()+60*60*1) 
           server_timer("purgatorytime",3600,pc.get_map_index()) 
           server_loop_timer("purgatorytimenotice",300,pc.get_map_index()) 
           blazingpurgatory.NoticeTime() 
       end             

       when purgatorytimenotice.server_timer begin 
           if d.select(get_server_timer_arg()) then 
               blazingpurgatory.NoticeTime() 
           end 
       end 

       when purgatorytime.server_timer begin 
           if d.select(get_server_timer_arg()) then 
               d.notice("Le temps est écoulé ! ") 
               d.exit_all() 
           end 
       end 

       when 20385.click with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 and d.getf("block_altar") == 0 begin 
           if d.getf("purgatory_level") == 7 then 
               d.setf("block_altar",1) 
               d.setf("actual_round",7) 
               d.notice("Vous pensiez que c'était fini ?!") 
			d.notice("NON !")
               d.notice("Vous allez maintenant rejoindre Razador.") --- boss
               timer("warp_to_boss",5) 
           else 

               d.setf("purgatory_level",d.getf("purgatory_level")+1) 
               blazingpurgatory.purge() 
               blazingpurgatory.LoadStage() 
               d.setf("block_altar",1) 

               blazingpurgatory.NoticeTime() 
               d.notice("Une nouvelle zone s'est maintenant ouverte !") 
           end 
       end 

       when warp_to_boss.timer begin 
           d.jump_all(8111,6864)
           d.notice("Razador: ") 
           d.notice("Inutile de me résister, vous allez tous mourir !!") 
           d.set_regen_file("data/dungeon/purgatory/boss.txt") 
           blazingpurgatory.NoticeTime() 
       end     

       when 6091.kill with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 begin --- ID map
		temps = get_time() - d.getf("temps")
		sec = math.mod(temps, 60)
		min = (temps-sec)/60
		notice_all("Le groupe de "..pc.name.." a terrassé Razador en "..min.." minutes et "..sec.." secondes !")
		d.notice("Vous serez téléporté sur les terres de feu dans 1 minute !")
		timer("purgatoires_fin", 60) 
	end

	when purgatoires_fin.timer begin
		d.exit_all()
	end

       when kill with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 begin 
           if d.getf("actual_round") == 1 or d.getf("actual_round") == 3 then 
               d.setf("kill_count_bp1",d.getf("kill_count_bp1") +1) 
               if d.getf("kill_count_bp1") == d.getf("bp_kill_to_next") then 
                   d.notice("Retournez au près des Gorges d'Am-Heh au centre de la map!") 
                   blazingpurgatory.purge() 
               end 
           elseif d.getf("actual_round") == 2 or d.getf("actual_round") == 5 then 
               d.setf("kill_count_bp",d.getf("kill_count_bp") +1) 
               if d.getf("kill_count_bp") == d.getf("kill_to_drop_key") then 
                   game.drop_item_with_ownership(50084,1) 
                   d.setf("kill_count_bp",0) 
               end 
           elseif d.getf("actual_round") == 4 and npc.get_race() == 6009 then 
               if number(1,5) == 1 then 
                   d.notice("Retournez au près des Gorges d'Am-Heh au centre de la map!") 
                   blazingpurgatory.purge() 
               end 
           elseif d.getf("actual_round") == 6 and npc.get_race() == 8049 then 
               d.notice("Retournez au près des Gorges d'Am-Heh au centre de la map!") 
               blazingpurgatory.purge()     
           elseif d.getf("actual_round") == 7 and npc.get_race() == 6091 then 
               d.notice("Vous avez tué Razador !") 
               d.clear_regen() 
               d.kill_all() 
           end 
       end 

       when 20081.take with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 begin --- on pose l'item 50084 sur un pillier (clé dropée précédemment)
           if item.get_vnum() == 50084 then 
               if d.getf("actual_round") == 2 then 
                   pc.remove_item(item.get_vnum(),1) 
                   if number(1,8) == 1 then 
                       npc.purge() 
                       d.notice("Retournez au près des Gorges d'Am-Heh au centre de la map!") 
                       blazingpurgatory.purge() 
                   else 
                       syschat("Cette pierre d'ouverture est endommagée!") 
					syschat("Trouvez en une autre !")
                   end 
               elseif d.getf("actual_round") == 5 then 
                   local sequence = {{1,2,3,4,5,5},{4,3,2,1,5,5},{4,5,3,1,2,2},{5,3,4,2,1,1},{5,1,3,4,2,2}} 
                   if blazingpurgatory.GetPillarID() == sequence[d.getf("sequence")][d.getf("pillarcount")] then 
                       pc.remove_item(item.get_vnum(),1) 
                       npc.purge() 
                       d.setf("pillarcount", d.getf("pillarcount")+1) 
                       if d.getf("pillarcount") == 6 then 
                           d.notice("Retournez au près des Gorges d'Am-Heh au centre de la map!") 
                           blazingpurgatory.purge() 
                       else 
                           d.notice("Continuez comme ça, il reste "..6-d.getf("pillarcount").." pilliers à ouvrir !") 
                       end 
                   elseif blazingpurgatory.GetPillarID() == false then 
                       syschat("Rapprochez vous du pillier !") --- Pas sûr de cette traduction
                   elseif blazingpurgatory.GetPillarID() != sequence[d.getf("sequence")][d.getf("pillarcount")] then 
                       pc.remove_item(item.get_vnum(),1) 
                       syschat("Cet item ne fonctionne pas!") 
                   end 
               end 
           end 
       end 

       function LoadStage() --- gère chaque étape et les regen
           if d.getf("actual_round") == 1 then -- Alle Monster tötenw 
               d.regen_file("data/dungeon/purgatory/blazingpurgatory_gate_1.txt") 
               d.setf("bp_kill_to_next",241) 
               d.setf("kill_count_bp1",0) 
           elseif d.getf("actual_round") == 2 then 
               d.set_regen_file("data/dungeon/purgatory/blazingpurgatory_gate_2.txt") 
               d.setf("kill_to_drop_key",50) 
               d.spawn_mob(20081,195,352) 
           elseif d.getf("actual_round") == 3 then 
               d.regen_file("data/dungeon/purgatory/blazingpurgatory_gate_3.txt") 
               d.setf("bp_kill_to_next",240) 
               d.setf("kill_count_bp1",0) 
           elseif d.getf("actual_round") == 4 then 
               d.set_regen_file("data/dungeon/purgatory/blazingpurgatory_gate_4.txt") 
           elseif d.getf("actual_round") == 5 then 
               d.set_regen_file("data/dungeon/purgatory/blazingpurgatory_gate_5.txt") 
               local sequence = {{1,2,3,4,5},{4,3,2,1,5},{4,5,3,1,2},{5,3,4,2,1},{5,1,3,4,2}} 
               local n = number(1,5) 
               local coords = {{502,354},{517,354},{487,354},{502,339},{502,369}} 
               for i = 1, 5 do 
                   d.spawn_mob(20081, coords[i][1],coords[i][2]) 
               end 
               d.setf("pillarcount", 1) 
               d.setf("sequence",n) 
               d.setf("kill_to_drop_key",100) 
           elseif d.getf("actual_round") == 6 then 
               d.set_regen_file("data/dungeon/purgatory/blazingpurgatory_gate_6.txt") 
               d.spawn_mob(8049,507,489) 
           end 
       end     

       function purge() --- purge tout puis remet les PNJ en place
           d.setf("block_altar",0) 
           d.clear_regen() 
           d.kill_all() 
           blazingpurgatory.LoadGates() 
           d.regen_file("data/dungeon/purgatory/npc.txt") 
           if d.getf("purgatory_level") == 6 then 
               d.setf("purgatory_level",7) 
           end 
       end         

       function LoadGates() 
           local sequence = {{1,2,3,4,5,6},{4,1,3,2,5,6},{2,5,3,1,4,6},{3,1,6,2,4,5},{5,3,2,4,6,1},{6,1,5,2,4,3},{6,3,5,3,1,4}} 
           for i = 1, 6-d.getf("purgatory_level") do 
               d.regen_file("data/dungeon/purgatory/blazingpurgatory_gate_"..sequence[d.getf("purgatory_gate_sequence")][i]..".txt") 
           end 
           d.setf("actual_round",sequence[d.getf("purgatory_gate_sequence")][7-d.getf("purgatory_level")]) 
       end         

       function NoticeTime() 
           local secondsLeft = (d.getf("time") - get_time()) 
           local minutesLeft = math.ceil(secondsLeft / 60) 
           d.notice("Il reste "..minutesLeft.." minute(s) !") 
       end 

       function GetPillarID() 
           if pc.get_local_x() >= 502 - 5 and pc.get_local_x() <= 502 + 5 and pc.get_local_y() >= 354 - 5 and pc.get_local_y() <= 354 + 5 then 
               return 1 
           elseif pc.get_local_x() >= 517 - 5 and pc.get_local_x() <= 517 + 5 and pc.get_local_y() >= 354 - 5 and pc.get_local_y() <= 354 + 5 then 
               return 2 
           elseif pc.get_local_x() >= 487 - 5 and pc.get_local_x() <= 487 + 5 and pc.get_local_y() >= 354 - 5 and pc.get_local_y() <= 354 + 5 then 
               return 3 
           elseif pc.get_local_x() >= 502 - 5 and pc.get_local_x() <= 502 + 5 and pc.get_local_y() >= 339 - 5 and pc.get_local_y() <= 339 + 5 then 
               return 4 
           elseif pc.get_local_x() >= 502 - 5 and pc.get_local_x() <= 502 + 5 and pc.get_local_y() >= 369 - 5 and pc.get_local_y() <= 369 + 5 then 
               return 5 
           else 
               return false 
           end 
       end    
   end 
end

Link to comment
Share on other sites

  • Answers 2
  • Created
  • Last Reply

Top Posters For This Question

Top Posters For This Question

2 answers to this question

Recommended Posts

Guest
This topic is now closed to further replies.
 Share



  • Flux d'Activité

    1. 0

      Metin2 Champions - Accès anticipé

    2. 0

      Barbok

    3. 3

      Shiva.international serveur privé metin2 Oldschool Start 16.09.2022

    4. 2

      Partage Émulateur 2.63

    5. 2

      Partage Émulateur 2.63

    6. 0

      Tera 100.02 pré-installer / Tuto Discord.

    7. 117

      (Dev en cours) Metin2 Project - Legacy of Metin2

  • Recently Browsing

    • No registered users viewing this page.

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.