[QUEST] Validierung

07/05/2012 00:47 AntiMask#1
Hallo zusammen,

Ich hatte heute mal wieder Lust irgendwas zu questen und dachte da an ein Validierungssystem.

Hier zuerst einmal die Quest:

HTML Code:
-----------------
-- by AntiMask --
-----------------
quest validate begin
	state start begin
		when letter with validate.name_check(pc.get_name()) begin
			send_letter("Validierung")
		end
		
		when button or info begin
			local pw_try = 4 -- Anzahl Versuche plus eins (+1)
			
			if pc.getqf("val_try") == 0 then
				pc.setqf("val_try", pw_try)
			elseif pc.getqf("val_try") == 1 then
				if pc.getqf("val_dur") > get_time() then
					say_title("Validierung")
					say("Du musst noch " .. (math.floor((pc.getqf("val_dur")-get_time()) / 60 * 100) / 100) .. " Minuten warten,")
					say("bis du das Passwort erneut eingeben kannst.")
					wait()
					send_letter("Validierung")
					return
				else
					pc.setqf("val_try", pw_try)
				end
			end
			
			local pw = "123456" -- Passwort für Zugang
			local delay = 60 -- Wartezeit bei Falscheingabe in Sekunden
			
			while pc.getqf("val_try") > 1 do
				say_title("Validierng")
				say("Gib das Passwort ein:")
				say_reward("Übrige Versuche: " .. pc.getqf("val_try") - 1)
				local v = input()
				
				if v == pw then
					say_title("Validierng")
					say("Erfolg! Du hast nun Zugriff auf das Panel")
					pc.delqf("val_try")
					set_state(run)
					return
				else
					say_title("Validierung")
					say("Fehler! Du hast das falsche Passwort eingegeben.")
					pc.setqf("val_try", pc.getqf("val_try") - 1)
					
					if pc.getqf("val_try") == 1 then
						say("Du musst nun " .. delay / 60 .. " Minuten warten bis du das Passwort")
						say("erneut eingeben kannst.")
						pc.setqf("val_dur", get_time()+delay)
						wait()
						send_letter("Validierung")
						return
					else
						local s = select("Erneut eingeben", "Abbrechen")
						
						if s == 2 then
							send_letter("Validierung")
							return
						end
					end
				end
			end
		end
		
		function name_check(name)
			local val_names = {"[SA]DejaVu", "[SA]Sura"} -- Hier zugelassene Namen mit Anführungszeichen und Komma abgetrennt einfügen
			for i = 1, table.getn(val_names) do
				if val_names[i] == name then
					return true
				end
			end
			return false
		end
	end
	
	state run begin
		when letter begin
			send_letter("Panel")
		end
		
		when button or info begin
			chat("Geschafft!")
			restart_quest()
		end
	end
end
Die Quest überprüft als erstes, ob der Name des Spielers in der Liste ist (im Table val_names).
Falls ja, schickt er einen Quest-Brief. Klickt man den an, hat man drei Versuche das richtige Passwort einzugeben (das Passwort ist mit einem Kommentar markiert in der Quest). Gibt man es dreimal falsch ein, muss man die angegebene Zeit abwarten, um es erneut zu versuchen(auch mit einem Kommentar markiert). Hat man das richtige Passqwort eingegeben hat man Zugriff auf das Panel (Panel hat keine Funktion!!!)

Noch zur Info: Die Quest bringt so nichts. Man kann sie aber zum Beispiel so umschreiben, dass bereits beim Login gestartet wird (Spielerüberprüfung) oder bei einem Panel wie ich es im Sinn hatte.

Ich hoffe es kann jemand gebrauchen.

MfG AntiMask

P.S: Wenn Bedarf besteht, könnte ich die Quest weiterentwickeln und noch ein Panel schreiben. Ihr könnt mir natürlich auch eure Ideen mitteilen.
07/05/2012 01:05 .Hiяo#2
Nice sieht gut aus. Vielfältig erweiterbar :)
07/05/2012 01:39 .αpeх'#3
Sieht sehr nice aus :)

Kann man bestimmt ein schönes Panel draus basteln :>