#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); } }