ZSpawn: Add auto zspawn.
This commit is contained in:
		| @@ -719,6 +719,10 @@ zr_vol_trigger_interval "1.0" | |||||||
| // Default: "1" | // Default: "1" | ||||||
| zr_zspawn "1" | zr_zspawn "1" | ||||||
|  |  | ||||||
|  | // Should zspawn spawn joining players? | ||||||
|  | // Default: "1" | ||||||
|  | zr_zspawn_auto "1" | ||||||
|  |  | ||||||
| // Override spawn team when spawning by means of ZSpawn. | // Override spawn team when spawning by means of ZSpawn. | ||||||
| // Default: "1" | // Default: "1" | ||||||
| zr_zspawn_team_override "1" | zr_zspawn_team_override "1" | ||||||
|   | |||||||
| @@ -719,6 +719,10 @@ zr_vol_trigger_interval "1.0" | |||||||
| // Default: "1" | // Default: "1" | ||||||
| zr_zspawn "1" | zr_zspawn "1" | ||||||
|  |  | ||||||
|  | // Should zspawn spawn joining players? | ||||||
|  | // Default: "1" | ||||||
|  | zr_zspawn_auto "1" | ||||||
|  |  | ||||||
| // Override spawn team when spawning by means of ZSpawn. | // Override spawn team when spawning by means of ZSpawn. | ||||||
| // Default: "1" | // Default: "1" | ||||||
| zr_zspawn_team_override "1" | zr_zspawn_team_override "1" | ||||||
|   | |||||||
| @@ -174,6 +174,7 @@ enum CvarsList | |||||||
|     Handle:CVAR_VOL_UPDATE_INTERVAL, |     Handle:CVAR_VOL_UPDATE_INTERVAL, | ||||||
|     Handle:CVAR_VOL_TRIGGER_INTERVAL, |     Handle:CVAR_VOL_TRIGGER_INTERVAL, | ||||||
|     Handle:CVAR_ZSPAWN, |     Handle:CVAR_ZSPAWN, | ||||||
|  |     Handle:CVAR_ZSPAWN_AUTO, | ||||||
|     Handle:CVAR_ZSPAWN_TEAM_OVERRIDE, |     Handle:CVAR_ZSPAWN_TEAM_OVERRIDE, | ||||||
|     Handle:CVAR_ZSPAWN_TEAM_ZOMBIE, |     Handle:CVAR_ZSPAWN_TEAM_ZOMBIE, | ||||||
|     Handle:CVAR_ZSPAWN_BLOCK_REJOIN, |     Handle:CVAR_ZSPAWN_BLOCK_REJOIN, | ||||||
| @@ -498,6 +499,7 @@ CvarsCreate() | |||||||
|     // ZSpawn (module) |     // ZSpawn (module) | ||||||
|     // =========================== |     // =========================== | ||||||
|     g_hCvarsList[CVAR_ZSPAWN]                           =    CreateConVar("zr_zspawn",                      "1",        "Allow players to spawn into the game late."); |     g_hCvarsList[CVAR_ZSPAWN]                           =    CreateConVar("zr_zspawn",                      "1",        "Allow players to spawn into the game late."); | ||||||
|  |     g_hCvarsList[CVAR_ZSPAWN_AUTO]                      =    CreateConVar("zr_zspawn_auto",                 "1",        "Should zspawn spawn joining players?"); | ||||||
|  |  | ||||||
|     g_hCvarsList[CVAR_ZSPAWN_TEAM_OVERRIDE]             =    CreateConVar("zr_zspawn_team_override",        "1",        "Override spawn team when spawning by means of ZSpawn."); |     g_hCvarsList[CVAR_ZSPAWN_TEAM_OVERRIDE]             =    CreateConVar("zr_zspawn_team_override",        "1",        "Override spawn team when spawning by means of ZSpawn."); | ||||||
|     g_hCvarsList[CVAR_ZSPAWN_TEAM_ZOMBIE]               =    CreateConVar("zr_zspawn_team_zombie",          "0",        "Spawn player on zombie team when spawning by means of ZSpawn. [Dependency: zr_zspawn_team_override | Override: zr_respawn_team_zombie]"); |     g_hCvarsList[CVAR_ZSPAWN_TEAM_ZOMBIE]               =    CreateConVar("zr_zspawn_team_zombie",          "0",        "Spawn player on zombie team when spawning by means of ZSpawn. [Dependency: zr_zspawn_team_override | Override: zr_respawn_team_zombie]"); | ||||||
|   | |||||||
| @@ -54,6 +54,9 @@ EventHook(bool:unhook = false) | |||||||
|         UnhookEvent("player_death", EventPlayerDeath); |         UnhookEvent("player_death", EventPlayerDeath); | ||||||
|         UnhookEvent("player_jump", EventPlayerJump); |         UnhookEvent("player_jump", EventPlayerJump); | ||||||
|  |  | ||||||
|  |         // Unhook all listeners. | ||||||
|  |         RemoveCommandListener(CommandPlayerClass, "joinclass"); | ||||||
|  |  | ||||||
|         // Stop after unhooking events. |         // Stop after unhooking events. | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
| @@ -67,6 +70,9 @@ EventHook(bool:unhook = false) | |||||||
|     HookEvent("player_hurt", EventPlayerHurt); |     HookEvent("player_hurt", EventPlayerHurt); | ||||||
|     HookEvent("player_death", EventPlayerDeath); |     HookEvent("player_death", EventPlayerDeath); | ||||||
|     HookEvent("player_jump", EventPlayerJump); |     HookEvent("player_jump", EventPlayerJump); | ||||||
|  |  | ||||||
|  |     // Hook all listeners used by plugin. | ||||||
|  |     AddCommandListener(CommandPlayerClass, "joinclass"); | ||||||
| } | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -148,6 +154,12 @@ public Action:EventPlayerTeam(Handle:event, const String:name[], bool:dontBroadc | |||||||
|     InfectOnClientTeam(index, team); |     InfectOnClientTeam(index, team); | ||||||
|     ImmunityOnClientTeam(index); |     ImmunityOnClientTeam(index); | ||||||
|  |  | ||||||
|  |     // Bots dont call `joinclass`. So call here. | ||||||
|  |     if (IsFakeClient(index)) | ||||||
|  |     { | ||||||
|  |         ZSpawnOnClientTeam(index); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     return Plugin_Handled; |     return Plugin_Handled; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -317,3 +329,20 @@ public Action:EventPlayerJumpPost(Handle:timer, any:client) | |||||||
|     // Forward event to modules. |     // Forward event to modules. | ||||||
|     JumpBoostOnClientJumpPost(client); |     JumpBoostOnClientJumpPost(client); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Command callback (joinclass) | ||||||
|  |  * Client is joining a class. | ||||||
|  |  * | ||||||
|  |  * @param client    The client. | ||||||
|  |  * @param command   The command performed. | ||||||
|  |  * @param argc      The amount of arguments. | ||||||
|  |  */ | ||||||
|  | public Action:CommandPlayerClass(int client, const char[] command, int argc) | ||||||
|  | { | ||||||
|  |     if (IsFakeClient(client)) | ||||||
|  |         return; | ||||||
|  |  | ||||||
|  |     // Forward event to modules. | ||||||
|  |     ZSpawnOnClientTeam(client); | ||||||
|  | } | ||||||
|   | |||||||
| @@ -115,6 +115,31 @@ ZSpawnOnClientDeath(client) | |||||||
|     // Add client to the SteamID cache. |     // Add client to the SteamID cache. | ||||||
|     SteamidCacheAddClient(g_hZSpawnSteamIDCache, client); |     SteamidCacheAddClient(g_hZSpawnSteamIDCache, client); | ||||||
| } | } | ||||||
|  | /** | ||||||
|  |  * Client is joining a team/class. | ||||||
|  |  * | ||||||
|  |  * @param client    The client index. | ||||||
|  |  */ | ||||||
|  | ZSpawnOnClientTeam(client) | ||||||
|  | { | ||||||
|  |     // Is auto zspawn enabled and is the client death? | ||||||
|  |     new bool:autozspawn = GetConVarBool(g_hCvarsList[CVAR_ZSPAWN_AUTO]); | ||||||
|  |     if (autozspawn && !IsPlayerAlive(client)) | ||||||
|  |     { | ||||||
|  |         // Get our zspawn condition. | ||||||
|  |         new ZSpawnCondition:condition = GetZSpawnCondition(); | ||||||
|  |  | ||||||
|  |         switch(condition) | ||||||
|  |         { | ||||||
|  |             case ZSpawn_Human, ZSpawn_Zombie: | ||||||
|  |             { | ||||||
|  |                 // Respawn client. | ||||||
|  |                 CS_RespawnPlayer(client); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Client is spawning into the game. |  * Client is spawning into the game. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user