diff --git a/chat_commands/README.md b/chat_commands/README.md index 924df9b..8864e1d 100644 --- a/chat_commands/README.md +++ b/chat_commands/README.md @@ -31,6 +31,16 @@ The player affected by the command dies and swaps to the other team. Arguments expected: the complete name of a player. Example: `!changteam Resxt` +## chat_command_invisible.gsc + +Toggles invisibility on the targeted player. +Note that this does not make the player invisible to bots in the sense that even if they can't see the player, they will still know his position and shoot him. + +| Examples | +|---| +| `!invisible me` | +| `!invisible Resxt` | + ## chat_command_map_mode.gsc 3 related commands in one file: diff --git a/chat_commands/chat_command_invisible.gsc b/chat_commands/chat_command_invisible.gsc new file mode 100644 index 0000000..0775119 --- /dev/null +++ b/chat_commands/chat_command_invisible.gsc @@ -0,0 +1,52 @@ +#include scripts\chat_commands; + +Init() +{ + CreateCommand(level.commands_servers_ports, "invisible", "function", ::InvisibleCommand, ["default_help_one_player"]); +} + + + +/* Command section */ + +InvisibleCommand(args) +{ + if (args.size < 1) + { + return NotEnoughArgsError(1); + } + + error = ToggleInvisible(args[0]); + + if (IsDefined(error)) + { + return error; + } +} + + + +/* Logic section */ + +ToggleInvisible(playerName) +{ + player = FindPlayerByName(playerName); + + if (!IsDefined(player)) + { + return PlayerDoesNotExistError(playerName); + } + + commandName = "invisible"; + + ToggleStatus(commandName, "Invisible", player); + + if (GetStatus(commandName, player)) + { + player hide(); + } + else + { + player show(); + } +} \ No newline at end of file