#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 buttons_old[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; buttons_old[client] = 0; } public void OnClientPostAdminCheck(int client) { if (!IsFakeClient(client) && !IsClientSourceTV(client) && !PM_IsPlayerSteam(client)) { bhop_restricted_nosteamer[client] = true; buttons_old[0] = 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; if (!(buttons_old[client] & IN_JUMP) && (!(buttons & IN_JUMP))) return; if (buttons_old[client] & IN_JUMP) { if (!(buttons & IN_JUMP)) if (GetEntityFlags(client) & FL_ONGROUND) buttons_old[client] = buttons; return; } 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] = vel[0]; velocity_block[1] = vel[1]; velocity_block[2] = vel[2]; velocity_block[1] = 0.0; if (fVelocity > 320.0) { TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, velocity_block); } buttons_old[client] = buttons; }