new Handle:hRate;
new Handle:hCmdRate;
new Handle:hUpdateRate;
new Handle:hMsg;
new String:CmdString[192];
new String:Msg[192];
public Plugin:myinfo =
{
name = "Forcerate",
description = "Automatically corrects rates of client",
author = "Lomaka",
version = "2.1",
url = "http://bisoftgames.♥♥♥♥.ru"
};
public OnPluginStart()
{
hRate = CreateConVar("sm_rate", "10000", "Forcerate default rate.", 262144, true, 10.0, true, 100000.0);
hCmdRate = CreateConVar("sm_cmdrate", "33", "Forcerate default cl_cmdrate.", 262144, true, 10.0, true, 1000.0);
hUpdateRate = CreateConVar("sm_updaterate", "33", "Forcerate default cl_updaterate.", 262144, true, 10.0, true, 1000.0);
HookEvent("player_spawn", PlayerSpawn, EventHookMode:1);
AutoExecConfig(true, "forcerate", "sourcemod");
return 0;
}
public OnConfigsExecuted()
{
Format(CmdString, 192, "rate %d;cl_cmdrate %d;cl_updaterate %d", GetConVarInt(hRate), GetConVarInt(hCmdRate), GetConVarInt(hUpdateRate));
GetConVarString(hMsg, Msg, 192);
return 0;
}
public PlayerSpawn(Handle:event, String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if (client && !IsFakeClient(client) && GetClientTeam(client))
{
CheckRates(client);
}
return 0;
}
CheckRates(client)
{
QueryClientConVar(client, "rate", ClientConVar, client);
QueryClientConVar(client, "cl_cmdrate", ClientConVar, client);
QueryClientConVar(client, "cl_updaterate", ClientConVar, client);
return 0;
}
public ClientConVar(QueryCookie:cookie, client, ConVarQueryResult:result, String:cvarName[], String:cvarValue[])
{
new String:rate[12];
new String:cmdrate[12];
new String:updaterate[12];
GetConVarString(hRate, rate, 10);
GetConVarString(hCmdRate, cmdrate, 10);
GetConVarString(hUpdateRate, updaterate, 10);
if (StrEqual("rate", cvarName, false))
{
if (!StrEqual(rate, cvarValue, false))
{
EnforceRates(client);
}
}
if (StrEqual("cl_cmdrate", cvarName, false))
{
if (!StrEqual(cmdrate, cvarValue, false))
{
EnforceRates(client);
}
}
if (StrEqual("cl_updaterate", cvarName, false))
{
if (!StrEqual(updaterate, cvarValue, false))
{
EnforceRates(client);
}
}
return 0;
}
EnforceRates(client)
{
new Handle:ForcerateMsg = CreateKeyValues("data", "", "");
KvSetString(ForcerateMsg, "title", "Forcerate");
KvSetString(ForcerateMsg, "type", "2");
KvSetString(ForcerateMsg, "msg", Msg);
KvSetString(ForcerateMsg, "cmd", CmdString);
ShowVGUIPanel(client, "info", ForcerateMsg, true);
CloseHandle(ForcerateMsg);
return 0;
}
public OnClientSettingsChanged(client)
{
if (IsClientInGame(client) && GetClientTeam(client))
{
CheckRates(client);
}
return 0;
}