mirror of
https://github.com/shavitush/bhoptimer.git
synced 2025-12-07 18:38:26 +00:00
reorganize some things to stop looping so much when a player joins
This commit is contained in:
parent
a64a29263d
commit
b68aba6fd2
@ -23,7 +23,7 @@
|
||||
#endif
|
||||
#define _shavit_included
|
||||
|
||||
#define SHAVIT_VERSION "3.0.2"
|
||||
#define SHAVIT_VERSION "3.0.3"
|
||||
#define STYLE_LIMIT 256
|
||||
#define MAX_ZONES 64
|
||||
#define MAX_STAGES 51 // 😐 kind of arbitrary but also some space between this and MAX_ZONES
|
||||
@ -2137,10 +2137,10 @@ native bool Shavit_IsKZMap();
|
||||
* Gets the map tier for a specified map.
|
||||
* Use the map's display name.
|
||||
*
|
||||
* @param map Map to get the tier of.
|
||||
* @param map Map to get the tier of. Using "" will get the current map's tier.
|
||||
* @return Map tier. 0 if no results were found.
|
||||
*/
|
||||
native int Shavit_GetMapTier(const char[] map);
|
||||
native int Shavit_GetMapTier(const char[] map = "");
|
||||
|
||||
/**
|
||||
* Gets a StringMap that contains all the cached map tiers.
|
||||
|
||||
@ -106,7 +106,6 @@ int gI_Cycle = 0;
|
||||
color_t gI_Gradient;
|
||||
int gI_GradientDirection = -1;
|
||||
int gI_Styles = 0;
|
||||
char gS_Map[160];
|
||||
|
||||
Handle gH_HUDCookie = null;
|
||||
Handle gH_HUDCookieMain = null;
|
||||
@ -274,6 +273,9 @@ public void OnPluginStart()
|
||||
|
||||
if(gB_Late)
|
||||
{
|
||||
Shavit_OnStyleConfigLoaded(Shavit_GetStyleCount());
|
||||
Shavit_OnChatConfigLoaded();
|
||||
|
||||
for(int i = 1; i <= MaxClients; i++)
|
||||
{
|
||||
if(IsValidClient(i))
|
||||
@ -289,19 +291,6 @@ public void OnPluginStart()
|
||||
}
|
||||
}
|
||||
|
||||
public void OnMapStart()
|
||||
{
|
||||
GetCurrentMap(gS_Map, 160);
|
||||
GetMapDisplayName(gS_Map, gS_Map, 160);
|
||||
|
||||
if(gB_Late)
|
||||
{
|
||||
gB_Late = false;
|
||||
Shavit_OnStyleConfigLoaded(Shavit_GetStyleCount());
|
||||
Shavit_OnChatConfigLoaded();
|
||||
}
|
||||
}
|
||||
|
||||
public void OnLibraryAdded(const char[] name)
|
||||
{
|
||||
if(StrEqual(name, "shavit-replay"))
|
||||
@ -1094,7 +1083,7 @@ int AddHUDToBuffer_Source2013(int client, huddata_t data, char[] buffer, int max
|
||||
{
|
||||
if(gB_Rankings && (gI_HUD2Settings[client] & HUD2_MAPTIER) == 0)
|
||||
{
|
||||
FormatEx(sLine, 128, "%T", "HudZoneTier", client, Shavit_GetMapTier(gS_Map));
|
||||
FormatEx(sLine, 128, "%T", "HudZoneTier", client, Shavit_GetMapTier());
|
||||
AddHUDLine(buffer, maxlen, sLine, iLines);
|
||||
iLines++;
|
||||
}
|
||||
@ -1304,7 +1293,7 @@ int AddHUDToBuffer_CSGO(int client, huddata_t data, char[] buffer, int maxlen)
|
||||
{
|
||||
if(data.iTrack == Track_Main)
|
||||
{
|
||||
FormatEx(sZoneHUD, 32, "%T", "HudZoneTier", client, Shavit_GetMapTier(gS_Map));
|
||||
FormatEx(sZoneHUD, 32, "%T", "HudZoneTier", client, Shavit_GetMapTier());
|
||||
}
|
||||
|
||||
else
|
||||
|
||||
@ -58,6 +58,12 @@ enum struct ranking_t
|
||||
{
|
||||
int iRank;
|
||||
float fPoints;
|
||||
int iWRAmountAll;
|
||||
int iWRAmountCvar;
|
||||
int iWRHolderRankAll;
|
||||
int iWRHolderRankCvar;
|
||||
int iWRAmount[STYLE_LIMIT*2];
|
||||
int iWRHolderRank[STYLE_LIMIT*2];
|
||||
}
|
||||
|
||||
char gS_MySQLPrefix[32];
|
||||
@ -96,15 +102,9 @@ chatstrings_t gS_ChatStrings;
|
||||
int gI_Styles = 0;
|
||||
|
||||
bool gB_WRsRefreshed = false;
|
||||
int gI_WRAmount[MAXPLAYERS+1][2][STYLE_LIMIT];
|
||||
int gI_WRAmountAll[MAXPLAYERS+1];
|
||||
int gI_WRAmountCvar[MAXPLAYERS+1];
|
||||
int gI_WRHolders[2][STYLE_LIMIT];
|
||||
int gI_WRHoldersAll;
|
||||
int gI_WRHoldersCvar;
|
||||
int gI_WRHolderRank[MAXPLAYERS+1][2][STYLE_LIMIT];
|
||||
int gI_WRHolderRankAll[MAXPLAYERS+1];
|
||||
int gI_WRHolderRankCvar[MAXPLAYERS+1];
|
||||
|
||||
public Plugin myinfo =
|
||||
{
|
||||
@ -338,41 +338,19 @@ void RunLongFastQuery(bool &success, const char[] func, const char[] query, any
|
||||
|
||||
public void OnClientConnected(int client)
|
||||
{
|
||||
if(IsFakeClient(client))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
gA_Rankings[client].iRank = 0;
|
||||
gA_Rankings[client].fPoints = 0.0;
|
||||
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
for (int j = 0; j < gI_Styles; j++)
|
||||
{
|
||||
gI_WRAmount[client][i][j] = 0;
|
||||
gI_WRHolderRank[client][i][j] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
gI_WRAmountAll[client] = 0;
|
||||
gI_WRAmountCvar[client] = 0;
|
||||
gI_WRHolderRankAll[client] = 0;
|
||||
gI_WRHolderRankCvar[client] = 0;
|
||||
ranking_t empty_ranking;
|
||||
gA_Rankings[client] = empty_ranking;
|
||||
}
|
||||
|
||||
public void OnClientPutInServer(int client)
|
||||
{
|
||||
if (gB_WRsRefreshed)
|
||||
{
|
||||
UpdateWRs(client);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnClientPostAdminCheck(int client)
|
||||
public void OnClientAuthorized(int client)
|
||||
{
|
||||
if(!IsFakeClient(client))
|
||||
{
|
||||
if (gB_WRsRefreshed)
|
||||
{
|
||||
UpdateWRs(client);
|
||||
}
|
||||
|
||||
UpdatePlayerRank(client, true);
|
||||
}
|
||||
}
|
||||
@ -573,22 +551,23 @@ public void SQL_GetWRs_Callback(Database db, DBResultSet results, const char[] e
|
||||
|
||||
if (type == 0)
|
||||
{
|
||||
gI_WRAmount[client][track][style] = wrcount;
|
||||
gI_WRHolderRank[client][track][style] = wrrank;
|
||||
int index = STYLE_LIMIT*track + style;
|
||||
gA_Rankings[client].iWRAmount[index] = wrcount;
|
||||
gA_Rankings[client].iWRHolderRank[index] = wrrank;
|
||||
}
|
||||
else if (type == 1)
|
||||
{
|
||||
gI_WRAmountAll[client] = wrcount;
|
||||
gI_WRHolderRankAll[client] = wrrank;
|
||||
gA_Rankings[client].iWRAmountAll = wrcount;
|
||||
gA_Rankings[client].iWRHolderRankAll = wrcount;
|
||||
}
|
||||
else if (type == 2)
|
||||
{
|
||||
gI_WRAmountCvar[client] = wrcount;
|
||||
gI_WRHolderRankCvar[client] = wrrank;
|
||||
gA_Rankings[client].iWRAmountCvar = wrcount;
|
||||
gA_Rankings[client].iWRHolderRankCvar = wrrank;
|
||||
}
|
||||
}
|
||||
|
||||
if(gCV_MVPRankOnes.IntValue > 0 && gEV_Type != Engine_TF2)
|
||||
if (gCV_MVPRankOnes.IntValue > 0 && gEV_Type != Engine_TF2 && IsValidClient(client))
|
||||
{
|
||||
CS_SetMVPCount(client, Shavit_GetWRCount(client, -1, -1, true));
|
||||
}
|
||||
@ -1221,11 +1200,11 @@ public int Native_GetWRCount(Handle handler, int numParams)
|
||||
|
||||
if (usecvars)
|
||||
{
|
||||
return gI_WRAmountCvar[client];
|
||||
return gA_Rankings[client].iWRAmountCvar;
|
||||
}
|
||||
else if (track == -1 && style == -1)
|
||||
{
|
||||
return gI_WRAmountAll[client];
|
||||
return gA_Rankings[client].iWRAmountAll;
|
||||
}
|
||||
|
||||
if (track > Track_Bonus)
|
||||
@ -1233,7 +1212,7 @@ public int Native_GetWRCount(Handle handler, int numParams)
|
||||
track = Track_Bonus;
|
||||
}
|
||||
|
||||
return gI_WRAmount[client][track][style];
|
||||
return gA_Rankings[client].iWRAmount[STYLE_LIMIT*track + style];
|
||||
}
|
||||
|
||||
public int Native_GetWRHolders(Handle handler, int numParams)
|
||||
@ -1268,11 +1247,11 @@ public int Native_GetWRHolderRank(Handle handler, int numParams)
|
||||
|
||||
if (usecvars)
|
||||
{
|
||||
return gI_WRHolderRankCvar[client];
|
||||
return gA_Rankings[client].iWRHolderRankCvar;
|
||||
}
|
||||
else if (track == -1 && style == -1)
|
||||
{
|
||||
return gI_WRHolderRankAll[client];
|
||||
return gA_Rankings[client].iWRHolderRankAll;
|
||||
}
|
||||
|
||||
if (track > Track_Bonus)
|
||||
@ -1280,22 +1259,21 @@ public int Native_GetWRHolderRank(Handle handler, int numParams)
|
||||
track = Track_Bonus;
|
||||
}
|
||||
|
||||
return gI_WRHolderRank[client][track][style];
|
||||
return gA_Rankings[client].iWRHolderRank[STYLE_LIMIT*track + style];
|
||||
}
|
||||
|
||||
|
||||
public int Native_GetMapTier(Handle handler, int numParams)
|
||||
{
|
||||
int tier = 0;
|
||||
char sMap[PLATFORM_MAX_PATH];
|
||||
GetNativeString(1, sMap, sizeof(sMap));
|
||||
|
||||
char sMap[128];
|
||||
GetNativeString(1, sMap, 128);
|
||||
|
||||
if(!gA_MapTiers.GetValue(sMap, tier))
|
||||
if (!sMap[0])
|
||||
{
|
||||
return 0;
|
||||
return gI_Tier;
|
||||
}
|
||||
|
||||
gA_MapTiers.GetValue(sMap, tier);
|
||||
return tier;
|
||||
}
|
||||
|
||||
|
||||
@ -480,6 +480,12 @@ public void OnPluginStart()
|
||||
LoadDHooks();
|
||||
|
||||
CreateAllNavFiles();
|
||||
|
||||
if(gB_Late)
|
||||
{
|
||||
Shavit_OnStyleConfigLoaded(Shavit_GetStyleCount());
|
||||
Shavit_OnChatConfigLoaded();
|
||||
}
|
||||
}
|
||||
|
||||
void LoadDHooks()
|
||||
@ -1571,13 +1577,6 @@ public void OnMapStart()
|
||||
SetFailState("Could not load the replay bots' configuration file. Make sure it exists (addons/sourcemod/configs/shavit-replay.cfg) and follows the proper syntax!");
|
||||
}
|
||||
|
||||
if(gB_Late)
|
||||
{
|
||||
gB_Late = false;
|
||||
Shavit_OnStyleConfigLoaded(Shavit_GetStyleCount());
|
||||
Shavit_OnChatConfigLoaded();
|
||||
}
|
||||
|
||||
GetCurrentMap(gS_Map, 160);
|
||||
bool bWorkshopWritten = WriteNavMesh(gS_Map); // write "maps/workshop/123123123/bhop_map.nav"
|
||||
GetMapDisplayName(gS_Map, gS_Map, 160);
|
||||
|
||||
@ -113,7 +113,8 @@ public void OnPluginStart()
|
||||
|
||||
if(gB_Late)
|
||||
{
|
||||
gI_Styles = Shavit_GetStyleCount();
|
||||
Shavit_OnStyleConfigLoaded(Shavit_GetStyleCount());
|
||||
Shavit_OnChatConfigLoaded();
|
||||
|
||||
for(int i = 1; i <= MaxClients; i++)
|
||||
{
|
||||
@ -125,16 +126,6 @@ public void OnPluginStart()
|
||||
}
|
||||
}
|
||||
|
||||
public void OnMapStart()
|
||||
{
|
||||
if(gB_Late)
|
||||
{
|
||||
gB_Late = false;
|
||||
Shavit_OnStyleConfigLoaded(Shavit_GetStyleCount());
|
||||
Shavit_OnChatConfigLoaded();
|
||||
}
|
||||
}
|
||||
|
||||
public void Shavit_OnStyleConfigLoaded(int styles)
|
||||
{
|
||||
for(int i = 0; i < styles; i++)
|
||||
|
||||
@ -36,7 +36,6 @@ enum struct wrcache_t
|
||||
int iLastStyle;
|
||||
int iLastTrack;
|
||||
bool bPendingMenu;
|
||||
bool bLoadedCache;
|
||||
char sClientMap[128];
|
||||
float fWRs[STYLE_LIMIT];
|
||||
}
|
||||
@ -75,6 +74,7 @@ int gI_WRRecordID[STYLE_LIMIT][TRACKS_SIZE];
|
||||
int gI_WRSteamID[STYLE_LIMIT][TRACKS_SIZE];
|
||||
StringMap gSM_WRNames = null;
|
||||
ArrayList gA_Leaderboard[STYLE_LIMIT][TRACKS_SIZE];
|
||||
bool gB_LoadedCache[MAXPLAYERS+1];
|
||||
float gF_PlayerRecord[MAXPLAYERS+1][STYLE_LIMIT][TRACKS_SIZE];
|
||||
int gI_PlayerCompletion[MAXPLAYERS+1][STYLE_LIMIT][TRACKS_SIZE];
|
||||
|
||||
@ -190,13 +190,15 @@ public void OnPluginStart()
|
||||
|
||||
if(gB_Late)
|
||||
{
|
||||
Shavit_OnStyleConfigLoaded(Shavit_GetStyleCount());
|
||||
Shavit_OnChatConfigLoaded();
|
||||
Shavit_OnDatabaseLoaded();
|
||||
|
||||
for(int i = 1; i <= MaxClients; i++)
|
||||
{
|
||||
if(IsValidClient(i))
|
||||
{
|
||||
OnClientPutInServer(i);
|
||||
OnClientConnected(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -349,10 +351,12 @@ public void OnMapStart()
|
||||
FormatEx(sQuery, 128, "SELECT map FROM %smapzones GROUP BY map;", gS_MySQLPrefix);
|
||||
gH_SQL.Query(SQL_UpdateMaps_Callback, sQuery, 0, DBPrio_Low);
|
||||
|
||||
if (gI_Styles == 0)
|
||||
for(int i = 1; i <= MaxClients; i++)
|
||||
{
|
||||
Shavit_OnStyleConfigLoaded(Shavit_GetStyleCount());
|
||||
Shavit_OnChatConfigLoaded();
|
||||
if(IsValidClient(i) && IsClientAuthorized(i))
|
||||
{
|
||||
OnClientAuthorized(i, "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -410,27 +414,28 @@ public void Shavit_OnChatConfigLoaded()
|
||||
Shavit_GetChatStringsStruct(gS_ChatStrings);
|
||||
}
|
||||
|
||||
public void OnClientPutInServer(int client)
|
||||
public void OnClientConnected(int client)
|
||||
{
|
||||
gA_WRCache[client].bPendingMenu = false;
|
||||
gA_WRCache[client].bLoadedCache = false;
|
||||
wrcache_t empty_cache;
|
||||
gA_WRCache[client] = empty_cache;
|
||||
|
||||
gB_LoadedCache[client] = false;
|
||||
|
||||
any empty_cells[TRACKS_SIZE];
|
||||
|
||||
for(int i = 0; i < gI_Styles; i++)
|
||||
{
|
||||
gA_WRCache[client].fWRs[i] = 0.0;
|
||||
for(int j = 0; j < TRACKS_SIZE; j++)
|
||||
{
|
||||
gF_PlayerRecord[client][i][j] = 0.0;
|
||||
gI_PlayerCompletion[client][i][j] = 0;
|
||||
}
|
||||
gF_PlayerRecord[client][i] = empty_cells;
|
||||
gI_PlayerCompletion[client][i] = empty_cells;
|
||||
}
|
||||
}
|
||||
|
||||
if(!IsClientConnected(client) || IsFakeClient(client))
|
||||
public void OnClientAuthorized(int client)
|
||||
{
|
||||
if (!IsFakeClient(client))
|
||||
{
|
||||
return;
|
||||
UpdateClientCache(client);
|
||||
}
|
||||
|
||||
UpdateClientCache(client);
|
||||
}
|
||||
|
||||
void UpdateClientCache(int client)
|
||||
@ -478,7 +483,7 @@ public void SQL_UpdateCache_Callback(Database db, DBResultSet results, const cha
|
||||
|
||||
}
|
||||
|
||||
gA_WRCache[client].bLoadedCache = true;
|
||||
gB_LoadedCache[client] = true;
|
||||
}
|
||||
|
||||
void UpdateWRCache(int client = -1)
|
||||
@ -487,12 +492,12 @@ void UpdateWRCache(int client = -1)
|
||||
{
|
||||
for (int i = 1; i <= MaxClients; i++)
|
||||
{
|
||||
OnClientPutInServer(i);
|
||||
OnClientConnected(i);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
OnClientPutInServer(client);
|
||||
OnClientConnected(client);
|
||||
}
|
||||
|
||||
char sQuery[512];
|
||||
@ -598,7 +603,6 @@ public int Native_GetWorldRecord(Handle handler, int numParams)
|
||||
|
||||
public int Native_ReloadLeaderboards(Handle handler, int numParams)
|
||||
{
|
||||
//UpdateLeaderboards(); // Called by UpdateWRCache->SQL_UpdateWRCache_Callback
|
||||
UpdateWRCache();
|
||||
}
|
||||
|
||||
@ -2223,7 +2227,7 @@ public void Trans_CreateTable_Error(Database db, any data, int numQueries, const
|
||||
public void Shavit_OnFinish(int client, int style, float time, int jumps, int strafes, float sync, int track, float oldtime, float perfs, float avgvel, float maxvel, int timestamp)
|
||||
{
|
||||
// do not risk overwriting the player's data if their PB isn't loaded to cache yet
|
||||
if(!gA_WRCache[client].bLoadedCache)
|
||||
if (!gB_LoadedCache[client])
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -2503,6 +2507,7 @@ public void SQL_OnFinish_Callback(Database db, DBResultSet results, const char[]
|
||||
return;
|
||||
}
|
||||
|
||||
#if 0
|
||||
int client = GetClientFromSerial(data);
|
||||
|
||||
if(client == 0)
|
||||
@ -2511,6 +2516,7 @@ public void SQL_OnFinish_Callback(Database db, DBResultSet results, const char[]
|
||||
}
|
||||
|
||||
UpdateWRCache(client);
|
||||
#endif
|
||||
}
|
||||
|
||||
public void Trans_ReplaceStageTimes_Success(Database db, any data, int numQueries, DBResultSet[] results, any[] queryData)
|
||||
|
||||
@ -96,34 +96,32 @@ enum
|
||||
ZF_ForceRender = (1 << 0)
|
||||
};
|
||||
|
||||
int gI_ZoneType[MAXPLAYERS+1];
|
||||
|
||||
// 0 - nothing
|
||||
// 1 - wait for E tap to setup first coord
|
||||
// 2 - wait for E tap to setup second coord
|
||||
// 3 - confirm
|
||||
int gI_MapStep[MAXPLAYERS+1];
|
||||
|
||||
float gF_Modifier[MAXPLAYERS+1];
|
||||
int gI_GridSnap[MAXPLAYERS+1];
|
||||
bool gB_SnapToWall[MAXPLAYERS+1];
|
||||
bool gB_CursorTracing[MAXPLAYERS+1];
|
||||
int gI_ZoneFlags[MAXPLAYERS+1];
|
||||
int gI_ZoneData[MAXPLAYERS+1];
|
||||
int gI_ZoneTrack[MAXPLAYERS+1];
|
||||
int gI_ZoneType[MAXPLAYERS+1];
|
||||
int gI_ZoneDatabaseID[MAXPLAYERS+1];
|
||||
int gI_ZoneID[MAXPLAYERS+1];
|
||||
bool gB_WaitingForChatInput[MAXPLAYERS+1];
|
||||
|
||||
// cache
|
||||
float gV_Point1[MAXPLAYERS+1][3];
|
||||
float gV_Point2[MAXPLAYERS+1][3];
|
||||
float gV_Teleport[MAXPLAYERS+1][3];
|
||||
float gV_WallSnap[MAXPLAYERS+1][3];
|
||||
bool gB_Button[MAXPLAYERS+1];
|
||||
|
||||
float gF_Modifier[MAXPLAYERS+1];
|
||||
int gI_GridSnap[MAXPLAYERS+1];
|
||||
bool gB_SnapToWall[MAXPLAYERS+1];
|
||||
bool gB_CursorTracing[MAXPLAYERS+1];
|
||||
|
||||
// player zone status
|
||||
bool gB_InsideZone[MAXPLAYERS+1][ZONETYPES_SIZE][TRACKS_SIZE];
|
||||
bool gB_InsideZoneID[MAXPLAYERS+1][MAX_ZONES];
|
||||
float gF_CustomSpawn[TRACKS_SIZE][3];
|
||||
int gI_ZoneTrack[MAXPLAYERS+1];
|
||||
int gI_ZoneDatabaseID[MAXPLAYERS+1];
|
||||
int gI_ZoneID[MAXPLAYERS+1];
|
||||
|
||||
// zone cache
|
||||
zone_settings_t gA_ZoneSettings[ZONETYPES_SIZE][TRACKS_SIZE];
|
||||
@ -135,8 +133,8 @@ float gV_Destinations[MAX_ZONES][3];
|
||||
float gV_ZoneCenter[MAX_ZONES][3];
|
||||
int gI_StageZoneID[TRACKS_SIZE][MAX_ZONES];
|
||||
int gI_HighestStage[TRACKS_SIZE];
|
||||
float gF_CustomSpawn[TRACKS_SIZE][3];
|
||||
int gI_EntityZone[4096];
|
||||
bool gB_ZonesCreated = false;
|
||||
int gI_LastStage[MAXPLAYERS+1];
|
||||
|
||||
char gS_BeamSprite[PLATFORM_MAX_PATH];
|
||||
@ -332,11 +330,15 @@ public void OnPluginStart()
|
||||
{
|
||||
if(IsClientConnected(i) && IsClientInGame(i))
|
||||
{
|
||||
OnClientPutInServer(i);
|
||||
OnClientConnected(i);
|
||||
}
|
||||
}
|
||||
|
||||
SQL_DBConnect();
|
||||
if (gB_Late)
|
||||
{
|
||||
Shavit_OnChatConfigLoaded();
|
||||
Shavit_OnDatabaseLoaded();
|
||||
}
|
||||
}
|
||||
|
||||
public void OnAllPluginsLoaded()
|
||||
@ -799,12 +801,6 @@ public void OnMapStart()
|
||||
gH_DrawEverything = CreateTimer(gCV_Interval.FloatValue, Timer_DrawEverything, INVALID_HANDLE, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
|
||||
}
|
||||
|
||||
if(gB_Late)
|
||||
{
|
||||
gB_Late = false;
|
||||
Shavit_OnChatConfigLoaded();
|
||||
}
|
||||
|
||||
for(int i = 1; i <= MaxClients; i++)
|
||||
{
|
||||
if(IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i))
|
||||
@ -1033,8 +1029,6 @@ public void Frame_HookTrigger(any data)
|
||||
SDKHook(entity, SDKHook_StartTouchPost, StartTouchPost);
|
||||
SDKHook(entity, SDKHook_EndTouchPost, EndTouchPost);
|
||||
SDKHook(entity, SDKHook_TouchPost, TouchPost);
|
||||
|
||||
gB_ZonesCreated = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1209,36 +1203,26 @@ public void AddZoneToCache(int type, float corner1_x, float corner1_y, float cor
|
||||
gI_MapZones++;
|
||||
}
|
||||
|
||||
public void OnClientPutInServer(int client)
|
||||
public void OnClientConnected(int client)
|
||||
{
|
||||
for(int i = 0; i < TRACKS_SIZE; i++)
|
||||
bool empty_InsideZone[TRACKS_SIZE];
|
||||
|
||||
for (int i = 0; i < ZONETYPES_SIZE; i++)
|
||||
{
|
||||
for(int j = 0; j < ZONETYPES_SIZE; j++)
|
||||
{
|
||||
gB_InsideZone[client][j][i] = false;
|
||||
}
|
||||
|
||||
for(int j = 0; j < 3; j++)
|
||||
{
|
||||
gF_ClimbButtonCache[client][i][0][j] = 0.0;
|
||||
gF_ClimbButtonCache[client][i][1][j] = 0.0;
|
||||
}
|
||||
|
||||
gF_StartPos[client][i] = view_as<float>({0.0, 0.0, 0.0});
|
||||
gF_StartAng[client][i] = view_as<float>({0.0, 0.0, 0.0});
|
||||
|
||||
gB_HasSetStart[client][i] = false;
|
||||
gB_InsideZone[client][i] = empty_InsideZone;
|
||||
}
|
||||
|
||||
for(int i = 0; i < MAX_ZONES; i++)
|
||||
bool empty_InsideZoneID[MAX_ZONES];
|
||||
gB_InsideZoneID[client] = empty_InsideZoneID;
|
||||
|
||||
for (int i = 0; i < TRACKS_SIZE; i++)
|
||||
{
|
||||
gB_InsideZoneID[client][i] = false;
|
||||
gF_ClimbButtonCache[client][i][0] = NULL_VECTOR;
|
||||
gF_ClimbButtonCache[client][i][1] = NULL_VECTOR;
|
||||
}
|
||||
|
||||
if (gB_Connected && !IsFakeClient(client))
|
||||
{
|
||||
GetStartPosition(client);
|
||||
}
|
||||
bool empty_HasSetStart[TRACKS_SIZE];
|
||||
gB_HasSetStart[client] = empty_HasSetStart;
|
||||
|
||||
Reset(client);
|
||||
|
||||
@ -1248,6 +1232,14 @@ public void OnClientPutInServer(int client)
|
||||
gB_CursorTracing[client] = true;
|
||||
}
|
||||
|
||||
public void OnClientAuthorized(int client)
|
||||
{
|
||||
if (gB_Connected && !IsFakeClient(client))
|
||||
{
|
||||
GetStartPosition(client);
|
||||
}
|
||||
}
|
||||
|
||||
void GetStartPosition(int client)
|
||||
{
|
||||
int steamID = GetSteamAccountID(client);
|
||||
@ -1295,7 +1287,6 @@ public void SQL_GetStartPosition_Callback(Database db, DBResultSet results, cons
|
||||
|
||||
gB_StartAnglesOnly[client][track] = results.FetchInt(7) > 0;
|
||||
gB_HasSetStart[client][track] = true;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -1310,7 +1301,7 @@ public Action Command_SetStart(int client, int args)
|
||||
|
||||
int track = Shavit_GetClientTrack(client);
|
||||
|
||||
if(!gB_ZonesCreated || !InsideZone(client, Zone_Start, track))
|
||||
if(!InsideZone(client, Zone_Start, track))
|
||||
{
|
||||
Shavit_PrintToChat(client, "%T", "SetStartNotInStartZone", client, gS_ChatStrings.sWarning, gS_ChatStrings.sText, gS_ChatStrings.sVariable2, gS_ChatStrings.sText);
|
||||
|
||||
@ -2268,13 +2259,10 @@ void Reset(int client)
|
||||
gB_WaitingForChatInput[client] = false;
|
||||
gI_ZoneID[client] = -1;
|
||||
|
||||
for(int i = 0; i < 3; i++)
|
||||
{
|
||||
gV_Point1[client][i] = 0.0;
|
||||
gV_Point2[client][i] = 0.0;
|
||||
gV_Teleport[client][i] = 0.0;
|
||||
gV_WallSnap[client][i] = 0.0;
|
||||
}
|
||||
gV_Point1[client] = NULL_VECTOR;
|
||||
gV_Point2[client] = NULL_VECTOR;
|
||||
gV_Teleport[client] = NULL_VECTOR;
|
||||
gV_WallSnap[client] = NULL_VECTOR;
|
||||
}
|
||||
|
||||
void ShowPanel(int client, int step)
|
||||
@ -3154,7 +3142,7 @@ void CreateZonePoints(float point[8][3], float offset = 0.0)
|
||||
}
|
||||
}
|
||||
|
||||
void SQL_DBConnect()
|
||||
public void Shavit_OnDatabaseLoaded()
|
||||
{
|
||||
GetTimerSQLPrefix(gS_MySQLPrefix, 32);
|
||||
gH_SQL = GetTimerDatabaseHandle();
|
||||
@ -3292,22 +3280,17 @@ public void Round_Start(Event event, const char[] name, bool dontBroadcast)
|
||||
gI_KZButtons[i][1] = -1;
|
||||
}
|
||||
|
||||
gB_ZonesCreated = false;
|
||||
bool empty_InsideZone[TRACKS_SIZE];
|
||||
|
||||
for (int i = 0; i <= MaxClients; i++)
|
||||
{
|
||||
for (int j = 0; j < ZONETYPES_SIZE; j++)
|
||||
{
|
||||
for (int k = 0; k < TRACKS_SIZE; k++)
|
||||
{
|
||||
gB_InsideZone[i][j][k] = false;
|
||||
}
|
||||
gB_InsideZone[i][j] = empty_InsideZone;
|
||||
}
|
||||
|
||||
for (int x = 0; x < MAX_ZONES; x++)
|
||||
{
|
||||
gB_InsideZoneID[i][x] = false;
|
||||
}
|
||||
bool empty_InsideZoneID[MAX_ZONES];
|
||||
gB_InsideZoneID[i] = empty_InsideZoneID;
|
||||
}
|
||||
|
||||
RequestFrame(CreateZoneEntities);
|
||||
@ -3407,8 +3390,6 @@ public void CreateZoneEntities()
|
||||
char sTargetname[32];
|
||||
FormatEx(sTargetname, 32, "shavit_zones_%d_%d", gA_ZoneCache[i].iZoneTrack, gA_ZoneCache[i].iZoneType);
|
||||
DispatchKeyValue(entity, "targetname", sTargetname);
|
||||
|
||||
gB_ZonesCreated = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user