mirror of
https://github.com/shavitush/bhoptimer.git
synced 2025-12-07 18:38:26 +00:00
commit
b8d0522e96
@ -23,7 +23,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#define _shavit_included
|
#define _shavit_included
|
||||||
|
|
||||||
#define SHAVIT_VERSION "2.3.2"
|
#define SHAVIT_VERSION "2.3.3"
|
||||||
#define STYLE_LIMIT 256
|
#define STYLE_LIMIT 256
|
||||||
#define MAX_ZONES 64
|
#define MAX_ZONES 64
|
||||||
#define MAX_NAME_LENGTH_SQL 32
|
#define MAX_NAME_LENGTH_SQL 32
|
||||||
@ -545,6 +545,22 @@ forward void Shavit_OnWorstRecord(int client, int style, float time, int jumps,
|
|||||||
*/
|
*/
|
||||||
forward void Shavit_OnTierAssigned(const char[] map, int tier);
|
forward void Shavit_OnTierAssigned(const char[] map, int tier);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when replay playback starts.
|
||||||
|
*
|
||||||
|
* @param client Client index for the bot.
|
||||||
|
* @noreturn
|
||||||
|
*/
|
||||||
|
forward void Shavit_OnReplayStart(int client);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when replay playback ends.
|
||||||
|
*
|
||||||
|
* @param client Client index for the bot.
|
||||||
|
* @noreturn
|
||||||
|
*/
|
||||||
|
forward void Shavit_OnReplayEnd(int client);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the game type the server is running.
|
* Returns the game type the server is running.
|
||||||
*
|
*
|
||||||
|
|||||||
@ -756,7 +756,7 @@ void UpdateHUD(int client)
|
|||||||
|
|
||||||
else if(fPB > 0.0)
|
else if(fPB > 0.0)
|
||||||
{
|
{
|
||||||
Format(sHintText, 512, "%s%T: %s (#%d)", sHintText, "HudBestText", client, sPB, (Shavit_GetRankForTime(style, fPB, track) - 1));
|
Format(sHintText, 512, "%s%T: %s (#%d)", sHintText, "HudBestText", client, sPB, Shavit_GetRankForTime(style, fPB, track));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(status >= Timer_Running)
|
if(status >= Timer_Running)
|
||||||
@ -1081,7 +1081,7 @@ void UpdateTopLeftHUD(int client, bool wait)
|
|||||||
|
|
||||||
if(fPBTime != 0.0)
|
if(fPBTime != 0.0)
|
||||||
{
|
{
|
||||||
FormatEx(sTopLeft, 128, "WR: %s (%s)\n%T: %s (#%d)", sWRTime, sWRName, "HudBestText", client, sPBTime, (Shavit_GetRankForTime(style, fPBTime, track) - 1));
|
FormatEx(sTopLeft, 128, "WR: %s (%s)\n%T: %s (#%d)", sWRTime, sWRName, "HudBestText", client, sPBTime, Shavit_GetRankForTime(style, fPBTime, track));
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|||||||
@ -304,6 +304,7 @@ public void SQL_CreateTable_Callback(Database db, DBResultSet results, const cha
|
|||||||
RunLongFastQuery(bSuccess, "CREATE GetWeightedPoints",
|
RunLongFastQuery(bSuccess, "CREATE GetWeightedPoints",
|
||||||
"CREATE FUNCTION GetWeightedPoints(authid CHAR(32)) " ...
|
"CREATE FUNCTION GetWeightedPoints(authid CHAR(32)) " ...
|
||||||
"RETURNS FLOAT " ...
|
"RETURNS FLOAT " ...
|
||||||
|
"READS SQL DATA " ...
|
||||||
"BEGIN " ...
|
"BEGIN " ...
|
||||||
"DECLARE p FLOAT; " ...
|
"DECLARE p FLOAT; " ...
|
||||||
"DECLARE total FLOAT DEFAULT 0.0; " ...
|
"DECLARE total FLOAT DEFAULT 0.0; " ...
|
||||||
@ -327,6 +328,7 @@ public void SQL_CreateTable_Callback(Database db, DBResultSet results, const cha
|
|||||||
RunLongFastQuery(bSuccess, "CREATE GetRecordPoints",
|
RunLongFastQuery(bSuccess, "CREATE GetRecordPoints",
|
||||||
"CREATE FUNCTION GetRecordPoints(rstyle INT, rtrack INT, rtime FLOAT, rmap CHAR(128), pointspertier FLOAT, stylemultiplier FLOAT) " ...
|
"CREATE FUNCTION GetRecordPoints(rstyle INT, rtrack INT, rtime FLOAT, rmap CHAR(128), pointspertier FLOAT, stylemultiplier FLOAT) " ...
|
||||||
"RETURNS FLOAT " ...
|
"RETURNS FLOAT " ...
|
||||||
|
"READS SQL DATA " ...
|
||||||
"BEGIN " ...
|
"BEGIN " ...
|
||||||
"DECLARE pwr, ppoints FLOAT DEFAULT 0.0; " ...
|
"DECLARE pwr, ppoints FLOAT DEFAULT 0.0; " ...
|
||||||
"DECLARE ptier INT DEFAULT 1; " ...
|
"DECLARE ptier INT DEFAULT 1; " ...
|
||||||
|
|||||||
@ -89,6 +89,10 @@ int gI_Track[MAXPLAYERS+1];
|
|||||||
|
|
||||||
bool gB_Late = false;
|
bool gB_Late = false;
|
||||||
|
|
||||||
|
// forwards
|
||||||
|
Handle gH_OnReplayStart = null;
|
||||||
|
Handle gH_OnReplayEnd = null;
|
||||||
|
|
||||||
// server specific
|
// server specific
|
||||||
float gF_Tickrate = 0.0;
|
float gF_Tickrate = 0.0;
|
||||||
char gS_Map[160];
|
char gS_Map[160];
|
||||||
@ -196,6 +200,10 @@ public void OnPluginStart()
|
|||||||
LoadTranslations("shavit-common.phrases");
|
LoadTranslations("shavit-common.phrases");
|
||||||
LoadTranslations("shavit-replay.phrases");
|
LoadTranslations("shavit-replay.phrases");
|
||||||
|
|
||||||
|
// forwards
|
||||||
|
gH_OnReplayStart = CreateGlobalForward("Shavit_OnReplayStart", ET_Event, Param_Cell, Param_Cell, Param_Cell, Param_Cell);
|
||||||
|
gH_OnReplayEnd = CreateGlobalForward("Shavit_OnReplayEnd", ET_Event, Param_Cell, Param_Cell, Param_Cell, Param_Cell);
|
||||||
|
|
||||||
// game specific
|
// game specific
|
||||||
gEV_Type = GetEngineVersion();
|
gEV_Type = GetEngineVersion();
|
||||||
gF_Tickrate = (1.0 / GetTickInterval());
|
gF_Tickrate = (1.0 / GetTickInterval());
|
||||||
@ -1737,6 +1745,10 @@ public Action Timer_EndReplay(Handle Timer, any data)
|
|||||||
|
|
||||||
gI_ReplayTick[data] = 0;
|
gI_ReplayTick[data] = 0;
|
||||||
|
|
||||||
|
Call_StartForward(gH_OnReplayEnd);
|
||||||
|
Call_PushCell(gI_ReplayBotClient[data]);
|
||||||
|
Call_Finish();
|
||||||
|
|
||||||
if(gI_ReplayBotClient[data] != gA_CentralCache[iCentralClient])
|
if(gI_ReplayBotClient[data] != gA_CentralCache[iCentralClient])
|
||||||
{
|
{
|
||||||
gRS_ReplayStatus[data] = Replay_Start;
|
gRS_ReplayStatus[data] = Replay_Start;
|
||||||
@ -1760,6 +1772,10 @@ public Action Timer_StartReplay(Handle Timer, any data)
|
|||||||
return Plugin_Stop;
|
return Plugin_Stop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Call_StartForward(gH_OnReplayStart);
|
||||||
|
Call_PushCell(gI_ReplayBotClient[data]);
|
||||||
|
Call_Finish();
|
||||||
|
|
||||||
gRS_ReplayStatus[data] = gA_CentralCache[iCentralReplayStatus] = Replay_Running;
|
gRS_ReplayStatus[data] = gA_CentralCache[iCentralReplayStatus] = Replay_Running;
|
||||||
|
|
||||||
return Plugin_Stop;
|
return Plugin_Stop;
|
||||||
|
|||||||
@ -29,8 +29,6 @@
|
|||||||
|
|
||||||
bool gB_HUD;
|
bool gB_HUD;
|
||||||
|
|
||||||
EngineVersion gEV_Type = Engine_Unknown;
|
|
||||||
|
|
||||||
ArrayList gA_FirstSounds = null;
|
ArrayList gA_FirstSounds = null;
|
||||||
ArrayList gA_PersonalSounds = null;
|
ArrayList gA_PersonalSounds = null;
|
||||||
ArrayList gA_WorldSounds = null;
|
ArrayList gA_WorldSounds = null;
|
||||||
@ -70,9 +68,6 @@ public void OnAllPluginsLoaded()
|
|||||||
|
|
||||||
public void OnPluginStart()
|
public void OnPluginStart()
|
||||||
{
|
{
|
||||||
// game specific
|
|
||||||
gEV_Type = GetEngineVersion();
|
|
||||||
|
|
||||||
// cache
|
// cache
|
||||||
gA_FirstSounds = new ArrayList(PLATFORM_MAX_PATH);
|
gA_FirstSounds = new ArrayList(PLATFORM_MAX_PATH);
|
||||||
gA_PersonalSounds = new ArrayList(PLATFORM_MAX_PATH);
|
gA_PersonalSounds = new ArrayList(PLATFORM_MAX_PATH);
|
||||||
@ -182,7 +177,7 @@ public void OnMapStart()
|
|||||||
gSM_RankSounds.SetString(sRank, sExploded[1]);
|
gSM_RankSounds.SetString(sRank, sExploded[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(PrecacheSoundAny(sExploded[1]))
|
if(PrecacheSound(sExploded[1], true))
|
||||||
{
|
{
|
||||||
FormatEx(sDownloadString, PLATFORM_MAX_PATH, "sound/%s", sExploded[1]);
|
FormatEx(sDownloadString, PLATFORM_MAX_PATH, "sound/%s", sExploded[1]);
|
||||||
AddFileToDownloadsTable(sDownloadString);
|
AddFileToDownloadsTable(sDownloadString);
|
||||||
@ -198,28 +193,6 @@ public void OnMapStart()
|
|||||||
delete fFile;
|
delete fFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PrecacheSoundAny(const char[] path)
|
|
||||||
{
|
|
||||||
if(gEV_Type == Engine_CSGO)
|
|
||||||
{
|
|
||||||
char sCSGOPath[PLATFORM_MAX_PATH];
|
|
||||||
FormatEx(sCSGOPath, PLATFORM_MAX_PATH, "*%s", path);
|
|
||||||
|
|
||||||
static int table = INVALID_STRING_TABLE;
|
|
||||||
|
|
||||||
if(table == INVALID_STRING_TABLE)
|
|
||||||
{
|
|
||||||
table = FindStringTable("soundprecache");
|
|
||||||
}
|
|
||||||
|
|
||||||
AddToStringTable(table, sCSGOPath);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return PrecacheSound(path, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Shavit_OnFinish_Post(int client, int style, float time, int jumps, int strafes, float sync, int rank, int overwrite, int track)
|
public void Shavit_OnFinish_Post(int client, int style, float time, int jumps, int strafes, float sync, int rank, int overwrite, int track)
|
||||||
{
|
{
|
||||||
float fOldTime = 0.0;
|
float fOldTime = 0.0;
|
||||||
@ -303,11 +276,6 @@ void PlayEventSound(int client, bool everyone, char[] sound)
|
|||||||
|
|
||||||
if(count > 0)
|
if(count > 0)
|
||||||
{
|
{
|
||||||
if(gEV_Type == Engine_CSGO)
|
|
||||||
{
|
|
||||||
Format(sound, PLATFORM_MAX_PATH, "*%s", sound);
|
|
||||||
}
|
|
||||||
|
|
||||||
EmitSound(clients, count, sound);
|
EmitSound(clients, count, sound);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -127,9 +127,9 @@ public void OnPluginStart()
|
|||||||
LoadTranslations("shavit-common.phrases");
|
LoadTranslations("shavit-common.phrases");
|
||||||
LoadTranslations("shavit-wr.phrases");
|
LoadTranslations("shavit-wr.phrases");
|
||||||
|
|
||||||
// debug because I was making this all by myself and no one wanted to help me *sniff*
|
|
||||||
#if defined DEBUG
|
#if defined DEBUG
|
||||||
RegConsoleCmd("sm_junk", Command_Junk);
|
RegConsoleCmd("sm_junk", Command_Junk);
|
||||||
|
RegConsoleCmd("sm_printleaderboards", Command_PrintLeaderboards);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// forwards
|
// forwards
|
||||||
@ -652,6 +652,21 @@ public Action Command_Junk(int client, int args)
|
|||||||
|
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Action Command_PrintLeaderboards(int client, int args)
|
||||||
|
{
|
||||||
|
ReplyToCommand(client, "Track: Main - Style: 0");
|
||||||
|
ReplyToCommand(client, "Current PB: %f", gF_PlayerRecord[client][0][0]);
|
||||||
|
ReplyToCommand(client, "Count: %d", gI_RecordAmount[0][0]);
|
||||||
|
ReplyToCommand(client, "Rank: %d", Shavit_GetRankForTime(0, gF_PlayerRecord[client][0][0], 0));
|
||||||
|
|
||||||
|
for(int i = 0; i < gI_RecordAmount[0][0]; i++)
|
||||||
|
{
|
||||||
|
ReplyToCommand(client, "#%d: %f", i, gA_Leaderboard[0][0].Get(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int GetTrackRecordCount(int track)
|
int GetTrackRecordCount(int track)
|
||||||
@ -2348,7 +2363,7 @@ int GetRankForTime(int style, float time, int track)
|
|||||||
{
|
{
|
||||||
for(int i = 0; i < gI_RecordAmount[style][track]; i++)
|
for(int i = 0; i < gI_RecordAmount[style][track]; i++)
|
||||||
{
|
{
|
||||||
if(time < gA_Leaderboard[style][track].Get(i))
|
if(time <= gA_Leaderboard[style][track].Get(i))
|
||||||
{
|
{
|
||||||
return ++i;
|
return ++i;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user