[SERVICE] Die Questkontrolle

02/13/2012 03:27 [ShiizoPhreN]™#4741
hi liebe comm..

könnte man mmir helfen und zwar möchte ich ab elseif 3 auf einer 2ten quest seite geleitet werden

HTML Code:
					local rateset = select ("Mondlicht Event","Rosen Event","Geschenke Event","Kürbis","Oster Event","Alle beenden","Abbrechen")
					if rateset == 1 then
						say_title("Hallo GM:")
						say("")
							say("Willst du das Mondlicht Event starten oder beenden?")
							local a =select ("Starten","Beenden","Abbrechen") 
								if a == 1 then
									command("e mond 1")
									command("n Mondlichtevent gestartet")
								elseif a == 2 then
									command("e mond 0")
									command("n Mondlichtevent beendet")
								elseif a == 3 then
									return
								end
							
					elseif rateset == 2 then
						say_title("Hallo GM:")
						say("")
						say("Willst du das Rosen Event starten oder beenden")
							local b =select ("Starten","Beenden","Abbrechen") 
								if b == 1 then
									command("e rose 6")
									command("n Rosen Event gestartet ")
								elseif b == 2 then
									command("e rose 0")
									command("n Rosen Event Beendet")
								elseif b == 3 then
									return
								end
					elseif rateset == 3 then
						say_title("Hallo GM:")
						say("")
						say("Willst du das Geschenke Event starten oder beenden")
							local c =select ("Starten","Beenden","Abbrechen") 
								if c == 1 then
									command("e geschenk 10")
									command("n Geschenke Event gestartet")
								elseif c == 2 then
									command("e geschenk 0")
									command("n Geschenke Event beendet")
								elseif c == 3 then
									return
								end
					elseif rateset == 4 then
						say_title("Hallo GM:")
						say("")
						say("Willst du das Kürbis Event starten oder beenden")
						local d =select ("Starten","Beenden","Abbrechen") 
								if d == 1 then
									command("e kurbis 2")
									command("n Kürbis Event gestartet")
								elseif d == 2 then
									command("e kurbis 0")
									command("n Kürbis Event beendet")
								elseif d == 3 then
									return
								end
					elseif rateset == 5 then
						say_title("Hallo GM:")
						say("")
						say("Willst du das Oster Event starten oder beenden")
						local d =select ("Starten","Beenden","Abbrechen") 
								if d == 1 then
									command("e ostern 2")
									command("n Oster Event gestartet")
								elseif d == 2 then
									command("e ostern 0")
									command("n Oster Event beendet")
								elseif d == 3 then
									return
								end
					elseif rateset == 6 then
						say_title("Hallo GM:")
						say("")
						say("Willst du alle Events beenden???")
						local e =select ("Alle beenden","Abbrechen") 
								if e == 1 then
									command("e mond 0")
									command("e rose 0")
									command("e geschenk 0")
									command("e kurbis 0")
									command("e ostern 0")
									command("n Alle Events beendet")
								elseif e == 2 then
									return
								end
					elseif rateset == 7 then
						return
						end
MfG
02/13/2012 08:24 .HC'Destrox#4742
Soo, erstmal zu xJ3Lack_MaieRx;
Ich würde die Quest anders machen, damit du leichter neue Items hinzufügen kannst.
Ich kenn mich nur mit der Funktion "table.getn" nicht so aus, sonst ginge es noch leichter ;)
Hier ist die Quest:

[ShiizoPhreN]™:
Du kannst durch "set_quest_state(questname, state) zu einem State einer anderen Quest gehen.
Beispiel Quests:
Natürlich kann man damit noch viel mehr machen,
aber ich will jeze auch kein Roman drüber schreiben ;)

** PS: Hab immer noch das Problem:
Wie Spawne ich Mobs auf einem anderen Mapindex?!

Mfg, Destroyer446
02/13/2012 18:17 lakus124#4743
Hallo epvp,

Ich habe mir grade eine Quest geschrieben, mit der ich die unnützen Goldringe zu wahren Goldstücken machen will, nur funktioniert die quest nicht wie ich sollte, was bedeutet ich kann den questnpc nicht anklicken

Könnt ihr mir helfen und mir sagen, was ich falsch gemacht habe?

Hier die Quest
02/13/2012 19:23 .HC'Destrox#4744
Ich schätze, die Quest ist richtig, nur der "onclick" vom NPC falsch.
Der "onclick" muss auf 2 (oder 1, aber glaube 2) stehen, damit du ihn anklicken kannst.
Prüfe das mal in der "mob_proto" Tabelle unter "player".

Mfg, Destroyer446
02/13/2012 19:36 hr4rjuku#4745
Hallo epvp,

Meine Quest funktioniert nicht vill könnte mir hier jemand helfen...
(console spuckt keinen fehler aus)

#EDIT: klappt nun!
02/13/2012 20:07 derkiler#4746
Quote:
Originally Posted by hr4rjuku View Post
Hallo epvp,

Meine Quest funktioniert nicht vill könnte mir hier jemand helfen...
(console spuckt keinen fehler aus)


Die Quest funktioniert zu 100%..
Ich meine den Fehler zu kennen..
Bei deinem Server hat es in der Datenbank ein quest-flag-fehler.

Am besten du nennst deine Quest anders, zb: Bookworm2.quest oder wie du willst -> dann müsste es eig. wieder klappen.

#Edit: Nicht vergessen in der hongkong_list den Quest Name ebenfalls zu ändern!
Ich hoffe ich konnte dir weiterhelfen
Mfg derkiler
02/14/2012 00:44 hochburg92#4747
könnt mir jemand helfen bei der mob kill quest? 2604 ist die mob value und es sollen 500 stück gekillt werden. die quest soll ab lvl 100 erscheinen und am ende soll man sich eine beliebige waffe aussuchen können die ishc selber noch rein schreibe dann.

quest kill begin
state start begin
when login or levelup with pc.level() == 100 begin
set_state(kill_1)
end
end

state kill_1 begin
when letter begin
send_letter("Mintaure Töten")
end

when button or info begin
say_title("Mintaure Töten")
say("Töte 500 Mintaure und erhalte")
say("eine schöne Überraschung!")
pc.setqf("monster", 2604)
q.set_counter("kills", 500)
set_state(kill_2)
end
end

state kill_2 begin
when button or info begin
say_title("Mintaure Töten")
say_blue( "Du musst noch ".." "..pc.getqf("Monster").." von 500 töten")
say("")
end

when kill begin
if npc.is_pc() and npc.empire != pc.empire then
local count = pc.getqf("monster") - 1
if count <=500 then
pc.setqf("monster", count)
q.set_counter("kill3", -count)
end

if count == 0 then
say("Herzlichen Glückwunsch")
say("Du hast die Quest abgeschlossen,")
say("als belohnung dafür kannst du dir")
say("eine von 2 Waffen aussuchen")
set_state(kill_3)
end
end
end
end

state kill_3 begin
when 9003 begin
say_reward("Bitte wähle eine waffe aus.")
local a = select("1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "Abbrechen")
if a == 1 then
say("Hier ist dein *Waffenname*")
pc.give_item2(*Vnum*,1)
elseif a == 2 then
say("Hier ist dein *Waffenname*")
pc.give_item2(*Vnum*,1)
elseif a == 3 then
say("Hier ist dein *Waffenname*")
pc.give_item2(*Vnum*,1)
elseif a == 4 then
say("Hier ist dein *Waffenname*")
pc.give_item2(*Vnum*,1)
elseif a == 5 then
say("Hier ist dein *Waffenname*")
pc.give_item2(*Vnum*,1)
elseif a == 6 then
say("Hier ist dein *Waffenname*")
pc.give_item2(*Vnum*,1)
elseif a == 7 then
say("Hier ist dein *Waffenname*")
pc.give_item2(*Vnum*,1)
elseif a == 8 then
say("Hier ist dein *Waffenname*")
pc.give_item2(*Vnum*,1)
elseif a == 9 then
return
end
02/14/2012 11:15 lakus124#4748
Quote:
Originally Posted by Destroyer446 View Post
Ich schätze, die Quest ist richtig, nur der "onclick" vom NPC falsch.
Der "onclick" muss auf 2 (oder 1, aber glaube 2) stehen, damit du ihn anklicken kannst.
Prüfe das mal in der "mob_proto" Tabelle unter "player".

Mfg, Destroyer446
Der Onclick ist richtig
Da muss irgendetwas mit der quest sein
02/14/2012 11:54 .Delta#4749
Code:
quest Ring begin
	state start begin
		when 20041.chat."Ring kaufen" begin
			say_title("Ring kaufen")
			say("Hier kannst du Ringe mit bestimmten Goldgehalten")
			say("kaufen, die du Handeln und später wieder in Geld")
			say("umtauschen kannst!")
			local s=select("Goldgehalt 585 (500kk)", "Goldgehalt 750 (1kkk)", "Goldgehalt 999 (1,5kkk)", "Abbrechen")
			if s==4 then
				return
			elseif s==1 then
				if pc.get_gold()>=500000000 then
					pc.change_gold(-500000000)
					pc.give_item2(50030, 1)
				else
					say_title("Ringkauf fehlgeschlagen")
					say("Du besitzt zu wenig Yang.")
				end
			elseif s==2 then
				if pc.get_gold()>=1000000000 then
					pc.change_gold(-1000000000)
					pc.give_item2(50029, 1)
				else
					say_title("Ringkauf fehlgeschlagen")
					say("Du besitzt zu wenig Yang.")
				end
			elseif s==3 then
				if pc.get_gold()>=1500000000 then
					pc.change_gold(-1500000000)
					pc.give_item2(50028, 1)
				else
					say_title("Ringkauf fehlgeschlagen")
					say("Du besitzt zu wenig Yang.")
				end
			end
		end
		when 50030.use begin
			say_title("Ring")
			say("Möchtest du deinen Ring in Yang einlösen?")
			say_reward("500kk")
			local s = select("Ja", "Nein")
			if s==1 then
				if pc.get_gold()<=1499999999 then
					pc.change_gold(500000000)
					pc.remove_item(50030, 1)
				else
					say_title("Ring")
					say("Du trägst zu viel Yang bei dir!")
				end
			elseif s==2 then
				say_title("Ring")
				say("Dann nicht...")
			end
		end
		when 50029.use begin
			say_title("Ring")
			say("Möchtest du deinen Ring in Yang einlösen?")
			say_reward("1kkk")
			local s = select("Ja", "Nein")
			if s==1 then
				if pc.get_gold()<=999999999 then
					pc.change_gold(1000000000)
					pc.remove_item(50029, 1)
				else
					say_title("Ring")
					say("Du trägst zu viel Yang bei dir!")
				end
			elseif s==2 then
				say_title("Ring")
				say("Dann nicht...")
			end
		end
		when 50028.use begin
			say_title("Ring")
			say("Möchtest du deinen Ring in Yang einlösen?")
			say_reward("1.5kkk")
			local s = select("Ja", "Nein")
			if s==1 then
				if pc.get_gold()<=499999999 then
					pc.change_gold(1500000000)
					pc.remove_item(50028, 1)
				else
					say_title("Ring")
					say("Du trägst zu viel Yang bei dir!")
				end
			elseif s==2 then
				say_title("Ring")
				say("Dann nicht...")
			end
		end
	end
end

Code:
quest kill begin
	state start begin
		when login or levelup with pc.level() >= 100 begin
			set_state(kill_1)
		end
	end
	state kill_1 begin
		when letter begin
			send_letter("Mintaure Töten")
		end
		when button or info begin
			say_title("Mintaure Töten")
			say("Töte 500 Mintaure und erhalte")
			say("eine schöne Überraschung!")
			pc.setqf("monster", 0)
			q.set_counter("kills", 500)
			set_state(kill_2)
		end
	end
	state kill_2 begin
		when letter begin
			send_letter("Minotaure töten")
		end
		when button or info begin
			say_title("Mintaure Töten")
			say_blue( "Du musst noch ".." "..500-pc.getqf("monster").." von 500 töten")
			say("")
		end
		when kill with npc.get_race() == 2604 begin
			local count = pc.getqf("monster")+1
			if count <=500 then
				pc.setqf("monster", count)
				q.set_counter("kills", 500-count)
				if count == 500 then
					say("Herzlichen Glückwunsch")
					say("Du hast die Quest abgeschlossen,")
					say("als belohnung dafür kannst du dir")
					say("eine von 2 Waffen aussuchen")
					set_state(kill_3)
				end
			end
		end
	end
	state kill_3 begin
		when letter begin
			send_letter("Belohnung")
		end
		when button or info begin
			say("Gehe zu "..mob_name(9003))
		end
		when 9003.chat."Belohnung" begin
			say_reward("Bitte wähle eine waffe aus.")
			local weapons = {vnum1, vnum2, vnum3, vnum4, vnum5, vnum6, vnum7, vnum8}
			local a = select("1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "Abbrechen")
			if a == 9 then return end
			say("Hier ist dein "..item_name(weapons[a]))
			pc.give_item2(weapons[a], 1)
			set_state(__complete)
		end
	end
	state __complete begin
	end
end
02/14/2012 12:16 lakus124#4750
Danke jetz kann ich endlich die ringe kaufen aber ich kann die ringe nicht wieder in yang einlösen ? der teil der quest funktioniert nicht oder (dumme frage) gibts bei items auch ein on_click?
02/14/2012 12:22 .Delta#4751
du musst den type des items auf 18 stellen
02/14/2012 13:29 NiiceOne#4752
-.-

Code:
quest premium begin
	state start begin
		when 9010.chat."Premiumbereich" begin
			if pc.getqf("premium_user")==0 and pc.count_item(70010) >=1 then
				say_title("Premium Status")
				say("")
				say("Möchtest du den Premiumstatus aktivieren?")
				say("")
				say_reward("Durch den Premiumstatus hast du zugriff auf viele zusätzliche Funktionen")
				say("")
				
				local a = select("Ja", "Nein")
				
				if a == 1 then
					pc.setqf("premium_user", 1)
					pc.remove_item(70010, 1)
					chat("Premiumstatus aktiv!")
				else
					return
				end
			elseif pc.getqf("premium_user")==0 and pc.count_item(70010 <=1 then
				say_title("Premium Status")
				say("")
				say("Du bist leider noch kein Premium Mitglied")
				say("")
				say_reward("Um Premium Mitglied zu werden, musst du dir")
				say_reward("den Premiumschein aus dem Itmshop kaufen.")
			elseif pc.getqf("premium_user")==1 then
				say_title("Premium System")
				say_reward("Bitte wähle aus, was du tun möchtest.")
				
				local b = select("Informationen", "Lager", "Premium Shop", "Meisterbücher", "Mehr")
				
				if b == 1 then
					say_title("Premium System")
					say("premium informationen")
					
				elseif b == 2 then
					local c = select("Lager öffnen", "Item-Shop Lager öffnen", "Abbrechen")
						
						if c == 1 then
							game.open_safebox()
						
						elseif c == 2 then
							game.open_mall()
						
						elseif c == 3 then
							return
					end
					
				elseif b == 3 then
					npc.open_shop(18)
				
				elseif b == 4 then
					if pc.get_job() == 0 then
						local d = select("Körper Lehre", "Mental Lehre", "Abbrechen")
					
						if d == 1 then
							npc.open_shop(6660)
					
						elseif d == 2 then
							npc.open_shop(6661)
					
						elseif d == 3 then
							return
						end
						
					if pc.get_job() == 1 then
						local e = select("Nahkampf Lehre", "Fernkampf Lehre", "Abbrechen")
						
						if e == 1 then
							npc.open_shop(6662)
						
						elseif e == 2 then
							npc.open_shop(6663)
							
						elseif e == 3 then
							return
						end
					
					if pc.get_job() == 2 then
						local f = select("Waffen Lehre", "Dunkle Magie Lehre", "Abbrechen")
						
						if f == 1 then
							npc.open_shop(6664)
							
						elseif f == 2 then
							npc.open_shop(6665)
							
						elseif f == 3 then
							return
						end
						
					if pc.get_job() == 3 then
						local g = select("Drachen Lehre", "Heiler Lehre", "Abbrechen")
						
						if g == 1 then
							npc.open_shop(6667)
						
						elseif g == 2 then
							npc.open_shop(6666)
						
						elseif g == 3 then
							return
						end
					
					elseif b == 5 then
						local h = select("Grotte der Verbannung Ebene 2", "Eine globale Ankündigung schreiben", "Abbrechen")
						
						if h == 1 then
						say_title("Grotte der Verbannung Ebene 2")
						say("")
						say("Sei gegrüßt Reisender!")
						say("Du möchtest also in die 2te Ebene der Grotte?")
						say("Diese map ist erst ab Level 80 Ereichbar!")
						say("Es gibt keine Ausnahmen, da man nicht genau weiß,")
						say("was für Monster dort lauern, also seit gewarnt!")
						say("Ich kann dich jedoch gerne hinbringen.")
						say("")
						say("Möchtest du wirklich in die 2te Ebene?")
						say("")
						local i= select("Ja","Nein")
						if i==1 then
							say("Gut")
							say("Ich wuensche dir viel Spass")
							say("Und pass auf dich auf...")
							wait()
							pc.warp(153600, 1356800)
							return
						else
						say("Gut")
						say("Dann bleib erst einmal hier.")
						end
						
						elseif h == 2 then
							say("Du willst eine Ankündigung schreiben?")
							
						elseif h == 3 then
							return
						end
					end
				end
			end
		end
		when letter with pc.getqf("premium_user")==1 begin
			send_letter("Stadt Teleport")
		end
		when info or button with pc.getqf("premium_user")==1 begin
			say_title("Stadt Teleport")
			say("")
			say("Du möchtest dich also zurück in die Stadt teleportieren?")
			say("")
			
			local g = select ("Ja", "Nein")
			
			if g ==1 then
				warp_to_village()
			else
			say_title("Stadt Teleport")
			say("")
			say("Gut dann bleib erstmal hier")
			send_letter("Stadt Teleport")
			return
		end
	end
end
Code:
QUEST : premium
STATE : start
WHEN  : 9010.chat ("Premiumbereich")
qc in malloc(): error: allocation failed
Error occured on compile premium.quest
woran liegts? :o
02/14/2012 17:13 hr4rjuku#4753
Hallo,

irgendwie funzt diese quest nicht ;(

Bei dieser Quest kommt kein fehler...

Bei dieser map hier kommt folgender Fehler in der console:

syntax error : [string "start"]:14: `then' expected near `chat'
devilscatacomb.quest:28:Error occured on compile devilscatacomb.quest


02/14/2012 21:31 Stickstoffx3#4754
Könnte mir bitte jemand helfen :( Das ist die Quest:

PHP Code:
quest devilscatacomb begin
    state start begin
        when 20350.chat
."Die Devilscatacomb" begin
            
if pc.get_level() < 85 then
                say 
("Du hast noch nicht genuegend Erfahrung gesammelt. Komme wieder, wenn du Level 85 bist!") 
            else 
                
say_title("Wächter der Katakomben")
                
say("")
                
say("Ich war einst Krieger der Kaiserlichen Armee.")
                
say("Vor vielen Jahren gab es einen Ort, der von einem")
                
say("Urgott bewacht wurde. Heute kennt man ihn unter dem")
                
say("Name - The Devil's Catacomb. 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 in den Devilscatacomben teleportieren?")
                
                
local s = select("Teleportieren", "Hier bleiben")
                    if 
s == 1 then
                        pc
.warp(307200, 1203200)
                    else
                        return
                    
end
            end    
        
if    pc.get_map_index() == 205 then
            d
.regen_file("data/dungeon/devilscatacomb1_regen.txt")
            
pc.setf("monster", 0)
            
d.set_counter("kills", 500)
            
local count = pc.getf("monster")+1
        end
        
if count <= 500 then
            pc
.setf("monster", count)
            
d.set_counter("kills", 500-count)
        if 
count == 500 then
            pc
.give_item2(30311, 1)
        
end
    end    
        
if 30101.chat."Nächste Etage" and pc.count_item(30311) > 1 then
            say_title
("Nächste Etage:")
            
say("")
            
say("Du hast das verlorene Item gefunden!")
            
say("")
            
say("Halt dich fest! Ich bring dich")
            
say("eine Ebene höher!")
            
pc.remove_item(30311, 1)
            
d.kill_all()
            
pc.set_warp_location(205 , 550, 45)
        
end
    end
end 
Fehlermeldung: syntax error : [string "start"]:35: `then' expected near `chat'
devilscatacomb.quest:50:Error occured on compile devilscatacomb.quest



Bitte um hilfe :)
02/14/2012 21:35 xJ3Lack_MaieRx#4755
kann man in eine quest eine internet adresse einfügen.
weil ich kann den itemshop nicht über die uishop ändern.

mfg