chat_command_freeze 1.0.0

This commit is contained in:
Resxt 2023-03-24 17:35:12 +01:00
parent 58eece3441
commit 56a1d9e961
2 changed files with 97 additions and 0 deletions

View File

@ -84,6 +84,24 @@ set cc_permission_4 ""
| setdvar | Changes a dvar on the server | (1) the dvar name (2) the new dvar value | `!setdvar jump_height 500` | 4 |
| setclientdvar | Changes a dvar on the targeted player | (1) the name of the player (2) the dvar name (3) the new dvar value | `!setclientdvar Resxt cg_thirdperson 1` | 4 |
## chat_command_freeze.gsc
Toggles whether the targeted player can move or not.
Note that this does not work during the prematch period.
| # | Argument | Mandatory |
|---|---|---|
| 1 | The name of the player to freeze/unfreeze | :white_check_mark: |
| Examples |
|---|
| `!freeze me` |
| `!freeze Resxt` |
| Permission level |
|---|
| 3 |
## chat_command_god_mode.gsc
Toggles whether the targeted player is in god mode (invincible) or not.

View File

@ -0,0 +1,79 @@
#include scripts\chat_commands;
Init()
{
CreateCommand(level.chat_commands["ports"], "freeze", "function", ::FreezeCommand, 3, array("default_help_one_player"));
}
/* Command section */
FreezeCommand(args)
{
if (args.size < 1)
{
return NotEnoughArgsError(1);
}
error = ToggleFreeze(args[0]);
if (IsDefined(error))
{
return error;
}
}
/* Logic section */
ToggleFreeze(playerName)
{
player = FindPlayerByName(playerName);
if (!IsDefined(player))
{
return PlayerDoesNotExistError(playerName);
}
commandName = "freeze";
ToggleStatus(commandName, "Freeze", player);
if (GetStatus(commandName, player))
{
player DoFreeze(true);
player thread ThreadFreeze();
}
else
{
player DoFreeze(false);
player notify("chat_commands_freeze_off");
}
}
ThreadFreeze()
{
self endon("disconnect");
self endon("chat_commands_freeze_off");
for(;;)
{
self waittill("spawned_player");
self DoFreeze(true);
}
}
DoFreeze(enabled)
{
if (enabled)
{
self FreezeControls(1);
}
else
{
self FreezeControls(0);
}
}