should be able to whitelist nosteamers through DB simply
This commit is contained in:
		
							parent
							
								
									15c63febe2
								
							
						
					
					
						commit
						aebf588588
					
				| @ -10,6 +10,7 @@ | |||||||
| #include <sourcemod> | #include <sourcemod> | ||||||
| #include <sdktools> | #include <sdktools> | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| public Plugin myinfo = | public Plugin myinfo = | ||||||
| { | { | ||||||
|         name = "nosteam bhop blocker", |         name = "nosteam bhop blocker", | ||||||
| @ -22,14 +23,42 @@ public Plugin myinfo = | |||||||
| bool bhop_restricted_nosteamer[MAXPLAYERS + 1]; | bool bhop_restricted_nosteamer[MAXPLAYERS + 1]; | ||||||
| int buttons_old[MAXPLAYERS + 1]; | int buttons_old[MAXPLAYERS + 1]; | ||||||
| int flags_old[MAXPLAYERS + 1]; | int flags_old[MAXPLAYERS + 1]; | ||||||
|  | Database g_dDatabase; | ||||||
| 
 | 
 | ||||||
| public void OnPluginStart() | public void OnPluginStart() | ||||||
| { | { | ||||||
| 	for (int i = 1; i <= MAXPLAYERS; i++) |     SQL_StartConnection(); | ||||||
| 	{ |     for (int i = 1; i <= MAXPLAYERS; i++) | ||||||
| 		if (IsValidClient(i)) |     { | ||||||
| 			OnClientPostAdminCheck(i); |         if (IsValidClient(i)) | ||||||
| 	} |         OnClientPostAdminCheck(i); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | public void OnMapStart() | ||||||
|  | { | ||||||
|  |     SQL_StartConnection(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | public void SQL_StartConnection() | ||||||
|  | { | ||||||
|  |     char error[512]; | ||||||
|  |     if (SQL_CheckConfig("bhopnosteam")) | ||||||
|  |         g_dDatabase = SQL_Connect("bhopnosteam", true, error, sizeof(error)); | ||||||
|  |     if (g_dDatabase == null) | ||||||
|  |     { | ||||||
|  |         PrintToChatAll("{green}[UNLOZE] {white}Error! Could not connect to MYSQL-DB!"); | ||||||
|  |     } | ||||||
|  |     //create table | ||||||
|  |     char sQuery[512]; | ||||||
|  |     Format(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS bhop_whitelist (`steam_auth` VARCHAR(254) NOT NULL, `name` VARCHAR(254) NOT NULL, PRIMARY KEY (`steam_auth`))"); | ||||||
|  |     SQL_TQuery(g_dDatabase, DummyCallbackSimple, sQuery); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | public void DummyCallbackSimple(Handle hOwner, Handle hChild, const char[] err, DataPack pack1) | ||||||
|  | { | ||||||
|  | 	if (hOwner == null || hChild == null) | ||||||
|  | 		LogError("Query error. (%s)", err); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| stock bool IsValidClient(int client) | stock bool IsValidClient(int client) | ||||||
| @ -48,44 +77,61 @@ public void OnClientDisconnect(int client) | |||||||
| 
 | 
 | ||||||
| public void OnClientPostAdminCheck(int client) | public void OnClientPostAdminCheck(int client) | ||||||
| { | { | ||||||
| 	if (!IsFakeClient(client) && !IsClientSourceTV(client) && !PM_IsPlayerSteam(client)) |     if (!IsFakeClient(client) && !IsClientSourceTV(client) && !PM_IsPlayerSteam(client)) | ||||||
| 	{ |     { | ||||||
| 		bhop_restricted_nosteamer[client] = true; |         bhop_restricted_nosteamer[client] = true; | ||||||
| 		buttons_old[client] = 0; |         buttons_old[client] = 0; | ||||||
| 		flags_old[client] = 0; |         flags_old[client] = 0; | ||||||
| 	} |         if (g_dDatabase) | ||||||
|  |         { | ||||||
|  |             DBResultSet rs; | ||||||
|  |             char steam_auth[512]; | ||||||
|  |             GetClientAuthId(client, AuthId_Steam2, steam_auth, sizeof(steam_auth)); | ||||||
|  |             strcopy(steam_auth, sizeof(steam_auth), steam_auth[8]); | ||||||
|  |             char sQuery[512]; | ||||||
|  |             Format(sQuery, sizeof(sQuery), "SELECT * FROM bhop_whitelist WHERE steam_auth = '%s'", steam_auth); | ||||||
|  |             if ((rs = SQL_Query(g_dDatabase, sQuery)) != null) | ||||||
|  |             { | ||||||
|  |                 rs.FetchRow(); | ||||||
|  |                 if (rs.RowCount > 0) | ||||||
|  |                 { | ||||||
|  |                     bhop_restricted_nosteamer[client] = false; | ||||||
|  |                     PrintToChat(client, "bhop unrestricted!"); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             delete rs; | ||||||
|  |         } | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| public void OnPlayerRunCmdPost(int client, int buttons, int impulse, const float vel[3], const float angles[3], int weapon, int subtype, | 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]) |                                                                 int cmdnum, int tickcount, int seed, const int mouse[2]) | ||||||
| { | { | ||||||
|         if (!IsValidClient(client) || !IsPlayerAlive(client) || !bhop_restricted_nosteamer[client]) return; |     if (!IsValidClient(client) || !IsPlayerAlive(client) || !bhop_restricted_nosteamer[client]) return; | ||||||
| 	if (!(buttons_old[client] & IN_JUMP) && (!(buttons & IN_JUMP))) |     if (!(buttons_old[client] & IN_JUMP) && (!(buttons & IN_JUMP))) | ||||||
| 	{ |     { | ||||||
| 		flags_old[client] = GetEntityFlags(client); |         flags_old[client] = GetEntityFlags(client); | ||||||
| 		return; |         return; | ||||||
| 	} |     } | ||||||
| 	if (buttons_old[client] & IN_JUMP) |     if (buttons_old[client] & IN_JUMP) | ||||||
| 	{ |     { | ||||||
| 		if (!(buttons & IN_JUMP)) |         if (!(buttons & IN_JUMP)) | ||||||
| 			if (GetEntityFlags(client) & FL_ONGROUND) |             if (GetEntityFlags(client) & FL_ONGROUND) | ||||||
| 				buttons_old[client] = buttons; |                 buttons_old[client] = buttons; | ||||||
| 		return; |         return; | ||||||
| 	} |     } | ||||||
| 	if (!(flags_old[client] & FL_ONGROUND)) |     if (!(flags_old[client] & FL_ONGROUND)) | ||||||
| 		return; |         return; | ||||||
| 	float vVel[3]; |     float vVel[3]; | ||||||
| 	GetEntPropVector(client, Prop_Data, "m_vecVelocity", vVel); |     GetEntPropVector(client, Prop_Data, "m_vecVelocity", vVel); | ||||||
| 	float fVelocity = SquareRoot(Pow(vVel[0], 2.0) + Pow(vVel[1], 2.0)); |     float fVelocity = SquareRoot(Pow(vVel[0], 2.0) + Pow(vVel[1], 2.0)); | ||||||
| 	float velocity_block[3]; |     float velocity_block[3]; | ||||||
| 	velocity_block[0] = vel[0]; |     velocity_block[0] = vel[0]; | ||||||
| 	velocity_block[1] = vel[1]; |     velocity_block[1] = vel[1]; | ||||||
| 	velocity_block[2] = vel[2]; |     velocity_block[2] = vel[2]; | ||||||
| 	velocity_block[1] = 0.0; |     velocity_block[1] = 0.0; | ||||||
| 	if (fVelocity > 320.0) |     if (fVelocity > 320.0) | ||||||
| 	{ |         TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, velocity_block); | ||||||
| 		TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, velocity_block); |     buttons_old[client] = buttons; | ||||||
| 	} |  | ||||||
| 	buttons_old[client] = buttons; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user