[SERVICE] Die Questkontrolle

04/14/2015 23:49 Cyber36#11326
Quote:
Originally Posted by .JayZoN View Post
Bitte nutze den [PHP] oder [CODE] BB-Code, um uns die Fehlerdiagnose dementsprechend zu vereinfachen.

lg
So ok?
04/15/2015 00:18 rollback#11327
Quote:
Originally Posted by Cyber36 View Post
Da die Originalquest riesig ist, poste ich hier nur die relevanten Stellen...
Also mein Problem ist, dass if pc.getqf("test") == 1 then nicht wirkt, er erkennt anscheinend die Variable nicht, die vorher gesetzt wurde und deshalb wird kein Text ausgegeben, nachdem er gewarpt wurde. Andere Lösungen, oder veränderte Formen dieses kleinen Teils wären echt nice :D Danke im Vorraus!

Code:
when 30121.chat."Der erste Teil" with pc.get_map_index()==205 begin
			if pc.count_item(40001) >= 1 then
				say_title("Geist eines Suras")
				say("Du hast also den Ring gefunden?")
				say("Lass mich ihn erst einmal inspizieren...")
				say("Tatsächlich, das ist der Ring des Zorns!!!")
				wait()
				say_title("Geist eines Suras")
				say("Ich werde dich nun teleportieren,")
				say("Abenteuer! Bitte bringe mir die")
				say("restlichen Items auch noch!")
				pc.getqf("test",1)
				npc.purge()
				wait()
				d.new_jump_all(205,18401,35949)
				local boxto7= pc.count_item(40001)  
				pc.remove_item(40001, boxto7)
				local vid = d.spawn_mob(11506, 147, 146)
				d.set_unique("real", vid)
			else
				say_title("Geist eines Suras")
				say("")
				say("Ich habe gehört, da ist ein Metinstein in der Nähe")
				say("Wenn du ihn zerstörst, werde ich dich in die nächsteEbene teleportieren...!")
				say("")
			end
		end
		
		when login with pc.get_map_index()==205 begin
			if pc.getqf("test") == 1 then
				chat("Abenteurer! Zerstöre den Feuer der")
				chat("Macht auf der Spitze des Vulkans!")
				chat("Suchen und Zerstören lautet die Devise!")
			end
		end
Bitte auch den Teil, wo die die Questflag setzt
04/15/2015 11:22 .yorliK#11328
@ Sensenmann: der Flag wird ziemlich mittig gesetzt, aber leider falsch.
@ Cyber: Du machst pc.getqf("test", 1), so fragst du aber nur ab, du musst um den Flag zu setzen pc.setqf("test", 1) machen.

Code:
when 30121.chat."Der erste Teil" with pc.get_map_index()==205 begin
			if pc.count_item(40001) >= 1 then
				say_title("Geist eines Suras")
				say("Du hast also den Ring gefunden?")
				say("Lass mich ihn erst einmal inspizieren...")
				say("Tatsächlich, das ist der Ring des Zorns!!!")
				wait()
				say_title("Geist eines Suras")
				say("Ich werde dich nun teleportieren,")
				say("Abenteuer! Bitte bringe mir die")
				say("restlichen Items auch noch!")
				pc.setqf("test",1)
				npc.purge()
				wait()
				d.new_jump_all(205,18401,35949)
				local boxto7= pc.count_item(40001)  
				pc.remove_item(40001, boxto7)
				local vid = d.spawn_mob(11506, 147, 146)
				d.set_unique("real", vid)
			else
				say_title("Geist eines Suras")
				say("")
				say("Ich habe gehört, da ist ein Metinstein in der Nähe")
				say("Wenn du ihn zerstörst, werde ich dich in die nächsteEbene teleportieren...!")
				say("")
			end
		end
		
		when login with pc.get_map_index()==205 begin
			if pc.getqf("test") == 1 then
				chat("Abenteurer! Zerstöre den Feuer der")
				chat("Macht auf der Spitze des Vulkans!")
				chat("Suchen und Zerstören lautet die Devise!")
			end
		end
04/15/2015 15:04 Cyber36#11329
Quote:
Originally Posted by Kilroy. View Post
@ Sensenmann: der Flag wird ziemlich mittig gesetzt, aber leider falsch.
@ Cyber: Du machst pc.getqf("test", 1), so fragst du aber nur ab, du musst um den Flag zu setzen pc.setqf("test", 1) machen.

Code:
when 30121.chat."Der erste Teil" with pc.get_map_index()==205 begin
			if pc.count_item(40001) >= 1 then
				say_title("Geist eines Suras")
				say("Du hast also den Ring gefunden?")
				say("Lass mich ihn erst einmal inspizieren...")
				say("Tatsächlich, das ist der Ring des Zorns!!!")
				wait()
				say_title("Geist eines Suras")
				say("Ich werde dich nun teleportieren,")
				say("Abenteuer! Bitte bringe mir die")
				say("restlichen Items auch noch!")
				pc.setqf("test",1)
				npc.purge()
				wait()
				d.new_jump_all(205,18401,35949)
				local boxto7= pc.count_item(40001)  
				pc.remove_item(40001, boxto7)
				local vid = d.spawn_mob(11506, 147, 146)
				d.set_unique("real", vid)
			else
				say_title("Geist eines Suras")
				say("")
				say("Ich habe gehört, da ist ein Metinstein in der Nähe")
				say("Wenn du ihn zerstörst, werde ich dich in die nächsteEbene teleportieren...!")
				say("")
			end
		end
		
		when login with pc.get_map_index()==205 begin
			if pc.getqf("test") == 1 then
				chat("Abenteurer! Zerstöre den Feuer der")
				chat("Macht auf der Spitze des Vulkans!")
				chat("Suchen und Zerstören lautet die Devise!")
			end
		end
Erstmal danke für die beiden Antworten...
pc.setqf steht da doch... und aufrufen tuhe ichs doch mit pc.getqf, mache ich da etwas grundlegend falsch?

Quote:
Originally Posted by definitely not Sensenmann View Post
Bitte auch den Teil, wo die die Questflag setzt
Hier hast du die ganze Quest einfach ^^

Code:
quest devildown begin
    state start begin
		when 20350.chat."Vulkan des Hermes" begin
			if pc.get_level() < 170 then
				say("Du musst mindestens 170 sein,")
				say("um diesen Dungeon zu betreten!")
			else
				say_title("Dungeonwächter")
				say("Aufgepasst, Abenteurer!")
				say("Dieser Run ist voller gefahren!!")
				say("Nur die stärksten können die Spitze")
				say("des Vulkanes erreichen!")
				say("Willst du den Run dennoch betreten?")
				local s = select("Ja", "Nein")
					if s == 1 then
						pc.warp(1886400, 3606800)
					else
						return
					end
				end
			end


		when 8041.kill with pc.get_map_index()==205 begin
			local jump1 = number(1, 20)
			if jump1 <= 10 then
				chat("Herzlichen Glückwunsch!")
				chat("Du hast den Ring des Zornes gefunden!");
				chat("Bring es zum Surageist...");
				chat("Hinter dir du Bauer!");
				game.drop_item(40001, 1)
			else
				chat("Dieser Metin hatte keinen Ring.")
			end
		end
		
		when 30121.chat."Der erste Teil" with pc.get_map_index()==205 begin
			if pc.count_item(40001) >= 1 then
				say_title("Geist eines Suras")
				say("Du hast also den Ring gefunden?")
				say("Lass mich ihn erst einmal inspizieren...")
				say("Tatsächlich, das ist der Ring des Zorns!!!")
				wait()
				say_title("Geist eines Suras")
				say("Ich werde dich nun teleportieren,")
				say("Abenteuer! Bitte bringe mir die")
				say("restlichen Items auch noch!")
				pc.getqf("test",1)
				npc.purge()
				wait()
				d.new_jump_all(205,18401,35949)
				local boxto7= pc.count_item(40001)  
				pc.remove_item(40001, boxto7)
				local vid = d.spawn_mob(11506, 147, 146)
				d.set_unique("real", vid)
			else
				say_title("Geist eines Suras")
				say("")
				say("Ich habe gehört, da ist ein Metinstein in der Nähe")
				say("Wenn du ihn zerstörst, werde ich dich in die nächsteEbene teleportieren...!")
				say("")
			end
		end
		
		when login with pc.get_map_index()==205 begin
			if pc.getqf("test") == 1 then
				chat("Abenteurer! Zerstöre den Feuer der")
				chat("Macht auf der Spitze des Vulkans!")
				chat("Suchen und Zerstören lautet die Devise!")
			end
		end

		when login with pc.get_map_index() == 205 begin 
			send_letter("Vulkan verlassen") 
		end 
		when button or info begin 
			say_title("Wächter des Vulkans:")
			say("Ihr wollt den Vulkan verlassen?")
			say("")

			local s = select("Ja bitte!", "Nein.")
			if s == 1 then
				local empire = pc.get_empire()
				if empire == 1 then
					pc.warp(474300,954800)
				elseif empire == 2 then
					pc.warp(63800,166400)
				elseif empire == 3 then
					pc.warp(959900,269200)
				end
			else
				return
			end
			clear_letter()
		end

		when 11506.kill with pc.get_map_index()==205 begin
			npc.purge()
			chat("Du hast den Feuer der Macht zerstört, Abenteurer!")
			chat("Ich teleportiere dich nun auf die letzte Ebene!")
		end

		when 25016.kill begin
			npc.purge()
			chat("Mich hast du vielleicht vernichtet, aber meine")
			chat("Freunde im Vertania-Wald werdens dir zeigen!!!")
		end

		when 8022.kill with pc.get_map_index()==205 begin
			d.setqf("devillevel", 3)	
			d.spawn_mob(8023, 658, 609)
		end

		when 8023.kill with pc.get_map_index()==205 begin
			d.setqf("devillevel", 4)	
			d.spawn_mob(8024, 621, 586)
		end

		when 8024.kill with pc.get_map_index()==205 begin
			d.setqf("devillevel", 5)	
			d.spawn_mob(8025, 588, 609)
		end
		
		when 8025.kill with pc.get_map_index()==205 begin
			d.setqf("devillevel", 6)	
			d.spawn_mob(8030, 569, 636)
		end
		
		when 8030.kill with pc.get_map_index()==205 begin
			d.setqf("devillevel", 7)	
			d.spawn_mob(8031, 588, 665)
		end
		
		when 8031.kill with pc.get_map_index()==205 begin
			d.setqf("devillevel", 8)	
			d.spawn_mob(8032, 622, 686)
		end
		
		when 8032.kill with pc.get_map_index()==205 begin
			d.setqf("devillevel", 9)	
			d.spawn_mob(8033, 659, 668)
		end
		
		when 8033.kill with pc.get_map_index()==205 begin
			if d.is_unique_dead("real") then
				d.notice("The last Metin is killed,go to Guard.");
				d.spawn_mob(20355, 619, 635)
				d.setqf("devillevel", 10)
			end
		end
		
		when 20355.chat."Last floor" begin 
			npc.purge()
            say_reward("Guard:")
            say("Go to last floor,good luck!!")
            wait()
            d.jump_all(17201, 35623)
			d.regen_file("data/dungeon/sky_run/end.txt")
			d.set_unique("real", vid)
		end
		
		when 2493.kill with pc.get_map_index()==205 begin
			local level = pc.get_level()            
			chat("You defeated the Sky King and you saved the Sky Run.")
			chat("You will be teleported out in 2 minutes!")
			d.kill_all()
			d.kill_all()
			notice_all("The group of "..pc.get_name().." has defeated Sky King!")
			timer("goout_from_dc", 120)
        end
        
        when dc6.timer begin
			chat("Time has Expired!")
			warp_all_to_village( pc.get_map_index() , 5 )
			end
        when goout_from_dc.timer begin
			warp_all_to_village( pc.get_map_index() , 3 )
		end
	end
end
04/15/2015 15:35 .yorliK#11330
Quote:
Originally Posted by Cyber36 View Post

Erstmal danke für die beiden Antworten...
pc.setqf steht da doch... und aufrufen tuhe ichs doch mit pc.getqf, mache ich da etwas grundlegend falsch?

Ich seh in der Quest immernoch
Code:
pc.getqf("test", 1)
Du musst es aber mit
Code:
pc.setqf("test", 1)
setzen!
04/15/2015 16:02 Cyber36#11331
Quote:
Originally Posted by Kilroy. View Post
Ich seh in der Quest immernoch
Code:
pc.getqf("test", 1)
Du musst es aber mit
Code:
pc.setqf("test", 1)
setzen!
Habs geändert, leider wird dennoch der Text nicht ausgegeben, obwohl jetzt test=1 sein müsste und ein pc.warp eig. so wie ein login zählt...
04/15/2015 17:13 .yorliK#11332
Quote:
Originally Posted by Cyber36 View Post
Habs geändert, leider wird dennoch der Text nicht ausgegeben, obwohl jetzt test=1 sein müsste und ein pc.warp eig. so wie ein login zählt...

Wenn man sich einloggt, müsste man laut deiner Quest doch schon in einer Dungeon Instanz sein, das heißt der MapIndex ist dann nicht mehr 205 sondern liegt zwischen 2050000 und 2059999.

Versuchs also mal mit:
Code:
when login with pc.get_map_index()>=205*10000 and pc.get_map_index()<(205+1)*10000 begin
04/15/2015 17:20 Cyber36#11333
Quote:
Originally Posted by Kilroy. View Post
Wenn man sich einloggt, müsste man laut deiner Quest doch schon in einer Dungeon Instanz sein, das heißt der MapIndex ist dann nicht mehr 205 sondern liegt zwischen 2050000 und 2059999.

Versuchs also mal mit:
Code:
when login with pc.get_map_index()>=205*10000 and pc.get_map_index()<(205+1)*10000 begin
Problem gelöst und ich hab auch nun verstanden, wo die Fehler waren! Vielen dank :)

#ThanksGiven
04/16/2015 14:56 Backxtar#11334
So nach einigen versuchen hat mit Jayzon sehr weitergeholfen :)!

Allerdings gibts in der Quest noch einen Fehler und zwar verschwindet die Quest, wenn man reloggt oder die Map wechselt etc. D.h. man kann sie nicht zu ende machen :( wenn man die Map wechselt oder sich ausloggt. Wenn man die Quest in 1 Zug durchmacht bekommt man alles!


Was fehlt?
04/16/2015 15:11 Sp0ngeb0b ist cool#11335
@Backxtar: unter "state kill_stones begin" folgendes ergänzen:
when letter begin
send_letter('Töte 5 Metin der Schlacht')
end

lg sponge
04/16/2015 15:37 ScaraDon#11336
[B]Ich weiss ist nichts besonderes usw.
Aber vielleicht ist bitte jemand so nett mir beim Ende zu helfen.

Die Quest funktioniert soweit, nur leider schaffe ich es nicht die "Deaktivieren"
Funktion einzufügen. Kann die Rates zwar ändern aber nicht komplett ausschalten. Wäre nett wenn mir wer Bitte Einfügen könnte

Ein Danke schon mal im Vorraus
04/16/2015 15:54 Backxtar#11337
funktioniert danke :)!
04/16/2015 15:56 ScaraDon#11338
Quote:
Originally Posted by Backxtar View Post
funktioniert danke :)!

.
04/16/2015 18:12 babydream#11339
Hallöle hab da ein problem mit dieser Quest

Code:
quest Eurospeicher begin
	state start begin
		when login begin
			send_letter("Eurospeicher")
		end
		when button or info begin
			say_title("Eurospeicher To-Go")
			say("Da wir noch an der Eurolimit arbeiten")
			say("haben wir provisorisch eine Quest erstellt,")
			say("soll heißen dass die QUEST nicht für immer ist")
			say("1,5kkk 1kkk 500kk 250kk 100kk Eurospeicher")
			say("MFG:...")
			say("Dieser Eurospeicher soll euch dabei helfen,")
			say("nicht über 2kkk zu kommen also immer gut drauf achten!")
			if select("1,5kkk","1kkk","500kk","250kk","100kk","Abrechen") == 2 then return end
			if pc.get_gold()<1500000000 then return end
			if pc.get_gold()<1000000000 then return end
			if pc.get_gold()<500000000 then return end
			if pc.get_gold()<250000000 then return end
			if pc.get_gold()<100000000 then return end
			pc.changemoney(-1500000000)
			pc.changemoney(-1000000000)
			pc.changemoney(-500000000)
			pc.changemoney(-250000000)
			pc.changemoney(-100000000)
			pc.give_item2(910121, 1)
			pc.give_item2(910131, 1)
			pc.give_item2(30253, 1)
			pc.give_item2(91013, 1)
			pc.give_item2(30251, 1)
			send_letter("Eurospeicher")
        end
    end
end
es klappt zwar alles beim einfügen nur er gibt mir nicht ein eurospeicher sondern alle was is da falsch? danke schon mal im vorraus mfg
04/16/2015 18:42 Sp0ngeb0b ist cool#11340
PHP Code:
quest Eurospeicher begin
    state start begin
        when login begin
            send_letter
("Eurospeicher")
        
end
        when button 
or info begin
            local t
,c = {"1,5kkk","1kkk","500kk","250kk","100kk","Abrechen"},{1500000000,1000000000,500000000,250000000,100000000}
            
local i = {910121,910131,30253,91013,30251}
            
say_title("Eurospeicher To-Go")
            
say("Da wir noch an der Eurolimit arbeiten")
            
say("haben wir provisorisch eine Quest erstellt,")
            
say("soll heißen dass die QUEST nicht für immer ist")
            
say("1,5kkk 1kkk 500kk 250kk 100kk Eurospeicher")
            
say("MFG:...")
            
say("Dieser Eurospeicher soll euch dabei helfen,")
            
say("nicht über 2kkk zu kommen also immer gut drauf achten!")
            
local q = select_table(t)
            if 
q == table.getn(t) then return end
            
if pc.get_money() < c[q] then return end
            pc
.changemoney(-c[q])
            
pc.give_item2(i[q], 1)
            
send_letter("Eurospeicher")
        
end
    end
end 
Weiß nicht, ob die Reihenfolge der Items stimmt. Musst eben in der Tabelle i die item vnums in der Reihenfolge eintragen, in der die Werte 1,5kkk, 1kkk usw. stehen
lg