chat_command_ufo_mode 1.0.0

This commit is contained in:
Resxt 2023-07-03 16:47:38 +02:00
parent 5001fc8b8f
commit 05fdd3c679
2 changed files with 140 additions and 0 deletions

View File

@ -255,6 +255,29 @@ Prints how to use the `commands` and the `help command` commands in the player's
|---| |---|
| 1 | | 1 |
## chat_command_ufo_mode.gsc
Toggles whether the targeted player can use the ufo mode or not.
This allows the player to fly around the map by holding the melee button and, if death barrier protection is on, to get out of map without dying.
The death barrier protection is on by default.
In ZM it will remove the death barriers for the entire team.
In MP it will put the player in god mode until disabling UFO mode (running the command again).
If the player had god mode from the god mode chat command he will keep the god mode.
| # | Argument | Mandatory |
|---|---|---|
| 1 | The name of the player to toggle ufo mode for | :white_check_mark: |
| Examples |
|---|
| `!ufomode me` |
| `!ufomode Resxt` |
| Permission level |
|---|
| 3 |
## chat_command_unfair_aimbot.gsc ## chat_command_unfair_aimbot.gsc
Toggles unfair aimbot on the targeted player. Toggles unfair aimbot on the targeted player.

View File

@ -0,0 +1,117 @@
#include scripts\chat_commands;
Init()
{
// change to false to disable death barrier protection
// in ZM: no death barrier for all players during the entire game
// in MP: constant god mode for the player who's in UFO mode until toggling ufo off
level.chat_commands_protect_from_death_barriers = true;
if (level.chat_commands_protect_from_death_barriers && !IsMultiplayerMode())
{
level.player_out_of_playable_area_monitor = false;
}
CreateCommand(level.chat_commands["ports"], "ufomode", "function", ::UfoModeCommand, 3, array("default_help_one_player"), array("ufo"));
}
/* Command section */
UfoModeCommand(args)
{
if (args.size < 1)
{
return NotEnoughArgsError(1);
}
error = ToggleUfoMode(args[0]);
if (IsDefined(error))
{
return error;
}
}
/* Logic section */
ToggleUfoMode(playerName)
{
player = FindPlayerByName(playerName);
if (!IsDefined(player))
{
return PlayerDoesNotExistError(playerName);
}
commandName = "ufo";
ToggleStatus(commandName, "Ufo Mode", player);
if (GetStatus(commandName, player))
{
player thread DoUfoMode();
player thread ThreadUfoMode();
}
else
{
player notify("chat_commands_ufo_mode_off");
if (IsMultiplayerMode() && !GetStatus("god", player))
{
self DisableInvulnerability();
}
}
}
ThreadUfoMode()
{
self endon("disconnect");
self endon("chat_commands_ufo_mode_off");
for(;;)
{
self waittill("spawned_player");
self DoUfoMode();
}
}
DoUfoMode()
{
self endon("disconnect");
self endon("death");
self endon("chat_commands_ufo_mode_off");
if (level.chat_commands_protect_from_death_barriers && IsMultiplayerMode())
{
self EnableInvulnerability();
}
self.fly = 0;
UFO = Spawn("script_model", self.origin);
for(;;)
{
if(self MeleeButtonPressed())
{
self PlayerLinkTo(UFO);
self.fly = 1;
}
else
{
self Unlink();
self.fly = 0;
}
if(self.fly == 1)
{
fly = self.origin + VectorScale(AnglesToForward(self GetPlayerAngles()), 20);
UFO MoveTo(fly, .01);
}
wait 0.05;
}
}