Plutonium-T6-Scripts/chat_commands/zm/chat_command_give.gsc
Resxt d0776fde3f chat_command_give 1.1.0
Added giveperk command
2023-10-28 15:10:54 +02:00

122 lines
2.7 KiB
Plaintext

#include scripts\chat_commands;
Init()
{
CreateCommand(level.chat_commands["ports"], "givepowerup", "function", ::GivePowerupCommand, 2, [], array("spawnpowerup", "powerup", "pu"));
CreateCommand(level.chat_commands["ports"], "giveperk", "function", ::GivePerkCommand, 2, [], array("perk"));
}
/* Command section */
GivePowerupCommand(args)
{
if (args.size < 1)
{
return NotEnoughArgsError(1);
}
error = GivePlayerPowerup(args[0]);
if (IsDefined(error))
{
return error;
}
}
GivePerkCommand(args)
{
if (args.size < 2)
{
return NotEnoughArgsError(2);
}
error = GivePlayerPerk(args[0], args[1], true, true);
if (IsDefined(error))
{
return error;
}
}
/* Logic section */
GivePlayerPowerup(powerupName)
{
powerupName = ToLower(powerupName);
if (powerupName == "all")
{
foreach (powerup in GetAvailablePowerups())
{
level thread maps\mp\zombies\_zm_powerups::specific_powerup_drop(powerup, self.origin);
}
}
else if (powerupName == "allbutnuke" || powerupName == "all_but_nuke" || powerupName == "allnonuke" || powerupName == "all_no_nuke")
{
foreach (powerup in GetAvailablePowerups())
{
if (powerup != "nuke")
{
level thread maps\mp\zombies\_zm_powerups::specific_powerup_drop(powerup, self.origin);
}
}
}
else
{
if (IsValidPowerup(powerupName))
{
level thread maps\mp\zombies\_zm_powerups::specific_powerup_drop(powerupName, self.origin);
}
else
{
return PowerupDoesNotExistError(powerupName);
}
}
}
GivePlayerPerk(playerName, perkName, enableMusic, enableAnimation)
{
player = FindPlayerByName(playerName);
if (!IsDefined(player))
{
return PlayerDoesNotExistError(playerName);
}
if (ToLower(perkName) == "all")
{
foreach (perk in GetAvailablePerks())
{
player thread maps\mp\zombies\_zm_perks::give_perk(perk, 0);
}
}
else
{
perkInfos = GetPerkInfos(perkName);
if (perkInfos.size > 0)
{
if (enableMusic)
{
player thread maps\mp\zombies\_zm_audio::play_jingle_or_stinger( perkInfos["music"]);
}
if (enableAnimation)
{
player thread vending_trigger_post_think(player, perkInfos["perk_name"]);
}
else
{
player thread maps\mp\zombies\_zm_perks::give_perk(perkInfos["perk_name"], 0);
}
}
else
{
return PerkDoesNotExistError(perkName);
}
}
}