Drachenraum Quest

09/13/2012 12:39 .Seriously#1
Hallo
bei dieser quest wird kein neuer metin per zufall gespawnt also wenn ich 8031,8032,8033 und 8034 töt passiert nix.

PHP Code:
quest Tempel_of_dragon begin
    state start begin
        when 30121.chat
."Tempel des Drachen" with pc.get_map_index() == 73 begin
            
if get_time() > game.get_event_flag("Grotte_time"then
                game
.set_event_flag("Grotte_zugang",0)
            
end
            
if game.get_event_flag("Grotte_zugang") == and pc.count_item(30179) < 3 then
                say_title
(""..mob_name(30121).."")
                
say("")
                
say("Dir fehlen "..item_name(30179).."")
                
say_item_vnum(30179)
                
say("Komme wieder wenn du 3 besitzt.")
            return
        
end
            
if game.get_event_flag("Grotte_zugang") == 1 then
                say_title
(""..mob_name(30121).."")
                
say("")
                
pc.setqf("grotte_passworto"078954687921)
                if 
pc.getqf("abgabe") == 1 then
                    pc
.setqf("abgabe",0)
                    
say("Du hast bereits deine 3 Schlüssel abgeben.")
                    
say("Ich lasse dich passieren.")
                    
pc.setqf("erlaubt",1)
                    
wait()
                    
pc.warp(819200,1049600)
                return
            
end
                    say
("Tut mir Leid, der Raum ist reseviert.")
                    
say("Wenn du ein die Kennzahl hast für den Zugang,")
                    
say("gebe sie jetzt bitte ein.")
                    
local passwort tonumber(input(""))
                    --
pc.setqf("grotte_passworto"passwort
                if 
game.get_event_flag("Grotte_passwort") == passwort then
                    say_title
(""..mob_name(30121).."")
                    
say("")
                    
say("Die Kennzahl stimmt überein.")
                if 
pc.count_item(30179) < 3 then
                    say
("Ich kann dir den zutritt nicht gewähren")
                    
say("Dir fehlt "..item_name(30179).."")
                    
say_item_vnum(30179)
                    
say("Komme wieder wenn du 3 besitzt.")
                return
            
end
                    say
("Ich gewähre dir den zutritt!")
                    
pc.setqf("erlaubt",1)
                    
wait()
                if 
pc.can_warp() then    pc.remove_item("30179",3end
                    pc
.warp(819200,1049600)
                elseif 
passi != pc.getqf("grotte_passworto"then
                    say_title
(""..mob_name(30121).."")
                    
say("")
                    
say("Die Kennzahl ist leider falsch.")
                return
            
end
        end
                
if game.get_event_flag("Grotte_zugang") == and pc.count_item(30179) >= 3 then
                    say_title
(""..mob_name(30121).."")
                    
say("")
                    
say("Du bist der erste der den Eintritt in den Tempel")
                    
say("des Drachens verlangt. Ich werde dich passieren")
                    
say("lassen, sofern du einen gewunden Schlüssel")
                    
say("besitzt. Bevor du den Raum betreten darfst")
                    
say("musst du eine geheime Zahl eingeben.")
                    
say("Diese kannst du innerhalb von 5 Minuten an")
                    
say("deine Mitstreiter weitergeben, so das auch")
                    
say("sie den Raum betreten können. ")
                    
say("")
                    
say("Bedenke auch das die Macht der Schlüssel nur")
                    
say("30 Minuten lang hält. In dieser Zeit müsst")
                    
say("ihr den Drachen besiegt haben.")
                    
local i select("Ich bin Bereit""Abbrechen")
                        if 
== i then
                            say_title
(""..mob_name(30121).."")
                            
say("Dann Lege jetzt die kennzahl fest.")
                            
local passwort tonumber(input(""))
                        if 
passwort and passwort <= 999999999 and pc.count_item(30179) >= 3 then
                            game
.set_event_flag("Grotte_zugang",1)
                            
game.set_event_flag("Grotte_passwort",passwort)
                            
local times get_time() + 3600 --Wartezeit
                            game
.set_event_flag("Grotte_time"times)
                            
say_title(""..mob_name(30121).."")
                            
pc.setqf("abgabe",1)
                            
say("")
                            
say("Die Kennzahl lautet:")
                            
chat("Die Kennzahl lautet für den Tempel des Drachen: "..passwort.."")
                            
say_reward(""..passwort.."")
                            
say("Gib die Kennzahl deinen Mitstreitern weiter")
                            
pc.remove_item("30179",3)
                        else 
                            
say_title(""..mob_name(30121).."")
                            
say("")
                            
say("Beim Kennzahl setzen ist ein fehler aufgetreten, versuche es erneut.")
                            
say("Bitte gebe nur Ziffern ein.")
                        
end
                    end
                end
            end

    when login with pc
.get_map_index() == 82 begin
        regen_in_map
(82,"data/dungeon/drachenraum/skia_boss.txt")
        
notice_in_map("Willkommen im Tempel des Drachen, ihr habt maximal 1 Stunde Zeit Beran-Setaou zu besiegen, Viel Erfolg")
        
local sekunden game.get_event_flag("Grotte_time") - get_time()
        
notice_in_map("Verbleibende Zeit bis ihr rausfliegt: "..sekunden.." Sekunden")
        
timer("skipia_boss_ende"sekunden)
        
pc.set_warp_location(73 182512207)
        
game.set_event_flag("Grotte_zugang"0)
    
end
    
    when 8031.kill 
or 8032.kill or 8033.kill or 8034.kill begin
        local metin 
number(14)
            if 
== metin then
                regen_in_map
(82,"data/dungeon/drachenraum/skia_boss1.txt")
            elseif 
== metin then
                regen_in_map
(82,"data/dungeon/drachenraum/skia_boss2.txt")
            elseif 
== metin then
                regen_in_map
(82,"data/dungeon/drachenraum/skia_boss3.txt")
            else
                
regen_in_map(82,"data/dungeon/drachenraum/skia_boss4.txt")
            
end
        end
        
        when 2493.kill with pc
.get_map_index() == 82 begin
            notice_all
("Die Gruppe von "..pc.get_name().." hat Beran-Setaou getötet.")
            
notice_in_map("Beeindruckend, ihr habt ihn tatsächlich besiegt. Als Abschluss könnt ihr noch die Metins zerstören")
            
notice_in_map("ihr werdet in 60 Sekunden zurück in Grotte 2 gebracht.")
            
timer("skipia_boss_ende"60)
            
kill_all_in_map(82)
        
end

        when skipia_boss_ende
.timer begin
            game
.set_event_flag("Grotte_zugang"0)
            
pc.warp(182500,1220700)
            
kill_all_in_map(82)
        
end
    end
end 
09/13/2012 13:58 |★|554#2
Entweder bei dem Befehl
PHP Code:
regen_in_map 
liegt ein Fehler vor, oder, was ich für wahrscheinlicher halte:

Wenn in einer anderen Quest auch durch Töten (when xxx.kill begin *) einer dieser Metine etwas ausgelöst wird, kann es sein, dass nur diese andere Quest "beachtet" wird.
(Zum Beispiel bei einer extra Quest für High-Level-Metin-Drops)

Einfach mal direkt nach dem when nen Testbefehl einsetzen und schauen, ob dieser durchgeführt wird.

Wenn nicht ->
PHP Code:
when xxx.kill begin 
durch
PHP Code:
when kill with npc.get_race() == xxx begin 
ersetzen.


* Ich möchte hier nicht ausdrücken, dass du nicht wüsstest, was die Zeile ausdrückt, sondern, dass diese Art von Kill-Check angesprochen wird. ^^
09/13/2012 14:28 .Seriously#3
die ids der metins sind aber nirgends in einer anderen quest.
09/14/2012 20:55 van197#4
Habe quest eingefügt. alles ausgeführt. kann npc net anklicken :D