[SERVICE] Die Questerstellung

04/07/2015 21:53 rollback#2446
Quote:
Originally Posted by Backxtar View Post
Hey folgendes.. und zwar würde ich gerne, dass wenn ein neuer Spieler auf meinen Server kommt, oben im notice_all geschrieben wird: wir begrüßen ba bla als neuen Spieler auf SERVERNAME - Gleichzeitig soll aber neben noch eine Questrolle mit Willkommen auf SERVERNAME stehen und darin sollen halt paar Infos rein.

Das ganze soll mit in die Lehrlingstruhenquest gepackt werden - möglichst an den Anfang :D

Hier meine bereits Funktionierende Quest :)

Ich würds so machen:

Code:
quest firstlogin begin
	state start begin
		when login begin
			pc.give_item2(50187, 1)
			pc.set_skill_level(131, 10) --Pferd Rufen
			pc.set_skill_level(137, 20) --Pferderücken
			pc.set_skill_level(138, 20) --Pferdestampfer
			pc.set_skill_level(139, 20) --Kraftwelle
			pc.set_skill_level(140, 20) --Pfeilregen
			horse.set_level(21) --Pferd LVL 21
			notice_all("Wir begrüßen "..pc.get_name().." als neuen Spieler auf SERVERNAME.")
			set_state(letter)
		end
	end
	state letter begin
		when login or enter begin
			send_letter("Willkommen auf SERVERNAME!")
		end
		when button or info begin
			say("Hallo "..pc.get_name().."!")
			say("Dieser Server ist total cool!")
			if select("Info löschen", "Info behalten") == 2 then return end
			clear_letter()
			set_state(_COMPLETE_)
		end
	end
	state _COMPLETE_ begin
	end
end

quest lehrlingstruhe begin
	state start begin
		when 50187.use or 50188.use or 50189.use or 50190.use or 50191.use or 50192.use or 50193.use or 50194.use or 50195.use or 50196.use begin
			local truhe_config = {
				[50187] = {
					["lv"] = 0,
					[0] = {
						{19, 1},
						{11209, 1},
						{12209, 1}
					},
					[1] = {
						{1009, 1},
						{11409, 1},
						{12349, 1}
					},
					[2] = {
						{19, 1},
						{11609, 1},
						{12489, 1}
					},
					[3] = {
						{7009, 1},
						{11809, 1},
						{12629, 1}
					},
					["all"] = {
						{13009, 1},
						{14009, 1},
						{17009, 1},
						{16009, 1},
						{15009, 1},
						{70058, 1},
						{50053, 1},
						{72724, 1},
						{72728, 1},
						{27112, 1},
						{27115, 1},
						{72701, 1},
						{76007, 200},
						{76023, 25},
						{76024, 25},
						{50034, 1},
						{50188, 1}
					}
				},
				[50188] = {
					["lv"] = 10,
					[0] = {},
					[1] = {},
					[2] = {},
					[3] = {},
					["all"] = {
						{25040, 5},
						{76023, 50},
						{76024, 50},
						{76008, 5},
						{50189, 1}
					}
				},
				[50189] = {
					["lv"] = 20,
					[0] = {},
					[1] = {},
					[2] = {},
					[3] = {},
					["all"] = {
						{39024, 5},
						{39025, 5},
						{71003, 1},
						{71034, 25},
						{50190, 1}
					}
				},
				[50190] = {
					["lv"] = 30,
					[0] = {},
					[1] = {},
					[2] = {},
					[3] = {},
					["all"] = {
						{71035, 10},
						{71001, 10},
						{71084, 75},
						{71094, 5},
						{50191, 1}
					}
				},
				[50191] = {
					["lv"] = 40,
					[0] = {},
					[1] = {},
					[2] = {},
					[3] = {},
					["all"] = {
						{71101, 15},
						{25040, 15},
						{27987, 10},
						{70003, 1},
						{50192, 1}
					}
				},
				[50192] = {
					["lv"] = 50,
					[0] = {},
					[1] = {},
					[2] = {},
					[3] = {},
					["all"] = {
						{50513, 5},
						{39005, 15},
						{71027, 5},
						{71107, 5},
						{71034, 50},
						{50193, 1}
					}
				},
				[50193] = {
					["lv"] = 60,
					[0] = {},
					[1] = {},
					[2] = {},
					[3] = {},
					["all"] = {
						{71001, 10},
						{39016, 10},
						{71094, 10},
						{39018, 5},
						{50194, 1}
					}
				},
				[50194] = {
					["lv"] = 70,
					[0] = {},
					[1] = {},
					[2] = {},
					[3] = {},
					["all"] = {
						{39015, 5},
						{27992, 3},
						{27993, 3},
						{27994, 3},
						{50082, 1},
						{71001, 20},
						{50195, 1}
					}
				},
				[50195] = {
					["lv"] = 80,
					[0] = {},
					[1] = {},
					[2] = {},
					[3] = {},
					["all"] = {
						{25041, 1},
						{30179, 3},
						{50186, 1},
						{50513, 10},
						{71094, 10},
						{50196, 1}
					}
				},
				[50196] = {
					["lv"] = 90,
					[0] = {},
					[1] = {},
					[2] = {},
					[3] = {},
					["all"] = {
						{39005, 15},
						{39016, 10},
						{39015, 5},
						{27992, 5},
						{27993, 5},
						{27994, 5},
						{25041, 1},
						{71153, 1}
					}
				}
			}
			if pc.get_level() >= truhe_config[item.get_vnum()]["lv"] then
				for _, tbl in pairs(truhe_config[item.get_vnum()][pc.get_job()]) do
					pc.give_item2(tbl[1], tbl[2])
				end
				for _, tbl in pairs(truhe_config[item.get_vnum()]["all"]) do
					pc.give_item2(tbl[1], tbl[2])
				end
				pc.remove_item(item.get_vnum(), 1)
			else
				syschat("Diese Truhe kannst du erst ab Level "..truhe_config[item.get_vnum()]["lv"].." öffnen.")
			end
		end
	end
end
falls du fragen zur quest hast kannst du sie natürlich jederzeit auf mich losjagen ;)
04/07/2015 23:05 Fydes#2447
Nabend,
ich suche eine Quest, die sobald ich 20 Mobs getötet hab, alle Monster purged.. :)

Danke
04/07/2015 23:07 KΛIƬӨ#2448
Quote:
Originally Posted by Fydes View Post
Nabend,
ich suche eine Quest, die sobald ich 20 Mobs getötet hab, alle Monster purged.. :)

Danke
Code:
quest kaito begin
	state start begin
		when kill with not npc.is_pc() begin
			pc.setqf("mobkill",pc.getqf("mobkill")+1)
			if pc.getqf("mobkill") == 20 then
				pc.delqf("mobkill")
			end
		end
	end
end
EDIT: Würde lieber das auf ein paar Mobs beziehen und nicht alle weil die Quest ziemlich den Server belasten wird/würde.


Falsch verstanden wenn du dies meintest dann hier:

Code:
quest kaito begin
	state start begin
		when kill with not npc.is_pc() and pc.get_map_index() == mapindex begin
			pc.setqf("mobkill",pc.getqf("mobkill")+1)
			if pc.getqf("mobkill") == 20 then
				forked.purge_all_monsters()
			end
		end
	end
end
04/08/2015 13:35 Backxtar#2449
Suche eine Quest, die mit Lvl 5 beginnt und bei der man 10 Metin der Schlacht töten muss.
Anschließend soll man zwischen 3 Belohnungen auswählen können :3

Gruss :3
04/08/2015 14:05 KΛIƬӨ#2450
Quote:
Originally Posted by Backxtar View Post
Suche eine Quest, die mit Lvl 5 beginnt und bei der man 10 Metin der Schlacht töten muss.
Anschließend soll man zwischen 3 Belohnungen auswählen können :3

Gruss :3
Code:
quest kaito begin
	state start begin
		when login or levelup with pc.get_level() == 5 begin
			send_letter("Die Metin-Zerstörung")
		end
		when button or info begin 
			say_title("Die Metin-Zerstörung")
			say_reward("Bitte zerstöre 5 Metin der Schlacht")
			if select("Kannst du das für mich machen?","Ne sorry") == 2 then return end
			pc.setqf("metinkill",0)
			clear_letter()
		end
		when kill with npc.get_race() == metinvnum begin
			pc.setqf("metinkill",pc.getqf("metinkill")+1)
			if pc.getqf("metinkill") == 20 then
				send_letter("Geschafft!")
			end
		end
		when button or info begin
			say_title("Die Metin-Zerstörung")
			say("Du hast 5 Metin der Schlacht zerstört!")
			say("Du kannst dir nun eine Belohnung aussuchen")
			local s = select("belohnung","belohnung","belohnung")
			--- Wusste nicht welche Belohnung =) 
			setstate(_COMPLETE_)
		end
	end
	state _COMPLETE_ begin
	end
end
04/08/2015 14:10 rollback#2451
Die quest könnte man auch schon mit lv1 abschließen. Ausserdem würde die quest nicht kommen,wenn man sofort lv 6 kommt zb.

Wenn man sich mit lv 6 oder höher einloggt würde die questrolle nicht mehr kommen


Wenn jemand bei der Belohnung Esc drückt bekommt er das 1. Item
04/08/2015 14:14 KΛIƬӨ#2452
Quote:
Originally Posted by definitely not Sensenmann View Post
Die quest könnte man auch schon mit lv1 abschließen. Ausserdem würde die quest nicht kommen,wenn man sofort lv 6 kommt zb.

Wenn man sich mit lv 6 oder höher einloggt würde die questrolle nicht mehr kommen


Wenn jemand bei der Belohnung Esc drückt bekommt er das 1. Item
Code:
quest kaito begin
	state start begin
		when login or levelup with pc.get_level() >= 5 begin
			send_letter("Die Metin-Zerstörung")
		end
		when button or info begin with pc.get_level() >= 5 begin 
			say_title("Die Metin-Zerstörung")
			say_reward("Bitte zerstöre 5 Metin der Schlacht")
			if select("Kannst du das für mich machen?","Ne sorry") == 2 then return end
			pc.setqf("metinkill",0)
			clear_letter()
		end
		when kill with npc.get_race() == metinvnum and pc.get_level() >= 5  
			pc.setqf("metinkill",pc.getqf("metinkill")+1)
			if pc.getqf("metinkill") == 20 then
				send_letter("Geschafft!")
			end
		end
		when button or info with pc.get_level() >= 5 begin
			say_title("Die Metin-Zerstörung")
			say("Du hast 5 Metin der Schlacht zerstört!")
			say("Du kannst dir nun eine Belohnung aussuchen")
			local s = select("belohnung","belohnung","belohnung")
			--- Wusste nicht welche Belohnung =) 
			setstate(_COMPLETE_)
		end
	end
	state _COMPLETE_ begin
	end
end
04/08/2015 14:15 rollback#2453
Man schreibt es wie man es spricht (größer gleich)

Du kannst nicht 2 Letter in einer state senden
04/08/2015 14:17 KΛIƬӨ#2454
Quote:
Originally Posted by definitely not Sensenmann View Post
Man schreibt es wie man es spricht (größer gleich)

Du kannst nicht 2 Letter in einer state senden
Ich hab doch den vorherigen Letter gecleart, warum würde das nicht gehen? Zumindest geht es bei mir Ingame.
04/08/2015 14:26 Backxtar#2455
trag mal irgendwelche items in die belohnung ein :D
04/08/2015 14:30 KΛIƬӨ#2456
Quote:
Originally Posted by Backxtar View Post
trag mal irgendwelche items in die belohnung ein :D
Code:
quest kaito begin
	state start begin
		when login or levelup with pc.get_level() >= 5 begin
			send_letter("Die Metin-Zerstörung")
		end
		when button or info begin with pc.get_level() >= 5 begin 
			say_title("Die Metin-Zerstörung")
			say_reward("Bitte zerstöre 5 Metin der Schlacht")
			if select("Kannst du das für mich machen?","Ne sorry") == 2 then return end
			pc.setqf("metinkill",0)
			clear_letter()
		end
		when kill with npc.get_race() == metinvnum and pc.get_level() >= 5  
			pc.setqf("metinkill",pc.getqf("metinkill")+1)
			if pc.getqf("metinkill") == 20 then
				send_letter("Geschafft!")
			end
		end
		when button or info with pc.get_level() >= 5 begin
			say_title("Die Metin-Zerstörung")
			say("Du hast 5 Metin der Schlacht zerstört!")
			say("Du kannst dir nun eine Belohnung aussuchen")
			local s = select("Yang","Exp","Garnix")
			if s == 1 then
				pc.change_gold(100000)
			elseif s == 2 then
				pc.give_exp2(20000)
			elseif s == 3 then return end
			setstate(_COMPLETE_)
		end
	end
	state _COMPLETE_ begin
	end
end
04/08/2015 14:33 Backxtar#2457
ich probiers ma aus :)!

Bekomme einen error..

Hier die Quest..

04/08/2015 14:53 rollback#2458
Quote:
Originally Posted by DYSKaito View Post
Ich hab doch den vorherigen Letter gecleart, warum würde das nicht gehen? Zumindest geht es bei mir Ingame.
Weil die quest nur innerhalb des when Blocks von oben nach unten gelesen werden kann.Die einzelnen when Blöcke sind voneinander komplett unabhängig
04/08/2015 15:03 Backxtar#2459
Also kann die quest nicht funktionieren? :(
04/08/2015 15:04 KΛIƬӨ#2460
Quote:
Originally Posted by definitely not Sensenmann View Post
Weil die quest nur innerhalb des when Blocks von oben nach unten gelesen werden kann.Die einzelnen when Blöcke sind voneinander komplett unabhängig
Code:
quest kaito begin
	state start begin
		when login or levelup with pc.get_level() >= 5 begin
			send_letter("Die Metin-Zerstörung")
		end
		when button or info with pc.get_level() >= 5 begin 
			say_title("Die Metin-Zerstörung")
			say_reward("Bitte zerstöre 5 Metin der Schlacht")
			if select("Kannst du das für mich machen?","Ne sorry") == 2 then return end
			pc.setqf("metinkill",0)
			clear_letter()
		end
		when kill with npc.get_race() == metinvnum and pc.get_level() >= 5  
			pc.setqf("metinkill",pc.getqf("metinkill")+1)
			if pc.getqf("metinkill") == 20 then
				setstate(letterfuersensenmann)
			end
		end
	end
	state letterfuersensenmann begin
		when letter begin
			send_letter("Geschafft")
		end
		when button or info with pc.get_level() >= 5 begin
			say_title("Die Metin-Zerstörung")
			say("Du hast 5 Metin der Schlacht zerstört!")
			say("Du kannst dir nun eine Belohnung aussuchen")
			local s = select("Yang","Exp","Garnix")
			if s == 1 then
				pc.change_gold(100000)
			elseif s == 2 then
				pc.give_exp2(20000)
			elseif s == 3 then return end
			setstate(_COMPLETE_)
		end
	end
	state _COMPLETE_ begin
	end
end
Zufrieden ? :D

Backxtar benutz mal die hab ausversehen in nem When Block zwei begins reingesetzt.