Calculating Player Sync Movement
Posted: Mon May 02, 2016 4:08 pm
Hey Guys,
How can you calculate players movement sync with SP?
Its pretty simple with SourcePawn
How can you calculate players movement sync with SP?
Its pretty simple with SourcePawn
Code: Select all
#include <sourcemod>
#include <sdktools>
float g_fOldAngle[MAXPLAYERS+1];
int gi_TotalTicks[MAXPLAYERS+1];
int gi_SyncedTicks[MAXPLAYERS+1];
public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon, &subtype, &cmdnum, &tickcount, &seed, mouse[2])
{
//Getting the angle differnce
new Float:fAngleDiff = angles[1] - g_fOldAngle[client];
//fixing the angle differnce to positive value
if (fAngleDiff > 180)
{
fAngleDiff -= 360;
}
else if (fAngleDiff < -180)
{
fAngleDiff += 360;
}
//Checking for mouse movement
if(fAngleDiff > 0) //mouse moving left
{
gi_TotalTicks[client]++;
if(buttons & IN_MOVELEFT) //if player pressing A
{
gi_SyncedTicks[client]++;
}
}
else if(fAngleDiff < 0) //mouse moving right
{
gi_TotalTicks[client]++;
if(buttons & IN_MOVERIGHT) //if player pressing D
{
gi_SyncedTicks[client]++;
}
}
}
public float CalcSync(client)
{
//avoiding throwing error: cannot divide 0
if(gi_TotalTicks[client] > 0)
{
return (float(gi_SyncedTicks[client]) / gi_TotalTicks[client])*100.0;
}
else
{
return 0.0;
}
}