From 5b9f8d364d03560d3b52278b5a442ba955f4b6ee Mon Sep 17 00:00:00 2001 From: Greyscale Date: Thu, 16 Apr 2009 05:30:26 +0200 Subject: [PATCH] Removed antistick force cvar, removed more tHandle defines, moved respawn to its own module, moved market menu send function to markethandler.inc, fixed some run-on timers in zhp and spawn protect --- src/zombiereloaded.sp | 11 ++- src/zr/antistick.inc | 6 +- src/zr/commands.inc | 2 +- src/zr/cvars.inc | 6 +- src/zr/event.inc | 38 +++----- src/zr/menu.inc | 2 +- src/zr/overlays.inc | 6 +- src/zr/respawn.inc | 144 +++++++++++++++++++++++++++++++ src/zr/sayhooks.inc | 65 +------------- src/zr/spawnprotect.inc | 54 ++++++++---- src/zr/translation.inc | 3 +- src/zr/weapons/markethandler.inc | 51 ++++++++++- src/zr/zhp.inc | 34 ++++++++ src/zr/zombie.inc | 57 +----------- src/zr/zombiereloaded.inc | 16 +--- 15 files changed, 308 insertions(+), 187 deletions(-) create mode 100644 src/zr/respawn.inc diff --git a/src/zombiereloaded.sp b/src/zombiereloaded.sp index 7e9ce4c..053f5bf 100644 --- a/src/zombiereloaded.sp +++ b/src/zombiereloaded.sp @@ -25,8 +25,13 @@ #include "zr/ambience" #include "zr/models" #include "zr/overlays" + +// Class system #include "zr/playerclasses/playerclasses" + +// Antistick #include "zr/antistick" + #include "zr/anticamp" #include "zr/teleport" #include "zr/zombie" @@ -45,6 +50,9 @@ // Spawn protect #include "zr/spawnprotect" +// Respawn +#include "zr/respawn" + // ZHP #include "zr/zhp" @@ -173,12 +181,11 @@ public OnClientPutInServer(client) gBlockMotherInfect[client] = false; gKilledByWorld[client] = false; - bZVision[client] = !IsFakeClient(client); - // Forward event to modules. ClassClientInit(client); WeaponsClientInit(client); SpawnProtectClientInit(client); + RespawnClientInit(client); ZHPClientInit(client); if (!IsFakeClient(client)) AmbienceStart(client); diff --git a/src/zr/antistick.inc b/src/zr/antistick.inc index 7071189..9336feb 100644 --- a/src/zr/antistick.inc +++ b/src/zr/antistick.inc @@ -62,8 +62,7 @@ AntiStickIsStuck(client) GetClientAbsOrigin(client, clientloc); // x = client index. - new maxplayers = GetMaxClients(); - for (new x = 1; x <= maxplayers; x++) + for (new x = 1; x <= MaxClients; x++) { // Validate player is in-game, alive, and isn't the player being checked. ('client') if (!IsClientInGame(x) || !IsPlayerAlive(x) || x == client) @@ -104,8 +103,7 @@ AntiStickIsStuck(client) public Action:AntiStickTimer(Handle:timer) { // x = client index - new maxplayers = GetMaxClients(); - for (new x = 1; x <= maxplayers; x++) + for (new x = 1; x <= MaxClients; x++) { // Validate player is in-game and alive. if (!IsClientInGame(x) || !IsPlayerAlive(x)) diff --git a/src/zr/commands.inc b/src/zr/commands.inc index 2ac5b99..0573ef5 100644 --- a/src/zr/commands.inc +++ b/src/zr/commands.inc @@ -128,7 +128,7 @@ public Action:Command_Respawn(client, argc) ZR_LogMessageFormatted(targets[x], "admin commands", "spawn", "\"%s\" spawned player \"%s\".", true, client_name, target_name); } - RespawnPlayer(targets[x]); + RespawnSpawnClient(targets[x]); } } diff --git a/src/zr/cvars.inc b/src/zr/cvars.inc index 11cb558..ad44cf8 100644 --- a/src/zr/cvars.inc +++ b/src/zr/cvars.inc @@ -50,7 +50,7 @@ enum ZRSettings Handle:CVAR_MOTHER_ZOMBIE_RATIO, Handle:CVAR_MOTHER_ZOMBIE_RESPAWN, Handle:CVAR_RESPAWN, - Handle:CVAR_RESPAWN_TEAM, + Handle:CVAR_RESPAWN_ZOMBIE, Handle:CVAR_RESPAWN_DELAY, Handle:CVAR_SUICIDE_ZOMBIE, Handle:CVAR_SUICIDE_HUMAN, @@ -88,7 +88,6 @@ enum ZRSettings Handle:CVAR_INFECT_SHAKE_AMP, Handle:CVAR_INFECT_SHAKE_FREQUENCY, Handle:CVAR_INFECT_SHAKE_DURATION, - Handle:CVAR_INFECT_ANTISTICK_FORCE, Handle:CVAR_ANTICAMP, Handle:CVAR_ANTICAMP_UPDATE_INTERVAL, Handle:CVAR_ANTICAMP_ECHO @@ -140,7 +139,7 @@ CreateCvars() gCvars[CVAR_MOTHER_ZOMBIE_RATIO] = CreateConVar("zr_mother_zombie_ratio", "5", "For every 'x' number of humans, there will be 1 zombie (0: Always only 1 mother zombie)"); gCvars[CVAR_MOTHER_ZOMBIE_RESPAWN] = CreateConVar("zr_mother_zombie_respawn", "0", "First zombie(s) will be teleported back to spawn when infected (0: Disable)"); gCvars[CVAR_RESPAWN] = CreateConVar("zr_respawn", "0", "When player is killed, player will respawn"); - gCvars[CVAR_RESPAWN_TEAM] = CreateConVar("zr_respawn_team", "zombie", "Which team to respawn player as (Choices: zombie, human)"); + gCvars[CVAR_RESPAWN_ZOMBIE] = CreateConVar("zr_respawn_zombie", "1", "Respawn player as zombie (0: Respawn as human)"); gCvars[CVAR_RESPAWN_DELAY] = CreateConVar("zr_respawn_delay", "1", "How long to wait after death to respawn, in seconds"); gCvars[CVAR_SUICIDE_ZOMBIE] = CreateConVar("zr_suicide_zombie", "1", "Stops zombies from suiciding"); gCvars[CVAR_SUICIDE_HUMAN] = CreateConVar("zr_suicide_human", "1", "Stops humans from suiciding"); @@ -178,7 +177,6 @@ CreateCvars() gCvars[CVAR_INFECT_SHAKE_AMP] = CreateConVar("zr_infect_shake_amp", "15.0", "Amplitude of the shake, when zr_infect_shake is 1"); gCvars[CVAR_INFECT_SHAKE_FREQUENCY] = CreateConVar("zr_infect_shake_frequency", "1.0", "Frequency of the shake, when zr_infect_shake is 1"); gCvars[CVAR_INFECT_SHAKE_DURATION] = CreateConVar("zr_infect_shake_duration", "5.0", "Duration of the shake, when zr_infect_shake is 1"); - gCvars[CVAR_INFECT_ANTISTICK_FORCE] = CreateConVar("zr_infect_antistick_force", "-160.0", "Force to push away players from eachother on infection. Negative values push away, positive values pull. (0: Disable)"); gCvars[CVAR_ANTICAMP] = CreateConVar("zr_anticamp", "1", "Enables or disables hurt volumes for preventing unfair camping. (0: Disable)"); gCvars[CVAR_ANTICAMP_UPDATE_INTERVAL] = CreateConVar("zr_anticamp_update_interval", "1", "How often to update player locations (in seconds)."); gCvars[CVAR_ANTICAMP_ECHO] = CreateConVar("zr_anticamp_echo", "1", "Log kills done by anticamp to admin chat."); diff --git a/src/zr/event.inc b/src/zr/event.inc index aaf5c93..7a8439d 100644 --- a/src/zr/event.inc +++ b/src/zr/event.inc @@ -94,8 +94,7 @@ public Action:RoundEnd(Handle:event, const String:name[], bool:dontBroadcast) zombieSpawned = false; - new maxplayers = GetMaxClients(); - for (new x = 1; x<= maxplayers; x++) + for (new x = 1; x<= MaxClients; x++) { if (!IsClientInGame(x)) { @@ -150,11 +149,6 @@ public Action:PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) for (new x = 0; x < MAXTIMERS; x++) { - if (x == TRESPAWN) - { - continue; - } - if (tHandles[index][x] != INVALID_HANDLE) { KillTimer(tHandles[index][x]); @@ -169,6 +163,11 @@ public Action:PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) SetPlayerFOV(index, 90); ClientCommand(index, "r_screenoverlay \"\""); + // Forward event to modules. + SpawnProtectOnClientSpawn(index); + RespawnOnClientSpawn(index); + ZHPOnClientSpawn(index); + // Stop here if client isn't on a team. new team = GetClientTeam(index); if (team != CS_TEAM_T && team != CS_TEAM_CT) @@ -202,7 +201,6 @@ public Action:PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) // Forward event to modules. ClassOnClientSpawn(index); - SpawnProtectPlayerSpawn(index); ZTeleClientSpawned(index); ZR_PrintToChat(index, "!zmenu reminder"); @@ -227,7 +225,7 @@ public Action:PlayerHurt(Handle:event, const String:name[], bool:dontBroadcast) if (IsPlayerHuman(index) && IsPlayerZombie(attacker)) { // Check if spawn protection is disabled and the weapon is a knife. - if (!pProtect[index] && StrEqual(weapon, "knife")) + if (!pSpawnProtect[index] && StrEqual(weapon, "knife")) { InfectPlayer(index, attacker); } @@ -321,15 +319,8 @@ public Action:PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast) AddPlayerScore(attacker, bonus); } - // Check if the player was killed by world damage. - if (!ZRIsValidClient(attacker)) - { - gKilledByWorld[index] = true; - } - else - { - gKilledByWorld[index] = false; - } + // Set gKilledByWorld to true if attacker is not a valid client. + gKilledByWorld[index] = !ZRIsValidClient(attacker); } // Kill various timers. @@ -341,18 +332,13 @@ public Action:PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast) tHandles[index][x] = INVALID_HANDLE; } } - - // Create respawn timer if enabled. - new bool:respawn = GetConVarBool(gCvars[CVAR_RESPAWN]); - if (respawn) - { - new Float:delay = GetConVarFloat(gCvars[CVAR_RESPAWN_DELAY]); - tHandles[index][TRESPAWN] = CreateTimer(delay, RespawnTimer, index, TIMER_FLAG_NO_MAPCHANGE); - } } // Forward event to modules. ClassOnClientDeath(index); + SpawnProtectOnClientDeath(index); + RespawnOnClientDeath(index); + ZHPOnClientDeath(index); new ZTeam:team = IsRoundOver(); RoundWin(team); diff --git a/src/zr/menu.inc b/src/zr/menu.inc index ea96458..70a96df 100644 --- a/src/zr/menu.inc +++ b/src/zr/menu.inc @@ -67,7 +67,7 @@ public MainMenuHandle(Handle:menu_main, MenuAction:action, client, slot) } case 2: { - if (!ZMarket(client)) + if (!ZMarketSend(client)) { MainMenu(client); } diff --git a/src/zr/overlays.inc b/src/zr/overlays.inc index eee81fc..0324c60 100644 --- a/src/zr/overlays.inc +++ b/src/zr/overlays.inc @@ -21,8 +21,7 @@ ShowOverlays(Float:time, ZTeam:winner) GetConVarString(gCvars[CVAR_OVERLAYS_ZOMBIE], overlay, sizeof(overlay)); } - new maxplayers = GetMaxClients(); - for (new x = 1; x <= maxplayers; x++) + for (new x = 1; x <= MaxClients; x++) { if (IsClientInGame(x)) { @@ -36,8 +35,7 @@ ShowOverlays(Float:time, ZTeam:winner) public Action:KillOverlays(Handle:timer) { - new maxplayers = GetMaxClients(); - for (new x = 1; x <= maxplayers; x++) + for (new x = 1; x <= MaxClients; x++) { if (IsClientInGame(x)) { diff --git a/src/zr/respawn.inc b/src/zr/respawn.inc new file mode 100644 index 0000000..3498bbe --- /dev/null +++ b/src/zr/respawn.inc @@ -0,0 +1,144 @@ +/* + * ============================================================================ + * + * Zombie:Reloaded + * + * File: respawn.inc + * Description: Players come back to life + * + * ============================================================================ + */ + +/** + * Array for storing respawn timer handles per client. + */ +new Handle:tRespawn[MAXPLAYERS + 1]; + +/** + * Client is joining the server. + */ +RespawnClientInit(client) +{ + // Reset timer handle. + tRespawn[client] = INVALID_HANDLE; + + // Init gKilledByWorld for client. + gKilledByWorld[client] = false; +} + +/** + * Client is spawning into the game. + * + * @param client The client index. + */ +RespawnOnClientSpawn(client) +{ + // If timer is running, kill it. + if (tRespawn[client] != INVALID_HANDLE) + { + KillTimer(tRespawn[client]); + } + + // Reset timer handle. + tRespawn[client] = INVALID_HANDLE; +} + +/** + * Client has been killed. + * + * @param client The client index. + */ +RespawnOnClientDeath(client) +{ + // If timer is running, kill it. + if (tRespawn[client] != INVALID_HANDLE) + { + KillTimer(tRespawn[client]); + } + + // If respawn is disabled, stop here. + new bool:respawn = GetConVarBool(gCvars[CVAR_RESPAWN]); + if (!respawn) + { + return; + } + + // Start respawn timer. + new Float:delay = GetConVarFloat(gCvars[CVAR_RESPAWN_DELAY]); + tRespawn[client] = CreateTimer(delay, RespawnTimer, client, TIMER_FLAG_NO_MAPCHANGE); +} + +/** + * Spawns a player into the round. + * + * @param client The client index. + */ +RespawnSpawnClient(client) +{ + // If client isn't in-game, then stop. + if (!IsClientInGame(client)) + { + return; + } + + // Spawn player. + CS_RespawnPlayer(client); + + // Stop here if the first zombie hasn't spawned yet. + if (!zombieSpawned) + { + return; + } + + // Get respawn team. + new bool:respawn_zombie = GetConVarBool(gCvars[CVAR_RESPAWN_ZOMBIE]); + + // Get suicide respawn cvar + if (respawn_zombie) + { + InfectPlayer(client); + return; + } + + if (GetConVarBool(gCvars[CVAR_SUICIDE_WORLD_DAMAGE]) && gKilledByWorld[client]) + { + InfectPlayer(client); + gKilledByWorld[client] = false; + } +} + +/** + * Timer callback, respawns a player. + * + * @param timer The timer handle. + * @param client The client index. + */ +public Action:RespawnTimer(Handle:timer, any:client) +{ + // Reset timer handle. + tRespawn[client] = INVALID_HANDLE; + + // If client isn't in-game, then stop. + if (!IsClientInGame(client)) + { + return; + } + + // If player isn't alive, then stop. + if (!IsPlayerAlive(client)) + { + return; + } + + // Get client team. + new team = GetClientTeam(client); + + // If player isn't on a team, then stop. + if (team != CS_TEAM_T && team != CS_TEAM_CT) + { + return; + } + + // Spawn player. + RespawnSpawnClient(client); +} \ No newline at end of file diff --git a/src/zr/sayhooks.inc b/src/zr/sayhooks.inc index 64665b2..0817479 100644 --- a/src/zr/sayhooks.inc +++ b/src/zr/sayhooks.inc @@ -42,7 +42,8 @@ public Action:SayCommand(client, argc) else if (StrEqual(args, "!zmarket", false)) { - ZMarket(client); + // Send market menu. + ZMarketSend(client); } else if (StrEqual(args, "!zspawn", false)) @@ -78,66 +79,6 @@ public Action:SayCommand(client, argc) return Plugin_Continue; } -/*bool:ZClass(client) -{ - new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]); - if (!classes) - { - ZR_PrintToChat(client, "Feature is disabled"); - - return false; - } - - new bool:randomclass = GetConVarBool(gCvars[CVAR_CLASSES_RANDOM]); - if (randomclass) - { - ZR_PrintToChat(client, "Random class is enabled"); - - return false; - } - - ClassMenu(client); - - return true; -}*/ - -bool:ZMarket(client) -{ - if (!market) - { - ZR_PrintToChat(client, "Feature is disabled"); - - return false; - } - - if (!IsPlayerAlive(client)) - { - ZR_PrintToChat(client, "Must be alive"); - - return false; - } - - new bool:buyzone = GetConVarBool(gCvars[CVAR_ZMARKET_BUYZONE]); - if (!IsClientInBuyZone(client) && buyzone) - { - ZR_PrintCenterText(client, "Market out of buyzone"); - - return false; - } - - SetGlobalTransTarget(client); - - decl String:title[64]; - decl String:rebuy[64]; - - Format(title, sizeof(title), "%t\n ", "Market title"); - Format(rebuy, sizeof(rebuy), "%t\n ", "Market rebuy"); - - Market_Send(client, title, rebuy); - - return true; -} - ZSpawn(client) { new bool:spawn = GetConVarBool(gCvars[CVAR_ZSPAWN]); @@ -163,7 +104,7 @@ ZSpawn(client) return; } - RespawnPlayer(client); + RespawnSpawnClient(client); AddPlayerToList(client); } \ No newline at end of file diff --git a/src/zr/spawnprotect.inc b/src/zr/spawnprotect.inc index 3e796d8..bcc9921 100644 --- a/src/zr/spawnprotect.inc +++ b/src/zr/spawnprotect.inc @@ -36,15 +36,31 @@ SpawnProtectClientInit(client) } /** - * Player is spawning into the game. + * Client is spawning into the game. * * @param client The client index. */ -SpawnProtectPlayerSpawn(client) +SpawnProtectOnClientSpawn(client) { // Disable spawn protection on client. pSpawnProtect[client] = false; + // If timer is currently running, kill it. + if (tSpawnProtect[client] != INVALID_HANDLE) + { + KillTimer(tSpawnProtect[client]); + } + + // Reset timer handle. + tSpawnProtect[client] = INVALID_HANDLE; + + // If client isn't on a team, then stop. + new team = GetClientTeam(client); + if (team != CS_TEAM_T && team != CS_TEAM_CT) + { + return; + } + // If zombie hasn't spawned, then stop. if (!zombieSpawned) { @@ -58,13 +74,10 @@ SpawnProtectPlayerSpawn(client) return; } - // Get respawn team. - decl String:respawnteam[32]; - GetConVarString(gCvars[CVAR_RESPAWN_TEAM], respawnteam, sizeof(respawnteam)); - - // If the respawn team is not set to zombie, and either cvar zr_suicide_world_damage or the client - // wasn't killed by world is false, then continue to protect client. - if (!StrEqual(respawnteam, "zombie", false) && !(GetConVarBool(gCvars[CVAR_SUICIDE_WORLD_DAMAGE]) && gKilledByWorld[client])) + // If player respawns as human, and either cvar zr_suicide_world_damage or the client + // wasn't killed by world is false, then continue on to protect client. + new bool:respawn_zombie = GetConVarBool(gCvars[CVAR_RESPAWN_ZOMBIE]); + if (!respawn_zombie && !(GetConVarBool(gCvars[CVAR_SUICIDE_WORLD_DAMAGE]) && gKilledByWorld[client])) { // Set spawn protect flag on client. pSpawnProtect[client] = true; @@ -83,17 +96,28 @@ SpawnProtectPlayerSpawn(client) // Send time left in a hud message. ZR_HudHint(client, "Spawn Protect", pSpawnProtectTime[client]); - // If timer is currently running, kill it. - if (tSpawnProtect[client] != INVALID_HANDLE) - { - KillTimer(tSpawnProtect[client]); - } - // Start repeating timer. tSpawnProtect[client] = CreateTimer(1.0, SpawnProtectTimer, client, TIMER_FLAG_NO_MAPCHANGE|TIMER_REPEAT); } } +/** + * Client has been killed. + * + * @param client The client index. + */ +SpawnProtectOnClientDeath(client) +{ + // If timer is running, kill it. + if (tSpawnProtect[client] != INVALID_HANDLE) + { + KillTimer(tSpawnProtect[client]); + } + + // Reset timer handle. + tSpawnProtect[client] = INVALID_HANDLE; +} + /** * Timer callback function, countdown for spawn protection. * diff --git a/src/zr/translation.inc b/src/zr/translation.inc index b9a73f4..b3a546c 100644 --- a/src/zr/translation.inc +++ b/src/zr/translation.inc @@ -41,8 +41,7 @@ stock ZR_PrintToChat(client, any:...) PrintToServer(phrase); - new maxplayers = GetMaxClients(); - for (new x = 1; x <= maxplayers; x++) + for (new x = 1; x <= MaxClients; x++) { if (IsClientInGame(x)) { diff --git a/src/zr/weapons/markethandler.inc b/src/zr/weapons/markethandler.inc index a30ec15..f55a754 100644 --- a/src/zr/weapons/markethandler.inc +++ b/src/zr/weapons/markethandler.inc @@ -6,6 +6,55 @@ * ==================== */ +/** + * Sends market menu to client. + * + * @param client The client index. + */ +bool:ZMarketSend(client) +{ + // If market is disabled, then stop. + if (!market) + { + // Tell client market is disabled. + ZR_PrintToChat(client, "Feature is disabled"); + return false; + } + + // If player is dead, then stop. + if (!IsPlayerAlive(client)) + { + // Tell player they must be alive. + ZR_PrintToChat(client, "Must be alive"); + return false; + } + + // Check buyzone cvar to see if client has to be in a buyzone to use. + new bool:buyzone = GetConVarBool(gCvars[CVAR_ZMARKET_BUYZONE]); + if (!IsClientInBuyZone(client) && buyzone) + { + // Tell client they must be in a buyzone. + ZR_PrintCenterText(client, "Market out of buyzone"); + return false; + } + + // Set translate target to client. + SetGlobalTransTarget(client); + + // Format title and rebuy lines. + decl String:title[64]; + decl String:rebuy[64]; + + Format(title, sizeof(title), "%t\n ", "Market title"); + Format(rebuy, sizeof(rebuy), "%t\n ", "Market rebuy"); + + // Send market menu. + Market_Send(client, title, rebuy); + + // Successfully sent the market menu. + return true; +} + /** * (Market) Forward called when a client selects a weapon from the market. * @@ -83,5 +132,5 @@ public Market_PostOnWeaponSelected(client, &bool:allowed) } // Resend market menu. - ZMarket(client); + ZMarketSend(client); } \ No newline at end of file diff --git a/src/zr/zhp.inc b/src/zr/zhp.inc index 6601397..dce4399 100644 --- a/src/zr/zhp.inc +++ b/src/zr/zhp.inc @@ -37,6 +37,40 @@ ZHPClientInit(client) tZHP[client] = INVALID_HANDLE; } +/** + * Client is spawning into the game. + * + * @param client The client index. + */ +ZHPOnClientSpawn(client) +{ + // If timer is running, kill it. + if (tZHP[client] != INVALID_HANDLE) + { + KillTimer(tZHP[client]); + } + + // Reset timer handle. + tZHP[client] = INVALID_HANDLE; +} + +/** + * Client has been killed. + * + * @param client The client index. + */ +ZHPOnClientDeath(client) +{ + // If timer is running, kill it. + if (tZHP[client] != INVALID_HANDLE) + { + KillTimer(tZHP[client]); + } + + // Reset timer handle. + tZHP[client] = INVALID_HANDLE; +} + /** * Toggle ZHP on a client. * diff --git a/src/zr/zombie.inc b/src/zr/zombie.inc index 3b4e356..70e163a 100644 --- a/src/zr/zombie.inc +++ b/src/zr/zombie.inc @@ -46,7 +46,6 @@ public Action:Command_NightVision(client, argc) return; } - //bZVisionOn[client] = !bZVisionOn[client]; bClientOverlayOn[client] = !bClientOverlayOn[client]; decl String:overlay[256]; @@ -379,8 +378,7 @@ PlayerLeft(client) new Handle:aClients = CreateArray(); - new maxplayers = GetMaxClients(); - for (new x = 1; x <= maxplayers; x++) + for (new x = 1; x <= MaxClients; x++) { if (!IsClientInGame(x) || !IsPlayerAlive(x) || client == x || GetClientTeam(x) != CS_TEAM_CT || gBlockMotherInfect[x]) { @@ -408,8 +406,7 @@ GetZTeamCount(ZTeam:team) { new count = 0; - new maxplayers = GetMaxClients(); - for (new x = 1; x <= maxplayers; x++) + for (new x = 1; x <= MaxClients; x++) { if (!IsClientInGame(x) || !IsPlayerAlive(x)) { @@ -431,8 +428,7 @@ ZTeam:IsRoundOver() new bool:zombies = false; new bool:humans = false; - new maxplayers = GetMaxClients(); - for (new x = 1; x <= maxplayers; x++) + for (new x = 1; x <= MaxClients; x++) { if (!IsClientInGame(x) || !IsPlayerAlive(x)) { @@ -482,8 +478,7 @@ BalanceTeams() new count = 0; new cPlayers[MAXPLAYERS]; - new maxplayers = GetMaxClients(); - for (new x = 1; x <= maxplayers; x++) + for (new x = 1; x <= MaxClients; x++) { if (!IsClientInGame(x) || GetClientTeam(x) <= 1) { @@ -554,50 +549,6 @@ public Action:ZombieMoanTimer(Handle:timer, any:index) return Plugin_Continue; } -RespawnPlayer(client) -{ - if (!IsClientInGame(client)) - { - return; - } - - CS_RespawnPlayer(client); - - if (!zombieSpawned) - { - return; - } - - decl String:team[32]; - GetConVarString(gCvars[CVAR_RESPAWN_TEAM], team, sizeof(team)); - - if (StrEqual(team, "zombie", false)) - { - InfectPlayer(client); - return; - } - - if (GetConVarBool(gCvars[CVAR_SUICIDE_WORLD_DAMAGE]) && gKilledByWorld[client]) - { - InfectPlayer(client); - gKilledByWorld[client] = false; - } -} - -public Action:RespawnTimer(Handle:timer, any:index) -{ - new team = GetClientTeam(index); - if (!IsClientInGame(index) || IsPlayerAlive(index) || team != CS_TEAM_T && team != CS_TEAM_CT) - { - tHandles[index][TRESPAWN] = INVALID_HANDLE; - return; - } - - RespawnPlayer(index); - - tHandles[index][TRESPAWN] = INVALID_HANDLE; -} - public Action:RoundOver(Handle:timer) { tRound = INVALID_HANDLE; diff --git a/src/zr/zombiereloaded.inc b/src/zr/zombiereloaded.inc index 1af1c1f..438ecb7 100644 --- a/src/zr/zombiereloaded.inc +++ b/src/zr/zombiereloaded.inc @@ -70,11 +70,7 @@ new bool:zombieSpawned; new bool:motherZombie[MAXPLAYERS + 1]; new bool:gZombie[MAXPLAYERS + 1]; new bool:gBlockMotherInfect[MAXPLAYERS + 1]; -new bool:bZVision[MAXPLAYERS + 1]; -//new bool:bZVisionOn[MAXPLAYERS + 1]; -//new String:ZVisionOverlay[MAXPLAYERS + 1][PLATFORM_MAX_PATH]; -new bool:pProtect[MAXPLAYERS + 1]; -new bool:gKilledByWorld[MAXPLAYERS + 1] = {false, ...}; +new bool:gKilledByWorld[MAXPLAYERS + 1]; new Float:spawnLoc[MAXPLAYERS + 1][3]; new Float:bufferLoc[MAXPLAYERS + 1][3]; @@ -92,13 +88,10 @@ new Handle:tInfect = INVALID_HANDLE; new Handle:pList = INVALID_HANDLE; -#define MAXTIMERS 5 +#define MAXTIMERS 2 #define TMOAN 0 -#define TREGEN 1 -#define TTELE 2 -#define TRESPAWN 3 -#define TZVISION 4 +#define TTELE 1 new Handle:tHandles[MAXPLAYERS + 1][MAXTIMERS]; @@ -178,8 +171,7 @@ RefreshList() pList = CreateArray(); - new maxplayers = GetMaxClients(); - for (new x = 1; x <= maxplayers; x++) + for (new x = 1; x <= MaxClients; x++) { if (IsClientInGame(x) && IsPlayerAlive(x)) {