[SERVICE] Die Questerstellung

03/13/2015 11:55 K.A.K.A.S.H.I#2311
Ich würde mich sehr freuen wenn jemand diese Quests so umschreibt damit man sie bei Items mit einem Klick drauf benutzen muss.

1. Quest

2. Quest

3. Quest

4. Quest

5. Quest

6. Quest
03/13/2015 12:13 rollback#2312
Quote:
Originally Posted by Pr0Tube View Post
Ich würde mich sehr freuen wenn jemand diese Quests so umschreibt damit man sie bei Items mit einem Klick drauf benutzen muss.

1. Quest

2. Quest

3. Quest

4. Quest

5. Quest

6. Quest
PHP Code:
quest rang_plus_4000 begin 
    state start begin  
        when 1111.
use begin 
            say_title
("4000 Rangpunkte +"
            
say(""
            
say("Möchtest du 4000 Rangpunkte erhalten?"
            if 
select("Ja""Nein")==2 then return end 
            pc
.change_alignment(4000)
        
end 
    end 
end 
ich bin mir sicher, dass du den Rest alleine schaffst
03/13/2015 15:40 .yorliK#2313
Quote:
Originally Posted by [SA]Tauron View Post
Hei ich habe eine idee für was neues in Mt2 ein wellen System oder Quest
also ich mache gerade eine 1x1er map wo dann am anfang z.B ein wildhund steht nach demm man ihn gekillt hat spawnen mehr mobs nach den man die killt noch mehr und schwerere

also wäre es möglich eine quest zu schreiben wo nach killen eines mobs mehrere spawnen:D

also so eine wellen quest ich hab da leider keine ahnung :D
Um die Quest zu benutzen muss der Index, die Warps etc. angepasst werden und in "data/dungeon/wellen_run/welle" müssen spawn.txts von welle1.txt bis wellemax.txt sein. In Quest gibt es auch eine Variable die nennt sich MAX_WELLE, bis zu dieser Welle müssen die wellex.txts gehen, sonst gibt es Fehler. Nach erreichen der MAX_WELLE wiederholt sich die maximale Welle bis ins unendliche^^ Natürlich kann man auch einbauen, das es irgendwann zu Ende ist.
Code:
quest wellen_run begin
	state start begin
		when 20011.chat."Wellen-Run"begin
			say_title("Wellen-Run")
			say("")
			say("Starten?")
			if select("Ja","Nein")==2 then return end
			if party.is_party() then
				if party.is_leader() then
					if pc.get_level()>=30 then
							d.new_jump_all(43, 8731, 2426) -- MapIndex + Warpcodes zu Map
					else
						say_title("Mindestlevel!")
						say("")
						say("Alle Gruppenmitglieder müssen ein")
						say("Mindestlevel von 30 haben.")
					end
				else
					say_title("Gruppenleiter")
					say("")
					say("Nur der Gruppenleiter kann den Run")
					say("starten!")
				end
			else
				say_title("Gruppe")
				say("")
				say("Du musst in einer Gruppe sein, damit")
				say("du in den Run kannst!")
			end
		end
		-- MapIndex+0000
		-- Eingrenzen MapIndex ist z.B. 101 also wäre der DungeonIndex 1010000 der nächstliegende Index ist 102 und wir
		-- wissen das alle Koordinaten dieser Map zwischen 101 und 102 Index liegen müssen also
		-- 1010000 und 1020000
		when login with pc.get_map_index() >= 430000 and pc.get_map_index() < 440000 begin
			if pc.get_level()<30 then
				d.notice("Einer eurer Mitglieder ist unter Lv120! Betrüger!")
				d.exit_all()
			end
			wellen_run.set_empire_locaction()
			if d.getf("isspawn")==1 then return end
			d.setf("isspawn", 1)
			d.spawn_mob(20019, 548, 364) -- NPC der denn Dungeon im Run startet!
			if d.getf("Welle")==0 then
				d.notice("Spricht mit dem "..mob_name(20019)..". Er wird euch den Run eröffnen.")
			end
		end
		when 20019.click with pc.get_map_index() >= 430000 and pc.get_map_index() < 440000 begin -- NPC der denn Dungeon im Run startet!
			if d.getf("Welle")==0 then
				npc.purge()
				d.notice("Okay, und los gehts! Versucht euer Glück und kommt soweit wie möglich!")
				loop_timer("Welle", 1)
			end
		end
		when Welle.timer begin
			local MAX_WELLE = 4
			if d.count_monster()==0 then d.setf("IsWelle", 0) d.setf("Welle", d.getf("Welle")+1) end
			if d.getf("IsWelle")==1 then return end
			d.notice("Welle "..d.getf("Welle").." ist im Anmarsch.")
			d.setf("IsWelle", 1)
			if d.getf("Welle")>=MAX_WELLE then
				d.regen_file("data/dungeon/wellen_run/welle"..MAX_WELLE..".txt") --txt
			else
				d.regen_file("data/dungeon/wellen_run/welle"..d.getf("Welle")..".txt")
			end
		end
		function set_empire_locaction()
			if pc.get_empire()==1 then
				pc.set_warp_location(1, 4693, 9642)
			elseif pc.get_empire()==2 then
				pc.set_warp_location(21, 557, 1579)
			elseif pc.get_empire()==3 then
				pc.set_warp_location(41, 9696, 2784)
			end
		end
	end
end
03/13/2015 16:12 mkiiing#2314
Quote:
Originally Posted by Kilroy. View Post
Um die Quest zu benutzen muss der Index, die Warps etc. angepasst werden und in "data/dungeon/wellen_run/welle" müssen spawn.txts von welle1.txt bis wellemax.txt sein. In Quest gibt es auch eine Variable die nennt sich MAX_WELLE, bis zu dieser Welle müssen die wellex.txts gehen, sonst gibt es Fehler. Nach erreichen der MAX_WELLE wiederholt sich die maximale Welle bis ins unendliche^^ Natürlich kann man auch einbauen, das es irgendwann zu Ende ist.
Code:
quest wellen_run begin
	state start begin
		when 20011.chat."Wellen-Run"begin
			say_title("Wellen-Run")
			say("")
			say("Starten?")
			if select("Ja","Nein")==2 then return end
			if party.is_party() then
				if party.is_leader() then
					if pc.get_level()>=30 then
							d.new_jump_all(43, 8731, 2426) -- MapIndex + Warpcodes zu Map
					else
						say_title("Mindestlevel!")
						say("")
						say("Alle Gruppenmitglieder müssen ein")
						say("Mindestlevel von 30 haben.")
					end
				else
					say_title("Gruppenleiter")
					say("")
					say("Nur der Gruppenleiter kann den Run")
					say("starten!")
				end
			else
				say_title("Gruppe")
				say("")
				say("Du musst in einer Gruppe sein, damit")
				say("du in den Run kannst!")
			end
		end
		-- MapIndex+0000
		-- Eingrenzen MapIndex ist z.B. 101 also wäre der DungeonIndex 1010000 der nächstliegende Index ist 102 und wir
		-- wissen das alle Koordinaten dieser Map zwischen 101 und 102 Index liegen müssen also
		-- 1010000 und 1020000
		when login with pc.get_map_index() >= 430000 and pc.get_map_index() < 440000 begin
			if pc.get_level()<30 then
				d.notice("Einer eurer Mitglieder ist unter Lv120! Betrüger!")
				d.exit_all()
			end
			wellen_run.set_empire_locaction()
			if d.getf("isspawn")==1 then return end
			d.setf("isspawn", 1)
			d.spawn_mob(20019, 548, 364) -- NPC der denn Dungeon im Run startet!
			if d.getf("Welle")==0 then
				d.notice("Spricht mit dem "..mob_name(20019)..". Er wird euch den Run eröffnen.")
			end
		end
		when 20019.click with pc.get_map_index() >= 430000 and pc.get_map_index() < 440000 begin -- NPC der denn Dungeon im Run startet!
			if d.getf("Welle")==0 then
				npc.purge()
				d.notice("Okay, und los gehts! Versucht euer Glück und kommt soweit wie möglich!")
				loop_timer("Welle", 1)
			end
		end
		when Welle.timer begin
			local MAX_WELLE = 4
			if d.count_monster()==0 then d.setf("IsWelle", 0) d.setf("Welle", d.getf("Welle")+1) end
			if d.getf("IsWelle")==1 then return end
			d.notice("Welle "..d.getf("Welle").." ist im Anmarsch.")
			d.setf("IsWelle", 1)
			if d.getf("Welle")>=MAX_WELLE then
				d.regen_file("data/dungeon/wellen_run/welle"..MAX_WELLE..".txt") --txt
			else
				d.regen_file("data/dungeon/wellen_run/welle"..d.getf("Welle")..".txt")
			end
		end
		function set_empire_locaction()
			if pc.get_empire()==1 then
				pc.set_warp_location(1, 4693, 9642)
			elseif pc.get_empire()==2 then
				pc.set_warp_location(21, 557, 1579)
			elseif pc.get_empire()==3 then
				pc.set_warp_location(41, 9696, 2784)
			end
		end
	end
end
sehr schöne quest :) könnte man noch einbauen, dass wenn man stirbt, erst in der nächsten runde wieder reinkann (wenn die welle vorbei ist)? oder wenn alle tot sind, man rausgeportet wird, und ein item abhängig von der wellen anzahl kriegt?^^
lg
E: warum checkt man das level 2mal? ^^ und ich nehme an, dass soll lvl 30 sein oder?
03/13/2015 16:29 rollback#2315
Quote:
Originally Posted by mkiiing View Post
sehr schöne quest :) könnte man noch einbauen, dass wenn man stirbt, erst in der nächsten runde wieder reinkann (wenn die welle vorbei ist)? oder wenn alle tot sind, man rausgeportet wird, und ein item abhängig von der wellen anzahl kriegt?^^
lg
E: warum checkt man das level 2mal? ^^ und ich nehme an, dass soll lvl 30 sein oder?
Weil nur das Level des Leaders geprüft wird beim starten, dann wird die komplette Gruppe geportet. Deswegen die Abfrage wenn man sich einloggt auf der Map
03/13/2015 17:16 mkiiing#2316
Quote:
Originally Posted by Kilroy. View Post
Um die Quest zu benutzen muss der Index, die Warps etc. angepasst werden und in "data/dungeon/wellen_run/welle" müssen spawn.txts von welle1.txt bis wellemax.txt sein. In Quest gibt es auch eine Variable die nennt sich MAX_WELLE, bis zu dieser Welle müssen die wellex.txts gehen, sonst gibt es Fehler. Nach erreichen der MAX_WELLE wiederholt sich die maximale Welle bis ins unendliche^^ Natürlich kann man auch einbauen, das es irgendwann zu Ende ist.
Code:
quest wellen_run begin
	state start begin
		when 20011.chat."Wellen-Run"begin
			say_title("Wellen-Run")
			say("")
			say("Starten?")
			if select("Ja","Nein")==2 then return end
			if party.is_party() then
				if party.is_leader() then
					if pc.get_level()>=30 then
							d.new_jump_all(43, 8731, 2426) -- MapIndex + Warpcodes zu Map
					else
						say_title("Mindestlevel!")
						say("")
						say("Alle Gruppenmitglieder müssen ein")
						say("Mindestlevel von 30 haben.")
					end
				else
					say_title("Gruppenleiter")
					say("")
					say("Nur der Gruppenleiter kann den Run")
					say("starten!")
				end
			else
				say_title("Gruppe")
				say("")
				say("Du musst in einer Gruppe sein, damit")
				say("du in den Run kannst!")
			end
		end
		-- MapIndex+0000
		-- Eingrenzen MapIndex ist z.B. 101 also wäre der DungeonIndex 1010000 der nächstliegende Index ist 102 und wir
		-- wissen das alle Koordinaten dieser Map zwischen 101 und 102 Index liegen müssen also
		-- 1010000 und 1020000
		when login with pc.get_map_index() >= 430000 and pc.get_map_index() < 440000 begin
			if pc.get_level()<30 then
				d.notice("Einer eurer Mitglieder ist unter Lv120! Betrüger!")
				d.exit_all()
			end
			wellen_run.set_empire_locaction()
			if d.getf("isspawn")==1 then return end
			d.setf("isspawn", 1)
			d.spawn_mob(20019, 548, 364) -- NPC der denn Dungeon im Run startet!
			if d.getf("Welle")==0 then
				d.notice("Spricht mit dem "..mob_name(20019)..". Er wird euch den Run eröffnen.")
			end
		end
		when 20019.click with pc.get_map_index() >= 430000 and pc.get_map_index() < 440000 begin -- NPC der denn Dungeon im Run startet!
			if d.getf("Welle")==0 then
				npc.purge()
				d.notice("Okay, und los gehts! Versucht euer Glück und kommt soweit wie möglich!")
				loop_timer("Welle", 1)
			end
		end
		when Welle.timer begin
			local MAX_WELLE = 4
			if d.count_monster()==0 then d.setf("IsWelle", 0) d.setf("Welle", d.getf("Welle")+1) end
			if d.getf("IsWelle")==1 then return end
			d.notice("Welle "..d.getf("Welle").." ist im Anmarsch.")
			d.setf("IsWelle", 1)
			if d.getf("Welle")>=MAX_WELLE then
				d.regen_file("data/dungeon/wellen_run/welle"..MAX_WELLE..".txt") --txt
			else
				d.regen_file("data/dungeon/wellen_run/welle"..d.getf("Welle")..".txt")
			end
		end
		function set_empire_locaction()
			if pc.get_empire()==1 then
				pc.set_warp_location(1, 4693, 9642)
			elseif pc.get_empire()==2 then
				pc.set_warp_location(21, 557, 1579)
			elseif pc.get_empire()==3 then
				pc.set_warp_location(41, 9696, 2784)
			end
		end
	end
end
also habe ein paar probleme damit...
hab meinen npc, mapindex, koordis eingetragen aber in wenn ich dann auf JA gehe, passiert nichts^^ die syserr
das kommt etwa 100x vor wenn ich auf JA gehe (die Line 477 ist vom Opponent HP/MP von mir eingefügt worden..)^^
das habe ich eingetragen (koordis auch mit 00 am Ende versucht)
LG :)

E: muss der komplette pfad der welle.txt angeben werde? und fängt des bei welle0 oder welle1 an?^^
03/13/2015 18:01 .Skreezh#2317
Kann mir jemand sagen wo der Fehler bei der Quest liegt?

Quote:
quest give_basic_weapon begin
pc . give_item2 ( "72726" , 1 )
pc . give_item2 ( "72730" , 1 )
pc . give_item2 ( "70038" , 200 )
pc . give_item2 ( "27111" , 25 )
pc . give_item2 ( "27114" , 25 )
pc . give_item2 ( "71148" , 1 )
pc . give_item2 ( "50053" , 1 )
pc . give_item2 ( "72702" , 1 )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
horse . advance ( )
if pc . job == 0 then
pc . give_item2 ( "15" , 1 )
pc . give_item2 ( "11207" , 1 )
pc . give_item2 ( "12207" , 1 )
elseif pc . job == 1 then
pc . give_item2 ( "1005" , 1 )
pc . give_item2 ( "11407" , 1 )
pc . give_item2 ( "12347" , 1 )
elseif pc . job == 2 then
pc . give_item2 ( "15" , 1 )
pc . give_item2 ( "11607" , 1 )
pc . give_item2 ( "12487" , 1 )
elseif pc . job == 3 then
pc . give_item2 ( "7005" , 1 )
pc . give_item2 ( "11807" , 1 )
pc . give_item2 ( "12627" , 1 )
end
end
end
Immer wenn ich mich einlogge / Wohin porte bekomme ich alles erneut
03/13/2015 18:10 rollback#2318
Quote:
Originally Posted by .Skreezh View Post
Kann mir jemand sagen wo der Fehler bei der Quest liegt?



Immer wenn ich mich einlogge / Wohin porte bekomme ich alles erneut
Code:
quest give_basic_weapon begin
	state start begin
		when login begin
			local items = {
				all = {
					{72726, 1},
					{72730, 1},
					{70038, 200},
					{27111, 25},
					{27114, 25},
					{71148, 1},
					{50053, 1},
					{72702, 1}
				},
				krieger = {
					{15, 1},
					{11207, 1},
					{12207, 1}
				},
				ninja = {
					{1005, 1},
					{11407, 1},
					{12347, 1}
				},
				sura = {
					{15, 1},
					{11607, 1},
					{12487, 1}
				},
				schamane = {
					{7005, 1},
					{11807, 1},
					{12627, 1}
				}
			}
			horse.set_level(21)
			give_item_from_table(items.all)
			if pc.get_job() == 0 then
				give_item_from_table(items.krieger)
			elseif pc.get_job() == 1 then
				give_item_from_table(items.ninja)
			elseif pc.get_job() == 2 then
				give_item_from_table(items.sura)
			elseif pc.get_job() == 3 then
				give_item_from_table(items.schamane)
			end
			set_state(_COMPLETE_)
		end
	end
	state _COMPLETE_ begin
	end
end
Code:
function give_item_from_table(tablename, count)
	for i = 1, table.getn(tablename) do
		if count == nil then
			pc.give_item2(tablename[i][1], tablename[i][2])
		else
			pc.give_item2(tablename[i][1], count)
		end
	end
end
03/13/2015 18:18 .Skreezh#2319
Quote:
Originally Posted by [Sensenmann] View Post
Code:
quest give_basic_weapon begin
	state start begin
		when login begin
			local items = {
				all = {
					{72726, 1},
					{72730, 1},
					{70038, 200},
					{27111, 25},
					{27114, 25},
					{71148, 1},
					{50053, 1},
					{72702, 1}
				},
				krieger = {
					{15, 1},
					{11207, 1},
					{12207, 1}
				},
				ninja = {
					{1005, 1},
					{11407, 1},
					{12347, 1}
				},
				sura = {
					{15, 1},
					{11607, 1},
					{12487, 1}
				},
				schamane = {
					{7005, 1},
					{11807, 1},
					{12627, 1}
				}
			}
			horse.set_level(21)
			give_item_from_table(items.all)
			if pc.get_job() == 0 then
				give_item_from_table(items.krieger)
			elseif pc.get_job() == 1 then
				give_item_from_table(items.ninja)
			elseif pc.get_job() == 2 then
				give_item_from_table(items.sura)
			elseif pc.get_job() == 3 then
				give_item_from_table(items.schamane)
			end
			set_state(_COMPLETE_)
		end
	end
	state _COMPLETE_ begin
	end
end
Code:
function give_item_from_table(tablename, count)
	for i = 1, table.getn(tablename) do
		if count == nil then
			pc.give_item2(tablename[i][1], tablename[i][2])
		else
			pc.give_item2(tablename[i][1], count)
		end
	end
end
Wo soll ich
Quote:
function give_item_from_table(tablename, count)
for i = 1, table.getn(tablename) do
if count == nil then
pc.give_item2(tablename[i][1], tablename[i][2])
else
pc.give_item2(tablename[i][1], count)
end
end
end
einfügen ?
03/13/2015 18:20 rollback#2320
Quote:
Originally Posted by .Skreezh View Post
Wo soll ich einfügen ?
In die Questlib eintragen (einfach nach ganz unten Scrollen, eine leerzeile lassen und dann reinkopoeren)
und in die quest_functions einfach "give_item_from_table" (ohne ()! ) reinschreiben
03/13/2015 18:26 .yorliK#2321
Quote:
Originally Posted by mkiiing View Post
also habe ein paar probleme damit...
hab meinen npc, mapindex, koordis eingetragen aber in wenn ich dann auf JA gehe, passiert nichts^^ die syserr
das kommt etwa 100x vor wenn ich auf JA gehe (die Line 477 ist vom Opponent HP/MP von mir eingefügt worden..)^^
das habe ich eingetragen (koordis auch mit 00 am Ende versucht)
LG :)

E: muss der komplette pfad der welle.txt angeben werde? und fängt des bei welle0 oder welle1 an?^^
Der Fehler mit der uiTarget.py, dürfte nichts damit zu tun haben und bei jedem NPC kommen, außerdem wenn das Oppo HP Ding die Quest blockieren sollte, dürfte erst gar keine Quest erscheinen.

Das mit Warp, es muss ohne 00 sein und die Map muss auf dem selben Core liegen meine ich.

Zu der Frage mit dem Pfad. Du siehst in der Quest ja ein Beispiel, ab data muss der Pfad angegeben werden. Du kannst also auch data/quest/Blalbla/welle1.txt schreiben, hauptsache der Pfad existiert.

Die Wellen fangen ab 1 an, also ist die erste Txt z.B. Welle1.txt, natürlich kannst du sie auch anders nennen, musst es nachher im Pfad halt angeben und die Txt muss die Zahlenreihenfolge der Wellen einhalten also ab 1 beginnend und am Ende des txt namens z.B. Wette1.txt

Hier die Quest nach dem Index angepasst:
03/13/2015 18:29 .Skreezh#2322
Quote:
Originally Posted by [Sensenmann] View Post
In die Questlib eintragen (einfach nach ganz unten Scrollen, eine leerzeile lassen und dann reinkopoeren)
und in die quest_functions einfach "give_item_from_table" (ohne ()! ) reinschreiben
Bekomme immer noch keine Items :(
03/13/2015 18:30 rollback#2323
Quote:
Originally Posted by .Skreezh View Post
Bekomme immer noch keine Items :(
quests compiled und neu geladen etc?
03/13/2015 18:32 .Skreezh#2324
Quote:
Originally Posted by [Sensenmann] View Post
quests compiled und neu geladen etc?
Wie meinst du das? :s

Hab alles so eingefügt wie du es meintest und dann Server rebootet.
03/13/2015 18:35 rollback#2325
Quote:
Originally Posted by .Skreezh View Post
Wie meinst du das? :s

Hab alles so eingefügt wie du es meintest und dann Server rebootet.
virtualbox:
cd /usr/home/game/share/locale/germany/quest && python make.py

danach ingame:
/reload q

-- du musst nicht immer rebooten ...^^ hast du die quest auch in die quest_list eingetragen?