diff --git a/BlockNosteamBhop/scripting/bhop_limit_nosteamers.sp b/BlockNosteamBhop/scripting/bhop_limit_nosteamers.sp new file mode 100644 index 00000000..4f7502c0 --- /dev/null +++ b/BlockNosteamBhop/scripting/bhop_limit_nosteamers.sp @@ -0,0 +1,76 @@ +#include +#pragma semicolon 1 + +#define DEBUG + +#define PLUGIN_AUTHOR "jenz" +#define PLUGIN_VERSION "1.0" +#define generic_length 256 + +#include +#include + +public Plugin myinfo = +{ + name = "nosteam bhop blocker", + author = PLUGIN_AUTHOR, + description = "no more bhop for meatbags ", + version = PLUGIN_VERSION, + url = "" +}; + +bool bhop_restricted_nosteamer[MAXPLAYERS + 1]; +int client_check_count[MAXPLAYERS + 1]; + +public void OnPluginStart() +{ + for (int i = 1; i <= MAXPLAYERS; i++) + { + if (IsValidClient(i)) + OnClientPostAdminCheck(i); + } +} + +stock bool IsValidClient(int client) +{ + if (client > 0 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client)) + return true; + return false; +} + +public void OnClientDisconnect(int client) +{ + bhop_restricted_nosteamer[client] = false; + client_check_count[client] = 0; +} + +public void OnClientPostAdminCheck(int client) +{ + if (!IsFakeClient(client) && !IsClientSourceTV(client) && !PM_IsPlayerSteam(client)) + { + bhop_restricted_nosteamer[client] = true; + client_check_count[client] = 0; + } +} + +public void OnPlayerRunCmdPost(int client, int buttons, int impulse, const float vel[3], const float angles[3], int weapon, int subtype, + int cmdnum, int tickcount, int seed, const int mouse[2]) +{ + if (!IsValidClient(client) || !IsPlayerAlive(client) || !bhop_restricted_nosteamer[client]) return; + client_check_count[client]++; + int generic_cap = 50; + if (client_check_count[client] > generic_cap) + { + client_check_count[client] = 0; + float vVel[3]; + GetEntPropVector(client, Prop_Data, "m_vecVelocity", vVel); + float fVelocity = SquareRoot(Pow(vVel[0], 2.0) + Pow(vVel[1], 2.0)); + float velocity_block[3]; + velocity_block[0] = 0.0; + velocity_block[1] = 0.0; + velocity_block[2] = 0.0; + if (fVelocity > 320.0) + TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, velocity_block); + } +} +