entWatch4: Streamline code + Intermission change.

Block 'Press', 'Touch' and 'Pickup' during intermission.
This commit is contained in:
zaCade 2018-08-08 17:31:50 +02:00
parent d4b9a3887b
commit b4116d7282
4 changed files with 178 additions and 168 deletions

View File

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

View File

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

View File

@ -44,10 +44,10 @@ public void EW_OnClientItemDrop(any[] itemArray, int client, int index)
{
char sName[32];
GetClientName(client, sName, sizeof(sName));
char sAuth[32];
GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth));
CRemoveTags(sName, sizeof(sName));
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];
GetClientName(client, sName, sizeof(sName));
char sAuth[32];
GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth));
CRemoveTags(sName, sizeof(sName));
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];
GetClientName(client, sName, sizeof(sName));
char sAuth[32];
GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth));
CRemoveTags(sName, sizeof(sName));
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];
GetClientName(client, sName, sizeof(sName));
char sAuth[32];
GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth));
CRemoveTags(sName, sizeof(sName));
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];
GetClientName(client, sName, sizeof(sName));
char sAuth[32];
GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth));
CRemoveTags(sName, sizeof(sName));
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_ClientUnrestrict", Native_ClientUnrestrict);
CreateNative("EW_ClientRestricted", Native_ClientRestricted);
RegPluginLibrary("entWatch-restrictions");
return APLRes_Success;
}
@ -60,14 +60,14 @@ public void OnPluginStart()
{
LoadTranslations("common.phrases");
LoadTranslations("entWatch.restrictions.phrases");
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_hCookie_RestrictIssued = RegClientCookie("EW_RestrictIssued", "", CookieAccess_Private);
g_hCookie_RestrictLength = RegClientCookie("EW_RestrictLength", "", CookieAccess_Private);
g_hCookie_RestrictExpire = RegClientCookie("EW_RestrictExpire", "", CookieAccess_Private);
RegAdminCmd("sm_eban", Command_ClientRestrict, ADMFLAG_BAN);
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");
return Plugin_Handled;
}
char sTarget[32];
char sLength[32];
GetCmdArg(1, sTarget, sizeof(sTarget));
GetCmdArg(2, sLength, sizeof(sLength));
int target;
if ((target = FindTarget(client, sTarget, true)) == -1)
return Plugin_Handled;
int length = StringToInt(sLength);
if (ClientRestrict(client, target, length))
{
if (length)
@ -127,7 +127,7 @@ public Action Command_ClientRestrict(int client, int args)
LogAction(client, target, "%L restricted %L permanently.", client, target);
}
}
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");
return Plugin_Handled;
}
char sTarget[32];
GetCmdArg(1, sTarget, sizeof(sTarget));
int target;
if ((target = FindTarget(client, sTarget, true)) == -1)
return Plugin_Handled;
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");
LogAction(client, target, "%L unrestricted %L.", client, target);
}
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))
return false;
int issued = GetTime();
int second = length * 60;
int expire = issued + second;
g_iRestrictIssued[target] = issued;
g_iRestrictLength[target] = length;
g_iRestrictExpire[target] = expire;
SetClientCookieInt(target, g_hCookie_RestrictIssued, issued);
SetClientCookieInt(target, g_hCookie_RestrictLength, length);
SetClientCookieInt(target, g_hCookie_RestrictExpire, expire);
Call_StartForward(g_hFwd_OnClientRestricted);
Call_PushCell(client);
Call_PushCell(target);
Call_PushCell(length);
Call_Finish();
return true;
}
@ -210,20 +210,20 @@ stock bool ClientUnrestrict(int client, int target)
{
if (!Client_IsValid(client) || !Client_IsValid(target) || !AreClientCookiesCached(target) || !ClientRestricted(target))
return false;
g_iRestrictIssued[target] = 0;
g_iRestrictLength[target] = 0;
g_iRestrictExpire[target] = 0;
SetClientCookieInt(target, g_hCookie_RestrictIssued, 0);
SetClientCookieInt(target, g_hCookie_RestrictLength, 0);
SetClientCookieInt(target, g_hCookie_RestrictExpire, 0);
Call_StartForward(g_hFwd_OnClientUnrestricted);
Call_PushCell(client);
Call_PushCell(target);
Call_Finish();
return true;
}
@ -234,19 +234,19 @@ stock bool ClientRestricted(int client)
{
if (!Client_IsValid(client))
return false;
//Block them when loading cookies..
if (!AreClientCookiesCached(client))
return true;
//Permanent restriction..
if (g_iRestrictExpire[client] && g_iRestrictLength[client] == 0)
return true;
//Limited restriction..
if (g_iRestrictExpire[client] && g_iRestrictExpire[client] >= GetTime())
return true;
return false;
}
@ -281,7 +281,7 @@ stock void SetClientCookieInt(int client, Handle hCookie, int value)
{
char sValue[32];
IntToString(value, sValue, sizeof(sValue));
SetClientCookie(client, hCookie, sValue);
}
@ -292,6 +292,6 @@ stock int GetClientCookieInt(int client, Handle hCookie)
{
char sValue[32];
GetClientCookie(client, hCookie, sValue, sizeof(sValue));
return StringToInt(sValue);
}