fixed zspawn exploit (spawn as human after infection by suiciding and zspawning)
This commit is contained in:
parent
3afde85238
commit
db0de91a18
@ -801,6 +801,7 @@ InfectHumanToZombie(client, attacker = -1, bool:motherinfect = false, bool:respa
|
|||||||
ZHPOnClientInfected(client);
|
ZHPOnClientInfected(client);
|
||||||
APIOnClientInfected(client, attacker, motherinfect, respawnoverride, respawn);
|
APIOnClientInfected(client, attacker, motherinfect, respawnoverride, respawn);
|
||||||
ImmunityOnClientInfected(client);
|
ImmunityOnClientInfected(client);
|
||||||
|
ZSpawnOnClientInfected(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -867,6 +868,7 @@ InfectZombieToHuman(client, bool:respawn = false, bool:protect = false)
|
|||||||
SEffectsOnClientHuman(client);
|
SEffectsOnClientHuman(client);
|
||||||
APIOnClientHumanPost(client, respawn, protect);
|
APIOnClientHumanPost(client, respawn, protect);
|
||||||
ImmunityOnClientHuman(client);
|
ImmunityOnClientHuman(client);
|
||||||
|
ZSpawnOnClientHuman(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -35,6 +35,8 @@ new Handle:tZSpawn = INVALID_HANDLE;
|
|||||||
*/
|
*/
|
||||||
new Handle:g_hZSpawnSteamIDCache = INVALID_HANDLE;
|
new Handle:g_hZSpawnSteamIDCache = INVALID_HANDLE;
|
||||||
|
|
||||||
|
new bool:g_bZSpawnClientInfected[MAXPLAYERS + 1] = {false, ...};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create commands specific to ZSpawn.
|
* Create commands specific to ZSpawn.
|
||||||
*/
|
*/
|
||||||
@ -63,6 +65,9 @@ ZSpawnOnMapStart()
|
|||||||
|
|
||||||
// Reset the SteamID cache.
|
// Reset the SteamID cache.
|
||||||
SteamidCacheReset(g_hZSpawnSteamIDCache);
|
SteamidCacheReset(g_hZSpawnSteamIDCache);
|
||||||
|
|
||||||
|
for(new client = 1; client <= MAXPLAYERS; client++)
|
||||||
|
g_bZSpawnClientInfected[client] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -86,6 +91,8 @@ ZSpawnOnClientDisconnect(client)
|
|||||||
|
|
||||||
// Add client to the SteamID cache.
|
// Add client to the SteamID cache.
|
||||||
SteamidCacheAddClient(g_hZSpawnSteamIDCache, client);
|
SteamidCacheAddClient(g_hZSpawnSteamIDCache, client);
|
||||||
|
|
||||||
|
g_bZSpawnClientInfected[client] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -99,6 +106,26 @@ ZSpawnOnClientDeath(client)
|
|||||||
SteamidCacheAddClient(g_hZSpawnSteamIDCache, client);
|
SteamidCacheAddClient(g_hZSpawnSteamIDCache, client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Client has been infected.
|
||||||
|
*
|
||||||
|
* @param client The client index.
|
||||||
|
*/
|
||||||
|
ZSpawnOnClientInfected(client)
|
||||||
|
{
|
||||||
|
g_bZSpawnClientInfected[client] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Client was turned back into a human.
|
||||||
|
*
|
||||||
|
* @param client The client index.
|
||||||
|
*/
|
||||||
|
ZSpawnOnClientHuman(client)
|
||||||
|
{
|
||||||
|
g_bZSpawnClientInfected[client] = false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The round is starting.
|
* The round is starting.
|
||||||
*/
|
*/
|
||||||
@ -107,6 +134,9 @@ ZSpawnOnRoundStart()
|
|||||||
// Reset the SteamID cache.
|
// Reset the SteamID cache.
|
||||||
SteamidCacheReset(g_hZSpawnSteamIDCache);
|
SteamidCacheReset(g_hZSpawnSteamIDCache);
|
||||||
|
|
||||||
|
for(new client = 1; client <= MAXPLAYERS; client++)
|
||||||
|
g_bZSpawnClientInfected[client] = false;
|
||||||
|
|
||||||
// If zspawn timer is running, then kill it.
|
// If zspawn timer is running, then kill it.
|
||||||
if (tZSpawn != INVALID_HANDLE)
|
if (tZSpawn != INVALID_HANDLE)
|
||||||
{
|
{
|
||||||
@ -246,7 +276,11 @@ bool:ZSpawnClient(client, bool:force = false, bool:zombie = false)
|
|||||||
}
|
}
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
teamzombie = false;
|
// Client has been infected this round, respawning as a zombie
|
||||||
|
if(g_bZSpawnClientInfected[client])
|
||||||
|
teamzombie = true;
|
||||||
|
else
|
||||||
|
teamzombie = false;
|
||||||
}
|
}
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user