--Zuerst fügen wir den hook hinzu (siehe ende des Codes).
local function CommandSay( ply, text, public )
/* string.sub schneidet vom string "text" (der Chateingabe) die Chars zwischen Position 1 - 4 weg
( [B]1.[/B] / [B]2.[/B] m [B]3.[/B] e [B]4.[/B] <Leerzeichen> )*/
if(string.sub( text, 1, 4 ) == "/me " ) then
/* Er soll den Befehl "ChatPrint" einmal für alle ausführen (das jeder den "Emote" sieht) */
for k, v in pairs(player.GetAll()) do
/* ply:Nick() bezieht den Namen des Spielers den den Emote ausführt.
Anschließend wird der text ab dem 4 Zeichen (Leerzeichen) wiedergegeben. */
v:ChatPrint( ply:Nick()..string.sub( text, 4 ) );
end
/* return "" sorgt dafür, dass in dem Chat nicht noch die Chatzeile "/me ist cool" z.B. eingetragen wird. Der Text wird dann durch "nix" ersetzt
(zwischen den "" ist kein Leerzeichen, sonst würde eine Leerzeile im Chat angezeigt!) */
return "";
end
end
/* Der 1. Parameter gibt an, welches Callback wir "hook'en" möchten. (In diesem Fall soll der Hook beim Event "PlayerSay", also dem schreiben in den Chat aufgerufen werden.)
Der 2. Parameter ist nur ein frei wählbarer Name, über diesen man den hook über "hook.Remove" wieder löschen könnte.
Der 3. Parameter gibt an, welche funktion aufgerufen werden soll beim benutzen des Events. In diesem Fall habe ich die Funktion "CommandSay" gennant. */
hook.Add( "PlayerSay", "ChatHook", CommandSay )