[SERVICE] Die Questkontrolle

12/05/2011 22:35 TankG#4201
HTML Code:
quest devildown begin
    state start begin
		when 30122.chat."Das Geheimnis Ascarias" begin
			if pc . get_level ( ) < 105 then 
				say ("Du hast noch nicht genuegend Erfahrung gesammelt. Komme wieder, wenn du Level 105 bist!") 
			else 
				say_title("Kriegergeist")
				say("")
				say("Ich war einst Krieger der Kaiserlichen Armee.")
				say("Vor vielen Jahren gab es einen Ort, der von einem")
				say("Drache bewacht wurde. Heute kennt man ihn unter dem")
				say("Name - Tal von Ascaria. Eigentlich wurde es mir")
				say("verboten Informationen über die Lage dieses Ortes zu")
				say("geben aber ich könnte dich trotzdem")
				say("dort hin teleportieren.")
				say("")
				say_reward("Soll ich dich ins Tal von Ascaria teleportieren?")
				
				local s = select("Teleportieren", "Hier bleiben")
					if s == 1 then
						pc.warp(391700, 1293100)
					else
						return
					end
			end
		end
		
		when 8023.kill with pc.get_map_index()==456 begin
			local jump1 = number(1, 20)
			if jump1<=10 then
				chat("Das muss der Teil einer Karte sein.")
				chat("Bringe ihn dem Surageist.")
				game.drop_item(10, 1)
			else
				chat("An diesem Metin war anscheinend keine Karte..")
			end
		end
		
		when 30121.chat."Teil einer Karte" begin
		
			if pc.count_item(30126)>=1 then
				say("Du hast eine Karte gefunden?!")
				say("Lass mal sehen!")
				pc.removeitem("30126", 1)
				wait()
				say("Okay, ich denke als nächstes..")
				say("Ja das ist okay.. Bis später!")
				wait()				
				d.new_jump_all(456, 3182, 12142)
				d.setf("devillevel", 1)
				-- Removed Schlüsselsteine aus deinem Inventar falls vorhanden, um Bugusing vorzubeugen. --
				local boxto7= pc.count_item(30300)  
				pc.remove_item(30300,boxto7)
			--------------------------------------------------------------------------------------------

				local vid = d.spawn_mob(11510, 268, 311)
				d.regen_file("data/dungeon/dd_regen2.txt")
				d.set_unique("real", vid)
				d.notice("Zerstört das legendäre Feuer der Macht.");
			else
				say("Ich habe gehört, dass man an den Metinsteine,")
				say("hier in der Umgebung Teile von Karten finden kann,")
				say("wenn man sie zerstört. Wenn du mir ein solches")
				say("Teil bringen könntest, könnte ich dich in das")
				say("nächste Gebiet teleportieren, da ich dann das")
				say("Gebiet genauer untersuchen könnte.")
			end
		end
		
		when 11510.kill with pc.in_dungeon() begin
			if d.is_unique_dead("real") then
				d.setf("devillevel", 2)
				d.clear_regen()
				d.jump_all(3542, 12825)
				d.regen_file("data/dungeon/dd_warps.txt")
			end
		end
		
		when 20083.chat."Geheimnissvolle Gänge" with pc.in_dungeon() and d.getf("devillevel") == 2 begin
			say_title("Poeng-Hong")
			say("")
			say("Diese Gänge.. Sie bringen mich um")
			say("meinen Verstand.. Ich laufe nun schon")
			say("den ganzen Tag in ihnen herum, aber ich habe")
			say("keine Ahnung, wo ich noch lang gehen soll.")
			say("Ich suche doch nur meinen Bruder..")
			say("")
			say("Wenn ich ihn doch nur finden würde..")
			wait()
			d.setf("devillevel", 3)
			d.jump_all(3347, 12810)			
		end		
		

		when 20080.chat."Poeng-Hong" with pc.in_dungeon() and d.getf("devillevel") == 3 begin
			say_title("Sao-Hae")
			say("")
			say("Mein Bruder Poeng-Hong?")
			say("Du hast ihn getroffen?")
			say("Ja ich bin sein Bruder.. Es wäre")
			say("sehr nett von ihm, ihm zu sagen wo ich")
			say("bin, wenn du ihn noch einmal sehen solltest.")
			say("")
			wait()
			
			d.setf("devillevel", 4)
			timer("devildown_jump1", 1)
		end		
		
		when devildown_jump1.timer begin
			d.clear_regen()
			d.regen_file("data/dungeon/dd_regen3.txt")
			local vid = d.spawn_mob(1191, 803, 290)
			d.set_unique("real", vid)
			d.jump_all(3619, 12075)
			d.notice("Sucht die Eishexe und tötet sie, damit der Wächter");
			d.notice("des Untergrundes sich nicht länger verstecken muss.");
		end
		
		when 1191.kill with pc.in_dungeon() and d.getf("devillevel") == 4 begin
			if d.is_unique_dead("real") then
				d.spawn_mob(20351 , 740 , 207)
				d.setf("devillevel", 5)
			end
		end
		
		when 20351.chat."Wächter des Untergrundes" with pc.in_dungeon() and d.getf("devillevel") == 5 begin	
			say_title("Wächter des Untergrundes")
			say("Man nennt mich den Wächter des Untergundes.")
			say("Ich bin schon eine weile hier und kenne das Gebiet")
			say("ein wenig besser wie du, wenn ich das so sagen darf.")
			say("")
			say("Ich könnte euch alle zu den alten Siegeln teleportieren.")
			say("Ich selbst traue mich dort nicht hin.")
			say("Mir ist der Ort irgendwie unheimlich.")
			say("")
			wait()
			d.setf("devillevel", 6)
			timer("devildown_jump2", 2)			
		end
		
		when devildown_jump2.timer begin
			d.clear_regen()
			d.jump_all(4438, 12282)
				d.regen_file("data/dungeon/dd_regen4.txt")
				d.spawn_mob(30101, 1241, 250)
				d.spawn_mob(30101, 1246, 242)
				d.spawn_mob(30101, 1255, 243)
				d.spawn_mob(30101, 1259, 250)
				d.spawn_mob(30101, 1254, 258)
				d.spawn_mob(30101, 1246, 258)
				d.setf("devildownstone_count", 6)
				timer('devildownstone1', 300)
				d.notice("Um das Portal zum Roten Drache zu aktivieren, müssen");
				d.notice("die alten Siegel zerstört werden. Ihr habt nur 20 Minuten,");
				d.notice("um alle 6 Siegel zu öffnen.");	
		end
		
		when devildownstone1.timer begin
			d.notice("Verbleibende Zeit: 15 Minuten")
			timer('devildownstone2', 300)
		end

		when devildownstone2.timer begin
			d.notice("Verbleibende Zeit: 10 Minuten")
			timer('devildownstone3', 300)
		end

		when devildownstone3.timer begin
			d.notice("Verbleibende Zeit: 5 Minuten")
			timer('devildownstone4', 300)
		end

		when devildownstone4.timer begin
			d.clear_regen()
			d.notice("Die Zeit ist abgelaufen")
			d.notice("Ihr werdet nun nach draußen teleportiert")
			pc.warp(391700, 1293100)
		end
		
		when 2510.kill with pc.in_dungeon() and d.getf("devillevel") == 6 begin
			local KILL_COUNT_FOR_DROP_DEVIL_KEY = 50
			local n =d.getf("count") + 1
			d.setf("count", n) 
			
			if n == KILL_COUNT_FOR_DROP_DEVIL_KEY then
				game.drop_item(50084, 1)
				d.setf("count", 0)
			end
		end
	
		when 30101.take with item.vnum == 50084 and d.getf("devillevel") == 6 begin
			npc.purge()
			item.remove()
			d.setf("devildownstone_count", d.getf("devildownstone_count") - 1)
			if d.getf("devildownstone_count") <= 0 then
				d.setf("devillevel", 7)
					-- Setzt die Timer von der Vorletzen EBENE auf 800000 Sec.
					-- Um das nachträgliche herausfliegen zu vermeiden.
					timer('devildownstone1', 800000)
					timer('devildownstone2', 800000)
					timer('devildownstone3', 800000)
					timer('devildownstone4', 800000)
					--------------------------------------------------------
				d.clear_regen()
				d.notice("Ihr habt alle alten Siegel geöffnet.")
				d.notice("Das Portal zum Roten Drache hat sich geöffnet.")
				timer("devildown_nexttimer", 3)
			else
				d.notice("Es verbleibt eine Anzahl von "..d.getf("devildownstone_count").." Siegeln")
			end
		end
		
		when devildown_nexttimer.timer begin
			d.jump_all(4374, 12740)
			-- Firstspawn !!!
			d.regen_file("data/dungeon/dd_boss1.txt")
			------------------
			timer("devildown_bosstimer1", 60)
		end
		
		when devildown_bosstimer1.timer begin
			-- 2. Spawn !!!
			d.regen_file("data/dungeon/dd_boss2.txt")
			------------------
			timer("devildown_bosstimer2", 60)
		end
	
		when devildown_bosstimer2.timer begin
			-- 3. Spawn !!!
			d.regen_file("data/dungeon/dd_boss3.txt")
			------------------
			timer("devildown_bosstimer3", 60)
		end
		
		when devildown_bosstimer3.timer begin
			-- 4. Spawn !!!
			d.regen_file("data/dungeon/dd_boss4.txt")
			------------------
			timer("devildown_bosstimer4", 60)
		end
		
		when devildown_bosstimer4.timer begin
			-- 5. Spawn !!!
			d.regen_file("data/dungeon/dd_boss5.txt")
			------------------
			timer("devildown_bosstimer5", 60)
		end
		
		when devildown_bosstimer5.timer begin
			-- 6. Spawn !!!
			d.regen_file("data/dungeon/dd_boss6.txt")
			------------------
			timer("devildown_bosstimer_last", 60)
		end
		
		when devildown_bosstimer_last.timer begin
			-- Endspawn mit Drache !!!
			d.regen_file("data/dungeon/dd_boss7.txt")
			local vid = d.spawn_mob(2291, 1302, 708)
			d.set_unique("real", vid)
			------------------
		end
		
		when 2291.kill with pc.in_dungeon() begin
			if d.is_unique_dead("real") then
				d.notice("Ihr habt den Roten Drache, den Wächter des Tals von Ascaria besiegt.");
				d.notice("Ihr werdet in 20 Sekunden zurück zum Anfang teleportiert..");
				timer("devildown_escapetimer", 20)
			end
		end
		
		when devildown_escapetimer.timer begin
			d.clear_regen()
			d.setf("devillevel", 0)
			pc.warp(391700, 1293100)
		end
	
	end
end

habe hier zu 2 fragen einmal am anfang wie kann ich das schreiben das nur der bzw die gruppe geporter wird die auch die karte hat und nicht die ganze map?

Und am schluss wird auch nur einer raus geportet und nicht alle

Vielen Dank im vorraus
12/06/2011 07:44 £αšεℜ™#4202
PHP Code:
quest music begin
    state start begin
        when value
.chat."Music starten" begin with pc.is_gm begin
            say
("Möchtest du das Erste Lied starten?")
            
say("")
            
local auswahl = select ("Ja", "Nein")
            if 
auswahl == 2 then
                
return
            elseif 
auswahl == 1 then
            local auswahl 
= select ("Lied1", "Lied2", "Lied3", "Lied4", "Doch nicht")
            if 
auswahl == 5 then
            say
("Ok, das nächste mal.")
                return
            elseif 
auswahl == 1 then
                pc
.setqf(mq, 1)
            
cmdchat("lied1.mp3")
            elseif 
auswahl == 2 then
                pc
.setqf(mq, 1)
            
cmdchat("lied2.mp3")
            elseif 
auswahl == 3 then
                pc
.setqf(mq, 1)
            
cmdchat("lied3.mp3")
            elseif 
auswahl == 4 then
                pc
.setqf(mq, 1)
            
cmdchat("lied4.mp3") 
            
end
        end
    end
end 
Müsste doch so gehen oder?
12/06/2011 17:09 Legend2007#4203
Hey Leute,

Habe folgendes problem mit dieser quest. Komischerweise ergibt item.can_over9refine() immer eine 0 (NULL) zurück und erlaubt somit nicht das uppen auf die nächste refined_vnum durch die quest. Weiß jemand woran das liegen kann? Die funktion item.get_refine_vnum() gibt die refined_vnum zurück, aber item.next_refine_vnum() ergibt immer eine 0. In der syserr des Server's stehen folgende einträge:

PHP Code:
item_get_value: index is not a number
item_next_refine_vnum
: Cannot find item table of vnum 0 
PHP Code:
when 20094.take begin
            local ItemVnum 
= item.get_vnum()
            
            
local val = item.can_over9refine()

            
say("Val: "..val)
            
say("Refine Vnum: "..item.get_refine_vnum())
            
say("Next Vnum: "..item.next_refine_vnum())

            if 
val != 1 and val != 2 then
                item_log
(item.get_id(), "REFINE OVER9", "FAIL WRONG RET: "..val)
            
end
            
            say
("Do you want to proceed?")

            
local gogo = select("Yes", "No")

            if 
gogo == 1 then
                
if number(1, 100) <= 95 then
                    local ret 
= false ;
                    if 
val == 1 then
                        ret 
= item.change_to_over9()
                    elseif 
val == 2 then
                        ret 
= item.over9refine()
                    
end
                
else
                    -- 
item_log(item.get_id(), "REFINE OVER9", "FAIL "..item_name(vnum).."("..vnum..")")
                
end
            
else
                return
            
end
        end 
Wenn mir jemand helfen könnte wäre das super.

Hoffe jemand kennt sich mit diese funktionen aus.

Danke
Legend
12/06/2011 17:49 Metin2kenner100#4204
:D ich hatte nur ein end zu viel :P
12/06/2011 19:05 Luki#4205
Code:
quest Jagdquest Wasserdrache begin
	state start begin
		when login with pc.level >= 95 begin
			set_state(information)
		end
	end

	state information begin
		when letter begin
			send_letter("Jagdquest Wasserdrache")
		end

		when info or button begin
			say("Jagdquest Wasserdrache")
			say("Messe deine Kraft mit dem Wasserdrachen.")
			say("Suche ihn und Töte ihn.")
			say_reward("Du musst den Wasserdrachen 5 mal Töten.")
			say("")
	        pc.setqf("state", 5)
	        q.set_counter("Wasserdrache", 5)
		end

		when 2493.kill begin
			local count = pc.getqf("state") - 1
			if count <= 5 then
				pc.setqf("state", count)
	            q.set_counter("Wasserdrache", count)
			end
			if count == 0 then
			    say_title("Jagdquest Wasserdrache")
			    say("Du hast den Wasserdrachen 5 mal getötet.")
			    say("Du hast die Aufgabe erfolgreich abgeschlossen und bekommst deine Belohnung.")
				pc.give_item2(70022, 2)
				pc.give_item2(50082, 2)
				pc.give_item2(70022, 2)
				pc.give_item2(50082, 2)
				pc.change_money(100000000)
				clear_letter()
				set_state(__COMPLETE__)

			end
		end
	end

	state __COMPLETE__ begin
	end
end
Ich wollte mal fragen ob die Jagdquest so okey ist.
Man soll den Wasserdrachen 5 mal töten.
Zur Belohnung bekommt man 2 mal Beras Herz und
2mal Sensi truhen. Wenn sie nicht richtig ist bitte sagen was da falsch dran ist damit ich meinen Fehler erkenne.
12/06/2011 19:29 [SoLow]#4206
Ein Questname darf keine leerzeichen enthalten, wenn dann

PHP Code:
quest jagtquest_wasserdrache begin 
bei dem pc.level() mache ich immer pc.get_level(), .. weiß nicht ob das mit deinem auch geht, ansonsten sehe ich nichts, bin aber auch nicht der Pro in Sachen Quests writen :D

Wenn mich nicht alles täuscht gibst du auch 4x Sensitruhe und 4x Beras Herz ..die 2 hinterm komma gibt mMn die Anzahl der Items an
12/06/2011 19:50 Luki#4207
Code:
quest Jagdquest_Wasserdrache begin
	state start begin
		when login with pc.level >= 95 begin
			set_state(information)
		end
	end

	state information begin
		when letter begin
			send_letter("Jagdquest Wasserdrache")
		end

		when info or button begin
			say("Jagdquest Wasserdrache")
			say("Messe deine Kraft mit dem Wasserdrachen.")
			say("Suche ihn und Töte ihn.")
			say_reward("Du musst den Wasserdrachen 5 mal Töten.")
			say("")
	        pc.setqf("state", 5)
	        q.set_counter("Wasserdrache", 5)
		end

		when 2493.kill begin
			local count = pc.getqf("state") - 1
			if count <= 5 then
				pc.setqf("state", count)
	            q.set_counter("Wasserdrache", count)
			end
			if count == 0 then
			    say_title("Jagdquest Wasserdrache")
			    say("Du hast den Wasserdrachen 5 mal getötet.")
			    say("Du hast die Aufgabe erfolgreich abgeschlossen und bekommst deine Belohnung.")			
			        pc.give_item2(70022, 2)
			        pc.give_item2(50082, 2)
				pc.change_money(100000000)
				clear_letter()
				set_state(__COMPLETE__)

			end
		end
	end

	state __COMPLETE__ begin
	end
end
So besser ?
12/07/2011 17:55 [SoLow]#4208
Heyho,
ich hätte mehrere Fragen / Fehler:

1. Die Quest startet bei Uriel, er zeigt mir aber 2x "Das verlorene Buch" an - Einmal zum Quest annehmen, einmal zum Quest abgeben. Wie mache ich es, dass das zum Quest abgeben erst dann erscheint, sobald ich alle Questitems gesammelt habe?

2. Ich bekomme den Attribut Wert zwar +10, aber das auch nur bis ich einen relog gemacht habe, danach wird er nicht angezeigt - den Wert habe ich auch nicht hinzugefügt bekommen:

-> 3 Vitalität 5292 TP
-> 13 Vitalität 5292 TP

Außerdem kann ich mir den Wert x beliebig oft holen ..

3. Solang ich mich nicht teleportiere oder auslogge, sagt uriel mir das er noch nicht fertig ist .. sobald ich aber relogge, kann ich die Quest direkt abgeben .. wie änder ich das, das es erst noch 24 Stunden geht .. ?

12/07/2011 21:33 Kriegergeist^^#4209
Abend auch Com,

habe eine Quest geschrieben, es gibt kein fehler bei make.
Aber wen ich dan die Belohnung abholen will, schließt sich einfach das fenster der quest.
Die Info geht, aber bloß nicht die Belohnung ausgeben.

Hier die Quest:

Wär echt nett wen ihr mir helfen könntet, dieses Problem zu beheben.

MfG
Kriegergeist^^
12/08/2011 22:32 .BonG™#4210
was stimmt hier nicht ?

PHP Code:
quest gm_online begin
state start begin
when login with pc
.is_gm() begin
game
.set_event_flag(pc.get_name(), 1)
end

when logout with pc
.is_gm() begin
game
.set_event_flag(pc.get_name(), 0)
end

when 20041.chat
."Welche Teammitglieder sind Online" begin
say
("Du möchtest wissen welche GMs/GAs online sind")
say("Bitte beachte GM werden Grün markiert")
say("Und vergiss die GM Klammern nicht")
say("")
if 
game.get_event_flag("[SL]BonG") == 1 then
say
("SL BonG: Online")
else
say("SL BonG: Offline")
end

if game.get_event_flag("[SL]Zocker") == 1 then
say
("SL Zocker: Online")
else
say("SL Zocker: Offline")
end

if game.get_event_flag("[GA]Aliboy") == 1 then
say
("GA Aliboy: Online")
else
say("GA Aliboy: Offline")
end

if game.get_event_flag("[SGM]D4rkii") == 1 then
say
("SGM D4rkii: Online")
else
say("SGM D4rkii: Offline")
end

if game.get_event_flag("[GM]HiLaL") == 1 then
say
("GM HiLaL: Online")
else
say("GM HiLaL: Offline")
end

if game.get_event_flag("[TGM]Ap0kalyps3") == 1 then
say
("TGM Ap0kalyps3: Online")
else
say("TGM Ap0kalyps3: Offline")
end
end
end
end 
12/09/2011 15:13 xTheSoulutionxx3#4211
fehler:
PHP Code:
syntax error : [string "start"]:18: unfinished string near `"'
bug_report.quest:33:Abort (core dumped) 

quest:
PHP Code:
quest bug_report begin
    state start begin
        when 9003.chat
."Bug-Report" begin
            say_title
("Bug-Report")
            
say("Hast du einen Fehler auf dem Server gefunden?[ENTER]"..
                
"Wenn ja dann beschreibe ihn bitte genau, damit[ENTER]"..
                
"wir den Fehler schnellst möglich beseitigen können![ENTER]")
            
say_reward("Achtung: Falschmeldungen werden geahndet!")
            
say("Möchtest du einen Fehler melden?[ENTER]")
            
local s = select(locale.yes, locale.no)
            if 
s != 2 then
                local bug_msg 
= ""
                
--Spamvorbeugung usw.
                for 
i=1, 6, 1 do
                    
say_title("Seite "..i.." von 6")
                    
say("Zum Beenden einfach keinen Text eingeben[ENTER]"..
                        
"und Enter drücken![ENTER]")
                    
local input_msg = tostring(input())
                    if 
input_msg == "" then
                        
break
                    
end
                    bug_msg 
= bug_msg..input_msg..'\n'
                
end
                
if bug_msg != "" then
                    local file 
= io.output(io.open("locale/germany/quest/bug_report/"..pc.get_name().."_"..tostring(pc.getqf("bug_report"))..".txt","w"))
                    
file:write(bug_msg)
                    
file:close()
                    
say_title("Bug-Report - Fehlermelden erfolgreich!")
                    
say("Du hast den Fehler erfolgreich gemeldet![ENTER]")
                    
say_reward("Wir bedanken uns für deine Hilfe.[ENTER]")
                
end
            end
        end
    end
end 
12/09/2011 20:43 .α¢нιℓℓєѕ#4212
#edit:
habe schon gelöst^^
12/09/2011 20:46 .Delta#4213
und jetzt nochmal :
was willst du? :D

lvl 30 yang, dannach yang und items oder was xD
12/09/2011 22:05 hut#4214
aber xDD du hast doch bei deiner quest eingetragen das du bei 31 geld bekommst o.O
12/09/2011 23:27 xTheSoulutionxx3#4215
PHP Code:
quest fischer_event begin
    state start begin
        when login with game
.get_event_flag("fisher") == 1 begin
            notice
("Das Fischer Event hat Begonnen ihr könnt")
            
notice("nun beim Fischer lebende Fische abgeben.")
            
notice("Ihr erhaltet tolle Überraschungen!")
            
notice("Viel Spaß wünscht euch das Team.")
        
end
        when 9009.chat
."Die Fischzucht" with game.get_event_flag("fisher") == 1 begin
            local fishs 
= {27803,27804,27805,27806,27807,27808,27809,27810,27811,27812,27813,27814,27815,27816,27817,27818,27819,27820,27821,27822,27823}
            
local fish = items[number( 1 ,20)];
            if 
pc.count_item(fishs) >= 1 then
            say_title
("Die Fischzucht")
            
say("Du hast ein Fisch gut")
            
say("hier ist deine Behlonung.")
            
say("")
            
say_reward("Du erhälst eine Geheimnisvolle Truhe.")
            
pc.remove_item(fish, 1)
            
pc.give_item2(50033, 1)
            else
            
say_title("Die Fischzucht")
            
say("Du hast gar keinen Fisch.")
            
say("Bringe mir welche oder geh.")
            
end
        end
    end
end