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
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.