mirror of
https://github.com/ChocoTaco1/TacoServer.git
synced 2026-01-20 00:24:49 +00:00
172 lines
3.9 KiB
C#
Executable file
172 lines
3.9 KiB
C#
Executable file
// AntiPack Script
|
|
//
|
|
// Amount of players needed on server for (Cloak and Shield) Pack to be banned/unbanned
|
|
// This is useful for low numbers
|
|
//
|
|
// Enable/Disable the feature
|
|
// $Host::AntiPackEnable = 1;
|
|
// When you would like for it to deactivate
|
|
// $Host::AntiPackPlayerCount = 6;
|
|
//
|
|
|
|
// Choose which packs to limit
|
|
$AntiPackIncludeCloak = 1;
|
|
$AntiPackIncludeShield = 0;
|
|
|
|
|
|
// Called in GetCounts.cs
|
|
function CheckAntiPack(%game)
|
|
{
|
|
//CTF only
|
|
if($Host::AntiPackEnable && $CurrentMissionType $= "DM" || $CurrentMissionType $= "CTF")
|
|
{
|
|
//echo("TotalTeamPlayerCount " @ $TotalTeamPlayerCount);
|
|
//echo("AntiPackPlayerCount " @ $Host::AntiPackPlayerCount);
|
|
|
|
if($TotalTeamPlayerCount < $Host::AntiPackPlayerCount)
|
|
{
|
|
if($AntiPackStatus !$= "ACTIVEON")
|
|
$AntiPackStatus = "ON";
|
|
}
|
|
//Off
|
|
else
|
|
{
|
|
if($AntiPackStatus !$= "ACTIVEOFF")
|
|
$AntiPackStatus = "OFF";
|
|
}
|
|
}
|
|
//All other cases outside of CTF
|
|
else
|
|
{
|
|
if($AntiPackStatus !$= "ACTIVEOFF")
|
|
$AntiPackStatus = "OFF";
|
|
}
|
|
|
|
switch$($AntiPackStatus)
|
|
{
|
|
case ON:
|
|
if($AntiPackIncludeCloak)
|
|
{
|
|
$InvBanList[CTF, "CloakingPack"] = 1;
|
|
if(!isActivePackage(AntiPackCloak))
|
|
activatePackage(AntiPackCloak);
|
|
}
|
|
if($AntiPackIncludeShield)
|
|
{
|
|
$InvBanList[CTF, "ShieldPack"] = 1;
|
|
if(!isActivePackage(AntiPackShield))
|
|
activatePackage(AntiPackShield);
|
|
}
|
|
$AntiPackStatus = "ACTIVEON";
|
|
case OFF:
|
|
$InvBanList[CTF, "CloakingPack"] = 0;
|
|
$InvBanList[CTF, "ShieldPack"] = 0;
|
|
if(isActivePackage(AntiPackCloak))
|
|
deactivatePackage(AntiPackCloak);
|
|
if(isActivePackage(AntiPackShield))
|
|
deactivatePackage(AntiPackShield);
|
|
$AntiPackStatus = "ACTIVEOFF";
|
|
case ACTIVEON:
|
|
//Do Nothing
|
|
case ACTIVEOFF:
|
|
//Do Nothing
|
|
}
|
|
}
|
|
|
|
// So if the player is able to get said pack, he cant use it
|
|
package AntiPackCloak
|
|
{
|
|
|
|
function CloakingPackImage::onActivate(%data, %obj, %slot)
|
|
{
|
|
if(%obj.reCloak !$= "")
|
|
{
|
|
Cancel(%obj.reCloak);
|
|
%obj.reCloak = "";
|
|
}
|
|
|
|
if(%obj.client.armor $= "Light")
|
|
{
|
|
// can the player currently cloak (function returns "true" or reason for failure)?
|
|
if(%obj.canCloak() $= "true")
|
|
{
|
|
if(%obj.getImageState($BackpackSlot) $= "activate")
|
|
{
|
|
// cancel recloak thread
|
|
if(%obj.reCloak !$= "")
|
|
{
|
|
Cancel(%obj.reCloak);
|
|
%obj.reCloak = "";
|
|
}
|
|
|
|
messageClient(%obj.client, 'MsgCloakingPackInvalid', '\c2Cloakpack is disabled until %1 players.', $Host::AntiPackPlayerCount );
|
|
%obj.setCloaked(false);
|
|
%obj.setImageTrigger($BackpackSlot, false);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// notify player that they cannot cloak
|
|
messageClient(%obj.client, 'MsgCloakingPackFailed', '\c2Jamming field prevents cloaking.');
|
|
%obj.setImageTrigger(%slot, false);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// hopefully avoid some loopholes
|
|
messageClient(%obj.client, 'MsgCloakingPackInvalid', '\c2Cloaking available for light armors only.');
|
|
%obj.setImageTrigger(%slot, false);
|
|
}
|
|
}
|
|
|
|
};
|
|
|
|
package AntiPackShield
|
|
{
|
|
|
|
function ShieldPackImage::onActivate(%data, %obj, %slot)
|
|
{
|
|
messageClient(%obj.client, 'MsgShieldPackInvalid', '\c2Shieldpack is disabled until %1 players.', $Host::AntiPackPlayerCount );
|
|
%obj.setImageTrigger(%slot,false);
|
|
%obj.isShielded = "";
|
|
}
|
|
|
|
function ShieldPackImage::onDeactivate(%data, %obj, %slot)
|
|
{
|
|
//Nothing
|
|
}
|
|
|
|
};
|
|
|
|
package AntiPack
|
|
{
|
|
|
|
//Reset Everything
|
|
function DefaultGame::gameOver(%game)
|
|
{
|
|
Parent::gameOver(%game);
|
|
|
|
if($Host::AntiPackEnable)
|
|
{
|
|
if($InvBanList[CTF, "CloakingPack"])
|
|
$InvBanList[CTF, "CloakingPack"] = 0;
|
|
if(isActivePackage(AntiPackCloak))
|
|
deactivatePackage(AntiPackCloak);
|
|
|
|
if($InvBanList[CTF, "ShieldPack"])
|
|
$InvBanList[CTF, "ShieldPack"] = 0;
|
|
if(isActivePackage(AntiPackShield))
|
|
deactivatePackage(AntiPackShield);
|
|
|
|
$AntiPackStatus = "OFF";
|
|
}
|
|
}
|
|
|
|
};
|
|
|
|
// Prevent package from being activated if it is already
|
|
if (!isActivePackage(AntiPack))
|
|
activatePackage(AntiPack);
|
|
|
|
|