bug fixes, hopefully the last one needed
This commit is contained in:
parent
470a5199c4
commit
23cd40963c
@ -23,6 +23,7 @@ static char g_sConfigzones[PLATFORM_MAX_PATH];
|
|||||||
float g_fStartTime[MAXPLAYERS + 1];
|
float g_fStartTime[MAXPLAYERS + 1];
|
||||||
char g_csTime_record[MAXPLAYERS + 1][65];
|
char g_csTime_record[MAXPLAYERS + 1][65];
|
||||||
float g_fClientVectors[MAXPLAYERS + 1][3];
|
float g_fClientVectors[MAXPLAYERS + 1][3];
|
||||||
|
float g_fClient_End_time[MAXPLAYERS + 1];
|
||||||
int g_iClientFrames[MAXPLAYERS + 1];
|
int g_iClientFrames[MAXPLAYERS + 1];
|
||||||
int g_iClientSpeedInterval[MAXPLAYERS + 1];
|
int g_iClientSpeedInterval[MAXPLAYERS + 1];
|
||||||
int g_iClientChecking[MAXPLAYERS + 1];
|
int g_iClientChecking[MAXPLAYERS + 1];
|
||||||
@ -30,8 +31,8 @@ bool g_bDisplaySpecial;
|
|||||||
bool g_bHumansAllowedTime[MAXPLAYERS + 1];
|
bool g_bHumansAllowedTime[MAXPLAYERS + 1];
|
||||||
bool g_bhumans_finished[MAXPLAYERS + 1];
|
bool g_bhumans_finished[MAXPLAYERS + 1];
|
||||||
bool g_bHideTimer[MAXPLAYERS + 1];
|
bool g_bHideTimer[MAXPLAYERS + 1];
|
||||||
int g_bAllowToLeave[MAXPLAYERS + 1];
|
|
||||||
bool g_bEventBool = false;
|
bool g_bEventBool = false;
|
||||||
|
bool g_bClient_allowed_to_leave_again[MAXPLAYERS + 1];
|
||||||
Handle g_hClientCookie = INVALID_HANDLE;
|
Handle g_hClientCookie = INVALID_HANDLE;
|
||||||
Database g_dDatabase;
|
Database g_dDatabase;
|
||||||
Handle hText;
|
Handle hText;
|
||||||
@ -86,6 +87,13 @@ public void OnPluginStart()
|
|||||||
g_bDisplaySpecial = unloze_gBSpecialMapDisplay();
|
g_bDisplaySpecial = unloze_gBSpecialMapDisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Action allow_leaving_again(Handle hTimer, int client)
|
||||||
|
{
|
||||||
|
if (IsValidClient(client))
|
||||||
|
{
|
||||||
|
g_bClient_allowed_to_leave_again[client] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
public Action Timer_alter_tables(Handle hTimer)
|
public Action Timer_alter_tables(Handle hTimer)
|
||||||
{
|
{
|
||||||
if (!g_dDatabase)
|
if (!g_dDatabase)
|
||||||
@ -105,12 +113,12 @@ public void trigger_teleport(const char[] output, int entity_index, int client,
|
|||||||
//if its surf maps there most likely are needed teleports
|
//if its surf maps there most likely are needed teleports
|
||||||
if (StrContains(g_cMapname, "surf", false) == -1)
|
if (StrContains(g_cMapname, "surf", false) == -1)
|
||||||
{
|
{
|
||||||
g_bHumansAllowedTime[client] = false;
|
g_bHumansAllowedTime[client] = false;
|
||||||
resetClientVectors(client);
|
g_bhumans_finished[client] = false;
|
||||||
if (GetClientTeam(client) == 3)
|
resetClientVectors(client);
|
||||||
{
|
g_bClient_allowed_to_leave_again[client] = false;
|
||||||
PrintToChat(client, "Disabled timer due to potential teleport abuse");
|
PrintToChat(client, "Disabled timer due to potential teleport abuse, type 1.");
|
||||||
}
|
CreateTimer(1.0, allow_leaving_again, client);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -122,13 +130,15 @@ public void Trigger_Multiple(const char[] output, int entity_index, int client,
|
|||||||
if (StrContains(g_cMapname, "surf", false) == -1)
|
if (StrContains(g_cMapname, "surf", false) == -1)
|
||||||
{
|
{
|
||||||
g_bHumansAllowedTime[client] = false;
|
g_bHumansAllowedTime[client] = false;
|
||||||
|
g_bhumans_finished[client] = false;
|
||||||
resetClientVectors(client);
|
resetClientVectors(client);
|
||||||
PrintToChat(client, "Disabled timer due to potential teleport abuse");
|
g_bClient_allowed_to_leave_again[client] = false;
|
||||||
|
PrintToChat(client, "Disabled timer due to potential teleport abuse, type 1.");
|
||||||
|
CreateTimer(1.0, allow_leaving_again, client);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public bool origin_command_check(int entity_index)
|
public bool origin_command_check(int entity_index)
|
||||||
{
|
{
|
||||||
int count_trigger = GetOutputCount(entity_index, "m_OnTrigger");
|
int count_trigger = GetOutputCount(entity_index, "m_OnTrigger");
|
||||||
@ -198,7 +208,6 @@ public void MYSQLCheckMapEntry()
|
|||||||
int l_iRaceCount;
|
int l_iRaceCount;
|
||||||
int l_iZoneCount = unloze_zoneCount();
|
int l_iZoneCount = unloze_zoneCount();
|
||||||
char sQuery[g_dLength];
|
char sQuery[g_dLength];
|
||||||
char l_cZoneIndexName[g_dIndex][g_dLength];
|
|
||||||
if (l_iZoneCount == 1)
|
if (l_iZoneCount == 1)
|
||||||
{
|
{
|
||||||
Format(sQuery, sizeof(sQuery), "ALTER TABLE `zetimer_table_new` ADD COLUMN IF NOT EXISTS `%s` REAL DEFAULT 0.000 NOT NULL", g_cMapname);
|
Format(sQuery, sizeof(sQuery), "ALTER TABLE `zetimer_table_new` ADD COLUMN IF NOT EXISTS `%s` REAL DEFAULT 0.000 NOT NULL", g_cMapname);
|
||||||
@ -210,7 +219,9 @@ public void MYSQLCheckMapEntry()
|
|||||||
{
|
{
|
||||||
for (int iterator = 0; iterator <= l_iZoneCount; iterator++)
|
for (int iterator = 0; iterator <= l_iZoneCount; iterator++)
|
||||||
{
|
{
|
||||||
if (IsCorrectZone(iterator, l_cZoneIndexName[iterator][g_dLength -1], "ZONE_PREFIX_RACE"))
|
char zoneIndexName[512];
|
||||||
|
ZoneNameBasedOnIndex(iterator, zoneIndexName);
|
||||||
|
if (StrContains(zoneIndexName, "ZONE_PREFIX_RACE") > -1)
|
||||||
{
|
{
|
||||||
l_iRaceCount++;
|
l_iRaceCount++;
|
||||||
Format(sQuery, sizeof(sQuery), "ALTER TABLE `zetimer_table_new` ADD COLUMN IF NOT EXISTS `%sS%i` REAL DEFAULT 0.000 NOT NULL", g_cMapname, l_iRaceCount);
|
Format(sQuery, sizeof(sQuery), "ALTER TABLE `zetimer_table_new` ADD COLUMN IF NOT EXISTS `%sS%i` REAL DEFAULT 0.000 NOT NULL", g_cMapname, l_iRaceCount);
|
||||||
@ -370,17 +381,18 @@ public void Event_RoundStart(Handle event, const char[] name, bool dontBroadcast
|
|||||||
if (IsValidClient(i) && !IsFakeClient(i))
|
if (IsValidClient(i) && !IsFakeClient(i))
|
||||||
{
|
{
|
||||||
g_bhumans_finished[i] = false;
|
g_bhumans_finished[i] = false;
|
||||||
|
g_fClient_End_time[i] = 0.0;
|
||||||
resetClientVectors(i);
|
resetClientVectors(i);
|
||||||
g_bAllowToLeave[i] = 0;
|
|
||||||
char first_zone[512];
|
char first_zone[512];
|
||||||
ZoneNameBasedOnIndex(0, first_zone);
|
ZoneNameBasedOnIndex(0, first_zone);
|
||||||
|
g_bClient_allowed_to_leave_again[i] = true;
|
||||||
if (race_zone_count != 1)
|
if (race_zone_count != 1)
|
||||||
g_bHumansAllowedTime[i] = false;
|
g_bHumansAllowedTime[i] = false;
|
||||||
else if (StrContains(first_zone, "ZONE_PREFIX_RACE") > -1) //ensures only one zone in total and that its the actual end zone
|
else if (StrContains(first_zone, "ZONE_PREFIX_RACE") > -1) //ensures only one zone in total and that its the actual end zone
|
||||||
{
|
{
|
||||||
mysql_get_player_time(i, 0);
|
|
||||||
g_bHumansAllowedTime[i] = true;
|
g_bHumansAllowedTime[i] = true;
|
||||||
g_fStartTime[i] = GetEngineTime();
|
g_fStartTime[i] = GetEngineTime();
|
||||||
|
mysql_get_player_time(i, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -421,8 +433,9 @@ public void resetClient(int client)
|
|||||||
{
|
{
|
||||||
g_iClientChecking[client] = 0;
|
g_iClientChecking[client] = 0;
|
||||||
g_bHumansAllowedTime[client] = false;
|
g_bHumansAllowedTime[client] = false;
|
||||||
g_bAllowToLeave[client] = 0;
|
|
||||||
g_bhumans_finished[client] = false;
|
g_bhumans_finished[client] = false;
|
||||||
|
g_fClient_End_time[client] = 0.0;
|
||||||
|
g_bClient_allowed_to_leave_again[client] = false;
|
||||||
resetClientVectors(client);
|
resetClientVectors(client);
|
||||||
g_fStartTime[client] = 0.0;
|
g_fStartTime[client] = 0.0;
|
||||||
player_stage[client] = 0;
|
player_stage[client] = 0;
|
||||||
@ -444,29 +457,36 @@ public void OnPlayerRunCmdPost(int client, int buttons, int impulse, const float
|
|||||||
g_bHumansAllowedTime[client] = false;
|
g_bHumansAllowedTime[client] = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (GetClientTeam(client) == CS_TEAM_CT && IsPlayerAlive(client))
|
if (!IsPlayerAlive(client))
|
||||||
{
|
{
|
||||||
|
g_bHumansAllowedTime[client] = false;
|
||||||
|
g_bhumans_finished[client] = false;
|
||||||
|
resetClientVectors(client);
|
||||||
|
PrintToChat(client, "Disabled timer due to dying.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (GetClientTeam(client) == CS_TEAM_CT)
|
||||||
|
{
|
||||||
|
float clientVectors[3];
|
||||||
|
GetClientAbsOrigin(client, clientVectors);
|
||||||
|
if (checkClientOrigin(g_fClientVectors[client], clientVectors, client))
|
||||||
|
{
|
||||||
|
g_bHumansAllowedTime[client] = false;
|
||||||
|
g_bhumans_finished[client] = false;
|
||||||
|
resetClientVectors(client);
|
||||||
|
g_bClient_allowed_to_leave_again[client] = false;
|
||||||
|
PrintToChat(client, "Disabled timer due to potential teleport abuse, type 2.");
|
||||||
|
CreateTimer(1.0, allow_leaving_again, client);
|
||||||
|
return;
|
||||||
|
}
|
||||||
int frameCap = 11;
|
int frameCap = 11;
|
||||||
if (g_bhumans_finished[client])
|
if (g_bhumans_finished[client])
|
||||||
g_iClientFrames[client] = 11;
|
g_iClientFrames[client] = 11;
|
||||||
if (g_iClientFrames[client] >= frameCap)
|
if (g_iClientFrames[client] >= frameCap)
|
||||||
{
|
{
|
||||||
g_iClientFrames[client] = 0;
|
g_iClientFrames[client] = 0;
|
||||||
float clientVectors[3];
|
|
||||||
GetClientAbsOrigin(client, clientVectors);
|
|
||||||
if (checkClientOrigin(g_fClientVectors[client], clientVectors, client))
|
|
||||||
{
|
|
||||||
g_bHumansAllowedTime[client] = false;
|
|
||||||
g_bhumans_finished[client] = false;
|
|
||||||
//called if teleported to some place far away or teleported from inside start zone to end zone
|
|
||||||
CreateTimer(1.0, reset_permissions_for_leave, client);
|
|
||||||
resetClientVectors(client);
|
|
||||||
PrintToChat(client, "Disabled timer due to potential teleport abuse");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (g_bhumans_finished[client])
|
if (g_bhumans_finished[client])
|
||||||
{
|
{
|
||||||
CreateTimer(1.0, reset_permissions_for_leave, client);
|
|
||||||
resetClientVectors(client);
|
resetClientVectors(client);
|
||||||
g_bhumans_finished[client] = false;
|
g_bhumans_finished[client] = false;
|
||||||
g_bHumansAllowedTime[client] = false;
|
g_bHumansAllowedTime[client] = false;
|
||||||
@ -525,6 +545,16 @@ public void OnPlayerRunCmdPost(int client, int buttons, int impulse, const float
|
|||||||
}
|
}
|
||||||
g_iClientFrames[client]++;
|
g_iClientFrames[client]++;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//is zm
|
||||||
|
g_bHumansAllowedTime[client] = false;
|
||||||
|
g_bhumans_finished[client] = false;
|
||||||
|
//called if teleported to some place far away or teleported from inside start zone to end zone
|
||||||
|
resetClientVectors(client);
|
||||||
|
PrintToChat(client, "Disabled timer due to ZM infection.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -557,7 +587,6 @@ public bool checkClientOrigin(float oldVals[3], float newVals[3], int client)
|
|||||||
float teleport_range = 1090450.0;
|
float teleport_range = 1090450.0;
|
||||||
int velocityCap = 625;
|
int velocityCap = 625;
|
||||||
float distance = GetVectorDistance(oldVals, newVals, true);
|
float distance = GetVectorDistance(oldVals, newVals, true);
|
||||||
//PrintToChatAll("distance: %f", distance);
|
|
||||||
bool bInAir = (GetEntPropEnt(client, Prop_Send, "m_hGroundEntity") == -1);
|
bool bInAir = (GetEntPropEnt(client, Prop_Send, "m_hGroundEntity") == -1);
|
||||||
if (distance > teleport_range)
|
if (distance > teleport_range)
|
||||||
{
|
{
|
||||||
@ -592,32 +621,13 @@ public void unloze_zoneEntry(int client, char[] zone)
|
|||||||
player_stage[client] = 0;
|
player_stage[client] = 0;
|
||||||
if (player_stage[client] == (zoneIndex / 2) || l_iZoneCount < 2)
|
if (player_stage[client] == (zoneIndex / 2) || l_iZoneCount < 2)
|
||||||
{
|
{
|
||||||
g_bAllowToLeave[client] = 1;
|
|
||||||
g_bhumans_finished[client] = true;
|
g_bhumans_finished[client] = true;
|
||||||
|
g_fClient_End_time[client] = client_current_race_time(client);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action reset_permissions_for_leave(Handle timer, int i)
|
|
||||||
{
|
|
||||||
if (IsValidClient(i))
|
|
||||||
{
|
|
||||||
//if you start the timer and run inside the start zone again there are 3 options:
|
|
||||||
//you leave the zone normally by running out of it which is fine
|
|
||||||
//you get teleported out of the zone to a certain distance away by something like afk teleport, in that case your timer gets disabled
|
|
||||||
//due to detected teleport abuse
|
|
||||||
|
|
||||||
//Third option is you get teleported out of spawn zone to a end zone which after triggering Entry forward triggers Leave forward again
|
|
||||||
//Therefore we need a cooldown when teleporting from inside of start zone to an entry zone as Leave forward is called right after again
|
|
||||||
//which is a errornous way of starting the timer from the end zone, by having a second delay we ensure its not a problem when teleported from spawn
|
|
||||||
//to a random place thats not an entry zone as this is handled seemingly correctly by the teleport abuse detection. Meanwhile to stop the timer from
|
|
||||||
//starting when teleported from spawn to an Entry zone we need a cooldown
|
|
||||||
g_bAllowToLeave[i] = 0;
|
|
||||||
}
|
|
||||||
return Plugin_Continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -625,13 +635,11 @@ public void unloze_zoneLeave(int client, char[] zone)
|
|||||||
{
|
{
|
||||||
//only maps with multiple zones need ZONE_PREFIX_START
|
//only maps with multiple zones need ZONE_PREFIX_START
|
||||||
int race_zone_count = GetTotalRaceZones();
|
int race_zone_count = GetTotalRaceZones();
|
||||||
//if zone has special name like in mako dont return despite g_bAllowToLeave being false or there being no normally named zone
|
if (!(StrEqual(zone, g_cSpecialMapStart)) && !race_zone_count)
|
||||||
if (!(StrEqual(zone, g_cSpecialMapStart)) && (!race_zone_count || g_bAllowToLeave[client]))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (GetClientTeam(client) == CS_TEAM_CT)
|
if (GetClientTeam(client) == CS_TEAM_CT)
|
||||||
{
|
{
|
||||||
//PrintToChatAll("Equal: %i", StrEqual(zone, g_cSpecialMapStart));
|
|
||||||
if ((StrContains(zone, "ZONE_PREFIX_START") > -1) || StrEqual(zone, g_cSpecialMapStart))
|
if ((StrContains(zone, "ZONE_PREFIX_START") > -1) || StrEqual(zone, g_cSpecialMapStart))
|
||||||
{
|
{
|
||||||
char sAuthID[32];
|
char sAuthID[32];
|
||||||
@ -641,13 +649,17 @@ public void unloze_zoneLeave(int client, char[] zone)
|
|||||||
PrintToChat(client, "Not starting timer due to being listed as nosteamer");
|
PrintToChat(client, "Not starting timer due to being listed as nosteamer");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (!g_bClient_allowed_to_leave_again[client])
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
g_fStartTime[client] = GetEngineTime();
|
g_fStartTime[client] = GetEngineTime();
|
||||||
float notRounded = float(RetrieveZoneIndex(zone));
|
float notRounded = float(RetrieveZoneIndex(zone));
|
||||||
player_stage[client] = RoundToCeil(notRounded / 2);
|
player_stage[client] = RoundToCeil(notRounded / 2);
|
||||||
mysql_get_player_time(client, player_stage[client]);
|
|
||||||
g_bHumansAllowedTime[client] = true;
|
|
||||||
CPrintToChat(client, "Timer started for Course: %i", player_stage[client]);
|
CPrintToChat(client, "Timer started for Course: %i", player_stage[client]);
|
||||||
|
g_bHumansAllowedTime[client] = true;
|
||||||
|
mysql_get_player_time(client, player_stage[client]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -706,7 +718,7 @@ public void FinishedStageRaceZone(int client)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int l_iZoneCount = unloze_zoneCount();
|
int l_iZoneCount = unloze_zoneCount();
|
||||||
float client_time = client_current_race_time(client);
|
float client_time = g_fClient_End_time[client];
|
||||||
if (client_time == -1.0)
|
if (client_time == -1.0)
|
||||||
{
|
{
|
||||||
//if client disconnected we dont want to cary timer over to other client
|
//if client disconnected we dont want to cary timer over to other client
|
||||||
@ -898,7 +910,6 @@ public void mysql_select_lowest_ordered(int client, int index, int length_increa
|
|||||||
public void CheckTop(int client, int index, int autismstate)
|
public void CheckTop(int client, int index, int autismstate)
|
||||||
{
|
{
|
||||||
int l_iZoneCount = unloze_zoneCount();
|
int l_iZoneCount = unloze_zoneCount();
|
||||||
//PrintToChatAll("checktop l_iZoneCount: %i", l_iZoneCount);
|
|
||||||
if (l_iZoneCount < 1)
|
if (l_iZoneCount < 1)
|
||||||
{
|
{
|
||||||
PrintToChat(client, "No zones active on this map");
|
PrintToChat(client, "No zones active on this map");
|
||||||
@ -1023,52 +1034,51 @@ public Action cmd_timerCheckStage(int client, int args)
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
public void CheckStagesOnMap(int client, int state)
|
public void CheckStagesOnMap(int client, int state)
|
||||||
{
|
{
|
||||||
int l_iCount;
|
int l_iCount;
|
||||||
int l_iZoneCount = unloze_zoneCount();
|
int l_iZoneCount = unloze_zoneCount();
|
||||||
Menu StageMenu = CreateMenu(Stage_menu);
|
Menu StageMenu = CreateMenu(Stage_menu);
|
||||||
char l_cZoneIndexName[g_dIndex][g_dLength];
|
char l_cMenuContent[g_dLength];
|
||||||
char l_cMenuContent[g_dLength];
|
if (!l_iZoneCount)
|
||||||
if (!l_iZoneCount)
|
{
|
||||||
{
|
CPrintToChat(client, "[UNLOZE] Map does not support racestage timer");
|
||||||
CPrintToChat(client, "[UNLOZE] Map does not support racestage timer");
|
return;
|
||||||
return;
|
}
|
||||||
}
|
//state 0 == toptime, state 1 == own time
|
||||||
//state 0 == toptime, state 1 == own time
|
g_iClientChecking[client] = state;
|
||||||
g_iClientChecking[client] = state;
|
StageMenu.SetTitle("Stages on: %s", g_cMapname);
|
||||||
StageMenu.SetTitle("Stages on: %s", g_cMapname);
|
if (g_bDisplaySpecial)
|
||||||
if (g_bDisplaySpecial)
|
{
|
||||||
{
|
l_iCount++;
|
||||||
l_iCount++;
|
Format(l_cMenuContent, sizeof(l_cMenuContent), "Stage: %i", l_iCount);
|
||||||
Format(l_cMenuContent, sizeof(l_cMenuContent), "Stage: %i", l_iCount);
|
StageMenu.AddItem("", l_cMenuContent);
|
||||||
StageMenu.AddItem("", l_cMenuContent);
|
}
|
||||||
}
|
else
|
||||||
else
|
{
|
||||||
{
|
int zone_reached = 0;
|
||||||
for (int Iterator = 0; Iterator <= l_iZoneCount; Iterator++)
|
for (int Iterator = 0; Iterator <= l_iZoneCount; Iterator++)
|
||||||
{
|
{
|
||||||
if (IsCorrectZone(Iterator, l_cZoneIndexName[Iterator][g_dLength -1], "ZONE_PREFIX_RACE"))
|
char zoneIndexName[512];
|
||||||
{
|
ZoneNameBasedOnIndex(Iterator, zoneIndexName);
|
||||||
l_iCount++;
|
if (StrContains(zoneIndexName, "ZONE_PREFIX_RACE") > -1)
|
||||||
Format(l_cMenuContent, sizeof(l_cMenuContent), "Stage: %i", l_iCount);
|
{
|
||||||
StageMenu.AddItem("", l_cMenuContent);
|
char local_c[g_dLength];
|
||||||
}
|
Format(local_c, sizeof(local_c), "%s", zoneIndexName[strlen("ZONE_PREFIX_RACE") + 1]);
|
||||||
}
|
int prev = zone_reached;
|
||||||
}
|
zone_reached = StringToInt(local_c);
|
||||||
StageMenu.ExitButton = true;
|
if (zone_reached == prev)
|
||||||
StageMenu.Display(client, 0);
|
{
|
||||||
}
|
continue;
|
||||||
//----------------------------------------------------------------------------------------------------
|
}
|
||||||
// Purpose:
|
l_iCount++;
|
||||||
//----------------------------------------------------------------------------------------------------
|
Format(l_cMenuContent, sizeof(l_cMenuContent), "Stage: %i", l_iCount);
|
||||||
public bool IsCorrectZone(int index, char[] zoneIndexName, char[] zone_prefix)
|
StageMenu.AddItem("", l_cMenuContent);
|
||||||
{
|
}
|
||||||
ZoneNameBasedOnIndex(index, zoneIndexName);
|
}
|
||||||
if (StrContains(zoneIndexName, zone_prefix) > -1)
|
}
|
||||||
{
|
StageMenu.ExitButton = true;
|
||||||
return true;
|
StageMenu.Display(client, 0);
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -1119,25 +1129,25 @@ public void deleteClientTime(char[] steam2, int stage)
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
public void Checkself(int client)
|
public void Checkself(int client)
|
||||||
{
|
{
|
||||||
int l_iZoneCount = unloze_zoneCount();
|
int l_iZoneCount = unloze_zoneCount();
|
||||||
char l_cQuery[g_dLength];
|
char l_cQuery[g_dLength];
|
||||||
char l_cSID[g_dIndex];
|
char l_cSID[g_dIndex];
|
||||||
GetClientAuthId(client, AuthId_Steam2, l_cSID, sizeof(l_cSID));
|
GetClientAuthId(client, AuthId_Steam2, l_cSID, sizeof(l_cSID));
|
||||||
if (l_iZoneCount < 1)
|
if (l_iZoneCount < 1)
|
||||||
{
|
{
|
||||||
PrintToChat(client, "No zones active on this map");
|
PrintToChat(client, "No zones active on this map");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (l_iZoneCount < 2)
|
if (l_iZoneCount < 2)
|
||||||
{
|
{
|
||||||
Format(l_cQuery, sizeof(l_cQuery), "SELECT name, `%s` FROM `zetimer_table_new` WHERE steam_auth = '%s'", g_cMapname, l_cSID);
|
Format(l_cQuery, sizeof(l_cQuery), "SELECT name, `%s` FROM `zetimer_table_new` WHERE steam_auth = '%s'", g_cMapname, l_cSID);
|
||||||
DataPack hDataPack = new DataPack();
|
DataPack hDataPack = new DataPack();
|
||||||
hDataPack.WriteCell(GetClientSerial(client));
|
hDataPack.WriteCell(GetClientSerial(client));
|
||||||
hDataPack.WriteString(l_cQuery);
|
hDataPack.WriteString(l_cQuery);
|
||||||
g_dDatabase.Query(SQL_CheckSelf, l_cQuery, hDataPack);
|
g_dDatabase.Query(SQL_CheckSelf, l_cQuery, hDataPack);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CheckStagesOnMap(client, 1);
|
CheckStagesOnMap(client, 1);
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
|
Loading…
Reference in New Issue
Block a user