batch remove trailing spaces and convert windows \r\n line endings to linux \n

i don't want to have to do this again, fix your shitty code editors @commiters !!!
This commit is contained in:
BotoX 2018-08-09 19:35:44 +02:00
parent ff970b8d5f
commit eefb23882b
30 changed files with 1992 additions and 1992 deletions

View File

@ -2,5 +2,5 @@
#endinput #endinput
#endif #endif
#define _AntiBhopCheat_Included #define _AntiBhopCheat_Included
forward void AntiBhopCheat_OnClientDetected(int client, char[] sReason, char[] sStats); forward void AntiBhopCheat_OnClientDetected(int client, char[] sReason, char[] sStats);

View File

@ -1,221 +1,221 @@
#pragma semicolon 1 #pragma semicolon 1
#include <sourcemod> #include <sourcemod>
ConVar g_hTvEnabled; ConVar g_hTvEnabled;
ConVar g_hAutoRecord; ConVar g_hAutoRecord;
ConVar g_hMinPlayersStart; ConVar g_hMinPlayersStart;
ConVar g_hIgnoreBots; ConVar g_hIgnoreBots;
ConVar g_hTimeStart; ConVar g_hTimeStart;
ConVar g_hTimeStop; ConVar g_hTimeStop;
ConVar g_hFinishMap; ConVar g_hFinishMap;
ConVar g_hDemoPath; ConVar g_hDemoPath;
ConVar g_hMaxLength; ConVar g_hMaxLength;
bool g_bIsRecording = false; bool g_bIsRecording = false;
bool g_bIsManual = false; bool g_bIsManual = false;
int g_iStartedRecording; int g_iStartedRecording;
// Default: o=rx,g=rx,u=rwx | 755 // Default: o=rx,g=rx,u=rwx | 755
#define DIRECTORY_PERMISSIONS (FPERM_O_READ|FPERM_O_EXEC | FPERM_G_READ|FPERM_G_EXEC | FPERM_U_READ|FPERM_U_WRITE|FPERM_U_EXEC) #define DIRECTORY_PERMISSIONS (FPERM_O_READ|FPERM_O_EXEC | FPERM_G_READ|FPERM_G_EXEC | FPERM_U_READ|FPERM_U_WRITE|FPERM_U_EXEC)
public Plugin myinfo = public Plugin myinfo =
{ {
name = "Auto Recorder", name = "Auto Recorder",
author = "Stevo.TVR", author = "Stevo.TVR",
description = "Automates SourceTV recording based on player count and time of day.", description = "Automates SourceTV recording based on player count and time of day.",
version = "1.2.0", version = "1.2.0",
url = "http://www.theville.org" url = "http://www.theville.org"
} }
public void OnPluginStart() public void OnPluginStart()
{ {
g_hAutoRecord = CreateConVar("sm_autorecord_enable", "1", "Enable automatic recording", _, true, 0.0, true, 1.0); g_hAutoRecord = CreateConVar("sm_autorecord_enable", "1", "Enable automatic recording", _, true, 0.0, true, 1.0);
g_hMinPlayersStart = CreateConVar("sm_autorecord_minplayers", "4", "Minimum players on server to start recording", _, true, 0.0); g_hMinPlayersStart = CreateConVar("sm_autorecord_minplayers", "4", "Minimum players on server to start recording", _, true, 0.0);
g_hIgnoreBots = CreateConVar("sm_autorecord_ignorebots", "1", "Ignore bots in the player count", _, true, 0.0, true, 1.0); g_hIgnoreBots = CreateConVar("sm_autorecord_ignorebots", "1", "Ignore bots in the player count", _, true, 0.0, true, 1.0);
g_hTimeStart = CreateConVar("sm_autorecord_timestart", "-1", "Hour in the day to start recording (0-23, -1 disables)"); g_hTimeStart = CreateConVar("sm_autorecord_timestart", "-1", "Hour in the day to start recording (0-23, -1 disables)");
g_hTimeStop = CreateConVar("sm_autorecord_timestop", "-1", "Hour in the day to stop recording (0-23, -1 disables)"); g_hTimeStop = CreateConVar("sm_autorecord_timestop", "-1", "Hour in the day to stop recording (0-23, -1 disables)");
g_hFinishMap = CreateConVar("sm_autorecord_finishmap", "1", "If 1, continue recording until the map ends", _, true, 0.0, true, 1.0); g_hFinishMap = CreateConVar("sm_autorecord_finishmap", "1", "If 1, continue recording until the map ends", _, true, 0.0, true, 1.0);
g_hDemoPath = CreateConVar("sm_autorecord_path", "demos/", "Path to store recorded demos"); g_hDemoPath = CreateConVar("sm_autorecord_path", "demos/", "Path to store recorded demos");
g_hMaxLength = CreateConVar("sm_autorecord_maxlength", "0", "Maximum length of demos in seconds, 0 to disable", _, true, 0.0); g_hMaxLength = CreateConVar("sm_autorecord_maxlength", "0", "Maximum length of demos in seconds, 0 to disable", _, true, 0.0);
AutoExecConfig(true, "autorecorder"); AutoExecConfig(true, "autorecorder");
RegAdminCmd("sm_record", Command_Record, ADMFLAG_KICK, "Starts a SourceTV demo"); RegAdminCmd("sm_record", Command_Record, ADMFLAG_KICK, "Starts a SourceTV demo");
RegAdminCmd("sm_stoprecord", Command_StopRecord, ADMFLAG_KICK, "Stops the current SourceTV demo"); RegAdminCmd("sm_stoprecord", Command_StopRecord, ADMFLAG_KICK, "Stops the current SourceTV demo");
HookEvent("round_start", OnRoundStart); HookEvent("round_start", OnRoundStart);
g_hTvEnabled = FindConVar("tv_enable"); g_hTvEnabled = FindConVar("tv_enable");
static char sPath[PLATFORM_MAX_PATH]; static char sPath[PLATFORM_MAX_PATH];
GetConVarString(g_hDemoPath, sPath, sizeof(sPath)); GetConVarString(g_hDemoPath, sPath, sizeof(sPath));
if(!DirExists(sPath)) if(!DirExists(sPath))
CreateDirectory(sPath, DIRECTORY_PERMISSIONS); CreateDirectory(sPath, DIRECTORY_PERMISSIONS);
HookConVarChange(g_hMinPlayersStart, OnConVarChanged); HookConVarChange(g_hMinPlayersStart, OnConVarChanged);
HookConVarChange(g_hIgnoreBots, OnConVarChanged); HookConVarChange(g_hIgnoreBots, OnConVarChanged);
HookConVarChange(g_hTimeStart, OnConVarChanged); HookConVarChange(g_hTimeStart, OnConVarChanged);
HookConVarChange(g_hTimeStop, OnConVarChanged); HookConVarChange(g_hTimeStop, OnConVarChanged);
HookConVarChange(g_hDemoPath, OnConVarChanged); HookConVarChange(g_hDemoPath, OnConVarChanged);
CreateTimer(300.0, Timer_CheckStatus, _, TIMER_REPEAT); CreateTimer(300.0, Timer_CheckStatus, _, TIMER_REPEAT);
StopRecord(); StopRecord();
CheckStatus(); CheckStatus();
} }
public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast) public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast)
{ {
int maxLength = GetConVarInt(g_hMaxLength); int maxLength = GetConVarInt(g_hMaxLength);
if(g_bIsRecording && maxLength > 0 && GetTime() >= g_iStartedRecording + maxLength) if(g_bIsRecording && maxLength > 0 && GetTime() >= g_iStartedRecording + maxLength)
{ {
StopRecord(); StopRecord();
CheckStatus(); CheckStatus();
} }
} }
public void OnConVarChanged(ConVar convar, const char[] oldValue, const char[] newValue) public void OnConVarChanged(ConVar convar, const char[] oldValue, const char[] newValue)
{ {
if(convar == g_hDemoPath) if(convar == g_hDemoPath)
{ {
if(!DirExists(newValue)) if(!DirExists(newValue))
CreateDirectory(newValue, DIRECTORY_PERMISSIONS); CreateDirectory(newValue, DIRECTORY_PERMISSIONS);
} }
else else
CheckStatus(); CheckStatus();
} }
public void OnMapEnd() public void OnMapEnd()
{ {
if(g_bIsRecording) if(g_bIsRecording)
{ {
StopRecord(); StopRecord();
g_bIsManual = false; g_bIsManual = false;
} }
} }
public void OnClientPutInServer(int client) public void OnClientPutInServer(int client)
{ {
CheckStatus(); CheckStatus();
} }
public void OnClientDisconnect_Post(int client) public void OnClientDisconnect_Post(int client)
{ {
CheckStatus(); CheckStatus();
} }
public Action Timer_CheckStatus(Handle hTimer) public Action Timer_CheckStatus(Handle hTimer)
{ {
CheckStatus(); CheckStatus();
} }
public Action Command_Record(int client, int args) public Action Command_Record(int client, int args)
{ {
if(g_bIsRecording) if(g_bIsRecording)
{ {
ReplyToCommand(client, "[SM] SourceTV is already recording!"); ReplyToCommand(client, "[SM] SourceTV is already recording!");
return Plugin_Handled; return Plugin_Handled;
} }
StartRecord(); StartRecord();
g_bIsManual = true; g_bIsManual = true;
ReplyToCommand(client, "[SM] SourceTV is now recording..."); ReplyToCommand(client, "[SM] SourceTV is now recording...");
return Plugin_Handled; return Plugin_Handled;
} }
public Action Command_StopRecord(int client, int args) public Action Command_StopRecord(int client, int args)
{ {
if(!g_bIsRecording) if(!g_bIsRecording)
{ {
ReplyToCommand(client, "[SM] SourceTV is not recording!"); ReplyToCommand(client, "[SM] SourceTV is not recording!");
return Plugin_Handled; return Plugin_Handled;
} }
StopRecord(); StopRecord();
if(g_bIsManual) if(g_bIsManual)
{ {
g_bIsManual = false; g_bIsManual = false;
CheckStatus(); CheckStatus();
} }
ReplyToCommand(client, "[SM] Stopped recording."); ReplyToCommand(client, "[SM] Stopped recording.");
return Plugin_Handled; return Plugin_Handled;
} }
void CheckStatus() void CheckStatus()
{ {
if(GetConVarBool(g_hAutoRecord) && !g_bIsManual) if(GetConVarBool(g_hAutoRecord) && !g_bIsManual)
{ {
int iMinClients = GetConVarInt(g_hMinPlayersStart); int iMinClients = GetConVarInt(g_hMinPlayersStart);
int iTimeStart = GetConVarInt(g_hTimeStart); int iTimeStart = GetConVarInt(g_hTimeStart);
int iTimeStop = GetConVarInt(g_hTimeStop); int iTimeStop = GetConVarInt(g_hTimeStop);
bool bReverseTimes = (iTimeStart > iTimeStop); bool bReverseTimes = (iTimeStart > iTimeStop);
static char sCurrentTime[4]; static char sCurrentTime[4];
FormatTime(sCurrentTime, sizeof(sCurrentTime), "%H", GetTime()); FormatTime(sCurrentTime, sizeof(sCurrentTime), "%H", GetTime());
int iCurrentTime = StringToInt(sCurrentTime); int iCurrentTime = StringToInt(sCurrentTime);
if(GetPlayerCount() >= iMinClients+1 && (iTimeStart < 0 || (iCurrentTime >= iTimeStart && (bReverseTimes || iCurrentTime < iTimeStop)))) if(GetPlayerCount() >= iMinClients+1 && (iTimeStart < 0 || (iCurrentTime >= iTimeStart && (bReverseTimes || iCurrentTime < iTimeStop))))
{ {
StartRecord(); StartRecord();
} }
else if(g_bIsRecording && !GetConVarBool(g_hFinishMap) && (iTimeStop < 0 || iCurrentTime >= iTimeStop)) else if(g_bIsRecording && !GetConVarBool(g_hFinishMap) && (iTimeStop < 0 || iCurrentTime >= iTimeStop))
{ {
StopRecord(); StopRecord();
} }
} }
} }
int GetPlayerCount() int GetPlayerCount()
{ {
if(!GetConVarBool(g_hIgnoreBots)) if(!GetConVarBool(g_hIgnoreBots))
return GetClientCount(false) - 1; return GetClientCount(false) - 1;
int iNumPlayers = 0; int iNumPlayers = 0;
for(int i = 1; i <= MaxClients; i++) for(int i = 1; i <= MaxClients; i++)
{ {
if(IsClientConnected(i) && !IsFakeClient(i)) if(IsClientConnected(i) && !IsFakeClient(i))
iNumPlayers++; iNumPlayers++;
} }
return iNumPlayers; return iNumPlayers;
} }
void StartRecord() void StartRecord()
{ {
if(GetConVarBool(g_hTvEnabled) && !g_bIsRecording) if(GetConVarBool(g_hTvEnabled) && !g_bIsRecording)
{ {
static char sPath[PLATFORM_MAX_PATH]; static char sPath[PLATFORM_MAX_PATH];
static char sMap[PLATFORM_MAX_PATH]; static char sMap[PLATFORM_MAX_PATH];
static char sTime[16]; static char sTime[16];
GetConVarString(g_hDemoPath, sPath, sizeof(sPath)); GetConVarString(g_hDemoPath, sPath, sizeof(sPath));
FormatTime(sTime, sizeof(sTime), "%Y%m%d-%H%M%S", GetTime()); FormatTime(sTime, sizeof(sTime), "%Y%m%d-%H%M%S", GetTime());
GetCurrentMap(sMap, sizeof(sMap)); GetCurrentMap(sMap, sizeof(sMap));
// replace slashes in map path name with dashes, to prevent fail on workshop maps // replace slashes in map path name with dashes, to prevent fail on workshop maps
ReplaceString(sMap, sizeof(sMap), "/", "-", false); ReplaceString(sMap, sizeof(sMap), "/", "-", false);
ServerCommand("tv_record \"%s/auto-%s-%s\"", sPath, sTime, sMap); ServerCommand("tv_record \"%s/auto-%s-%s\"", sPath, sTime, sMap);
g_bIsRecording = true; g_bIsRecording = true;
g_iStartedRecording = GetTime(); g_iStartedRecording = GetTime();
LogMessage("Recording to auto-%s-%s.dem", sTime, sMap); LogMessage("Recording to auto-%s-%s.dem", sTime, sMap);
} }
} }
void StopRecord() void StopRecord()
{ {
if(GetConVarBool(g_hTvEnabled)) if(GetConVarBool(g_hTvEnabled))
{ {
ServerCommand("tv_stoprecord"); ServerCommand("tv_stoprecord");
g_bIsRecording = false; g_bIsRecording = false;
} }
} }

View File

@ -1,118 +1,118 @@
#pragma semicolon 1 #pragma semicolon 1
#include <sourcemod> #include <sourcemod>
#define PLUGIN_PREFIX "\x04[ConVar Suppression]\x03 " #define PLUGIN_PREFIX "\x04[ConVar Suppression]\x03 "
#define PLUGIN_VERSION "1.0" #define PLUGIN_VERSION "1.0"
new Handle:g_hGlobalTrie = INVALID_HANDLE; new Handle:g_hGlobalTrie = INVALID_HANDLE;
public Plugin:myinfo = public Plugin:myinfo =
{ {
name = "ConVar Suppression", /* https://www.youtube.com/watch?v=ZhjtChtUmBE&hd=1 */ name = "ConVar Suppression", /* https://www.youtube.com/watch?v=ZhjtChtUmBE&hd=1 */
author = "Kyle Sanderson", author = "Kyle Sanderson",
description = "Atleast we have candy.", description = "Atleast we have candy.",
version = PLUGIN_VERSION, version = PLUGIN_VERSION,
url = "http://www.SourceMod.net/" url = "http://www.SourceMod.net/"
}; };
public OnPluginStart() public OnPluginStart()
{ {
g_hGlobalTrie = CreateTrie(); g_hGlobalTrie = CreateTrie();
HookEvent("server_cvar", Event_ServerCvar, EventHookMode_Pre); HookEvent("server_cvar", Event_ServerCvar, EventHookMode_Pre);
RegAdminCmd("sm_suppressconvar", OnSupressConVar, ADMFLAG_ROOT, "Supress a ConVar from displaying changes to Clients."); RegAdminCmd("sm_suppressconvar", OnSupressConVar, ADMFLAG_ROOT, "Supress a ConVar from displaying changes to Clients.");
CreateConVar("sm_convarsuppression_version", PLUGIN_VERSION, "Version string for ConVar Supression.", FCVAR_REPLICATED|FCVAR_DONTRECORD|FCVAR_NOTIFY); CreateConVar("sm_convarsuppression_version", PLUGIN_VERSION, "Version string for ConVar Supression.", FCVAR_REPLICATED|FCVAR_DONTRECORD|FCVAR_NOTIFY);
AutoExecConfig(true, "plugin.ConVarSupression"); AutoExecConfig(true, "plugin.ConVarSupression");
} }
public Action:OnSupressConVar(client, argc) public Action:OnSupressConVar(client, argc)
{ {
if (client && !IsClientInGame(client)) /* Isn't needed, but makes me feel safe inside. */ if (client && !IsClientInGame(client)) /* Isn't needed, but makes me feel safe inside. */
{ {
return Plugin_Handled; return Plugin_Handled;
} }
decl String:sCommand[256]; decl String:sCommand[256];
if (argc < 2) if (argc < 2)
{ {
if (!GetCmdArg(0, sCommand, sizeof(sCommand))) if (!GetCmdArg(0, sCommand, sizeof(sCommand)))
{ {
return Plugin_Handled; return Plugin_Handled;
} }
ReplyToCommand(client, "%s%s <convar> <enabled|disabled>", PLUGIN_PREFIX, sCommand); ReplyToCommand(client, "%s%s <convar> <enabled|disabled>", PLUGIN_PREFIX, sCommand);
return Plugin_Handled; return Plugin_Handled;
} }
if (!GetCmdArg(2, sCommand, sizeof(sCommand))) if (!GetCmdArg(2, sCommand, sizeof(sCommand)))
{ {
return Plugin_Handled; return Plugin_Handled;
} }
TrimString(sCommand); TrimString(sCommand);
new iValue = -1; new iValue = -1;
if (!IsCharNumeric(sCommand[0])) if (!IsCharNumeric(sCommand[0]))
{ {
switch (CharToLower(sCommand[0])) switch (CharToLower(sCommand[0]))
{ {
case 'd': case 'd':
{ {
iValue = 0; iValue = 0;
} }
case 'e': case 'e':
{ {
iValue = 1; iValue = 1;
} }
} }
} }
else else
{ {
iValue = StringToInt(sCommand); iValue = StringToInt(sCommand);
} }
if (!GetCmdArg(1, sCommand, sizeof(sCommand))) if (!GetCmdArg(1, sCommand, sizeof(sCommand)))
{ {
return Plugin_Handled; return Plugin_Handled;
} }
switch (iValue) switch (iValue)
{ {
case 0: case 0:
{ {
RemoveFromTrie(g_hGlobalTrie, sCommand); RemoveFromTrie(g_hGlobalTrie, sCommand);
if (client) if (client)
{ {
ReplyToCommand(client, "%sRemoved ConVar: %s", PLUGIN_PREFIX, sCommand); ReplyToCommand(client, "%sRemoved ConVar: %s", PLUGIN_PREFIX, sCommand);
} }
} }
case 1: case 1:
{ {
SetTrieValue(g_hGlobalTrie, sCommand, 1, true); SetTrieValue(g_hGlobalTrie, sCommand, 1, true);
if (client) if (client)
{ {
ReplyToCommand(client, "%sAdded Hook for ConVar: %s", PLUGIN_PREFIX, sCommand); ReplyToCommand(client, "%sAdded Hook for ConVar: %s", PLUGIN_PREFIX, sCommand);
} }
} }
default: default:
{ {
ReplyToCommand(client, "%sIllegal Input for Enabled/Disabled with ConVar: %s", PLUGIN_PREFIX, sCommand); ReplyToCommand(client, "%sIllegal Input for Enabled/Disabled with ConVar: %s", PLUGIN_PREFIX, sCommand);
} }
} }
return Plugin_Handled; return Plugin_Handled;
} }
public Action:Event_ServerCvar(Handle:event, const String:name[], bool:dontBroadcast) public Action:Event_ServerCvar(Handle:event, const String:name[], bool:dontBroadcast)
{ {
decl String:sConVarName[64]; decl String:sConVarName[64];
new iValue; new iValue;
GetEventString(event, "cvarname", sConVarName, sizeof(sConVarName)); GetEventString(event, "cvarname", sConVarName, sizeof(sConVarName));
return (GetTrieValue(g_hGlobalTrie, sConVarName, iValue) && iValue) ? Plugin_Handled : Plugin_Continue; return (GetTrieValue(g_hGlobalTrie, sConVarName, iValue) && iValue) ? Plugin_Handled : Plugin_Continue;
} }

File diff suppressed because it is too large Load Diff

View File

@ -31,19 +31,19 @@ public void OnPluginStart()
SetFailState("Couldn't load \"FixPointTeleport.games\" game config!"); SetFailState("Couldn't load \"FixPointTeleport.games\" game config!");
return; return;
} }
// CBaseCombatWeapon::FallInit() // CBaseCombatWeapon::FallInit()
StartPrepSDKCall(SDKCall_Entity); StartPrepSDKCall(SDKCall_Entity);
if (!PrepSDKCall_SetFromConf(hGameConf, SDKConf_Virtual, "FallInit")) if (!PrepSDKCall_SetFromConf(hGameConf, SDKConf_Virtual, "FallInit"))
{ {
CloseHandle(hGameConf); CloseHandle(hGameConf);
SetFailState("PrepSDKCall_SetFromConf(hGameConf, SDKConf_Virtual, \"FallInit\") failed!"); SetFailState("PrepSDKCall_SetFromConf(hGameConf, SDKConf_Virtual, \"FallInit\") failed!");
return; return;
} }
hFallInit = EndPrepSDKCall(); hFallInit = EndPrepSDKCall();
// CBaseEntity::Teleport(Vector const*, QAngle const*, Vector const*) // CBaseEntity::Teleport(Vector const*, QAngle const*, Vector const*)
int iOffset; int iOffset;
if ((iOffset = GameConfGetOffset(hGameConf, "Teleport")) == -1) if ((iOffset = GameConfGetOffset(hGameConf, "Teleport")) == -1)
@ -52,25 +52,25 @@ public void OnPluginStart()
SetFailState("GameConfGetOffset(hGameConf, \"Teleport\") failed!"); SetFailState("GameConfGetOffset(hGameConf, \"Teleport\") failed!");
return; return;
} }
if ((hTeleport = DHookCreate(iOffset, HookType_Entity, ReturnType_Void, ThisPointer_CBaseEntity, OnEntityTeleport)) == INVALID_HANDLE) if ((hTeleport = DHookCreate(iOffset, HookType_Entity, ReturnType_Void, ThisPointer_CBaseEntity, OnEntityTeleport)) == INVALID_HANDLE)
{ {
CloseHandle(hGameConf); CloseHandle(hGameConf);
SetFailState("DHookCreate(iOffset, HookType_Entity, ReturnType_Void, ThisPointer_CBaseEntity, OnEntityTeleport) failed!"); SetFailState("DHookCreate(iOffset, HookType_Entity, ReturnType_Void, ThisPointer_CBaseEntity, OnEntityTeleport) failed!");
return; return;
} }
DHookAddParam(hTeleport, HookParamType_VectorPtr); DHookAddParam(hTeleport, HookParamType_VectorPtr);
DHookAddParam(hTeleport, HookParamType_ObjectPtr); DHookAddParam(hTeleport, HookParamType_ObjectPtr);
DHookAddParam(hTeleport, HookParamType_VectorPtr); DHookAddParam(hTeleport, HookParamType_VectorPtr);
// Late load. // Late load.
int entity = INVALID_ENT_REFERENCE; int entity = INVALID_ENT_REFERENCE;
while ((entity = FindEntityByClassname(entity, "weapon_*")) != INVALID_ENT_REFERENCE) while ((entity = FindEntityByClassname(entity, "weapon_*")) != INVALID_ENT_REFERENCE)
{ {
OnEntityCreated(entity, "weapon_*"); OnEntityCreated(entity, "weapon_*");
} }
CloseHandle(hGameConf); CloseHandle(hGameConf);
} }
@ -95,7 +95,7 @@ public MRESReturn OnEntityTeleport(int entity, Handle hParams)
// Dont reinitialize, if we dont have spawnflags or are missing the start constrained spawnflag. // Dont reinitialize, if we dont have spawnflags or are missing the start constrained spawnflag.
if (!HasEntProp(entity, Prop_Data, "m_spawnflags") || (GetEntProp(entity, Prop_Data, "m_spawnflags") & SF_WEAPON_START_CONSTRAINED) == 0) if (!HasEntProp(entity, Prop_Data, "m_spawnflags") || (GetEntProp(entity, Prop_Data, "m_spawnflags") & SF_WEAPON_START_CONSTRAINED) == 0)
return; return;
SDKCall(hFallInit, entity); SDKCall(hFallInit, entity);
} }
} }

View File

@ -134,7 +134,7 @@ public Action Command_ForceInput(int client, int args)
AcceptEntityInput(entity, sArguments[1], client, client); AcceptEntityInput(entity, sArguments[1], client, client);
ReplyToCommand(client, "[SM] Input successful."); ReplyToCommand(client, "[SM] Input successful.");
char sClassname[64]; char sClassname[64];
char sTargetname[64]; char sTargetname[64];
GetEntPropString(entity, Prop_Data, "m_iClassname", sClassname, sizeof(sClassname)); GetEntPropString(entity, Prop_Data, "m_iClassname", sClassname, sizeof(sClassname));
@ -157,7 +157,7 @@ public Action Command_ForceInput(int client, int args)
AcceptEntityInput(entity, sArguments[1], client, client); AcceptEntityInput(entity, sArguments[1], client, client);
ReplyToCommand(client, "[SM] Input successful."); ReplyToCommand(client, "[SM] Input successful.");
char sClassname[64]; char sClassname[64];
char sTargetname[64]; char sTargetname[64];
GetEntPropString(entity, Prop_Data, "m_iClassname", sClassname, sizeof(sClassname)); GetEntPropString(entity, Prop_Data, "m_iClassname", sClassname, sizeof(sClassname));

View File

@ -239,7 +239,7 @@ public void RequestFrame_ClientSpawnPost(int client)
int ent = GivePlayerItem(client, "weapon_smokegrenade"); int ent = GivePlayerItem(client, "weapon_smokegrenade");
EquipPlayerWeapon(client, ent); EquipPlayerWeapon(client, ent);
//PrintToChatAll("%N spawned in and got a smoke", client); //PrintToChatAll("%N spawned in and got a smoke", client);
char sHumanClassName[64]; char sHumanClassName[64];

View File

@ -1,7 +1,7 @@
#include <sourcemod> #include <sourcemod>
#pragma semicolon 1 #pragma semicolon 1
public Plugin:myinfo = public Plugin:myinfo =
{ {
name = "Players count in hostname", name = "Players count in hostname",
author = "D1maxa", author = "D1maxa",
@ -18,7 +18,7 @@ new Handle:formatted_hostname = INVALID_HANDLE;
public OnPluginStart() public OnPluginStart()
{ {
hostname = FindConVar("hostname"); hostname = FindConVar("hostname");
sv_visiblemaxplayers = FindConVar("sv_visiblemaxplayers"); sv_visiblemaxplayers = FindConVar("sv_visiblemaxplayers");
formatted_hostname=CreateConVar("sm_formatted_hostname", "My Server %d/%d", "Formatted string for dynamic hostname",FCVAR_PLUGIN); formatted_hostname=CreateConVar("sm_formatted_hostname", "My Server %d/%d", "Formatted string for dynamic hostname",FCVAR_PLUGIN);
} }
@ -26,12 +26,12 @@ public OnMapStart()
{ {
g_NumClients=0; g_NumClients=0;
} }
public OnConfigsExecuted() public OnConfigsExecuted()
{ {
SetNumberOfPlayersInHostname(); SetNumberOfPlayersInHostname();
} }
public OnClientConnected(client) public OnClientConnected(client)
{ {
if(!IsFakeClient(client)) if(!IsFakeClient(client))
@ -44,7 +44,7 @@ public OnClientConnected(client)
public OnClientDisconnect(client) public OnClientDisconnect(client)
{ {
if(!IsFakeClient(client)) if(!IsFakeClient(client))
{ {
g_NumClients--; g_NumClients--;
SetNumberOfPlayersInHostname(); SetNumberOfPlayersInHostname();
} }

View File

@ -12,7 +12,7 @@ Handle g_hCVar_PushStrength = INVALID_HANDLE;
Handle g_hCVar_PushScale = INVALID_HANDLE; Handle g_hCVar_PushScale = INVALID_HANDLE;
public Plugin myinfo = public Plugin myinfo =
{ {
name = "PushNades", name = "PushNades",
author = "Neon", author = "Neon",
@ -22,37 +22,37 @@ public Plugin myinfo =
} }
public void OnPluginStart() public void OnPluginStart()
{ {
g_hCVar_PushNadesEnabled = CreateConVar("sm_hegrenade_push_enabled", "0", "Enable PushBack for HE-Grenades", 0, true, 0.0, true, 1.0); g_hCVar_PushNadesEnabled = CreateConVar("sm_hegrenade_push_enabled", "0", "Enable PushBack for HE-Grenades", 0, true, 0.0, true, 1.0);
g_hCVar_PushScale = CreateConVar("sm_hegrenade_push_scale", "0", "Make the push scale with the distance to the explosion", 0, true, 0.0, true, 1.0); g_hCVar_PushScale = CreateConVar("sm_hegrenade_push_scale", "0", "Make the push scale with the distance to the explosion", 0, true, 0.0, true, 1.0);
g_hCVar_PushRange = CreateConVar("sm_hegrenade_push_range", "500", "Range arround Explosion in which Zombies are affected by the push."); g_hCVar_PushRange = CreateConVar("sm_hegrenade_push_range", "500", "Range arround Explosion in which Zombies are affected by the push.");
g_hCVar_PushStrength = CreateConVar("sm_hegrenade_push_strength", "2500", "How strong the HE-Grenade pushes back"); g_hCVar_PushStrength = CreateConVar("sm_hegrenade_push_strength", "2500", "How strong the HE-Grenade pushes back");
HookEvent("hegrenade_detonate", OnHEDetonate); HookEvent("hegrenade_detonate", OnHEDetonate);
} }
public void OnMapStart() public void OnMapStart()
{ {
} }
public Action OnHEDetonate(Event hEvent, const char[] sEvent, bool bDontBroadcast) public Action OnHEDetonate(Event hEvent, const char[] sEvent, bool bDontBroadcast)
{ {
if (!GetConVarBool(g_hCVar_PushNadesEnabled)) if (!GetConVarBool(g_hCVar_PushNadesEnabled))
return Plugin_Continue; return Plugin_Continue;
float fNadeOrigin[3]; float fNadeOrigin[3];
fNadeOrigin[0] = hEvent.GetFloat("x"); fNadeOrigin[0] = hEvent.GetFloat("x");
fNadeOrigin[1] = hEvent.GetFloat("y"); fNadeOrigin[1] = hEvent.GetFloat("y");
fNadeOrigin[2] = hEvent.GetFloat("z"); fNadeOrigin[2] = hEvent.GetFloat("z");
int iOwner = GetClientOfUserId(hEvent.GetInt("userid")); int iOwner = GetClientOfUserId(hEvent.GetInt("userid"));
if (!IsValidClient(iOwner, false)) if (!IsValidClient(iOwner, false))
return Plugin_Continue; return Plugin_Continue;
if (!IsPlayerAlive(iOwner) || !ZR_IsClientHuman(iOwner)) if (!IsPlayerAlive(iOwner) || !ZR_IsClientHuman(iOwner))
return Plugin_Continue; return Plugin_Continue;
for (int client = 1; client <= MaxClients; client++) for (int client = 1; client <= MaxClients; client++)
{ {
if (IsValidClient(client, false)) if (IsValidClient(client, false))
@ -60,43 +60,43 @@ public Action OnHEDetonate(Event hEvent, const char[] sEvent, bool bDontBroadcas
if (IsPlayerAlive(client) && ZR_IsClientZombie(client)) if (IsPlayerAlive(client) && ZR_IsClientZombie(client))
{ {
float fZombieOrigin[3]; float fZombieOrigin[3];
GetClientAbsOrigin(client, fZombieOrigin); GetClientAbsOrigin(client, fZombieOrigin);
float fDistance = GetVectorDistance(fZombieOrigin, fNadeOrigin, false); float fDistance = GetVectorDistance(fZombieOrigin, fNadeOrigin, false);
float fMaxRange = GetConVarFloat(g_hCVar_PushRange); float fMaxRange = GetConVarFloat(g_hCVar_PushRange);
if (fDistance <= fMaxRange) if (fDistance <= fMaxRange)
{ {
float fOwnerOrigin[3]; float fOwnerOrigin[3];
GetClientAbsOrigin(iOwner, fOwnerOrigin); GetClientAbsOrigin(iOwner, fOwnerOrigin);
float fPushVector[3]; float fPushVector[3];
MakeVectorFromPoints(fOwnerOrigin, fZombieOrigin, fPushVector); MakeVectorFromPoints(fOwnerOrigin, fZombieOrigin, fPushVector);
float fCurrentVector[3]; float fCurrentVector[3];
//GetEntPropVector(iOwner, Prop_Data, "m_vecVelocity", fCurrentVector); //GetEntPropVector(iOwner, Prop_Data, "m_vecVelocity", fCurrentVector);
float fPushStrength = GetConVarFloat(g_hCVar_PushStrength); float fPushStrength = GetConVarFloat(g_hCVar_PushStrength);
float fDistanceScalingFactor = 1.0; float fDistanceScalingFactor = 1.0;
if (GetConVarBool(g_hCVar_PushScale)) if (GetConVarBool(g_hCVar_PushScale))
fDistanceScalingFactor = 1.0 - ((1.0/fMaxRange) * fDistance); fDistanceScalingFactor = 1.0 - ((1.0/fMaxRange) * fDistance);
NormalizeVector(fPushVector, fPushVector); NormalizeVector(fPushVector, fPushVector);
fPushVector[0] *= fPushStrength * fDistanceScalingFactor; fPushVector[0] *= fPushStrength * fDistanceScalingFactor;
fPushVector[1] *= fPushStrength * fDistanceScalingFactor; fPushVector[1] *= fPushStrength * fDistanceScalingFactor;
fPushVector[2] *= fPushStrength * fDistanceScalingFactor; fPushVector[2] *= fPushStrength * fDistanceScalingFactor;
fPushVector[0] += fCurrentVector[0]; fPushVector[0] += fCurrentVector[0];
fPushVector[1] += fCurrentVector[1]; fPushVector[1] += fCurrentVector[1];
fPushVector[2] += fCurrentVector[2]; fPushVector[2] += fCurrentVector[2];
TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, fPushVector); TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, fPushVector);
} }
} }
} }
} }
return Plugin_Continue; return Plugin_Continue;
} }

View File

@ -1,165 +1,165 @@
#pragma semicolon 1 #pragma semicolon 1
#include <sourcemod> #include <sourcemod>
#pragma newdecls required #pragma newdecls required
bool g_bProtoBuf; bool g_bProtoBuf;
bool g_bBlocked[MAXPLAYERS + 1]; bool g_bBlocked[MAXPLAYERS + 1];
int g_iMessageClient = -1; int g_iMessageClient = -1;
public Plugin myinfo = public Plugin myinfo =
{ {
name = "RadioMute", name = "RadioMute",
description = "Very simple plugin to block players from using the in-game radio in supported games.", description = "Very simple plugin to block players from using the in-game radio in supported games.",
author = "Obus", author = "Obus",
version = "1.0.1", version = "1.0.1",
url = "" url = ""
} }
public void OnPluginStart() public void OnPluginStart()
{ {
LoadTranslations("common.phrases"); LoadTranslations("common.phrases");
if(GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available && GetUserMessageType() == UM_Protobuf) if(GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available && GetUserMessageType() == UM_Protobuf)
g_bProtoBuf = true; g_bProtoBuf = true;
UserMsg RadioText = GetUserMessageId("RadioText"); UserMsg RadioText = GetUserMessageId("RadioText");
if (RadioText == INVALID_MESSAGE_ID) if (RadioText == INVALID_MESSAGE_ID)
SetFailState("This game does not support the \"RadioText\" UserMessage."); SetFailState("This game does not support the \"RadioText\" UserMessage.");
UserMsg SendAudio = GetUserMessageId("SendAudio"); UserMsg SendAudio = GetUserMessageId("SendAudio");
if (SendAudio == INVALID_MESSAGE_ID) if (SendAudio == INVALID_MESSAGE_ID)
SetFailState("This game does not support the \"SendAudio\" UserMessage."); SetFailState("This game does not support the \"SendAudio\" UserMessage.");
RegAdminCmd("sm_radiomute", Command_RadioMute, ADMFLAG_BAN, "Block a client from using the in-game radio."); RegAdminCmd("sm_radiomute", Command_RadioMute, ADMFLAG_BAN, "Block a client from using the in-game radio.");
RegAdminCmd("sm_radiounmute", Command_RadioUnmute, ADMFLAG_BAN, "Unblock a client from using the in-game radio."); RegAdminCmd("sm_radiounmute", Command_RadioUnmute, ADMFLAG_BAN, "Unblock a client from using the in-game radio.");
HookUserMessage(RadioText, _hkRadioText, true); HookUserMessage(RadioText, _hkRadioText, true);
HookUserMessage(SendAudio, _hkSendAudio, true); HookUserMessage(SendAudio, _hkSendAudio, true);
} }
public void OnClientDisconnect(int client) public void OnClientDisconnect(int client)
{ {
g_bBlocked[client] = false; g_bBlocked[client] = false;
} }
public Action Command_RadioMute(int client, int argc) public Action Command_RadioMute(int client, int argc)
{ {
if (argc < 1) if (argc < 1)
{ {
ReplyToCommand(client, "[SM] Usage: sm_radiomute <target>"); ReplyToCommand(client, "[SM] Usage: sm_radiomute <target>");
return Plugin_Handled; return Plugin_Handled;
} }
char sArgs[64]; char sArgs[64];
char sTargetName[MAX_TARGET_LENGTH]; char sTargetName[MAX_TARGET_LENGTH];
int iTargets[MAXPLAYERS]; int iTargets[MAXPLAYERS];
int iTargetCount; int iTargetCount;
bool bIsML; bool bIsML;
GetCmdArg(1, sArgs, sizeof(sArgs)); GetCmdArg(1, sArgs, sizeof(sArgs));
if ((iTargetCount = ProcessTargetString(sArgs, client, iTargets, MAXPLAYERS, COMMAND_FILTER_CONNECTED, sTargetName, sizeof(sTargetName), bIsML)) <= 0) if ((iTargetCount = ProcessTargetString(sArgs, client, iTargets, MAXPLAYERS, COMMAND_FILTER_CONNECTED, sTargetName, sizeof(sTargetName), bIsML)) <= 0)
{ {
ReplyToTargetError(client, iTargetCount); ReplyToTargetError(client, iTargetCount);
return Plugin_Handled; return Plugin_Handled;
} }
for (int i = 0; i < iTargetCount; i++) for (int i = 0; i < iTargetCount; i++)
{ {
g_bBlocked[iTargets[i]] = true; g_bBlocked[iTargets[i]] = true;
} }
ShowActivity2(client, "\x01[SM] \x04", "\x01Radio muted \x04%s\x01", sTargetName); ShowActivity2(client, "\x01[SM] \x04", "\x01Radio muted \x04%s\x01", sTargetName);
LogAction(client, -1, "\"%L\" radio muted \"%s\"", client, sTargetName); LogAction(client, -1, "\"%L\" radio muted \"%s\"", client, sTargetName);
return Plugin_Handled; return Plugin_Handled;
} }
public Action Command_RadioUnmute(int client, int argc) public Action Command_RadioUnmute(int client, int argc)
{ {
if (argc < 1) if (argc < 1)
{ {
ReplyToCommand(client, "[SM] Usage: sm_radiounmute <target>"); ReplyToCommand(client, "[SM] Usage: sm_radiounmute <target>");
return Plugin_Handled; return Plugin_Handled;
} }
char sArgs[64]; char sArgs[64];
char sTargetName[MAX_TARGET_LENGTH]; char sTargetName[MAX_TARGET_LENGTH];
int iTargets[MAXPLAYERS]; int iTargets[MAXPLAYERS];
int iTargetCount; int iTargetCount;
bool bIsML; bool bIsML;
GetCmdArg(1, sArgs, sizeof(sArgs)); GetCmdArg(1, sArgs, sizeof(sArgs));
if ((iTargetCount = ProcessTargetString(sArgs, client, iTargets, MAXPLAYERS, COMMAND_FILTER_CONNECTED, sTargetName, sizeof(sTargetName), bIsML)) <= 0) if ((iTargetCount = ProcessTargetString(sArgs, client, iTargets, MAXPLAYERS, COMMAND_FILTER_CONNECTED, sTargetName, sizeof(sTargetName), bIsML)) <= 0)
{ {
ReplyToTargetError(client, iTargetCount); ReplyToTargetError(client, iTargetCount);
return Plugin_Handled; return Plugin_Handled;
} }
for (int i = 0; i < iTargetCount; i++) for (int i = 0; i < iTargetCount; i++)
{ {
g_bBlocked[iTargets[i]] = false; g_bBlocked[iTargets[i]] = false;
} }
ShowActivity2(client, "\x01[SM] \x04", "\x01Radio unmuted \x04%s\x01", sTargetName); ShowActivity2(client, "\x01[SM] \x04", "\x01Radio unmuted \x04%s\x01", sTargetName);
LogAction(client, -1, "\"%L\" radio unmuted \"%s\"", client, sTargetName); LogAction(client, -1, "\"%L\" radio unmuted \"%s\"", client, sTargetName);
return Plugin_Handled; return Plugin_Handled;
} }
public Action _hkRadioText(UserMsg msg_id, Handle bf, const int[] players, int playersNum, bool reliable, bool init) public Action _hkRadioText(UserMsg msg_id, Handle bf, const int[] players, int playersNum, bool reliable, bool init)
{ {
if (g_bProtoBuf) if (g_bProtoBuf)
{ {
g_iMessageClient = PbReadInt(bf, "client"); g_iMessageClient = PbReadInt(bf, "client");
} }
else else
{ {
BfReadByte(bf); BfReadByte(bf);
g_iMessageClient = BfReadByte(bf); g_iMessageClient = BfReadByte(bf);
} }
if (g_bBlocked[g_iMessageClient]) if (g_bBlocked[g_iMessageClient])
{ {
return Plugin_Handled; return Plugin_Handled;
} }
return Plugin_Continue; return Plugin_Continue;
} }
public Action _hkSendAudio(UserMsg msg_id, Handle bf, const int[] players, int playersNum, bool reliable, bool init) public Action _hkSendAudio(UserMsg msg_id, Handle bf, const int[] players, int playersNum, bool reliable, bool init)
{ {
if (g_iMessageClient == -1) if (g_iMessageClient == -1)
return Plugin_Continue; return Plugin_Continue;
char sSound[128]; char sSound[128];
if(g_bProtoBuf) if(g_bProtoBuf)
PbReadString(bf, "radio_sound", sSound, sizeof(sSound)); PbReadString(bf, "radio_sound", sSound, sizeof(sSound));
else else
BfReadString(bf, sSound, sizeof(sSound), false); BfReadString(bf, sSound, sizeof(sSound), false);
if (strncmp(sSound[6], "lock", 4, false) == 0) if (strncmp(sSound[6], "lock", 4, false) == 0)
return Plugin_Continue; return Plugin_Continue;
if (g_bBlocked[g_iMessageClient]) if (g_bBlocked[g_iMessageClient])
{ {
g_iMessageClient = -1; g_iMessageClient = -1;
return Plugin_Handled; return Plugin_Handled;
} }
g_iMessageClient = -1; g_iMessageClient = -1;
return Plugin_Continue; return Plugin_Continue;
} }

View File

@ -1,36 +1,36 @@
#if defined _TeamManager_include #if defined _TeamManager_include
#endinput #endinput
#endif #endif
#define _TeamManager_include #define _TeamManager_include
/** /**
* Called when warmup ends * Called when warmup ends
* *
* @return None * @return None
*/ */
forward void TeamManager_WarmupEnd(); forward void TeamManager_WarmupEnd();
/** /**
* Returns the status of warmup * Returns the status of warmup
* *
* @return bool inwarmup * @return bool inwarmup
*/ */
native bool TeamManager_InWarmup(); native bool TeamManager_InWarmup();
public SharedPlugin __pl_TeamManager = public SharedPlugin __pl_TeamManager =
{ {
name = "TeamManager", name = "TeamManager",
file = "TeamManager.smx", file = "TeamManager.smx",
#if defined REQUIRE_PLUGIN #if defined REQUIRE_PLUGIN
required = 1 required = 1
#else #else
required = 0 required = 0
#endif #endif
}; };
#if !defined REQUIRE_PLUGIN #if !defined REQUIRE_PLUGIN
public void __pl_TeamManager_SetNTVOptional() public void __pl_TeamManager_SetNTVOptional()
{ {
MarkNativeAsOptional("TeamManager_InWarmup"); MarkNativeAsOptional("TeamManager_InWarmup");
} }
#endif #endif

View File

@ -49,11 +49,11 @@ public Plugin myinfo =
public APLRes AskPluginLoad2(Handle hMyself, bool bLate, char[] sError, int errorSize) public APLRes AskPluginLoad2(Handle hMyself, bool bLate, char[] sError, int errorSize)
{ {
g_bLate = bLate; g_bLate = bLate;
CreateNative("EW_GetItemCount", Native_GetItemCount); CreateNative("EW_GetItemCount", Native_GetItemCount);
CreateNative("EW_GetItemArray", Native_GetItemArray); CreateNative("EW_GetItemArray", Native_GetItemArray);
CreateNative("EW_SetItemArray", Native_SetItemArray); CreateNative("EW_SetItemArray", Native_SetItemArray);
RegPluginLibrary("entWatch-core"); RegPluginLibrary("entWatch-core");
return APLRes_Success; return APLRes_Success;
} }
@ -68,23 +68,23 @@ public void OnPluginStart()
g_hFwd_OnClientItemPickup = CreateGlobalForward("EW_OnClientItemPickup", ET_Ignore, Param_Array, Param_Cell, Param_Cell); g_hFwd_OnClientItemPickup = CreateGlobalForward("EW_OnClientItemPickup", ET_Ignore, Param_Array, Param_Cell, Param_Cell);
g_hFwd_OnClientItemActivate = CreateGlobalForward("EW_OnClientItemActivate", ET_Ignore, Param_Array, Param_Cell, Param_Cell); g_hFwd_OnClientItemActivate = CreateGlobalForward("EW_OnClientItemActivate", ET_Ignore, Param_Array, Param_Cell, Param_Cell);
g_hFwd_OnClientItemDisconnect = CreateGlobalForward("EW_OnClientItemDisconnect", ET_Ignore, Param_Array, Param_Cell, Param_Cell); g_hFwd_OnClientItemDisconnect = CreateGlobalForward("EW_OnClientItemDisconnect", ET_Ignore, Param_Array, Param_Cell, Param_Cell);
g_hFwd_OnClientItemCanPickup = CreateGlobalForward("EW_OnClientItemCanPickup", ET_Hook, Param_Array, Param_Cell, Param_Cell); g_hFwd_OnClientItemCanPickup = CreateGlobalForward("EW_OnClientItemCanPickup", ET_Hook, Param_Array, Param_Cell, Param_Cell);
g_hFwd_OnClientItemCanActivate = CreateGlobalForward("EW_OnClientItemCanActivate", ET_Hook, Param_Array, Param_Cell, Param_Cell); g_hFwd_OnClientItemCanActivate = CreateGlobalForward("EW_OnClientItemCanActivate", ET_Hook, Param_Array, Param_Cell, Param_Cell);
g_hArray_Items = new ArrayList(512); g_hArray_Items = new ArrayList(512);
g_hArray_Config = new ArrayList(512); g_hArray_Config = new ArrayList(512);
HookEvent("player_death", OnClientDeath); HookEvent("player_death", OnClientDeath);
HookEvent("round_start", OnRoundStart); HookEvent("round_start", OnRoundStart);
if (g_bLate) if (g_bLate)
{ {
for (int client = 1; client <= MaxClients; client++) for (int client = 1; client <= MaxClients; client++)
{ {
if (!IsClientInGame(client) || IsFakeClient(client)) if (!IsClientInGame(client) || IsFakeClient(client))
continue; continue;
SDKHook(client, SDKHook_WeaponEquipPost, OnWeaponPickup); SDKHook(client, SDKHook_WeaponEquipPost, OnWeaponPickup);
SDKHook(client, SDKHook_WeaponDropPost, OnWeaponDrop); SDKHook(client, SDKHook_WeaponDropPost, OnWeaponDrop);
SDKHook(client, SDKHook_WeaponCanUse, OnWeaponTouch); SDKHook(client, SDKHook_WeaponCanUse, OnWeaponTouch);
@ -99,25 +99,25 @@ public void OnMapStart()
{ {
g_hArray_Items.Clear(); g_hArray_Items.Clear();
g_hArray_Config.Clear(); g_hArray_Config.Clear();
char sCurrentMap[128]; char sCurrentMap[128];
GetCurrentMap(sCurrentMap, sizeof(sCurrentMap)); GetCurrentMap(sCurrentMap, sizeof(sCurrentMap));
String_ToLower(sCurrentMap, sCurrentMap, sizeof(sCurrentMap)); String_ToLower(sCurrentMap, sCurrentMap, sizeof(sCurrentMap));
char sFilePathDefault[PLATFORM_MAX_PATH]; char sFilePathDefault[PLATFORM_MAX_PATH];
char sFilePathOverride[PLATFORM_MAX_PATH]; char sFilePathOverride[PLATFORM_MAX_PATH];
BuildPath(Path_SM, sFilePathDefault, sizeof(sFilePathDefault), "configs/entwatch/%s.cfg", sCurrentMap); BuildPath(Path_SM, sFilePathDefault, sizeof(sFilePathDefault), "configs/entwatch/%s.cfg", sCurrentMap);
BuildPath(Path_SM, sFilePathOverride, sizeof(sFilePathOverride), "configs/entwatch/%s.override.cfg", sCurrentMap); BuildPath(Path_SM, sFilePathOverride, sizeof(sFilePathOverride), "configs/entwatch/%s.override.cfg", sCurrentMap);
KeyValues hConfig = new KeyValues("items"); KeyValues hConfig = new KeyValues("items");
if (FileExists(sFilePathOverride)) if (FileExists(sFilePathOverride))
{ {
if (!hConfig.ImportFromFile(sFilePathOverride)) if (!hConfig.ImportFromFile(sFilePathOverride))
{ {
LogMessage("Unable to load config \"%s\"!", sFilePathOverride); LogMessage("Unable to load config \"%s\"!", sFilePathOverride);
delete hConfig; delete hConfig;
return; return;
} }
@ -128,13 +128,13 @@ public void OnMapStart()
if (!hConfig.ImportFromFile(sFilePathDefault)) if (!hConfig.ImportFromFile(sFilePathDefault))
{ {
LogMessage("Unable to load config \"%s\"!", sFilePathDefault); LogMessage("Unable to load config \"%s\"!", sFilePathDefault);
delete hConfig; delete hConfig;
return; return;
} }
else LogMessage("Loaded config \"%s\"", sFilePathDefault); else LogMessage("Loaded config \"%s\"", sFilePathDefault);
} }
if (hConfig.GotoFirstSubKey()) if (hConfig.GotoFirstSubKey())
{ {
do do
@ -144,7 +144,7 @@ public void OnMapStart()
hConfig.GetString("short", itemArray[item_short], sizeof(itemArray[item_short])); hConfig.GetString("short", itemArray[item_short], sizeof(itemArray[item_short]));
hConfig.GetString("color", itemArray[item_color], sizeof(itemArray[item_color])); hConfig.GetString("color", itemArray[item_color], sizeof(itemArray[item_color]));
hConfig.GetString("filter", itemArray[item_filter], sizeof(itemArray[item_filter])); hConfig.GetString("filter", itemArray[item_filter], sizeof(itemArray[item_filter]));
itemArray[item_weaponid] = hConfig.GetNum("weaponid"); itemArray[item_weaponid] = hConfig.GetNum("weaponid");
itemArray[item_buttonid] = hConfig.GetNum("buttonid"); itemArray[item_buttonid] = hConfig.GetNum("buttonid");
itemArray[item_triggerid] = hConfig.GetNum("triggerid"); itemArray[item_triggerid] = hConfig.GetNum("triggerid");
@ -152,12 +152,12 @@ public void OnMapStart()
itemArray[item_mode] = hConfig.GetNum("mode"); itemArray[item_mode] = hConfig.GetNum("mode");
itemArray[item_maxuses] = hConfig.GetNum("maxuses"); itemArray[item_maxuses] = hConfig.GetNum("maxuses");
itemArray[item_cooldown] = hConfig.GetNum("cooldown"); itemArray[item_cooldown] = hConfig.GetNum("cooldown");
g_hArray_Config.PushArray(itemArray, sizeof(itemArray)); g_hArray_Config.PushArray(itemArray, sizeof(itemArray));
} }
while (hConfig.GotoNextKey()); while (hConfig.GotoNextKey());
} }
delete hConfig; delete hConfig;
return; return;
} }
@ -173,7 +173,7 @@ public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast)
{ {
any itemArray[items]; any itemArray[items];
g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray));
if (itemArray[item_owned] && itemArray[item_owner] >= 0) if (itemArray[item_owned] && itemArray[item_owner] >= 0)
g_hArray_Items.Erase(index); g_hArray_Items.Erase(index);
} }
@ -202,19 +202,19 @@ public void OnEntitySpawned(int entity)
{ {
any itemArray[items]; any itemArray[items];
g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray));
if (RegisterItem(itemArray, entity)) if (RegisterItem(itemArray, entity))
{ {
g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray));
return; return;
} }
} }
for (int index; index < g_hArray_Config.Length; index++) for (int index; index < g_hArray_Config.Length; index++)
{ {
any itemArray[items]; any itemArray[items];
g_hArray_Config.GetArray(index, itemArray, sizeof(itemArray)); g_hArray_Config.GetArray(index, itemArray, sizeof(itemArray));
if (RegisterItem(itemArray, entity)) if (RegisterItem(itemArray, entity))
{ {
g_hArray_Items.PushArray(itemArray, sizeof(itemArray)); g_hArray_Items.PushArray(itemArray, sizeof(itemArray));
@ -245,7 +245,7 @@ stock bool RegisterItem(any[] itemArray, int entity)
(itemArray[item_weapon] && Entity_GetParent(entity) == itemArray[item_weapon]))) (itemArray[item_weapon] && Entity_GetParent(entity) == itemArray[item_weapon])))
{ {
SDKHook(entity, SDKHook_Use, OnButtonPress); SDKHook(entity, SDKHook_Use, OnButtonPress);
itemArray[item_button] = entity; itemArray[item_button] = entity;
return true; return true;
} }
@ -258,7 +258,7 @@ stock bool RegisterItem(any[] itemArray, int entity)
SDKHook(entity, SDKHook_StartTouch, OnTriggerTouch); SDKHook(entity, SDKHook_StartTouch, OnTriggerTouch);
SDKHook(entity, SDKHook_EndTouch, OnTriggerTouch); SDKHook(entity, SDKHook_EndTouch, OnTriggerTouch);
SDKHook(entity, SDKHook_Touch, OnTriggerTouch); SDKHook(entity, SDKHook_Touch, OnTriggerTouch);
itemArray[item_trigger] = entity; itemArray[item_trigger] = entity;
return true; return true;
} }
@ -278,25 +278,25 @@ public void OnEntityDestroyed(int entity)
{ {
any itemArray[items]; any itemArray[items];
g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray));
if (itemArray[item_weapon] && itemArray[item_weapon] == entity) if (itemArray[item_weapon] && itemArray[item_weapon] == entity)
{ {
g_hArray_Items.Erase(index); g_hArray_Items.Erase(index);
return; return;
} }
if (itemArray[item_button] && itemArray[item_button] == entity) if (itemArray[item_button] && itemArray[item_button] == entity)
{ {
itemArray[item_button] = INVALID_ENT_REFERENCE; itemArray[item_button] = INVALID_ENT_REFERENCE;
g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray));
return; return;
} }
if (itemArray[item_trigger] && itemArray[item_trigger] == entity) if (itemArray[item_trigger] && itemArray[item_trigger] == entity)
{ {
itemArray[item_trigger] = INVALID_ENT_REFERENCE; itemArray[item_trigger] = INVALID_ENT_REFERENCE;
g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray));
return; return;
} }
@ -328,18 +328,18 @@ public void OnClientDisconnect(int client)
{ {
any itemArray[items]; any itemArray[items];
g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray));
if (itemArray[item_owned] && itemArray[item_owner] == client) if (itemArray[item_owned] && itemArray[item_owner] == client)
{ {
itemArray[item_owner] = INVALID_ENT_REFERENCE; itemArray[item_owner] = INVALID_ENT_REFERENCE;
itemArray[item_owned] = false; itemArray[item_owned] = false;
Call_StartForward(g_hFwd_OnClientItemDisconnect); Call_StartForward(g_hFwd_OnClientItemDisconnect);
Call_PushArray(itemArray, sizeof(itemArray)); Call_PushArray(itemArray, sizeof(itemArray));
Call_PushCell(client); Call_PushCell(client);
Call_PushCell(index); Call_PushCell(index);
Call_Finish(); Call_Finish();
g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray));
} }
} }
@ -352,25 +352,25 @@ public void OnClientDisconnect(int client)
public void OnClientDeath(Event hEvent, const char[] sEvent, bool bDontBroadcast) public void OnClientDeath(Event hEvent, const char[] sEvent, bool bDontBroadcast)
{ {
int client = GetClientOfUserId(hEvent.GetInt("userid")); int client = GetClientOfUserId(hEvent.GetInt("userid"));
if (Client_IsValid(client) && !IsFakeClient(client) && g_hArray_Items.Length) if (Client_IsValid(client) && !IsFakeClient(client) && g_hArray_Items.Length)
{ {
for (int index; index < g_hArray_Items.Length; index++) for (int index; index < g_hArray_Items.Length; index++)
{ {
any itemArray[items]; any itemArray[items];
g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray));
if (itemArray[item_owned] && itemArray[item_owner] == client) if (itemArray[item_owned] && itemArray[item_owner] == client)
{ {
itemArray[item_owner] = INVALID_ENT_REFERENCE; itemArray[item_owner] = INVALID_ENT_REFERENCE;
itemArray[item_owned] = false; itemArray[item_owned] = false;
Call_StartForward(g_hFwd_OnClientItemDeath); Call_StartForward(g_hFwd_OnClientItemDeath);
Call_PushArray(itemArray, sizeof(itemArray)); Call_PushArray(itemArray, sizeof(itemArray));
Call_PushCell(client); Call_PushCell(client);
Call_PushCell(index); Call_PushCell(index);
Call_Finish(); Call_Finish();
g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray));
} }
} }
@ -388,18 +388,18 @@ public Action OnWeaponPickup(int client, int weapon)
{ {
any itemArray[items]; any itemArray[items];
g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray));
if (itemArray[item_weapon] && itemArray[item_weapon] == weapon) if (itemArray[item_weapon] && itemArray[item_weapon] == weapon)
{ {
itemArray[item_owner] = client; itemArray[item_owner] = client;
itemArray[item_owned] = true; itemArray[item_owned] = true;
Call_StartForward(g_hFwd_OnClientItemPickup); Call_StartForward(g_hFwd_OnClientItemPickup);
Call_PushArray(itemArray, sizeof(itemArray)); Call_PushArray(itemArray, sizeof(itemArray));
Call_PushCell(client); Call_PushCell(client);
Call_PushCell(index); Call_PushCell(index);
Call_Finish(); Call_Finish();
g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray));
return; return;
} }
@ -418,18 +418,18 @@ public Action OnWeaponDrop(int client, int weapon)
{ {
any itemArray[items]; any itemArray[items];
g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray));
if (itemArray[item_weapon] && itemArray[item_weapon] == weapon) if (itemArray[item_weapon] && itemArray[item_weapon] == weapon)
{ {
itemArray[item_owner] = INVALID_ENT_REFERENCE; itemArray[item_owner] = INVALID_ENT_REFERENCE;
itemArray[item_owned] = false; itemArray[item_owned] = false;
Call_StartForward(g_hFwd_OnClientItemDrop); Call_StartForward(g_hFwd_OnClientItemDrop);
Call_PushArray(itemArray, sizeof(itemArray)); Call_PushArray(itemArray, sizeof(itemArray));
Call_PushCell(client); Call_PushCell(client);
Call_PushCell(index); Call_PushCell(index);
Call_Finish(); Call_Finish();
g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray));
return; return;
} }
@ -447,12 +447,12 @@ public Action OnButtonPress(int button, int client)
if (HasEntProp(button, Prop_Data, "m_bLocked") && if (HasEntProp(button, Prop_Data, "m_bLocked") &&
GetEntProp(button, Prop_Data, "m_bLocked")) GetEntProp(button, Prop_Data, "m_bLocked"))
return Plugin_Handled; return Plugin_Handled;
for (int index; index < g_hArray_Items.Length; index++) for (int index; index < g_hArray_Items.Length; index++)
{ {
any itemArray[items]; any itemArray[items];
g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray));
if (itemArray[item_button] && itemArray[item_button] == button) if (itemArray[item_button] && itemArray[item_button] == button)
{ {
if (itemArray[item_owned] && itemArray[item_owner] == client) if (itemArray[item_owned] && itemArray[item_owner] == client)
@ -463,7 +463,7 @@ public Action OnButtonPress(int button, int client)
Call_PushCell(client); Call_PushCell(client);
Call_PushCell(index); Call_PushCell(index);
Call_Finish(aResult); Call_Finish(aResult);
if ((aResult == Plugin_Continue) || (aResult == Plugin_Changed)) if ((aResult == Plugin_Continue) || (aResult == Plugin_Changed))
{ {
switch(itemArray[item_mode]) switch(itemArray[item_mode])
@ -498,7 +498,7 @@ public Action OnButtonPress(int button, int client)
if (itemArray[item_nextuse] < RoundToCeil(GetEngineTime())) if (itemArray[item_nextuse] < RoundToCeil(GetEngineTime()))
{ {
itemArray[item_uses]++; itemArray[item_uses]++;
if (itemArray[item_uses] >= itemArray[item_maxuses]) if (itemArray[item_uses] >= itemArray[item_maxuses])
{ {
itemArray[item_nextuse] = RoundToCeil(GetEngineTime()) + itemArray[item_cooldown]; itemArray[item_nextuse] = RoundToCeil(GetEngineTime()) + itemArray[item_cooldown];
@ -508,17 +508,17 @@ public Action OnButtonPress(int button, int client)
else return Plugin_Handled; else return Plugin_Handled;
} }
} }
if (itemArray[item_filter][0]) if (itemArray[item_filter][0])
Entity_SetName(client, itemArray[item_filter]); Entity_SetName(client, itemArray[item_filter]);
Call_StartForward(g_hFwd_OnClientItemActivate); Call_StartForward(g_hFwd_OnClientItemActivate);
Call_PushArray(itemArray, sizeof(itemArray)); Call_PushArray(itemArray, sizeof(itemArray));
Call_PushCell(client); Call_PushCell(client);
Call_PushCell(index); Call_PushCell(index);
Call_Finish(); Call_Finish();
} }
g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray));
return aResult; return aResult;
} }
@ -539,7 +539,7 @@ public Action OnTriggerTouch(int trigger, int client)
{ {
any itemArray[items]; any itemArray[items];
g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray));
if (itemArray[item_trigger] && itemArray[item_trigger] == trigger) if (itemArray[item_trigger] && itemArray[item_trigger] == trigger)
{ {
Action aResult; Action aResult;
@ -548,7 +548,7 @@ public Action OnTriggerTouch(int trigger, int client)
Call_PushCell(client); Call_PushCell(client);
Call_PushCell(index); Call_PushCell(index);
Call_Finish(aResult); Call_Finish(aResult);
g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray));
return aResult; return aResult;
} }
@ -568,7 +568,7 @@ public Action OnWeaponTouch(int client, int weapon)
{ {
any itemArray[items]; any itemArray[items];
g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.GetArray(index, itemArray, sizeof(itemArray));
if (itemArray[item_weapon] && itemArray[item_weapon] == weapon) if (itemArray[item_weapon] && itemArray[item_weapon] == weapon)
{ {
Action aResult; Action aResult;
@ -577,7 +577,7 @@ public Action OnWeaponTouch(int client, int weapon)
Call_PushCell(client); Call_PushCell(client);
Call_PushCell(index); Call_PushCell(index);
Call_Finish(aResult); Call_Finish(aResult);
g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray)); g_hArray_Items.SetArray(index, itemArray, sizeof(itemArray));
return aResult; return aResult;
} }
@ -600,12 +600,12 @@ public int Native_GetItemCount(Handle hPlugin, int numParams)
public int Native_GetItemArray(Handle hPlugin, int numParams) public int Native_GetItemArray(Handle hPlugin, int numParams)
{ {
any itemArray[items]; any itemArray[items];
int index = GetNativeCell(1); int index = GetNativeCell(1);
int size = GetNativeCell(3); int size = GetNativeCell(3);
g_hArray_Items.GetArray(index, itemArray, size); g_hArray_Items.GetArray(index, itemArray, size);
SetNativeArray(2, itemArray, size); SetNativeArray(2, itemArray, size);
} }
@ -615,11 +615,11 @@ public int Native_GetItemArray(Handle hPlugin, int numParams)
public int Native_SetItemArray(Handle hPlugin, int numParams) public int Native_SetItemArray(Handle hPlugin, int numParams)
{ {
any itemArray[items]; any itemArray[items];
int index = GetNativeCell(1); int index = GetNativeCell(1);
int size = GetNativeCell(3); int size = GetNativeCell(3);
GetNativeArray(2, itemArray, size); GetNativeArray(2, itemArray, size);
g_hArray_Items.SetArray(index, itemArray, size); g_hArray_Items.SetArray(index, itemArray, size);
} }

View File

@ -33,12 +33,12 @@ public void OnGameFrame()
{ {
char sHUDFormat[250]; char sHUDFormat[250];
char sHUDBuffer[64]; char sHUDBuffer[64];
for (int index; index < EW_GetItemCount(); index++) for (int index; index < EW_GetItemCount(); index++)
{ {
any itemArray[items]; any itemArray[items];
EW_GetItemArray(index, itemArray, sizeof(itemArray)); EW_GetItemArray(index, itemArray, sizeof(itemArray));
if (itemArray[item_display] & DISPLAY_HUD) if (itemArray[item_display] & DISPLAY_HUD)
{ {
if (itemArray[item_owned] && itemArray[item_owner] >= 0) if (itemArray[item_owned] && itemArray[item_owner] >= 0)
@ -101,7 +101,7 @@ public void OnGameFrame()
Format(sHUDBuffer, sizeof(sHUDBuffer), "%s [%s]: %N", itemArray[item_short], "N/A", itemArray[item_owner]); Format(sHUDBuffer, sizeof(sHUDBuffer), "%s [%s]: %N", itemArray[item_short], "N/A", itemArray[item_owner]);
} }
} }
if (strlen(sHUDFormat) + strlen(sHUDBuffer) <= sizeof(sHUDFormat) - 2) if (strlen(sHUDFormat) + strlen(sHUDBuffer) <= sizeof(sHUDFormat) - 2)
{ {
Format(sHUDFormat, sizeof(sHUDFormat), "%s\n%s", sHUDFormat, sHUDBuffer); Format(sHUDFormat, sizeof(sHUDFormat), "%s\n%s", sHUDFormat, sHUDBuffer);
@ -110,7 +110,7 @@ public void OnGameFrame()
} }
} }
} }
Handle hMessage = StartMessageAll("KeyHintText"); Handle hMessage = StartMessageAll("KeyHintText");
BfWriteByte(hMessage, 1); BfWriteByte(hMessage, 1);
BfWriteString(hMessage, sHUDFormat); BfWriteString(hMessage, sHUDFormat);

View File

@ -44,10 +44,10 @@ public void EW_OnClientItemDrop(any[] itemArray, int client, int index)
{ {
char sName[32]; char sName[32];
GetClientName(client, sName, sizeof(sName)); GetClientName(client, sName, sizeof(sName));
char sAuth[32]; char sAuth[32];
GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth)); GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth));
CRemoveTags(sName, sizeof(sName)); CRemoveTags(sName, sizeof(sName));
CPrintToChatAll(MESSAGEFORMAT, "E01B5D", "EDEDED", sName, "E562BA", "B2B2B2", sAuth, "E562BA", "Item Drop", itemArray[item_color], itemArray[item_name]); CPrintToChatAll(MESSAGEFORMAT, "E01B5D", "EDEDED", sName, "E562BA", "B2B2B2", sAuth, "E562BA", "Item Drop", itemArray[item_color], itemArray[item_name]);
} }
@ -62,10 +62,10 @@ public void EW_OnClientItemDeath(any[] itemArray, int client, int index)
{ {
char sName[32]; char sName[32];
GetClientName(client, sName, sizeof(sName)); GetClientName(client, sName, sizeof(sName));
char sAuth[32]; char sAuth[32];
GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth)); GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth));
CRemoveTags(sName, sizeof(sName)); CRemoveTags(sName, sizeof(sName));
CPrintToChatAll(MESSAGEFORMAT, "E01B5D", "EDEDED", sName, "F1B567", "B2B2B2", sAuth, "F1B567", "Item Death", itemArray[item_color], itemArray[item_name]); CPrintToChatAll(MESSAGEFORMAT, "E01B5D", "EDEDED", sName, "F1B567", "B2B2B2", sAuth, "F1B567", "Item Death", itemArray[item_color], itemArray[item_name]);
} }
@ -80,10 +80,10 @@ public void EW_OnClientItemPickup(any[] itemArray, int client, int index)
{ {
char sName[32]; char sName[32];
GetClientName(client, sName, sizeof(sName)); GetClientName(client, sName, sizeof(sName));
char sAuth[32]; char sAuth[32];
GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth)); GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth));
CRemoveTags(sName, sizeof(sName)); CRemoveTags(sName, sizeof(sName));
CPrintToChatAll(MESSAGEFORMAT, "E01B5D", "EDEDED", sName, "C9EF66", "B2B2B2", sAuth, "C9EF66", "Item Pickup", itemArray[item_color], itemArray[item_name]); CPrintToChatAll(MESSAGEFORMAT, "E01B5D", "EDEDED", sName, "C9EF66", "B2B2B2", sAuth, "C9EF66", "Item Pickup", itemArray[item_color], itemArray[item_name]);
} }
@ -98,10 +98,10 @@ public void EW_OnClientItemDisconnect(any[] itemArray, int client, int index)
{ {
char sName[32]; char sName[32];
GetClientName(client, sName, sizeof(sName)); GetClientName(client, sName, sizeof(sName));
char sAuth[32]; char sAuth[32];
GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth)); GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth));
CRemoveTags(sName, sizeof(sName)); CRemoveTags(sName, sizeof(sName));
CPrintToChatAll(MESSAGEFORMAT, "E01B5D", "EDEDED", sName, "F1B567", "B2B2B2", sAuth, "F1B567", "Item Disconnect", itemArray[item_color], itemArray[item_name]); CPrintToChatAll(MESSAGEFORMAT, "E01B5D", "EDEDED", sName, "F1B567", "B2B2B2", sAuth, "F1B567", "Item Disconnect", itemArray[item_color], itemArray[item_name]);
} }
@ -116,10 +116,10 @@ public void EW_OnClientItemActivate(any[] itemArray, int client, int index)
{ {
char sName[32]; char sName[32];
GetClientName(client, sName, sizeof(sName)); GetClientName(client, sName, sizeof(sName));
char sAuth[32]; char sAuth[32];
GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth)); GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth));
CRemoveTags(sName, sizeof(sName)); CRemoveTags(sName, sizeof(sName));
CPrintToChatAll(MESSAGEFORMAT, "E01B5D", "EDEDED", sName, "67ADDF", "B2B2B2", sAuth, "67ADDF", "Item Activate", itemArray[item_color], itemArray[item_name]); CPrintToChatAll(MESSAGEFORMAT, "E01B5D", "EDEDED", sName, "67ADDF", "B2B2B2", sAuth, "67ADDF", "Item Activate", itemArray[item_color], itemArray[item_name]);
} }

View File

@ -48,7 +48,7 @@ public APLRes AskPluginLoad2(Handle hMyself, bool bLate, char[] sError, int erro
CreateNative("EW_ClientRestrict", Native_ClientRestrict); CreateNative("EW_ClientRestrict", Native_ClientRestrict);
CreateNative("EW_ClientUnrestrict", Native_ClientUnrestrict); CreateNative("EW_ClientUnrestrict", Native_ClientUnrestrict);
CreateNative("EW_ClientRestricted", Native_ClientRestricted); CreateNative("EW_ClientRestricted", Native_ClientRestricted);
RegPluginLibrary("entWatch-restrictions"); RegPluginLibrary("entWatch-restrictions");
return APLRes_Success; return APLRes_Success;
} }
@ -60,14 +60,14 @@ public void OnPluginStart()
{ {
LoadTranslations("common.phrases"); LoadTranslations("common.phrases");
LoadTranslations("entWatch.restrictions.phrases"); LoadTranslations("entWatch.restrictions.phrases");
g_hFwd_OnClientRestricted = CreateGlobalForward("EW_OnClientRestricted", ET_Ignore, Param_Cell, Param_Cell, Param_Cell); g_hFwd_OnClientRestricted = CreateGlobalForward("EW_OnClientRestricted", ET_Ignore, Param_Cell, Param_Cell, Param_Cell);
g_hFwd_OnClientUnrestricted = CreateGlobalForward("EW_OnClientUnrestricted", ET_Ignore, Param_Cell, Param_Cell); g_hFwd_OnClientUnrestricted = CreateGlobalForward("EW_OnClientUnrestricted", ET_Ignore, Param_Cell, Param_Cell);
g_hCookie_RestrictIssued = RegClientCookie("EW_RestrictIssued", "", CookieAccess_Private); g_hCookie_RestrictIssued = RegClientCookie("EW_RestrictIssued", "", CookieAccess_Private);
g_hCookie_RestrictLength = RegClientCookie("EW_RestrictLength", "", CookieAccess_Private); g_hCookie_RestrictLength = RegClientCookie("EW_RestrictLength", "", CookieAccess_Private);
g_hCookie_RestrictExpire = RegClientCookie("EW_RestrictExpire", "", CookieAccess_Private); g_hCookie_RestrictExpire = RegClientCookie("EW_RestrictExpire", "", CookieAccess_Private);
RegAdminCmd("sm_eban", Command_ClientRestrict, ADMFLAG_BAN); RegAdminCmd("sm_eban", Command_ClientRestrict, ADMFLAG_BAN);
RegAdminCmd("sm_eunban", Command_ClientUnrestrict, ADMFLAG_UNBAN); RegAdminCmd("sm_eunban", Command_ClientUnrestrict, ADMFLAG_UNBAN);
} }
@ -102,18 +102,18 @@ public Action Command_ClientRestrict(int client, int args)
CReplyToCommand(client, "\x07%s[entWatch] \x07%sUsage: sm_eban <#userid/name> [duration]", "E01B5D", "F16767"); CReplyToCommand(client, "\x07%s[entWatch] \x07%sUsage: sm_eban <#userid/name> [duration]", "E01B5D", "F16767");
return Plugin_Handled; return Plugin_Handled;
} }
char sTarget[32]; char sTarget[32];
char sLength[32]; char sLength[32];
GetCmdArg(1, sTarget, sizeof(sTarget)); GetCmdArg(1, sTarget, sizeof(sTarget));
GetCmdArg(2, sLength, sizeof(sLength)); GetCmdArg(2, sLength, sizeof(sLength));
int target; int target;
if ((target = FindTarget(client, sTarget, true)) == -1) if ((target = FindTarget(client, sTarget, true)) == -1)
return Plugin_Handled; return Plugin_Handled;
int length = StringToInt(sLength); int length = StringToInt(sLength);
if (ClientRestrict(client, target, length)) if (ClientRestrict(client, target, length))
{ {
if (length) if (length)
@ -127,7 +127,7 @@ public Action Command_ClientRestrict(int client, int args)
LogAction(client, target, "%L restricted %L permanently.", client, target); LogAction(client, target, "%L restricted %L permanently.", client, target);
} }
} }
return Plugin_Handled; return Plugin_Handled;
} }
@ -141,20 +141,20 @@ public Action Command_ClientUnrestrict(int client, int args)
CReplyToCommand(client, "\x07%s[entWatch] \x07%sUsage: sm_eunban <#userid/name>", "E01B5D", "F16767"); CReplyToCommand(client, "\x07%s[entWatch] \x07%sUsage: sm_eunban <#userid/name>", "E01B5D", "F16767");
return Plugin_Handled; return Plugin_Handled;
} }
char sTarget[32]; char sTarget[32];
GetCmdArg(1, sTarget, sizeof(sTarget)); GetCmdArg(1, sTarget, sizeof(sTarget));
int target; int target;
if ((target = FindTarget(client, sTarget, true)) == -1) if ((target = FindTarget(client, sTarget, true)) == -1)
return Plugin_Handled; return Plugin_Handled;
if (ClientUnrestrict(client, target)) if (ClientUnrestrict(client, target))
{ {
CPrintToChatAll("\x07%s[entWatch] \x07%s%N\x07%s unrestricted \x07%s%N\x07%s.", "E01B5D", "EDEDED", client, "F16767", "EDEDED", target, "F16767"); CPrintToChatAll("\x07%s[entWatch] \x07%s%N\x07%s unrestricted \x07%s%N\x07%s.", "E01B5D", "EDEDED", client, "F16767", "EDEDED", target, "F16767");
LogAction(client, target, "%L unrestricted %L.", client, target); LogAction(client, target, "%L unrestricted %L.", client, target);
} }
return Plugin_Handled; return Plugin_Handled;
} }
@ -181,25 +181,25 @@ stock bool ClientRestrict(int client, int target, int length)
{ {
if (!Client_IsValid(client) || !Client_IsValid(target) || !AreClientCookiesCached(target) || ClientRestricted(target)) if (!Client_IsValid(client) || !Client_IsValid(target) || !AreClientCookiesCached(target) || ClientRestricted(target))
return false; return false;
int issued = GetTime(); int issued = GetTime();
int second = length * 60; int second = length * 60;
int expire = issued + second; int expire = issued + second;
g_iRestrictIssued[target] = issued; g_iRestrictIssued[target] = issued;
g_iRestrictLength[target] = length; g_iRestrictLength[target] = length;
g_iRestrictExpire[target] = expire; g_iRestrictExpire[target] = expire;
SetClientCookieInt(target, g_hCookie_RestrictIssued, issued); SetClientCookieInt(target, g_hCookie_RestrictIssued, issued);
SetClientCookieInt(target, g_hCookie_RestrictLength, length); SetClientCookieInt(target, g_hCookie_RestrictLength, length);
SetClientCookieInt(target, g_hCookie_RestrictExpire, expire); SetClientCookieInt(target, g_hCookie_RestrictExpire, expire);
Call_StartForward(g_hFwd_OnClientRestricted); Call_StartForward(g_hFwd_OnClientRestricted);
Call_PushCell(client); Call_PushCell(client);
Call_PushCell(target); Call_PushCell(target);
Call_PushCell(length); Call_PushCell(length);
Call_Finish(); Call_Finish();
return true; return true;
} }
@ -210,20 +210,20 @@ stock bool ClientUnrestrict(int client, int target)
{ {
if (!Client_IsValid(client) || !Client_IsValid(target) || !AreClientCookiesCached(target) || !ClientRestricted(target)) if (!Client_IsValid(client) || !Client_IsValid(target) || !AreClientCookiesCached(target) || !ClientRestricted(target))
return false; return false;
g_iRestrictIssued[target] = 0; g_iRestrictIssued[target] = 0;
g_iRestrictLength[target] = 0; g_iRestrictLength[target] = 0;
g_iRestrictExpire[target] = 0; g_iRestrictExpire[target] = 0;
SetClientCookieInt(target, g_hCookie_RestrictIssued, 0); SetClientCookieInt(target, g_hCookie_RestrictIssued, 0);
SetClientCookieInt(target, g_hCookie_RestrictLength, 0); SetClientCookieInt(target, g_hCookie_RestrictLength, 0);
SetClientCookieInt(target, g_hCookie_RestrictExpire, 0); SetClientCookieInt(target, g_hCookie_RestrictExpire, 0);
Call_StartForward(g_hFwd_OnClientUnrestricted); Call_StartForward(g_hFwd_OnClientUnrestricted);
Call_PushCell(client); Call_PushCell(client);
Call_PushCell(target); Call_PushCell(target);
Call_Finish(); Call_Finish();
return true; return true;
} }
@ -234,19 +234,19 @@ stock bool ClientRestricted(int client)
{ {
if (!Client_IsValid(client)) if (!Client_IsValid(client))
return false; return false;
//Block them when loading cookies.. //Block them when loading cookies..
if (!AreClientCookiesCached(client)) if (!AreClientCookiesCached(client))
return true; return true;
//Permanent restriction.. //Permanent restriction..
if (g_iRestrictExpire[client] && g_iRestrictLength[client] == 0) if (g_iRestrictExpire[client] && g_iRestrictLength[client] == 0)
return true; return true;
//Limited restriction.. //Limited restriction..
if (g_iRestrictExpire[client] && g_iRestrictExpire[client] >= GetTime()) if (g_iRestrictExpire[client] && g_iRestrictExpire[client] >= GetTime())
return true; return true;
return false; return false;
} }
@ -281,7 +281,7 @@ stock void SetClientCookieInt(int client, Handle hCookie, int value)
{ {
char sValue[32]; char sValue[32];
IntToString(value, sValue, sizeof(sValue)); IntToString(value, sValue, sizeof(sValue));
SetClientCookie(client, hCookie, sValue); SetClientCookie(client, hCookie, sValue);
} }
@ -292,6 +292,6 @@ stock int GetClientCookieInt(int client, Handle hCookie)
{ {
char sValue[32]; char sValue[32];
GetClientCookie(client, hCookie, sValue, sizeof(sValue)); GetClientCookie(client, hCookie, sValue, sizeof(sValue));
return StringToInt(sValue); return StringToInt(sValue);
} }

View File

@ -8,7 +8,7 @@ public SharedPlugin __pl_entWatch_core =
{ {
name = "entWatch-core", name = "entWatch-core",
file = "entWatch-core.smx", file = "entWatch-core.smx",
#if defined REQUIRE_PLUGIN #if defined REQUIRE_PLUGIN
required = 1 required = 1
#else #else

View File

@ -8,7 +8,7 @@ public SharedPlugin __pl_entWatch_core =
{ {
name = "entWatch-restrictions", name = "entWatch-restrictions",
file = "entWatch-restrictions.smx", file = "entWatch-restrictions.smx",
#if defined REQUIRE_PLUGIN #if defined REQUIRE_PLUGIN
required = 1 required = 1
#else #else

View File

@ -23,69 +23,69 @@ enum CCC_ColorType {
/** /**
* Gets a client's color as a hexadecimal integer. * Gets a client's color as a hexadecimal integer.
* *
* @param client Client index * @param client Client index
* @param type Color type to retreive * @param type Color type to retreive
* @param alpha Pass a boolean variable by reference here and it will be true if the color has alpha specified or false if it doesn't (or is a stock color) * @param alpha Pass a boolean variable by reference here and it will be true if the color has alpha specified or false if it doesn't (or is a stock color)
* @return Color as a hexadecimal integer (use %X in formatting to get a hexadecimal string) * @return Color as a hexadecimal integer (use %X in formatting to get a hexadecimal string)
* *
* On error/errors: Invalid client index or client is not in game * On error/errors: Invalid client index or client is not in game
*/ */
native int CCC_GetColor(int client, CCC_ColorType type, bool &alpha = false); native int CCC_GetColor(int client, CCC_ColorType type, bool &alpha = false);
/** /**
* Sets a client's color as a hexadecimal integer. * Sets a client's color as a hexadecimal integer.
* *
* @param client Client index * @param client Client index
* @param type Color type to set * @param type Color type to set
* @param color Integer representation of the color (use StringToInt(input, 16) to convert a hexadecimal string) or one of the color defines * @param color Integer representation of the color (use StringToInt(input, 16) to convert a hexadecimal string) or one of the color defines
* @param alpha Are you specifying a color with alpha? * @param alpha Are you specifying a color with alpha?
* @return True if the color is updated successfully, false otherwise * @return True if the color is updated successfully, false otherwise
* *
* On error/errors: Invalid client index or client is not in game * On error/errors: Invalid client index or client is not in game
*/ */
native int CCC_SetColor(int client, CCC_ColorType type, int color, bool alpha); native int CCC_SetColor(int client, CCC_ColorType type, int color, bool alpha);
/** /**
* Gets a client's tag * Gets a client's tag
* *
* @param client Client index * @param client Client index
* @param buffer Buffer to store the tag in * @param buffer Buffer to store the tag in
* @param maxlen Maximum buffer length * @param maxlen Maximum buffer length
* @noreturn * @noreturn
* *
* On error/errors: Invalid client index or client is not in game * On error/errors: Invalid client index or client is not in game
*/ */
native int CCC_GetTag(int client, char[] buffer, int maxlen); native int CCC_GetTag(int client, char[] buffer, int maxlen);
/** /**
* Sets a client's tag * Sets a client's tag
* *
* @param client Client index * @param client Client index
* @param tag String containing the new tag * @param tag String containing the new tag
* @noreturn * @noreturn
* *
* On error/errors: Invalid client index or client is not in game * On error/errors: Invalid client index or client is not in game
*/ */
native void CCC_SetTag(int client, const char[] tag); native void CCC_SetTag(int client, const char[] tag);
/** /**
* Resets a client's color to the value in the config file. * Resets a client's color to the value in the config file.
* *
* @param client Client index * @param client Client index
* @param type Color type to restore * @param type Color type to restore
* @noreturn * @noreturn
* *
* On error/errors: Invalid client index or client is not in game * On error/errors: Invalid client index or client is not in game
*/ */
native int CCC_ResetColor(int client, CCC_ColorType type); native int CCC_ResetColor(int client, CCC_ColorType type);
/** /**
* Resets a client's tag to the value in the config file. * Resets a client's tag to the value in the config file.
* *
* @param client Client index * @param client Client index
* @noreturn * @noreturn
* *
* On error/errors: Invalid client index or client is not in game * On error/errors: Invalid client index or client is not in game
*/ */
native int CCC_ResetTag(int client); native int CCC_ResetTag(int client);
@ -93,7 +93,7 @@ native int CCC_ResetTag(int client);
/** /**
* Called when a cilent's name is about to be colored * Called when a cilent's name is about to be colored
* DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD * DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
* *
* @param client Client index * @param client Client index
* @return Plugin_Handled to prevent coloring, Plugin_Continue to allow coloring * @return Plugin_Handled to prevent coloring, Plugin_Continue to allow coloring
*/ */
@ -103,7 +103,7 @@ native int CCC_ResetTag(int client);
/** /**
* Called when a client's chat is about to be colored * Called when a client's chat is about to be colored
* DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD * DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
* *
* @param client Client index * @param client Client index
* @return Plugin_Handled to prevent coloring, Plugin_Continue to allow coloring * @return Plugin_Handled to prevent coloring, Plugin_Continue to allow coloring
*/ */
@ -113,7 +113,7 @@ native int CCC_ResetTag(int client);
/** /**
* Called when a client's name is about to be tagged * Called when a client's name is about to be tagged
* DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD * DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
* *
* @param client Client index * @param client Client index
* @return Plugin_Handled to prevent tagging, Plugin_Continue to allow tagging * @return Plugin_Handled to prevent tagging, Plugin_Continue to allow tagging
*/ */
@ -123,7 +123,7 @@ native int CCC_ResetTag(int client);
/** /**
* Called when a client's name is about to be tagged * Called when a client's name is about to be tagged
* DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD * DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
* *
* @param client Client index * @param client Client index
* @param message Chat message that will be printed * @param message Chat message that will be printed
* @param type What type of color will be applied. If this is CCC_TagColor, it controls whether the tag will be applied at all, not whether the tag will be colored. * @param type What type of color will be applied. If this is CCC_TagColor, it controls whether the tag will be applied at all, not whether the tag will be colored.
@ -133,7 +133,7 @@ native int CCC_ResetTag(int client);
/** /**
* Called when a message has been fully colored and will be sent, unless further plugins modify it through Simple Chat Processor * Called when a message has been fully colored and will be sent, unless further plugins modify it through Simple Chat Processor
* *
* @param client Recieving client index * @param client Recieving client index
* @param author Author client index * @param author Author client index
* @param message Message * @param message Message
@ -144,7 +144,7 @@ forward Action CCC_OnChatMessage(int client, int author, const char[] message);
/** /**
* Called when a client's colors and tag are about to be loaded from the config file * Called when a client's colors and tag are about to be loaded from the config file
* At this point, the client has NO COLORS * At this point, the client has NO COLORS
* *
* @param client Client index * @param client Client index
* @return Plugin_Handled or Plugin_Stop to prevent loading, Plugin_Continue or Plugin_Changed to allow * @return Plugin_Handled or Plugin_Stop to prevent loading, Plugin_Continue or Plugin_Changed to allow
*/ */
@ -152,7 +152,7 @@ forward Action CCC_OnUserConfigPreLoaded(int client);
/** /**
* Called when a client's colors and tag have been loaded from the config file * Called when a client's colors and tag have been loaded from the config file
* *
* @param client Client index * @param client Client index
* @noreturn * @noreturn
*/ */
@ -160,14 +160,14 @@ forward void CCC_OnUserConfigLoaded(int client);
/** /**
* Called when the configuration file is reloaded with the sm_reloadccc command * Called when the configuration file is reloaded with the sm_reloadccc command
* *
* @noreturn * @noreturn
*/ */
forward void CCC_OnConfigReloaded(); forward void CCC_OnConfigReloaded();
native int CCC_UpdateIgnoredArray(bool IgnoredArray[(MAXPLAYERS + 1) * (MAXPLAYERS + 1)]); native int CCC_UpdateIgnoredArray(bool IgnoredArray[(MAXPLAYERS + 1) * (MAXPLAYERS + 1)]);
public SharedPlugin __pl_ccc = public SharedPlugin __pl_ccc =
{ {
name = "ccc", name = "ccc",
file = "custom-chatcolors.smx", file = "custom-chatcolors.smx",

View File

@ -15,7 +15,7 @@ enum EUserHasLicenseForAppResult
enum EResult enum EResult
{ {
k_EResultOK = 1, // success k_EResultOK = 1, // success
k_EResultFail = 2, // generic failure k_EResultFail = 2, // generic failure
k_EResultNoConnection = 3, // no/failed network connection k_EResultNoConnection = 3, // no/failed network connection
// k_EResultNoConnectionRetry = 4, // OBSOLETE - removed // k_EResultNoConnectionRetry = 4, // OBSOLETE - removed
k_EResultInvalidPassword = 5, // password/ticket is invalid k_EResultInvalidPassword = 5, // password/ticket is invalid
@ -80,8 +80,8 @@ enum EResult
k_EResultCannotUseOldPassword = 64, // The requested new password is not legal k_EResultCannotUseOldPassword = 64, // The requested new password is not legal
k_EResultInvalidLoginAuthCode = 65, // account login denied due to auth code invalid k_EResultInvalidLoginAuthCode = 65, // account login denied due to auth code invalid
k_EResultAccountLogonDeniedNoMail = 66, // account login denied due to 2nd factor auth failure - and no mail has been sent k_EResultAccountLogonDeniedNoMail = 66, // account login denied due to 2nd factor auth failure - and no mail has been sent
k_EResultHardwareNotCapableOfIPT = 67, // k_EResultHardwareNotCapableOfIPT = 67, //
k_EResultIPTInitError = 68, // k_EResultIPTInitError = 68, //
k_EResultParentalControlRestricted = 69, // operation failed due to parental control restrictions for current user k_EResultParentalControlRestricted = 69, // operation failed due to parental control restrictions for current user
k_EResultFacebookQueryError = 70, // Facebook query returned an error k_EResultFacebookQueryError = 70, // Facebook query returned an error
k_EResultExpiredLoginAuthCode = 71, // account login denied due to auth code expired k_EResultExpiredLoginAuthCode = 71, // account login denied due to auth code expired
@ -105,7 +105,7 @@ enum EHTTPMethod
k_EHTTPMethodDELETE, k_EHTTPMethodDELETE,
k_EHTTPMethodOPTIONS, k_EHTTPMethodOPTIONS,
// The remaining HTTP methods are not yet supported, per rfc2616 section 5.1.1 only GET and HEAD are required for // The remaining HTTP methods are not yet supported, per rfc2616 section 5.1.1 only GET and HEAD are required for
// a compliant general purpose server. We'll likely add more as we find uses for them. // a compliant general purpose server. We'll likely add more as we find uses for them.
// k_EHTTPMethodTRACE, // k_EHTTPMethodTRACE,
@ -258,7 +258,7 @@ forward SteamWorks_TokenRequested(String:sToken[], maxlen);
forward SteamWorks_OnClientGroupStatus(authid, groupid, bool:isMember, bool:isOfficer); forward SteamWorks_OnClientGroupStatus(authid, groupid, bool:isMember, bool:isOfficer);
public Extension:__ext_SteamWorks = public Extension:__ext_SteamWorks =
{ {
name = "SteamWorks", name = "SteamWorks",
file = "SteamWorks.ext", file = "SteamWorks.ext",

View File

@ -95,7 +95,7 @@ typeset ListenCB
{ {
//Deleted //Deleted
function void (int entity); function void (int entity);
//Created //Created
function void (int entity, const char[] classname); function void (int entity, const char[] classname);
}; };
@ -108,42 +108,42 @@ typeset DHookCallback
{ {
//Function Example: void Ham::Test() with this pointer ignore //Function Example: void Ham::Test() with this pointer ignore
function MRESReturn (); function MRESReturn ();
//Function Example: void Ham::Test() with this pointer passed //Function Example: void Ham::Test() with this pointer passed
function MRESReturn (int pThis); function MRESReturn (int pThis);
//Function Example: void Ham::Test(int cake) with this pointer ignore //Function Example: void Ham::Test(int cake) with this pointer ignore
function MRESReturn (Handle hParams); function MRESReturn (Handle hParams);
//Function Example: void Ham::Test(int cake) with this pointer passed //Function Example: void Ham::Test(int cake) with this pointer passed
function MRESReturn (int pThis, Handle hParams); function MRESReturn (int pThis, Handle hParams);
//Function Example: int Ham::Test() with this pointer ignore //Function Example: int Ham::Test() with this pointer ignore
function MRESReturn (Handle hReturn); function MRESReturn (Handle hReturn);
//Function Example: int Ham::Test() with this pointer passed //Function Example: int Ham::Test() with this pointer passed
function MRESReturn (int pThis, Handle hReturn); function MRESReturn (int pThis, Handle hReturn);
//Function Example: int Ham::Test(int cake) with this pointer ignore //Function Example: int Ham::Test(int cake) with this pointer ignore
function MRESReturn (Handle hReturn, Handle hParams); function MRESReturn (Handle hReturn, Handle hParams);
//Function Example: int Ham::Test(int cake) with this pointer passed //Function Example: int Ham::Test(int cake) with this pointer passed
function MRESReturn (int pThis, Handle hReturn, Handle hParams); function MRESReturn (int pThis, Handle hReturn, Handle hParams);
//Address NOW //Address NOW
//Function Example: void Ham::Test() with this pointer passed //Function Example: void Ham::Test() with this pointer passed
function MRESReturn (Address pThis); function MRESReturn (Address pThis);
//Function Example: void Ham::Test(int cake) with this pointer passed //Function Example: void Ham::Test(int cake) with this pointer passed
function MRESReturn (Address pThis, Handle hParams); function MRESReturn (Address pThis, Handle hParams);
//Function Example: int Ham::Test() with this pointer passed //Function Example: int Ham::Test() with this pointer passed
function MRESReturn (Address pThis, Handle hReturn); function MRESReturn (Address pThis, Handle hReturn);
//Function Example: int Ham::Test(int cake) with this pointer passed //Function Example: int Ham::Test(int cake) with this pointer passed
function MRESReturn (Address pThis, Handle hReturn, Handle hParams); function MRESReturn (Address pThis, Handle hReturn, Handle hParams);
}; };
/* Adds an entity listener hook /* Adds an entity listener hook
@ -171,7 +171,7 @@ native bool DHookRemoveEntityListener(ListenType type, ListenCB callback);
* @param returntype Type type of return * @param returntype Type type of return
* @param thistype Type of this pointer or ignore (ignore can be used if not needed) * @param thistype Type of this pointer or ignore (ignore can be used if not needed)
* @param callback Callback function * @param callback Callback function
* *
* @return Returns setup handle for the hook or INVALID_HANDLE. * @return Returns setup handle for the hook or INVALID_HANDLE.
*/ */
native Handle DHookCreate(int offset, HookType hooktype, ReturnType returntype, ThisPointerType thistype, DHookCallback callback); native Handle DHookCreate(int offset, HookType hooktype, ReturnType returntype, ThisPointerType thistype, DHookCallback callback);
@ -182,7 +182,7 @@ native Handle DHookCreate(int offset, HookType hooktype, ReturnType returntype,
* @param type Param type * @param type Param type
* @param size Used for Objects (not Object ptr) to define the size of the object. * @param size Used for Objects (not Object ptr) to define the size of the object.
* @param flag Used to change the pass type. * @param flag Used to change the pass type.
* *
* @error Invalid setup handle or too many params added (request upping the max in thread) * @error Invalid setup handle or too many params added (request upping the max in thread)
* @noreturn * @noreturn
*/ */
@ -190,170 +190,170 @@ native void DHookAddParam(Handle setup, HookParamType type, int size=-1, DHookPa
//native DHookAddParam(Handle:setup, HookParamType:type); //native DHookAddParam(Handle:setup, HookParamType:type);
/* Hook entity /* Hook entity
* *
* @param setup Setup handle to use to add the hook. * @param setup Setup handle to use to add the hook.
* @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!) * @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!)
* @param entity Entity index to hook on. * @param entity Entity index to hook on.
* @param removalcb Callback for when the hook is removed (Entity hooks are auto-removed on entity destroyed and will call this callback) * @param removalcb Callback for when the hook is removed (Entity hooks are auto-removed on entity destroyed and will call this callback)
* *
* @error Invalid setup handle, invalid entity or invalid hook type. * @error Invalid setup handle, invalid entity or invalid hook type.
* @return -1 on fail a hookid on success * @return -1 on fail a hookid on success
*/ */
native int DHookEntity(Handle setup, bool post, int entity, DHookRemovalCB removalcb=INVALID_FUNCTION); native int DHookEntity(Handle setup, bool post, int entity, DHookRemovalCB removalcb=INVALID_FUNCTION);
/* Hook gamerules /* Hook gamerules
* *
* @param setup Setup handle to use to add the hook. * @param setup Setup handle to use to add the hook.
* @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!) * @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!)
* @param removalcb Callback for when the hook is removed (Game rules hooks are auto-removed on map end and will call this callback) * @param removalcb Callback for when the hook is removed (Game rules hooks are auto-removed on map end and will call this callback)
* *
* @error Invalid setup handle, failing to get gamerules pointer or invalid hook type. * @error Invalid setup handle, failing to get gamerules pointer or invalid hook type.
* @return -1 on fail a hookid on success * @return -1 on fail a hookid on success
*/ */
native int DHookGamerules(Handle setup, bool post, DHookRemovalCB removalcb=INVALID_FUNCTION); native int DHookGamerules(Handle setup, bool post, DHookRemovalCB removalcb=INVALID_FUNCTION);
/* Hook a raw pointer /* Hook a raw pointer
* *
* @param setup Setup handle to use to add the hook. * @param setup Setup handle to use to add the hook.
* @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!) * @param post True to make the hook a post hook. (If you need to change the retunr value or need the return value use a post hook! If you need to change params and return use a pre and post hook!)
* @param addr This pointer address. * @param addr This pointer address.
* @param removalcb Callback for when the hook is removed (Entity hooks are auto-removed on entity destroyed and will call this callback) * @param removalcb Callback for when the hook is removed (Entity hooks are auto-removed on entity destroyed and will call this callback)
* *
* @error Invalid setup handle, invalid address or invalid hook type. * @error Invalid setup handle, invalid address or invalid hook type.
* @return -1 on fail a hookid on success * @return -1 on fail a hookid on success
*/ */
native int DHookRaw(Handle setup, bool post, Address addr, DHookRemovalCB removalcb=INVALID_FUNCTION); native int DHookRaw(Handle setup, bool post, Address addr, DHookRemovalCB removalcb=INVALID_FUNCTION);
/* Remove hook by hook id /* Remove hook by hook id
* *
* @param hookid Hook id to remove * @param hookid Hook id to remove
* *
* @return true on success false otherwise * @return true on success false otherwise
* @note This will not fire the removal callback! * @note This will not fire the removal callback!
*/ */
native bool DHookRemoveHookID(int hookid); native bool DHookRemoveHookID(int hookid);
/* Get param value (Only use for: int, entity, bool or float param types) /* Get param value (Only use for: int, entity, bool or float param types)
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1. 0 Will return the number of params stored) * @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1. 0 Will return the number of params stored)
* *
* @error Invalid handle. Invalid param number. Invalid param type. * @error Invalid handle. Invalid param number. Invalid param type.
* @return value if num greater than 0. If 0 returns paramcount. * @return value if num greater than 0. If 0 returns paramcount.
*/ */
native any DHookGetParam(Handle hParams, int num); native any DHookGetParam(Handle hParams, int num);
/* Get vector param value /* Get vector param value
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1.) * @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1.)
* @param vec Vector buffer to store result. * @param vec Vector buffer to store result.
* *
* @error Invalid handle. Invalid param number. Invalid param type. * @error Invalid handle. Invalid param number. Invalid param type.
* @noreturn * @noreturn
*/ */
native void DHookGetParamVector(Handle hParams, int num, float vec[3]); native void DHookGetParamVector(Handle hParams, int num, float vec[3]);
/* Get string param value /* Get string param value
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1.) * @param num Param number to get. (Example if the function has 2 params and you need the value of the first param num would be 1.)
* @param buffer String buffer to store result * @param buffer String buffer to store result
* @param size Buffer size * @param size Buffer size
* *
* @error Invalid handle. Invalid param number. Invalid param type. * @error Invalid handle. Invalid param number. Invalid param type.
* @noreturn * @noreturn
*/ */
native void DHookGetParamString(Handle hParams, int num, char[] buffer, int size); native void DHookGetParamString(Handle hParams, int num, char[] buffer, int size);
/* Set param value (Only use for: int, entity, bool or float param types) /* Set param value (Only use for: int, entity, bool or float param types)
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.) * @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.)
* @param value Value to set it as (only pass int, bool, float or entity index) * @param value Value to set it as (only pass int, bool, float or entity index)
* *
* @error Invalid handle. Invalid param number. Invalid param type. * @error Invalid handle. Invalid param number. Invalid param type.
* @noreturn * @noreturn
*/ */
native void DHookSetParam(Handle hParams, int num, any value); native void DHookSetParam(Handle hParams, int num, any value);
/* Set vector param value /* Set vector param value
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.) * @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.)
* @param vec Value to set vector as. * @param vec Value to set vector as.
* *
* @error Invalid handle. Invalid param number. Invalid param type. * @error Invalid handle. Invalid param number. Invalid param type.
* @noreturn * @noreturn
*/ */
native void DHookSetParamVector(Handle hParams, int num, float vec[3]); native void DHookSetParamVector(Handle hParams, int num, float vec[3]);
/* Set string param value /* Set string param value
* *
* @param hParams Handle to params structure * @param hParams Handle to params structure
* @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.) * @params num Param number to set (Example if the function has 2 params and you need to set the value of the first param num would be 1.)
* @param value Value to set string as. * @param value Value to set string as.
* *
* @error Invalid handle. Invalid param number. Invalid param type. * @error Invalid handle. Invalid param number. Invalid param type.
* @noreturn * @noreturn
*/ */
native void DHookSetParamString(Handle hParams, int num, char[] value); native void DHookSetParamString(Handle hParams, int num, char[] value);
/* Get return value (Only use for: int, entity, bool or float return types) /* Get return value (Only use for: int, entity, bool or float return types)
* *
* @param hReturn Handle to return structure * @param hReturn Handle to return structure
* *
* @error Invalid Handle, invalid type. * @error Invalid Handle, invalid type.
* @return Returns default value if prehook returns actual value if post hook. * @return Returns default value if prehook returns actual value if post hook.
*/ */
native any DHookGetReturn(Handle hReturn); native any DHookGetReturn(Handle hReturn);
/* Get return vector value /* Get return vector value
* *
* @param hReturn Handle to return structure * @param hReturn Handle to return structure
* @param vec Vector buffer to store result in. (In pre hooks will be default value (0.0,0.0,0.0)) * @param vec Vector buffer to store result in. (In pre hooks will be default value (0.0,0.0,0.0))
* *
* @error Invalid Handle, invalid type. * @error Invalid Handle, invalid type.
* @noreturn * @noreturn
*/ */
native void DHookGetReturnVector(Handle hReturn, float vec[3]); native void DHookGetReturnVector(Handle hReturn, float vec[3]);
/* Get return string value /* Get return string value
* *
* @param hReturn Handle to return structure * @param hReturn Handle to return structure
* @param buffer String buffer to store result in. (In pre hooks will be default value "") * @param buffer String buffer to store result in. (In pre hooks will be default value "")
* @param size String buffer size * @param size String buffer size
* *
* @error Invalid Handle, invalid type. * @error Invalid Handle, invalid type.
* @noreturn * @noreturn
*/ */
native void DHookGetReturnString(Handle hReturn, char[] buffer, int size); native void DHookGetReturnString(Handle hReturn, char[] buffer, int size);
/* Set return value (Only use for: int, entity, bool or float return types) /* Set return value (Only use for: int, entity, bool or float return types)
* *
* @param hReturn Handle to return structure * @param hReturn Handle to return structure
* @param value Value to set return as * @param value Value to set return as
* *
* @error Invalid Handle, invalid type. * @error Invalid Handle, invalid type.
* @noreturn * @noreturn
*/ */
native void DHookSetReturn(Handle hReturn, any value); native void DHookSetReturn(Handle hReturn, any value);
/* Set return vector value /* Set return vector value
* *
* @param hReturn Handle to return structure * @param hReturn Handle to return structure
* @param vec Value to set return vector as * @param vec Value to set return vector as
* *
* @error Invalid Handle, invalid type. * @error Invalid Handle, invalid type.
* @noreturn * @noreturn
*/ */
native void DHookSetReturnVector(Handle hReturn, float vec[3]); native void DHookSetReturnVector(Handle hReturn, float vec[3]);
/* Set return string value /* Set return string value
* *
* @param hReturn Handle to return structure * @param hReturn Handle to return structure
* @param value Value to set return string as * @param value Value to set return string as
* *
* @error Invalid Handle, invalid type. * @error Invalid Handle, invalid type.
* @noreturn * @noreturn
*/ */

View File

@ -91,14 +91,14 @@ stock void CPrintToChatObservers(int target, const char[] message, any ...)
if (!g_bCFixColors) if (!g_bCFixColors)
CFixColors(); CFixColors();
for(int client = 1; client <= MaxClients; client++) for(int client = 1; client <= MaxClients; client++)
{ {
if(IsClientInGame(client) && !IsPlayerAlive(client) && !IsFakeClient(client)) if(IsClientInGame(client) && !IsPlayerAlive(client) && !IsFakeClient(client))
{ {
int observee = GetEntPropEnt(client, Prop_Send, "m_hObserverTarget"); int observee = GetEntPropEnt(client, Prop_Send, "m_hObserverTarget");
int ObserverMode = GetEntProp(client, Prop_Send, "m_iObserverMode"); int ObserverMode = GetEntProp(client, Prop_Send, "m_iObserverMode");
if(observee == target && (ObserverMode == 4 || ObserverMode == 5)) if(observee == target && (ObserverMode == 4 || ObserverMode == 5))
{ {
CPrintToChat(client, buffer); CPrintToChat(client, buffer);
@ -125,7 +125,7 @@ stock void CPrintToChatEx(int client, int author, const char[] message, any ...)
if (!g_bCFixColors) if (!g_bCFixColors)
CFixColors(); CFixColors();
if (!IsSource2009()) if (!IsSource2009())
C_PrintToChatEx(client, author, "%s", buffer); C_PrintToChatEx(client, author, "%s", buffer);
else else
@ -170,14 +170,14 @@ stock void CPrintToChatObserversEx(int target, const char[] message, any ...)
if (!g_bCFixColors) if (!g_bCFixColors)
CFixColors(); CFixColors();
for(int client = 1; client <= MaxClients; client++) for(int client = 1; client <= MaxClients; client++)
{ {
if(IsClientInGame(client) && !IsPlayerAlive(client) && !IsFakeClient(client)) if(IsClientInGame(client) && !IsPlayerAlive(client) && !IsFakeClient(client))
{ {
int observee = GetEntPropEnt(client, Prop_Send, "m_hObserverTarget"); int observee = GetEntPropEnt(client, Prop_Send, "m_hObserverTarget");
int ObserverMode = GetEntProp(client, Prop_Send, "m_iObserverMode"); int ObserverMode = GetEntProp(client, Prop_Send, "m_iObserverMode");
if(observee == target && (ObserverMode == 4 || ObserverMode == 5)) if(observee == target && (ObserverMode == 4 || ObserverMode == 5))
{ {
CPrintToChatEx(client, target, buffer); CPrintToChatEx(client, target, buffer);
@ -189,7 +189,7 @@ stock void CPrintToChatObserversEx(int target, const char[] message, any ...)
/** /**
* Replies to a command with colors * Replies to a command with colors
* *
* @param client Client to reply to * @param client Client to reply to
* @param message Message (formatting rules) * @param message Message (formatting rules)
* @noreturn * @noreturn
@ -212,7 +212,7 @@ stock void CReplyToCommand(int author, const char[] message, any ...)
/** /**
* Replies to a command with colors * Replies to a command with colors
* *
* @param client Client to reply to * @param client Client to reply to
* @param author Client to use for {teamcolor} * @param author Client to use for {teamcolor}
* @param message Message (formatting rules) * @param message Message (formatting rules)
@ -236,12 +236,12 @@ stock void CReplyToCommand(int author, const char[] message, any ...)
/** /**
* Displays usage of an admin command to users depending on the * Displays usage of an admin command to users depending on the
* setting of the sm_show_activity cvar. * setting of the sm_show_activity cvar.
* *
* This version does not display a message to the originating client * This version does not display a message to the originating client
* if used from chat triggers or menus. If manual replies are used * if used from chat triggers or menus. If manual replies are used
* for these cases, then this function will suffice. Otherwise, * for these cases, then this function will suffice. Otherwise,
* CShowActivity2() is slightly more useful. * CShowActivity2() is slightly more useful.
* Supports color tags. * Supports color tags.
* *
@ -295,7 +295,7 @@ stock void CShowActivityEx(int author, const char[] tag, const char[] message, a
/** /**
* Displays usage of an admin command to users depending on the setting of the sm_show_activity cvar. * Displays usage of an admin command to users depending on the setting of the sm_show_activity cvar.
* All users receive a message in their chat text, except for the originating client, * All users receive a message in their chat text, except for the originating client,
* who receives the message based on the current ReplySource. * who receives the message based on the current ReplySource.
* Supports color tags. * Supports color tags.
* *
@ -339,7 +339,7 @@ stock void CFormatColor(char[] message, int maxlength, int author = -1)
{ {
if (author == 0) if (author == 0)
author = -1; author = -1;
C_Format(message, maxlength, author); C_Format(message, maxlength, author);
} }
else else
@ -355,7 +355,7 @@ stock void CFormatColor(char[] message, int maxlength, int author = -1)
/** /**
* Removes color tags from a message * Removes color tags from a message
* *
* @param message Message to remove tags from * @param message Message to remove tags from
* @param maxlen Maximum buffer length * @param maxlen Maximum buffer length
* @noreturn * @noreturn

View File

@ -5,13 +5,13 @@
* Version: 2.0.0-MC * * Version: 2.0.0-MC *
* * * *
**************************************************************************/ **************************************************************************/
#if defined _colors_included #if defined _colors_included
#endinput #endinput
#endif #endif
#define _colors_included #define _colors_included
#define MAX_MESSAGE_LENGTH 250 #define MAX_MESSAGE_LENGTH 250
#define MAX_COLORS 18 #define MAX_COLORS 18
@ -62,27 +62,27 @@ static Handle sm_show_activity = null;
* @param client Client index. * @param client Client index.
* @param szMessage Message (formatting rules). * @param szMessage Message (formatting rules).
* @return No return * @return No return
* *
* On error/Errors: If the client is not connected an error will be thrown. * On error/Errors: If the client is not connected an error will be thrown.
*/ */
stock void C_PrintToChat(int client, const char[] szMessage, any ...) stock void C_PrintToChat(int client, const char[] szMessage, any ...)
{ {
if (client <= 0 || client > MaxClients) if (client <= 0 || client > MaxClients)
ThrowError("Invalid client index %d", client); ThrowError("Invalid client index %d", client);
if (!IsClientInGame(client)) if (!IsClientInGame(client))
ThrowError("Client %d is not in game", client); ThrowError("Client %d is not in game", client);
char szBuffer[MAX_MESSAGE_LENGTH]; char szBuffer[MAX_MESSAGE_LENGTH];
char szCMessage[MAX_MESSAGE_LENGTH]; char szCMessage[MAX_MESSAGE_LENGTH];
SetGlobalTransTarget(client); SetGlobalTransTarget(client);
Format(szBuffer, sizeof(szBuffer), "\x01%s", szMessage); Format(szBuffer, sizeof(szBuffer), "\x01%s", szMessage);
VFormat(szCMessage, sizeof(szCMessage), szBuffer, 3); VFormat(szCMessage, sizeof(szCMessage), szBuffer, 3);
int index = C_Format(szCMessage, sizeof(szCMessage)); int index = C_Format(szCMessage, sizeof(szCMessage));
if (index == NO_INDEX) if (index == NO_INDEX)
PrintToChat(client, "%s", szCMessage); PrintToChat(client, "%s", szCMessage);
else else
@ -98,7 +98,7 @@ stock void C_PrintToChat(int client, const char[] szMessage, any ...)
* @param szMessage Formatting rules. * @param szMessage Formatting rules.
* @param ... Variable number of format parameters. * @param ... Variable number of format parameters.
* @return No return * @return No return
* *
* On error/Errors: If the client is not connected or invalid. * On error/Errors: If the client is not connected or invalid.
*/ */
stock void C_ReplyToCommand(int client, const char[] szMessage, any ...) stock void C_ReplyToCommand(int client, const char[] szMessage, any ...)
@ -106,7 +106,7 @@ stock void C_ReplyToCommand(int client, const char[] szMessage, any ...)
char szCMessage[MAX_MESSAGE_LENGTH]; char szCMessage[MAX_MESSAGE_LENGTH];
SetGlobalTransTarget(client); SetGlobalTransTarget(client);
VFormat(szCMessage, sizeof(szCMessage), szMessage, 3); VFormat(szCMessage, sizeof(szCMessage), szMessage, 3);
if (client == 0) if (client == 0)
{ {
C_RemoveTags(szCMessage, sizeof(szCMessage)); C_RemoveTags(szCMessage, sizeof(szCMessage));
@ -133,7 +133,7 @@ stock void C_ReplyToCommand(int client, const char[] szMessage, any ...)
* @param szMessage Formatting rules. * @param szMessage Formatting rules.
* @param ... Variable number of format parameters. * @param ... Variable number of format parameters.
* @return No return * @return No return
* *
* On error/Errors: If the client is not connected or invalid. * On error/Errors: If the client is not connected or invalid.
*/ */
stock void C_ReplyToCommandEx(int client, int author, const char[] szMessage, any ...) stock void C_ReplyToCommandEx(int client, int author, const char[] szMessage, any ...)
@ -141,7 +141,7 @@ stock void C_ReplyToCommandEx(int client, int author, const char[] szMessage, an
char szCMessage[MAX_MESSAGE_LENGTH]; char szCMessage[MAX_MESSAGE_LENGTH];
SetGlobalTransTarget(client); SetGlobalTransTarget(client);
VFormat(szCMessage, sizeof(szCMessage), szMessage, 4); VFormat(szCMessage, sizeof(szCMessage), szMessage, 4);
if (client == 0) if (client == 0)
{ {
C_RemoveTags(szCMessage, sizeof(szCMessage)); C_RemoveTags(szCMessage, sizeof(szCMessage));
@ -169,17 +169,17 @@ stock void C_ReplyToCommandEx(int client, int author, const char[] szMessage, an
stock void C_PrintToChatAll(const char[] szMessage, any ...) stock void C_PrintToChatAll(const char[] szMessage, any ...)
{ {
char szBuffer[MAX_MESSAGE_LENGTH]; char szBuffer[MAX_MESSAGE_LENGTH];
MuCo_LoopClients(i) MuCo_LoopClients(i)
{ {
if (i > 0 && IsClientInGame(i) && !IsFakeClient(i) && !C_SkipList[i]) if (i > 0 && IsClientInGame(i) && !IsFakeClient(i) && !C_SkipList[i])
{ {
SetGlobalTransTarget(i); SetGlobalTransTarget(i);
VFormat(szBuffer, sizeof(szBuffer), szMessage, 2); VFormat(szBuffer, sizeof(szBuffer), szMessage, 2);
C_PrintToChat(i, "%s", szBuffer); C_PrintToChat(i, "%s", szBuffer);
} }
C_SkipList[i] = false; C_SkipList[i] = false;
} }
} }
@ -192,30 +192,30 @@ stock void C_PrintToChatAll(const char[] szMessage, any ...)
* @param author Author index whose color will be used for teamcolor tag. * @param author Author index whose color will be used for teamcolor tag.
* @param szMessage Message (formatting rules). * @param szMessage Message (formatting rules).
* @return No return * @return No return
* *
* On error/Errors: If the client or author are not connected an error will be thrown. * On error/Errors: If the client or author are not connected an error will be thrown.
*/ */
stock void C_PrintToChatEx(int client, int author, const char[] szMessage, any ...) stock void C_PrintToChatEx(int client, int author, const char[] szMessage, any ...)
{ {
if (client <= 0 || client > MaxClients) if (client <= 0 || client > MaxClients)
ThrowError("Invalid client index %d", client); ThrowError("Invalid client index %d", client);
if (!IsClientInGame(client)) if (!IsClientInGame(client))
ThrowError("Client %d is not in game", client); ThrowError("Client %d is not in game", client);
if (author < 0 || author > MaxClients) if (author < 0 || author > MaxClients)
ThrowError("Invalid client index %d", author); ThrowError("Invalid client index %d", author);
char szBuffer[MAX_MESSAGE_LENGTH]; char szBuffer[MAX_MESSAGE_LENGTH];
char szCMessage[MAX_MESSAGE_LENGTH]; char szCMessage[MAX_MESSAGE_LENGTH];
SetGlobalTransTarget(client); SetGlobalTransTarget(client);
Format(szBuffer, sizeof(szBuffer), "\x01%s", szMessage); Format(szBuffer, sizeof(szBuffer), "\x01%s", szMessage);
VFormat(szCMessage, sizeof(szCMessage), szBuffer, 4); VFormat(szCMessage, sizeof(szCMessage), szBuffer, 4);
int index = C_Format(szCMessage, sizeof(szCMessage), author); int index = C_Format(szCMessage, sizeof(szCMessage), author);
if (index == NO_INDEX) if (index == NO_INDEX)
PrintToChat(client, "%s", szCMessage); PrintToChat(client, "%s", szCMessage);
else else
@ -229,29 +229,29 @@ stock void C_PrintToChatEx(int client, int author, const char[] szMessage, any .
* @param author Author index whos color will be used for teamcolor tag. * @param author Author index whos color will be used for teamcolor tag.
* @param szMessage Message (formatting rules). * @param szMessage Message (formatting rules).
* @return No return * @return No return
* *
* On error/Errors: If the author is not connected an error will be thrown. * On error/Errors: If the author is not connected an error will be thrown.
*/ */
stock void C_PrintToChatAllEx(int author, const char[] szMessage, any ...) stock void C_PrintToChatAllEx(int author, const char[] szMessage, any ...)
{ {
if (author < 0 || author > MaxClients) if (author < 0 || author > MaxClients)
ThrowError("Invalid client index %d", author); ThrowError("Invalid client index %d", author);
if (!IsClientInGame(author)) if (!IsClientInGame(author))
ThrowError("Client %d is not in game", author); ThrowError("Client %d is not in game", author);
char szBuffer[MAX_MESSAGE_LENGTH]; char szBuffer[MAX_MESSAGE_LENGTH];
MuCo_LoopClients(i) MuCo_LoopClients(i)
{ {
if (i > 0 && IsClientInGame(i) && !IsFakeClient(i) && !C_SkipList[i]) if (i > 0 && IsClientInGame(i) && !IsFakeClient(i) && !C_SkipList[i])
{ {
SetGlobalTransTarget(i); SetGlobalTransTarget(i);
VFormat(szBuffer, sizeof(szBuffer), szMessage, 3); VFormat(szBuffer, sizeof(szBuffer), szMessage, 3);
C_PrintToChatEx(i, author, "%s", szBuffer); C_PrintToChatEx(i, author, "%s", szBuffer);
} }
C_SkipList[i] = false; C_SkipList[i] = false;
} }
} }
@ -266,7 +266,7 @@ stock void C_RemoveTags(char[] szMessage, int maxlength)
{ {
for (int i = 0; i < MAX_COLORS; i++) for (int i = 0; i < MAX_COLORS; i++)
ReplaceString(szMessage, maxlength, C_Tag[i], "", false); ReplaceString(szMessage, maxlength, C_Tag[i], "", false);
ReplaceString(szMessage, maxlength, "{teamcolor}", "", false); ReplaceString(szMessage, maxlength, "{teamcolor}", "", false);
} }
@ -281,10 +281,10 @@ stock bool C_ColorAllowed(C_Colors color)
if (!C_EventIsHooked) if (!C_EventIsHooked)
{ {
C_SetupProfile(); C_SetupProfile();
C_EventIsHooked = true; C_EventIsHooked = true;
} }
return C_Profile_Colors[color]; return C_Profile_Colors[color];
} }
@ -301,13 +301,13 @@ stock void C_ReplaceColor(C_Colors color, C_Colors newColor)
if (!C_EventIsHooked) if (!C_EventIsHooked)
{ {
C_SetupProfile(); C_SetupProfile();
C_EventIsHooked = true; C_EventIsHooked = true;
} }
C_Profile_Colors[color] = C_Profile_Colors[newColor]; C_Profile_Colors[color] = C_Profile_Colors[newColor];
C_Profile_TeamIndex[color] = C_Profile_TeamIndex[newColor]; C_Profile_TeamIndex[color] = C_Profile_TeamIndex[newColor];
C_TagReqSayText2[color] = C_TagReqSayText2[newColor]; C_TagReqSayText2[color] = C_TagReqSayText2[newColor];
Format(C_TagCode[color], sizeof(C_TagCode[]), C_TagCode[newColor]); Format(C_TagCode[color], sizeof(C_TagCode[]), C_TagCode[newColor]);
} }
@ -318,7 +318,7 @@ stock void C_ReplaceColor(C_Colors color, C_Colors newColor)
* to those funcions to skip specified client when printing * to those funcions to skip specified client when printing
* message to all clients. After message is printed client will * message to all clients. After message is printed client will
* no more be skipped. * no more be skipped.
* *
* @param client Client index * @param client Client index
* @return No return * @return No return
*/ */
@ -326,7 +326,7 @@ stock void C_SkipNextClient(int client)
{ {
if (client <= 0 || client > MaxClients) if (client <= 0 || client > MaxClients)
ThrowError("Invalid client index %d", client); ThrowError("Invalid client index %d", client);
C_SkipList[client] = true; C_SkipList[client] = true;
} }
@ -336,7 +336,7 @@ stock void C_SkipNextClient(int client)
* @param szMessage String. * @param szMessage String.
* @param maxlength Maximum length of the string buffer. * @param maxlength Maximum length of the string buffer.
* @return Client index that can be used for SayText2 author index * @return Client index that can be used for SayText2 author index
* *
* On error/Errors: If there is more then one team color is used an error will be thrown. * On error/Errors: If there is more then one team color is used an error will be thrown.
*/ */
stock int C_Format(char[] szMessage, int maxlength, int author = NO_INDEX) stock int C_Format(char[] szMessage, int maxlength, int author = NO_INDEX)
@ -346,25 +346,25 @@ stock int C_Format(char[] szMessage, int maxlength, int author = NO_INDEX)
{ {
C_SetupProfile(); C_SetupProfile();
HookEvent("server_spawn", C_Event_MapStart, EventHookMode_PostNoCopy); HookEvent("server_spawn", C_Event_MapStart, EventHookMode_PostNoCopy);
C_EventIsHooked = true; C_EventIsHooked = true;
} }
int iRandomPlayer = NO_INDEX; int iRandomPlayer = NO_INDEX;
// On CS:GO set invisible precolor // On CS:GO set invisible precolor
if (GetEngineVersion() == Engine_CSGO) if (GetEngineVersion() == Engine_CSGO)
{ {
Format(szMessage, maxlength, " %s", szMessage); Format(szMessage, maxlength, " %s", szMessage);
} }
/* If author was specified replace {teamcolor} tag */ /* If author was specified replace {teamcolor} tag */
if (author != NO_INDEX) if (author != NO_INDEX)
{ {
if (C_Profile_SayText2) if (C_Profile_SayText2)
{ {
ReplaceString(szMessage, maxlength, "{teamcolor}", "\x03", false); ReplaceString(szMessage, maxlength, "{teamcolor}", "\x03", false);
iRandomPlayer = author; iRandomPlayer = author;
} }
/* If saytext2 is not supported by game replace {teamcolor} with green tag */ /* If saytext2 is not supported by game replace {teamcolor} with green tag */
@ -373,18 +373,18 @@ stock int C_Format(char[] szMessage, int maxlength, int author = NO_INDEX)
} }
else else
ReplaceString(szMessage, maxlength, "{teamcolor}", "", false); ReplaceString(szMessage, maxlength, "{teamcolor}", "", false);
/* For other color tags we need a loop */ /* For other color tags we need a loop */
for (int i = 0; i < MAX_COLORS; i++) for (int i = 0; i < MAX_COLORS; i++)
{ {
/* If tag not found - skip */ /* If tag not found - skip */
if (StrContains(szMessage, C_Tag[i], false) == -1) if (StrContains(szMessage, C_Tag[i], false) == -1)
continue; continue;
/* If tag is not supported by game replace it with green tag */ /* If tag is not supported by game replace it with green tag */
else if (!C_Profile_Colors[i]) else if (!C_Profile_Colors[i])
ReplaceString(szMessage, maxlength, C_Tag[i], C_TagCode[Color_Green], false); ReplaceString(szMessage, maxlength, C_Tag[i], C_TagCode[Color_Green], false);
/* If tag doesn't need saytext2 simply replace */ /* If tag doesn't need saytext2 simply replace */
else if (!C_TagReqSayText2[i]) else if (!C_TagReqSayText2[i])
ReplaceString(szMessage, maxlength, C_Tag[i], C_TagCode[i], false); ReplaceString(szMessage, maxlength, C_Tag[i], C_TagCode[i], false);
@ -395,16 +395,16 @@ stock int C_Format(char[] szMessage, int maxlength, int author = NO_INDEX)
/* If saytext2 is not supported by game replace tag with green tag */ /* If saytext2 is not supported by game replace tag with green tag */
if (!C_Profile_SayText2) if (!C_Profile_SayText2)
ReplaceString(szMessage, maxlength, C_Tag[i], C_TagCode[Color_Green], false); ReplaceString(szMessage, maxlength, C_Tag[i], C_TagCode[Color_Green], false);
/* Game supports saytext2 */ /* Game supports saytext2 */
else else
{ {
/* If random player for tag wasn't specified replace tag and find player */ /* If random player for tag wasn't specified replace tag and find player */
if (iRandomPlayer == NO_INDEX) if (iRandomPlayer == NO_INDEX)
{ {
/* Searching for valid client for tag */ /* Searching for valid client for tag */
iRandomPlayer = C_FindRandomPlayerByTeam(C_Profile_TeamIndex[i]); iRandomPlayer = C_FindRandomPlayerByTeam(C_Profile_TeamIndex[i]);
/* If player not found replace tag with green color tag */ /* If player not found replace tag with green color tag */
if (iRandomPlayer == NO_PLAYER) if (iRandomPlayer == NO_PLAYER)
ReplaceString(szMessage, maxlength, C_Tag[i], C_TagCode[Color_Green], false); ReplaceString(szMessage, maxlength, C_Tag[i], C_TagCode[Color_Green], false);
@ -412,7 +412,7 @@ stock int C_Format(char[] szMessage, int maxlength, int author = NO_INDEX)
/* If player was found simply replace */ /* If player was found simply replace */
else else
ReplaceString(szMessage, maxlength, C_Tag[i], C_TagCode[i], false); ReplaceString(szMessage, maxlength, C_Tag[i], C_TagCode[i], false);
} }
/* If found another team color tag throw error */ /* If found another team color tag throw error */
else else
@ -421,10 +421,10 @@ stock int C_Format(char[] szMessage, int maxlength, int author = NO_INDEX)
ThrowError("Using two team colors in one message is not allowed"); ThrowError("Using two team colors in one message is not allowed");
} }
} }
} }
} }
return iRandomPlayer; return iRandomPlayer;
} }
@ -444,7 +444,7 @@ stock int C_FindRandomPlayerByTeam(int color_team)
{ {
if (i > 0 && IsClientInGame(i) && GetClientTeam(i) == color_team) if (i > 0 && IsClientInGame(i) && GetClientTeam(i) == color_team)
return i; return i;
} }
} }
return NO_PLAYER; return NO_PLAYER;
@ -461,8 +461,8 @@ stock int C_FindRandomPlayerByTeam(int color_team)
stock void C_SayText2(int client, int author, const char[] szMessage) stock void C_SayText2(int client, int author, const char[] szMessage)
{ {
Handle hBuffer = StartMessageOne("SayText2", client, USERMSG_RELIABLE|USERMSG_BLOCKHOOKS); Handle hBuffer = StartMessageOne("SayText2", client, USERMSG_RELIABLE|USERMSG_BLOCKHOOKS);
if(GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available && GetUserMessageType() == UM_Protobuf) if(GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available && GetUserMessageType() == UM_Protobuf)
{ {
PbSetInt(hBuffer, "ent_idx", author); PbSetInt(hBuffer, "ent_idx", author);
PbSetBool(hBuffer, "chat", true); PbSetBool(hBuffer, "chat", true);
@ -478,12 +478,12 @@ stock void C_SayText2(int client, int author, const char[] szMessage)
BfWriteByte(hBuffer, true); BfWriteByte(hBuffer, true);
BfWriteString(hBuffer, szMessage); BfWriteString(hBuffer, szMessage);
} }
EndMessage(); EndMessage();
} }
/** /**
* Creates game color profile * Creates game color profile
* This function must be edited if you want to add more games support * This function must be edited if you want to add more games support
* *
* @return No return. * @return No return.
@ -491,7 +491,7 @@ stock void C_SayText2(int client, int author, const char[] szMessage)
stock void C_SetupProfile() stock void C_SetupProfile()
{ {
EngineVersion engine = GetEngineVersion(); EngineVersion engine = GetEngineVersion();
if (engine == Engine_CSS) if (engine == Engine_CSS)
{ {
C_Profile_Colors[Color_Lightgreen] = true; C_Profile_Colors[Color_Lightgreen] = true;
@ -540,7 +540,7 @@ stock void C_SetupProfile()
C_Profile_Colors[Color_Lightgreen] = true; C_Profile_Colors[Color_Lightgreen] = true;
C_Profile_Colors[Color_Red] = true; C_Profile_Colors[Color_Red] = true;
C_Profile_Colors[Color_Blue] = true; C_Profile_Colors[Color_Blue] = true;
C_Profile_Colors[Color_Olive] = true; C_Profile_Colors[Color_Olive] = true;
C_Profile_TeamIndex[Color_Lightgreen] = SERVER_INDEX; C_Profile_TeamIndex[Color_Lightgreen] = SERVER_INDEX;
C_Profile_TeamIndex[Color_Red] = 3; C_Profile_TeamIndex[Color_Red] = 3;
C_Profile_TeamIndex[Color_Blue] = 2; C_Profile_TeamIndex[Color_Blue] = 2;
@ -590,18 +590,18 @@ stock void C_SetupProfile()
public Action C_Event_MapStart(Event event, const char[] name, bool dontBroadcast) public Action C_Event_MapStart(Event event, const char[] name, bool dontBroadcast)
{ {
C_SetupProfile(); C_SetupProfile();
MuCo_LoopClients(i) MuCo_LoopClients(i)
C_SkipList[i] = false; C_SkipList[i] = false;
} }
/** /**
* Displays usage of an admin command to users depending on the * Displays usage of an admin command to users depending on the
* setting of the sm_show_activity cvar. * setting of the sm_show_activity cvar.
* *
* This version does not display a message to the originating client * This version does not display a message to the originating client
* if used from chat triggers or menus. If manual replies are used * if used from chat triggers or menus. If manual replies are used
* for these cases, then this function will suffice. Otherwise, * for these cases, then this function will suffice. Otherwise,
* C_ShowActivity2() is slightly more useful. * C_ShowActivity2() is slightly more useful.
* Supports color tags. * Supports color tags.
* *
@ -615,14 +615,14 @@ stock int C_ShowActivity(int client, const char[] format, any ...)
{ {
if (sm_show_activity == null) if (sm_show_activity == null)
sm_show_activity = FindConVar("sm_show_activity"); sm_show_activity = FindConVar("sm_show_activity");
char tag[] = "[SM] "; char tag[] = "[SM] ";
char szBuffer[MAX_MESSAGE_LENGTH]; char szBuffer[MAX_MESSAGE_LENGTH];
//char szCMessage[MAX_MESSAGE_LENGTH]; //char szCMessage[MAX_MESSAGE_LENGTH];
int value = GetConVarInt(sm_show_activity); int value = GetConVarInt(sm_show_activity);
ReplySource replyto = GetCmdReplySource(); ReplySource replyto = GetCmdReplySource();
char name[MAX_NAME_LENGTH] = "Console"; char name[MAX_NAME_LENGTH] = "Console";
char sign[MAX_NAME_LENGTH] = "ADMIN"; char sign[MAX_NAME_LENGTH] = "ADMIN";
bool display_in_chat = false; bool display_in_chat = false;
@ -630,7 +630,7 @@ stock int C_ShowActivity(int client, const char[] format, any ...)
{ {
if (client < 0 || client > MaxClients || !IsClientConnected(client)) if (client < 0 || client > MaxClients || !IsClientConnected(client))
ThrowError("Client index %d is invalid", client); ThrowError("Client index %d is invalid", client);
GetClientName(client, name, sizeof(name)); GetClientName(client, name, sizeof(name));
AdminId id = GetUserAdmin(client); AdminId id = GetUserAdmin(client);
if (id == INVALID_ADMIN_ID if (id == INVALID_ADMIN_ID
@ -638,13 +638,13 @@ stock int C_ShowActivity(int client, const char[] format, any ...)
{ {
sign = "PLAYER"; sign = "PLAYER";
} }
/* Display the message to the client? */ /* Display the message to the client? */
if (replyto == SM_REPLY_TO_CONSOLE) if (replyto == SM_REPLY_TO_CONSOLE)
{ {
SetGlobalTransTarget(client); SetGlobalTransTarget(client);
VFormat(szBuffer, sizeof(szBuffer), format, 3); VFormat(szBuffer, sizeof(szBuffer), format, 3);
C_RemoveTags(szBuffer, sizeof(szBuffer)); C_RemoveTags(szBuffer, sizeof(szBuffer));
PrintToConsole(client, "%s%s\n", tag, szBuffer); PrintToConsole(client, "%s%s\n", tag, szBuffer);
display_in_chat = true; display_in_chat = true;
@ -654,16 +654,16 @@ stock int C_ShowActivity(int client, const char[] format, any ...)
{ {
SetGlobalTransTarget(LANG_SERVER); SetGlobalTransTarget(LANG_SERVER);
VFormat(szBuffer, sizeof(szBuffer), format, 3); VFormat(szBuffer, sizeof(szBuffer), format, 3);
C_RemoveTags(szBuffer, sizeof(szBuffer)); C_RemoveTags(szBuffer, sizeof(szBuffer));
PrintToServer("%s%s\n", tag, szBuffer); PrintToServer("%s%s\n", tag, szBuffer);
} }
if (!value) if (!value)
{ {
return 1; return 1;
} }
MuCo_LoopClients(i) MuCo_LoopClients(i)
{ {
if (i == 0 if (i == 0
@ -688,7 +688,7 @@ stock int C_ShowActivity(int client, const char[] format, any ...)
newsign = name; newsign = name;
} }
VFormat(szBuffer, sizeof(szBuffer), format, 3); VFormat(szBuffer, sizeof(szBuffer), format, 3);
C_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer); C_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer);
} }
} }
@ -707,12 +707,12 @@ stock int C_ShowActivity(int client, const char[] format, any ...)
newsign = name; newsign = name;
} }
VFormat(szBuffer, sizeof(szBuffer), format, 3); VFormat(szBuffer, sizeof(szBuffer), format, 3);
C_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer); C_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer);
} }
} }
} }
return 1; return 1;
} }
@ -731,12 +731,12 @@ stock int C_ShowActivityEx(int client, const char[] tag, const char[] format, an
{ {
if (sm_show_activity == null) if (sm_show_activity == null)
sm_show_activity = FindConVar("sm_show_activity"); sm_show_activity = FindConVar("sm_show_activity");
char szBuffer[MAX_MESSAGE_LENGTH]; char szBuffer[MAX_MESSAGE_LENGTH];
//char szCMessage[MAX_MESSAGE_LENGTH]; //char szCMessage[MAX_MESSAGE_LENGTH];
int value = GetConVarInt(sm_show_activity); int value = GetConVarInt(sm_show_activity);
ReplySource replyto = GetCmdReplySource(); ReplySource replyto = GetCmdReplySource();
char name[MAX_NAME_LENGTH] = "Console"; char name[MAX_NAME_LENGTH] = "Console";
char sign[MAX_NAME_LENGTH] = "ADMIN"; char sign[MAX_NAME_LENGTH] = "ADMIN";
bool display_in_chat = false; bool display_in_chat = false;
@ -744,7 +744,7 @@ stock int C_ShowActivityEx(int client, const char[] tag, const char[] format, an
{ {
if (client < 0 || client > MaxClients || !IsClientConnected(client)) if (client < 0 || client > MaxClients || !IsClientConnected(client))
ThrowError("Client index %d is invalid", client); ThrowError("Client index %d is invalid", client);
GetClientName(client, name, sizeof(name)); GetClientName(client, name, sizeof(name));
AdminId id = GetUserAdmin(client); AdminId id = GetUserAdmin(client);
if (id == INVALID_ADMIN_ID if (id == INVALID_ADMIN_ID
@ -752,13 +752,13 @@ stock int C_ShowActivityEx(int client, const char[] tag, const char[] format, an
{ {
sign = "PLAYER"; sign = "PLAYER";
} }
/* Display the message to the client? */ /* Display the message to the client? */
if (replyto == SM_REPLY_TO_CONSOLE) if (replyto == SM_REPLY_TO_CONSOLE)
{ {
SetGlobalTransTarget(client); SetGlobalTransTarget(client);
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
C_RemoveTags(szBuffer, sizeof(szBuffer)); C_RemoveTags(szBuffer, sizeof(szBuffer));
PrintToConsole(client, "%s%s\n", tag, szBuffer); PrintToConsole(client, "%s%s\n", tag, szBuffer);
display_in_chat = true; display_in_chat = true;
@ -768,16 +768,16 @@ stock int C_ShowActivityEx(int client, const char[] tag, const char[] format, an
{ {
SetGlobalTransTarget(LANG_SERVER); SetGlobalTransTarget(LANG_SERVER);
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
C_RemoveTags(szBuffer, sizeof(szBuffer)); C_RemoveTags(szBuffer, sizeof(szBuffer));
PrintToServer("%s%s\n", tag, szBuffer); PrintToServer("%s%s\n", tag, szBuffer);
} }
if (!value) if (!value)
{ {
return 1; return 1;
} }
MuCo_LoopClients(i) MuCo_LoopClients(i)
{ {
if (i == 0 if (i == 0
@ -802,7 +802,7 @@ stock int C_ShowActivityEx(int client, const char[] tag, const char[] format, an
newsign = name; newsign = name;
} }
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
C_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer); C_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer);
} }
} }
@ -821,18 +821,18 @@ stock int C_ShowActivityEx(int client, const char[] tag, const char[] format, an
newsign = name; newsign = name;
} }
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
C_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer); C_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer);
} }
} }
} }
return 1; return 1;
} }
/** /**
* Displays usage of an admin command to users depending on the setting of the sm_show_activity cvar. * Displays usage of an admin command to users depending on the setting of the sm_show_activity cvar.
* All users receive a message in their chat text, except for the originating client, * All users receive a message in their chat text, except for the originating client,
* who receives the message based on the current ReplySource. * who receives the message based on the current ReplySource.
* Supports color tags. * Supports color tags.
* *
@ -847,19 +847,19 @@ stock int C_ShowActivity2(int client, const char[] tag, const char[] format, any
{ {
if (sm_show_activity == null) if (sm_show_activity == null)
sm_show_activity = FindConVar("sm_show_activity"); sm_show_activity = FindConVar("sm_show_activity");
char szBuffer[MAX_MESSAGE_LENGTH]; char szBuffer[MAX_MESSAGE_LENGTH];
//char szCMessage[MAX_MESSAGE_LENGTH]; //char szCMessage[MAX_MESSAGE_LENGTH];
int value = GetConVarInt(sm_show_activity); int value = GetConVarInt(sm_show_activity);
// ReplySource replyto = GetCmdReplySource(); // ReplySource replyto = GetCmdReplySource();
char name[MAX_NAME_LENGTH] = "Console"; char name[MAX_NAME_LENGTH] = "Console";
char sign[MAX_NAME_LENGTH] = "ADMIN"; char sign[MAX_NAME_LENGTH] = "ADMIN";
if (client != 0) if (client != 0)
{ {
if (client < 0 || client > MaxClients || !IsClientConnected(client)) if (client < 0 || client > MaxClients || !IsClientConnected(client))
ThrowError("Client index %d is invalid", client); ThrowError("Client index %d is invalid", client);
GetClientName(client, name, sizeof(name)); GetClientName(client, name, sizeof(name));
AdminId id = GetUserAdmin(client); AdminId id = GetUserAdmin(client);
if (id == INVALID_ADMIN_ID if (id == INVALID_ADMIN_ID
@ -867,30 +867,30 @@ stock int C_ShowActivity2(int client, const char[] tag, const char[] format, any
{ {
sign = "PLAYER"; sign = "PLAYER";
} }
SetGlobalTransTarget(client); SetGlobalTransTarget(client);
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
/* We don't display directly to the console because the chat text /* We don't display directly to the console because the chat text
* simply gets added to the console, so we don't want it to print * simply gets added to the console, so we don't want it to print
* twice. * twice.
*/ */
C_PrintToChatEx(client, client, "%s%s", tag, szBuffer); C_PrintToChatEx(client, client, "%s%s", tag, szBuffer);
} }
else else
{ {
SetGlobalTransTarget(LANG_SERVER); SetGlobalTransTarget(LANG_SERVER);
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
C_RemoveTags(szBuffer, sizeof(szBuffer)); C_RemoveTags(szBuffer, sizeof(szBuffer));
PrintToServer("%s%s\n", tag, szBuffer); PrintToServer("%s%s\n", tag, szBuffer);
} }
if (!value) if (!value)
{ {
return 1; return 1;
} }
MuCo_LoopClients(i) MuCo_LoopClients(i)
{ {
if (i == 0 if (i == 0
@ -915,7 +915,7 @@ stock int C_ShowActivity2(int client, const char[] tag, const char[] format, any
newsign = name; newsign = name;
} }
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
C_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer); C_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer);
} }
} }
@ -934,11 +934,11 @@ stock int C_ShowActivity2(int client, const char[] tag, const char[] format, any
newsign = name; newsign = name;
} }
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
C_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer); C_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer);
} }
} }
} }
return 1; return 1;
} }

View File

@ -29,11 +29,11 @@ static Handle sm_show_activity = INVALID_HANDLE;
/** /**
* Prints a message to a specific client in the chat area. * Prints a message to a specific client in the chat area.
* Supports color tags. * Supports color tags.
* *
* @param client Client index. * @param client Client index.
* @param message Message (formatting rules). * @param message Message (formatting rules).
* @noreturn * @noreturn
* *
* On error/Errors: If the client is not connected an error will be thrown. * On error/Errors: If the client is not connected an error will be thrown.
*/ */
stock void MC_PrintToChat(int client, const char[] message, any ...) { stock void MC_PrintToChat(int client, const char[] message, any ...) {
@ -55,7 +55,7 @@ stock void MC_PrintToChat(int client, const char[] message, any ...) {
/** /**
* Prints a message to all clients in the chat area. * Prints a message to all clients in the chat area.
* Supports color tags. * Supports color tags.
* *
* @param client Client index. * @param client Client index.
* @param message Message (formatting rules). * @param message Message (formatting rules).
* @noreturn * @noreturn
@ -79,12 +79,12 @@ stock void MC_PrintToChatAll(const char[] message, any ...) {
/** /**
* Prints a message to a specific client in the chat area. * Prints a message to a specific client in the chat area.
* Supports color tags and teamcolor tag. * Supports color tags and teamcolor tag.
* *
* @param client Client index. * @param client Client index.
* @param author Author index whose color will be used for teamcolor tag. * @param author Author index whose color will be used for teamcolor tag.
* @param message Message (formatting rules). * @param message Message (formatting rules).
* @noreturn * @noreturn
* *
* On error/Errors: If the client or author are not connected an error will be thrown * On error/Errors: If the client or author are not connected an error will be thrown
*/ */
stock void MC_PrintToChatEx(int client, int author, const char[] message, any ...) { stock void MC_PrintToChatEx(int client, int author, const char[] message, any ...) {
@ -116,7 +116,7 @@ stock void MC_PrintToChatEx(int client, int author, const char[] message, any ..
* @param author Author index whose color will be used for teamcolor tag. * @param author Author index whose color will be used for teamcolor tag.
* @param message Message (formatting rules). * @param message Message (formatting rules).
* @noreturn * @noreturn
* *
* On error/Errors: If the author is not connected an error will be thrown. * On error/Errors: If the author is not connected an error will be thrown.
*/ */
stock void MC_PrintToChatAllEx(int author, const char[] message, any ...) { stock void MC_PrintToChatAllEx(int author, const char[] message, any ...) {
@ -143,7 +143,7 @@ stock void MC_PrintToChatAllEx(int author, const char[] message, any ...) {
/** /**
* Sends a SayText2 usermessage * Sends a SayText2 usermessage
* *
* @param client Client to send usermessage to * @param client Client to send usermessage to
* @param message Message to send * @param message Message to send
* @noreturn * @noreturn
@ -191,7 +191,7 @@ stock void MC_SendMessage(int client, const char[] message, int author = 0) {
* MC_PrintToChatAll or MC_PrintToChatAllEx. It causes those functions * MC_PrintToChatAll or MC_PrintToChatAllEx. It causes those functions
* to skip the specified client when printing the message. * to skip the specified client when printing the message.
* After printing the message, the client will no longer be skipped. * After printing the message, the client will no longer be skipped.
* *
* @param client Client index * @param client Client index
* @noreturn * @noreturn
*/ */
@ -204,7 +204,7 @@ stock void MC_SkipNextClient(int client) {
/** /**
* Checks if the colors trie is initialized and initializes it if it's not (used internally) * Checks if the colors trie is initialized and initializes it if it's not (used internally)
* *
* @return No return * @return No return
*/ */
stock void MC_CheckTrie() { stock void MC_CheckTrie() {
@ -221,7 +221,7 @@ stock void MC_CheckTrie() {
* @param removeTags Optional boolean value to determine whether we're replacing tags with colors, or just removing tags, used by MC_RemoveTags * @param removeTags Optional boolean value to determine whether we're replacing tags with colors, or just removing tags, used by MC_RemoveTags
* @param maxlen Optional value for max buffer length, used by MC_RemoveTags * @param maxlen Optional value for max buffer length, used by MC_RemoveTags
* @noreturn * @noreturn
* *
* On error/Errors: If the client index passed for author is invalid or not in game. * On error/Errors: If the client index passed for author is invalid or not in game.
*/ */
stock void MC_ReplaceColorCodes(char[] buffer, int author = 0, bool removeTags = false, int maxlen = MAX_BUFFER_LENGTH) { stock void MC_ReplaceColorCodes(char[] buffer, int author = 0, bool removeTags = false, int maxlen = MAX_BUFFER_LENGTH) {
@ -243,12 +243,12 @@ stock void MC_ReplaceColorCodes(char[] buffer, int author = 0, bool removeTags =
} }
int cursor = 0; int cursor = 0;
int value; int value;
char tag[32], buff[32]; char tag[32], buff[32];
char[] output = new char[maxlen]; char[] output = new char[maxlen];
strcopy(output, maxlen, buffer); strcopy(output, maxlen, buffer);
// Since the string's size is going to be changing, output will hold the replaced string and we'll search buffer // Since the string's size is going to be changing, output will hold the replaced string and we'll search buffer
Handle regex = CompileRegex("{[a-zA-Z0-9]+}"); Handle regex = CompileRegex("{[a-zA-Z0-9]+}");
for(int i = 0; i < 1000; i++) { // The RegEx extension is quite flaky, so we have to loop here :/. This loop is supposed to be infinite and broken by return, but conditions have been added to be safe. for(int i = 0; i < 1000; i++) { // The RegEx extension is quite flaky, so we have to loop here :/. This loop is supposed to be infinite and broken by return, but conditions have been added to be safe.
if(MatchRegex(regex, buffer[cursor]) < 1) { if(MatchRegex(regex, buffer[cursor]) < 1) {
@ -262,11 +262,11 @@ stock void MC_ReplaceColorCodes(char[] buffer, int author = 0, bool removeTags =
strcopy(buff, sizeof(buff), tag); strcopy(buff, sizeof(buff), tag);
ReplaceString(buff, sizeof(buff), "{", ""); ReplaceString(buff, sizeof(buff), "{", "");
ReplaceString(buff, sizeof(buff), "}", ""); ReplaceString(buff, sizeof(buff), "}", "");
if(!GetTrieValue(MC_Trie, buff, value)) { if(!GetTrieValue(MC_Trie, buff, value)) {
continue; continue;
} }
if(removeTags) { if(removeTags) {
ReplaceString(output, maxlen, tag, "", false); ReplaceString(output, maxlen, tag, "", false);
} else { } else {
@ -279,7 +279,7 @@ stock void MC_ReplaceColorCodes(char[] buffer, int author = 0, bool removeTags =
/** /**
* Gets a part of a string * Gets a part of a string
* *
* @param input String to get the part from * @param input String to get the part from
* @param output Buffer to write to * @param output Buffer to write to
* @param maxlen Max length of output buffer * @param maxlen Max length of output buffer
@ -301,7 +301,7 @@ stock void CSubString(const char[] input, char[] output, int maxlen, int start,
/** /**
* Converts a string to lowercase * Converts a string to lowercase
* *
* @param buffer String to convert * @param buffer String to convert
* @noreturn * @noreturn
*/ */
@ -334,7 +334,7 @@ stock bool MC_AddColor(const char[] name, int color) {
/** /**
* Removes color tags from a message * Removes color tags from a message
* *
* @param message Message to remove tags from * @param message Message to remove tags from
* @param maxlen Maximum buffer length * @param maxlen Maximum buffer length
* @noreturn * @noreturn
@ -345,7 +345,7 @@ stock void MC_RemoveTags(char[] message, int maxlen) {
/** /**
* Replies to a command with colors * Replies to a command with colors
* *
* @param client Client to reply to * @param client Client to reply to
* @param message Message (formatting rules) * @param message Message (formatting rules)
* @noreturn * @noreturn
@ -364,7 +364,7 @@ stock void MC_ReplyToCommand(int client, const char[] message, any ...) {
/** /**
* Replies to a command with colors * Replies to a command with colors
* *
* @param client Client to reply to * @param client Client to reply to
* @param author Client to use for {teamcolor} * @param author Client to use for {teamcolor}
* @param message Message (formatting rules) * @param message Message (formatting rules)
@ -383,12 +383,12 @@ stock void MC_ReplyToCommandEx(int client, int author, const char[] message, any
} }
/** /**
* Displays usage of an admin command to users depending on the * Displays usage of an admin command to users depending on the
* setting of the sm_show_activity cvar. * setting of the sm_show_activity cvar.
* *
* This version does not display a message to the originating client * This version does not display a message to the originating client
* if used from chat triggers or menus. If manual replies are used * if used from chat triggers or menus. If manual replies are used
* for these cases, then this function will suffice. Otherwise, * for these cases, then this function will suffice. Otherwise,
* MC_ShowActivity2() is slightly more useful. * MC_ShowActivity2() is slightly more useful.
* Supports color tags. * Supports color tags.
* *
@ -402,14 +402,14 @@ stock int MC_ShowActivity(int client, const char[] format, any ...)
{ {
if (sm_show_activity == INVALID_HANDLE) if (sm_show_activity == INVALID_HANDLE)
sm_show_activity = FindConVar("sm_show_activity"); sm_show_activity = FindConVar("sm_show_activity");
char tag[] = "[SM] "; char tag[] = "[SM] ";
char szBuffer[MC_MAX_MESSAGE_LENGTH]; char szBuffer[MC_MAX_MESSAGE_LENGTH];
//char szCMessage[MC_MAX_MESSAGE_LENGTH]; //char szCMessage[MC_MAX_MESSAGE_LENGTH];
int value = GetConVarInt(sm_show_activity); int value = GetConVarInt(sm_show_activity);
ReplySource replyto = GetCmdReplySource(); ReplySource replyto = GetCmdReplySource();
char name[MAX_NAME_LENGTH] = "Console"; char name[MAX_NAME_LENGTH] = "Console";
char sign[MAX_NAME_LENGTH] = "ADMIN"; char sign[MAX_NAME_LENGTH] = "ADMIN";
bool display_in_chat = false; bool display_in_chat = false;
@ -417,7 +417,7 @@ stock int MC_ShowActivity(int client, const char[] format, any ...)
{ {
if (client < 0 || client > MaxClients || !IsClientConnected(client)) if (client < 0 || client > MaxClients || !IsClientConnected(client))
ThrowError("Client index %d is invalid", client); ThrowError("Client index %d is invalid", client);
GetClientName(client, name, sizeof(name)); GetClientName(client, name, sizeof(name));
AdminId id = GetUserAdmin(client); AdminId id = GetUserAdmin(client);
if (id == INVALID_ADMIN_ID if (id == INVALID_ADMIN_ID
@ -425,13 +425,13 @@ stock int MC_ShowActivity(int client, const char[] format, any ...)
{ {
sign = "PLAYER"; sign = "PLAYER";
} }
/* Display the message to the client? */ /* Display the message to the client? */
if (replyto == SM_REPLY_TO_CONSOLE) if (replyto == SM_REPLY_TO_CONSOLE)
{ {
SetGlobalTransTarget(client); SetGlobalTransTarget(client);
VFormat(szBuffer, sizeof(szBuffer), format, 3); VFormat(szBuffer, sizeof(szBuffer), format, 3);
MC_RemoveTags(szBuffer, sizeof(szBuffer)); MC_RemoveTags(szBuffer, sizeof(szBuffer));
PrintToConsole(client, "%s%s\n", tag, szBuffer); PrintToConsole(client, "%s%s\n", tag, szBuffer);
display_in_chat = true; display_in_chat = true;
@ -441,16 +441,16 @@ stock int MC_ShowActivity(int client, const char[] format, any ...)
{ {
SetGlobalTransTarget(LANG_SERVER); SetGlobalTransTarget(LANG_SERVER);
VFormat(szBuffer, sizeof(szBuffer), format, 3); VFormat(szBuffer, sizeof(szBuffer), format, 3);
MC_RemoveTags(szBuffer, sizeof(szBuffer)); MC_RemoveTags(szBuffer, sizeof(szBuffer));
PrintToServer("%s%s\n", tag, szBuffer); PrintToServer("%s%s\n", tag, szBuffer);
} }
if (!value) if (!value)
{ {
return 1; return 1;
} }
MuCo_LoopClients(i) MuCo_LoopClients(i)
{ {
if (i == 0 if (i == 0
@ -475,7 +475,7 @@ stock int MC_ShowActivity(int client, const char[] format, any ...)
newsign = name; newsign = name;
} }
VFormat(szBuffer, sizeof(szBuffer), format, 3); VFormat(szBuffer, sizeof(szBuffer), format, 3);
MC_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer); MC_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer);
} }
} }
@ -494,12 +494,12 @@ stock int MC_ShowActivity(int client, const char[] format, any ...)
newsign = name; newsign = name;
} }
VFormat(szBuffer, sizeof(szBuffer), format, 3); VFormat(szBuffer, sizeof(szBuffer), format, 3);
MC_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer); MC_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer);
} }
} }
} }
return 1; return 1;
} }
@ -518,12 +518,12 @@ stock int MC_ShowActivityEx(int client, const char[] tag, const char[] format, a
{ {
if (sm_show_activity == INVALID_HANDLE) if (sm_show_activity == INVALID_HANDLE)
sm_show_activity = FindConVar("sm_show_activity"); sm_show_activity = FindConVar("sm_show_activity");
char szBuffer[MC_MAX_MESSAGE_LENGTH]; char szBuffer[MC_MAX_MESSAGE_LENGTH];
//char szCMessage[MC_MAX_MESSAGE_LENGTH]; //char szCMessage[MC_MAX_MESSAGE_LENGTH];
int value = GetConVarInt(sm_show_activity); int value = GetConVarInt(sm_show_activity);
ReplySource replyto = GetCmdReplySource(); ReplySource replyto = GetCmdReplySource();
char name[MAX_NAME_LENGTH] = "Console"; char name[MAX_NAME_LENGTH] = "Console";
char sign[MAX_NAME_LENGTH] = "ADMIN"; char sign[MAX_NAME_LENGTH] = "ADMIN";
bool display_in_chat = false; bool display_in_chat = false;
@ -531,7 +531,7 @@ stock int MC_ShowActivityEx(int client, const char[] tag, const char[] format, a
{ {
if (client < 0 || client > MaxClients || !IsClientConnected(client)) if (client < 0 || client > MaxClients || !IsClientConnected(client))
ThrowError("Client index %d is invalid", client); ThrowError("Client index %d is invalid", client);
GetClientName(client, name, sizeof(name)); GetClientName(client, name, sizeof(name));
AdminId id = GetUserAdmin(client); AdminId id = GetUserAdmin(client);
if (id == INVALID_ADMIN_ID if (id == INVALID_ADMIN_ID
@ -539,13 +539,13 @@ stock int MC_ShowActivityEx(int client, const char[] tag, const char[] format, a
{ {
sign = "PLAYER"; sign = "PLAYER";
} }
/* Display the message to the client? */ /* Display the message to the client? */
if (replyto == SM_REPLY_TO_CONSOLE) if (replyto == SM_REPLY_TO_CONSOLE)
{ {
SetGlobalTransTarget(client); SetGlobalTransTarget(client);
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
MC_RemoveTags(szBuffer, sizeof(szBuffer)); MC_RemoveTags(szBuffer, sizeof(szBuffer));
PrintToConsole(client, "%s%s\n", tag, szBuffer); PrintToConsole(client, "%s%s\n", tag, szBuffer);
display_in_chat = true; display_in_chat = true;
@ -555,16 +555,16 @@ stock int MC_ShowActivityEx(int client, const char[] tag, const char[] format, a
{ {
SetGlobalTransTarget(LANG_SERVER); SetGlobalTransTarget(LANG_SERVER);
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
MC_RemoveTags(szBuffer, sizeof(szBuffer)); MC_RemoveTags(szBuffer, sizeof(szBuffer));
PrintToServer("%s%s\n", tag, szBuffer); PrintToServer("%s%s\n", tag, szBuffer);
} }
if (!value) if (!value)
{ {
return 1; return 1;
} }
MuCo_LoopClients(i) MuCo_LoopClients(i)
{ {
if (i == 0 if (i == 0
@ -589,7 +589,7 @@ stock int MC_ShowActivityEx(int client, const char[] tag, const char[] format, a
newsign = name; newsign = name;
} }
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
MC_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer); MC_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer);
} }
} }
@ -608,18 +608,18 @@ stock int MC_ShowActivityEx(int client, const char[] tag, const char[] format, a
newsign = name; newsign = name;
} }
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
MC_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer); MC_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer);
} }
} }
} }
return 1; return 1;
} }
/** /**
* Displays usage of an admin command to users depending on the setting of the sm_show_activity cvar. * Displays usage of an admin command to users depending on the setting of the sm_show_activity cvar.
* All users receive a message in their chat text, except for the originating client, * All users receive a message in their chat text, except for the originating client,
* who receives the message based on the current ReplySource. * who receives the message based on the current ReplySource.
* Supports color tags. * Supports color tags.
* *
@ -634,19 +634,19 @@ stock int MC_ShowActivity2(int client, const char[] tag, const char[] format, an
{ {
if (sm_show_activity == INVALID_HANDLE) if (sm_show_activity == INVALID_HANDLE)
sm_show_activity = FindConVar("sm_show_activity"); sm_show_activity = FindConVar("sm_show_activity");
char szBuffer[MC_MAX_MESSAGE_LENGTH]; char szBuffer[MC_MAX_MESSAGE_LENGTH];
//char szCMessage[MC_MAX_MESSAGE_LENGTH]; //char szCMessage[MC_MAX_MESSAGE_LENGTH];
int value = GetConVarInt(sm_show_activity); int value = GetConVarInt(sm_show_activity);
// ReplySource replyto = GetCmdReplySource(); // ReplySource replyto = GetCmdReplySource();
char name[MAX_NAME_LENGTH] = "Console"; char name[MAX_NAME_LENGTH] = "Console";
char sign[MAX_NAME_LENGTH] = "ADMIN"; char sign[MAX_NAME_LENGTH] = "ADMIN";
if (client != 0) if (client != 0)
{ {
if (client < 0 || client > MaxClients || !IsClientConnected(client)) if (client < 0 || client > MaxClients || !IsClientConnected(client))
ThrowError("Client index %d is invalid", client); ThrowError("Client index %d is invalid", client);
GetClientName(client, name, sizeof(name)); GetClientName(client, name, sizeof(name));
AdminId id = GetUserAdmin(client); AdminId id = GetUserAdmin(client);
if (id == INVALID_ADMIN_ID if (id == INVALID_ADMIN_ID
@ -654,12 +654,12 @@ stock int MC_ShowActivity2(int client, const char[] tag, const char[] format, an
{ {
sign = "PLAYER"; sign = "PLAYER";
} }
SetGlobalTransTarget(client); SetGlobalTransTarget(client);
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
/* We don't display directly to the console because the chat text /* We don't display directly to the console because the chat text
* simply gets added to the console, so we don't want it to print * simply gets added to the console, so we don't want it to print
* twice. * twice.
*/ */
MC_PrintToChatEx(client, client, "%s%s", tag, szBuffer); MC_PrintToChatEx(client, client, "%s%s", tag, szBuffer);
@ -668,16 +668,16 @@ stock int MC_ShowActivity2(int client, const char[] tag, const char[] format, an
{ {
SetGlobalTransTarget(LANG_SERVER); SetGlobalTransTarget(LANG_SERVER);
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
MC_RemoveTags(szBuffer, sizeof(szBuffer)); MC_RemoveTags(szBuffer, sizeof(szBuffer));
PrintToServer("%s%s\n", tag, szBuffer); PrintToServer("%s%s\n", tag, szBuffer);
} }
if (!value) if (!value)
{ {
return 1; return 1;
} }
MuCo_LoopClients(i) MuCo_LoopClients(i)
{ {
if (i == 0 if (i == 0
@ -702,7 +702,7 @@ stock int MC_ShowActivity2(int client, const char[] tag, const char[] format, an
newsign = name; newsign = name;
} }
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
MC_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer); MC_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer);
} }
} }
@ -721,18 +721,18 @@ stock int MC_ShowActivity2(int client, const char[] tag, const char[] format, an
newsign = name; newsign = name;
} }
VFormat(szBuffer, sizeof(szBuffer), format, 4); VFormat(szBuffer, sizeof(szBuffer), format, 4);
MC_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer); MC_PrintToChatEx(i, client, "%s%s: %s", tag, newsign, szBuffer);
} }
} }
} }
return 1; return 1;
} }
/** /**
* Determines whether a color name exists * Determines whether a color name exists
* *
* @param color The color name to check * @param color The color name to check
* @return True if the color exists, false otherwise * @return True if the color exists, false otherwise
*/ */

View File

@ -1,48 +1,48 @@
/** /**
* Called when a player is about to be freezed by a grenade * Called when a player is about to be freezed by a grenade
* *
* @param client The victim index * @param client The victim index
* @param attacker The client index who threw the grenade * @param attacker The client index who threw the grenade
* @param duration The freeze duration, set by reference * @param duration The freeze duration, set by reference
* @return Plugin_Changed to apply new values, Plugin_Contninue to allow as is and >= Plugin_Handled to block * @return Plugin_Changed to apply new values, Plugin_Contninue to allow as is and >= Plugin_Handled to block
*/ */
forward Action:ZR_OnClientFreeze(client, attacker, &Float:duration); forward Action:ZR_OnClientFreeze(client, attacker, &Float:duration);
/** /**
* Called when a player has been freezed by a grenade * Called when a player has been freezed by a grenade
* *
* @param client The victim index * @param client The victim index
* @param attacker The client index who threw the grenade * @param attacker The client index who threw the grenade
* @param duration The freeze duration * @param duration The freeze duration
* @noreturn * @noreturn
*/ */
forward ZR_OnClientFreezed(client, attacker, Float:duration); forward ZR_OnClientFreezed(client, attacker, Float:duration);
/** /**
* Called when a player is about to be ignited by a grenade * Called when a player is about to be ignited by a grenade
* *
* @param client The victim index * @param client The victim index
* @param attacker The client index who threw the grenade * @param attacker The client index who threw the grenade
* @param duration The ignite duration, set by reference * @param duration The ignite duration, set by reference
* @return Plugin_Changed to apply new values, Plugin_Contninue to allow as is and >= Plugin_Handled to block * @return Plugin_Changed to apply new values, Plugin_Contninue to allow as is and >= Plugin_Handled to block
*/ */
forward Action:ZR_OnClientIgnite(client, attacker, &Float:duration); forward Action:ZR_OnClientIgnite(client, attacker, &Float:duration);
/** /**
* Called when a player has been ignited by a grenade * Called when a player has been ignited by a grenade
* *
* @param client The victim index * @param client The victim index
* @param attacker The client index who threw the grenade * @param attacker The client index who threw the grenade
* @param duration The freeze duration * @param duration The freeze duration
* @noreturn * @noreturn
*/ */
forward ZR_OnClientIgnited(client, attacker, Float:duration); forward ZR_OnClientIgnited(client, attacker, Float:duration);
/** /**
* Called when a grenade will get his effect * Called when a grenade will get his effect
* *
* @param client Client that throw the grenade * @param client Client that throw the grenade
* @param grenade Grenade index * @param grenade Grenade index
* @return Plugin_Continue to allow as is and Plugin_Handled to block effect in the grenade * @return Plugin_Continue to allow as is and Plugin_Handled to block effect in the grenade
*/ */
forward Action:ZR_OnGrenadeEffect(client, grenade); forward Action:ZR_OnGrenadeEffect(client, grenade);

View File

@ -12,7 +12,7 @@
* This program is free software; you can redistribute it and/or modify it under * This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, version 3.0, as published by the * the terms of the GNU General Public License, version 3.0, as published by the
* Free Software Foundation. * Free Software Foundation.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
@ -52,7 +52,7 @@ enum CanNominateResult
/** /**
* Called whenever warning timer starts * Called whenever warning timer starts
* *
*/ */
forward void OnMapVoteWarningStart(); forward void OnMapVoteWarningStart();
@ -68,7 +68,7 @@ forward void OnMapVoteWarningTick(int time);
/** /**
* Called whenever vote starts * Called whenever vote starts
* *
* @deprecated Will be removed in MapChooser 1.8. Use OnMapVoteStarted instead. * @deprecated Will be removed in MapChooser 1.8. Use OnMapVoteStarted instead.
*/ */
forward void OnMapVoteStart(); forward void OnMapVoteStart();
@ -81,7 +81,7 @@ forward void OnMapVoteEnd(const char[] map);
/** /**
* Is a map on the current game's official list? * Is a map on the current game's official list?
* This should be treated as informative only. * This should be treated as informative only.
* *
* @param map Name of map to check * @param map Name of map to check
* @return true if it's on the list of official maps for this game * @return true if it's on the list of official maps for this game
*/ */
@ -89,7 +89,7 @@ native bool IsMapOfficial(const char[] map);
/** /**
* Is nominate allowed? * Is nominate allowed?
* *
* @return A CanNominateResult corresponding to whether a vote is allowed or not * @return A CanNominateResult corresponding to whether a vote is allowed or not
*/ */
native CanNominateResult CanNominate(); native CanNominateResult CanNominate();
@ -97,7 +97,7 @@ native CanNominateResult CanNominate();
/** /**
* Add map to nomination exclude list. * Add map to nomination exclude list.
* Known as cooldown. * Known as cooldown.
* *
* @param map Name of map * @param map Name of map
* @param cooldown Cooldown, interpretation depends on mode. * @param cooldown Cooldown, interpretation depends on mode.
* @param mode 0: Normal, use cooldown value from config/default. * @param mode 0: Normal, use cooldown value from config/default.
@ -130,7 +130,7 @@ native int GetMapGroup(const char[] map, char[] group, int size);
// >=0 = Group _max -> Group full // >=0 = Group _max -> Group full
native int GetMapGroupRestriction(const char[] map, int client = 0); native int GetMapGroupRestriction(const char[] map, int client = 0);
public SharedPlugin __pl_mapchooser_extended = public SharedPlugin __pl_mapchooser_extended =
{ {
name = "mapchooser", name = "mapchooser",
file = "mapchooser_extended.smx", file = "mapchooser_extended.smx",

View File

@ -8,7 +8,7 @@
* This program is free software; you can redistribute it and/or modify it under * This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, version 3.0, as published by the * the terms of the GNU General Public License, version 3.0, as published by the
* Free Software Foundation. * Free Software Foundation.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
@ -28,7 +28,7 @@
* *
* Version: $Id$ * Version: $Id$
*/ */
#include <menus> #include <menus>
#include <sourcemod> #include <sourcemod>
@ -66,7 +66,7 @@ MenuAction_Display A menu is about to be displayed (param1=client). If you choo
MenuAction_Select An item was selected (param1=client, param2=item). For subplugin support. MenuAction_Select An item was selected (param1=client, param2=item). For subplugin support.
MenuAction_End A vote has fully ended and the vote object is ready to be cleaned up MenuAction_End A vote has fully ended and the vote object is ready to be cleaned up
param1 is MenuEnd reason, either MenuEnd_VotingCancelled or MenuEnd_VotingDone param1 is MenuEnd reason, either MenuEnd_VotingCancelled or MenuEnd_VotingDone
MenuAction_VoteEnd A vote sequence has succeeded (param1=chosen item) MenuAction_VoteEnd A vote sequence has succeeded (param1=chosen item)
This is not called if NativeVotes_SetResultCallback has been used on the vote. This is not called if NativeVotes_SetResultCallback has been used on the vote.
You should call NativeVotes_DisplayPass or NativeVotes_DisplayPassEx after this You should call NativeVotes_DisplayPass or NativeVotes_DisplayPassEx after this
MenuAction_VoteStart A vote sequence has started (nothing passed). Use this instead of MenuAction_Start MenuAction_VoteStart A vote sequence has started (nothing passed). Use this instead of MenuAction_Start
@ -181,17 +181,17 @@ enum NativeVotesCallFailType
/* /*
* Is a specific vote type supported by this game? * Is a specific vote type supported by this game?
* *
* @param voteType Vote type * @param voteType Vote type
*/ */
native bool:NativeVotes_IsVoteTypeSupported(NativeVotesType:voteType); native bool:NativeVotes_IsVoteTypeSupported(NativeVotesType:voteType);
/** /**
* Creates a new, empty vote. * Creates a new, empty vote.
* *
* @param handler Function which will receive vote actions. * @param handler Function which will receive vote actions.
* @param voteType Vote type, cannot be changed after set * @param voteType Vote type, cannot be changed after set
* @param actions Optionally set which actions to receive. Start, * @param actions Optionally set which actions to receive. Start,
* Cancel, and End will always be received regardless * Cancel, and End will always be received regardless
* of whether they are set or not. They are also * of whether they are set or not. They are also
* the only default actions. * the only default actions.
@ -202,9 +202,9 @@ native Handle:NativeVotes_Create(MenuHandler:handler, NativeVotesType:voteType,
/** /**
* Frees all handles related to a vote. * Frees all handles related to a vote.
* *
* THIS MUST BE CALLED TO AVOID HANDLE LEAKS * THIS MUST BE CALLED TO AVOID HANDLE LEAKS
* *
* @param vote Vote handle * @param vote Vote handle
* @noreturn * @noreturn
*/ */
@ -261,13 +261,13 @@ native NativeVotes_RemoveAllItems(Handle:vote);
* @return True on success, false if position is invalid. * @return True on success, false if position is invalid.
* @error Invalid Handlem * @error Invalid Handlem
*/ */
native bool:NativeVotes_GetItem(Handle:vote, native bool:NativeVotes_GetItem(Handle:vote,
position, position,
String:infoBuf[], String:infoBuf[],
infoBufLen, infoBufLen,
String:dispBuf[]="", String:dispBuf[]="",
dispBufLen=0); dispBufLen=0);
/** /**
* Returns the number of items in a vote. * Returns the number of items in a vote.
* *
@ -325,9 +325,9 @@ native NativeVotes_GetTitle(Handle:vote, String:buffer[], maxlength);
/** /**
* Sets the target userid for vote * Sets the target userid for vote
* This should be used instead of SetArgument for votes that target players * This should be used instead of SetArgument for votes that target players
* *
* Also sets target SteamID * Also sets target SteamID
* *
* @param vote Vote Handle. * @param vote Vote Handle.
* @param userid Client index of target player * @param userid Client index of target player
* @param setDetails If true, also sets vote details to client's name * @param setDetails If true, also sets vote details to client's name
@ -367,7 +367,7 @@ native bool:NativeVotes_IsVoteInProgress();
/** /**
* Returns a style's maximum items * Returns a style's maximum items
* *
* @return Maximum items * @return Maximum items
*/ */
native NativeVotes_GetMaxItems(); native NativeVotes_GetMaxItems();
@ -376,7 +376,7 @@ native NativeVotes_GetMaxItems();
* Sets a vote's option flags. * Sets a vote's option flags.
* *
* If a certain bit is not supported, it will be stripped before being set. * If a certain bit is not supported, it will be stripped before being set.
* *
* NOTE: This is currently unused, but reserved for future use. * NOTE: This is currently unused, but reserved for future use.
* *
* @param menu Builtin Vote Handle. * @param menu Builtin Vote Handle.
@ -407,11 +407,11 @@ native NativeVotes_Cancel();
/** /**
* Callback for when a vote has ended and results are available. * Callback for when a vote has ended and results are available.
* *
* Due to SourceMod Forward limitations in plugins, multi-dimension arrays can't be passed * Due to SourceMod Forward limitations in plugins, multi-dimension arrays can't be passed
* to forwards. This means we have to split the client_info and item_info arrays into * to forwards. This means we have to split the client_info and item_info arrays into
* their components. * their components.
* *
* @param vote The vote being voted on. * @param vote The vote being voted on.
* @param num_votes Number of votes tallied in total. * @param num_votes Number of votes tallied in total.
* @param num_clients Number of clients who could vote. * @param num_clients Number of clients who could vote.
@ -433,13 +433,13 @@ typedef NativeVotes_VoteHandler = function int (Handle vote,
/** /**
* Function to convert client/vote arrays into their two-dimensional versions, * Function to convert client/vote arrays into their two-dimensional versions,
* which can then be passed to a standard vote handler. * which can then be passed to a standard vote handler.
* *
* client_info and item_info are the resulting arrays. * client_info and item_info are the resulting arrays.
* *
* Note: When declaring client_info and item_info, you'll probably want to declare them like this: * Note: When declaring client_info and item_info, you'll probably want to declare them like this:
* new client_info[num_clients][2]; * new client_info[num_clients][2];
* new item_info[num_items][2]; * new item_info[num_items][2];
* *
* @param num_clients Number of clients who could vote. * @param num_clients Number of clients who could vote.
* @param client_indexes Array of client indexes. Parallel with client_votes. * @param client_indexes Array of client indexes. Parallel with client_votes.
* @param client_votes Array of client votes. Parallel with client_indexes. * @param client_votes Array of client votes. Parallel with client_indexes.
@ -457,7 +457,7 @@ stock NativeVotes_FixResults(num_clients,
num_items, num_items,
const item_indexes[], const item_indexes[],
const item_votes[], const item_votes[],
client_info[][], client_info[][],
item_info[][]) item_info[][])
{ {
for (new i = 0; i < num_clients; ++i) for (new i = 0; i < num_clients; ++i)
@ -465,7 +465,7 @@ stock NativeVotes_FixResults(num_clients,
client_info[i][VOTEINFO_CLIENT_INDEX] = client_indexes[i]; client_info[i][VOTEINFO_CLIENT_INDEX] = client_indexes[i];
client_info[i][VOTEINFO_CLIENT_ITEM] = client_votes[i]; client_info[i][VOTEINFO_CLIENT_ITEM] = client_votes[i];
} }
for (new i = 0; i < num_items; ++i) for (new i = 0; i < num_items; ++i)
{ {
item_info[i][VOTEINFO_ITEM_INDEX] = item_indexes[i]; item_info[i][VOTEINFO_ITEM_INDEX] = item_indexes[i];
@ -494,8 +494,8 @@ native NativeVotes_SetResultCallback(Handle:vote, NativeVotes_VoteHandler:callba
native NativeVotes_CheckVoteDelay(); native NativeVotes_CheckVoteDelay();
/** /**
* Returns whether a client is in the pool of clients allowed * Returns whether a client is in the pool of clients allowed
* to participate in the current vote. This is determined by * to participate in the current vote. This is determined by
* the client list passed to NativeVotes_Display(). * the client list passed to NativeVotes_Display().
* *
* @param client Client index. * @param client Client index.
@ -509,16 +509,16 @@ native bool:NativeVotes_IsClientInVotePool(client);
* *
* @param client Client index. * @param client Client index.
* @param revotes True to allow revotes, false otherwise. * @param revotes True to allow revotes, false otherwise.
* @return True on success, false if the client is in the vote pool * @return True on success, false if the client is in the vote pool
* but cannot vote again. * but cannot vote again.
* @error No vote in progress, client is not in the voting pool, * @error No vote in progress, client is not in the voting pool,
* or client index is invalid. * or client index is invalid.
*/ */
native bool:NativeVotes_RedrawClientVote(client, bool:revotes=true); native bool:NativeVotes_RedrawClientVote(client, bool:revotes=true);
/** /**
* Retrieve the vote type * Retrieve the vote type
* *
* @param vote NativeVotes Handle. * @param vote NativeVotes Handle.
* @return The built in vote type * @return The built in vote type
* @error Invalid Handle * @error Invalid Handle
@ -527,9 +527,9 @@ native NativeVotesType:NativeVotes_GetType(Handle:vote);
/** /**
* Set the team this vote is for, or NATIVEVOTES_ALL_TEAMS for all teams. * Set the team this vote is for, or NATIVEVOTES_ALL_TEAMS for all teams.
* *
* Defaults to NATIVEVOTES_ALL_TEAMS if not explicitly set. * Defaults to NATIVEVOTES_ALL_TEAMS if not explicitly set.
* *
* @param vote NativeVotes Handle. * @param vote NativeVotes Handle.
* @param team Team number this vote is for * @param team Team number this vote is for
* @noreturn * @noreturn
@ -539,7 +539,7 @@ native NativeVotes_SetTeam(Handle:vote, team);
/** /**
* Retrieve the team this vote is for * Retrieve the team this vote is for
* *
* @param vote NativeVotes Handle. * @param vote NativeVotes Handle.
* @return Team index or NATIVEVOTES_ALL_TEAMS for all teams. * @return Team index or NATIVEVOTES_ALL_TEAMS for all teams.
* @error Invalid Handle * @error Invalid Handle
@ -549,9 +549,9 @@ native NativeVotes_GetTeam(Handle:vote);
/** /**
* Set the client index of the player who initiated the vote. * Set the client index of the player who initiated the vote.
* Use NATIVEVOTES_SERVER_INDEX if initiated by the server itself. * Use NATIVEVOTES_SERVER_INDEX if initiated by the server itself.
* *
* Defaults to NATIVEVOTES_SERVER_INDEX if not explicitly set. * Defaults to NATIVEVOTES_SERVER_INDEX if not explicitly set.
* *
* @param vote NativeVotes Handle. * @param vote NativeVotes Handle.
* @param client Client who initiated the vote or NATIVEVOTES_SERVER_INDEX * @param client Client who initiated the vote or NATIVEVOTES_SERVER_INDEX
* @noreturn * @noreturn
@ -560,9 +560,9 @@ native NativeVotes_GetTeam(Handle:vote);
native NativeVotes_SetInitiator(Handle:vote, client); native NativeVotes_SetInitiator(Handle:vote, client);
/** /**
* Retrieve the client index of the player who initiated the vote or NATIVEVOTES_SERVER_INDEX if * Retrieve the client index of the player who initiated the vote or NATIVEVOTES_SERVER_INDEX if
* initiated by the server itself. * initiated by the server itself.
* *
* @param Vote handle * @param Vote handle
* @return Client index or NATIVEVOTES_SERVER_INDEX * @return Client index or NATIVEVOTES_SERVER_INDEX
* @error Invalid Handle * @error Invalid Handle
@ -570,8 +570,8 @@ native NativeVotes_SetInitiator(Handle:vote, client);
native NativeVotes_GetInitiator(Handle:vote); native NativeVotes_GetInitiator(Handle:vote);
/** /**
* Broadcasts a vote to a list of clients. The most selected item will be * Broadcasts a vote to a list of clients. The most selected item will be
* returned through MenuAction_VoteEnd. On a tie, a random item will be returned * returned through MenuAction_VoteEnd. On a tie, a random item will be returned
* from a list of the tied items. * from a list of the tied items.
* *
* Note that MenuAction_VoteStart, MenuAction_VoteCancel, MenuAction_VoteEnd, and MenuAction_End are all * Note that MenuAction_VoteStart, MenuAction_VoteCancel, MenuAction_VoteEnd, and MenuAction_End are all
@ -599,7 +599,7 @@ stock bool:NativeVotes_DisplayToAll(Handle:vote, time)
{ {
new total = 0; new total = 0;
decl players[MaxClients]; decl players[MaxClients];
for (new i=1; i<=MaxClients; i++) for (new i=1; i<=MaxClients; i++)
{ {
if (!IsClientInGame(i) || IsFakeClient(i)) if (!IsClientInGame(i) || IsFakeClient(i))
@ -608,7 +608,7 @@ stock bool:NativeVotes_DisplayToAll(Handle:vote, time)
} }
players[total++] = i; players[total++] = i;
} }
return NativeVotes_Display(vote, players, total, time); return NativeVotes_Display(vote, players, total, time);
} }
@ -628,7 +628,7 @@ stock bool:NativeVotes_DisplayToTeam(Handle:vote, team, time)
new total; new total;
decl players[MaxClients]; decl players[MaxClients];
for (new i=1; i<=MaxClients; i++) for (new i=1; i<=MaxClients; i++)
{ {
if (!IsClientInGame(i) || IsFakeClient(i) || (GetClientTeam(i) != team)) if (!IsClientInGame(i) || IsFakeClient(i) || (GetClientTeam(i) != team))
@ -637,7 +637,7 @@ stock bool:NativeVotes_DisplayToTeam(Handle:vote, team, time)
} }
players[total++] = i; players[total++] = i;
} }
return NativeVotes_Display(vote, players, total, time); return NativeVotes_Display(vote, players, total, time);
} }
@ -654,7 +654,7 @@ stock bool:NativeVotes_DisplayToAllNonSpectators(Handle:vote, time)
{ {
new total; new total;
decl players[MaxClients]; decl players[MaxClients];
for (new i=1; i<=MaxClients; i++) for (new i=1; i<=MaxClients; i++)
{ {
if (!IsClientInGame(i) || IsFakeClient(i) || (GetClientTeam(i) < 2)) if (!IsClientInGame(i) || IsFakeClient(i) || (GetClientTeam(i) < 2))
@ -663,7 +663,7 @@ stock bool:NativeVotes_DisplayToAllNonSpectators(Handle:vote, time)
} }
players[total++] = i; players[total++] = i;
} }
return NativeVotes_Display(vote, players, total, time); return NativeVotes_Display(vote, players, total, time);
} }
@ -673,7 +673,7 @@ stock bool:NativeVotes_DisplayToAllNonSpectators(Handle:vote, time)
* You MUST call one of the NativeVotesDisplayPass* or NativeVotes_DisplayFail functions * You MUST call one of the NativeVotesDisplayPass* or NativeVotes_DisplayFail functions
* to hide the vote screen for users who didn't vote, and to clear out their selection * to hide the vote screen for users who didn't vote, and to clear out their selection
* for the next vote. * for the next vote.
* *
* @param vote Vote handle * @param vote Vote handle
* @param details Normally the item that won the vote or format string. Also used for custom vote winners * @param details Normally the item that won the vote or format string. Also used for custom vote winners
* @param ... Variable number of format parameters. * @param ... Variable number of format parameters.
@ -687,7 +687,7 @@ native NativeVotes_DisplayPass(Handle:vote, const String:details[]="");
* You MUST call one of the NativeVotesDisplayPass* or NativeVotes_DisplayFail functions * You MUST call one of the NativeVotesDisplayPass* or NativeVotes_DisplayFail functions
* to hide the vote screen for users who didn't vote, and to clear out their selection * to hide the vote screen for users who didn't vote, and to clear out their selection
* for the next vote. * for the next vote.
* *
* @param vote Vote handle * @param vote Vote handle
* @param client client to display to * @param client client to display to
* @param format A format string. * @param format A format string.
@ -702,7 +702,7 @@ native NativeVotes_DisplayPassCustomToOne(Handle:vote, client, const String:form
* You MUST call one of the NativeVotesDisplayPass* or NativeVotes_DisplayFail functions * You MUST call one of the NativeVotesDisplayPass* or NativeVotes_DisplayFail functions
* to hide the vote screen for users who didn't vote, and to clear out their selection * to hide the vote screen for users who didn't vote, and to clear out their selection
* for the next vote. * for the next vote.
* *
* @param vote Vote handle * @param vote Vote handle
* @param format A format string. * @param format A format string.
* @param any Variable number of format parameters * @param any Variable number of format parameters
@ -711,7 +711,7 @@ native NativeVotes_DisplayPassCustomToOne(Handle:vote, client, const String:form
stock NativeVotes_DisplayPassCustom(Handle:vote, const String:format[], any:...) stock NativeVotes_DisplayPassCustom(Handle:vote, const String:format[], any:...)
{ {
decl String:buffer[192]; decl String:buffer[192];
for (new i = 1; i <= MaxClients; ++i) for (new i = 1; i <= MaxClients; ++i)
{ {
if (IsClientInGame(i)) if (IsClientInGame(i))
@ -731,7 +731,7 @@ stock NativeVotes_DisplayPassCustom(Handle:vote, const String:format[], any:...)
* You MUST call one of NativeVotes_DisplayPass, NativeVotes_DisplayPassEx, * You MUST call one of NativeVotes_DisplayPass, NativeVotes_DisplayPassEx,
* or NativeVotes_DisplayFail to hide the vote screen for users who didn't vote * or NativeVotes_DisplayFail to hide the vote screen for users who didn't vote
* and to clear out their selection for the next vote. * and to clear out their selection for the next vote.
* *
* #param vote Vote handle * #param vote Vote handle
* @param passType The pass screen to display * @param passType The pass screen to display
* @param details Normally the item that won the vote. Also used for custom vote winners * @param details Normally the item that won the vote. Also used for custom vote winners
@ -745,17 +745,17 @@ native NativeVotes_DisplayPassEx(Handle:vote, NativeVotesPassType:passType, cons
* You MUST call one of NativeVotes_DisplayPass, NativeVotes_DisplayPassEx, * You MUST call one of NativeVotes_DisplayPass, NativeVotes_DisplayPassEx,
* or NativeVotes_DisplayFail to hide the vote screen for users who didn't vote, * or NativeVotes_DisplayFail to hide the vote screen for users who didn't vote,
* and to clear out their selection for the next vote. * and to clear out their selection for the next vote.
* *
* @param reason Vote failure reason from NativeVotesFailType enum * @param reason Vote failure reason from NativeVotesFailType enum
* @noreturn * @noreturn
*/ */
native NativeVotes_DisplayFail(Handle:vote, NativeVotesFailType:reason=NativeVotesFail_Generic); native NativeVotes_DisplayFail(Handle:vote, NativeVotesFailType:reason=NativeVotesFail_Generic);
/** /**
* Quick stock to determine whether voting is allowed. This doesn't let you * Quick stock to determine whether voting is allowed. This doesn't let you
* fine-tune a reason for not voting, so it's not recommended for lazily * fine-tune a reason for not voting, so it's not recommended for lazily
* telling clients that voting isn't allowed. * telling clients that voting isn't allowed.
* *
* @return True if voting is allowed, false if voting is in progress * @return True if voting is allowed, false if voting is in progress
* or the cooldown is active. * or the cooldown is active.
*/ */
@ -765,15 +765,15 @@ stock bool:NativeVotes_IsNewVoteAllowed()
{ {
return false; return false;
} }
return true; return true;
} }
/** /**
* Used when callvote is called with no arguments. * Used when callvote is called with no arguments.
* *
* This is used to configure the VoteSetup usermessage on TF2 and CS:GO * This is used to configure the VoteSetup usermessage on TF2 and CS:GO
* *
* @param client Client, in case the votes are restricted by client * @param client Client, in case the votes are restricted by client
* @param voteTypes Populate this array with the vote types this server supports * @param voteTypes Populate this array with the vote types this server supports
* Custom and multiple choice votes are not supported from * Custom and multiple choice votes are not supported from
@ -787,9 +787,9 @@ stock bool:NativeVotes_IsNewVoteAllowed()
/** /**
* Forward for "callvote" handling * Forward for "callvote" handling
* *
* You should respond to this by starting a vote or by calling NativeVotes_DisplayCallVoteFail * You should respond to this by starting a vote or by calling NativeVotes_DisplayCallVoteFail
* *
* @param client Client * @param client Client
* @param voteType Type of vote being called. This will NEVER be a multiple-choice or custom vote. * @param voteType Type of vote being called. This will NEVER be a multiple-choice or custom vote.
* @param voteArgument Vote argument or blank if the vote type has no argument. * @param voteArgument Vote argument or blank if the vote type has no argument.
@ -803,7 +803,7 @@ stock bool:NativeVotes_IsNewVoteAllowed()
/** /**
* Register a plugin as a vote manager. * Register a plugin as a vote manager.
* This is used to abstract away the details of the callvote command. * This is used to abstract away the details of the callvote command.
* *
* @param callHandler Handler for callvote commands. * @param callHandler Handler for callvote commands.
* @param setupHandler Handler to override the which vote types your server supports. Only useful on TF2 and CS:GO. * @param setupHandler Handler to override the which vote types your server supports. Only useful on TF2 and CS:GO.
* @noreturn * @noreturn
@ -814,7 +814,7 @@ stock bool:NativeVotes_IsNewVoteAllowed()
* Send a call vote fail screen to a user * Send a call vote fail screen to a user
* Used to respond to a callvote with invalid arguments or for other reasons * Used to respond to a callvote with invalid arguments or for other reasons
* (such as trying to target an admin for a kick/ban vote) * (such as trying to target an admin for a kick/ban vote)
* *
* @param client The client to display the fail screen to * @param client The client to display the fail screen to
* @param reason A vote call fail reason * @param reason A vote call fail reason
* @param time For NativeVotesCallFail_Recent, the number of seconds until the vote * @param time For NativeVotesCallFail_Recent, the number of seconds until the vote
@ -825,7 +825,7 @@ native NativeVotes_DisplayCallVoteFail(client, NativeVotesCallFailType:reason, t
/** /**
* Redraws the vote title from inside a MenuAction_Display callback * Redraws the vote title from inside a MenuAction_Display callback
* Not supported on L4D * Not supported on L4D
* *
* @param text Vote title to draw * @param text Vote title to draw
* @error If called from outside MenuAction_Display * @error If called from outside MenuAction_Display
* @return Plugin_Changed if the change is allowed, Plugin_Continue if it isn't. * @return Plugin_Changed if the change is allowed, Plugin_Continue if it isn't.
@ -835,7 +835,7 @@ native Action:NativeVotes_RedrawVoteTitle(const String:text[]);
/** /**
* Redraws the vote text from inside a MenuAction_DisplayItem callback. * Redraws the vote text from inside a MenuAction_DisplayItem callback.
* Only supported on multiple-choice votes * Only supported on multiple-choice votes
* *
* @param text Vote text to draw. * @param text Vote text to draw.
* @error If called from outside MenuAction_DisplayItem * @error If called from outside MenuAction_DisplayItem
* @return Plugin_Changed if the change is allowed, Plugin_Continue if it isn't. * @return Plugin_Changed if the change is allowed, Plugin_Continue if it isn't.
@ -859,7 +859,7 @@ stock NativeVotes_GetInfo(param2, &winningVotes, &totalVotes)
/** /**
* Do not edit below this line! * Do not edit below this line!
*/ */
public SharedPlugin:__pl_nativevotes = public SharedPlugin:__pl_nativevotes =
{ {
name = "nativevotes", name = "nativevotes",
file = "nativevotes.smx", file = "nativevotes.smx",

View File

@ -2327,7 +2327,7 @@ void CheckMapRestrictions(bool time = false, bool players = false)
CPrintToChat(client, "[MCE] %t", "Nomination Removed Time Error", map); CPrintToChat(client, "[MCE] %t", "Nomination Removed Time Error", map);
} }
} }
if (players) if (players)
{ {
int PlayerRestriction = InternalGetMapPlayerRestriction(map); int PlayerRestriction = InternalGetMapPlayerRestriction(map);

View File

@ -1342,7 +1342,7 @@ public Query_UnBlockSelect(Handle:owner, Handle:hndl, const String:error[], any:
#endif #endif
TempUnBlock(data); // Datapack closed inside. TempUnBlock(data); // Datapack closed inside.
switch (type) switch (type)
{ {
case TYPE_UNMUTE: case TYPE_UNMUTE:
@ -1358,7 +1358,7 @@ public Query_UnBlockSelect(Handle:owner, Handle:hndl, const String:error[], any:
LogAction(admin, target, "\"%L\" temporary unsilenced \"%L\" (reason \"%s\")", admin, target, reason); LogAction(admin, target, "\"%L\" temporary unsilenced \"%L\" (reason \"%s\")", admin, target, reason);
} }
} }
return; return;
} }
else else
@ -2385,7 +2385,7 @@ stock ProcessUnBlock(client, targetId = 0, type, String:sReason[] = "", const St
TempUnBlock(dataPack); TempUnBlock(dataPack);
} }
switch (type) switch (type)
{ {
case TYPE_UNMUTE: case TYPE_UNMUTE:

View File

@ -86,7 +86,7 @@ native bool:ZRT_IsRoundActive();
*********************************** ***********************************
-----------------------------------*/ -----------------------------------*/
public SharedPlugin:__pl_zr_tools = public SharedPlugin:__pl_zr_tools =
{ {
name = "zr_tools", name = "zr_tools",
file = "zr_tools.smx", file = "zr_tools.smx",

View File

@ -9,7 +9,7 @@ new Handle:kv;
new Handle:hPlayerClasses, String:sClassPath[PLATFORM_MAX_PATH] = "configs/zr/playerclasses.txt"; new Handle:hPlayerClasses, String:sClassPath[PLATFORM_MAX_PATH] = "configs/zr/playerclasses.txt";
new bool:g_RoundEnd = false; new bool:g_RoundEnd = false;
public Plugin:myinfo = public Plugin:myinfo =
{ {
name = "[ZR] Tools", name = "[ZR] Tools",
author = "FrozDark", author = "FrozDark",
@ -26,18 +26,18 @@ public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max)
CreateNative("ZRT_GetClientAttributeValueFloat", Native_GetClientAttributeValueFloat); CreateNative("ZRT_GetClientAttributeValueFloat", Native_GetClientAttributeValueFloat);
CreateNative("ZRT_PlayerHasAttribute", Native_PlayerHasAttribute); CreateNative("ZRT_PlayerHasAttribute", Native_PlayerHasAttribute);
CreateNative("ZRT_IsRoundActive", Native_IsRoundActive); CreateNative("ZRT_IsRoundActive", Native_IsRoundActive);
RegPluginLibrary("zr_tools"); RegPluginLibrary("zr_tools");
return APLRes_Success; return APLRes_Success;
} }
public OnPluginStart() public OnPluginStart()
{ {
CreateConVar("zr_tools_version", PLUGIN_VERSION, "Zombie:Reloaded tools plugin version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY|FCVAR_CHEAT|FCVAR_DONTRECORD); CreateConVar("zr_tools_version", PLUGIN_VERSION, "Zombie:Reloaded tools plugin version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY|FCVAR_CHEAT|FCVAR_DONTRECORD);
RegAdminCmd("zr_tools_reload", Command_Reload, ADMFLAG_ROOT); RegAdminCmd("zr_tools_reload", Command_Reload, ADMFLAG_ROOT);
HookEvent("round_start", Event_RoundStart); HookEvent("round_start", Event_RoundStart);
HookEvent("round_end", Event_RoundEnd); HookEvent("round_end", Event_RoundEnd);
} }
@ -69,10 +69,10 @@ public OnConfigsExecuted()
CloseHandle(kv); CloseHandle(kv);
} }
kv = CreateKeyValues("classes"); kv = CreateKeyValues("classes");
decl String:buffer[PLATFORM_MAX_PATH]; decl String:buffer[PLATFORM_MAX_PATH];
BuildPath(Path_SM, buffer, sizeof(buffer), "%s", sClassPath); BuildPath(Path_SM, buffer, sizeof(buffer), "%s", sClassPath);
if (!FileToKeyValues(kv, buffer)) if (!FileToKeyValues(kv, buffer))
{ {
SetFailState("Class data file \"%s\" not found", buffer); SetFailState("Class data file \"%s\" not found", buffer);
@ -104,13 +104,13 @@ public Native_PlayerHasAttribute(Handle:plugin, numParams)
{ {
new client = GetNativeCell(1); new client = GetNativeCell(1);
ValidateClient(client); ValidateClient(client);
decl String:attrib[32]; decl String:attrib[32];
GetNativeString(2, attrib, sizeof(attrib)); GetNativeString(2, attrib, sizeof(attrib));
decl String:className[64], String:buffer[64]; decl String:className[64], String:buffer[64];
ZR_GetClassDisplayName(client, className, sizeof(className), ZR_CLASS_CACHE_PLAYER); ZR_GetClassDisplayName(client, className, sizeof(className), ZR_CLASS_CACHE_PLAYER);
new bool:result = false; new bool:result = false;
if (KvGotoFirstSubKey(kv)) if (KvGotoFirstSubKey(kv))
{ {
@ -120,14 +120,14 @@ public Native_PlayerHasAttribute(Handle:plugin, numParams)
if (StrEqual(buffer, className, false)) if (StrEqual(buffer, className, false))
{ {
KvGetString(kv, attrib, buffer, sizeof(buffer), "0"); KvGetString(kv, attrib, buffer, sizeof(buffer), "0");
result = bool:(StrContains("yes|1|true", buffer, false) != -1); result = bool:(StrContains("yes|1|true", buffer, false) != -1);
break; break;
} }
} while (KvGotoNextKey(kv)); } while (KvGotoNextKey(kv));
} }
KvRewind(kv); KvRewind(kv);
return result; return result;
} }
@ -135,14 +135,14 @@ public Native_GetClientAttributeString(Handle:plugin, numParams)
{ {
new client = GetNativeCell(1); new client = GetNativeCell(1);
ValidateClient(client); ValidateClient(client);
decl String:attrib[32]; decl String:attrib[32];
GetNativeString(2, attrib, sizeof(attrib)); GetNativeString(2, attrib, sizeof(attrib));
decl String:className[64], String:buffer[PLATFORM_MAX_PATH]; decl String:className[64], String:buffer[PLATFORM_MAX_PATH];
buffer[0] = '\0'; buffer[0] = '\0';
ZR_GetClassDisplayName(client, className, sizeof(className), ZR_CLASS_CACHE_PLAYER); ZR_GetClassDisplayName(client, className, sizeof(className), ZR_CLASS_CACHE_PLAYER);
new bytes; new bytes;
if (KvGotoFirstSubKey(kv)) if (KvGotoFirstSubKey(kv))
{ {
@ -152,14 +152,14 @@ public Native_GetClientAttributeString(Handle:plugin, numParams)
if (StrEqual(buffer, className, false)) if (StrEqual(buffer, className, false))
{ {
KvGetString(kv, attrib, buffer, sizeof(buffer), ""); KvGetString(kv, attrib, buffer, sizeof(buffer), "");
SetNativeString(3, buffer, GetNativeCell(4), true, bytes); SetNativeString(3, buffer, GetNativeCell(4), true, bytes);
break; break;
} }
} while (KvGotoNextKey(kv)); } while (KvGotoNextKey(kv));
} }
KvRewind(kv); KvRewind(kv);
if (!buffer[0]) if (!buffer[0])
{ {
GetNativeString(5, buffer, sizeof(buffer)); GetNativeString(5, buffer, sizeof(buffer));
@ -172,15 +172,15 @@ public Native_GetClientAttributeValue(Handle:plugin, numParams)
{ {
new client = GetNativeCell(1); new client = GetNativeCell(1);
ValidateClient(client); ValidateClient(client);
decl String:attrib[32]; decl String:attrib[32];
GetNativeString(2, attrib, sizeof(attrib)); GetNativeString(2, attrib, sizeof(attrib));
decl String:className[64], String:buffer[PLATFORM_MAX_PATH]; decl String:className[64], String:buffer[PLATFORM_MAX_PATH];
ZR_GetClassDisplayName(client, className, sizeof(className), ZR_CLASS_CACHE_PLAYER); ZR_GetClassDisplayName(client, className, sizeof(className), ZR_CLASS_CACHE_PLAYER);
new result = -1; new result = -1;
if (KvGotoFirstSubKey(kv)) if (KvGotoFirstSubKey(kv))
{ {
do do
@ -194,7 +194,7 @@ public Native_GetClientAttributeValue(Handle:plugin, numParams)
} while (KvGotoNextKey(kv)); } while (KvGotoNextKey(kv));
} }
KvRewind(kv); KvRewind(kv);
return result; return result;
} }
@ -202,15 +202,15 @@ public Native_GetClientAttributeValueFloat(Handle:plugin, numParams)
{ {
new client = GetNativeCell(1); new client = GetNativeCell(1);
ValidateClient(client); ValidateClient(client);
decl String:attrib[32]; decl String:attrib[32];
GetNativeString(2, attrib, sizeof(attrib)); GetNativeString(2, attrib, sizeof(attrib));
decl String:className[64], String:buffer[PLATFORM_MAX_PATH]; decl String:className[64], String:buffer[PLATFORM_MAX_PATH];
ZR_GetClassDisplayName(client, className, sizeof(className), ZR_CLASS_CACHE_PLAYER); ZR_GetClassDisplayName(client, className, sizeof(className), ZR_CLASS_CACHE_PLAYER);
new Float:result = -1.0; new Float:result = -1.0;
if (KvGotoFirstSubKey(kv)) if (KvGotoFirstSubKey(kv))
{ {
do do
@ -224,7 +224,7 @@ public Native_GetClientAttributeValueFloat(Handle:plugin, numParams)
} while (KvGotoNextKey(kv)); } while (KvGotoNextKey(kv));
} }
KvRewind(kv); KvRewind(kv);
return _:result; return _:result;
} }
@ -232,10 +232,10 @@ public Native_GetClientClassSectionName(Handle:plugin, numParams)
{ {
new client = GetNativeCell(1); new client = GetNativeCell(1);
ValidateClient(client); ValidateClient(client);
decl String:className[64], String:buffer[64]; decl String:className[64], String:buffer[64];
ZR_GetClassDisplayName(client, className, sizeof(className), ZR_CLASS_CACHE_PLAYER); ZR_GetClassDisplayName(client, className, sizeof(className), ZR_CLASS_CACHE_PLAYER);
new bytes; new bytes;
if (KvGotoFirstSubKey(kv)) if (KvGotoFirstSubKey(kv))
{ {
@ -245,14 +245,14 @@ public Native_GetClientClassSectionName(Handle:plugin, numParams)
if (StrEqual(buffer, className, false)) if (StrEqual(buffer, className, false))
{ {
KvGetSectionName(kv, buffer, sizeof(buffer)); KvGetSectionName(kv, buffer, sizeof(buffer));
SetNativeString(2, buffer, GetNativeCell(3), true, bytes); SetNativeString(2, buffer, GetNativeCell(3), true, bytes);
break; break;
} }
} while (KvGotoNextKey(kv)); } while (KvGotoNextKey(kv));
} }
KvRewind(kv); KvRewind(kv);
return bytes; return bytes;
} }