Timer in Quest

02/15/2013 21:53 Yiv#1
Hallo liebe Community,

ich suche jemanden, der mir sagen kann, wie ich es handhaben kann, dass eine Event-Flag erst nach 30 min wieder auf 0 gestellt wird?

MfG
02/15/2013 21:55 .Remix#2
Code:
when login begin
	timer("eventflag", 1800)
end
when eventflag.timer begin
	game.set_event_flag("eventflag",1)
end
02/15/2013 21:58 Yiv#3
Ah ja, bestimmt.

MfG
02/15/2013 22:04 lfcmaus#4
steht doch da when login begin
sprich wenn das login des users beginnt dann setze den timer "eventflag" dieser läuft 1800 sekunden

wenn diese erreicht sind dann setzte den game.eventflag "eventflag" 1

sprich bei jeden login eines user bei jedem porten des users wird dieser timer gesetzt also völlig sinnfrei eigtl gemacht
ich würds an deiner stelle über einen server timer machen und eine abfrage ob einer bereits gesetzt wurde dies vermeidet mehrmals setzungen
ebenfalls läuft der timer so auch weiter wenn der user der den timer aktivierte offline geht was bei einem normalen timer nicht der fall ist
02/15/2013 22:07 .Remix#5
Habe das nur so als Beispiel geschrieben.
02/15/2013 22:07 Yiv#6
Naja, es geht um mehrere Spieler. Der eine Timer betrifft alle Spieler!

Beispiel: Wenn ein Spieler sich irgendwohin teleportiert, dann muss jeder andere Spieler 30 Minuten warten, bis er sich auch dorthin teleportieren kann.

Meiner Meinung nach, kann das ganze über eine Event-Flag am einfachsten mit einem Timer geregelt werden.

Was ist der Unterschied zwischen einem "normalen" Timer und einem Servertimer? Servertimer betrifft alle Spieler und ein "normaler" Timer nur einen Spieler?

MfG
02/15/2013 22:14 .Remix#7
Code:
quest timer begin
	state start begin
		when 20095.chat."Teleportieren" begin
			if game.get_event_flag("port") == 1 then
				say("Du kannst dich noch nicht teleportieren")
			if game.get_event_flag("port") == 0 then
				pc.warp(xxx,yyy)
				game.set_event_flag("port",1)
				timer("porten",1800)
			end
		end
		when porten.timer begin
			game.set_event_flag("porten",0)
		end
	end
end
Probier's mal damit.

Könntest dann noch über Variablen ausgeben lassen, wie lange man noch warten muss.
Hatte ich aber jetzt keine Lust, zu schreiben.

Kann's aber auch noch machen, wenn du willst. Hab eh Langweile zur Zeit.

€: Hab's einfach mal gemacht.
Hab zwar noch nie einen Timer ausgeben lassen, denke aber, dass es klappt.

Code:
quest porten begin
	state start begin
		when 20095.chat."Teleporter verwalten" with pc.is_gm() begin
			say("Wie viele Sekunden muss man warten?")
			local v = tonumber(input())
		end
		when 20095.chat."Teleportieren" with not pc.is_gm() begin
			if game.get_event_flag("port") == 0 then
				say("Teleportieren?")
				local t = select("Ja","Nein")
					if t == 2 then
						return
					if t == 1 then
						game.set_event_flag("port",1)
						timer("port1","..v..")
						pc.warp(xxx,yyy)
					end
				end
			if game.get_event_flag("port") == 1 then
				say("Du musst noch "..timer("port1").." Sekunden warten.")
			end
		end
		when port1.timer begin
			game.set_event_flag("port",0)
		end
	end
end
02/15/2013 22:21 Yiv#8
Quote:
Originally Posted by .Remix View Post
Code:
quest timer begin
	state start begin
		when 20095.chat."Teleportieren" begin
			if game.get_event_flag("port") == 1 then
				say("Du kannst dich noch nicht teleportieren")
			if game.get_event_flag("port") == 0 then
				pc.warp(xxx,yyy)
				game.set_event_flag("port",1)
				timer("porten",1800)
			end
		end
		when porten.timer begin
			game.set_event_flag("porten",0)
		end
	end
end
Probier's mal damit.

Könntest dann noch über Variablen ausgeben lassen, wie lange man noch warten muss.
Hatte ich aber jetzt keine Lust, zu schreiben.

Kann's aber auch noch machen, wenn du willst. Hab eh Langweile zur Zeit.
Der Timer betrifft doch aber jetzt nur einen Spieler, oder? Also der läuft nicht bei allen?
02/15/2013 22:25 .Remix#9
Ja, ist mir dann auch eingefallen.

Hier nochmal als server_timer Version.

Code:
quest porten begin
	state start begin
		when 20095.chat."Teleporter verwalten" with pc.is_gm() begin
			say("Wie viele Sekunden muss man warten?")
			local v = tonumber(input())
		end
		when 20095.chat."Teleportieren" with not pc.is_gm() begin
			if game.get_event_flag("port") == 0 then
				say("Teleportieren?")
				local t = select("Ja","Nein")
					if t == 2 then
						return
					if t == 1 then
						game.set_event_flag("port",1)
						server_timer("port1","..v..")
						pc.warp(xxx,yyy)
					end
				end
			if game.get_event_flag("port") == 1 then
				say("Du musst noch "..server_timer("port1").." Sekunden warten.")
			end
		end
		when port1.server_timer begin
			game.set_event_flag("port",0)
		end
	end
end
02/15/2013 22:35 Yiv#10
Dankeschön :)

MfG
02/15/2013 22:36 .Remix#11
Dann gibt's noch die Funktion:

Code:
clear_server_timer()
Denke mal, du weiß, wie du es einbauen & anwenden kannst.
Wenn nicht, melde dich einfach bei mir.