Fix rejoining and zspawning as human if player was zombie this round.
This commit is contained in:
parent
e2e15972e2
commit
d15957de1b
@ -326,6 +326,7 @@ public OnClientPutInServer(client)
|
|||||||
ZTele_OnClientPutInServer(client);
|
ZTele_OnClientPutInServer(client);
|
||||||
ZHPClientInit(client);
|
ZHPClientInit(client);
|
||||||
ImmunityClientInit(client);
|
ImmunityClientInit(client);
|
||||||
|
ZSpawnOnClientPutInServer(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -63,6 +63,32 @@ stock bool:SteamidCacheAddClient(Handle:steamidcache, client)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove client serial number from the SteamID cache.
|
||||||
|
*
|
||||||
|
* @param steamidcache The SteamID cache to remove the client from.
|
||||||
|
* @param client The client index.
|
||||||
|
* @return True if the client was removed successfully, false if the client doesn't exist.
|
||||||
|
*/
|
||||||
|
stock bool:SteamidCacheRemoveClient(Handle:steamidcache, client)
|
||||||
|
{
|
||||||
|
// Get client's SteamID.
|
||||||
|
new steamid = GetSteamAccountID(client);
|
||||||
|
if (!steamid)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Find the client in the cache.
|
||||||
|
int idx = FindValueInArray(steamidcache, steamid);
|
||||||
|
if (idx == -1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Remove index from the SteamID cache.
|
||||||
|
RemoveFromArray(steamidcache, idx);
|
||||||
|
|
||||||
|
// Client removed successfully.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a client is in the SteamID cache.
|
* Check if a client is in the SteamID cache.
|
||||||
*
|
*
|
||||||
|
@ -44,6 +44,7 @@ new Handle:tZSpawn = INVALID_HANDLE;
|
|||||||
* Global variable to store SteamID cache handle.
|
* Global variable to store SteamID cache handle.
|
||||||
*/
|
*/
|
||||||
new Handle:g_hZSpawnSteamIDCache = INVALID_HANDLE;
|
new Handle:g_hZSpawnSteamIDCache = INVALID_HANDLE;
|
||||||
|
new Handle:g_hZspawnInfectedSteamIDCache = INVALID_HANDLE;
|
||||||
|
|
||||||
new bool:g_bZSpawnClientInfected[MAXPLAYERS + 1] = {false, ...};
|
new bool:g_bZSpawnClientInfected[MAXPLAYERS + 1] = {false, ...};
|
||||||
|
|
||||||
@ -72,14 +73,29 @@ ZSpawnOnMapStart()
|
|||||||
{
|
{
|
||||||
g_hZSpawnSteamIDCache = SteamidCacheCreate();
|
g_hZSpawnSteamIDCache = SteamidCacheCreate();
|
||||||
}
|
}
|
||||||
|
if (g_hZspawnInfectedSteamIDCache == INVALID_HANDLE)
|
||||||
|
{
|
||||||
|
g_hZspawnInfectedSteamIDCache = SteamidCacheCreate();
|
||||||
|
}
|
||||||
|
|
||||||
// Reset the SteamID cache.
|
// Reset the SteamID cache.
|
||||||
SteamidCacheReset(g_hZSpawnSteamIDCache);
|
SteamidCacheReset(g_hZSpawnSteamIDCache);
|
||||||
|
SteamidCacheReset(g_hZspawnInfectedSteamIDCache);
|
||||||
|
|
||||||
for(new client = 1; client <= MAXPLAYERS; client++)
|
for(new client = 1; client <= MAXPLAYERS; client++)
|
||||||
g_bZSpawnClientInfected[client] = false;
|
g_bZSpawnClientInfected[client] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Client is joining the server.
|
||||||
|
*
|
||||||
|
* @param client The client index.
|
||||||
|
*/
|
||||||
|
ZSpawnOnClientPutInServer(client)
|
||||||
|
{
|
||||||
|
g_bZSpawnClientInfected[client] = SteamidCacheRemoveClient(g_hZspawnInfectedSteamIDCache, client);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Client is leaving the server.
|
* Client is leaving the server.
|
||||||
*
|
*
|
||||||
@ -102,6 +118,10 @@ ZSpawnOnClientDisconnect(client)
|
|||||||
// Add client to the SteamID cache.
|
// Add client to the SteamID cache.
|
||||||
SteamidCacheAddClient(g_hZSpawnSteamIDCache, client);
|
SteamidCacheAddClient(g_hZSpawnSteamIDCache, client);
|
||||||
|
|
||||||
|
// If this client was infected, remember until the next round or until they rejoin.
|
||||||
|
if(g_bZSpawnClientInfected[client])
|
||||||
|
SteamidCacheAddClient(g_hZspawnInfectedSteamIDCache, client);
|
||||||
|
|
||||||
g_bZSpawnClientInfected[client] = false;
|
g_bZSpawnClientInfected[client] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,6 +230,7 @@ ZSpawnOnRoundStart()
|
|||||||
{
|
{
|
||||||
// Reset the SteamID cache.
|
// Reset the SteamID cache.
|
||||||
SteamidCacheReset(g_hZSpawnSteamIDCache);
|
SteamidCacheReset(g_hZSpawnSteamIDCache);
|
||||||
|
SteamidCacheReset(g_hZspawnInfectedSteamIDCache);
|
||||||
|
|
||||||
for(new client = 1; client <= MAXPLAYERS; client++)
|
for(new client = 1; client <= MAXPLAYERS; client++)
|
||||||
g_bZSpawnClientInfected[client] = false;
|
g_bZSpawnClientInfected[client] = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user