From 95fd534e150fbe9fb9a7d05c22993d08146a08f2 Mon Sep 17 00:00:00 2001 From: iZePlayz <69536095+iZePlayzYT@users.noreply.github.com> Date: Wed, 12 Jun 2024 00:47:54 +0200 Subject: [PATCH] Removed a no-longer-existing command and added a new command to the tab-completion list (#57) * Removed a no-longer-existing command and added a new command to the tab-completion list * Bugfix * bugfix 2 * Fixed a few bad german translations * Fixed Tabcompletion for the "nametags" command * Revert "Merge branch 'coop-deluxe:main' into main" This reverts commit 3803ead26d23256a5200f6fa2c4c9185ce6e05f0, reversing changes made to bd7ffb38a7560e8791118edce2cdcaf06e683d66. * Reapply "Merge branch 'coop-deluxe:main' into main" This reverts commit 28c1d97dd5c8a8648d4271bb59d3ca9c16df5c30. * Fixed the "mallocation" and "static" issues * more fixes * Improved, cleaned up and refactored the iZeSaveStates mod and renamed it to just SaveStates * bug fix * removed the savestates mod * combined both for-loops into a single one --- lang/German.ini | 72 ++++++++++++++++++------------------- src/pc/djui/djui_chat_box.c | 2 +- src/pc/lua/smlua_hooks.c | 46 +++++++++++++++--------- 3 files changed, 67 insertions(+), 53 deletions(-) diff --git a/lang/German.ini b/lang/German.ini index 82eacc0ca..17681e0f1 100644 --- a/lang/German.ini +++ b/lang/German.ini @@ -1,63 +1,63 @@ [NOTIF] -CONNECTED = "@ hat sich mit dem Server verbunden." -DISCONNECTED = "@ hat die Verbindung zum Server getrennt." +CONNECTED = "@ hat den Server betreten." +DISCONNECTED = "@ hat den Server verlassen." LEFT_THIS_LEVEL = "@ hat dieses Level verlassen." -ENTERED_THIS_LEVEL = "@ ist diesem Level beigetreten." -ENTERED = "@ ist beigetreten zu\n#" -SERVER_CLOSED = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Server wurde geschlossen." +ENTERED_THIS_LEVEL = "@ hat dieses Level betreten." +ENTERED = "@ ist beigetreten\n#" +SERVER_CLOSED = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Der Server wurde geschlossen!" DISCORD_ERROR = "Discord hat einen Fehler verursacht.\nUm dies zu vermeiden, versuche: \n1. das Spiel zu schließen.\n2. Discord neu zu starten.\n3. das Spiel erneut zu starten." DISCORD_DETECT = "\\#ffa0a0\\Fehlermeldung:\\#dcdcdc\\ Discord konnte nicht gefunden werden.\n\\#a0a0a0\\Versuche, das Spiel zu schließen, Discord neu zu starten und dann das Spiel anschließend wieder zu öffnen." -DISCONNECT_FULL = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Die Gruppe ist voll." -DISCONNECT_KICK = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Du wurdest vom Server geworfen." -DISCONNECT_BAN = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Du wurdest vom Server gebannt." +DISCONNECT_FULL = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Der Server ist bereits voll." +DISCONNECT_KICK = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Du wurdest vom Server gekickt." +DISCONNECT_BAN = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Der Bann-Hammer hat gesprochen." DISCONNECT_REJOIN = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Erneut verbinden..." -DISCONNECT_CLOSED = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Der Servereigentümer hat die Verbindung geschlossen." -DISCONNECT_BIG_MOD = "Der Server verwendet eine zu große Modifikation.\nDie Verbindung wird getrennt." +DISCONNECT_CLOSED = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Der Hoster hat den Server geschlosse." +DISCONNECT_BIG_MOD = "Es konnte keine Verbindung hergestellt werden, da zu viele oder zu große Mods auf dem Server vorhanden sind!" DIED = "@ ist gestorben." DEBUG_FLY = "@ hat den Debug-Free-Fly-Modus aktiviert." -IMPORT_MOD_SUCCESS = "\\#a0ffa0\\Mod importiert\n\\#dcdcdc\\'@'" -IMPORT_DYNOS_SUCCESS = "\\#a0ffa0\\DynOS-Paket importiert\n\\#dcdcdc\\'@'" -IMPORT_PALETTE_SUCCESS = "\\#a0ffa0\\Importiertes Paletten-Voreinstellung\n\\#dcdcdc\\'@'" -IMPORT_FAIL = "\\#ffa0a0\\Import fehlgeschlagen für\n\\#dcdcdc\\'@'" -IMPORT_FAIL_INGAME = "\\#ffa0a0\\Kann nicht im Spiel importieren." -COOPNET_CONNECTION_FAILED = "\\#ffa0a0\\Verbindung zu CoopNet fehlgeschlagen!" +IMPORT_MOD_SUCCESS = "\\#a0ffa0\\Mod erfolgreich importiert\n\\#dcdcdc\\'@'" +IMPORT_DYNOS_SUCCESS = "\\#a0ffa0\\DynOS-Paket erfolgreich importiert\n\\#dcdcdc\\'@'" +IMPORT_PALETTE_SUCCESS = "\\#a0ffa0\\Paletten-Voreinstellung erfolgreich importiert\n\\#dcdcdc\\'@'" +IMPORT_FAIL = "\\#ffa0a0\\Importierung fehlgeschlagen\n\\#dcdcdc\\'@'" +IMPORT_FAIL_INGAME = "\\#ffa0a0\\Ein Fehler beim Importieren ist aufgetreten." +COOPNET_CONNECTION_FAILED = "\\#ffa0a0\\Es konnte keine Verbindung zu CoopNet hergestellt werden!" COOPNET_DISCONNECTED = "\\#ffa0a0\\Verbindung zu CoopNet verloren!" LOBBY_NOT_FOUND = "\\#ffa0a0\\Diese Lobby existiert nicht mehr." -LOBBY_JOIN_FAILED = "\\#ffa0a0\\Konnte der Lobby nicht beitreten!" +LOBBY_JOIN_FAILED = "\\#ffa0a0\\Fehler beim Beitreten der Lobby!" LOBBY_PASSWORD_INCORRECT = "\\#ffa0a0\\Falsches Lobby-Passwort!" -COOPNET_VERSION = "\\#ffa0a0\\Deine Version ist nicht kompatibel mit CoopNet. Bitte lade die neueste Version des Spiels herunter!" -PEER_FAILED = "\\#ffa0a0\\Konnte keine Verbindung zum Spieler '@' aufbauen." +COOPNET_VERSION = "\\#ffa0a0\\Die Version deines Spieles ist inkompatibel mit CoopNet. Bitte installiere die neuste Version!" +PEER_FAILED = "\\#ffa0a0\\Es konnte keine Verbindung zum Spieler '@' aufgebaut werden." UNKNOWN = "Unbekannt" LOBBY_HOST = "Lobby-Hoster" -UPDATE_AVAILABLE = "Neues Update!" -LATEST_VERSION = "Aktuellste Version" -YOUR_VERSION = "Ihre Version" +UPDATE_AVAILABLE = "Ein neues Update ist verfügbar!" +LATEST_VERSION = "Neuste verfügbare Version" +YOUR_VERSION = "Derzeit installierte Version" [CHAT] -KICKING = "'@' wird hinausgeworfen!" -BANNING = "'@' wird gebannt!" -SERVER_ONLY = "Nur der Server kann diesen Befehl ausführen." -PERM_BANNING = "'@' wird dauerhaft gebannt!" -ADD_MODERATOR = "'@' wird als Moderator hinzugefügt!" +KICKING = "'@' wurde gekickt!" +BANNING = "'@' wurde gebannt!" +SERVER_ONLY = "Dieser Befehl kann nur auf dem Server ausgeführt werden!" +PERM_BANNING = "'@' wurde permanent gebannt!" +ADD_MODERATOR = "'@' ist nun Moderator!" PLAYERS = "Spieler" NO_PERMS = "Du hast keine Berechtigung, diesen Befehl auszuführen." PLAYER_NOT_FOUND = "Spieler konnte nicht gefunden werden." NAMETAGS_MISSING_PARAMETERS = "Fehlende Parameter: [OPTION]" -SELF_KICK = "Du kannst dich nicht selbst hinauswerfen." +SELF_KICK = "Du kannst dich nicht selbst kicken." SELF_BAN = "Du kannst dich nicht selbst bannen." SELF_MOD = "Du kannst dich nicht selbst zum Moderator machen." -KICK_CONFIRM = "Bist du sicher, dass du '@' vom Server werfen möchtest?\nGib '\\#a0ffa0\\/bestätigen\\#fff982\\' ein, um fortzufahren." +KICK_CONFIRM = "Bist du sicher, dass du '@' vom Server kicken möchtest?\nGib '\\#a0ffa0\\/bestätigen\\#fff982\\' ein, um fortzufahren." BAN_CONFIRM = "Bist du sicher, dass du '@' vom Server bannen möchtest?\nGib '\\#a0ffa0\\/bestätigen\\#fff982\\' ein, um fortzufahren." PERM_BAN_CONFIRM = "Bist du sicher, dass du '@' dauerhaft vom Server bannen möchtest?\nGib '\\#a0ffa0\\/bestätigen\\#fff982\\' ein, um fortzufahren." MOD_CONFIRM = "Bist du sicher, dass du '@' zum Moderator ernennen möchtest?\nGib '\\#a0ffa0\\/bestätigen\\#fff982\\' ein." PLAYERS_DESC = "/players - Zeige alle Spieler und ihre IDs." -KICK_DESC = "/kick [NAME|ID] - Einen Spieler aus dem aktuellen Spiel werfen." -BAN_DESC = "/ban [NAME|ID] - Einen Spieler aus dem aktuellen Spiel bannen." -PERM_BAN_DESC = "/permban [NAME|ID] - Einen Spieler dauerhaft für alle von dir gehosteten Spiele bannen." -MOD_DESC = "/moderator [NAME|ID] - Einem Spieler die Berechtigung für Befehle wie /kick, /ban, /permban in allen von dir gehosteten Spielen geben." -NAMETAGS_DESC = "/nametags [show-tag|show-health] - Ändern Sie, ob Sie Ihr eigenes Namensschild sehen und ob Sie die Gesundheit sehen" -UNRECOGNIZED = "Unbekannter Befehl." -MOD_GRANTED = "\\#fff982\\Du bist jetzt Moderator." +KICK_DESC = "/kick [NAME|ID] - Kicke einen Spieler vom Server." +BAN_DESC = "/ban [NAME|ID] - Banne einen Spieler vom Server." +PERM_BAN_DESC = "/permban [NAME|ID] - Banne einen spieler dauerhaft in allen vor dir gehosteten Lobbys." +MOD_DESC = "/moderator [NAME|ID] - Gebe einem Spieler Moderator rechte wie /kick, /ban, /permban in allen von dir gehosteten Lobbys." +NAMETAGS_DESC = "/nametags [show-tag|show-health] - Sichtbarkeit von Spielernamen sowie der KP/Kraft aktivieren oder deaktivieren " +UNRECOGNIZED = "Unbekannter Befehl!" +MOD_GRANTED = "\\#fff982\\Du bist jetzt ein Moderator." [MENU] BACK = "Zurück" diff --git a/src/pc/djui/djui_chat_box.c b/src/pc/djui/djui_chat_box.c index 5a1da115d..157972370 100644 --- a/src/pc/djui/djui_chat_box.c +++ b/src/pc/djui/djui_chat_box.c @@ -129,7 +129,7 @@ static void djui_chat_box_input_enter(struct DjuiInputbox* chatInput) { if (strlen(chatInput->buffer) != 0) { sent_history_add_message(&sentHistory, chatInput->buffer); if (chatInput->buffer[0] == '/') { - if (strcmp(chatInput->buffer, "/help") == 0 || strcmp(chatInput->buffer, "/?") == 0 || (!configUseStandardKeyBindingsChat && strcmp(chatInput->buffer, "/")) == 0) { + if (strcmp(chatInput->buffer, "/help") == 0 || strcmp(chatInput->buffer, "/?") == 0) { display_chat_commands(); } else if (!exec_chat_command(chatInput->buffer)) { char extendedUnknownCommandMessage[MAX_MSG_LENGTH]; diff --git a/src/pc/lua/smlua_hooks.c b/src/pc/lua/smlua_hooks.c index fadece5d5..6690fb8e8 100644 --- a/src/pc/lua/smlua_hooks.c +++ b/src/pc/lua/smlua_hooks.c @@ -1813,35 +1813,49 @@ char** smlua_get_chat_player_list(void) { return sortedPlayers; } - char** smlua_get_chat_maincommands_list(void) { #if defined(DEVELOPMENT) - char* additionalCmds[] = {"players", "kick", "ban", "permban", "moderator", "confirm", "help", "?", "warp", "lua", "luaf"}; - s32 additionalCmdsCount = 11; + s32 defaultCmdsCount = 11; + static char* defaultCmds[] = {"players", "kick", "ban", "permban", "moderator", "help", "?", "warp", "lua", "luaf", NULL}; #else - char* additionalCmds[] = {"players", "kick", "ban", "permban", "moderator", "confirm", "help", "?"}; - s32 additionalCmdsCount = 8; + s32 defaultCmdsCount = 8; + static char* defaultCmds[] = {"players", "kick", "ban", "permban", "moderator", "help", "?", NULL}; #endif - - char** commands = (char**) malloc((sHookedChatCommandsCount + additionalCmdsCount + 1) * sizeof(char*)); - + s32 defaultCmdsCountNew = 0; + for (s32 i = 0; i < defaultCmdsCount; i++) { + if (defaultCmds[i] != NULL) { + defaultCmdsCountNew++; + } else if (gServerSettings.nametags && defaultCmds[i] == NULL) { + defaultCmds[i] = "nametags"; + defaultCmdsCountNew++; + break; + } + } + char** commands = (char**) malloc((sHookedChatCommandsCount + defaultCmdsCountNew + 1) * sizeof(char*)); for (s32 i = 0; i < sHookedChatCommandsCount; i++) { struct LuaHookedChatCommand* hook = &sHookedChatCommands[i]; commands[i] = strdup(hook->command); } - - for (s32 i = 0; i < additionalCmdsCount; i++) { - commands[sHookedChatCommandsCount + i] = strdup(additionalCmds[i]); + for (s32 i = 0; i < defaultCmdsCount; i++) { + if (defaultCmds[i] != NULL) { + commands[sHookedChatCommandsCount + i] = strdup(defaultCmds[i]); + } } - - commands[sHookedChatCommandsCount + additionalCmdsCount] = NULL; - - qsort(commands, sHookedChatCommandsCount + additionalCmdsCount, sizeof(char*), sort_alphabetically); - + commands[sHookedChatCommandsCount + defaultCmdsCountNew] = NULL; + qsort(commands, sHookedChatCommandsCount + defaultCmdsCountNew, sizeof(char*), sort_alphabetically); return commands; } char** smlua_get_chat_subcommands_list(const char* maincommand) { + if (gServerSettings.nametags && strcmp(maincommand, "nametags") == 0) { + s32 count = 2; + char** subcommands = (char**) malloc((count + 1) * sizeof(char*)); + subcommands[0] = strdup("show-tag"); + subcommands[1] = strdup("show-health"); + subcommands[2] = NULL; + return subcommands; + } + for (s32 i = 0; i < sHookedChatCommandsCount; i++) { struct LuaHookedChatCommand* hook = &sHookedChatCommands[i]; if (strcmp(hook->command, maincommand) == 0) {