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

beug purgatory


Mandrilux
 Share

Question

Bonjour

 

je suis entrain de debeuger mes fichiers sauf que la je n'y arrive plus .

j'ai un soucis avec ma quette  qui gere l'instance du purgatoire

 

voila ma quette

 

quest blazingpurgatory begin 
   state start begin 
       when 20394.chat."Les Gorges du Pugatoire" begin
           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(" être au minimum lvl 90, être dans un") 
           say("groupe et que le chef demande à rejoindre les") 
           say("Gorges en ayant les") 
		say_reward("Larmes de Baljit-Elvedin dans son inventaire.")
		say("")
		say(" Êtes vous prêt à entrer dans les lieux ?")
           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 100.")
			party.chat("Le chef du groupe doit être lvl 100.")
			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
				d.join(251) --- ID purgatoires: 235
			end
		end
       end 

       when login with pc.get_map_index() == 251 begin 
     notice_all("Le groupe de "..pc.name.." s'engage dans l'antre de de Razador !")
           say("L'instance est maintenant commencée.") 
           say("Que le combat commence !") 
	syschat("ok1")
           say("") 
		d.setf("temps", get_time()) --- Utilisé pour le temps à la fin de l'instance

           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/flame_dungeon/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/flame_dungeon/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() == 251 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("Un nouvel étage est maintenant ouvert!") 
           end 
       end 

       when warp_to_boss.timer begin 
           d.jump_all(8111,6864) --- coordonnées de la salle du boss, laisser comme tel
           d.notice("Razador:") 
           d.notice("Inutile de me résister, vous allez périr !") 
           d.set_regen_file("data/dungeon/flame_dungeon/fd_fild_boss.txt") 
           blazingpurgatory.NoticeTime() 
       end     

       when 6091.kill with pc.get_map_index() == 251 begin --- ID map
		temps = get_time() - d.getf("temps") --- Prend le temps à partir du moment que "temps" est activé (début de l'instance)
		sec = math.mod(temps, 60)
		min = (temps-sec)/60
		notice_all("Le groupe de "..pc.name.." a terminé les Gorges du Purgatoire en "..min.." minutes et "..sec.." secondes !")
		d.notice("Vous serez téléporté hors du donjon dans 1 minute !")
		timer("purgatoires_fin", 60) --- temps en secondes avant de sortir de l'instance
	end

	when purgatoires_fin.timer begin --- Au bout de 60 secondes téléporte tout le monde hors de l'instance
		d.exit_all()
	end
        
       when kill with pc.get_map_index() == 251 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 --- il faut tuer 241 mobs
                   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 --- au bout de 50 kill on drop une clé
                   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 --- on kill un mini boss
               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() == 8057 then --- on kill une metin
               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 --- on kill le boss
               d.notice("Razador est mort !") 
               d.clear_regen() 
               d.kill_all() 
           end 
       end 

       when 20081.take with pc.get_map_index() == 251  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/flame_dungeon/blazingpurgatory_gate_1.txt") 
               d.setf("bp_kill_to_next",230) 
               d.setf("kill_count_bp1",0) 
           elseif d.getf("actual_round") == 2 then 
               d.set_regen_file("data/dungeon/flame_dungeon/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/flame_dungeon/blazingpurgatory_gate_3.txt") 
               d.setf("bp_kill_to_next",230) 
               d.setf("kill_count_bp1",0) 
           elseif d.getf("actual_round") == 4 then 
               d.set_regen_file("data/dungeon/flame_dungeon/blazingpurgatory_gate_4.txt") 
           elseif d.getf("actual_round") == 5 then 
               d.set_regen_file("data/dungeon/flame_dungeon/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/flame_dungeon/blazingpurgatory_gate_6.txt") 
               d.spawn_mob(8057,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/flame_dungeon/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/blazingpurgatory/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

 

 

quand je rentre dans le purga , j'ai bien le message qui m'annonce que l'instance est lancé mais rien ne se passe par la suite

voila mon erreur sysser

 

 

SYSERR: Aug 12 20:10:18.964975 :: dungeon_set_flag: no dungeon !!!
SYSERR: Aug 12 20:10:18.964993 :: dungeon_set_flag: no dungeon !!!
SYSERR: Aug 12 20:10:18.965004 :: dungeon_get_flag: no dungeon !!!
SYSERR: Aug 12 20:10:18.965029 :: RunState: LUA_ERROR: locale/france/quest/object/state/blazingpurgatory:5: attempt to index field `?' (a nil value)
SYSERR: Aug 12 20:10:18.965040 :: WriteRunningStateToSyserr: LUA_ERROR: quest blazingpurgatory.(null) click

 

 

voila mon fichier state/blazingpurgatory

 

 

 

blazingpurgatory={["start"]=0,start= function ()d . regen_file ( "data/dungeon/flame_dungeon/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 } } 
for i = 1 , 6 begin 
d . regen_file ( "data/dungeon/flame_dungeon/blazingpurgatory_gate_" .. sequence [ d . getf ( "purgatory_gate_sequence" ) ] [ i ] .. ".txt" ) 
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 ,LoadStage= function ()if d . getf ( "actual_round" ) == 1 then 
d . regen_file ( "data/dungeon/flame_dungeon/blazingpurgatory_gate_1.txt" ) 
d . setf ( "bp_kill_to_next" , 230 ) 
d . setf ( "kill_count_bp1" , 0 ) 
elseif d . getf ( "actual_round" ) == 2 then 
d . set_regen_file ( "data/dungeon/flame_dungeon/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/flame_dungeon/blazingpurgatory_gate_3.txt" ) 
d . setf ( "bp_kill_to_next" , 230 ) 
d . setf ( "kill_count_bp1" , 0 ) 
elseif d . getf ( "actual_round" ) == 4 then 
d . set_regen_file ( "data/dungeon/flame_dungeon/blazingpurgatory_gate_4.txt" ) 
elseif d . getf ( "actual_round" ) == 5 then 
d . set_regen_file ( "data/dungeon/flame_dungeon/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 begin 
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/flame_dungeon/blazingpurgatory_gate_6.txt" ) 
d . spawn_mob ( 8057 , 507 , 489 ) 
end 
end ,purge= function ()d . setf ( "block_altar" , 0 ) 
d . clear_regen ( ) 
d . kill_all ( ) 
blazingpurgatory . LoadGates ( ) 
d . regen_file ( "data/dungeon/flame_dungeon/npc.txt" ) 
if d . getf ( "purgatory_level" ) == 6 then 
d . setf ( "purgatory_level" , 7 ) 
end 
end ,LoadGates= function ()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" ) begin 
d . regen_file ( "data/dungeon/blazingpurgatory/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 ,NoticeTime= function ()local secondsLeft = ( d . getf ( "time" ) - get_time ( ) ) 
local minutesLeft = math . ceil ( secondsLeft / 60 ) 
d . notice ( "Il reste " .. minutesLeft .. " minute(s) !" ) 
end ,GetPillarID= function ()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 }

 

Tout mes regens sont au bon endroit pourtant avec les bon droits ... je ne comprend pas ce qui se passe

 

Version des files : 2014

 

 

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

Link to comment
Share on other sites

  • Answers 63
  • Created
  • Last Reply

Top Posters For This Question

Top Posters For This Question

Recommended Posts

  • 0

j'ai un probleme deja , les 3 pnj dans npc.txt ne sont pas chargé pourtant le fichier est correct

 

//Àû·æ¼ººñ
m	352	362	0	0	0	1	10s	100	1	20385
//quest_NPC
m	362	541	1	1	0	0	10s	100	1	20393
m	686	639	1	1	0	0	10s	100	1	20390

Link to comment
Share on other sites

  • 0

Comme Triton l'a dis, tu utilises des fonctions de donjon alors que tu n'es pas dans un donjon.

 

Pour que tu sois dans un donjon, tu dois utiliser la fonction d.join(map index) en étant dans le même core que la map du donjon

Link to comment
Share on other sites

  • 0

Et tu devrais peu être revoir le code de ta quête.

 

Exemple : si tu lances l'instance à 5, tu auras 5 messages disant "Le joueur X a lancé l'instance purgatoire".

 

Tu dois avoir aussi des soucis d'id par rapport à ce que la quête officiel utilise (si je ne me trompe pas, tu utilises des pierres d'ouvertures etc. Même les id des piliers ne sont pas les bons ^^ .

 

Ceci t'aidera surement : http://wiki.metin2.fr/index.php/Forteresse_du_dragon_rouge

Link to comment
Share on other sites

  • 0

Merci de vos reponse , antok est triton

j'ai du mal a comprendre

 

Comme Triton l'a dis, tu utilises des fonctions de donjon alors que tu n'es pas dans un donjon.

 

Pour que tu sois dans un donjon, tu dois utiliser la fonction d.join(map index) en étant dans le même core que la map du donjon

 

 

C'est pourtant ce que j'ai

 

d.join(251) --- ID purgatoires sur mon serveur : 251

Link to comment
Share on other sites

  • 0

C'est ton when "..." with pc.get_map_index() == 251 begin qui ne va pas.

 

Tu lui dis de capter qu'il est sur une coordonnée de 251, je suis débutant en LUA donc je ne saurais trop t'expliquer, mais il faut que tu lui dises de choisir entre pc.get_map_index() >= à X coordonnées (ici 2510000) et qu'il soit également compris entre une coordonnée Y un peu plus élevé, pour être sûr qu'il capte bien que tu es dans la map de l'instance.

 

Ce qui donne ton code de quête ceci :

 

quest blazingpurgatory begin 
  state start begin 
      when 20394.chat."Les Gorges du Pugatoire" begin
          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(" être au minimum lvl 90, être dans un") 
          say("groupe et que le chef demande à rejoindre les") 
          say("Gorges en ayant les") 
           say_reward("Larmes de Baljit-Elvedin dans son inventaire.")
           say("")
           say(" Êtes vous prêt à entrer dans les lieux ?")
          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 100.")
               party.chat("Le chef du groupe doit être lvl 100.")
               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
                   d.join(251) --- ID purgatoires: 235
               end
           end
      end 

      when login with pc.get_map_index() >= 2510000 and pc.get_map_index() < 2515000 begin 
        notice_all("Le groupe de "..pc.name.." s'engage dans l'antre de de Razador !")
          say("L'instance est maintenant commencée.") 
          say("Que le combat commence !") 
       syschat("ok1")
          say("") 
           d.setf("temps", get_time()) --- Utilisé pour le temps à la fin de l'instance

          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/flame_dungeon/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/flame_dungeon/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() >= 2510000 and pc.get_map_index() < 2515000 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("Un nouvel étage est maintenant ouvert!") 
          end 
      end 

      when warp_to_boss.timer begin 
          d.jump_all(8111,6864) --- coordonnées de la salle du boss, laisser comme tel
          d.notice("Razador:") 
          d.notice("Inutile de me résister, vous allez périr !") 
          d.set_regen_file("data/dungeon/flame_dungeon/fd_fild_boss.txt") 
          blazingpurgatory.NoticeTime() 
      end     
       
      when 6091.kill with pc.get_map_index() >= 2510000 and pc.get_map_index() < 2515000 begin --- ID map
           temps = get_time() - d.getf("temps") --- Prend le temps à partir du moment que "temps" est activé (début de l'instance)
           sec = math.mod(temps, 60)
           min = (temps-sec)/60
           notice_all("Le groupe de "..pc.name.." a terminé les Gorges du Purgatoire en "..min.." minutes et "..sec.." secondes !")
           d.notice("Vous serez téléporté hors du donjon dans 1 minute !")
           timer("purgatoires_fin", 60) --- temps en secondes avant de sortir de l'instance
       end
       
       when purgatoires_fin.timer begin --- Au bout de 60 secondes téléporte tout le monde hors de l'instance
           d.exit_all()
       end
       
      when kill with pc.get_map_index() >= 2510000 and pc.get_map_index() < 2515000 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 --- il faut tuer 241 mobs
                  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 --- au bout de 50 kill on drop une clé
                  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 --- on kill un mini boss
              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() == 8057 then --- on kill une metin
              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 --- on kill le boss
              d.notice("Razador est mort !") 
              d.clear_regen() 
              d.kill_all() 
          end 
      end 

      when 20081.take with pc.get_map_index() >= 2510000 and pc.get_map_index() < 2515000 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/flame_dungeon/blazingpurgatory_gate_1.txt") 
              d.setf("bp_kill_to_next",230) 
              d.setf("kill_count_bp1",0) 
          elseif d.getf("actual_round") == 2 then 
              d.set_regen_file("data/dungeon/flame_dungeon/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/flame_dungeon/blazingpurgatory_gate_3.txt") 
              d.setf("bp_kill_to_next",230) 
              d.setf("kill_count_bp1",0) 
          elseif d.getf("actual_round") == 4 then 
              d.set_regen_file("data/dungeon/flame_dungeon/blazingpurgatory_gate_4.txt") 
          elseif d.getf("actual_round") == 5 then 
              d.set_regen_file("data/dungeon/flame_dungeon/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/flame_dungeon/blazingpurgatory_gate_6.txt") 
              d.spawn_mob(8057,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/flame_dungeon/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/blazingpurgatory/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

  • 0

quand je suis tp rien ne se passe 

 

j'ai fais une quette qui affiche la valeur contenue dans map_index() et la valeur est 251

 

voila la compilation de la quette

QUEST : blazingpurgatory
STATE : start
WHEN  : 20394.chat ("Les Gorges du Pugatoire")
WHEN  : login
       with pc . get_map_index ( ) >= 2.51e+06 and pc . get_map_index ( ) < 2.515e+06
FUNCTION start()
WHEN  : purgatorytimenotice.server_timer
WHEN  : purgatorytime.server_timer
WHEN  : 20385.click
       with pc . get_map_index ( ) >= 2.51e+06 and pc . get_map_index ( ) < 2.515e+06 and d . getf ( "block_altar" ) == 0
WHEN  : warp_to_boss.timer
WHEN  : 6091.kill
       with pc . get_map_index ( ) >= 2.51e+06 and pc . get_map_index ( ) < 2.515e+06
WHEN  : purgatoires_fin.timer
WHEN  : kill
       with pc . get_map_index ( ) >= 2.51e+06 and pc . get_map_index ( ) < 2.515e+06
WHEN  : 20081.take
       with pc . get_map_index ( ) >= 2.51e+06 and pc . get_map_index ( ) < 2.515e+06
FUNCTION LoadStage()
FUNCTION purge()
FUNCTION LoadGates()
FUNCTION NoticeTime()
FUNCTION GetPillarID()
Segmentation fault (core dumped)

j'ai une "Segmentation fault (core dumped)"

Link to comment
Share on other sites

  • 0

Donne nous le code complet

 

Au passage tu dois également vérifier que l'ID de la map est inférieur à 2520000 (car si tu as un autre donjon sur la map 252 ça posera des problèmes)

Link to comment
Share on other sites

  • 0

je te met la quette complete

 

quest blazingpurgatory begin 
 state start begin 
     when 20394.chat."Les Gorges du Pugatoire" begin
         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(" être au minimum lvl 90, être dans un") 
         say("groupe et que le chef demande à rejoindre les") 
         say("Gorges en ayant les") 
          say_reward("Larmes de Baljit-Elvedin dans son inventaire.")
          say("")
          say(" Êtes vous prêt à entrer dans les lieux ?")
         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 100.")
              party.chat("Le chef du groupe doit être lvl 100.")
              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
                  d.join(251) --- ID purgatoires: 235
              end
          end
     end 

     when login with pc.get_map_index() >= 2510000 and pc.get_map_index() < 2515000 begin 
       notice_all("Le groupe de "..pc.name.." s'engage dans l'antre de de Razador !")
         say("L'instance est maintenant commencée.") 
         say("Que le combat commence !") 
      syschat("ok1")
         say("") 
          d.setf("temps", get_time()) --- Utilisé pour le temps à la fin de l'instance

         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/flame_dungeon/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/flame_dungeon/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() >= 2510000 and pc.get_map_index() < 2515000 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("Un nouvel étage est maintenant ouvert!") 
         end 
     end 

     when warp_to_boss.timer begin 
         d.jump_all(8111,6864) --- coordonnées de la salle du boss, laisser comme tel
         d.notice("Razador:") 
         d.notice("Inutile de me résister, vous allez périr !") 
         d.set_regen_file("data/dungeon/flame_dungeon/fd_fild_boss.txt") 
         blazingpurgatory.NoticeTime() 
     end     
      
     when 6091.kill with pc.get_map_index() >= 2510000 and pc.get_map_index() < 2515000 begin --- ID map
          temps = get_time() - d.getf("temps") --- Prend le temps à partir du moment que "temps" est activé (début de l'instance)
          sec = math.mod(temps, 60)
          min = (temps-sec)/60
          notice_all("Le groupe de "..pc.name.." a terminé les Gorges du Purgatoire en "..min.." minutes et "..sec.." secondes !")
          d.notice("Vous serez téléporté hors du donjon dans 1 minute !")
          timer("purgatoires_fin", 60) --- temps en secondes avant de sortir de l'instance
      end
      
      when purgatoires_fin.timer begin --- Au bout de 60 secondes téléporte tout le monde hors de l'instance
          d.exit_all()
      end
      
     when kill with pc.get_map_index() >= 2510000 and pc.get_map_index() < 2515000 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 --- il faut tuer 241 mobs
                 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 --- au bout de 50 kill on drop une clé
                 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 --- on kill un mini boss
             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() == 8057 then --- on kill une metin
             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 --- on kill le boss
             d.notice("Razador est mort !") 
             d.clear_regen() 
             d.kill_all() 
         end 
     end 

     when 20081.take with pc.get_map_index() >= 2510000 and pc.get_map_index() < 2515000 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/flame_dungeon/blazingpurgatory_gate_1.txt") 
             d.setf("bp_kill_to_next",230) 
             d.setf("kill_count_bp1",0) 
         elseif d.getf("actual_round") == 2 then 
             d.set_regen_file("data/dungeon/flame_dungeon/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/flame_dungeon/blazingpurgatory_gate_3.txt") 
             d.setf("bp_kill_to_next",230) 
             d.setf("kill_count_bp1",0) 
         elseif d.getf("actual_round") == 4 then 
             d.set_regen_file("data/dungeon/flame_dungeon/blazingpurgatory_gate_4.txt") 
         elseif d.getf("actual_round") == 5 then 
             d.set_regen_file("data/dungeon/flame_dungeon/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/flame_dungeon/blazingpurgatory_gate_6.txt") 
             d.spawn_mob(8057,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/flame_dungeon/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/blazingpurgatory/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

 

je n'ai pas de map 252 ni 250

 

voila l'index de mes map 

1 metin2_map_a1
2 metin2_map_a2_1
3 metin2_map_a3
4 metin2_map_guild_01
5 metin2_map_monkey_dungeon_11
6 metin2_map_guild_village_01
21 metin2_map_b1
22 metin2_map_b2
23 metin2_map_b3
24 metin2_map_guild_02
25 metin2_map_monkey_dungeon_12
26 metin2_map_guild_village_02
41 metin2_map_c1
42 metin2_map_c2
43 metin2_map_c3
44 metin2_map_guild_03
45 metin2_map_monkey_dungeon_13
46 metin2_map_guild_village_03
61 map_n_snowm_01
62 metin2_map_n_flame_01
63 metin2_map_n_desert_01
64 map_n_threeway
65 metin2_map_milgyo
66 metin2_map_deviltower1
67 metin2_map_trent
68 metin2_map_trent02
69 metin2_map_WL_01
70 metin2_map_nusluck01
71 metin2_map_spiderdungeon
72 metin2_map_spiderdungeon_02
73 metin2_map_skipia_dungeon_01
74 metin2_map_skipia_dungeon_02
75 metin2_map_skipia_dungeon_boss
76 metin2_map_devilscatacomb
77 metin2_map_spiderdungeon_03
80 metin2_map_dd
81 metin2_map_wedding_01
90 metin2_map_guild_inside01
91 metin2_map_ew02
92 gm_guild_build
100 metin2_map_fielddungeon
103 metin2_map_t1
105 metin2_map_t2
107 metin2_map_monkey_dungeon
108 metin2_map_monkey_dungeon2
109 metin2_map_monkey_dungeon3
110 metin2_map_t3
111 metin2_map_t4
112 metin2_map_duel
113 metin2_map_oxevent
114 metin2_map_sungzi
118 metin2_map_sungzi_flame_hill_01
119 metin2_map_sungzi_flame_hill_02
120 metin2_map_sungzi_flame_hill_03
121 metin2_map_sungzi_snow
122 metin2_map_sungzi_snow_pass01
123 metin2_map_sungzi_snow_pass02
124 metin2_map_sungzi_snow_pass03
125 metin2_map_sungzi_desert_01
126 metin2_map_sungzi_desert_hill_01
127 metin2_map_sungzi_desert_hill_02
128 metin2_map_sungzi_desert_hill_03
129 metin2_map_holyplace_flame
130 map_n_snowm_02
131 metin2_map_milgyo_a
132 metin2_map_n_flame_02
133 metin2_map_n_desert_02
134 metin2_map_trent_a
135 metin2_map_trent02_a
136 metin2_map_spiderdungeon_02_1
140 metin2_map_bayblacksand
141 metin2_map_capedragonhead
142 metin2_map_dawnmistwood
143 metin2_map_mt_thunder
150 metin2_map_naga1
181 metin2_map_empirewar01
182 metin2_map_empirewar02
183 metin2_map_empirewar03
190 metin2_map_battlearena01
191 metin2_map_battlearena02
192 metin2_map_battlearena03
251 metin2_map_n_flame_dungeon_01

Link to comment
Share on other sites

  • 0

c'est pire ^^

 

[/code]

blazingpurgatory.quest:277:assertion failure : nested==0

Abort trap (core dumped)

Segmentation fault (core dumped)

[/code]

 

rien ne se passe avec ou sans l'avant dernier end  

 

la valeur pc.get_map_index() est egal a 251

 

Hidden Content

    Give reaction to this post to see the hidden content.

Edited by Funky Emulation
Core X - External 2 Internal
Link to comment
Share on other sites

  • 0

Le end n'était pas en trop (sauf si tu as edit ta quête).

 

D'où l'erreur ligne 277 (il manque le end que tu as enlevé).

 

Il y a le end du quest, du start, du function et du if (donc bien 4 end à la fin). C'est juste qu'il n'a pas mis les tabulations pour que ce soit plus clair ...

Link to comment
Share on other sites

  • 0

Effectivement les tabulations m'ont perturbé

 

Edit : aucun problème de compilation pour ma part

Hidden Content

    Give reaction to this post to see the hidden content.

Edited by Funky Emulation
Core X - External 2 Internal
Link to comment
Share on other sites

  • 0

Effectivement , tu a raison antok , j'ai supprimer du local_list la quette qui etais juste apres , et l'erreur a disparu , c'est donc pas la quette la qui avais une erreur de compilation

ce probleme est reglé cependant , je n'arrive toujours pas a comprendre pourquoi rien ne se declanche quand on arrive dans la map

Link to comment
Share on other sites

  • 0

Bonsoir, petite question toute bête mais qui a son importance, quand tu rentres dans le purgatoire, vas-tu jusqu'au pilier central? Parce que c'est à partir des interactions avec ce pilier que l'instance se mettra réellement en route (chronomètre + mission).

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share



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.