Level 3 – Fortgeschritten
Bisher haben unsere Chatbefehle einfach nur eine Aktion ausgeführt. Ihre wahre Stärke entfalten sie aber erst, wenn sie Input vom Spieler verarbeiten können. Diesen Input nennen wir Parameter.
Ein Parameter ist alles, was ein Spieler nach dem eigentlichen Befehl in den Chat eingibt.
/sayhello Digital Development Division
/sayhello ist der Befehl.Digital Development Division ist der Parameter.param
In der func-Funktion eines Chatbefehls erhalten wir zwei Argumente: name und param.
name: Der Name des Spielers, der den Befehl ausgeführt hat.param: Eine Zeichenkette (String), die den gesamten Text enthält, der nach dem Befehl eingegeben wurde.core.register_chatcommand("sayhello", {
params = "<text>",
description = "Gibt eine Nachricht im Chat aus.",
func = function(name, param)
-- 'param' enthält den gesamten Text nach /sayhello
local message = "Spieler " .. name .. " sagt: " .. param
core.chat_send_all(message)
end,
})
Was passiert, wenn ein Spieler nur /sayhello eingibt? In diesem Fall ist die Variable param eine leere Zeichenkette ("").
Guter Code fängt solche Fälle ab und gibt dem Spieler eine Hilfestellung. Das verhindert Fehler und macht den Mod benutzerfreundlicher.
core.register_chatcommand("broadcast", {
params = "<nachricht>",
description = "Sendet eine Nachricht an alle.",
func = function(name, param)
-- Prüfen, ob der Parameter leer ist
if param == "" then
-- Eine Fehlermeldung zurückgeben
return false, "Du musst eine Nachricht eingeben! Beispiel: /broadcast Hallo Welt"
end
-- Nur wenn der Parameter nicht leer ist, wird der Code hier ausgeführt
core.chat_send_all("Wichtige Durchsage: " .. param)
return true, "Nachricht gesendet."
end,
})
Prüfe immer, ob ein erwarteter Parameter vielleicht leer sein könnte, und gib dem Benutzer eine klare Rückmeldung. Das nennt man Validierung (Validation).
param als einzelne Zeichenkette.Jetzt, da du weißt, wie man Text-Parameter liest, lernen wir im nächsten Kapitel, wie man Zahlen verarbeitet.