Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 15:44

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

Advertisement



Quest fehler, brauche hilfe

Discussion on Quest fehler, brauche hilfe within the Metin2 Private Server forum part of the Metin2 category.

Closed Thread
 
Old   #1
 
elite*gold: 0
Join Date: Feb 2012
Posts: 113
Received Thanks: 6
Quest fehler, brauche hilfe

hay,

ich hab meine Eigene Quest geschrieben, eine Art Bossrun. Aber ich hab da 2 Fehler. 1. Ich weiß nicht wie ich einstelle das man alle 3 Metinsteine töten muss, bevor es weiter geht. Wenn alle down sind, passiert einfach nichts. Und auserdem klappt bei mir dieser d.new_jump_all befehl nicht, ich werde nur mit d.join geportet. Hat da jemand ne lösung?

quest bossrun begin
state start begin
when 20090.chat."Bossrun" begin
say_title("Bossrun")
say("Dieser Run ist richtig schwer")
say("Traust du dich?")
local s = select("Betreten", "Abbrechen")
if s== 1 then
pc.warp(855000, 1200)
end
end
when 20001.chat."Was willst du?" begin
say_title("Bossrun")
say("Denkst du echt du könntest")
say("unsere besten Bosse erlegen?")
say("")
say("erbärmlich, viel spaß beim Sterben!")
npc.kill(20001)
mob.spawn(8032, 150, 150, 1)
end
when 8032.kill with pc.get_map_index() == 112 begin
d.join(112, 855000, 1200)
d.regen_file("data/dungeon/Bossrun/br1.txt")
end
when 3591.kill begin
notice("Ihr habt den ersten Boss geschafft!")
notice("Aber der zweite wird viel schwerer!")
timer("br2", 6)
end
when br2.timer begin
d.regen_file("data/dungeon/Bossrun/br2.txt")
end
when 2684.kill begin
notice("Woow, du hast einen sehr starken")
notice("Verteidiger von uns umgelegt!! Respekt !!")
timer("br3", 6)
end
when br3.timer begin
d.regen_file("data/dungeon/Bossrun/br3.txt")
end
when 3691.kill begin
notice("Du scheinst stärker zu sein, als ich Gedacht")
notice("habe!! Aber lebend wirst du hier eh nicht rauskommen!")
timer("metinebene", 6)
end
when metinebene.timer begin
d.regen_file("data/dungeon/Bossrun/metinebene.txt")
q.set_counter("Verbleibend", 4)
end
when 8033.kill begin
local count = pc.getqf("state") + 1
end
when 8034.kill begin
local count = pc.getqf("state") + 1
end
when 8035.kill begin
local count = pc.getqf("state") + 1
if count <= 4 then
pc.setqf("state", count)
q.set_counter("state", count)
end
if count == 0 then
timer("br4", 6)
end
end
when br4.timer begin
d.regen_file("data/dungeon/Bossrun/br4.txt")
end
when 3491.kill begin
notice("Du scheinst stärker zu sein, als ich Gedacht")
notice("habe!! Aber lebend wirst du hier eh nicht rauskommen!")
end
end
end
timonick is offline  
Old 02/08/2015, 12:24   #2
 
Dyshaxo's Avatar
 
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
Parameter:

d.new_jump_all(index, x, y) -> der Befehl wird gerne mal Missinterpretiert.

In Dungeons - Prinzipiell mit Dungeon-Flags arbeiten -> Streich das ganze "pc.setqf" raus, und mach daraus "d.setf" und "d.getf".

Dann - musst du die Flags nicht Zwangsläufig in 'ner Variable zwischenspeichern, globale Variabeln machen in .quest-files sowieso immer nur tucken.

Wenn du dir was abschauen willst kann ich dir hier als Beispiel meinen Bossrun geben:

Code:
quest the_abyss begin
	state start begin
		
		when login with pc.in_dungeon() and mapidproof(304) begin
			if party.is_leader() or pc.is_gm() then
				d.spawn_mob_dir(40001, 210, 26, 2)
				d.set_unique("boss", d.spawn_mob(8054, 126, 148))
				d.notice("Macht euch bereit zum Kampf!")
			end
			d.setf("a_boss", 0)
			d.setf("healstone", 0)
			d.setf("Defstone", 0)
			d.setf("complete", 0)
			bosslist = {6005, 6008, 6003, 6002, 2291}
		end
		
		when kill with pc.in_dungeon() and mapidproof(304) begin
			if d.is_unique_dead("boss") then
				if d.getf("a_boss") < 5 then
					cleartimer("stone")
					d.kill_all()
					d.setf("a_boss", d.getf("a_boss") + 1)
					d.setf("healstone", 4)
					d.setf("Defstone", 2)
					d.regen_file("data/dungeon/abyss/abyss_stone_regen.txt")
					d.set_unique("boss", d.spawn_mob(bosslist[d.getf("a_boss")], 127, 147))
					d.unique_set_maxhp("boss", 100000)
					d.unique_set_hp("boss", 100000)
					d.unique_set_def_grade("boss", d.getf("Defstone") * 200)
					loop_timer("stone", 1)
				else
					d.kill_all()
					d.notice("Instance Dungeon abgeschlossen!")
					d.notice("Die Herausforderungen des Abgrunds wurden Überstanden!")
					d.notice("Sprecht mit Rezeena um eure Belohnung zu erhalten.")
					d.spawn_mob_dir(40001, 129, 152, 1)
					d.setf("complete", 1)
				end
			end
		end
		
		when 8010.kill with pc.in_dungeon() and mapidproof(304) begin
			d.setf("healstone", d.getf("healstone") - 1)
			d.notice("Ein Heilstein wurde zerstört!")
		end
		
		when 11510.kill with pc.in_dungeon() and mapidproof(304) begin
			d.unique_set_hp("boss", (d.unique_get_hp_perc("boss") * 1000) - 25000)
			d.notice("Das Feuer der Lebenskraft ist erloschen!")
			d.notice("Das Bossmonster erhält großen Schaden!")
		end
		
		when 8008.kill with pc.in_dungeon() and mapidproof(304) begin
			d.setf("Defstone", d.getf("Defstone") - 1)
			d.unique_set_def_grade("boss", d.getf("Defstone") * 200)
			d.notice("Die Verteidigung des Bossmonsters wurde geschwächt!")
		end
		
		when stone.timer with pc.in_dungeon() and mapidproof(304) begin
			d.unique_set_hp("boss", (d.unique_get_hp_perc("boss") * 1000) + (d.getf("healstone") * 1000))
		end
		
		--#desc
		when 40001.chat. "Was erwartet mich?" with pc.in_dungeon() and mapidproof(304) and d.getf("complete") == 0 begin
			say_title("Rezeena")
			say()
			say("Dies ist der Abgrund.")
			say("Vor dir liegt eine Kampfarena.")
			say("In dieser Arena wirst du auf starke")
			say("Gegner treffen.")
			say("Besiege alle Gegner in einem Stück, um")
			say("den Kampf zu gewinnen.")
			say("Während des Kampfes spawnen verschiedene")
			say("Seelen, welche den Kampf beeinflussen.")
			say("Entwerft eine Strategie, um die Instance")
			say("erfolgreich zu beenden.")
		end
		--#endofdesc
		
		--leave--
		
		when 40001.chat. "Den Abgrund verlassen" with pc.in_dungeon() and mapidproof(304) and d.getf("complete") == 1 begin
			say_title("Den Abgrund verlassen")
			say("")
			say("Deine Party hat alle Monster")
			say("des Abgrunds vernichtet.")
			say_reward("Zur Belohnung erhälst du:")
			say_reward("Blablabla")
			say_reward("Blablabla")
			say_reward("Blablabla")
			wait()
			--belohnung Einfügen--
			d.exit()
		end
	end
end
Code:
function mapidproof(index)
	if index >= pc.get_map_index() * 10000 and pc.get_map_index() < ((index + 1) * 10000) then
		return true
	else
		return false
	end
end
Beim Dungeon-Erstellen unbedingt darauf achten:
- Niemals mehr als 1 State verwenden (NUR state start)
- Bedingungen EINDEUTIG setzen, damit - was im Dungeon passiert auch wirklich nur im Dungeon passiert.
Dyshaxo is offline  
Old 02/08/2015, 12:40   #3
 
elite*gold: 0
Join Date: Feb 2012
Posts: 113
Received Thanks: 6
Hab jetzt alle pc.setqf in d.setf und pc.getqf in d.getf geänder, aber klappt immer noch nicht.

when metinebene.timer begin
d.regen_file("data/dungeon/Bossrun/metinebene.txt")
q.set_counter("Verbleibend", 4)
end
when 8033.kill begin
local count = d.getf("state") + 1
end
when 8033.kill begin
local count = d.getf("state") + 1
end
when 8033.kill begin
local count = d.getf("state") + 1
if count <= 4 then
d.setf("state", count)
q.set_counter("state", count)
end
if count == 4 then
timer("br4", 6)
end
end
when br4.timer begin
d.regen_file("data/dungeon/Bossrun/br4.txt")
end
when 3491.kill begin
notice("Du scheinst stärker zu sein, als ich Gedacht")
notice("habe!! Aber lebend wirst du hier eh nicht rauskommen!")
end
end
end
timonick is offline  
Old 02/08/2015, 12:44   #4
 
Dyshaxo's Avatar
 
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
Vergiss das Flag-in-Variable-Speichern, genau dafür sind die Questflags ja gut:
"local count = d.getf("state") + 1"
mach daraus:
"d.setf("state", d.getf("state") +1)"

Versuch's mal like this:

Code:
quest bossrun begin
	state start begin
		when 20090.chat."Bossrun" begin
			say_title("Bossrun")
			say("Dieser Run ist richtig schwer")
			say("Traust du dich?")
			local s = select("Betreten", "Abbrechen")
			if s== 1 then
				pc.warp(855000, 1200)
			end
		end

		when 20001.chat."Was willst du?" begin
			say_title("Bossrun")
			say("Denkst du echt du könntest")
			say("unsere besten Bosse erlegen?")
			say("")
			say("erbärmlich, viel spaß beim Sterben!")
			npc.purge()
			mob.spawn(8032, 150, 150, 1)
		end
		when 8032.kill with pc.get_map_index() == 112 begin
			d.join(112)
			--d.regen_file("data/dungeon/Bossrun/br1.txt")
		end
		
		when login with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
			d.regen_file("data/dungeon/Bossrun/br1.txt")
		end
		
		when 3591.kill with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
			notice("Ihr habt den ersten Boss geschafft!")
			notice("Aber der zweite wird viel schwerer!")
			timer("br2", 6)
		end
		when br2.timer begin
			d.regen_file("data/dungeon/Bossrun/br2.txt")
		end
		when 2684.kill pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
			notice("Woow, du hast einen sehr starken")
			notice("Verteidiger von uns umgelegt!! Respekt !!")
			timer("br3", 6)
		end
		when br3.timer begin
			d.regen_file("data/dungeon/Bossrun/br3.txt")
		end
		when 3691.kill pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
			notice("Du scheinst stärker zu sein, als ich Gedacht")
			notice("habe!! Aber lebend wirst du hier eh nicht rauskommen!")
			timer("metinebene", 6)
		end

		when metinebene.timer begin
			d.regen_file("data/dungeon/Bossrun/metinebene.txt")
			d.setf("remain", 3)
		end

		when 8033.kill with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
			d.setf("remain", d.getf("remain") - 1)
			if d.getf("remain") == 0 then
				timer("br4", 6)
			end
		end

		when 8034.kill with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
			d.setf("remain", d.getf("remain") - 1)
			if d.getf("remain") == 0 then
				timer("br4", 6)
			end
		end

		when 8035.kill with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
			d.setf("remain", d.getf("remain") - 1)
			if d.getf("remain") == 0 then
				timer("br4", 6)
			end
		end

		when br4.timer begin
			d.regen_file("data/dungeon/Bossrun/br4.txt")
		end

		when 3491.kill begin
			d.notice("Bis hierher klappt der spaß schonmal.")
			d.notice("Du scheinst stärker zu sein, als ich Gedacht")
			d.notice("habe!! Aber lebend wirst du hier eh nicht rauskommen!")
		end
	end
end
Dyshaxo is offline  
Old 02/08/2015, 12:54   #5
 
elite*gold: 0
Join Date: Feb 2012
Posts: 113
Received Thanks: 6
oke ich versuchs mal. hast du skype? Wenn ich mal ne frage habe, geht das schneller.
timonick is offline  
Old 02/08/2015, 12:58   #6
 
Dyshaxo's Avatar
 
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
Beim Dungeon-Scripten-Lernen hat mir auch keiner wirklich explizit geholfen, ich hab' hier im Forum viele viele Fragen gestellt, und die wurden dann für gewöhnlich beantwortet =)

evtl. kannst du mit der Liste hier noch was Anfangen:

Quote:
Zitat von DaisukeBanned Beitrag anzeigen
Hi there, hab n paar Fragen zu Questbefehlen für Dungeons:

Gib es die Bedingung:
-> Wenn ein Spieler innerhalb eines States disconnected,
soll passieren: 1, 2, 3, 4...

when disconnect begin

Mit d.join(index) wird von der Map 'ne neue Instanz nur für den Spieler geöffnet.
Wie lautet der Befehl, wenn das ganze durch den Gruppenführer ausgelöst werden soll, und die komplette Gruppe zum Dungeon teleportiert werden soll?

d.new_jump_party(map_idx,x_kord,y_kord)

Und wie lautet der Befehl, wenn alle Spieler einer Map zum dungeon teleportiert werden sollen?

d.new_jump_all(map_idx,x_kord,y_kord)

Gibt es 'ne Funktion, die die Anzahl Spieler in der Gruppe eines Spielers zählt?

party.get_near_count() (Zählt allerdings nur die, die sich auf der gleichen Map befinden)

Gibt es Quest-Funktionen, mit denen man NPCs/Monster spawnt und wieder purgen kann,
ohne eine regen.txt zu laden?

mob.spawn(vnum,lokale_x_koordinate, lokale_y_koordinate, radius, aggressiv (0|1), anzahl)

oder

d.spawn_mob(vnum,lokale_x_koordinate, lokale_y_koordinate, radius, anzahl)

d.purge() oder npc.purge() bzw. d.purge_area oder purge_area()
Dyshaxo is offline  
Old 02/08/2015, 13:24   #7
 
elite*gold: 0
Join Date: Feb 2012
Posts: 113
Received Thanks: 6
Also ich hab jetzt das bei mir eingefügt und da kommt when dosent have begin end clause (pc)
timonick is offline  
Old 02/08/2015, 15:10   #8
 
elite*gold: 1
Join Date: Apr 2012
Posts: 333
Received Thanks: 74
Kommt glaube ich zur

Oder Irre ich mich?
deutschenstyle is offline  
Old 02/08/2015, 17:56   #9
 
Dyshaxo's Avatar
 
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
Quote:
Originally Posted by timonick View Post
Also ich hab jetzt das bei mir eingefügt und da kommt when dosent have begin end clause (pc)
Dann darfst du jetzt herausfinden, wo ich 'n "end" falsch gesetzt habe =)
Dyshaxo is offline  
Old 02/08/2015, 21:00   #10
 
elite*gold: 0
Join Date: Feb 2012
Posts: 113
Received Thanks: 6
Alle End sind richtig gesetzt Glaube das der Pc befehl anders beendet werden muss. Ich hab kp, sitze an der Quest seit 10 Stunden :/
timonick is offline  
Old 02/08/2015, 21:06   #11

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764


PHP Code:
quest bossrun begin
    state start begin
        when 20090.chat
."Bossrun" begin
            say_title
("Bossrun")
            
say("Dieser Run ist richtig schwer")
            
say("Traust du dich?")
            
local s select("Betreten""Abbrechen")
            if 
s== 1 then
                pc
.warp(8550001200)
            
end
        end

        when 20001.chat
."Was willst du?" begin
            say_title
("Bossrun")
            
say("Denkst du echt du könntest")
            
say("unsere besten Bosse erlegen?")
            
say("")
            
say("erbärmlich, viel spaß beim Sterben!")
            
npc.purge()
            
mob.spawn(80321501501)
        
end
        when 8032.kill with pc
.get_map_index() == 112 begin
            d
.join(112)
            --
d.regen_file("data/dungeon/Bossrun/br1.txt")
        
end
        
        when login with pc
.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
            d
.regen_file("data/dungeon/Bossrun/br1.txt")
        
end
        
        when 3591.kill with pc
.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
            notice
("Ihr habt den ersten Boss geschafft!")
            
notice("Aber der zweite wird viel schwerer!")
            
timer("br2"6)
        
end
        when br2
.timer begin
            d
.regen_file("data/dungeon/Bossrun/br2.txt")
        
end
        when 2684.kill with pc
.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
            notice
("Woow, du hast einen sehr starken")
            
notice("Verteidiger von uns umgelegt!! Respekt !!")
            
timer("br3"6)
        
end
        when br3
.timer begin
            d
.regen_file("data/dungeon/Bossrun/br3.txt")
        
end
        when 3691.kill with pc
.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
            notice
("Du scheinst stärker zu sein, als ich Gedacht")
            
notice("habe!! Aber lebend wirst du hier eh nicht rauskommen!")
            
timer("metinebene"6)
        
end

        when metinebene
.timer begin
            d
.regen_file("data/dungeon/Bossrun/metinebene.txt")
            
d.setf("remain"3)
        
end

        when 8033.kill with pc
.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
            d
.setf("remain"d.getf("remain") - 1)
            if 
d.getf("remain") == 0 then
                timer
("br4"6)
            
end
        end

        when 8034.kill with pc
.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
            d
.setf("remain"d.getf("remain") - 1)
            if 
d.getf("remain") == 0 then
                timer
("br4"6)
            
end
        end

        when 8035.kill with pc
.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
            d
.setf("remain"d.getf("remain") - 1)
            if 
d.getf("remain") == 0 then
                timer
("br4"6)
            
end
        end

        when br4
.timer begin
            d
.regen_file("data/dungeon/Bossrun/br4.txt")
        
end

        when 3491.kill begin
            d
.notice("Bis hierher klappt der spaß schonmal.")
            
d.notice("Du scheinst stärker zu sein, als ich Gedacht")
            
d.notice("habe!! Aber lebend wirst du hier eh nicht rauskommen!")
        
end
    end
end 
rollback is offline  
Old 02/08/2015, 21:30   #12
 
elite*gold: 0
Join Date: Feb 2012
Posts: 113
Received Thanks: 6
Mmh, jetzt werde ich nicht mehr geportet wenn ich vnum 8023 kille. Oh man ich zerbrech an der quest ..
Kann mir vielleicht jemand über teamviewer helfen? oder skype.
timonick is offline  
Old 02/09/2015, 10:24   #13


 
Zevion's Avatar
 
elite*gold: 906
Join Date: Sep 2009
Posts: 17,295
Received Thanks: 4,399
->

#closed
Zevion is offline  
Closed Thread


Similar Threads Similar Threads
[HILFE] Quest fehler :(
04/29/2014 - Metin2 Private Server - 0 Replies
Hallo liebe com! Ich habe einen fehler bei meiner quest, aber kann ihn nicht finden (das ist meine allererste quest die ich selber schreibe) Also was ich machen will ist: Wenn man denn NPC anklickt kommt ein fenster wo "Mino-Run" drin steht... dann redet der halt ein wenig und dann wenn man auf ja drück, spawn es 5 metins auf der map die alle ein item droppen ... dann muss man wieder zu dem npc gehen und der nimmt dann die 5 items die ich gerade bei denn metins gedroppt habe, und...
[HILFE] Quest Fehler
12/23/2013 - Metin2 Private Server - 2 Replies
Hallo Liebe Community, Ich hab einen kleinen Quest Fehler ... quest shizuna begin state start begin when 20090.chat."Ich möchte den Dungeon betreten" if game.get_event_flag("dungeon_besetzt") == 1 then -- Überprüft ob der Dungeon besetzt ist.
[HILFE!!] Ich brauche beim quest einfügen bitte um hilfe
04/27/2012 - Metin2 Private Server - 6 Replies
Hey ist vllt ein hilfsbereiter Member on ? :D bräuchte hilfe beim quest einfügen vllt kann derjenige mich dann in skype oder icq adden DANKE !!!:D:D *edit* die überschrift ist verkackt :D ich brauche beim quest einfügen hilfe bitte um schnelle hilfe*
[QUEST] Fehler - Brauche Hilfe!
05/24/2010 - Metin2 Private Server - 10 Replies
Nabend, habe mich mal ebend hingesetzt und habe mal eine Quest geschrieben für unseren Root Server. Habe alles meiner Meinung nach richtig gemacht , unteranderem in die Questfiles reingeladen und in hongkong_list eingetragen, aber die Quest funktioniert nicht... Eventuell schaut ihr mal drüber, vielleicht findet ihr den Fehler: quest Waffe des Waffenhändlers begin state start begin when login or levelup or enter with pc.get_level() >= 40 begin setstate( gototeacher )



All times are GMT +2. The time now is 15:44.


Powered by vBulletin®
Copyright ©2000 - 2024, 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 ©2024 elitepvpers All Rights Reserved.