diff --git a/_entWatch4/scripting/entWatch-core.sp b/_entWatch4/scripting/entWatch-core.sp index 70280190..401d01c1 100644 --- a/_entWatch4/scripting/entWatch-core.sp +++ b/_entWatch4/scripting/entWatch-core.sp @@ -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); } \ No newline at end of file diff --git a/_entWatch4/scripting/entWatch-interface.sp b/_entWatch4/scripting/entWatch-interface.sp index 7d3be40a..e80fe95e 100644 --- a/_entWatch4/scripting/entWatch-interface.sp +++ b/_entWatch4/scripting/entWatch-interface.sp @@ -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); diff --git a/_entWatch4/scripting/entWatch-messages.sp b/_entWatch4/scripting/entWatch-messages.sp index 5812e95b..721633e2 100644 --- a/_entWatch4/scripting/entWatch-messages.sp +++ b/_entWatch4/scripting/entWatch-messages.sp @@ -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]); } diff --git a/_entWatch4/scripting/entWatch-restrictions.sp b/_entWatch4/scripting/entWatch-restrictions.sp index d7993d55..ad776f6b 100644 --- a/_entWatch4/scripting/entWatch-restrictions.sp +++ b/_entWatch4/scripting/entWatch-restrictions.sp @@ -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); } \ No newline at end of file