[ReplicateGravity] 'New' stripped version of FixPlayerGravity.

This commit is contained in:
zaCade 2024-05-23 12:47:02 +02:00
parent b1c5aeb89f
commit abc69e4807

View File

@ -0,0 +1,61 @@
#pragma semicolon 1
#pragma newdecls required
#include <sourcemod>
ConVar g_hCVar_Gravity;
float g_flClientGravityReplicate[MAXPLAYERS+1];
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public Plugin myinfo =
{
name = "ReplicateGravity",
author = "xen, zaCade",
description = "Allow client prediction for gravity",
version = "1.0.0"
};
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public void OnPluginStart()
{
if ((g_hCVar_Gravity = FindConVar("sv_gravity")) == null)
{
SetFailState("Unable to find ConVar \"sv_gravity\"!");
return;
}
}
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public void OnGameFrame()
{
float flServerGravity = g_hCVar_Gravity.FloatValue;
for (int client = 1; client < MaxClients; client++)
{
if (!IsClientInGame(client) || !IsPlayerAlive(client) || IsFakeClient(client))
{
g_flClientGravityReplicate[client] = flServerGravity;
continue;
}
float flClientGravity = GetEntityGravity(client);
float flClientGravityReplicate = flClientGravity * flServerGravity;
if (flClientGravityReplicate != g_flClientGravityReplicate[client])
{
char szGravity[8];
FloatToString(flClientGravityReplicate, szGravity, sizeof(szGravity));
g_hCVar_Gravity.ReplicateToClient(client, szGravity);
g_flClientGravityReplicate[client] = flClientGravityReplicate;
}
}
}