mirror of
https://github.com/shavitush/bhoptimer.git
synced 2025-12-06 18:08:26 +00:00
Merge branch 'master' into experimental
This commit is contained in:
commit
746b232e11
@ -255,7 +255,6 @@ enum struct cp_cache_t
|
|||||||
int iClassname;
|
int iClassname;
|
||||||
ArrayList aFrames;
|
ArrayList aFrames;
|
||||||
int iPreFrames;
|
int iPreFrames;
|
||||||
int iTimerPreFrames;
|
|
||||||
bool bSegmented;
|
bool bSegmented;
|
||||||
int iSerial;
|
int iSerial;
|
||||||
bool bPractice;
|
bool bPractice;
|
||||||
@ -1817,24 +1816,14 @@ native void Shavit_SetCurrentCheckpoint(int client, int index);
|
|||||||
native int Shavit_GetPlayerPreFrame(int client);
|
native int Shavit_GetPlayerPreFrame(int client);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets player's timer frame
|
* Sets player's preeframe length
|
||||||
*
|
*
|
||||||
* @param client Client index
|
* @param client Client index
|
||||||
*
|
* @param preframe preframe length
|
||||||
* @return Timer start frame
|
|
||||||
*/
|
|
||||||
native int Shavit_GetPlayerTimerframe(int client);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Sets player's preframe length
|
|
||||||
*
|
|
||||||
* @param client Client index
|
|
||||||
* @param PreFrame PreFrame length
|
|
||||||
* @param timerPreFrame Timer start frame length
|
|
||||||
*
|
*
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
native void Shavit_SetPlayerPreFrame(int client, int PreFrame, int timereframe);
|
native void Shavit_SetPlayerPreFrame(int client, int preframe);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get's the replay bot folder
|
* Get's the replay bot folder
|
||||||
|
|||||||
@ -125,6 +125,7 @@ Convar gCV_GradientStepSize = null;
|
|||||||
Convar gCV_TicksPerUpdate = null;
|
Convar gCV_TicksPerUpdate = null;
|
||||||
Convar gCV_SpectatorList = null;
|
Convar gCV_SpectatorList = null;
|
||||||
Convar gCV_UseHUDFix = null;
|
Convar gCV_UseHUDFix = null;
|
||||||
|
Convar gCV_PrerunCountDown = null;
|
||||||
|
|
||||||
// timer settings
|
// timer settings
|
||||||
stylestrings_t gS_StyleStrings[STYLE_LIMIT];
|
stylestrings_t gS_StyleStrings[STYLE_LIMIT];
|
||||||
@ -198,6 +199,7 @@ public void OnPluginStart()
|
|||||||
gCV_TicksPerUpdate = new Convar("shavit_hud_ticksperupdate", "5", "How often (in ticks) should the HUD update?\nPlay around with this value until you find the best for your server.\nThe maximum value is your tickrate.", 0, true, 1.0, true, (1.0 / GetTickInterval()));
|
gCV_TicksPerUpdate = new Convar("shavit_hud_ticksperupdate", "5", "How often (in ticks) should the HUD update?\nPlay around with this value until you find the best for your server.\nThe maximum value is your tickrate.", 0, true, 1.0, true, (1.0 / GetTickInterval()));
|
||||||
gCV_SpectatorList = new Convar("shavit_hud_speclist", "1", "Who to show in the specators list?\n0 - everyone\n1 - all admins (admin_speclisthide override to bypass)\n2 - players you can target", 0, true, 0.0, true, 2.0);
|
gCV_SpectatorList = new Convar("shavit_hud_speclist", "1", "Who to show in the specators list?\n0 - everyone\n1 - all admins (admin_speclisthide override to bypass)\n2 - players you can target", 0, true, 0.0, true, 2.0);
|
||||||
gCV_UseHUDFix = new Convar("shavit_hud_csgofix", "1", "Apply the csgo color fix to the center hud?\nThis will add a dollar sign and block sourcemod hooks to hint message", 0, true, 0.0, true, 1.0);
|
gCV_UseHUDFix = new Convar("shavit_hud_csgofix", "1", "Apply the csgo color fix to the center hud?\nThis will add a dollar sign and block sourcemod hooks to hint message", 0, true, 0.0, true, 1.0);
|
||||||
|
gCV_PrerunCountDown = new Convar("shavit_hud_prerun_countdown", "1", "Display prerun countdown to the replay hud?", 0, true, 0.0, true, 1.0);
|
||||||
|
|
||||||
Convar.AutoExecConfig();
|
Convar.AutoExecConfig();
|
||||||
|
|
||||||
@ -982,7 +984,7 @@ int AddHUDToBuffer_Source2013(int client, huddata_t data, char[] buffer, int max
|
|||||||
char sTime[32];
|
char sTime[32];
|
||||||
FormatSeconds(data.fTime, sTime, 32, false);
|
FormatSeconds(data.fTime, sTime, 32, false);
|
||||||
|
|
||||||
if(data.fTime < 0.0)
|
if(data.fTime < 0.0 && gCV_PrerunCountDown.BoolValue)
|
||||||
{
|
{
|
||||||
Format(sTime, 32, "-%s", sTime);
|
Format(sTime, 32, "-%s", sTime);
|
||||||
}
|
}
|
||||||
@ -990,7 +992,7 @@ int AddHUDToBuffer_Source2013(int client, huddata_t data, char[] buffer, int max
|
|||||||
char sWR[32];
|
char sWR[32];
|
||||||
FormatSeconds(data.fWR, sWR, 32, false);
|
FormatSeconds(data.fWR, sWR, 32, false);
|
||||||
|
|
||||||
FormatEx(sLine, 128, "%s / %s\n(%.1f%)", sTime, sWR, ((data.fTime <= 0.0 ? 0.0 : data.fTime / data.fWR) * 100));
|
FormatEx(sLine, 128, "%s / %s\n(%.1f%)", sTime, sWR, ((data.fTime < 0.0 ? 0.0 : data.fTime / data.fWR) * 100));
|
||||||
AddHUDLine(buffer, maxlen, sLine, iLines);
|
AddHUDLine(buffer, maxlen, sLine, iLines);
|
||||||
iLines++;
|
iLines++;
|
||||||
}
|
}
|
||||||
@ -1163,10 +1165,15 @@ int AddHUDToBuffer_CSGO(int client, huddata_t data, char[] buffer, int maxlen)
|
|||||||
char sTime[32];
|
char sTime[32];
|
||||||
FormatSeconds(data.fTime, sTime, 32, false);
|
FormatSeconds(data.fTime, sTime, 32, false);
|
||||||
|
|
||||||
|
if(data.fTime < 0.0 && gCV_PrerunCountDown.BoolValue)
|
||||||
|
{
|
||||||
|
Format(sTime, 32, "-%s", sTime);
|
||||||
|
}
|
||||||
|
|
||||||
char sWR[32];
|
char sWR[32];
|
||||||
FormatSeconds(data.fWR, sWR, 32, false);
|
FormatSeconds(data.fWR, sWR, 32, false);
|
||||||
|
|
||||||
FormatEx(sLine, 128, "%s / %s (%.1f%%)", sTime, sWR, ((data.fTime / data.fWR) * 100));
|
FormatEx(sLine, 128, "%s / %s (%.1f%%)", sTime, sWR, ((data.fTime < 0.0 ? 0.0 : data.fTime / data.fWR) * 100));
|
||||||
AddHUDLine(buffer, maxlen, sLine, iLines);
|
AddHUDLine(buffer, maxlen, sLine, iLines);
|
||||||
iLines++;
|
iLines++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -64,7 +64,6 @@ enum struct persistent_data_t
|
|||||||
int iClassname;
|
int iClassname;
|
||||||
ArrayList aFrames;
|
ArrayList aFrames;
|
||||||
int iPreFrames;
|
int iPreFrames;
|
||||||
int iTimerPreFrames;
|
|
||||||
bool bPractice;
|
bool bPractice;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1129,7 +1128,6 @@ void PersistData(int client)
|
|||||||
{
|
{
|
||||||
aData.aFrames = Shavit_GetReplayData(client);
|
aData.aFrames = Shavit_GetReplayData(client);
|
||||||
aData.iPreFrames = Shavit_GetPlayerPreFrame(client);
|
aData.iPreFrames = Shavit_GetPlayerPreFrame(client);
|
||||||
aData.iTimerPreFrames = Shavit_GetPlayerTimerframe(client);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
aData.fDisconnectTime = GetEngineTime();
|
aData.fDisconnectTime = GetEngineTime();
|
||||||
@ -1250,7 +1248,7 @@ public Action Timer_LoadPersistentData(Handle Timer, any data)
|
|||||||
if(gB_Replay && aData.aFrames != null)
|
if(gB_Replay && aData.aFrames != null)
|
||||||
{
|
{
|
||||||
Shavit_SetReplayData(client, aData.aFrames);
|
Shavit_SetReplayData(client, aData.aFrames);
|
||||||
Shavit_SetPlayerPreFrame(client, aData.iPreFrames, aData.iTimerPreFrames);
|
Shavit_SetPlayerPreFrame(client, aData.iPreFrames);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(aData.bPractice)
|
if(aData.bPractice)
|
||||||
@ -2343,7 +2341,6 @@ bool SaveCheckpoint(int client, int index, bool overflow = false)
|
|||||||
{
|
{
|
||||||
cpcache.aFrames = Shavit_GetReplayData(target);
|
cpcache.aFrames = Shavit_GetReplayData(target);
|
||||||
cpcache.iPreFrames = Shavit_GetPlayerPreFrame(target);
|
cpcache.iPreFrames = Shavit_GetPlayerPreFrame(target);
|
||||||
cpcache.iTimerPreFrames = Shavit_GetPlayerTimerframe(target);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cpcache.bSegmented = true;
|
cpcache.bSegmented = true;
|
||||||
@ -2556,7 +2553,7 @@ void TeleportToCheckpoint(int client, int index, bool suppressMessage)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
Shavit_SetReplayData(client, cpcache.aFrames);
|
Shavit_SetReplayData(client, cpcache.aFrames);
|
||||||
Shavit_SetPlayerPreFrame(client, cpcache.iPreFrames, cpcache.iTimerPreFrames);
|
Shavit_SetPlayerPreFrame(client, cpcache.iPreFrames);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -129,6 +129,7 @@ bool gB_Button[MAXPLAYERS+1];
|
|||||||
int gI_PlayerFrames[MAXPLAYERS+1];
|
int gI_PlayerFrames[MAXPLAYERS+1];
|
||||||
int gI_PlayerPrerunFrames[MAXPLAYERS+1];
|
int gI_PlayerPrerunFrames[MAXPLAYERS+1];
|
||||||
int gI_PlayerTimerStartFrames[MAXPLAYERS+1];
|
int gI_PlayerTimerStartFrames[MAXPLAYERS+1];
|
||||||
|
bool gB_ClearFrame[MAXPLAYERS+1];
|
||||||
ArrayList gA_PlayerFrames[MAXPLAYERS+1];
|
ArrayList gA_PlayerFrames[MAXPLAYERS+1];
|
||||||
int gI_Track[MAXPLAYERS+1];
|
int gI_Track[MAXPLAYERS+1];
|
||||||
float gF_LastInteraction[MAXPLAYERS+1];
|
float gF_LastInteraction[MAXPLAYERS+1];
|
||||||
@ -165,6 +166,8 @@ Convar gCV_BotWeapon = null;
|
|||||||
Convar gCV_PlaybackCanStop = null;
|
Convar gCV_PlaybackCanStop = null;
|
||||||
Convar gCV_PlaybackCooldown = null;
|
Convar gCV_PlaybackCooldown = null;
|
||||||
Convar gCV_PlaybackPreRunTime = null;
|
Convar gCV_PlaybackPreRunTime = null;
|
||||||
|
Convar gCV_ClearPreRun = null;
|
||||||
|
ConVar gCV_PrerunCountdown = null;
|
||||||
|
|
||||||
// timer settings
|
// timer settings
|
||||||
int gI_Styles = 0;
|
int gI_Styles = 0;
|
||||||
@ -218,7 +221,6 @@ public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max
|
|||||||
CreateNative("Shavit_Replay_DeleteMap", Native_Replay_DeleteMap);
|
CreateNative("Shavit_Replay_DeleteMap", Native_Replay_DeleteMap);
|
||||||
CreateNative("Shavit_SetReplayData", Native_SetReplayData);
|
CreateNative("Shavit_SetReplayData", Native_SetReplayData);
|
||||||
CreateNative("Shavit_GetPlayerPreFrame", Native_GetPreFrame);
|
CreateNative("Shavit_GetPlayerPreFrame", Native_GetPreFrame);
|
||||||
CreateNative("Shavit_GetPlayerTimerframe", Native_GetTimerFrame);
|
|
||||||
CreateNative("Shavit_SetPlayerPreFrame", Native_SetPreFrame);
|
CreateNative("Shavit_SetPlayerPreFrame", Native_SetPreFrame);
|
||||||
CreateNative("Shavit_GetReplayBotFolder", Native_GetReplayBotFolder);
|
CreateNative("Shavit_GetReplayBotFolder", Native_GetReplayBotFolder);
|
||||||
|
|
||||||
@ -261,6 +263,7 @@ public void OnPluginStart()
|
|||||||
|
|
||||||
FindConVar((gEV_Type != Engine_TF2)? "bot_quota":"tf_bot_quota").Flags &= ~FCVAR_NOTIFY;
|
FindConVar((gEV_Type != Engine_TF2)? "bot_quota":"tf_bot_quota").Flags &= ~FCVAR_NOTIFY;
|
||||||
FindConVar("bot_stop").Flags &= ~FCVAR_CHEAT;
|
FindConVar("bot_stop").Flags &= ~FCVAR_CHEAT;
|
||||||
|
gCV_PrerunCountdown = FindConVar("shavit_hud_prerun_countdown");
|
||||||
|
|
||||||
for(int i = 0; i < sizeof(gS_ForcedCvars); i++)
|
for(int i = 0; i < sizeof(gS_ForcedCvars); i++)
|
||||||
{
|
{
|
||||||
@ -303,6 +306,7 @@ public void OnPluginStart()
|
|||||||
gCV_PlaybackCanStop = new Convar("shavit_replay_pbcanstop", "1", "Allow players to stop playback if they requested it?", 0, true, 0.0, true, 1.0);
|
gCV_PlaybackCanStop = new Convar("shavit_replay_pbcanstop", "1", "Allow players to stop playback if they requested it?", 0, true, 0.0, true, 1.0);
|
||||||
gCV_PlaybackCooldown = new Convar("shavit_replay_pbcooldown", "10.0", "Cooldown in seconds to apply for players between each playback they request/stop.\nDoes not apply to RCON admins.", 0, true, 0.0);
|
gCV_PlaybackCooldown = new Convar("shavit_replay_pbcooldown", "10.0", "Cooldown in seconds to apply for players between each playback they request/stop.\nDoes not apply to RCON admins.", 0, true, 0.0);
|
||||||
gCV_PlaybackPreRunTime = new Convar("shavit_replay_preruntime", "1.0", "Time (in seconds) to record before a player leaves start zone. (The value should NOT be too high)", 0, true, 0.0);
|
gCV_PlaybackPreRunTime = new Convar("shavit_replay_preruntime", "1.0", "Time (in seconds) to record before a player leaves start zone. (The value should NOT be too high)", 0, true, 0.0);
|
||||||
|
gCV_ClearPreRun = new Convar("shavit_replay_prerun_always", "1", "Record prerun frames outside the start zone?", 0, true, 0.0, true, 1.0);
|
||||||
|
|
||||||
gCV_CentralBot.AddChangeHook(OnConVarChanged);
|
gCV_CentralBot.AddChangeHook(OnConVarChanged);
|
||||||
|
|
||||||
@ -711,6 +715,13 @@ public int Native_GetReplayTime(Handle handler, int numParams)
|
|||||||
return view_as<int>(GetReplayLength(Track_Main, track));
|
return view_as<int>(GetReplayLength(Track_Main, track));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(gCV_PrerunCountdown.BoolValue)
|
||||||
|
{
|
||||||
|
if(gI_ReplayTick[style] < gA_FrameCache[style][track].iPreFrames)
|
||||||
|
{
|
||||||
|
return view_as<int>(float(gI_ReplayTick[style] - gA_FrameCache[style][track].iPreFrames) / gF_Tickrate * gA_StyleSettings[style].fTimescale);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return view_as<int>(float(gI_TimerTick[style]) / gF_Tickrate * gA_StyleSettings[style].fTimescale);
|
return view_as<int>(float(gI_TimerTick[style]) / gF_Tickrate * gA_StyleSettings[style].fTimescale);
|
||||||
}
|
}
|
||||||
@ -783,19 +794,9 @@ public int Native_GetPreFrame(Handle handler, int numParams)
|
|||||||
return gI_PlayerPrerunFrames[GetNativeCell(1)];
|
return gI_PlayerPrerunFrames[GetNativeCell(1)];
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Native_GetTimerFrame(Handle handler, int numParams)
|
|
||||||
{
|
|
||||||
return gI_PlayerTimerStartFrames[GetNativeCell(1)];
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Native_SetPreFrame(Handle handler, int numParams)
|
public int Native_SetPreFrame(Handle handler, int numParams)
|
||||||
{
|
{
|
||||||
int client = GetNativeCell(1);
|
gI_PlayerPrerunFrames[GetNativeCell(1)] = GetNativeCell(2);
|
||||||
int preframes = GetNativeCell(2);
|
|
||||||
int timerframes = GetNativeCell(3);
|
|
||||||
|
|
||||||
gI_PlayerPrerunFrames[client] = preframes;
|
|
||||||
gI_PlayerTimerStartFrames[client] = timerframes;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action Cron(Handle Timer)
|
public Action Cron(Handle Timer)
|
||||||
@ -1259,7 +1260,7 @@ bool LoadReplay(int style, int track, const char[] path)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SaveReplay(int style, int track, float time, int steamid, char[] name, int preframes, ArrayList playerrecording, int timerstartframe)
|
bool SaveReplay(int style, int track, float time, int steamid, char[] name, int preframes, ArrayList playerrecording)
|
||||||
{
|
{
|
||||||
char sTrack[4];
|
char sTrack[4];
|
||||||
FormatEx(sTrack, 4, "_%d", track);
|
FormatEx(sTrack, 4, "_%d", track);
|
||||||
@ -1278,7 +1279,7 @@ bool SaveReplay(int style, int track, float time, int steamid, char[] name, int
|
|||||||
fFile.WriteString(gS_Map, true);
|
fFile.WriteString(gS_Map, true);
|
||||||
fFile.WriteInt8(style);
|
fFile.WriteInt8(style);
|
||||||
fFile.WriteInt8(track);
|
fFile.WriteInt8(track);
|
||||||
fFile.WriteInt32(preframes < 0 ? timerstartframe : timerstartframe - preframes);
|
fFile.WriteInt32(preframes);
|
||||||
|
|
||||||
int iSize = playerrecording.Length;
|
int iSize = playerrecording.Length;
|
||||||
fFile.WriteInt32(iSize);
|
fFile.WriteInt32(iSize);
|
||||||
@ -1290,7 +1291,7 @@ bool SaveReplay(int style, int track, float time, int steamid, char[] name, int
|
|||||||
int iFramesWritten = 0;
|
int iFramesWritten = 0;
|
||||||
|
|
||||||
gA_Frames[style][track].Clear();
|
gA_Frames[style][track].Clear();
|
||||||
for(int i = (preframes < 0 ? 0 : preframes); i < iSize; i++)
|
for(int i = 0; i < iSize; i++)
|
||||||
{
|
{
|
||||||
playerrecording.GetArray(i, aFrameData, CELLS_PER_FRAME);
|
playerrecording.GetArray(i, aFrameData, CELLS_PER_FRAME);
|
||||||
gA_Frames[style][track].PushArray(aFrameData);
|
gA_Frames[style][track].PushArray(aFrameData);
|
||||||
@ -1310,11 +1311,11 @@ bool SaveReplay(int style, int track, float time, int steamid, char[] name, int
|
|||||||
|
|
||||||
delete fFile;
|
delete fFile;
|
||||||
|
|
||||||
gA_FrameCache[style][track].iFrameCount = iSize - (preframes < 0 ? 0 : preframes);
|
gA_FrameCache[style][track].iFrameCount = iSize;
|
||||||
gA_FrameCache[style][track].fTime = time;
|
gA_FrameCache[style][track].fTime = time;
|
||||||
gA_FrameCache[style][track].bNewFormat = true;
|
gA_FrameCache[style][track].bNewFormat = true;
|
||||||
strcopy(gA_FrameCache[style][track].sReplayName, MAX_NAME_LENGTH, name);
|
strcopy(gA_FrameCache[style][track].sReplayName, MAX_NAME_LENGTH, name);
|
||||||
gA_FrameCache[style][track].iPreFrames = preframes < 0 ? timerstartframe : (timerstartframe - preframes);
|
gA_FrameCache[style][track].iPreFrames = preframes;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1640,13 +1641,24 @@ public void DeleteFrames(int client)
|
|||||||
|
|
||||||
public Action Shavit_OnStart(int client)
|
public Action Shavit_OnStart(int client)
|
||||||
{
|
{
|
||||||
gI_PlayerPrerunFrames[client] = gA_PlayerFrames[client].Length - RoundToFloor(gCV_PlaybackPreRunTime.FloatValue * gF_Tickrate / gA_StyleSettings[Shavit_GetBhopStyle(client)].fTimescale);
|
gI_PlayerPrerunFrames[client] = gA_PlayerFrames[client].Length;
|
||||||
gI_PlayerTimerStartFrames[client] = gA_PlayerFrames[client].Length;
|
|
||||||
|
if(!gB_ClearFrame[client])
|
||||||
if(gA_PlayerFrames[client].Length >= RoundToFloor(gCV_PlaybackPreRunTime.FloatValue * gF_Tickrate / gA_StyleSettings[Shavit_GetBhopStyle(client)].fTimescale))
|
|
||||||
{
|
{
|
||||||
gA_PlayerFrames[client].Erase(0);
|
if(!gCV_ClearPreRun.BoolValue)
|
||||||
gI_PlayerFrames[client]--;
|
{
|
||||||
|
ClearFrames(client);
|
||||||
|
}
|
||||||
|
gB_ClearFrame[client] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(gA_PlayerFrames[client].Length >= RoundToFloor(gCV_PlaybackPreRunTime.FloatValue * gF_Tickrate / gA_StyleSettings[Shavit_GetBhopStyle(client)].fTimescale))
|
||||||
|
{
|
||||||
|
gA_PlayerFrames[client].Erase(0);
|
||||||
|
gI_PlayerFrames[client]--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Plugin_Continue;
|
return Plugin_Continue;
|
||||||
@ -1657,6 +1669,14 @@ public void Shavit_OnStop(int client)
|
|||||||
ClearFrames(client);
|
ClearFrames(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Shavit_OnLeaveZone(int client, int type, int track, int id, int entity)
|
||||||
|
{
|
||||||
|
if(type == Zone_Start)
|
||||||
|
{
|
||||||
|
gB_ClearFrame[client] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void Shavit_OnFinish(int client, int style, float time, int jumps, int strafes, float sync, int track)
|
public void Shavit_OnFinish(int client, int style, float time, int jumps, int strafes, float sync, int track)
|
||||||
{
|
{
|
||||||
if(Shavit_IsPracticeMode(client))
|
if(Shavit_IsPracticeMode(client))
|
||||||
@ -1666,8 +1686,6 @@ public void Shavit_OnFinish(int client, int style, float time, int jumps, int st
|
|||||||
|
|
||||||
if(!gCV_Enabled.BoolValue || (gCV_TimeLimit.FloatValue > 0.0 && time > gCV_TimeLimit.FloatValue))
|
if(!gCV_Enabled.BoolValue || (gCV_TimeLimit.FloatValue > 0.0 && time > gCV_TimeLimit.FloatValue))
|
||||||
{
|
{
|
||||||
ClearFrames(client);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1702,7 +1720,7 @@ public void Shavit_OnFinish(int client, int style, float time, int jumps, int st
|
|||||||
GetClientName(client, sName, MAX_NAME_LENGTH);
|
GetClientName(client, sName, MAX_NAME_LENGTH);
|
||||||
ReplaceString(sName, MAX_NAME_LENGTH, "#", "?");
|
ReplaceString(sName, MAX_NAME_LENGTH, "#", "?");
|
||||||
|
|
||||||
SaveReplay(style, track, time, iSteamID, sName, gI_PlayerPrerunFrames[client], gA_PlayerFrames[client], gI_PlayerTimerStartFrames[client]);
|
SaveReplay(style, track, time, iSteamID, sName, gI_PlayerPrerunFrames[client], gA_PlayerFrames[client]);
|
||||||
|
|
||||||
if(ReplayEnabled(style))
|
if(ReplayEnabled(style))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -428,7 +428,7 @@ Action OpenStatsMenu(int client, int steamid)
|
|||||||
"JOIN (SELECT COUNT(*) maps FROM (SELECT map FROM %smapzones WHERE track = 0 AND type = 0 GROUP BY map) s) b " ...
|
"JOIN (SELECT COUNT(*) maps FROM (SELECT map FROM %smapzones WHERE track = 0 AND type = 0 GROUP BY map) s) b " ...
|
||||||
"JOIN (SELECT COUNT(*) wrs FROM %splayertimes a JOIN (SELECT MIN(time) time, map FROM %splayertimes WHERE style = 0 AND track = 0 GROUP by map, style, track) b ON a.time = b.time AND a.map = b.map AND track = 0 AND style = 0 WHERE auth = %d) c " ...
|
"JOIN (SELECT COUNT(*) wrs FROM %splayertimes a JOIN (SELECT MIN(time) time, map FROM %splayertimes WHERE style = 0 AND track = 0 GROUP by map, style, track) b ON a.time = b.time AND a.map = b.map AND track = 0 AND style = 0 WHERE auth = %d) c " ...
|
||||||
"JOIN (SELECT name, ip, lastlogin, FORMAT(points, 2) points FROM %susers WHERE auth = %d) d " ...
|
"JOIN (SELECT name, ip, lastlogin, FORMAT(points, 2) points FROM %susers WHERE auth = %d) d " ...
|
||||||
"JOIN (SELECT COUNT(*) rank FROM %susers u1 JOIN (SELECT points FROM %susers WHERE auth = %d) u2 WHERE u1.points >= u2.points) e " ...
|
"JOIN (SELECT COUNT(*) rank FROM %susers as u1 JOIN (SELECT points FROM %susers WHERE auth = %d) u2 WHERE u1.points >= u2.points) e " ...
|
||||||
"LIMIT 1;", gS_MySQLPrefix, steamid, gS_MySQLPrefix, gS_MySQLPrefix, gS_MySQLPrefix, steamid, gS_MySQLPrefix, steamid, gS_MySQLPrefix, gS_MySQLPrefix, steamid);
|
"LIMIT 1;", gS_MySQLPrefix, steamid, gS_MySQLPrefix, gS_MySQLPrefix, gS_MySQLPrefix, steamid, gS_MySQLPrefix, steamid, gS_MySQLPrefix, gS_MySQLPrefix, steamid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user