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
This commit is contained in:
iZePlayz 2024-06-12 00:47:54 +02:00 committed by GitHub
parent eb45999791
commit 95fd534e15
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 67 additions and 53 deletions

View File

@ -1,63 +1,63 @@
[NOTIF] [NOTIF]
CONNECTED = "@ hat sich mit dem Server verbunden." CONNECTED = "@ hat den Server betreten."
DISCONNECTED = "@ hat die Verbindung zum Server getrennt." DISCONNECTED = "@ hat den Server verlassen."
LEFT_THIS_LEVEL = "@ hat dieses Level verlassen." LEFT_THIS_LEVEL = "@ hat dieses Level verlassen."
ENTERED_THIS_LEVEL = "@ ist diesem Level beigetreten." ENTERED_THIS_LEVEL = "@ hat dieses Level betreten."
ENTERED = "@ ist beigetreten zu\n#" ENTERED = "@ ist beigetreten\n#"
SERVER_CLOSED = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Server wurde geschlossen." 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_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." 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_FULL = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Der Server ist bereits voll."
DISCONNECT_KICK = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Du wurdest vom Server geworfen." DISCONNECT_KICK = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Du wurdest vom Server gekickt."
DISCONNECT_BAN = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Du wurdest vom Server gebannt." DISCONNECT_BAN = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Der Bann-Hammer hat gesprochen."
DISCONNECT_REJOIN = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Erneut verbinden..." DISCONNECT_REJOIN = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Erneut verbinden..."
DISCONNECT_CLOSED = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Der Servereigentümer hat die Verbindung geschlossen." DISCONNECT_CLOSED = "\\#ffa0a0\\Verbindung getrennt:\\#dcdcdc\\ Der Hoster hat den Server geschlosse."
DISCONNECT_BIG_MOD = "Der Server verwendet eine zu große Modifikation.\nDie Verbindung wird getrennt." 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." DIED = "@ ist gestorben."
DEBUG_FLY = "@ hat den Debug-Free-Fly-Modus aktiviert." DEBUG_FLY = "@ hat den Debug-Free-Fly-Modus aktiviert."
IMPORT_MOD_SUCCESS = "\\#a0ffa0\\Mod importiert\n\\#dcdcdc\\'@'" IMPORT_MOD_SUCCESS = "\\#a0ffa0\\Mod erfolgreich importiert\n\\#dcdcdc\\'@'"
IMPORT_DYNOS_SUCCESS = "\\#a0ffa0\\DynOS-Paket importiert\n\\#dcdcdc\\'@'" IMPORT_DYNOS_SUCCESS = "\\#a0ffa0\\DynOS-Paket erfolgreich importiert\n\\#dcdcdc\\'@'"
IMPORT_PALETTE_SUCCESS = "\\#a0ffa0\\Importiertes Paletten-Voreinstellung\n\\#dcdcdc\\'@'" IMPORT_PALETTE_SUCCESS = "\\#a0ffa0\\Paletten-Voreinstellung erfolgreich importiert\n\\#dcdcdc\\'@'"
IMPORT_FAIL = "\\#ffa0a0\\Import fehlgeschlagen für\n\\#dcdcdc\\'@'" IMPORT_FAIL = "\\#ffa0a0\\Importierung fehlgeschlagen\n\\#dcdcdc\\'@'"
IMPORT_FAIL_INGAME = "\\#ffa0a0\\Kann nicht im Spiel importieren." IMPORT_FAIL_INGAME = "\\#ffa0a0\\Ein Fehler beim Importieren ist aufgetreten."
COOPNET_CONNECTION_FAILED = "\\#ffa0a0\\Verbindung zu CoopNet fehlgeschlagen!" COOPNET_CONNECTION_FAILED = "\\#ffa0a0\\Es konnte keine Verbindung zu CoopNet hergestellt werden!"
COOPNET_DISCONNECTED = "\\#ffa0a0\\Verbindung zu CoopNet verloren!" COOPNET_DISCONNECTED = "\\#ffa0a0\\Verbindung zu CoopNet verloren!"
LOBBY_NOT_FOUND = "\\#ffa0a0\\Diese Lobby existiert nicht mehr." 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!" 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!" COOPNET_VERSION = "\\#ffa0a0\\Die Version deines Spieles ist inkompatibel mit CoopNet. Bitte installiere die neuste Version!"
PEER_FAILED = "\\#ffa0a0\\Konnte keine Verbindung zum Spieler '@' aufbauen." PEER_FAILED = "\\#ffa0a0\\Es konnte keine Verbindung zum Spieler '@' aufgebaut werden."
UNKNOWN = "Unbekannt" UNKNOWN = "Unbekannt"
LOBBY_HOST = "Lobby-Hoster" LOBBY_HOST = "Lobby-Hoster"
UPDATE_AVAILABLE = "Neues Update!" UPDATE_AVAILABLE = "Ein neues Update ist verfügbar!"
LATEST_VERSION = "Aktuellste Version" LATEST_VERSION = "Neuste verfügbare Version"
YOUR_VERSION = "Ihre Version" YOUR_VERSION = "Derzeit installierte Version"
[CHAT] [CHAT]
KICKING = "'@' wird hinausgeworfen!" KICKING = "'@' wurde gekickt!"
BANNING = "'@' wird gebannt!" BANNING = "'@' wurde gebannt!"
SERVER_ONLY = "Nur der Server kann diesen Befehl ausführen." SERVER_ONLY = "Dieser Befehl kann nur auf dem Server ausgeführt werden!"
PERM_BANNING = "'@' wird dauerhaft gebannt!" PERM_BANNING = "'@' wurde permanent gebannt!"
ADD_MODERATOR = "'@' wird als Moderator hinzugefügt!" ADD_MODERATOR = "'@' ist nun Moderator!"
PLAYERS = "Spieler" PLAYERS = "Spieler"
NO_PERMS = "Du hast keine Berechtigung, diesen Befehl auszuführen." NO_PERMS = "Du hast keine Berechtigung, diesen Befehl auszuführen."
PLAYER_NOT_FOUND = "Spieler konnte nicht gefunden werden." PLAYER_NOT_FOUND = "Spieler konnte nicht gefunden werden."
NAMETAGS_MISSING_PARAMETERS = "Fehlende Parameter: [OPTION]" 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_BAN = "Du kannst dich nicht selbst bannen."
SELF_MOD = "Du kannst dich nicht selbst zum Moderator machen." 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." 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." 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." 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." PLAYERS_DESC = "/players - Zeige alle Spieler und ihre IDs."
KICK_DESC = "/kick [NAME|ID] - Einen Spieler aus dem aktuellen Spiel werfen." KICK_DESC = "/kick [NAME|ID] - Kicke einen Spieler vom Server."
BAN_DESC = "/ban [NAME|ID] - Einen Spieler aus dem aktuellen Spiel bannen." BAN_DESC = "/ban [NAME|ID] - Banne einen Spieler vom Server."
PERM_BAN_DESC = "/permban [NAME|ID] - Einen Spieler dauerhaft für alle von dir gehosteten Spiele bannen." PERM_BAN_DESC = "/permban [NAME|ID] - Banne einen spieler dauerhaft in allen vor dir gehosteten Lobbys."
MOD_DESC = "/moderator [NAME|ID] - Einem Spieler die Berechtigung für Befehle wie /kick, /ban, /permban in allen von dir gehosteten Spielen geben." 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] - Ändern Sie, ob Sie Ihr eigenes Namensschild sehen und ob Sie die Gesundheit sehen" NAMETAGS_DESC = "/nametags [show-tag|show-health] - Sichtbarkeit von Spielernamen sowie der KP/Kraft aktivieren oder deaktivieren "
UNRECOGNIZED = "Unbekannter Befehl." UNRECOGNIZED = "Unbekannter Befehl!"
MOD_GRANTED = "\\#fff982\\Du bist jetzt Moderator." MOD_GRANTED = "\\#fff982\\Du bist jetzt ein Moderator."
[MENU] [MENU]
BACK = "Zurück" BACK = "Zurück"

View File

@ -129,7 +129,7 @@ static void djui_chat_box_input_enter(struct DjuiInputbox* chatInput) {
if (strlen(chatInput->buffer) != 0) { if (strlen(chatInput->buffer) != 0) {
sent_history_add_message(&sentHistory, chatInput->buffer); sent_history_add_message(&sentHistory, chatInput->buffer);
if (chatInput->buffer[0] == '/') { 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(); display_chat_commands();
} else if (!exec_chat_command(chatInput->buffer)) { } else if (!exec_chat_command(chatInput->buffer)) {
char extendedUnknownCommandMessage[MAX_MSG_LENGTH]; char extendedUnknownCommandMessage[MAX_MSG_LENGTH];

View File

@ -1813,35 +1813,49 @@ char** smlua_get_chat_player_list(void) {
return sortedPlayers; return sortedPlayers;
} }
char** smlua_get_chat_maincommands_list(void) { char** smlua_get_chat_maincommands_list(void) {
#if defined(DEVELOPMENT) #if defined(DEVELOPMENT)
char* additionalCmds[] = {"players", "kick", "ban", "permban", "moderator", "confirm", "help", "?", "warp", "lua", "luaf"}; s32 defaultCmdsCount = 11;
s32 additionalCmdsCount = 11; static char* defaultCmds[] = {"players", "kick", "ban", "permban", "moderator", "help", "?", "warp", "lua", "luaf", NULL};
#else #else
char* additionalCmds[] = {"players", "kick", "ban", "permban", "moderator", "confirm", "help", "?"}; s32 defaultCmdsCount = 8;
s32 additionalCmdsCount = 8; static char* defaultCmds[] = {"players", "kick", "ban", "permban", "moderator", "help", "?", NULL};
#endif #endif
s32 defaultCmdsCountNew = 0;
char** commands = (char**) malloc((sHookedChatCommandsCount + additionalCmdsCount + 1) * sizeof(char*)); 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++) { for (s32 i = 0; i < sHookedChatCommandsCount; i++) {
struct LuaHookedChatCommand* hook = &sHookedChatCommands[i]; struct LuaHookedChatCommand* hook = &sHookedChatCommands[i];
commands[i] = strdup(hook->command); commands[i] = strdup(hook->command);
} }
for (s32 i = 0; i < defaultCmdsCount; i++) {
for (s32 i = 0; i < additionalCmdsCount; i++) { if (defaultCmds[i] != NULL) {
commands[sHookedChatCommandsCount + i] = strdup(additionalCmds[i]); commands[sHookedChatCommandsCount + i] = strdup(defaultCmds[i]);
}
} }
commands[sHookedChatCommandsCount + defaultCmdsCountNew] = NULL;
commands[sHookedChatCommandsCount + additionalCmdsCount] = NULL; qsort(commands, sHookedChatCommandsCount + defaultCmdsCountNew, sizeof(char*), sort_alphabetically);
qsort(commands, sHookedChatCommandsCount + additionalCmdsCount, sizeof(char*), sort_alphabetically);
return commands; return commands;
} }
char** smlua_get_chat_subcommands_list(const char* maincommand) { 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++) { for (s32 i = 0; i < sHookedChatCommandsCount; i++) {
struct LuaHookedChatCommand* hook = &sHookedChatCommands[i]; struct LuaHookedChatCommand* hook = &sHookedChatCommands[i];
if (strcmp(hook->command, maincommand) == 0) { if (strcmp(hook->command, maincommand) == 0) {