View Single Post
Author Message
Senior Member
Join Date: Jan 2009
Old 01-28-2009 , 22:03   [L4D] Director Controller (All4Dead)
Reply With Quote #1

What does it do?

Ever thought that the other team were just that little bit too good? Want to experience what a real panic event feels like? Want a return to the old boss logic but want to make sure it spawns the same bosses for each team? Or are there just not enough zombies in your life?

This plugin has the answer. All4Dead allows admins (who are permitted to use cheats) to control the director without actually having to turn sv_cheats on. It enables the following commands in game:
  • Force the director to spawn a tank
  • Force the director to spawn a witch
  • Force the director to trigger a panic event
  • Force the director to keep triggering panic events until you tell it to stop
  • Delay the rescue vehicle indefinitely
  • Add more zombies to the horde
  • Spawn any infected you like
  • Spawn any weapon you like
  • Spawn any item you like
  • Enable all bot teams
  • Use the old versus boss spawning logic (and ensure consistency of boss spawns between teams)
How do I use it?

The plugin has now been seperated into two different versions for each version of Left4dead, All4Dead and All4Dead2. All4dead will work with both games while All4Dead2 will only work properly with Left4Dead2.

The plugin is controlled either from the console by calling the various commands or by using the menu system which is attached to the sm_admin menu. For completeness the list of available commands are:
  • a4d_add_zombies
  • a4d_continuous_bosses
  • a4d_delay_rescue
  • a4d_enable_all_bot_teams
  • a4d_enable_auto_placement
  • a4d_enable_notifications
  • a4d_disable_new_versus_logic
  • a4d_force_panic
  • a4d_force_tank
  • a4d_force_witch
  • a4d_panic_forever
  • a4d_reset_to_defaults
  • a4d_spawn_infected
  • a4d_spawn_uinfected
  • a4d_spawn_weapon
  • a4d_spawn_item
You can only use the various commands if you are in an admin group that permits you to use cheats on that server. If you are familiar with the existing director commands these are intended to be very similar to make them easier to remember. Some commands are only available in all4dead and not in all4dead2 and visa versa.

Important note for people downloading All4Dead2

You need to download the extension SDKHooks for this mod to work properly. You do not need this extension for All4Dead.

This is now required to spawn uncommon infected. Interesting things will no doubt happen if you try to run the plugin without it.

How do I configure this beast?

It does come with some ConVars as well for your configuration pleasure:
  • a4d_automatic_placement: Whether or not we ask the director to place things we spawn.
  • a4d_notify_players: Whether or not we announce changes in game.
  • a4d_zombies_to_add: The amount of zombies to add when an admin requests more zombies.
  • a4d_always_force_bosses: When this is on a4d will not automatically toggle off force_tank/witch when one of them spawns. You want this off if you are using force_tank to ensure that at least one tank spawns each round. When it is on you may end up with multiple tanks in one round if used in conjunction with force_tank.
  • a4d_refresh_zombie_location: The amount of time in seconds between spawn location refreshes. Used only for placing uncommon infected automatically in a z_spawn auto type fashion. Any changes currently require a map restart to take affect.
All the All4Dead plugins have been seperated out into a seperate configuration file which you can find in l4d/left4dead/cfg/sourcemod/plugin.all4dead.cfg. You should configure it here not in server.cfg as plugin.all4dead.cfg is loaded after the server starts.

Please make sure to delete your plugin.all4dead.cfg when you upgrade otherwise a4d_version will give you misleading information.

How does this plugin announce it's dirty deeds?
The way it provides feedback is based on the sm_show_activity cvar and will honour whatever that commands. If you want to turn off notifications completely either:
  • set a4d_notify_players to 0
  • type "a4d_enable_notifications 0"
It also logs on the server the name of the admin and the action used. This logging can not be turned off.

You can turn notifications off permanently by going to "plugin.all4dead.cfg" and making sure "a4d_enable_notifications" is set to 0.

Sounds great! But is there anything wrong with it?

These are the known issues so far.
  1. Delaying the rescue vehicle and not turning it back on before the final wave of the finale, means that it never turns up at all.
  2. Spawning tanks in various finales in Left4Dead2 can cause interesting problems such as the finale ending prementually.
  3. Choosing an item from the end of a menu, redraws the menu back at the start again. This seems to be the default behaviour for menus in Sourcemod and I am not entirely sure how to change it. Answers on a postcard please.
  4. Attemping to spawn some melee weapons on some maps will fail unless they are normally available on that map.
  5. The webcompilor will fail to compile All4Dead2 as it requires an extension. Instead you can use the attached all4dead2.smx or compile it yourself.
  6. Spawning a witch on C6_m1 (first map of the passing) will not work. You can work around this for the time being by precaching the normal witch model.
Oooooh! What's the extras?

Thanks to
Celanor and Jay Dogg I have put together three radial menus to add shortcuts to various commands. Currently they only work when you are a survivor. There seems to be a Left 4 Dead issue that infected can not have radial menus. Follow the install instructions in the zip file - it is that easy!

I have also added three key bindings to the most commonly used commands which can be used when you are either side. You can find all this in the keyboard settings screen in Left 4 Dead (just scroll down to the bottom).

The extras currently have not been updated for Left4Dead2 as Valve has changed the way radial menus now work. There is a guide on how to do it and a program to create the menus if people want to do it themselves. Distributing the changes here though would no doubt be illegal as it would involve uploading whole resource files from Left4Dead2.

Thank you and...

Please be kind reviewing my mod as it is the first I've written. Heavy credit goes to Fexii for his Infected Spawning mod for his code showing me how to strip cheat flags and the people who wrote the excellent tutorials on the wiki. Credit also goes to liam12360 for doing me a cool image.
Thanks also to DJ Tsunami for doing such an excellent extension. I would also like to express my gratitude to raoulduke and AtomicStryker for releasing a fix in my absence.

If you would like me to add additional features please either request them in this thread or post a patch and I will credit you accordingly.

The all knowing all powerful change log

* Version 1.0
*            - Initial release.
* Version 1.1
*            - Added support for console and chat commands instead of using the menu
* Version 1.2
*            - Changed name from "Overseer" to "All4Dead"
*            - Added "a4d_spawn" to spawn infected without sv_cheats 1.
*            - Added support for automatically resetting relevant game ConVars to defaults on a map change. 
*            - Added "FCVAR_CHEAT" to all the CVARs. 
* Version 1.2.1
*            - Fixed a bug where manually spawned infected would spawn with little or no health.
* Version 1.3
*            - Changed "a4d_spawn" to "a4d_spawn_infected"
*            - Added "a4d_spawn_weapon"
*            - Added "a4d_spawn_item"
*            - Added commands to toggle all bot survivor teams.
*            - Added support for randomising boss locations in versus.
*            - Added support to ensure consistency of boss spawns between teams.
*            - Moved the automatic reset function to OnMapEnd instead of OnMapStart. Should resolve double tank bug.
* Version 1.3.1
*            - Fixed bug with the arg string array being slightly too small for "a4d_spawn_item" and "a4d_spawn_weapon".
* Version 1.4.0
*            - Added feature which enforces versus mode across a series maps until the server hibernates.
*            - Changed "toggle" commands to "enable" commands. More descriptive of what they actually do.
*            - Cleaned up menus so they are easier to understand.
*            - Fixed bug where we were not enforcing consistent boss types if the old versus logic was not enabled.
*            - General code clean up.
*            - Replaced "a4d_director_is_enabled" ConVar with an internal variable.
*            - Replaced "a4d_vs_force_versus_mode" ConVar with an internal variable.
*            - Removed "a4d_force_old_versus_logic" ConVar.
*            - Removed feature for automatic reset of game settings. Instead settings are reverted when the server hibernates.
*            - Seperated All4Dead configuation into cfg/sourcemod/plugin.all4dead
* Version 1.4.1
*            - Fixed issue where players would get stuck in limbo if you disable versus mode.    
* Version 1.4.2
*            - Changed PlayerSpawn to give health to all infected players when spawned. This should fix a rare bug.
* Version 1.4.3
*            - All4Dead will now actually take notice of what you put in plugin.all4dead.cfg.
*            - Added "a4d_vs_randomise_boss_locations" ConVar.
*            - Added warning if plugin.all4dead.cfg version does not match plugin version.
*            - Fixed bug where ResetToDefaults would force coop mode on versus maps.
*            - Removed hibernation timer. It was causing errors and was unnecessary after all.
*            - Reverted change to PlayerSpawn made in 1.4.2. The old behaviour was correct. 
* Version 1.4.4
*            - Automatically change "z_spawn_safety_range" to match the game mode in play.
*            - Changed behaviour so versus mode is now continuously forced and safe from tampering.
*            - Fixed a bug where Event_BossSpawnsSet would not reset its own changes to ForceTank and ForceWitch on map changes.
*            - Fixed a bug with EnableOldVersusLogic reporting incorrect state changes.
*            - Fixed a bug where boss spawn tracking was sometimes not being reset correctly between maps.
*            - Fixed a bug where EnableOldVersusLogic would display a misleading notification.        
*            - Worked around RoundEnd being called twice! (once at the end of a round and again just before a new round starts)
* Version 1.4.5
*            - Removed force versus feature (it was an ugly hack and is no longer necessary now all maps are playable on versus) 
* Version 1.5.0
*            - Code refactoring and rewrite to make it easier to add new features.
*            - Removed all the old code related to the force versus feature.
*            - Added back buttons to menus, thanks to extrospect for the code.
*            - Added new cvar "always_force_bosses" which if set to 0 will reset director_force_tank/witch when a boss has spawned.
*              This should resolve the problem with multiple tanks and witches appearing in one round when the admin intended to ensure only one appears.
*            - Removed ensure consistency feature as it wasn't working correctly. Maybe an idea for a seperate mod.
*            - It is now possible to spawn infected, items and weapons from the rcon. 
*            - Changed the name of the rifle to assault rifle as per public opinion
* Version 1.5.1
*            - Added Oxygen tank.
*            - Changed the way we find a fake client to execute console commands. New method is more elegant.
* Version 1.6.0 (All4Dead)
*            - Added spawning ammo piles.
* Version 2.0.0 (All4Dead2)
*            - Added spawning of all uncommon infected
*            - Added spawning of all the new weapons
*            - Added spawning of all the new items and weapon upgrades
*            - Added feature allowing automatic placement of uncommon infected z_spawn style.
*            - Removed Left4Dead specific features that no longer work. (delay_rescue and the versus settings.)
Attached Files
File Type: zip (2.2 KB, 8168 views)
File Type: sp Get Plugin or Get Source (all4dead.sp - 11798 views - 39.3 KB)
File Type: sp Get Plugin or Get Source (all4dead2.sp - 4780 views - 47.2 KB)
File Type: smx all4dead2.smx (17.5 KB, 9258 views)

Last edited by grandwazir; 04-26-2010 at 08:41. Reason: released all4dead2
grandwazir is offline