mirror of
https://github.com/shavitush/bhoptimer.git
synced 2025-12-07 10:28:26 +00:00
replace playertimer_t with timer_snapshot_t
This commit is contained in:
parent
22a87ce3ee
commit
9b00e1f16a
@ -200,8 +200,20 @@ enum struct timer_snapshot_t
|
||||
float fAvgVelocity;
|
||||
float fMaxVelocity;
|
||||
float fTimescale;
|
||||
int iZoneIncrement;
|
||||
int iZoneIncrement; // convert to array for per zone offsets (?)
|
||||
float fTimescaledTicks;
|
||||
|
||||
bool bPracticeMode;
|
||||
|
||||
bool bJumped;
|
||||
bool bCanUseAllKeys;
|
||||
bool bOnGround;
|
||||
|
||||
int iLastButtons;
|
||||
float fLastAngle;
|
||||
int iLandingTick;
|
||||
MoveType iLastMoveType;
|
||||
float fStrafeWarning;
|
||||
}
|
||||
|
||||
enum struct cp_cache_t
|
||||
@ -224,7 +236,6 @@ enum struct cp_cache_t
|
||||
ArrayList aFrames;
|
||||
int iPreFrames;
|
||||
bool bSegmented;
|
||||
bool bPractice;
|
||||
int iGroundEntity;
|
||||
int iSteamID;
|
||||
ArrayList aEvents;
|
||||
|
||||
@ -38,40 +38,6 @@
|
||||
|
||||
#define EFL_CHECK_UNTOUCH (1<<24)
|
||||
|
||||
enum struct playertimer_t
|
||||
{
|
||||
bool bEnabled;
|
||||
float fTimer;
|
||||
bool bPaused;
|
||||
int iJumps;
|
||||
int iStyle;
|
||||
bool bAuto;
|
||||
int iLastButtons;
|
||||
int iStrafes;
|
||||
float fLastAngle;
|
||||
int iTotalMeasures;
|
||||
int iGoodGains;
|
||||
float fStrafeWarning;
|
||||
bool bPracticeMode;
|
||||
int iSHSWCombination;
|
||||
int iTrack;
|
||||
int iMeasuredJumps;
|
||||
int iPerfectJumps;
|
||||
MoveType iMoveType;
|
||||
bool bCanUseAllKeys;
|
||||
bool bJumped; // not exactly a timer variable but still
|
||||
int iLandingTick;
|
||||
bool bOnGround;
|
||||
float fTimescale;
|
||||
float fZoneOffset[2];
|
||||
float fDistanceOffset[2];
|
||||
// convert to array for per zone offsets
|
||||
int iZoneIncrement;
|
||||
float fTimescaledTicks;
|
||||
float fAvgVelocity;
|
||||
float fMaxVelocity;
|
||||
}
|
||||
|
||||
// game type (CS:S/CS:GO/TF2)
|
||||
EngineVersion gEV_Type = Engine_Unknown;
|
||||
bool gB_Protobuf = false;
|
||||
@ -114,7 +80,8 @@ Handle gH_Forwards_OnProcessMovementPost = null;
|
||||
StringMap gSM_StyleCommands = null;
|
||||
|
||||
// player timer variables
|
||||
playertimer_t gA_Timers[MAXPLAYERS+1];
|
||||
timer_snapshot_t gA_Timers[MAXPLAYERS+1];
|
||||
bool gB_Auto[MAXPLAYERS+1];
|
||||
|
||||
// these are here until the compiler bug is fixed
|
||||
float gF_PauseOrigin[MAXPLAYERS+1][3];
|
||||
@ -743,7 +710,7 @@ public Action Command_StartTimer(int client, int args)
|
||||
}
|
||||
else if(StrContains(sCommand, "sm_r", false) == 0 || StrContains(sCommand, "sm_s", false) == 0)
|
||||
{
|
||||
track = (DoIHateMain(client)) ? Track_Main : gA_Timers[client].iTrack;
|
||||
track = (DoIHateMain(client)) ? Track_Main : gA_Timers[client].iTimerTrack;
|
||||
|
||||
Action result = Plugin_Continue;
|
||||
Call_StartForward(gH_Forwards_OnRestartPre);
|
||||
@ -906,7 +873,7 @@ public Action Command_TogglePause(int client, int args)
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
if(gA_Timers[client].bPaused)
|
||||
if (gA_Timers[client].bClientPaused)
|
||||
{
|
||||
TeleportEntity(client, gF_PauseOrigin[client], gF_PauseAngles[client], gF_PauseVelocity[client]);
|
||||
ResumeTimer(client);
|
||||
@ -952,7 +919,7 @@ public Action Command_TogglePause(int client, int args)
|
||||
#if DEBUG
|
||||
public Action Command_FinishTest(int client, int args)
|
||||
{
|
||||
Shavit_FinishMap(client, gA_Timers[client].iTrack);
|
||||
Shavit_FinishMap(client, gA_Timers[client].iTimerTrack);
|
||||
|
||||
return Plugin_Handled;
|
||||
}
|
||||
@ -1205,20 +1172,19 @@ public Action Command_AutoBhop(int client, int args)
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
gA_Timers[client].bAuto = !gA_Timers[client].bAuto;
|
||||
gB_Auto[client] = !gB_Auto[client];
|
||||
|
||||
if(gA_Timers[client].bAuto)
|
||||
if (gB_Auto[client])
|
||||
{
|
||||
Shavit_PrintToChat(client, "%T", "AutobhopEnabled", client, gS_ChatStrings.sVariable2, gS_ChatStrings.sText);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
Shavit_PrintToChat(client, "%T", "AutobhopDisabled", client, gS_ChatStrings.sWarning, gS_ChatStrings.sText);
|
||||
}
|
||||
|
||||
char sAutoBhop[4];
|
||||
IntToString(view_as<int>(gA_Timers[client].bAuto), sAutoBhop, 4);
|
||||
IntToString(view_as<int>(gB_Auto[client]), sAutoBhop, 4);
|
||||
SetClientCookie(client, gH_AutoBhopCookie, sAutoBhop);
|
||||
|
||||
UpdateStyleSettings(client);
|
||||
@ -1266,7 +1232,7 @@ public Action Command_Style(int client, int args)
|
||||
|
||||
if(gB_WR)
|
||||
{
|
||||
time = Shavit_GetWorldRecord(iStyle, gA_Timers[client].iTrack);
|
||||
time = Shavit_GetWorldRecord(iStyle, gA_Timers[client].iTimerTrack);
|
||||
}
|
||||
|
||||
if(time > 0.0)
|
||||
@ -1277,7 +1243,7 @@ public Action Command_Style(int client, int args)
|
||||
char sWR[8];
|
||||
strcopy(sWR, 8, "WR");
|
||||
|
||||
if(gA_Timers[client].iTrack >= Track_Bonus)
|
||||
if (gA_Timers[client].iTimerTrack >= Track_Bonus)
|
||||
{
|
||||
strcopy(sWR, 8, "BWR");
|
||||
}
|
||||
@ -1293,7 +1259,7 @@ public Action Command_Style(int client, int args)
|
||||
}
|
||||
}
|
||||
|
||||
menu.AddItem(sInfo, sDisplay, (gA_Timers[client].iStyle == iStyle || !Shavit_HasStyleAccess(client, iStyle))? ITEMDRAW_DISABLED:ITEMDRAW_DEFAULT);
|
||||
menu.AddItem(sInfo, sDisplay, (gA_Timers[client].bsStyle == iStyle || !Shavit_HasStyleAccess(client, iStyle))? ITEMDRAW_DISABLED:ITEMDRAW_DEFAULT);
|
||||
}
|
||||
|
||||
// should NEVER happen
|
||||
@ -1360,12 +1326,12 @@ void CallOnStyleChanged(int client, int oldstyle, int newstyle, bool manual, boo
|
||||
Call_PushCell(client);
|
||||
Call_PushCell(oldstyle);
|
||||
Call_PushCell(newstyle);
|
||||
Call_PushCell(gA_Timers[client].iTrack);
|
||||
Call_PushCell(gA_Timers[client].iTimerTrack);
|
||||
Call_PushCell(manual);
|
||||
Call_Finish();
|
||||
}
|
||||
|
||||
gA_Timers[client].iStyle = newstyle;
|
||||
gA_Timers[client].bsStyle = newstyle;
|
||||
|
||||
float fNewTimescale = GetStyleSettingFloat(newstyle, "timescale");
|
||||
|
||||
@ -1432,7 +1398,7 @@ void ChangeClientStyle(int client, int style, bool manual)
|
||||
Shavit_PrintToChat(client, "%T", "UnrankedWarning", client, gS_ChatStrings.sWarning, gS_ChatStrings.sText);
|
||||
}
|
||||
|
||||
int aa_old = RoundToZero(GetStyleSettingFloat(gA_Timers[client].iStyle, "airaccelerate"));
|
||||
int aa_old = RoundToZero(GetStyleSettingFloat(gA_Timers[client].bsStyle, "airaccelerate"));
|
||||
int aa_new = RoundToZero(GetStyleSettingFloat(style, "airaccelerate"));
|
||||
|
||||
if(aa_old != aa_new)
|
||||
@ -1440,14 +1406,14 @@ void ChangeClientStyle(int client, int style, bool manual)
|
||||
Shavit_PrintToChat(client, "%T", "NewAiraccelerate", client, aa_old, gS_ChatStrings.sVariable, aa_new, gS_ChatStrings.sText);
|
||||
}
|
||||
|
||||
CallOnStyleChanged(client, gA_Timers[client].iStyle, style, manual);
|
||||
CallOnStyleChanged(client, gA_Timers[client].bsStyle, style, manual);
|
||||
|
||||
if(gCV_AllowTimerWithoutZone.BoolValue || (gB_Zones && (Shavit_ZoneExists(Zone_Start, gA_Timers[client].iTrack) || gB_KZMap)))
|
||||
if (gCV_AllowTimerWithoutZone.BoolValue || (gB_Zones && (Shavit_ZoneExists(Zone_Start, gA_Timers[client].iTimerTrack) || gB_KZMap)))
|
||||
{
|
||||
Shavit_StopTimer(client, true);
|
||||
Call_StartForward(gH_Forwards_OnRestart);
|
||||
Call_PushCell(client);
|
||||
Call_PushCell(gA_Timers[client].iTrack);
|
||||
Call_PushCell(gA_Timers[client].iTimerTrack);
|
||||
Call_Finish();
|
||||
}
|
||||
|
||||
@ -1477,14 +1443,14 @@ public void Player_Jump(Event event, const char[] name, bool dontBroadcast)
|
||||
|
||||
void DoJump(int client)
|
||||
{
|
||||
if(gA_Timers[client].bEnabled && !gA_Timers[client].bPaused)
|
||||
if (gA_Timers[client].bTimerEnabled && !gA_Timers[client].bClientPaused)
|
||||
{
|
||||
gA_Timers[client].iJumps++;
|
||||
gA_Timers[client].bJumped = true;
|
||||
}
|
||||
|
||||
// TF2 doesn't use stamina
|
||||
if(gEV_Type != Engine_TF2 && (GetStyleSettingBool(gA_Timers[client].iStyle, "easybhop")) || Shavit_InsideZone(client, Zone_Easybhop, gA_Timers[client].iTrack))
|
||||
if (gEV_Type != Engine_TF2 && (GetStyleSettingBool(gA_Timers[client].bsStyle, "easybhop")) || Shavit_InsideZone(client, Zone_Easybhop, gA_Timers[client].iTimerTrack))
|
||||
{
|
||||
SetEntPropFloat(client, Prop_Send, "m_flStamina", 0.0);
|
||||
}
|
||||
@ -1501,11 +1467,11 @@ void VelocityChanges(int data)
|
||||
return;
|
||||
}
|
||||
|
||||
int style = gA_Timers[client].iStyle;
|
||||
int style = gA_Timers[client].bsStyle;
|
||||
|
||||
if(GetStyleSettingBool(style, "force_timescale"))
|
||||
{
|
||||
float mod = gA_Timers[client].fTimescale * GetStyleSettingFloat(gA_Timers[client].iStyle, "speed");
|
||||
float mod = gA_Timers[client].fTimescale * GetStyleSettingFloat(gA_Timers[client].bsStyle, "speed");
|
||||
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", mod);
|
||||
|
||||
if (gB_Eventqueuefix)
|
||||
@ -1591,12 +1557,12 @@ public int Native_GetDatabase(Handle handler, int numParams)
|
||||
|
||||
public int Native_GetClientTime(Handle handler, int numParams)
|
||||
{
|
||||
return view_as<int>(gA_Timers[GetNativeCell(1)].fTimer);
|
||||
return view_as<int>(gA_Timers[GetNativeCell(1)].fCurrentTime);
|
||||
}
|
||||
|
||||
public int Native_GetClientTrack(Handle handler, int numParams)
|
||||
{
|
||||
return gA_Timers[GetNativeCell(1)].iTrack;
|
||||
return gA_Timers[GetNativeCell(1)].iTimerTrack;
|
||||
}
|
||||
|
||||
public int Native_GetClientJumps(Handle handler, int numParams)
|
||||
@ -1606,7 +1572,7 @@ public int Native_GetClientJumps(Handle handler, int numParams)
|
||||
|
||||
public int Native_GetBhopStyle(Handle handler, int numParams)
|
||||
{
|
||||
return gA_Timers[GetNativeCell(1)].iStyle;
|
||||
return gA_Timers[GetNativeCell(1)].bsStyle;
|
||||
}
|
||||
|
||||
public int Native_GetTimerStatus(Handle handler, int numParams)
|
||||
@ -1646,7 +1612,7 @@ public int Native_StopTimer(Handle handler, int numParams)
|
||||
bool bResult = true;
|
||||
Call_StartForward(gH_Forwards_StopPre);
|
||||
Call_PushCell(client);
|
||||
Call_PushCell(gA_Timers[client].iTrack);
|
||||
Call_PushCell(gA_Timers[client].iTimerTrack);
|
||||
Call_Finish(bResult);
|
||||
|
||||
if(!bResult)
|
||||
@ -1659,7 +1625,7 @@ public int Native_StopTimer(Handle handler, int numParams)
|
||||
|
||||
Call_StartForward(gH_Forwards_Stop);
|
||||
Call_PushCell(client);
|
||||
Call_PushCell(gA_Timers[client].iTrack);
|
||||
Call_PushCell(gA_Timers[client].iTimerTrack);
|
||||
Call_Finish();
|
||||
|
||||
return true;
|
||||
@ -1675,17 +1641,17 @@ public int Native_CanPause(Handle handler, int numParams)
|
||||
iFlags |= CPR_ByConVar;
|
||||
}
|
||||
|
||||
if(!gA_Timers[client].bEnabled)
|
||||
if (!gA_Timers[client].bTimerEnabled)
|
||||
{
|
||||
iFlags |= CPR_NoTimer;
|
||||
}
|
||||
|
||||
if(Shavit_InsideZone(client, Zone_Start, gA_Timers[client].iTrack))
|
||||
if (Shavit_InsideZone(client, Zone_Start, gA_Timers[client].iTimerTrack))
|
||||
{
|
||||
iFlags |= CPR_InStartZone;
|
||||
}
|
||||
|
||||
if(Shavit_InsideZone(client, Zone_End, gA_Timers[client].iTrack))
|
||||
if (Shavit_InsideZone(client, Zone_End, gA_Timers[client].iTimerTrack))
|
||||
{
|
||||
iFlags |= CPR_InEndZone;
|
||||
}
|
||||
@ -1741,7 +1707,7 @@ public int Native_ChangeClientStyle(Handle handler, int numParams)
|
||||
|
||||
if(force || Shavit_HasStyleAccess(client, style))
|
||||
{
|
||||
CallOnStyleChanged(client, gA_Timers[client].iStyle, style, manual, noforward);
|
||||
CallOnStyleChanged(client, gA_Timers[client].bsStyle, style, manual, noforward);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -1768,7 +1734,7 @@ public int Native_FinishMap(Handle handler, int numParams)
|
||||
}
|
||||
}
|
||||
|
||||
gA_Timers[client].fTimer = (gA_Timers[client].fTimescaledTicks + gA_Timers[client].fZoneOffset[Zone_Start] + gA_Timers[client].fZoneOffset[Zone_End]) * GetTickInterval();
|
||||
gA_Timers[client].fCurrentTime = (gA_Timers[client].fTimescaledTicks + gA_Timers[client].fZoneOffset[Zone_Start] + gA_Timers[client].fZoneOffset[Zone_End]) * GetTickInterval();
|
||||
|
||||
timer_snapshot_t snapshot;
|
||||
BuildSnapshot(client, snapshot);
|
||||
@ -1798,13 +1764,13 @@ public int Native_FinishMap(Handle handler, int numParams)
|
||||
|
||||
if(result == Plugin_Continue)
|
||||
{
|
||||
Call_PushCell(style = gA_Timers[client].iStyle);
|
||||
Call_PushCell(gA_Timers[client].fTimer);
|
||||
Call_PushCell(style = gA_Timers[client].bsStyle);
|
||||
Call_PushCell(gA_Timers[client].fCurrentTime);
|
||||
Call_PushCell(gA_Timers[client].iJumps);
|
||||
Call_PushCell(gA_Timers[client].iStrafes);
|
||||
//gross
|
||||
Call_PushCell((GetStyleSettingBool(gA_Timers[client].iStyle, "sync"))? (gA_Timers[client].iGoodGains == 0)? 0.0:(gA_Timers[client].iGoodGains / float(gA_Timers[client].iTotalMeasures) * 100.0):-1.0);
|
||||
Call_PushCell(track = gA_Timers[client].iTrack);
|
||||
Call_PushCell((GetStyleSettingBool(gA_Timers[client].bsStyle, "sync"))? (gA_Timers[client].iGoodGains == 0)? 0.0:(gA_Timers[client].iGoodGains / float(gA_Timers[client].iTotalMeasures) * 100.0):-1.0);
|
||||
Call_PushCell(track = gA_Timers[client].iTimerTrack);
|
||||
perfs = (gA_Timers[client].iMeasuredJumps == 0)? 100.0:(gA_Timers[client].iPerfectJumps / float(gA_Timers[client].iMeasuredJumps) * 100.0);
|
||||
}
|
||||
else
|
||||
@ -2019,7 +1985,7 @@ public int Native_GetSync(Handle handler, int numParams)
|
||||
{
|
||||
int client = GetNativeCell(1);
|
||||
|
||||
return view_as<int>((GetStyleSettingBool(gA_Timers[client].iStyle, "sync")? (gA_Timers[client].iGoodGains == 0)? 0.0:(gA_Timers[client].iGoodGains / float(gA_Timers[client].iTotalMeasures) * 100.0):-1.0));
|
||||
return view_as<int>((GetStyleSettingBool(gA_Timers[client].bsStyle, "sync")? (gA_Timers[client].iGoodGains == 0)? 0.0:(gA_Timers[client].iGoodGains / float(gA_Timers[client].iTotalMeasures) * 100.0):-1.0));
|
||||
}
|
||||
|
||||
public int Native_GetStyleCount(Handle handler, int numParams)
|
||||
@ -2138,7 +2104,7 @@ public int Native_SetPracticeMode(Handle handler, int numParams)
|
||||
|
||||
public int Native_IsPaused(Handle handler, int numParams)
|
||||
{
|
||||
return view_as<int>(gA_Timers[GetNativeCell(1)].bPaused);
|
||||
return view_as<int>(gA_Timers[GetNativeCell(1)].bClientPaused);
|
||||
}
|
||||
|
||||
public int Native_IsPracticeMode(Handle handler, int numParams)
|
||||
@ -2174,42 +2140,21 @@ public int Native_LoadSnapshot(Handle handler, int numParams)
|
||||
timer_snapshot_t snapshot;
|
||||
GetNativeArray(2, snapshot, sizeof(timer_snapshot_t));
|
||||
|
||||
if(gA_Timers[client].iTrack != snapshot.iTimerTrack)
|
||||
if (gA_Timers[client].iTimerTrack != snapshot.iTimerTrack)
|
||||
{
|
||||
CallOnTrackChanged(client, gA_Timers[client].iTrack, snapshot.iTimerTrack);
|
||||
CallOnTrackChanged(client, gA_Timers[client].iTimerTrack, snapshot.iTimerTrack);
|
||||
}
|
||||
|
||||
gA_Timers[client].iTrack = snapshot.iTimerTrack;
|
||||
gA_Timers[client].iTimerTrack = snapshot.iTimerTrack;
|
||||
|
||||
if(gA_Timers[client].iStyle != snapshot.bsStyle && Shavit_HasStyleAccess(client, snapshot.bsStyle))
|
||||
if (gA_Timers[client].bsStyle != snapshot.bsStyle && Shavit_HasStyleAccess(client, snapshot.bsStyle))
|
||||
{
|
||||
CallOnStyleChanged(client, gA_Timers[client].iStyle, snapshot.bsStyle, false);
|
||||
CallOnStyleChanged(client, gA_Timers[client].bsStyle, snapshot.bsStyle, false);
|
||||
}
|
||||
|
||||
// no longer paused, reset their movement
|
||||
if(gA_Timers[client].bPaused && !snapshot.bClientPaused)
|
||||
{
|
||||
//SetEntityMoveType(client, MOVETYPE_WALK);
|
||||
}
|
||||
|
||||
gA_Timers[client].bEnabled = snapshot.bTimerEnabled;
|
||||
gA_Timers[client].bPaused = snapshot.bClientPaused && snapshot.bTimerEnabled;
|
||||
gA_Timers[client].iJumps = snapshot.iJumps;
|
||||
gA_Timers[client].iStyle = snapshot.bsStyle;
|
||||
gA_Timers[client].iStrafes = snapshot.iStrafes;
|
||||
gA_Timers[client].iTotalMeasures = snapshot.iTotalMeasures;
|
||||
gA_Timers[client].iGoodGains = snapshot.iGoodGains;
|
||||
gA_Timers[client].fTimer = snapshot.fCurrentTime;
|
||||
gA_Timers[client].iSHSWCombination = snapshot.iSHSWCombination;
|
||||
gA_Timers[client].iMeasuredJumps = snapshot.iMeasuredJumps;
|
||||
gA_Timers[client].iPerfectJumps = snapshot.iPerfectJumps;
|
||||
gA_Timers[client].fZoneOffset = snapshot.fZoneOffset;
|
||||
gA_Timers[client].fDistanceOffset = snapshot.fDistanceOffset;
|
||||
gA_Timers[client].fAvgVelocity = snapshot.fAvgVelocity;
|
||||
gA_Timers[client].fMaxVelocity = snapshot.fMaxVelocity;
|
||||
gA_Timers[client] = snapshot;
|
||||
gA_Timers[client].bClientPaused = snapshot.bClientPaused && snapshot.bTimerEnabled;
|
||||
gA_Timers[client].fTimescale = (snapshot.fTimescale > 0.0) ? snapshot.fTimescale : 1.0;
|
||||
gA_Timers[client].iZoneIncrement = snapshot.iZoneIncrement;
|
||||
gA_Timers[client].fTimescaledTicks = snapshot.fTimescaledTicks;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -2240,7 +2185,7 @@ public int Native_GetClientTimescale(Handle handler, int numParams)
|
||||
{
|
||||
int client = GetNativeCell(1);
|
||||
|
||||
if (gA_Timers[client].fTimescale == GetStyleSettingFloat(gA_Timers[client].iStyle, "timescale"))
|
||||
if (gA_Timers[client].fTimescale == GetStyleSettingFloat(gA_Timers[client].bsStyle, "timescale"))
|
||||
{
|
||||
return view_as<int>(-1.0);
|
||||
}
|
||||
@ -2437,12 +2382,11 @@ public Action Shavit_OnStartPre(int client, int track)
|
||||
|
||||
int GetTimerStatus(int client)
|
||||
{
|
||||
if(!gA_Timers[client].bEnabled)
|
||||
if (!gA_Timers[client].bTimerEnabled)
|
||||
{
|
||||
return view_as<int>(Timer_Stopped);
|
||||
}
|
||||
|
||||
else if(gA_Timers[client].bPaused)
|
||||
else if (gA_Timers[client].bClientPaused)
|
||||
{
|
||||
return view_as<int>(Timer_Paused);
|
||||
}
|
||||
@ -2461,9 +2405,9 @@ void StartTimer(int client, int track)
|
||||
GetEntPropVector(client, Prop_Data, "m_vecVelocity", fSpeed);
|
||||
float curVel = SquareRoot(Pow(fSpeed[0], 2.0) + Pow(fSpeed[1], 2.0));
|
||||
|
||||
if(!gCV_NoZAxisSpeed.BoolValue ||
|
||||
GetStyleSettingInt(gA_Timers[client].iStyle, "prespeed") == 1 ||
|
||||
(fSpeed[2] == 0.0 && (GetStyleSettingInt(gA_Timers[client].iStyle, "prespeed") == 2 || curVel <= 290.0)))
|
||||
if (!gCV_NoZAxisSpeed.BoolValue ||
|
||||
GetStyleSettingInt(gA_Timers[client].bsStyle, "prespeed") == 1 ||
|
||||
(fSpeed[2] == 0.0 && (GetStyleSettingInt(gA_Timers[client].bsStyle, "prespeed") == 2 || curVel <= 290.0)))
|
||||
{
|
||||
Action result = Plugin_Continue;
|
||||
Call_StartForward(gH_Forwards_StartPre);
|
||||
@ -2478,28 +2422,28 @@ void StartTimer(int client, int track)
|
||||
Call_PushCell(track);
|
||||
Call_Finish(result);
|
||||
|
||||
if(gA_Timers[client].bPaused)
|
||||
if (gA_Timers[client].bClientPaused)
|
||||
{
|
||||
//SetEntityMoveType(client, MOVETYPE_WALK);
|
||||
}
|
||||
|
||||
gA_Timers[client].iZoneIncrement = 0;
|
||||
gA_Timers[client].fTimescaledTicks = 0.0;
|
||||
gA_Timers[client].bPaused = false;
|
||||
gA_Timers[client].bClientPaused = false;
|
||||
gA_Timers[client].iStrafes = 0;
|
||||
gA_Timers[client].iJumps = 0;
|
||||
gA_Timers[client].iTotalMeasures = 0;
|
||||
gA_Timers[client].iGoodGains = 0;
|
||||
|
||||
if(gA_Timers[client].iTrack != track)
|
||||
if (gA_Timers[client].iTimerTrack != track)
|
||||
{
|
||||
CallOnTrackChanged(client, gA_Timers[client].iTrack, track);
|
||||
CallOnTrackChanged(client, gA_Timers[client].iTimerTrack, track);
|
||||
}
|
||||
|
||||
gA_Timers[client].iTrack = track;
|
||||
gA_Timers[client].bEnabled = true;
|
||||
gA_Timers[client].iTimerTrack = track;
|
||||
gA_Timers[client].bTimerEnabled = true;
|
||||
gA_Timers[client].iSHSWCombination = -1;
|
||||
gA_Timers[client].fTimer = 0.0;
|
||||
gA_Timers[client].fCurrentTime = 0.0;
|
||||
gA_Timers[client].bPracticeMode = false;
|
||||
gA_Timers[client].iMeasuredJumps = 0;
|
||||
gA_Timers[client].iPerfectJumps = 0;
|
||||
@ -2511,7 +2455,7 @@ void StartTimer(int client, int track)
|
||||
gA_Timers[client].fAvgVelocity = curVel;
|
||||
gA_Timers[client].fMaxVelocity = curVel;
|
||||
|
||||
float mod = gA_Timers[client].fTimescale * GetStyleSettingFloat(gA_Timers[client].iStyle, "speed");
|
||||
float mod = gA_Timers[client].fTimescale * GetStyleSettingFloat(gA_Timers[client].bsStyle, "speed");
|
||||
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", mod);
|
||||
|
||||
if (gB_Eventqueuefix)
|
||||
@ -2519,12 +2463,12 @@ void StartTimer(int client, int track)
|
||||
SetEventsTimescale(client, mod);
|
||||
}
|
||||
|
||||
SetEntityGravity(client, GetStyleSettingFloat(gA_Timers[client].iStyle, "gravity"));
|
||||
SetEntityGravity(client, GetStyleSettingFloat(gA_Timers[client].bsStyle, "gravity"));
|
||||
}
|
||||
#if 0
|
||||
else if(result == Plugin_Handled || result == Plugin_Stop)
|
||||
{
|
||||
gA_Timers[client].bEnabled = false;
|
||||
gA_Timers[client].bTimerEnabled = false;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -2537,15 +2481,15 @@ void StopTimer(int client)
|
||||
return;
|
||||
}
|
||||
|
||||
if(gA_Timers[client].bPaused)
|
||||
if (gA_Timers[client].bClientPaused)
|
||||
{
|
||||
//SetEntityMoveType(client, MOVETYPE_WALK);
|
||||
}
|
||||
|
||||
gA_Timers[client].bEnabled = false;
|
||||
gA_Timers[client].bTimerEnabled = false;
|
||||
gA_Timers[client].iJumps = 0;
|
||||
gA_Timers[client].fTimer = 0.0;
|
||||
gA_Timers[client].bPaused = false;
|
||||
gA_Timers[client].fCurrentTime = 0.0;
|
||||
gA_Timers[client].bClientPaused = false;
|
||||
gA_Timers[client].iStrafes = 0;
|
||||
gA_Timers[client].iTotalMeasures = 0;
|
||||
gA_Timers[client].iGoodGains = 0;
|
||||
@ -2560,10 +2504,10 @@ void PauseTimer(int client)
|
||||
|
||||
Call_StartForward(gH_Forwards_OnPause);
|
||||
Call_PushCell(client);
|
||||
Call_PushCell(gA_Timers[client].iTrack);
|
||||
Call_PushCell(gA_Timers[client].iTimerTrack);
|
||||
Call_Finish();
|
||||
|
||||
gA_Timers[client].bPaused = true;
|
||||
gA_Timers[client].bClientPaused = true;
|
||||
}
|
||||
|
||||
void ResumeTimer(int client)
|
||||
@ -2575,10 +2519,10 @@ void ResumeTimer(int client)
|
||||
|
||||
Call_StartForward(gH_Forwards_OnResume);
|
||||
Call_PushCell(client);
|
||||
Call_PushCell(gA_Timers[client].iTrack);
|
||||
Call_PushCell(gA_Timers[client].iTimerTrack);
|
||||
Call_Finish();
|
||||
|
||||
gA_Timers[client].bPaused = false;
|
||||
gA_Timers[client].bClientPaused = false;
|
||||
// setting is handled in usercmd
|
||||
//SetEntityMoveType(client, MOVETYPE_WALK);
|
||||
}
|
||||
@ -2602,7 +2546,7 @@ public void OnClientCookiesCached(int client)
|
||||
GetClientCookie(client, gH_AutoBhopCookie, sCookie, 4);
|
||||
}
|
||||
|
||||
gA_Timers[client].bAuto = (strlen(sCookie) > 0)? view_as<bool>(StringToInt(sCookie)):true;
|
||||
gB_Auto[client] = (strlen(sCookie) > 0)? view_as<bool>(StringToInt(sCookie)):true;
|
||||
|
||||
int style = gI_DefaultStyle;
|
||||
|
||||
@ -2619,7 +2563,7 @@ public void OnClientCookiesCached(int client)
|
||||
|
||||
if(Shavit_HasStyleAccess(client, style))
|
||||
{
|
||||
CallOnStyleChanged(client, gA_Timers[client].iStyle, style, false);
|
||||
CallOnStyleChanged(client, gA_Timers[client].bsStyle, style, false);
|
||||
}
|
||||
|
||||
gB_CookiesRetrieved[client] = true;
|
||||
@ -2634,12 +2578,12 @@ public void OnClientPutInServer(int client)
|
||||
return;
|
||||
}
|
||||
|
||||
gA_Timers[client].bAuto = true;
|
||||
gB_Auto[client] = true;
|
||||
gA_Timers[client].fStrafeWarning = 0.0;
|
||||
gA_Timers[client].bPracticeMode = false;
|
||||
gA_Timers[client].iSHSWCombination = -1;
|
||||
gA_Timers[client].iTrack = 0;
|
||||
gA_Timers[client].iStyle = 0;
|
||||
gA_Timers[client].iTimerTrack = 0;
|
||||
gA_Timers[client].bsStyle = 0;
|
||||
gA_Timers[client].fTimescale = 1.0;
|
||||
gA_Timers[client].fTimescaledTicks = 0.0;
|
||||
gA_Timers[client].iZoneIncrement = 0;
|
||||
@ -3498,7 +3442,7 @@ public void Shavit_OnLeaveZone(int client, int type, int track, int id, int enti
|
||||
{
|
||||
if(type == Zone_Airaccelerate)
|
||||
{
|
||||
UpdateAiraccelerate(client, GetStyleSettingFloat(gA_Timers[client].iStyle, "airaccelerate"));
|
||||
UpdateAiraccelerate(client, GetStyleSettingFloat(gA_Timers[client].bsStyle, "airaccelerate"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -3508,7 +3452,7 @@ public void PreThinkPost(int client)
|
||||
{
|
||||
if(!gB_Zones || !Shavit_InsideZone(client, Zone_Airaccelerate, -1))
|
||||
{
|
||||
sv_airaccelerate.FloatValue = GetStyleSettingFloat(gA_Timers[client].iStyle, "airaccelerate");
|
||||
sv_airaccelerate.FloatValue = GetStyleSettingFloat(gA_Timers[client].bsStyle, "airaccelerate");
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3517,19 +3461,19 @@ public void PreThinkPost(int client)
|
||||
|
||||
if(sv_enablebunnyhopping != null)
|
||||
{
|
||||
sv_enablebunnyhopping.BoolValue = GetStyleSettingBool(gA_Timers[client].iStyle, "bunnyhopping");
|
||||
sv_enablebunnyhopping.BoolValue = GetStyleSettingBool(gA_Timers[client].bsStyle, "bunnyhopping");
|
||||
}
|
||||
|
||||
MoveType mtMoveType = GetEntityMoveType(client);
|
||||
|
||||
if(GetStyleSettingFloat(gA_Timers[client].iStyle, "gravity") != 1.0 &&
|
||||
if (GetStyleSettingFloat(gA_Timers[client].bsStyle, "gravity") != 1.0 &&
|
||||
(mtMoveType == MOVETYPE_WALK || mtMoveType == MOVETYPE_ISOMETRIC) &&
|
||||
(gA_Timers[client].iMoveType == MOVETYPE_LADDER || GetEntityGravity(client) == 1.0))
|
||||
(gA_Timers[client].iLastMoveType == MOVETYPE_LADDER || GetEntityGravity(client) == 1.0))
|
||||
{
|
||||
SetEntityGravity(client, GetStyleSettingFloat(gA_Timers[client].iStyle, "gravity"));
|
||||
SetEntityGravity(client, GetStyleSettingFloat(gA_Timers[client].bsStyle, "gravity"));
|
||||
}
|
||||
|
||||
gA_Timers[client].iMoveType = mtMoveType;
|
||||
gA_Timers[client].iLastMoveType = mtMoveType;
|
||||
}
|
||||
}
|
||||
|
||||
@ -3595,7 +3539,7 @@ public MRESReturn DHook_AcceptInput_player_speedmod(int pThis, DHookReturn hRetu
|
||||
hParams.GetObjectVarString(4, 0, ObjectValueType_String, buf, sizeof(buf));
|
||||
|
||||
float speed = StringToFloat(buf);
|
||||
int style = gA_Timers[activator].iStyle;
|
||||
int style = gA_Timers[activator].bsStyle;
|
||||
|
||||
speed *= gA_Timers[activator].fTimescale * GetStyleSettingFloat(style, "speed");
|
||||
SetEntPropFloat(activator, Prop_Data, "m_flLaggedMovementValue", speed);
|
||||
@ -3641,7 +3585,7 @@ public MRESReturn DHook_ProcessMovementPost(Handle hParams)
|
||||
Call_PushCell(client);
|
||||
Call_Finish();
|
||||
|
||||
if(gA_Timers[client].bPaused || !gA_Timers[client].bEnabled)
|
||||
if (gA_Timers[client].bClientPaused || !gA_Timers[client].bTimerEnabled)
|
||||
{
|
||||
return MRES_Ignored;
|
||||
}
|
||||
@ -3670,7 +3614,7 @@ public MRESReturn DHook_ProcessMovementPost(Handle hParams)
|
||||
gA_Timers[client].fTimescaledTicks += time / interval;
|
||||
}
|
||||
|
||||
gA_Timers[client].fTimer = interval * gA_Timers[client].fTimescaledTicks;
|
||||
gA_Timers[client].fCurrentTime = interval * gA_Timers[client].fTimescaledTicks;
|
||||
|
||||
Call_StartForward(gH_Forwards_OnTimerIncrementPost);
|
||||
Call_PushCell(client);
|
||||
@ -3749,26 +3693,10 @@ bool TREnumTrigger(int entity, int client) {
|
||||
|
||||
void BuildSnapshot(int client, timer_snapshot_t snapshot)
|
||||
{
|
||||
snapshot.bTimerEnabled = gA_Timers[client].bEnabled;
|
||||
snapshot.bClientPaused = gA_Timers[client].bPaused;
|
||||
snapshot.iJumps = gA_Timers[client].iJumps;
|
||||
snapshot.bsStyle = gA_Timers[client].iStyle;
|
||||
snapshot.iStrafes = gA_Timers[client].iStrafes;
|
||||
snapshot.iTotalMeasures = gA_Timers[client].iTotalMeasures;
|
||||
snapshot.iGoodGains = gA_Timers[client].iGoodGains;
|
||||
snapshot = gA_Timers[client];
|
||||
snapshot.fServerTime = GetEngineTime();
|
||||
snapshot.fCurrentTime = gA_Timers[client].fTimer;
|
||||
snapshot.iSHSWCombination = gA_Timers[client].iSHSWCombination;
|
||||
snapshot.iTimerTrack = gA_Timers[client].iTrack;
|
||||
snapshot.iMeasuredJumps = gA_Timers[client].iMeasuredJumps;
|
||||
snapshot.iPerfectJumps = gA_Timers[client].iPerfectJumps;
|
||||
snapshot.fZoneOffset = gA_Timers[client].fZoneOffset;
|
||||
snapshot.fDistanceOffset = gA_Timers[client].fDistanceOffset;
|
||||
snapshot.fAvgVelocity = gA_Timers[client].fAvgVelocity;
|
||||
snapshot.fMaxVelocity = gA_Timers[client].fMaxVelocity;
|
||||
snapshot.fTimescale = (gA_Timers[client].fTimescale > 0.0) ? gA_Timers[client].fTimescale : 1.0;
|
||||
snapshot.iZoneIncrement = gA_Timers[client].iZoneIncrement;
|
||||
snapshot.fTimescaledTicks = gA_Timers[client].fTimescaledTicks;
|
||||
//snapshot.iLandingTick = ?????; // TODO: Think about handling segmented scroll? /shrug
|
||||
}
|
||||
|
||||
public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon, int &subtype, int &cmdnum, int &tickcount, int &seed, int mouse[2])
|
||||
@ -3794,7 +3722,7 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
|
||||
int flags = GetEntityFlags(client);
|
||||
|
||||
if (gA_Timers[client].bPaused && IsPlayerAlive(client) && !gCV_PauseMovement.BoolValue)
|
||||
if (gA_Timers[client].bClientPaused && IsPlayerAlive(client) && !gCV_PauseMovement.BoolValue)
|
||||
{
|
||||
buttons = 0;
|
||||
vel = view_as<float>({0.0, 0.0, 0.0});
|
||||
@ -3822,8 +3750,8 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
Call_PushArrayEx(vel, 3, SM_PARAM_COPYBACK);
|
||||
Call_PushArrayEx(angles, 3, SM_PARAM_COPYBACK);
|
||||
Call_PushCell(GetTimerStatus(client));
|
||||
Call_PushCell(gA_Timers[client].iTrack);
|
||||
Call_PushCell(gA_Timers[client].iStyle);
|
||||
Call_PushCell(gA_Timers[client].iTimerTrack);
|
||||
Call_PushCell(gA_Timers[client].bsStyle);
|
||||
Call_PushArrayEx(mouse, 2, SM_PARAM_COPYBACK);
|
||||
Call_Finish(result);
|
||||
|
||||
@ -3833,18 +3761,18 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
}
|
||||
|
||||
int iGroundEntity = GetEntPropEnt(client, Prop_Send, "m_hGroundEntity");
|
||||
bool bInStart = Shavit_InsideZone(client, Zone_Start, gA_Timers[client].iTrack);
|
||||
bool bInStart = Shavit_InsideZone(client, Zone_Start, gA_Timers[client].iTimerTrack);
|
||||
|
||||
if(gA_Timers[client].bEnabled && !gA_Timers[client].bPaused)
|
||||
if (gA_Timers[client].bTimerEnabled && !gA_Timers[client].bClientPaused)
|
||||
{
|
||||
// +left/right block
|
||||
if(!gB_Zones || (!bInStart && ((GetStyleSettingInt(gA_Timers[client].iStyle, "block_pleft") > 0 &&
|
||||
(buttons & IN_LEFT) > 0) || (GetStyleSettingInt(gA_Timers[client].iStyle, "block_pright") > 0 && (buttons & IN_RIGHT) > 0))))
|
||||
if(!gB_Zones || (!bInStart && ((GetStyleSettingInt(gA_Timers[client].bsStyle, "block_pleft") > 0 &&
|
||||
(buttons & IN_LEFT) > 0) || (GetStyleSettingInt(gA_Timers[client].bsStyle, "block_pright") > 0 && (buttons & IN_RIGHT) > 0))))
|
||||
{
|
||||
vel[0] = 0.0;
|
||||
vel[1] = 0.0;
|
||||
|
||||
if(GetStyleSettingInt(gA_Timers[client].iStyle, "block_pright") >= 2)
|
||||
if(GetStyleSettingInt(gA_Timers[client].bsStyle, "block_pright") >= 2)
|
||||
{
|
||||
char sCheatDetected[64];
|
||||
FormatEx(sCheatDetected, 64, "%T", "LeftRightCheat", client);
|
||||
@ -3853,13 +3781,13 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
}
|
||||
|
||||
// +strafe block
|
||||
if(GetStyleSettingInt(gA_Timers[client].iStyle, "block_pstrafe") > 0 &&
|
||||
if (GetStyleSettingInt(gA_Timers[client].bsStyle, "block_pstrafe") > 0 &&
|
||||
((vel[0] > 0.0 && (buttons & IN_FORWARD) == 0) || (vel[0] < 0.0 && (buttons & IN_BACK) == 0) ||
|
||||
(vel[1] > 0.0 && (buttons & IN_MOVERIGHT) == 0) || (vel[1] < 0.0 && (buttons & IN_MOVELEFT) == 0)))
|
||||
{
|
||||
if(gA_Timers[client].fStrafeWarning < gA_Timers[client].fTimer)
|
||||
if (gA_Timers[client].fStrafeWarning < gA_Timers[client].fCurrentTime)
|
||||
{
|
||||
if(GetStyleSettingInt(gA_Timers[client].iStyle, "block_pstrafe") >= 2)
|
||||
if (GetStyleSettingInt(gA_Timers[client].bsStyle, "block_pstrafe") >= 2)
|
||||
{
|
||||
char sCheatDetected[64];
|
||||
FormatEx(sCheatDetected, 64, "%T", "Inconsistencies", client);
|
||||
@ -3872,7 +3800,7 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
return Plugin_Changed;
|
||||
}
|
||||
|
||||
gA_Timers[client].fStrafeWarning = gA_Timers[client].fTimer + 0.3;
|
||||
gA_Timers[client].fStrafeWarning = gA_Timers[client].fCurrentTime + 0.3;
|
||||
}
|
||||
}
|
||||
|
||||
@ -3888,28 +3816,28 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
|
||||
int iPButtons = buttons;
|
||||
|
||||
if (!gA_Timers[client].bPaused)
|
||||
if (!gA_Timers[client].bClientPaused)
|
||||
{
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "strafe_count_w") && !GetStyleSettingBool(gA_Timers[client].iStyle, "block_w") &&
|
||||
if (GetStyleSettingBool(gA_Timers[client].bsStyle, "strafe_count_w") && !GetStyleSettingBool(gA_Timers[client].bsStyle, "block_w") &&
|
||||
(gA_Timers[client].iLastButtons & IN_FORWARD) == 0 && (buttons & IN_FORWARD) > 0)
|
||||
{
|
||||
gA_Timers[client].iStrafes++;
|
||||
}
|
||||
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "strafe_count_a") && !GetStyleSettingBool(gA_Timers[client].iStyle, "block_a") && (gA_Timers[client].iLastButtons & IN_MOVELEFT) == 0 &&
|
||||
(buttons & IN_MOVELEFT) > 0 && (GetStyleSettingInt(gA_Timers[client].iStyle, "force_hsw") > 0 || ((buttons & IN_FORWARD) == 0 && (buttons & IN_BACK) == 0)))
|
||||
if (GetStyleSettingBool(gA_Timers[client].bsStyle, "strafe_count_a") && !GetStyleSettingBool(gA_Timers[client].bsStyle, "block_a") && (gA_Timers[client].iLastButtons & IN_MOVELEFT) == 0 &&
|
||||
(buttons & IN_MOVELEFT) > 0 && (GetStyleSettingInt(gA_Timers[client].bsStyle, "force_hsw") > 0 || ((buttons & IN_FORWARD) == 0 && (buttons & IN_BACK) == 0)))
|
||||
{
|
||||
gA_Timers[client].iStrafes++;
|
||||
}
|
||||
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "strafe_count_s") && !GetStyleSettingBool(gA_Timers[client].iStyle, "block_s") &&
|
||||
if (GetStyleSettingBool(gA_Timers[client].bsStyle, "strafe_count_s") && !GetStyleSettingBool(gA_Timers[client].bsStyle, "block_s") &&
|
||||
(gA_Timers[client].iLastButtons & IN_BACK) == 0 && (buttons & IN_BACK) > 0)
|
||||
{
|
||||
gA_Timers[client].iStrafes++;
|
||||
}
|
||||
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "strafe_count_d") && !GetStyleSettingBool(gA_Timers[client].iStyle, "block_d") && (gA_Timers[client].iLastButtons & IN_MOVERIGHT) == 0 &&
|
||||
(buttons & IN_MOVERIGHT) > 0 && (GetStyleSettingInt(gA_Timers[client].iStyle, "force_hsw") > 0 || ((buttons & IN_FORWARD) == 0 && (buttons & IN_BACK) == 0)))
|
||||
if (GetStyleSettingBool(gA_Timers[client].bsStyle, "strafe_count_d") && !GetStyleSettingBool(gA_Timers[client].bsStyle, "block_d") && (gA_Timers[client].iLastButtons & IN_MOVERIGHT) == 0 &&
|
||||
(buttons & IN_MOVERIGHT) > 0 && (GetStyleSettingInt(gA_Timers[client].bsStyle, "force_hsw") > 0 || ((buttons & IN_FORWARD) == 0 && (buttons & IN_BACK) == 0)))
|
||||
{
|
||||
gA_Timers[client].iStrafes++;
|
||||
}
|
||||
@ -3932,32 +3860,32 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
if(!gA_Timers[client].bCanUseAllKeys && mtMoveType != MOVETYPE_NOCLIP && mtMoveType != MOVETYPE_LADDER && !Shavit_InsideZone(client, Zone_Freestyle, -1))
|
||||
{
|
||||
// block E
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "block_use") && (buttons & IN_USE) > 0)
|
||||
if (GetStyleSettingBool(gA_Timers[client].bsStyle, "block_use") && (buttons & IN_USE) > 0)
|
||||
{
|
||||
buttons &= ~IN_USE;
|
||||
}
|
||||
|
||||
if(iGroundEntity == -1 || GetStyleSettingBool(gA_Timers[client].iStyle, "force_groundkeys"))
|
||||
if (iGroundEntity == -1 || GetStyleSettingBool(gA_Timers[client].bsStyle, "force_groundkeys"))
|
||||
{
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "block_w") && ((buttons & IN_FORWARD) > 0 || vel[0] > 0.0))
|
||||
if (GetStyleSettingBool(gA_Timers[client].bsStyle, "block_w") && ((buttons & IN_FORWARD) > 0 || vel[0] > 0.0))
|
||||
{
|
||||
vel[0] = 0.0;
|
||||
buttons &= ~IN_FORWARD;
|
||||
}
|
||||
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "block_a") && ((buttons & IN_MOVELEFT) > 0 || vel[1] < 0.0))
|
||||
if (GetStyleSettingBool(gA_Timers[client].bsStyle, "block_a") && ((buttons & IN_MOVELEFT) > 0 || vel[1] < 0.0))
|
||||
{
|
||||
vel[1] = 0.0;
|
||||
buttons &= ~IN_MOVELEFT;
|
||||
}
|
||||
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "block_s") && ((buttons & IN_BACK) > 0 || vel[0] < 0.0))
|
||||
if (GetStyleSettingBool(gA_Timers[client].bsStyle, "block_s") && ((buttons & IN_BACK) > 0 || vel[0] < 0.0))
|
||||
{
|
||||
vel[0] = 0.0;
|
||||
buttons &= ~IN_BACK;
|
||||
}
|
||||
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "block_d") && ((buttons & IN_MOVERIGHT) > 0 || vel[1] > 0.0))
|
||||
if (GetStyleSettingBool(gA_Timers[client].bsStyle, "block_d") && ((buttons & IN_MOVERIGHT) > 0 || vel[1] > 0.0))
|
||||
{
|
||||
vel[1] = 0.0;
|
||||
buttons &= ~IN_MOVERIGHT;
|
||||
@ -3967,9 +3895,9 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
// Theory about blocking non-HSW strafes while playing HSW:
|
||||
// Block S and W without A or D.
|
||||
// Block A and D without S or W.
|
||||
if(GetStyleSettingInt(gA_Timers[client].iStyle, "force_hsw") > 0)
|
||||
if (GetStyleSettingInt(gA_Timers[client].bsStyle, "force_hsw") > 0)
|
||||
{
|
||||
bool bSHSW = (GetStyleSettingInt(gA_Timers[client].iStyle, "force_hsw") == 2) && !bInStart; // don't decide on the first valid input until out of start zone!
|
||||
bool bSHSW = (GetStyleSettingInt(gA_Timers[client].bsStyle, "force_hsw") == 2) && !bInStart; // don't decide on the first valid input until out of start zone!
|
||||
int iCombination = -1;
|
||||
|
||||
bool bForward = ((buttons & IN_FORWARD) > 0 && vel[0] > 0.0);
|
||||
@ -4044,7 +3972,7 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
bool bInWater = (GetEntProp(client, Prop_Send, "m_nWaterLevel") >= 2);
|
||||
|
||||
// enable duck-jumping/bhop in tf2
|
||||
if(gEV_Type == Engine_TF2 && GetStyleSettingBool(gA_Timers[client].iStyle, "bunnyhopping") && (buttons & IN_JUMP) > 0 && iGroundEntity != -1)
|
||||
if (gEV_Type == Engine_TF2 && GetStyleSettingBool(gA_Timers[client].bsStyle, "bunnyhopping") && (buttons & IN_JUMP) > 0 && iGroundEntity != -1)
|
||||
{
|
||||
float fSpeed[3];
|
||||
GetEntPropVector(client, Prop_Data, "m_vecAbsVelocity", fSpeed);
|
||||
@ -4053,7 +3981,7 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
SetEntPropVector(client, Prop_Data, "m_vecAbsVelocity", fSpeed);
|
||||
}
|
||||
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "autobhop") && gA_Timers[client].bAuto && (buttons & IN_JUMP) > 0 && mtMoveType == MOVETYPE_WALK && !bInWater)
|
||||
if (GetStyleSettingBool(gA_Timers[client].bsStyle, "autobhop") && gB_Auto[client] && (buttons & IN_JUMP) > 0 && mtMoveType == MOVETYPE_WALK && !bInWater)
|
||||
{
|
||||
int iOldButtons = GetEntProp(client, Prop_Data, "m_nOldButtons");
|
||||
SetEntProp(client, Prop_Data, "m_nOldButtons", (iOldButtons & ~IN_JUMP));
|
||||
@ -4066,13 +3994,13 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
{
|
||||
gA_Timers[client].iLandingTick = tickcount;
|
||||
|
||||
if(gEV_Type != Engine_TF2 && GetStyleSettingBool(gA_Timers[client].iStyle, "easybhop"))
|
||||
if (gEV_Type != Engine_TF2 && GetStyleSettingBool(gA_Timers[client].bsStyle, "easybhop"))
|
||||
{
|
||||
SetEntPropFloat(client, Prop_Send, "m_flStamina", 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
else if(!bOnGround && gA_Timers[client].bOnGround && gA_Timers[client].bJumped && !gA_Timers[client].bPaused)
|
||||
else if (!bOnGround && gA_Timers[client].bOnGround && gA_Timers[client].bJumped && !gA_Timers[client].bClientPaused)
|
||||
{
|
||||
int iDifference = (tickcount - gA_Timers[client].iLandingTick);
|
||||
|
||||
@ -4087,16 +4015,16 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
}
|
||||
}
|
||||
|
||||
if(bInStart && gCV_BlockPreJump.BoolValue && GetStyleSettingInt(gA_Timers[client].iStyle, "prespeed") == 0 && (vel[2] > 0 || (buttons & IN_JUMP) > 0))
|
||||
if (bInStart && gCV_BlockPreJump.BoolValue && GetStyleSettingInt(gA_Timers[client].bsStyle, "prespeed") == 0 && (vel[2] > 0 || (buttons & IN_JUMP) > 0))
|
||||
{
|
||||
vel[2] = 0.0;
|
||||
buttons &= ~IN_JUMP;
|
||||
}
|
||||
|
||||
// velocity limit
|
||||
if(iGroundEntity != -1 && GetStyleSettingFloat(gA_Timers[client].iStyle, "velocity_limit") > 0.0)
|
||||
if (iGroundEntity != -1 && GetStyleSettingFloat(gA_Timers[client].bsStyle, "velocity_limit") > 0.0)
|
||||
{
|
||||
float fSpeedLimit = GetStyleSettingFloat(gA_Timers[client].iStyle, "velocity_limit");
|
||||
float fSpeedLimit = GetStyleSettingFloat(gA_Timers[client].bsStyle, "velocity_limit");
|
||||
|
||||
if(gB_Zones && Shavit_InsideZone(client, Zone_CustomSpeedLimit, -1))
|
||||
{
|
||||
@ -4122,7 +4050,7 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
|
||||
float fAngle = GetAngleDiff(angles[1], gA_Timers[client].fLastAngle);
|
||||
|
||||
if(!gA_Timers[client].bPaused && iGroundEntity == -1 && (GetEntityFlags(client) & FL_INWATER) == 0 && fAngle != 0.0)
|
||||
if (!gA_Timers[client].bClientPaused && iGroundEntity == -1 && (GetEntityFlags(client) & FL_INWATER) == 0 && fAngle != 0.0)
|
||||
{
|
||||
float fAbsVelocity[3];
|
||||
GetEntPropVector(client, Prop_Data, "m_vecAbsVelocity", fAbsVelocity);
|
||||
@ -4143,12 +4071,12 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
}
|
||||
}
|
||||
|
||||
if (GetTimerStatus(client) == view_as<int>(Timer_Running) && gA_Timers[client].fTimer != 0.0)
|
||||
if (GetTimerStatus(client) == view_as<int>(Timer_Running) && gA_Timers[client].fCurrentTime != 0.0)
|
||||
{
|
||||
#if 0
|
||||
float frameCount = gB_Replay
|
||||
? float(Shavit_GetClientFrameCount(client) - Shavit_GetPlayerPreFrames(client)) + 1
|
||||
: (gA_Timers[client].fTimer / GetTickInterval());
|
||||
: (gA_Timers[client].fCurrentTime / GetTickInterval());
|
||||
#else
|
||||
float frameCount = float(gA_Timers[client].iZoneIncrement);
|
||||
#endif
|
||||
@ -4227,13 +4155,13 @@ void UpdateStyleSettings(int client)
|
||||
{
|
||||
if(sv_autobunnyhopping != null)
|
||||
{
|
||||
sv_autobunnyhopping.ReplicateToClient(client, (GetStyleSettingBool(gA_Timers[client].iStyle, "autobhop") && gA_Timers[client].bAuto)? "1":"0");
|
||||
sv_autobunnyhopping.ReplicateToClient(client, (GetStyleSettingBool(gA_Timers[client].bsStyle, "autobhop") && gB_Auto[client])? "1":"0");
|
||||
}
|
||||
|
||||
if(sv_enablebunnyhopping != null)
|
||||
{
|
||||
sv_enablebunnyhopping.ReplicateToClient(client, (GetStyleSettingBool(gA_Timers[client].iStyle, "bunnyhopping"))? "1":"0");
|
||||
sv_enablebunnyhopping.ReplicateToClient(client, (GetStyleSettingBool(gA_Timers[client].bsStyle, "bunnyhopping"))? "1":"0");
|
||||
}
|
||||
|
||||
UpdateAiraccelerate(client, GetStyleSettingFloat(gA_Timers[client].iStyle, "airaccelerate"));
|
||||
UpdateAiraccelerate(client, GetStyleSettingFloat(gA_Timers[client].bsStyle, "airaccelerate"));
|
||||
}
|
||||
|
||||
@ -2836,7 +2836,6 @@ void SaveCheckpointCache(int target, cp_cache_t cpcache, bool actually_a_checkpo
|
||||
}
|
||||
|
||||
cpcache.iSteamID = GetSteamAccountID(target);
|
||||
cpcache.bPractice = Shavit_IsPracticeMode(target);
|
||||
}
|
||||
|
||||
void TeleportToCheckpoint(int client, int index, bool suppressMessage)
|
||||
@ -2964,7 +2963,7 @@ void LoadCheckpointCache(int client, cp_cache_t cpcache, bool isPersistentData)
|
||||
SDKCall(gH_PhysicsCheckForEntityUntouch, client);
|
||||
}
|
||||
|
||||
if(cpcache.bPractice || !(cpcache.bSegmented || isPersistentData) || GetSteamAccountID(client) != cpcache.iSteamID)
|
||||
if (cpcache.aSnapshot.bPracticeMode || !(cpcache.bSegmented || isPersistentData) || GetSteamAccountID(client) != cpcache.iSteamID)
|
||||
{
|
||||
Shavit_SetPracticeMode(client, true, true);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user