Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 21:30

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[SERVICE] Die Questkontrolle

Discussion on [SERVICE] Die Questkontrolle within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old 12/18/2014, 09:26   #10756

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Quote:
Originally Posted by SuperBleifrei90 View Post
Geil vielen Dank hat Funktioniert.
Wie mache ich jetzt zb in dem Satz viel spaß wünscht euch...
das ß und das ü werden nicht so angezeigt wie die sollen^^
is aber jetzt überall so.
Kodierung auf "ANSI" stellen in Notepad++ und dann nochmal die Umlaute ersetzen und abspeichern
rollback is offline  
Thanks
1 User
Old 12/18/2014, 09:47   #10757
 
elite*gold: 0
Join Date: Jun 2008
Posts: 23
Received Thanks: 3
und nochmal vielen Dank =)
SuperBleifrei90 is offline  
Old 12/18/2014, 16:54   #10758
 
elite*gold: 0
Join Date: Jul 2011
Posts: 25
Received Thanks: 1
Devils Catacomb Run verändern

Devils Catacomb Run verändern

Ich will die 4.te Ebene Labyrinth überspringen oder das die Teleports gehen in der Map (weil sie funktionieren nicht) oder den Runenpfahl gleich so positionieren da wo ich geportet bin


Code:
quest devilscave begin
    state start begin
--Konfiguration   
        when 20351.chat."DC Configuration!" with game.get_event_flag("block_dc_config") == 0 and pc.is_gm begin
			game.set_event_flag("dc_is_ok",1)
			game.set_event_flag("block_dc_config",1)
			game.set_event_flag("dc_versuche",1)
		end
--Eintritt fehlgeschlagen
        --when 20351.chat."The Devils Catacomb" with game.get_event_flag("dc_is_ok") == 1 and pc.getqf("can_in_dc") == 0 and pc.get_level() > 80 begin
			--say_title("Wächter der Katakombe")
			--say("")
			--say_reward("Du darfst noch nicht in die Devils Catacomb!")
			--say("")
			--say_reward("Bring mir ein Sensenmannrelikt zieh es einfach auf mich!")
			--say_reward("und du darfst Passieren!")
        --end
        --when 20351.chat."Devils Catacomb (lv.80)" with game.get_event_flag("dc_is_ok") == 1 and pc.getqf("can_in_dc") == 1 and pc.get_level() < 80 begin
            --say_title("Wächter der Katakombe")
            --say("")
            --say_reward("Du bist noch zu Schwach!")
            --say("")
        --end
--Sensenmannrelikt Abgabe!
        --when 20351.take with item.vnum == 30315 and pc.getqf("can_in_dc") == 0 begin
            --if pc.get_level() < 80 then
                --say_title("Wächter der Katakombe")
                --say("")
                --say_reward("Du musst lv.80 sein um ein Sensenmannrelikt abzugeben!")
                --say("")
            --else
                --item.remove()
                --say_title("Wächter der Katakombe")
                --say("")
                --say_reward("Du darfst nun die Devils Catacomb betreten!")
                --say("")
                --pc.setqf("can_in_dc", 1)
            --end
        --end
--Eintritt    
        when 20351.chat."The Devils Catacomb" with game.get_event_flag("dc_is_ok") == 1 and pc.getqf("can_in_dc") == 0 begin
            if pc.get_level() < 80 then 
                say_title("Wächter der Katakombe")
                say("")
                say_reward("Du bist noch zu schwach für die Katakomben!")
                say("")
            else
                say_title("Wächter der Katakombe")
                say("")
                say("Bisher haben "..game.get_event_flag("dcgamer").." Soldaten es versucht ")
                say("und "..game.get_event_flag("dc_geschaft").." haben es tatsächlich geschaft")
                say("Azrael zu besiegen!")
                wait()
                say_title("Wächter der Katakombe")
                say("")
                say_reward("Willst du es versuchen?")
                say_reward("du wärst der "..game.get_event_flag("dc_versuche")..". Kämpfer der es")
                say_reward("versucht!")
                say("")
                pc.setqf("Ebene", 1)
                local dc_login = select("Betreten", "Abbrechen")
                if dc_login == 1 then
                    pc.warp(415200, 4209200)
                elseif dc_login == 2 then
                    return
                end
            end
        end            
--Ebene 1        

        
        when login with pc.get_map_index() == 209 begin
            game.set_event_flag(("dcgamer"), game.get_event_flag("dcgamer")+1)
            game.set_event_flag(("dc_versuche"), game.get_event_flag("dc_versuche")+1)
            if pc.getqf("Ebene") == 1 then
            say_title("Devils Catacomb")
            say("Um in die 2.Ebene zu kommen, musst du")
            say_item("Seelenkristall-Schlüssel", 30311, "")
            say("auf die Statue des Kud ziehen!")
            say("Du droppst ihn bei den Monstern.")
            say("Ihr habt ingesamt 90 Minuten Zeit!")
            say("")
            say_reward("Viel Glück!")
            say("")
            timer("dc10", 600)
            pc.setqf("sksgedroppt", 0)
        else
            warp_all_to_village()
            end
        end
        when kill with not npc.is_pc() and pc.get_map_index() == 209 begin 
            local sks = number(1,15)
            if sks==1 and pc.getqf("sksgedroppt")==0 then
                pc.setqf("sksgedroppt", 1)
                chat("Du hast den Seelenkristall-Schlüssel gedroppt!")
                game.drop_item(30311, 1)
            else
                chat("Dieses Monster hatte keinen Schlüssel.")
            end
        end
        when 30101.take with item.vnum == 30311 begin
            chat("Du wirst jetzt in die 2. Ebene gebracht.")
            pc.remove_item("30311")
            d.new_jump_all(209, 4632, 42082)
            d.regen_file("data/dungeon/devilcave/dc_regen_ebene2.txt")
            d.regen_file("data/dungeon/devilcave/dc_regen_tore_unten.txt")
            d.regen_file("data/dungeon/devilcave/dc_regen_tore_left.txt")
            d.spawn_mob(30103, 741, 221)
            d.setf("Ebene", 2)
        end    
        
        when login with pc.in_dungeon() begin
            if d.getf("Ebene") == 2 then
            chat("Ihr befindet euch jetzt in der 2. Ebene!")
            chat("Schlagt euch zum Schildkrötenfels durch!")
            chat("Ihr habt nur 10 minuten Zeit!")
            timer("dc1", 600)
        end
            if d.getf("Ebene") == 3 then
            chat("Findet und zerstört den richtigen Metin der Vergeltung.")
            chat("Ihr habt 20 Minuten Zeit.")
            timer("dc2", 1200)
        end
            if d.getf("Ebene") == 4 then
            chat("Findet den Weg aus dem Labyrinth.")
            chat("Und findet die Inschrift am Runenpfahl.")
            chat("Ihr habt 15 Minuten Zeit.")
            timer("dc3", 900)
            d.spawn_mob(30104, 500, 800)
            d.spawn_mob(10800, 328, 779)
            d.spawn_mob(10801, 70, 672)
            d.spawn_mob(10802, 142, 865)
            d.spawn_mob(10803, 433, 935)
            d.spawn_mob(10804, 243, 854)
            d.spawn_mob(10805, 182, 667)
        end
            if d.getf("Ebene") == 5 then
            chat("Findet und tötet Tartaros um das Fratzen-Totem zu bekommen!")
            chat("Zieht es anschließend auf den Basalt-Obelisk auf dem Berg.")
            chat("Ihr habt 15 Minuten Zeit.")
            timer("dc4", 900)
            d.spawn_mob(30104, 500, 800)
        end
            if d.getf("Ebene") == 6 then
            chat("Tötet Charon um zur letzten Ebene zu kommen!")
            chat("Ihr habt 15 Minuten Zeit.")
            timer("dc5", 900)
            d.spawn_mob(30104, 500, 800)
        end
            if d.getf("Ebene") == 7 then
            chat("Tötet Azrael und setzt dem Unheil ein Ende!")
            chat("Ihr habt 15 Minuten Zeit!")
            timer("dc6", 900)
            d.spawn_mob(30104, 500, 800)
        end
        end
        
        
        when dc1.timer begin
            chat("Die Zeit ist Abgelaufen!")
            warp_all_to_village( pc.get_map_index() , 5 )
        end     


        when dc10.timer begin
            chat("Ihr habt noch 80 Minuten Zeit, Azrael zu finden und zu töten!")
            timer("dc20", 600)
        end
        
        when dc20.timer begin
            chat("Ihr habt noch 70 Minuten zeit!")
            timer("dc30", 600)
        end    
        when dc30.timer begin
            chat("Ihr habt noch 60 Minuten zeit!")
            timer("dc40", 600)
        end        
        when dc40.timer begin
            chat("Ihr habt noch 50 Minuten zeit!")
            timer("dc50", 600)
        end        
        when dc50.timer begin
            chat("Ihr habt noch 40 Minuten zeit!")
            timer("dc60", 600)
        end        
        when dc60.timer begin
            chat("Ihr habt noch 30 Minuten zeit!")
            timer("dc70", 600)
        end        
        when dc70.timer begin
            chat("Ihr habt noch 20 Minuten zeit!")
            timer("dc80", 600)
        end        
        when dc80.timer begin
            chat("Ihr habt noch 10 Minuten zeit!")
            timer("dc110", 600)
        end
        when dc110.timer begin
            chat("Die Zeit ist Abgelaufen!")
            warp_all_to_village( pc.get_map_index() , 5 )
        end                     
--Ebene 2
        when 30103.chat."Weiter zur 3. Ebene" begin
            npc.purge()
            say_reward("Inschrift:")
            say("Es ist noch ein weiter weg.")
            wait()
            d.new_jump_all(209, 5427, 42282)
            d.setf("Ebene", 3)
            d.regen_file("data/dungeon/devilcave/dc_regen_ebene3.txt")
            local metindv = number(1,4)
            if metindv==1 then
                d.spawn_mob(8029, 1351, 348)
                d.spawn_mob(8029, 1148, 350)
                d.spawn_mob(8029, 1151, 155)
                d.spawn_mob(8032, 1351, 149)
            end
            if metindv==2 then
                d.spawn_mob(8029, 1351, 348)
                d.spawn_mob(8029, 1148, 350)
                d.spawn_mob(8032, 1151, 155)
                d.spawn_mob(8029, 1351, 149)
            end
            if metindv==3 then
                d.spawn_mob(8029, 1351, 348)
                d.spawn_mob(8032, 1148, 350)
                d.spawn_mob(8029, 1151, 155)
                d.spawn_mob(8029, 1351, 149)
            end
            if metindv==4 then
                d.spawn_mob(8032, 1351, 348)
                d.spawn_mob(8029, 1148, 350)
                d.spawn_mob(8029, 1151, 155)
                d.spawn_mob(8029, 1351, 149) 
            end
        
        end
        
        when 8029.kill with pc.in_dungeon() begin
            chat("Ein Falscher Metin wurde zerstört.")
        end
        when 8032.kill with pc.in_dungeon() begin
            chat("Der richtige Metin wurde zerstört.")
            chat("Ihr kommt nun in die 4. Ebene.")
            timer("devils_catacomb_goto_ebene4", 2)
        end    
        when dc2.timer begin
            chat("Die Zeit ist Abgelaufen!")
            warp_all_to_village( pc.get_map_index() , 5 )
        end    

        
--Ebene 4 (Labyrinth)
        when devils_catacomb_goto_ebene4.timer begin
            d.new_jump_all(209, 4143, 42657)
            d.setf("Ebene", 4)
        end
        
        when 30104.chat."Inschrift" with pc.in_dungeon() begin
            say_title("Ihr seid schon ziemlich weit gekommen.")
            timer("dc3", 6000)
            chat("Ihr habt den richtigen Weg gefunden.")
            chat("Ihr kommt jetzt in die 5. Ebene.")
            timer("devils_catacomb_goto_ebene5", 5)
        end
        when dc3.timer begin
            chat("Die Zeit ist Abgelaufen!")
            warp_all_to_village( pc.get_map_index() , 5 )
        end    
--Ebene 6 (Tartaros)
        when devils_catacomb_goto_ebene5.timer begin
            d.new_jump_all(209, 4917, 42925)
            d.spawn_mob(30102, 848, 739)
            d.setf("Ebene", 5)
            d.regen_file("data/dungeon/devilcave/dc_regen_ebene5.txt")
            local tartaros = number(1,4)
            if tartaros==1 then
                d.spawn_mob(2593, 991, 848)
            end
            if tartaros==2 then
                d.spawn_mob(2593, 999, 652)
            end
            if tartaros==3 then
                d.spawn_mob(2593, 848, 577)
            end
            if tartaros==4 then
                d.spawn_mob(2593, 703, 644)
            end
            if tartaros==5 then
                d.spawn_mob(2593, 692, 817)
            end
        end        
        
        when 2593.kill with pc.in_dungeon() begin
            chat("Tartaros wurde besiegt und das Fratzen-Totem wurde Fallengelassen!")
            chat("Begebt euch mit dem Fratzen-Totem auf den Berg in der Mitte.")
            game.drop_item(30313, 1)
        end    
        when 30102.take with item.vnum == 30313 begin
            timer("dc4", 6000)
            item.remove()
            npc.purge()
            say_reward("...")
            chat("Ihr werdet jetzt in die 6. Ebene gebracht.")
            timer("devils_catacomb_goto_ebene6", 5)
        end
        when dc4.timer begin
            chat("Die Zeit ist Abgelaufen!")
            warp_all_to_village( pc.get_map_index() , 5 )
        end    
--Ebene 7 (Charon)
        when devils_catacomb_goto_ebene6.timer begin
            d.new_jump_all(209, 5422, 42782)
            d.setf("Ebene", 6)
            d.regen_file("data/dungeon/devilcave/dc_regen_ebene6.txt")
        end
        
        when 2597.kill with pc.in_dungeon() begin
            timer("dc5", 6000)
            d.kill_all()
            chat("Ihr habt Charon besiegt!")
            chat("Bereitet euch auf den Kampf mit Azrael vor!")
            timer("devils_catacomb_goto_ebene7", 10)
        end
        when dc5.timer begin
            chat("Die Zeit ist Abgelaufen!")
            warp_all_to_village( pc.get_map_index() , 5 )
        end    
--Ebene 8 (Azrael)
		when devils_catacomb_goto_ebene7.timer begin
			 d.new_jump_all(209, 4147, 43191)
			d.setf("Ebene", 7)
			d.regen_file("data/dungeon/devilcave/dc_regen_ebene7.txt")
        end
	
        when 2598.kill with pc.in_dungeon() begin
			game.set_event_flag(("dc_geschaft"), game.get_event_flag("dc_geschaft")+1)
			local level = pc.get_level()            
			chat("Ihr habt ihn Besiegt und das Böse vertrieben.")
			chat("Ihr werdet in 2 Minuten herrausteleportiert!")
			chat("Sammelt schnell die Schätze ein, bevor es zu spät ist.")
			d.kill_all()
			d.kill_all()
			notice_all("Die Gruppe von "..pc.get_name().." hat Azrael besiegt!")
			timer("goout_from_dc", 120)
			d.spawn_mob(9012, 74, 1159)    
        end
        
        when dc6.timer begin
			chat("Die Zeit ist Abgelaufen!")
			warp_all_to_village( pc.get_map_index() , 5 )
			end
        when goout_from_dc.timer begin
			warp_all_to_village( pc.get_map_index() , 3 )
			end
	end
end
PS falls ihr ein fehler findet bitte schnell melden
Das mit dem Sensenmannrelikt funktioniert leider auch nicht also abgeben
NEWBOSS2 is offline  
Old 12/18/2014, 23:02   #10759
 
Prototype333's Avatar
 
elite*gold: 500
Join Date: Nov 2011
Posts: 173
Received Thanks: 4
Habe mal 2 Fragen:

1) Kann man in eine Questflag einen String speichern?

2) Kann man eine Variable anlegen, die nicht "local" ist sondern eine art public/static? D.h. das man überall in der Quest darauf zugreifen kann, egal in welcher state man sich befindet.
Prototype333 is offline  
Old 12/19/2014, 12:04   #10760
 
Rofelmau's Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 294
Received Thanks: 157
1. ja
setvarchar
getvarchar

2. ja zb
global_setvarchar
global_getvarchar
game.get_event_flag
game.set_event_flag
Rofelmau is offline  
Old 12/19/2014, 13:44   #10761

 
G.I Duke's Avatar
 
elite*gold: 313
Join Date: Apr 2013
Posts: 585
Received Thanks: 122
# selbst gelöst.
G.I Duke is offline  
Old 12/20/2014, 15:15   #10762

 
.yorliK's Avatar
 
elite*gold: 0
Join Date: Nov 2011
Posts: 1,448
Received Thanks: 1,257
Quote:
Originally Posted by Rextrus View Post
Kennt jemand nen MySQL Befehl, um z.B. die drei Lagerseiten für einen Account zu aktivieren? (:
Es ist ein vollständiger Relog von Nöten damit das klappt.

Code:
quest lagertruhe begin
	state start begin
		when 35003.use begin
			local WielangesolldasLagerbleibenZeit = 300 -- In Sekunden ( i.d.f 5 Min)
			local ts = os.time() + WielangesolldasLagerbleibenZeit
			local str = os.date("%Y-%m-%d %H:%M:%S", ts) -- Timestamp
			mysql_query("UPDATE account.account SET safebox_expire = '"..str.."' WHERE id='"..pc.get_account_id().."';")
			item.remove()
		end
	end
end
.yorliK is offline  
Thanks
1 User
Old 12/20/2014, 23:28   #10763
 
elite*gold: 0
Join Date: Jul 2014
Posts: 201
Received Thanks: 40
Sd3 Bruhthöhle QUest funktioniert nicht ganz

hallo,
habe folgendes problem wenn ich den npc (30130) anspreche meint er ich brauche den Arachnidenschlüssel damit ich in die bruhthöhle komme.
habe in der quest geschaut welche vnum das ist habe serverside 2 von den schüsseln habe beide probiert doch immer steht da "um das tor zu öffnen brauchst du den arachnidenschlüssel" obwohl ich einen habe. kann mir da bitte wer helfen?
Arachnidenschlüssel code: 30324

Code:
quest spider_dungeon_3floor_boss begin
	state start begin
	--2, ´øÀü ³¡ ½Ã°£.
		when spider_end_timer.server_timer with game.get_event_flag("spider_dead"..get_channel_id()) == 0 begin  --
			warp_all_in_area_to_area(82700, 612700, 93700,625700, 69100, 614800, 69100, 614800)
			game.set_event_flag("spider_lair_ongoing_"..get_channel_id(),0)
			game.set_event_flag("spider_lair_leader_"..get_channel_id(), 0)
			game.set_event_flag("spider_dead"..get_channel_id(),0)
			purge_area(82700, 612700, 93700,625700)
		end
		
		when spider_dead_timer.server_timer begin
			warp_all_in_area_to_area(82700, 612700, 93700,625700, 69100, 614800, 69100, 614800)
			game.set_event_flag("spider_lair_ongoing_"..get_channel_id(), 0)
			game.set_event_flag("spider_lair_leader_"..get_channel_id(), 0)
			game.set_event_flag("spider_dead"..get_channel_id(),0)
			purge_area(82700, 612700, 93700,625700)
		end

		when login or levelup or enter with pc.get_level() >= 50 begin
			set_state( step1 )
		end
		
		when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
			say(gameforge.spider_dungeon_3floor_boss._20_say)
		end
	end

	state step1 begin
		when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin   --Å×½ºÆ®¿ë
			set_state(start)
			say(gameforge.spider_dungeon_3floor_boss._40_say)
		end
		
		when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
			say(gameforge.spider_dungeon_3floor_boss._20_say)
		end
		
		when 20355.chat.gameforge.spider_dungeon_3floor_boss._50_npcChat begin   --°æºñ´ëÀå¿¡°Ô ¸»À» °É¾î Äù½ºÆ®¸¦ ½ÃÀÛÇÑ´Ù.
			
			say_title(mob_name(20355)) 
			----"12345678901234567890123456789012345678901234567890"|
			say(gameforge.spider_dungeon_3floor_boss._60_say)
			set_state( step2 )
			pc.give_item2(76019)
		end
	end

	state step2 begin --ºñ¼®¿¡ Źº»À» ¶ß·¯ °¡¾ßÇÑ´Ù.
		when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin   --Å×½ºÆ®¿ë
			set_state(start)
			say(gameforge.spider_dungeon_3floor_boss._40_say)
		end
		
		-----------Äù½ºÆ®ÆíÁö2------------
		when letter begin
			send_letter(gameforge.spider_dungeon_3floor_boss._70_sendLetter)

			local v = find_npc_by_vnum(30130)
			if 0 != v then
			    target.vid("__TARGET__", v, mob_name(30130))
			end
		end

		when button or info begin
			say_title(gameforge.spider_dungeon_3floor_boss._70_sendLetter)
			say(gameforge.spider_dungeon_3floor_boss._80_say)
			say("")
		end

		when 30130.chat.gameforge.spider_dungeon_3floor_boss._70_sendLetter begin
			target.delete("__TARGET__")
			
			say_title(pc.getname())
			----"12345678901234567890123456789012345678901234567890"|
			say(gameforge.spider_dungeon_3floor_boss._90_say)
			set_state(step3)
		end
		
		
		when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
			say(gameforge.spider_dungeon_3floor_boss._20_say)
		end
		
		when 20355.chat.gameforge.spider_dungeon_3floor_boss._50_npcChat begin
			
			say_title(mob_name(20355))
			----"12345678901234567890123456789012345678901234567890"|
			say(gameforge.spider_dungeon_3floor_boss._100_say)
		end
		
	end

	state step3 begin --Źº»À» ¶¹À¸´Ï °æºñ¿¡°Ô µ¹¾Æ°£´Ù.
		when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin   --Å×½ºÆ®¿ë
			set_state(start)
			say(gameforge.spider_dungeon_3floor_boss._40_say)
		end
		
		when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
			say(gameforge.spider_dungeon_3floor_boss._20_say)
		end
		
		when letter begin
			send_letter(gameforge.spider_dungeon_3floor_boss._110_sendLetter)

			--°æºñ´ëÀåÀ» °¡¸®Å²´Ù.
			local v = find_npc_by_vnum(20355)
			if 0 != v then
			    target.vid("__TARGET__", v, mob_name(20355))
			end
		end

		when button or info begin
			say_title(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
			say(gameforge.spider_dungeon_3floor_boss._120_say)
			say("")
		end
		
		--À»µÎÁö¸¦ ¼±ÅÃÇϸé ÇØ´ç Äù½ºÆ®¿¡ °ü·ÃµÈ ´ëÈ*¸¦ ³ª´* ¼ö ÀÖ´Ù.
		when 20355.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
			say_title(mob_name(20355))
			say(gameforge.spider_dungeon_3floor_boss._130_say)
			set_state(step4)
		end
		
	end
		
	state step4 begin  --À»µÎÁö¿¡°Ô Źº»À» ¸Ã±âÀÚ.
		when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin   --Å×½ºÆ®¿ë
			set_state(start)
			say(gameforge.spider_dungeon_3floor_boss._40_say)
		end
		
		when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
			say(gameforge.spider_dungeon_3floor_boss._20_say)
		end
		
		-----------Äù½ºÆ®ÆíÁö2------------
		when letter begin
			send_letter(gameforge.spider_dungeon_3floor_boss._110_sendLetter)

			-- À»µÎÁö¸¦ °¡¸®Å²´Ù.
			local v = find_npc_by_vnum(20011)
			if 0 != v then
			    target.vid("__TARGET__", v, mob_name(20011))
			end
		end

		when button or info begin
			say_title(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
			say(gameforge.spider_dungeon_3floor_boss._140_say)
			say("")
		end
		
		when 20011.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
			target.delete("__TARGET__")
			
			say_title(mob_name(20011))
			say(gameforge.spider_dungeon_3floor_boss._150_say)
			say("")
			
			set_state(step5)
		end

		when 20355.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
			say_title(mob_name(20355))
			say(gameforge.spider_dungeon_3floor_boss._130_say)
		end
	end

	state step5 begin  --°æºñÇÑÅ× ÆíÁö ¹è´Þ
		when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin   --Å×½ºÆ®¿ë
			set_state(start)
			say(gameforge.spider_dungeon_3floor_boss._40_say)
		end
		
		when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
			say(gameforge.spider_dungeon_3floor_boss._20_say)
		end
		
		when letter begin
			send_letter(gameforge.spider_dungeon_3floor_boss._110_sendLetter)

			-- À»µÎÁö¸¦ °¡¸®Å²´Ù.
			local v = find_npc_by_vnum(20355)
			if 0 != v then
			    target.vid("__TARGET__", v, mob_name(20355))
			end
		end

		when button or info begin
			say_title(gameforge.spider_dungeon_3floor_boss._170_sayTitle)
			say(gameforge.spider_dungeon_3floor_boss._180_say)
			say("")
		end
		
		when 20355.chat.gameforge.spider_dungeon_3floor_boss._190_npcChat begin
			target.delete("__TARGET__")
			say_title(mob_name(20355))
			----"12345678901234567890123456789012345678901234567890"|
			say(gameforge.spider_dungeon_3floor_boss._200_say)
			say("")
			
			set_state(step6) pc.give_item2(76019)
		end	
		
		when 20011.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
			say_title(mob_name(20011))
			say(gameforge.spider_dungeon_3floor_boss._160_say)
			say("")
		end
		
	end

	state step6 begin --°æºñ´Â ³ª¸¸ ÀϽÃŲ´Ù. À»µÎÁö¿Í »óÀÇÇÏÀÚ.
		when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin   --Å×½ºÆ®¿ë
			set_state(start)
			say(gameforge.spider_dungeon_3floor_boss._40_say)
		end
		
		when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
			say(gameforge.spider_dungeon_3floor_boss._20_say)
		end
		
		when letter begin
			send_letter(gameforge.spider_dungeon_3floor_boss._190_npcChat)
			
			-- À»µÎÁö¸¦ °¡¸®Å²´Ù.
			local v = find_npc_by_vnum(20011)
			if 0 != v then
			    target.vid("__TARGET__", v, mob_name(20011))
			end
		end

		when button or info begin
			say_title(gameforge.spider_dungeon_3floor_boss._190_npcChat)
			say(gameforge.spider_dungeon_3floor_boss._200_say)
			say("")
		end

		--À»µÎÁö¸¦ ¼±ÅÃÇϸé ÇØ´ç Äù½ºÆ®¿¡ °ü·ÃµÈ ´ëÈ*¸¦ ³ª´* ¼ö ÀÖ´Ù.
		when 20011.chat.gameforge.spider_dungeon_3floor_boss._190_npcChat begin
			target.delete("__TARGET__")
			say_title(mob_name(20011))
			say(gameforge.spider_dungeon_3floor_boss._230_say)
			
			set_state(boss_ok)
			
		end
		
	end

	state boss_ok begin  -- ¿*¼è¸¦ ¸¸µé¼ö ÀÖ°Ô µÈ ÃÖÁ¾»óÅÂ. ÀÌÁ¦ºÎÅÍ °Å¹Ì±¼ º¸½º·ë¿¡ ÀÔÀåÇÒ ¼ö ÀÖ´Ù.
		when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin   --Å×½ºÆ®¿ë
			set_state(start)
			say(gameforge.spider_dungeon_3floor_boss._40_say)
		end

		when 20011.chat.gameforge.spider_dungeon_3floor_boss._210_npcChat begin
			
			if pc.count_item(30025) > 0 and pc.count_item(30056) > 0 and pc.count_item(30057) > 0 and pc.count_item(30058) > 0 and pc.count_item(30059) > 0 and pc.count_item(30326) > 0 then
			    say_title(mob_name(20011))
			    say(gameforge.spider_dungeon_3floor_boss._250_say)
			    pc.remove_item(30025, 1)
			    pc.remove_item(30056, 1)
			    pc.remove_item(30057, 1)
			    pc.remove_item(30058, 1)
			    pc.remove_item(30059, 1)
			    pc.remove_item(30326, 1)
			    if math.random(1,2000) <= 1000 then
			        say(gameforge.spider_dungeon_3floor_boss._260_say)
			        pc.give_item2(30324, 1)
			    else
			        say(gameforge.spider_dungeon_3floor_boss._270_say)
			    end
			else
			    say_title(mob_name(20011))
			    say(gameforge.spider_dungeon_3floor_boss._280_say)
			end
		end
		
		


		when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin

						if game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
			
			    local starttime = game.get_event_flag("spider_lair_start_time_"..get_channel_id())
			    local current_time = get_global_time()
			    
			    if party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
			    
			        if  starttime +  lair_enter_wait_time >= current_time  and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) and game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
			            say(gameforge.spider_dungeon_3floor_boss._300_say) -- Å×½ºÆ®¿ë
			            local warp =  select(locale.confirm,locale.cancel)
			            if warp == 1 then
			                pc.setqf("firstIn",1)
			                pc.setqf("retry_limit_time", starttime + lair_time + access_limit_time )
			                set_state(inLair)
			                pc.warp(88100,614800)
			                return
			            end
			        else
			            say(gameforge.spider_dungeon_3floor_boss._310_say) -- Å×½ºÆ®¿ë
			            return
			        end
			    else
										local remain_time = (game.get_event_flag("spider_lair_end_time_"..get_channel_id() ) - get_global_time()) / 60
										if remain_time < 0 then
											say(gameforge.spider_dungeon_3floor_boss._410_say)
										 	game.set_event_flag("spider_lair_ongoing_"..get_channel_id(),0)
								game.set_event_flag("spider_lair_leader_"..get_channel_id(), 0)
  		  					game.set_event_flag("spider_dead"..get_channel_id(),0)
											return
										end
			        say(gameforge.spider_dungeon_3floor_boss._320_say)
			        --- here we should change to string.format %s key
			        say(string.format(gameforge.spider_dungeon_3floor_boss._330_say, math.ceil(remain_time)))
			        return
			    end	
			elseif  pc.getqf("retry_limit_time") > get_global_time() then
								local access_limit = (pc.getqf("retry_limit_time") - get_global_time()) / 60
			    say(gameforge.spider_dungeon_3floor_boss._340_say)
			    -- here we should also change to string.format %s key
			    say(string.format(gameforge.spider_dungeon_3floor_boss._350_say, math.ceil(access_limit)))
			    return
			elseif party.is_leader()   then
			     if false == pc.can_warp() then
			          say(gameforge.spider_dungeon_3floor_boss._360_say)
			          return
			     end
			        say(gameforge.spider_dungeon_3floor_boss._370_say)
			        local warp = select(locale.confirm,locale.cancel)
			        if warp == 1 then
			            
			            set_state(inLair)
			            
			            pc.remove_item(30324, 1)
			            
			            mob.spawn(2094,369,551,0,0)
			            
			            --°ª ¼³Á¤.
			            game.set_event_flag("spider_lair_ongoing_"..get_channel_id()		,			1)
			            game.set_event_flag("spider_lair_start_time_"..get_channel_id()	, get_global_time())
			            game.set_event_flag("spider_lair_end_time_"..get_channel_id()		, get_global_time() + lair_time)
			            game.set_event_flag("spider_lair_leader_"..get_channel_id()			, party.get_leader_pid())
			            
			            pc.setqf("retry_limit_time", get_global_time() + lair_time + access_limit_time )
			            pc.setqf("firstIn",1)
			            
			            
			            server_timer("spider_end_timer", lair_time )
			            
			            
			            pc.warp(88100,614800)
			        end
			        return
			    else
			        say(gameforge.spider_dungeon_3floor_boss._380_say)
			        return
			    end
			else --¸®´õ ¾Æ´Ï´Ù.
			    say(gameforge.spider_dungeon_3floor_boss._390_say)
			    return
			end
			
		end
		

	end

	state inLair begin
		when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin   --Å×½ºÆ®¿ë
			set_state(start)
			say(gameforge.spider_dungeon_3floor_boss._40_say)
		end
		


		when login  begin 
			-- Á¤»óÀûÀ¸·Î º¸½º·ë¿¡ ÀÔÀå. 
			--if pc.getqf("firstIn") == 1  and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
			if get_global_time() < pc.getqf("retry_limit_time") -  access_limit_time and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
				pc.setqf("firstIn",0)
			elseif pc.getx() >= 827 and pc.getx() <= 937 and pc.gety() >= 6127 and  pc.gety() <= 6257 then 
				pc.warp(95900,571000)
				pc.remove_item(30327, 1)
			else -- À§¿¡¼* ÆÃ°Ü³½ À¯Àú°¡ ¹Û¿¡¼* ·Î±×ÀÎ ÇÏ°Ô µÇ¸é, Á¢±Ù Á¦ÇÑ ½Ã°£À» ¼ÂÆÃÇØÁÜ.
				pc.remove_item(30327, 1)
			    set_state( boss_ok )
			    local limit = pc.getqf("retry_limit_time")
			    
			    if limit > ( get_global_time() + access_limit_time ) then
			        limit = ( get_global_time() + access_limit_time )
			    end
			    pc.setqf("retry_limit_time", limit )
			    
			    local duration = limit - get_global_time()
			end
		end

		when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
			if game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
			    local starttime = game.get_event_flag("spider_lair_start_time_"..get_channel_id())
			    local current_time = get_global_time()
			    
			    if party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
			        if  starttime +  lair_enter_wait_time >= current_time  and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) and game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
			            say(gameforge.spider_dungeon_3floor_boss._300_say) -- Å×½ºÆ®¿ë
			            local warp =  select(locale.confirm,locale.cancel)
			            if warp == 1 then
			                pc.warp(88100,614800)
			                return
			            end
					end
				end
			end
		end
 
		when 2092.kill begin --´ë¿Õ°Å¹Ì Á×ÀÓ
			server_timer("spider_dead_timer", king_kill_wait_time)
			game.set_event_flag("spider_dead"..get_channel_id(), 1)
			notice_multiline(gameforge.spider_dungeon_3floor_boss._400_say,notice_in_map)
		end
		
		
		when 2095.kill begin --°Å¹Ì¾Ë Á×ÀÓ
			local kingVid = game.get_event_flag("king_vid")
			local remain_egg = game.get_event_flag("remain_egg"..get_channel_id())
			notice_multiline(gameforge.spider_dungeon_3floor_boss._420_notice,notice_in_map)
			
			if remain_egg > 0 then
			    remain_egg = remain_egg - 1
			    game.set_event_flag("remain_egg"..get_channel_id(), remain_egg)
			end
			
			--°Å¹ÌÀÇ °ø°Ý·Â º¸Á¤
			 npc.set_vid_attack_mul(kingVid, 10/(remain_egg + 1))
			 
			 --°Å¹Ì°¡ ¹Þ´Â ÇÇÇØ·® º¸Á¤
			 npc.set_vid_damage_mul(kingVid, 10/(remain_egg + 1))
		end
		
		
		--  2012.4.5 ÀÌ»óÇö ¸®Á¨À§Ä¡ ¼öÁ¤
		when 30327.use with pc.getx() >= 827 and pc.get_map_index() == 217 and pc.getx() <= 937 and pc.gety() >= 6127 and  pc.gety() <= 6257 begin
			--say("¸Ê¹øÈ£ : "..pc.get_map_index())
			pc.remove_item(30327, 1)
			i = mob.spawn(2095,400,566,0,0)
			mob.spawn(2095,400,594,0,0)
			mob.spawn(2095,362,600,0,0)
			mob.spawn(2095,337,599,0,0)
			mob.spawn(2095,335,581,0,0)
			mob.spawn(2095,344,562,0,0)
			mob.spawn(2095,364,588,0,0)
			mob.spawn(2095,379,562,0,0)
			mob.spawn(2095,368,525,0,0)
			
			
			local kingVid = mob.spawn(2092,367,588,0,0)
			game.set_event_flag("king_vid",kingVid)
			--game.set_event_flag("remain_egg",9)
			game.set_event_flag("remain_egg"..get_channel_id(), 9)
		end
		
	end
end
Bercol is offline  
Old 12/21/2014, 11:36   #10764
 
elite*gold: 0
Join Date: Sep 2011
Posts: 194
Received Thanks: 5
Exclamation Drop Quest

Hallo,
Wenn ich die Urkunden-Drop quest bei Putty lade kommt folgender Fehler:
Code:
        with pc . get_gm_level ( ) == 5
QUEST : event_2
STATE : start
WHEN  : 20001.chat ("Urkunden-Drop")
        with pc . is_gm ( )
Error occured on compile Events/urkunden.quest
QUEST:

Code:
quest event_2 begin
    state start begin
        when 20001.chat."Urkunden-Drop" with pc.is_gm() begin
            if game.get_event_flag("event_2") != 1 then
                say_title("Urkunden-Drop")
                say("")
                say_reward("Das Urkunden-Drop Event ist Aus")
                say_reward("Moechtest du es Starten?")
                local a = select("Ja", "Nein")
                if a == 1 then
                    say_title("Urkunden-Drop")
                    say_reward("Wie lange soll das Event gehen?")
                    say_reward("Laenge in Stunden eingeben: ")
                    zeit = input()
                    if zeit == '' then
                        return
                    else
                    zeit_h = tonumber(zeit)
                    say_title("Urkunden-Drop")
                    say("")
                    say_reward("Moechtest du das Event für "..zeit_h.." Stunden laufen lassen?")
                    local b = select("Ja", "Nein")
                        if b == 1 then
                            server_timer("event_zeit", zeit_h*60*60)
                            game.set_event_flag("event_2", 1)
                            notice_all("Das Power Mount Urkunden Event hat gestartet!
							notice_all("Ihr Droppt nun von allen Mobs die Urkunden.")
                        else
                            return
                        end
                    end
                else
                    return
                end
            else
                say_title("Urkunden-Drop")
                say("")
                say_reward("Das Urkunden-Drop Event ist An")
                say_reward("Moechtest du es Anhalten?")
                local c = select("Ja", "Nein")
                if c == 1 then
                game.set_event_flag("event_2", 0)
                notice_all("Das Power Mount Urkunden Event wurde beendet!")
                else
                    return
                end
            end
        end
        when event_zeit.server_timer with game.get_event_flag("event_2") != 0 begin
            game.set_event_flag("event_2", 0)
                notice_all("Das Power Mount Urkunden Event wurde beendet!")
        end
        when kill with game.get_event_flag("event_2") == 1 and not npc.is_pc() begin
            local s=number(1, 250)
            if 5 == s then
            game.drop_item_with_ownership(52701,1)
			game.drop_item_with_ownership(52702,1)
			game.drop_item_with_ownership(52703,1)
			game.drop_item_with_ownership(52704,1)
            end
        end
    end
end
ChangedMan is offline  
Old 12/21/2014, 11:48   #10765
 
elite*gold: 54
Join Date: Jan 2013
Posts: 518
Received Thanks: 354
Du hast vergessen, bei einem "say" Text die Klammer zu schließen (:
PHP Code:
quest event_2 begin
    state start begin
        when 20001.chat
."Urkunden-Drop" with pc.is_gm() begin
            
if game.get_event_flag("event_2") != 1 then
                say_title
("Urkunden-Drop")
                
say("")
                
say_reward("Das Urkunden-Drop Event ist Aus")
                
say_reward("Moechtest du es Starten?")
                
local a select("Ja""Nein")
                if 
== 1 then
                    say_title
("Urkunden-Drop")
                    
say_reward("Wie lange soll das Event gehen?")
                    
say_reward("Laenge in Stunden eingeben: ")
                    
zeit input()
                    if 
zeit == '' then
                        
return
                    else
                    
zeit_h tonumber(zeit)
                    
say_title("Urkunden-Drop")
                    
say("")
                    
say_reward("Moechtest du das Event für "..zeit_h.." Stunden laufen lassen?")
                    
local b select("Ja""Nein")
                        if 
== 1 then
                            server_timer
("event_zeit"zeit_h*60*60)
                            
game.set_event_flag("event_2"1)
                            
notice_all("Das Power Mount Urkunden Event hat gestartet!")--Die Klammer fehlte
                            notice_all
("Ihr Droppt nun von allen Mobs die Urkunden.")
                        else
                            return
                        
end
                    end
                
else
                    return
                
end
            
else
                
say_title("Urkunden-Drop")
                
say("")
                
say_reward("Das Urkunden-Drop Event ist An")
                
say_reward("Moechtest du es Anhalten?")
                
local c select("Ja""Nein")
                if 
== 1 then
                game
.set_event_flag("event_2"0)
                
notice_all("Das Power Mount Urkunden Event wurde beendet!")
                else
                    return
                
end
            end
        end
        when event_zeit
.server_timer with game.get_event_flag("event_2") != 0 begin
            game
.set_event_flag("event_2"0)
                
notice_all("Das Power Mount Urkunden Event wurde beendet!")
        
end
        when kill with game
.get_event_flag("event_2") == and not npc.is_pc() begin
            local s
=number(1250)
            if 
== s then
            game
.drop_item_with_ownership(52701,1)
            
game.drop_item_with_ownership(52702,1)
            
game.drop_item_with_ownership(52703,1)
            
game.drop_item_with_ownership(52704,1)
            
end
        end
    end
end 
Rextrus is offline  
Thanks
1 User
Old 12/21/2014, 11:48   #10766
 
.Delta's Avatar
 
elite*gold: 26
Join Date: Mar 2010
Posts: 3,765
Received Thanks: 2,661
Das offensichtliche zuerst:
Dir haben in einer Zeile ") gefehlt
PHP Code:
quest event_2 begin
    state start begin
        when 20001.chat
."Urkunden-Drop" with pc.is_gm() begin
            
if game.get_event_flag("event_2") != 1 then
                say_title
("Urkunden-Drop")
                
say("")
                
say_reward("Das Urkunden-Drop Event ist Aus")
                
say_reward("Moechtest du es Starten?")
                
local a select("Ja""Nein")
                if 
== 1 then
                    say_title
("Urkunden-Drop")
                    
say_reward("Wie lange soll das Event gehen?")
                    
say_reward("Laenge in Stunden eingeben: ")
                    
zeit input()
                    if 
zeit == '' then
                        
return
                    else
                    
zeit_h tonumber(zeit)
                    
say_title("Urkunden-Drop")
                    
say("")
                    
say_reward("Moechtest du das Event für "..zeit_h.." Stunden laufen lassen?")
                    
local b select("Ja""Nein")
                        if 
== 1 then
                            server_timer
("event_zeit"zeit_h*60*60)
                            
game.set_event_flag("event_2"1)
                            
notice_all("Das Power Mount Urkunden Event hat gestartet!")
                            
notice_all("Ihr Droppt nun von allen Mobs die Urkunden.")
                        else
                            return
                        
end
                    end
                
else
                    return
                
end
            
else
                
say_title("Urkunden-Drop")
                
say("")
                
say_reward("Das Urkunden-Drop Event ist An")
                
say_reward("Moechtest du es Anhalten?")
                
local c select("Ja""Nein")
                if 
== 1 then
                game
.set_event_flag("event_2"0)
                
notice_all("Das Power Mount Urkunden Event wurde beendet!")
                else
                    return
                
end
            end
        end
        when event_zeit
.server_timer with game.get_event_flag("event_2") != 0 begin
            game
.set_event_flag("event_2"0)
                
notice_all("Das Power Mount Urkunden Event wurde beendet!")
        
end
        when kill with game
.get_event_flag("event_2") == and not npc.is_pc() begin
            local s
=number(1250)
            if 
== s then
            game
.drop_item_with_ownership(52701,1)
            
game.drop_item_with_ownership(52702,1)
            
game.drop_item_with_ownership(52703,1)
            
game.drop_item_with_ownership(52704,1)
            
end
        end
    end
end 
.Delta is offline  
Thanks
1 User
Old 12/21/2014, 22:30   #10767

 
G.I Duke's Avatar
 
elite*gold: 313
Join Date: Apr 2013
Posts: 585
Received Thanks: 122
#gelöst
G.I Duke is offline  
Old 12/22/2014, 05:11   #10768
 
Monkey D.Dragon's Avatar
 
elite*gold: 909
Join Date: Jun 2014
Posts: 153
Received Thanks: 38
Code:
define BLOCK_DOOR 20387
define DUNGEON_MAN 20385
define DUNGEON_MAN_DIR 0
define DUNGEON_MAP_INDEX 351
define ENTER_LIMIT_TIME 30
define ENTRY_MAN 20394
define ENTRY_MAP_INDEX 62
define FINAL_BOSS 6091
define LEVEL2_KEY 30329
define LEVEL2_STONE 20386
define LEVEL4_TARGET 6051
define LEVEL5_REALKEY 30330
define LEVEL5_STONE 20386
define LEVEL5_GEN_LIMIT 100
define LEVEL6_TARGET 8057
define LEVEL_CUT 100
define MOB_REGEN_FILE_PATH = "data/dungeon/flame_dungeon/"
define IN_DOOR 20388
define NPC_REGEN_FILE_PATH = "data/dungeon/flame_dungeon/npc.txt"
define TICKET_GROUP 10033
define LIMITED_PASS_TICKET 50512

quest flame_dungeon begin
	state start begin	
		when ENTRY_MAN.click with pc.get_level() >= 90 begin
			pc.give_item2(LIMITED_PASS_TICKET, 1)
			set_state(run)
		end
	end

	state run begin
	
	function setting()
		return 
		{
		["bossroom_entry_pos"] = {8109,6867},
		["boss_pos"] = {686,637},
		["doors_pos"] = {
			{320,394},
			{293,359},
			{333,321},
			{378,320},
			{400,355},
			{394,401}
		},
		["idoors_pos"] = {
			{268,447},
			{234,359},
			{300,264},
			{454,217},
			{470,355},
			{467,469}
		},
		["doors_dir"] = {135,90,210,152,90,223},
		["idoors_dir"] = {135,90,210,135,90,239},
		["dungeon_entry_pos"] = {7762, 6739},-- 던전에 처음 들어오는 곳
		["DUNGEON_MAN_bpos"] = {690,722},
		["DUNGEON_MAN_pos"] = {354,362},
		["LEVEL2_STONE_pos"] = {195,352},
		["LEVEL4_TARGET_pos"] = {470,175},
		["LEVEL5_STONE_pos"] = {
				{486, 345},
				{511, 336},
				{525, 349},
				{521, 365},
				{503, 372},
				{486, 365},
				{500, 354}
		},
		["LEVEL6_TARGET_pos"] = {511,480},
		["outside_entry_pos"] = {6142,7068}, --입장시켜주는애 서있는 곳
		["YAK_pos"] = {376, 397} -- 약환 부하
		
		}
	end
	function is_flamed(idx) -- 적룡성에 있는지 확인 
		return idx >= DUNGEON_MAP_INDEX * 10000 and idx < (DUNGEON_MAP_INDEX + 1) *10000
	end
	function make_dungeon() -- 던전 만들기
		local setting = flame_dungeon.setting()
		d.new_jump_party(DUNGEON_MAP_INDEX, setting.dungeon_entry_pos[1], setting.dungeon_entry_pos[2])
		-- d.spawn_mob_ac_dir(DUNGEON_MAN, setting.DUNGEON_MAN_pos[1], setting.DUNGEON_MAN_pos[2],DUNGEON_MAN_DIR)
		-- d.spawn_mob(YAK,setting.YAK_pos[1],setting.YAK_pos[2])
		d.regen_file(NPC_REGEN_FILE_PATH)
		d.setf("level",0)
		for i=1,6 do
			d.set_unique("door"..i, d.spawn_mob_ac_dir(BLOCK_DOOR, setting.doors_pos[i][1], setting.doors_pos[i][2],setting.doors_dir[i]))
		end
		for i=1,6 do
			d.set_unique("idoor"..i, d.spawn_mob_ac_dir(IN_DOOR, setting.idoors_pos[i][1], setting.idoors_pos[i][2],setting.idoors_dir[i]))
		end
		d.setf("clear_count",0)
		d.setf("started",0)
		d.setf("dungeon_enter",0) -- 정상적으로 입장했는지? // 비정상 : 0 정상 : 1 // 튕기면 입장제한시간을 기록 안함
	end	
	function go_boss() -- 보스룸 가기 
		local setting = flame_dungeon.setting()
		if pc.get_level() < 104 then --레벨확인
            -- syschat(gameforge.flame_dungeon._580_notice)
            say(gameforge.flame_dungeon._580_notice)
            return
		else
			if pc.getf("main_quest_flame_lv103", "__status")==main_quest_flame_lv103.__COMPLETE__ then -- 선행퀘스트 확인
				-- say_title(gameforge.flame_dungeon._010_say)
                say(gameforge.flame_dungeon._010_say)
				local warp = select(gameforge.flame_dungeon._020_select,gameforge.flame_dungeon._030_select)
				if warp == 1 then
					d.setf("level",17)
					d.jump_all(setting.bossroom_entry_pos[1],setting.bossroom_entry_pos[2])
					d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_fild_boss.txt")
				--	d.spawn_mob(DUNGEON_MAN,setting.DUNGEON_MAN_bpos[1],setting.DUNGEON_MAN_bpos[2])
					d.spawn_mob(FINAL_BOSS,setting.boss_pos[1],setting.boss_pos[2])
				end
			else 
                -- syschat(gameforge.flame_dungeon._040_notice)
                say(gameforge.flame_dungeon._040_notice)
                return
			end
		end
	end
	function level_clear() -- 레벨 깼을때, 리젠클리어, 지역클리어
		d.setf("level",0)
		d.clear_regen()
		d.purge_area(750000,620000,817400,689400) -- 맵전체 -- d.purge() 사용고려
	end
	function clear_timer(inx) -- 타이머 다지우기
		clear_server_timer ("flame_dungeon_0m_left_timer", inx)
		clear_server_timer ("flame_dungeon_1m_left_timer", inx)
		clear_server_timer ("flame_dungeon_5m_left_timer", inx)
		clear_server_timer ("flame_dungeon_10m_left_timer", inx)
		clear_server_timer ("flame_dungeon_15m_left_timer", inx)
		clear_server_timer ("flame_dungeon_30m_left_timer", inx)
		clear_server_timer ("flame_dungeon_45m_left_timer", inx)
		clear_server_timer ("killed_A_1", inx)
		clear_server_timer ("killed_A_2", inx)
		clear_server_timer ("flame_dungeon_ticket_remove", inx)	
	end
	
		when login begin
			local idx = pc.get_map_index()
			local setting = flame_dungeon.setting()
			if idx == DUNGEON_MAP_INDEX then
				pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
			elseif flame_dungeon.is_flamed(idx) then -- 던전 입장, 보스룸 입장 예외
			------------------------------------------------------------------------------------------------------------------------------------------------------
			--아래의 두줄중 위에줄을 사용하면 던전에서 종료했을경우 다시 원래 위치로 돌아온다. 아래줄을 활성화 하면 던전에서 종료했을 경우 던전 밖으로 나가게 된다.
			--던전에서 종료했을 경우 다시 원래 위치로 돌아올 경우, 던전에서 나가는 방법을 만들어줘야 하기 때문에 적룡성비의 나가기란 옵션을 활성화 해줘야 한다.
			------------------------------------------------------------------------------------------------------------------------------------------------------
				-- pc.set_warp_location(0, 0 , 0) --튕겼을때 다시 돌아오게 만들어 주는 부분
				pc.set_warp_location(ENTRY_MAP_INDEX, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) -- 던전 나갔을 때 밖으로 튕기게함
				local ticketGroup = {get_special_item_group (TICKET_GROUP)}
				if d.getf("dungeon_enter") == 0 then -- 진행중이 아니면
					local canPass = false
					for i=1, table.getn(ticketGroup),2 do 
						if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
							canPass = true
							break
						end
					end

					if get_global_time() - pc.getf("flame_dungeon","exit_time") < ENTER_LIMIT_TIME * 60 then -- 입장제한시간이 걸렸으면
						notice_multiline(gameforge.flame_dungeon._050_notice,d.notice)
						say(gameforge.flame_dungeon._060_say)
						timer("flame_dungeon_warp_timer", 5)
					elseif not canPass then
						notice_multiline(gameforge.flame_dungeon._070_notice,d.notice)
						say(gameforge.flame_dungeon._080_say)
						timer("flame_dungeon_warp_timer", 5)
					elseif pc.get_level() < 100 then
						notice_multiline(gameforge.flame_dungeon._090_notice,d.notice)
						say(gameforge.flame_dungeon._100_say)
						timer("flame_dungeon_warp_timer", 5)
					end
				elseif pc.getf("flame_dungeon","ticket_delete") == 0 then -- 진행중인데 티켓이 안지워졌을경우
					
					for i=1, table.getn(ticketGroup),2 do 
						if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
							pc.remove_item(ticketGroup[i], ticketGroup[i+1])
							break
						end
					end
					pc.setf("flame_dungeon","ticket_delete",1)
				end
			else
				pc.setf("flame_dungeon","ticket_delete",0)
			end
		end
		when flame_dungeon_warp_timer.timer begin
			local setting = flame_dungeon.setting()
			pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
		end
		when logout begin
			local idx = pc.get_map_index()
			if flame_dungeon.is_flamed(idx) then 
				if d.getf("dungeon_enter") == 1 then -- 정상적인 던전 입장 후 로그아웃
					pc.setf("flame_dungeon","exit_time",get_global_time()) -- 인스턴스 안에서의 마지막 시간을 기록, 근데 시간제한 때문에 or 그냥 튕긴거면 안기록
				end
				

			end
		end
		when ENTRY_MAN.chat.gameforge.flame_dungeon._110_npcChat begin
		
			local setting = flame_dungeon.setting()
			if party.is_party() then
				-- 던전 도중 나갈 경우 재입장 가능하도록
				local party_check = 0
				if d.find(party.getf("dungeon_index")) then
					party_check = (d.getf_from_map_index("party_leader_pid", party.getf("dungeon_index")) == party.get_leader_pid())
				end
				
				if d.find(party.getf("dungeon_index")) and party_check then
					if get_global_time() - pc.getf("flame_dungeon","exit_time") < 5 * 60 then -- 접종 이후 5분 내?
						local dungeon_level = d.getf_from_map_index("level", party.getf("dungeon_index"))
						if dungeon_level == 17 then -- 보스
							pc.warp(setting.bossroom_entry_pos[1] * 100, setting.bossroom_entry_pos[2] * 100, party.getf("dungeon_index"))
						else
							pc.warp(setting.dungeon_entry_pos[1] * 100, setting.dungeon_entry_pos[2] * 100, party.getf("dungeon_index"))
						end
					else -- 5분 초과하여 재 입장 불가
						say_title(mob_name(ENTRY_MAN))
                        say(gameforge.flame_dungeon._590_say)
					end
				else
					local pids = {party.get_member_pids()}
					local noTicketMembers = {}
					local notEnoughLevelMembers = {}
					local ticketCheck = true
					local levelCheck = true
					local ticketGroup = {get_special_item_group (TICKET_GROUP)}
					for i, pid in next, pids, nil do
						q.begin_other_pc_block(pid)
						local canPass = false
						for idx=1, table.getn(ticketGroup),2 do 
							if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
								canPass = true
								break
							end
						end
						
						if not canPass then
							table.insert(noTicketMembers, pc.get_name())
							ticketCheck = false
						end
						if pc.level < LEVEL_CUT then
							table.insert(notEnoughLevelMembers, pc.get_name())
							levelCheck = false
						end
						q.end_other_pc_block()
					end

					if not ticketCheck then
						say_title(mob_name(ENTRY_MAN))
						say(gameforge.flame_dungeon._610_say)
						for i, name in next, noTicketMembers, nil do
							say(color(1,1,0), "    "..name)
						end
						if levelCheck then
							return
						else
							wait()
						end
					end

					if not levelCheck then
						say_title(mob_name(ENTRY_MAN))
						say(gameforge.flame_dungeon._630_say)
						for i, name in next, notEnoughLevelMembers, nil do
							say(color(1,1,0), "    "..name)
						end
						return
					end

					if party.is_leader() then
						say(gameforge.flame_dungeon._120_say)
						local warp = select(gameforge.flame_dungeon._130_select,gameforge.flame_dungeon._140_select)
						if warp == 1 then
							if party.is_map_member_flag_lt("exit_time", get_global_time() - ENTER_LIMIT_TIME * 60 ) then
								flame_dungeon.make_dungeon()
							else
								--say("test : 파티원의 입장 제한시간이 끝나지 않았습니다.")
								say(gameforge.flame_dungeon._600_say)
							end
						end
						
						party.setf("flame_dungeon_boss_kill_count", 0)
						
					else
						say(gameforge.flame_dungeon._150_say)
					end
				end
			else
				say(gameforge.flame_dungeon._160_say)
			end
		end
		-- when ENTRY_MAN.chat."Test : 리소스확인" with is_test_server() begin -- 테스트용
			-- local setting = flame_dungeon.setting()
			-- pc.setf("flame_dungeon","fdRtest",1)
			-- pc.warp( setting.dungeon_entry_pos[1]*100, setting.dungeon_entry_pos[2]*100, DUNGEON_MAP_INDEX)
		-- end
		
		
		when ENTRY_MAN.chat."TEST : Init time limit init" with is_test_server() begin -- 테스트용
			pc.setf("flame_dungeon","exit_time",get_global_time()-1800)
			say("Done")
		end
		-- when DUNGEON_MAN.chat."Test : 현재 상태" with is_test_server() begin -- 테스트용
			-- say("남은 몬스터 : "..d.count_monster())
			-- say("level : "..d.getf("level"))
			-- say("Dmap index : "..d.get_map_index())
			-- say("Pmap index : "..pc.get_map_index())
			-- say("access limit : "..pc.getf("flame_dungeon","exit_time"))
			-- say("global time : "..get_global_time())
			-- if flame_dungeon.is_flamed(d.get_map_index()) then
				-- say("in dungeon") -- is_flamed 함수 체크
			-- end
			-- if d.is_unique_dead("stone1") then
				-- say("stone1 is dead")
			-- else
				-- say("stone1 is not dead")
			-- end
		-- end
		-- when DUNGEON_MAN.chat."처음으로" begin -- 테스트용
			-- say("초기화 합니다")
			-- flame_dungeon.clear_timer(d.get_map_index())
			-- flame_dungeon.make_dungeon()
		-- end
		when DUNGEON_MAN.chat."Test : Boss Room" with is_test_server() begin -- 테스트용
			flame_dungeon.go_boss()
		end
		
		-- < 시간 경과 타이머>
		-- when DUNGEON_MAN.chat."나가기" begin -- 던전에서 튕기지 않게 할 경우 활성화
			-- local setting = flame_dungeon.setting()
			-- say("밖으로 나가시겠습니까?")
			-- local warp = select("확인","취소")
			-- if warp == 1 then
				-- pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
			-- end
		-- end
		when flame_dungeon_45m_left_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 45),d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				server_timer('flame_dungeon_30m_left_timer', 15*60, get_server_timer_arg())
			end
		end
		when flame_dungeon_30m_left_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 30),d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				server_timer('flame_dungeon_15m_left_timer', 15*60, get_server_timer_arg())
			end
		end
		when flame_dungeon_15m_left_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 15),d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				server_timer('flame_dungeon_5m_left_timer', 10*60, get_server_timer_arg())
			end
		end
		when flame_dungeon_5m_left_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 5),d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				server_timer('flame_dungeon_1m_left_timer', 4*60, get_server_timer_arg())
			end
		end
		when flame_dungeon_1m_left_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 1),d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				server_timer ("flame_dungeon_0m_left_timer", 60, get_server_timer_arg())
			end
		end
		when flame_dungeon_0m_left_timer.server_timer begin
			local setting = flame_dungeon.setting()
			if d.select(get_server_timer_arg()) then		
				notice_multiline(gameforge.flame_dungeon._190_notice,d.notice)
				notice_multiline(gameforge.flame_dungeon._200_notice,d.notice)
				server_timer("dungeon_end_timer",10,d.get_map_index())	
			end
		end	


		-- <<<< 던전 진행>>>> --
		when DUNGEON_MAN.chat.gameforge.flame_dungeon._210_npcChat with npc.lock() begin -- '0x'는 x번째 레벨 퀘스트 받을 수 있는 상태 , '1x'는 x번째 레벨 퀘스트 진행중
			local setting = flame_dungeon.setting()
			if d.getf("started") == 0 then
				say(gameforge.flame_dungeon._230_say)
				say(gameforge.flame_dungeon._240_say)
				wait()
				d.setf("started",1)
				-- 파티원이 튕겨버렸는데 자기만 남아서 exit timer가 리셋되면 안되니깐 다음레벨을 눌렀을때를 시작할때로 봄
				server_timer ("flame_dungeon_45m_left_timer",15*60, d.get_map_index())
				notice_multiline(gameforge.flame_dungeon._250_notice,d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				
				-- 통행증 관련된 처리
				-- 입장 후에 티켓을 없앤 사람을 튕겨내기 위해서 타이머를 이용해 티켓을 제거한다.
				local pids = {party.get_member_pids()}
				local ticketGroup = {get_special_item_group (TICKET_GROUP)}
				for i, pid in next, pids, nil do
					q.begin_other_pc_block(pid)
					local canPass = false
					for idx=1, table.getn(ticketGroup),2 do 
						if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
							canPass = true
							pc.remove_item(ticketGroup[idx], ticketGroup[idx+1])
							break
						end
					end
					
					if not canPass then
						pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
					end
					q.end_other_pc_block()
				end
				d.setqf2("flame_dungeon","ticket_delete",1)
				d.setf("dungeon_enter",1)
				
				-- 던전과 파티에 서로에 대한 정보를 저장한다.
				party.setf("dungeon_index", d.get_map_index())
				d.setf("party_leader_pid", party.get_leader_pid())
			end
			if d.getf("level") < 7 then --진행중이 아니면
				if d.getf("clear_count") == 6 then -- 방 여섯개 했으면 보스방
					d.setf("level",7)
				else
					local rand = number(1,6)--랜덤에서 방문체크는 따로 배열없이 방의 문의 열려있는지로 체크함
					local setlev = 0
					d.setf("level",7) -- 혹시 모를 문제가 생겨 레벨이 안잡힐경우를 대비해 보스룸으로 셋팅해둠
					for i=1,50 do
						setlev = setlev + 1
						if setlev > 6 then
							setlev = 1
						end
						if not d.is_unique_dead("door"..setlev) then
							rand = rand - 1
							if rand == 0 then
								d.setf("level",setlev)
								d.setf("clear_count",d.getf("clear_count")+1)
								break
							end	
						end
					end
				end
			end
				if d.getf("level") == 1 then
					say(gameforge.flame_dungeon._260_say)
					notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
					d.kill_unique("door1")
					d.kill_unique("idoor1")
					d.setf("level",11)
					d.regen_file (MOB_REGEN_FILE_PATH.."fd_a.txt")
						
					server_timer ("killed_A_1", 12, d.get_map_index())
				elseif d.getf("level") == 11 then
					say(gameforge.flame_dungeon._270_say)
					say_title(gameforge.flame_dungeon._280_sayTitle .. d.count_monster())
				elseif d.getf("level") == 2 then
						say(gameforge.flame_dungeon._290_say)
						say(gameforge.flame_dungeon._300_say)
						notice_multiline(gameforge.flame_dungeon._290_say,d.notice)
						notice_multiline(gameforge.flame_dungeon._300_say,d.notice)
						d.spawn_mob(LEVEL2_STONE, setting.LEVEL2_STONE_pos[1], setting.LEVEL2_STONE_pos[2]) -- 봉인석 소환
						d.kill_unique("door2")
						d.kill_unique("idoor2")
						d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_b.txt")
						d.setf("level",12)
				elseif d.getf("level") == 12 then
					say(gameforge.flame_dungeon._310_say)
				elseif d.getf("level") == 3 then
					say(gameforge.flame_dungeon._260_say)
					notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
					d.kill_unique("door3")
					d.kill_unique("idoor3")
					d.setf("level",13)
					d.regen_file (MOB_REGEN_FILE_PATH.."fd_c.txt")
					server_timer ("killed_A_1", 12, d.get_map_index())
				elseif d.getf("level") == 13 then
					say(gameforge.flame_dungeon._270_say)
					say_title(gameforge.flame_dungeon._280_sayTitle..d.count_monster())
				elseif d.getf("level") == 4 then -- 474 178
					say(gameforge.flame_dungeon._320_notice)
					notice_multiline(gameforge.flame_dungeon._320_notice,d.notice)
					d.setf("level",14)
					d.kill_unique("door4")
					d.kill_unique("idoor4")
					d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_d.txt")
					d.spawn_mob(LEVEL4_TARGET,setting.LEVEL4_TARGET_pos[1],setting.LEVEL4_TARGET_pos[2] ) -- 타겟몬스터 소한
				elseif d.getf("level") == 14 then
					say(gameforge.flame_dungeon._330_say)
					say(gameforge.flame_dungeon._340_say)
				elseif d.getf("level") == 5 then -- 510 355
					say(gameforge.flame_dungeon._350_say)
					say(gameforge.flame_dungeon._360_say)
					notice_multiline(gameforge.flame_dungeon._350_say,d.notice)
					notice_multiline(gameforge.flame_dungeon._360_say,d.notice)
					d.kill_unique("door5")
					d.kill_unique("idoor5")
					d.setf("level",15)
					d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					local vis = { 0,0,0,0,0,0,0}
					for i=1,7 do
						vis[i] = 0
					end
					for i = 1, 7 do -- 랜덤하게 돌소환
						local ran = number(1,7)
						local st = 0
						for j = 1, 50 do
							st = st + 1
							if st > 7 then
								st = 1
							end
							if vis[st] == 0 then
								ran = ran - 1
								if ran == 0 then
									vis[st] = 1
									d.set_unique("stone5_"..st, d.spawn_mob(LEVEL5_STONE, setting.LEVEL5_STONE_pos[i][1], setting.LEVEL5_STONE_pos[i][2]))
									break
								end
							end
						end
					end  
				elseif d.getf("level") == 15 then
					say(gameforge.flame_dungeon._370_say)
				elseif d.getf("level") == 6 then -- 507 490
					say(gameforge.flame_dungeon._380_say) 
					notice_multiline(gameforge.flame_dungeon._380_say,d.notice)
					d.setf("level",16)
					d.kill_unique("door6")
					d.kill_unique("idoor6")
					d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_f.txt")
					d.spawn_mob(LEVEL6_TARGET, setting.LEVEL6_TARGET_pos[1],setting.LEVEL6_TARGET_pos[2]) -- 타겟오브젝트 소환
				elseif d.getf("level") == 16 then
					say(gameforge.flame_dungeon._390_say)
					say(gameforge.flame_dungeon._400_say)
				elseif d.getf("level") == 7 then
					-- setskin(NOWINDOW)
                    flame_dungeon.go_boss()
				else
					say(gameforge.flame_dungeon._410_say)
				end
			npc.unlock()		
		end
	


		when dungeon_end_timer.server_timer begin -- 종료 타이머 (끝나고 나가는거)
			local setting = flame_dungeon.setting()
			if d.select(get_server_timer_arg()) then
				flame_dungeon.clear_timer(d.get_map_index())		
				d.set_warp_location(ENTRY_MAP_INDEX, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) 
				d.exit_all()
				d.setf("party_leader_pid", 0)
			end
		end

		when killed_A_1.server_timer begin -- 타이머 돌리기1 (level1,level3)
			if d.select(get_server_timer_arg()) then
				if d.count_monster() <= 0 then -- 1레벨 몬스터 전멸시
					if d.getf("level") == 11 then
						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
					else
						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
					end
					d.setf("level",0)
				else 
					server_timer ("killed_A_2", 6, get_server_timer_arg())
				end
			end
		end
		when killed_A_2.server_timer begin -- 타이머 돌리기2 (1과 2 번갈아가면서 돌아감)
			if d.select(get_server_timer_arg()) then
				if d.count_monster() <= 0 then -- 1레벨 몬스터 전멸시
					if d.getf("level") == 11 then
						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
					else
						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
					end
					d.setf("level",0)
				else 
					server_timer ("killed_A_1", 6, get_server_timer_arg())
				end
			end
		end

		when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 12 begin -- 2레벨 봉인석 열쇠 드랍
			local i = number(1, 100) -- 100분의 1 확률로 열쇠드랍
			if i == 1 then
				game.drop_item (LEVEL2_KEY, 1)
			end
		end
		when LEVEL2_STONE.take with flame_dungeon.is_flamed(pc.get_map_index()) and item.vnum == LEVEL2_KEY and d.getf("level") == 12 begin -- 2레벨 열쇠 먹었을때
			local i = number(1, 5) -- 5분의 1 확률로 진짜 열쇠
			if i == 1 then
				npc.purge()
				item.remove()
				notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
				notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
				flame_dungeon.level_clear()
			else
				item.remove()
				say(gameforge.flame_dungeon._450_say)
			end
		end

		when LEVEL4_TARGET.kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 14 begin
			notice_multiline(gameforge.flame_dungeon._460_notice,d.notice)
			notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
			flame_dungeon.level_clear()
		end

		when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 15 begin -- 5레벨 봉인석 열쇠 드랍
			local i = number(1, 30) -- 30분의 1 확률로 열쇠드랍
			if i == 1 then
				game.drop_item (LEVEL5_REALKEY, 1)
			end
		end
		when LEVEL5_STONE.take with flame_dungeon.is_flamed(d.get_map_index()) and item.vnum == LEVEL5_REALKEY and d.getf("level") == 15 begin -- 5레벨 진짜열쇠 먹었을때
			local setting = flame_dungeon.setting()
			if npc.get_vid() == d.get_unique_vid("stone5_1") then -- 첫번째 꺼는 선행되어야 할 일이 필요없으니 찾자마자 제거해줌
				npc.purge()
				item.remove()
				say(gameforge.flame_dungeon._470_say)
				d.setf("stonekill",2) -- 2번 돌을 죽여라
				if d.count_monster() < LEVEL5_GEN_LIMIT then
					d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
				end
			elseif npc.get_vid() == d.get_unique_vid("stone5_2") then 
				if d.getf("stonekill") == 2 then -- 2번돌을 죽일 차롄데 2번돌에게 열쇠를 먹였을 때
					npc.purge()
					item.remove()
					say(gameforge.flame_dungeon._480_say)
					d.setf("stonekill",3)
					if d.count_monster() < LEVEL5_GEN_LIMIT then
						d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					end
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
			--		say("2번")
				end
			elseif npc.get_vid() == d.get_unique_vid("stone5_3") then
				if d.getf("stonekill") == 3 then
					npc.purge()
					item.remove()
					say(gameforge.flame_dungeon._500_say)
					d.setf("stonekill",4)
					if d.count_monster() < LEVEL5_GEN_LIMIT then
						d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					end
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
			--		say("3번")
				end
			elseif npc.get_vid() == d.get_unique_vid("stone5_4") then
				if d.getf("stonekill") == 4 then
					npc.purge()
					item.remove()
					say(gameforge.flame_dungeon._510_say)
					d.setf("stonekill",5)
					if d.count_monster() < LEVEL5_GEN_LIMIT then
						d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					end
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
				--	say("4번")
				end
			elseif npc.get_vid() == d.get_unique_vid("stone5_5") then
				if d.getf("stonekill") == 5 then
					npc.purge()
					item.remove()
					say(gameforge.flame_dungeon._520_say)
					d.setf("stonekill",6)
					if d.count_monster() < LEVEL5_GEN_LIMIT then
						d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					end
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
			--		say("5번")
				end
			elseif npc.get_vid() == d.get_unique_vid("stone5_6") then
				if d.getf("stonekill") == 6 then
					npc.purge()
					item.remove()
					say(gameforge.flame_dungeon._530_say)
					d.setf("stonekill",7)
					if d.count_monster() < LEVEL5_GEN_LIMIT then
						d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					end
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
			--		say("6번")
				end
			else 
				if d.getf("stonekill") == 7 then
					npc.purge()
					item.remove()
					notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
					notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
					flame_dungeon.level_clear()
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
			--		say("7번")
				end
			end
		end

		when LEVEL6_TARGET.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==16 begin -- 망마석 파괴했을 때
			notice_multiline(gameforge.flame_dungeon._540_notice,d.notice)
			notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
			flame_dungeon.level_clear()
		end

		when FINAL_BOSS.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==17 begin -- 보스 죽였을때
			notice_multiline(gameforge.flame_dungeon._550_notice,d.notice)
			notice_multiline(gameforge.flame_dungeon._560_notice,d.notice)
			server_timer("dungeon_end_timer", 60,d.get_map_index())	
			flame_dungeon.level_clear()
			
			-- 파티원 중, 야마천 잡는 퀘스트(104렙, 105렙 퀘스트) 진행중인 사람이 있으면 퀘스트 클리어 되도록.
			if party.is_party() then
				party.setf("flame_dungeon_boss_kill_count", 1)
			end
			
		end
	end
end
help me pls ich weiß net woran es liegt sobald ich grp hab und auf den wäschter klicke lässt der mich net rein da steht auch nichts die quest funktion verschwindet einfach
Monkey D.Dragon is offline  
Old 12/24/2014, 13:30   #10769
 
elite*gold: 0
Join Date: Dec 2014
Posts: 94
Received Thanks: 23
PHP Code:
 quest metinkill2 begin 
    state start begin 
        when login 
or levelup with pc.level >= 10 begin 
            set_state
(information
        
end 
    end 

    state information begin 
        when letter begin 
            send_letter
("Metin-Auftrag 2"
        
end 

        when info 
or button begin 
            say
("Metin-Auftrag"
            
say("Hallo Spieler von Azunia2!"
            
say("Überall spawnen die Metinsteine. Unsere"
            
say("Krieger sind alle beim versuch sie zu"
            
say("töten gefallen. Wir hoffen auf"
            
say("deine Hilfe. Bitte befreie uns von von diesem"
            
say("Unheil, damit wir wieder in Frieden leben können"
            
say("Bitte hilf uns:"
            
say_reward("Töte 10 x Metin der Schlacht."
            
say_reward("Du findest sie auf Map1."
            
say_reward("Wenn du es geschafft hast bekommst du eine Belohnung!"
            
say_reward(""
            
say_reward(""
            
say(""
            
pc.setqf("state"10
            
q.set_counter("Metin der Schlacht"10
        
end 

        when 8001.kill begin 
            local count 
pc.getqf("state") - 
            
if count <= 10 then 
                pc
.setqf("state"count
                
q.set_counter("Metin der Schwärze"count
            
end 
            
if count == 0 then 
                say_title
("PvM Quest"
                
say("Sehr Gut!"
                
say("Gut du hast es geschafft."
                
say("Deine nächste Quest wartet auf dich."
                
say("Hier deine Belohnung"
                
say_reward("Du erhielst 1 Weißer Löwe."
                
pc.give_item2(71124
                
clear_letter() 
                
set_state(__COMPLETE__

            
end 
        end 
    end 

    state __COMPLETE__ begin 
    end 
end 
Die Steine werden nicht gezählt. Es bleibt immer bei 10.
Dringend Hilfe! Die Steine sollen gezählt werden.
.Sir'Done is offline  
Old 12/25/2014, 22:26   #10770
 
.SliceR's Avatar
 
elite*gold: 29
Join Date: Aug 2010
Posts: 855
Received Thanks: 522
Hab aktuell zwei Probleme.

Vorab die Quest:
Code:
quest sd3_bruthoehle begin
	state start begin
		when 30130.chat."In die Bruthöhle" with pc.get_level() > 49 begin
			say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
			if game.get_event_flag("sd3_frei") == 1 then
				say("Die Bruthöhle ist zur Zeit besetzt.")
				return
			end
			say("Möchtet ihr die Bruthöhle betreten?")
			if select("Ja","Nein") == 2 then return end
			d.join(208) -- Mapindex anpassen
			game.set_event_flag("sd3_frei",1)
			server_timer("exit",60*20)
		end
		when login with pc.get_map_index() >= 2080000 and pc.get_map_index() < 2090000 begin -- Index anpassen
			d.set_regen_file("data/dungeon/sd3/eier.txt")
			d.regen_file("data/dungeon/sd3/boss.txt")
			d.notice("Ihr habt 20 Minuten Zeit, um den Spinnenbaron zu töten.")
		end
		when exit.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.exit_all()
				server_timer("sd3_set_free",60*60)
			end
		end
		when kill with npc.get_race()==2591 and pc.get_level() > 49 begin
			local count = tonumber(party.get_near_count()-1)
			notice_all(string.format("%s und %d weitere Mitglieder haben den Spinnenbaron besiegt!", pc.get_name(), count))
			server_timer("sd3_set_free", 60*60)
			server_timer("exit",60*5)
			d.notice("In 5 Minuten werdet ihr hinausteleportiert")
		end
		when sd3_set_free.server_timer begin
			game.set_event_flag("sd3_frei",0)
		end
	end
end

1. Wenn ich mich ins "Dungeon" teleportiere, dann werde ich an den Anfang des SD3's teleportiert und nicht direkt in Bosskammer. Wie änder ich dies? Der Teleport wird ja mit d.join(208) eingeleitet. Wie setze ich jetzt den Spawn in der Bosskammer und mit d.join?

2. Wenn ich Spinnenbaroness getötet habe werde ich nicht heraus teleportiert. Ebenfalls wenn die Zeit abgelaufen ist.

Syserr:
Code:
AddServerTimer: already registered server timer name:exit arg:0
Bedanke mich im Voraus für alle Antworten!

Frohe Weihnachten wünsch ich euch.
.SliceR is offline  
Reply




All times are GMT +1. The time now is 21:33.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.