diff --git a/docs/zr_3.0_release_notes.txt b/docs/zr_3.0_release_notes.txt new file mode 100644 index 0000000..97771e5 --- /dev/null +++ b/docs/zr_3.0_release_notes.txt @@ -0,0 +1,236 @@ +=============================================================================== + + Zombie:Reloaded Release Notes + + Targets plugin version 3.0.0, (not released) + Written by Richard Helgeby + + Last modified: 2009.06.27 + +=============================================================================== + +Release Notes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This is a major release and it do break compatibility with older configuration! +Clean install of configuration files and reconfiguring is recommended. + +A lot of work is put into this plugin. The entire plugin is completely recoded +with lots of improvements and fixes. + +Our code base have expanded at least five times compared to version 2.5.1 (now +with source files above 20 000 lines). Of course, made with optimizing in mind. +This is, as far as we know, the biggest SourceMod plugin ever made! + +We also hope Zombie:Reloaded will be a good learning resource for new or +existing coders to find out how certain things are done. The code is well +structured and documented with comments explaining almost what every line do. + +In addition we try to make this a quality release with a well tested release +and a full user manual. Read the user manual for details on how to use or +configure individual features. Better quality and less time spent on support +gives more time for us to what we really want to do. + + +Richard Helgeby & +Greyscale + + +OVERVIEW OF MAJOR CHANGES +--------------------------- + +* New configuration style. Configuration files and CVARs are also validated so + errors and invalid values are caught early. + +* Expanded class system with support for human classes and additional + attributes like setting transparency on player classes, effects or other + special behaviour. + +* New weapon configurations that support knock back multipliers per weapon and + custom weapon groups for easy restriction. + +* Market feature for pre configuring or buying equimpents and weapons from the + oposite team, also outside the buy zone if allowed in configuration. + +* Improved knock back with support for scaling based on different modules. Now + it's possible to fully customize knock back behaviour. + +* Volumetric features. Define areas in maps and do certain stuff to players in + those areas based on a selection of features like the anti-camp. + +* Improved teleport settings. Delays and limits separated per team. + +* Admin menu. Configure certain settings in-game, do generic commands like + infect, spawn and teleport. + +* Cookies. This plugin is using the cookie system of SourceMod so player + preferences can be saved until next time they connect. + +* New logging system that is fully customizable. Makes it possible to decide + what stuff to be logged by setting generic logging flags and applying module + filters. + + +CONFIGURATION CHANGES +----------------------- + +Configuration settings are validated when the plugin starts. The plugin will +stop, use defaults or disable features if there are invalid values. Also a +warning is logged in the SourceMod error logs. + +The validation prevents unexpected or invalid behaviour in the plugin. Dealing +with errors or warnings in error logs helps a lot troubleshooting eventual +eventual issues in the plugin caused by incorrect configurations. + +It's also possible to specify the path of configuration files. This can be used +in combination with map configs, so it's possible to have different +configuration sets per map. + +Support for post map configs is made. These are configs executed after the +plugin and its features are loaded. Some settings can only be changed or +overridden after loading. Those commands must be placed in post map configs. + + +IMPROVED CLASS SYSTEM +----------------------- + +There's a lot of new features in the class system. The major change is that +it's made for multiple teams (humans and zombies). Now human classes can be +made. It has support for extended team filtering where admin-only and mother +zombie classes can be made. + +In addition any attribute on one or more classes can be modified in-game, which +expands the possibilities in combination with map configs. This makes it easier +to improve the map balance by adjusting attributes like health, knock back and +running speed. + +One of the new features is transparency on players. There are also immunity +modes (but it's currently a incomplete feature) that could implement slow +infection that requires zombies to stab multiple times with its knife before +the humans get infected, or stab them to death (turning into a zombie). + + +IMPROVED WEAPON SYSTEM +------------------------ + +The new weapon system lets makes it possible to do more than just restricting +weapons. Now it's possible to set knock back multipliers per weapon. + +Hit groups can also be configured with knock back multipliers, or disable +damage on certain hit groups completely. + +There's also a new market feature which is a custom buy menu with all available +weapons, including from the oposite team. It's also possible to buy weapons +outside the buy zone if the server admins enable that setting. + +Weapon selections can be pre configured and even saved using cookies so they +can be quickly bought on next spawn or on next connect to the server. + + +CUSTOMIZING KNOCK BACK +------------------------ + +The knock back is based on three factors that are multiplied into the effective +knock back: + + - Class knock back. This is the main value. + + - Weapon knock back. Set knock back scale values per weapon. + + - Hit group knock back. Customize or completely disable knock back scale + per hit group. + +With these factors it's possible to fully customize knock back. + + +VOLUMETRIC FEATURES +--------------------- + +(Currently in development) + +This is a brand new useful feature where custom defined areas in maps can do +certain stuff on players. These are the available features: + + - Anti-camp: Slay or warn players that stay too long in a certain area. + Useful in unfair camping places, or to avoid glitches in maps. + + - Modify class attributes. + + - Restrict weapons. Takes away ammo, and gives back when leaving area. + + - Modify ammo modes. + + - Modify knock back set on players or knock back in hit groups. + + - Teleporter. + +Features that modify settings will be reverted when players leave volumes. +Example of usage is to only allow pistols in tubes, use the anti-camp to hurt +humans camping in a certain unfair place, or fine tune knock back for a area in +the map. + + +TELEPORTER +------------ + +The teleporter is improved with more settings like these: + + - Deciding when players can teleport per team, before or after mother + zombie. + + - Setting teleport delays per team. + + - Limiting number of teleports per team. + + - Abuse protection: Automatically aborting a teleport in progress if the + player moves a certain distance (configurable). + + +ADMIN MENU +------------ + +A menu for admins with basic commands to configure certain settings in-game +or do generic commands. That is: + + - Infecting players. + + - Spawning players. + + - Modifying weapon restrictions. + + - Modifying class data. + + - Configuring log messages. + + +LOGGING SYSTEM +---------------- + +The logging system is based on logging flags and filtering that gives full +control of what log types and events to be logged. + +There are a few generic log events and settings, like these: + + - Core events: Executing config files, error messages, etc. + + - Game events: Admin commands, suicide prevention, anticamp kills, etc. + + - Player commands: Commands executed by non-admins: zspawn, teleport, class + change, etc. + + - Debug messages, if any. Usually only developers use this one. + + - Debug messages with more detail. It may cause spam, but this can be + avoided in combination with module filtering. + + - Ignoring log events caused by server commands (console), like from map + configs. + + - Logging to admin chat: A copy of the message is also logged to admins. + +In addition a module filter can be enabled. Only log messages from modules +listed in the filter is logged, other are ignored. Except fatal errors, those +are logged anyways. + +The logging system is made this way so server admins can monitor activity in +Zombie:Reloaded whithout reading spammed log messages. diff --git a/docs/zr_dev_manual.txt b/docs/zr_dev_manual.txt new file mode 100644 index 0000000..2fcbec5 --- /dev/null +++ b/docs/zr_dev_manual.txt @@ -0,0 +1,164 @@ +=============================================================================== + + Zombie:Reloaded + Technical Manual For Developers + + Targets plugin version 3.0.0, (not released) + Written by Richard Helgeby + + Manual last modified: 2009.04.25 + +=============================================================================== + +INDEX +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +1.0 . . Introduction +1.1 . . . About This Manual +1.2 . . . Briefing + +2.0 . . Plugin Core +2.1 . . . Startup +2.2 . . . Console Variables +2.3 . . . Translations +2.4 . . . Offsets +2.5 . . . Models +2.6 . . . Round End Handler +2.7 . . . Infection Handler +2.8 . . . Damage Handler + +(account) +(say hooks) +(menu) +(commands) +(events) + +3.0 . . Log Module +3.1 . . . Description +3.2 . . . Logging Flags And Filters +3.3 . . . Formatted Log Messages +3.4 . . . The Log Function + +4.0 . . Class Module + +5.0 . . Weapon Module + +6.0 . . Hit Groups Module + +7.0 . . Visual Effects Module + +8.0 . . Sound Effects Module + +9.0 . . Anti-Stick Module + +10.0 . Knockback Module + +11.0 . Respawn Module + +12.0 . Spawn Protect Module + +13.0 . Napalm Grenades Module + +14.0 . HP Display Module + +15.0 . Teleport Module + + +1.0 INTRODUCTION +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +1.1 ABOUT THIS MANUAL +------------------------ + +The point of this manual is to describe how the plugin technically works so +it's easier for other developers to make modifications or join the development. + + +1.2 BRIEFING +--------------- + +The entire plugin is based on events in the game. It has a lot of features and +each feature is separated in its own module. Events are then forwarded to those +modules. + +There are core modules and optional modules. Core modules is features and stuff +that cannot be disabled and is required for the plugin to function. Optional +modules like respawning, sound effects or weapon restrictions can be disabled. + +Each module takes care of its own task. But modules have dependency, and events +should be forwarded in correct order. Usually only core modules depends on other +core modules. Optional modules should be independent. + + +2.0 PLUGIN CORE +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +3.0 LOG MODULE +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +3.1 DESCRIPTION +------------------ + +A plugin with a lots of modules and events needs a good logging system. The +user should be able to decide what's logged with logging flags. + + +3.2 LOGGING FLAGS AND FILTERS +-------------------------------- + +The log system decides what to log based on some generic log flags. Those flags +are stored in a bid field (http://en.wikipedia.org/wiki/Bit_field). + +An optional module filter can be enabled to only allow log events from user +specified modules. + +For performance reasons there should be a single function that tells whether it +should log or not, based on the specified module and generic event. The logging +function itself should not do such check and always log a message when called. + +(incomplete) + +How to store module flags? Key/values? Reading those flags MUST be cheap, so +the overall plugin performance isn't affected. + + +3.3 FORMATTED LOG MESSAGES +----------------------------- + +Each log message should tell the module and what part of it that fired the +log event. Also it must be possible to supply additional info as parameters +(the "any:..." parameter) to be used in the log message. These are easily' +parsed with VFormat. + + +3.4 THE LOG FUNCTION +----------------------- + +Syntax: + +LogMessageFormatted(client, + const String:module[], + const String:block[], + const String:message[], + type = LOG_FORMAT_TYPE_FULL, + any:...) + + Parameter: Description: + --------------------------------------------------------------------------- + client Specifies what client that triggered the event. Use -1 for + core events. + module What module the event was triggered in. + block What function or block that triggered the event. + message The log message. Can be formatted. + type Optional. Specifies what log type to use. Defaults to full. + any:... Formatting parameters for the log message. + +Example usage with flag check: + +if (LogCheckFlag(LOG_CORE_EVENTS, LOG_MODULE_CLASSES)) +{ + LogMessageFormatted(-1, "Classes", "Load", "Warning: Maximum classes reached (%d). Skipping other classes.", _, ZR_CLASS_MAX + 1); +} + +The module check will be replaced with something other than defined constants. diff --git a/docs/zr_manual.txt b/docs/zr_manual.txt new file mode 100644 index 0000000..d91bf6d --- /dev/null +++ b/docs/zr_manual.txt @@ -0,0 +1,1128 @@ +=============================================================================== + + Zombie:Reloaded User Manual + + Targets plugin version 3.0.0, (not released) + Written by Richard Helgeby + + Manual last modified: 2009.06.22 + +=============================================================================== + +INDEX +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +1.0 . . Introduction +1.1 . . . About The Plugin +1.2 . . . Game Objectives +1.3 . . . Credits + +2.0 . . Installation +2.1 . . . Requirements +2.2 . . . Plugin Installation +2.3 . . . Test Run + +3.0 . . Configuration +3.1 . . . Understanding Syntax +3.1.1 . . . Optional Parameters +3.1.2 . . . Required Parameters +3.1.3 . . . Multiple Options In The Same Parameter +3.1.4 . . . Text As Parameters +3.2 . . . Configuration Files +3.3 . . . Logging +3.3.1 . . . Log Flags +3.4 . . . Custom Map Configuration Files +3.4.1 . . . Types +3.5 . . . Model List +3.6 . . . Download List +3.7 . . . Class Configuration +3.7.1 . . . Class Types +3.7.2 . . . Class Attributes +3.7.3 . . . Class Requirements +3.7.4 . . . Class Console Variables +3.7.5 . . . Modifying Class Attributes +3.8 . . . Weapon Configuration +3.8.1 . . . Attributes +3.8.2 . . . Weapon List +3.8.3 . . . Console Commands +3.9 . . . Hit Group Configuration +3.10 . . Infection Settings +3.11 . . Damage Control Settings +3.12 . . Money Settings +3.13 . . Visual Effects Configuration +3.14 . . Sound Effects Configuration +3.15 . . Spawn Protect Configuration +3.16 . . Re-spawn Configuration +3.17 . . Teleport Configuration +3.18 . . HP Display Settings +3.19 . . Volumetric Features +3.19.1 . . Volume Attributes +3.19.2 . . Feature Attributes +3.19.3 . . Anti-Camp Feature + +4.0 . . How To Play +4.1 . . . Game Rules +4.2 . . . Chat Commands +4.3 . . . Using The Menus +4.4 . . . Teamwork +4.5 . . . Playing As Human +4.5.1 . . . Finding A Place To Hide +4.5.2 . . . Making Barricades +4.5.3 . . . Playing Fair +4.6 . . . Playing As Zombie +4.6.1 . . . Avoiding Knockback + +5.0 . . Troubleshooting +5.1 . . . Verifying Requirements +5.2 . . . Startup +5.3 . . . Error and Warning Messages +5.4 . . . Common Problems + +6.0 . . Gameplay Guidelines +6.1 . . . Briefing - Map Configuration Files +6.2 . . . Map Balance +6.3 . . . Knockback Settings +6.4 . . . Map Time + +7.0 . . Reporting Bugs and Improvements + + +1.0 INTRODUCTION +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +1.1 ABOUT THE PLUGIN +----------------------- + +Zombie:Reloaded remake of Zombie Mod with a lot of new features and +improvements. It's made for a Counter-Strike: Source server and runs on a +powerful scripting platform called SourceMod. + + +1.2 GAME OBJECTIVES +---------------------- + +The objectives is to change the game into humans versus zombies. Humans try +to survive by camping, barricading and hiding. Zombies try to zombify humans +by using their knife. + +At a random time after the round starts, one or more random humans are turned +into zombies. Zombies have certain advantages as running faster and more +health points. Humans have huge amounts of ammo (or unlimited), and their +bullets knock back zombies. A lot more attributes can be adjusted for both +zombies and humans. + + +1.3 CREDITS +-------------- + +Concept: + c0ldfyr3 + - The developer of Zombie Mod . + +Developers and testers: + Greyscale + - Author of Zombie:Reloaded. The one who started remaking Zombie Mod for the + SourceMod platform. + + Richard Helgeby + - Started working on the plugin from version 2.5.1. Fixed bugs and + made new features. + + Cpt. Moore + - Owner of the Zombie:Reloaded server "Zombie World Domination by + SwissQuake". Made some new features, and used the server for testing. + + +Additional testers: + (...) + + +2.0 INSTALLATION +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +2.1 REQUIREMENTS +------------------- + +Zombie: Reloaded requires that the following stuff is installed on the server: + + 1. Metamod:Source - A simplified API for server plugins. The original + Zombie Mod is run on this one. It makes it easier for developers to + make plugins like SourceMod: + + + + 2. SourceMod - A scripting platform: + + + + + 3. ZRTools extension (bundled). Provides some extra functions needed by + Zombie:Reloaded. See Plugin Installation (2.2). + + +2.2 PLUGIN INSTALLATION +-------------------------- + +Extract the content of the zip file into "cstrike/" on the server. + +This plugin is often confused by Zombie Mod, which is actually ovbious since +Zombie:Reloaded is a SourceMod alternative to Zombie Mod. + +We suggest having "Zombie:Reloaded" instead of "Zombie Mod" in the server name +if that's the case. No offense to the Zombie Mod team, of course, but we just +suggest this to help marketing Zombie:Reloaded. + + +2.3 TEST RUN +--------------- + +The plugin should work with default configuration. Start the server and join a +team. Once the round starts there sould be some messages at the chat with +"[ZR]". Or type "!zmenu" in the chat to bring up the zombie menu to confirm +that the plugin is running. + +Next check error logs from SourceMod and look if there are any entries from +"zombiereloaded.smx". If the plugin doesn't work at all or there are error +logs, see Troubleshooting at section 5.0. + + +3.0 CONFIGURATION +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +3.1 UNDERSTANDING SYNTAX +--------------------------- + +In this manual commands or paths may be written in a certain style that tells +how to use it. + +Note that the style itself is not written, but it's used as an indicator to +tell if a parameter is optional or not. + +Example syntax of a command: + + zr_class_modify [is_multiplier] + +Some paths may look like: + + cfg/sourcemod/zombiereloaded/.cfg + +How to read syntaxes like this is explained below. + + +3.1.1 OPTIONAL PARAMETERS + +Optional parameters is not required and usually have a default value or action. +They are marked with brackets. + +Example: + + zr_somecommand [number] + +Usage examples: + + zr_somecommand + zr_somecommand 10 + + +3.1.2 REQUIRED PARAMETERS + +Required parameters must be specified for the command to function. Usually if +no parameters are written the command replies with some info about the syntax. + +Less than (<) and greather than (>) symbols marks required parameters. + +Examples: + + zr_somecommand + zr_infect + +Usage examples: + + zr_somecommand 100 + zr_infect "unnamed" + + +3.1.3 MULTIPLE OPTIONS IN THE SAME PARAMETER + +Some commands have parameters that support multiple pre defined options. +Usually it's specifying a name, a index or a predefined value. Each option is +separated by a "|" symbol. + +Example: + + zr_do_something + +Usage examples: + + zr_do_something 1 + zr_do_something "all" + zr_do_something "unnamed" + + +3.1.4 TEXT AS PARAMETERS + +Since parameters are separated by spaces, text (strings) should be quoted. It's +a good habit to do this on all string parameters to avoid parsing mistakes. + +Example: + + zr_infect "unnamed" "player" + zr_do_something "example text. test." + +Example of bad usage: + + zr_do_something example text. test. + +The last example actually have 3 parameters while it should be only one. This +may cause unexpected results and is an example of why strings should be quoted. + + +3.2 CONFIGURATION FILES +-------------------------- + +These are the default configuration files. The paths are relative to the +"cstrike" folder. + + Type: File: + --------------------------------------------------------------------------- + Main conf. cfg/sourcemod/zombiereloaded/zombiereloaded.cfg + Map conf. cfg/sourcemod/zombiereloaded/.cfg + Post map conf. cfg/sourcemod/zombiereloaded/.post.cfg + Hitgroup conf. addons/sourcemod/configs/zr/hitgroups.txt + Class conf. addons/sourcemod/configs/zr/playerclasses.txt + Weapon conf. addons/sourcemod/configs/zr/weapons.txt + Download list addons/sourcemod/configs/zr/downloads.txt + Model list addons/sourcemod/configs/zr/models.txt + +The post map configuration file is executed after all features of ZR is done +loading. Commands that modify loaded data must be put in post configuration +files. How to configure each file is explained in their own sections. + + +3.3 LOGGING +-------------- + +The log system used in Zombie:Reloaded is pretty powerful and customizable. +It's based on logging flags and a module filter. + +The flags tell what kind of events to log. Those flags are stored as a numeric +value in a bit field where each bit tell wether to log a certain event or not. +See for technical details. + +The module filter is a list of modules to enable log events from. This filter +gives extra control of what stuff to log. Use console commands below in the +main configuration file to add or remove modules to the filter. + +These commands might not work properly until bug 3828 in SourceMod is fixed +(http://bugs.alliedmods.net/show_bug.cgi?id=3828). It's a bug where console +commands in plugin configuration files are executed late so a command like +zr_log_add_module is too late. + +There are console variables for different log settings and exceptions. Place +them in the main configuration file. + +Console variables: + + Console variable: Default: + =========================================================================== + zr_log "1" + Enable logging of events in the plugin. Fatal errors or errors are + independendt on this setting and always logged. + + Options: + 0 or 1 + + --------------------------------------------------------------------------- + zr_log_flags "3" + A bit field that specify what event types to log. + + Options: + Number - See Log Flags (3.3.1) + + --------------------------------------------------------------------------- + zr_log_module_filter "0" + Enable module filtering. Only log events from listed modules will be + logged. Use console commands below to add or remove modules from the + filter. + + Options: + 0 or 1 + + --------------------------------------------------------------------------- + zr_log_ignore_console "1" + Don't log events triggered by console that are executed by the console + itself, like commands in configs. Enable this command to avoid spamming + logs with events like weapon restrictions. + + Options: + 0 or 1 + + --------------------------------------------------------------------------- + zr_log_print_admins "0" + Print log events to admin chat in addition to the log file. + + Options: + 0 or 1 + + --------------------------------------------------------------------------- + zr_log_print_chat "0" + Print log events to public chat in addition to the log file. + + Options: + 0 or 1 + +Console commands: + + Syntax: Argument: Description: + --------------------------------------------------------------------------- + zr_log_add_module [modules...] + + Add one or more modules to the module filter. + + module Name of the module to add. + modules Additional modules to add. + + --------------------------------------------------------------------------- + zr_log_remove_module [modules...] + + Remove one or more modules from the module filter. + + module Name of the module to remove. + modules Additional modules to remove. + + --------------------------------------------------------------------------- + zr_log_list_flags + List available logging flags. + + +3.3.1 LOG FLAGS + + Flag: Bit No.: Value: Description: + --------------------------------------------------------------------------- + LOG_CORE_EVENTS 1 1 Log events from the plugin core like config + validation and other messages. + LOG_GAME_EVENTS 2 2 Log admin commands, console commands, and + game related events from modules like, + suicide attempts and weapon restrictions. + LOG_PLAYER_COMMANDS 3 4 Log events that are triggered by players, + like chat triggers, teleporting and class + changes. + LOG_DEBUG 4 8 Log debug messages, if any. Usually only + developers enable this log flag. + LOG_DEBUG_DETAIL 5 16 Log additional debug messages with more + details. May cause spam depending on module + filter settings. Usually only developers + enable this log flag. + +To combine several logging flags use the sum of their values. The default +value is 3, which is these log flags: + + LOG_CORE_EVENTS + LOG_GAME_EVENTS + 1 + 2 + +Most server setups donesn't need different flag settings. Default is fine. + +To decode the value you must convert it from decimals to binary, and count from +right to left what bits that are 1. Look up the bit number (not value) in the +table above. + +As an example on using the number 11 it's 1011 in binary. Counting from right +we see that the following bit numbers are on: 1, 2, and 4. That is the flags: + + LOG_CORE_EVENTS + LOG_GAME_EVENTS + LOG_DEBUG + +Most operating systems or distributions have a calculator that can convert +between binary and decimal numbers with scientific mode enabled. An online +unit converter like below can also be used. + + + + +3.4 CUSTOM MAP CONFIGURATION FILES +------------------------------------- + +Configuration files for each map is supported. They're executed after the main +configuration files are executed, and are ideal for customizing map settings. +These files are just regular configuration files and can also have standard +console commands like setting map time. These files are optional. + +The main purpose of these files is to make it possible to change settings for +Zombie:Reloaded on certain maps. That could be scaling knockback, restricting +certain weapons, changing class attributes or changing ambience sound. + + +3.4.1 TYPES + +There are two kinds of map configs; pre and post. Pre map configuration files +are executed before the modules are loaded. They're useful for changing +configuration sets for certain modules like classes. Post map configuration +files are executed after the modules are loaded. Certain stuff have to be +placed in this one to take effect, like changing class attributes. + + Type: Executed: Path: + --------------------------------------------------------------------------- + Pre Before modules cfg/sourcemod/zombiereloaded/.cfg + Post After modules cfg/sourcemod/zombiereloaded/.post.cfg + +If not explicit specified in the module documentation, use pre configuration. + + +3.5 MODEL CONFIGURATION +-------------------------- + +The model configuration file is a list of models used on the server. Each line +contains the path including the model name, but not file extensions, like this: + + models/player/zh/zh_charple001 + +Put the list of models in: + + addons/sourcemod/configs/zr/models.txt + +The models listed in this file are precached when the server starts. Models +used, but not listed in this file will cause a "model not precached" error on +the server. + +Note that it cannot end with "/". + + +3.6 DOWNLOAD LIST +-------------------- + +Custom models, materials and overlays must be listed in the download list so +clients will download them. The paths must be relative to the "cstrike" folder. + +List files to be downloaded in: + + addons/sourcemod/configs/zr/downloads.txt + + +3.7 CLASS CONFIGURATION +-------------------------- + +The class system makes it possible to have different zombies and humans with +customized skills. It cannot be turned off. If there are only one class in each +team, the class selections menus are automatically disabled. + +The class configurations are stored in Valve's key/value format, and the file +that's loaded should be specified in the "zr_classes_file" console variable. +It's possible to change this variable with per-map configuration files to have +different sets of classes on one or more maps. + +Default path is: + + configs/zr/playerclasses.txt + +NOTE: The path is relative to the "sourcemod" folder. + +The file contains a short description of all attributes. Details are explained +below. + + +3.7.1 CLASS TYPES + +There are three class types; zombies, humans and admins-only. Default classes +are selected on the player depending on console variables and the class file. + +Admins-only classes are currently incomplete and will be validated, but ignored +in the game. + + +3.7.2 CLASS ATTRIBUTES + +The list below explains all available class attributes in detail: + + Attribute: Value type: Limits/Requirements: + =========================================================================== + enabled boolean 0 or 1 + --------------------------------------------------------------------------- + Enables or disables the class. Disabled classes won't show up in the + class selection menus. Also, if some attributes failed to validate the + class will be disabled. + + team number 0 - 2 + --------------------------------------------------------------------------- + Specifies the class type (team ID). Class types are filtered in the + class selection menus, so only zombies can use zombie class types, and + only humans can use human class types. These are the allowed team IDs: + + 0 - Zombie classes + 1 - Human classes + 2 - Admin-only classes + + The admin class type sets the player in spectacting like mode, but + allows admins to walk around. They can't take or give damage, and they + won't affect the game rules in any way. This feature is incomplete and + classes of this type is ignored in the game. + + team_default boolean 0 or 1 + --------------------------------------------------------------------------- + Marks the class as the default class for its specified team. This class + will be automatically selected on new players when they join the + server, depending on what's specified as default in the main + configuration file (zr_classes_default_*). If multiple classes in the + same team is marked as default the first class marked as default is + used. + + flags number 0 - 3 + --------------------------------------------------------------------------- + Special class flags that are stored in a bit field (explained in 3.3, + Logging section). Available flags: + + 1 - Admins only. + Marks the class to be used by admins only. Classes with this option + on will not be visible for regular players in the class menu. + + 2 - Mother zombie. + Marks the class as a mother zombie class. These classes will be + used on mother zombies. Note that zr_classes_default_mother_zombie + setting must be set to "motherzombies" for this flag to take + effect. + + name text Unique, not empty, max 64 charact. + --------------------------------------------------------------------------- + A unique name for the class that is displayed in the class selection + menus. Cannot be empty. If multiple classes have the same name, the + first one found is used. + + description text Max 256 characters, not empty + --------------------------------------------------------------------------- + The description of the class, used in class selection menus. Cannot be + empty. + + model_path text Max 256 characters, not empty + --------------------------------------------------------------------------- + The model file to use on the player, path is relative to the "cstrike" + folder. There are two special values supported by this attribute: + + "default" - Don't change model, use default CS models. + "random" - Selects a random model for the current team. + + alpha_spawn number 0 - 255 + --------------------------------------------------------------------------- + The initial transparency value on the player, where 255 is fully + visible and 0 is invisible. + + alpha_damaged number 0 - 255 + --------------------------------------------------------------------------- + Transparency on the player when a certain amount of damage is done. + 255 is fully visible and 0 is invisible. + + alpha_damage number 0 - 20000 + --------------------------------------------------------------------------- + How much damage that needs to be done before the players alpha changes + from "aplha_spawn" to "aplha_damaged". + + overlay_path text Max 256 characters + --------------------------------------------------------------------------- + Optional. Overlay texture to be displayed at the player. It can be + controlled by the night vision key ("n" by default). The path is + relative to "cstrike/materials". Leave blank to disable. + + nvgs boolean 0 or 1 + --------------------------------------------------------------------------- + Gives night vision to the player. + + fov number 15 - 165 + --------------------------------------------------------------------------- + The field of view on the player. Note that the weapon hud disappear if + FOV is anything else than 90. + + has_napalm boolean 0 or 1 + --------------------------------------------------------------------------- + Human classes only. Specifies whether the human can trow napalm + grenades or not. + + napalm_time decimal 0.0 - 600.0 + --------------------------------------------------------------------------- + Zombie classes only. Specifies how long in seconds zombies will burn + when hit by napalm grenades. 0.0 or a negative value will disable this + feature on the current class. This attribute has no effect on human + classes. + + immunity_mode number 0 - 2 + --------------------------------------------------------------------------- + The immunity mode. This feature is currently incomplete and values are + ignored. + + immunity_amount decimal (incomplete) + --------------------------------------------------------------------------- + The value for the specified immunity mode. This feature is currently + incomplete and values are ignored. + + no_fall_damage boolean 0 or 1 + --------------------------------------------------------------------------- + Blocks fall damage on the player. + + health number 0 - 20000 + --------------------------------------------------------------------------- + Initial health points on the player. + + health_regen_interval decimal 0.0 - 900.0 + --------------------------------------------------------------------------- + The health regeneration interval, in seconds. Use 0.0 to disable + regeneration. + + health_regen_amount number 0 - 10000 + --------------------------------------------------------------------------- + How many health points to give per interval. Regeneration stops when + the players health is above the initial health. + + health_infect_gain number 0 - 20000 + --------------------------------------------------------------------------- + Zombie classes only. How many health points to give the zombie each + time it infect a human. + + kill_bonus number 0 - 16 + --------------------------------------------------------------------------- + Human classes only. How many points to give the player each time he + kill a zombie. + + speed decimal 10.0 - 2000.0 + --------------------------------------------------------------------------- + The players running speed. + + knockback decimal -30.0 - 30.0 + --------------------------------------------------------------------------- + Zombie classes only. Force to apply on the zombie when shot at. The + zombie is pushed in the same direction as the bullet. + + jump_height decimal -500.0 - 500.0 + --------------------------------------------------------------------------- + Extra upward boost when jumping. + + jump_distance decimal -500.0 - 500.0 + --------------------------------------------------------------------------- + Extra forward boost when jumping. + + +3.7.3 CLASS REQUIREMENTS + +At least one zombie class and one human class with no special flags set is +required. Otherwise the plugin will fail to load. + +Requirements: + + - At least one human class (teamid 1). + - At least one zombie class (teamid 0) + - In addition both above classes shouldn't have special flags set. They + must be clean classes, which is flags set to "0". + +Errors are logged to SourceMod error logs if it can't parse the file or if +class attributes have invalid values. + +In case of incorrect values a warning will be logged and the class will be +disabled. The class index and the error flags (bit field) in the log message +tells what attributes that failed to validate. + +Attribute flags: + + Attribute: Bit: value: + --------------------------------------------- + enabled 1 1 + team 2 2 + team_default 3 4 + flags 4 8 + name 5 16 + description 6 32 + model_path 7 64 + alpha_initial 8 128 + alpha_damaged 9 256 + alpha_damage 10 512 + overlay_path 11 1024 + nvgs 12 2048 + fov 13 4096 + has_napalm 14 8192 + napalm_time 15 16384 + immunity_mode 16 32768 + immunity_amount 17 65536 + no_fall_damage 18 131072 + health 19 262144 + health_regen_interval 20 524288 + health_regen_amount 21 1048576 + infect_gain 22 2097152 + kill_bonus 23 4194304 + speed 24 8388608 + knockback 25 16777216 + jump_height 26 33554432 + jump_distance 27 67108864 + +The error flags are stored in a bit field (explained in the log configuration +in section 3.2). + +Another quick way to decode it would be to use the calculator in Windows. +Enable scientific mode and enter the decimal value. Then switch to binary mode +(F8) and count from right to left what bits that are 1. Look up the bit numbers +in the table above to see what attributes that didn't validate. + + +3.7.4 CLASS CONSOLE VARIABLES + +There are several console variables to set default class settings for players. +Place these console variables in the main configuration file: + + cfg/sourcemod/zombiereloaded/zombiereloaded.cfg + +And/or in a map config file: + + cfg/sourcemod/zombiereloaded/[.post].cfg + +Example map config files: + + cfg/sourcemod/zombiereloaded/zm_panic.cfg + cfg/sourcemod/zombiereloaded/zm_panic.post.cfg + +Class console variables: + + Console variable: Default: + =========================================================================== + zr_config_path_playerclasses "configs/zr/playerclasses.txt" + --------------------------------------------------------------------------- + Specifies what class configuration file to load. Several class + templates can be used with map configurations. + + Path is relative to "sourcemod". + + If used in map configuration files this console variable must be placed + in pre map configuration files. Post configuration files won't have any + effect because the class module is done loading. + + zr_classes_spawn 0 + --------------------------------------------------------------------------- + Re-display class menu every spawn. + + Options: + 0 or 1 + + zr_classes_random 0 + --------------------------------------------------------------------------- + Assign random classes to all players each round. + + Options: + 0 or 1 + + zr_classes_default_zombie "random" + --------------------------------------------------------------------------- + Default zombie class selected for all players when they connect. + + Options: + - Specify a class name to use as default zombie. + "default" - Use the default class in the class configuration. + "random" - Select a random class from the class configuration. + + zr_classes_default_mother_zombie "random" + --------------------------------------------------------------------------- + Default mother zombie class to be set on mother zombies. If no mother + zombie class exist it will use the class selected by the player. + + Options: + - Specify a class name to use as default mother zombie. + "random" - Select a random regular zombie class. + "motherzombies" - Select a random zombie class with mother zombie flag. + "disabled" - No change. Use the zombie class selected by the + player. + + zr_classes_default_human "random" + --------------------------------------------------------------------------- + Default human class selected for all players when they connect. + + Options: + - Specify a class name to use as default zombie. + "default" - Use the default class in the class configuration. + "random" - Select a random class from the class configuration. + + zr_classes_default_admin "random" + --------------------------------------------------------------------------- + Default admin class selected for all players when they connect, if any + admin class found. + + Options: + - Specify a class name to use as default. + "default" - Use the default class in the class configuration. + "random" - Select a random class from the class configuration. + + +3.7.5 MODIFYING CLASS ATTRIBUTES + +Classes can be modified after they're loaded. This is useful in map configs +to do stuff like scaling knockback to tune map balance. + +All attributes can be modified, and some can also be scaled with a multiplier. +The value in the original class cache is multiplied with the specified value +and written back to the modified cache. + +When multiplying, the value is always based on the original value, not +multiplying the earlier multiplied value. This also makes it easy to restore +the original value. + +Command syntax: + + zr_class_modify [is_multiplier] + +Parameters: + + Parameter: Description: + --------------------------------------------------------------------------- + class: The class to modify. Can be any class name, or one of the + following team names; "all", "humans", "zombies" or + "admins". + attribute: The name of the class attribute. + value: Value to set, or multiplier. + is_multiplier: Optional. Specifies wether the original value should be + multiplied by the specified value. Default is false. + +3.8 WEAPON CONFIGURATION +--------------------------- + +The weapon module can be used to restict weapons or scale knockback. + + +3.8.1 WEAPON ATTRIBUTES + +Weapon attributes are stored by default in: + + addons/sourcemod/configs/zr/weapons.txt + +Custom file may be specified in the console variable "zr_config_path_weapons". +If used in per map configuration files it must be in a pre configuration file. + +These are the allowed attributes: + + Attribute: Type: Limits/Requirements: + =========================================================================== + weapontype text Separate items by ", ". + A list of weapon groups and the weapon type. + + Pre defined options: + - All + - Pistol + - Shotgun + - SMG + - Rifle + - Sniper + - Machine Gun + - Melee + - Projectile + - Equipment + + --------------------------------------------------------------------------- + weaponslot number 0 - 3. + The slot index the weapon resides in. Don't change this! + + Options: + 0 - Primary weapon slot + 1 - Secondary weapon slot + 2 - Knife slot + 3 - Equipment slot + + --------------------------------------------------------------------------- + restrictdefault text "yes" or "no" + The default restricted status of the weapon on map start. + + Options: + "yes" - Enable + "no" - Disable + + --------------------------------------------------------------------------- + toggleable text "yes" or "no" + Enable weapon to have restrictions toggled mid-game. + + Options: + "yes" - Enable + "no" - Disable + + --------------------------------------------------------------------------- + ammotype text - + Ammo entity that belongs to weapons. Don't change this! + + Options: + ammo_50ae - deagle + ammo_762mm - scout, ak47, g3sg1, aug + ammo_556mm_box - m249 + ammo_556mm - galil, sg552, famas, m4a1, sg550 + ammo_338mag - awp + ammo_9mm - mp5navy, tmp, glock, elite + ammo_buckshot - m3, xm1014 + ammo_45acp - ump45, mac10, usp + ammo_357sig - P228 + ammo_57mm - p90, fiveseven + + --------------------------------------------------------------------------- + ammoprice number - + Price of ammo for this weapon. + + --------------------------------------------------------------------------- + knockback decimal - + The knock back multiplier for the weapon. 1.0 is no change, "0.5" gives + half knock back, and 2.0 gives double knock back. + + --------------------------------------------------------------------------- + zmarketprice number - + The price of the weapon in ZMarket. Default in configuration file is + CS:S buymenu price. + + --------------------------------------------------------------------------- + zmarketpurchasemax number - + The max number of purchases allowed per spawn for the weapon. + +The file structure is Valve's key/value format where the root section is named +"weapons" and a sub section for each weapon using short names from the list +below. + + +3.8.2 WEAPON LIST + + Weapon name: Type: Full name: + --------------------------------------------------------------------------- + "Glock" Pistol Glock 18 Select Fire (9X19mm Sidearm) + "USP" Pistol .45 USP (K&M .45 Tactical) + "P228" Pistol 228 Compact + "Deagle" Pistol Desert Eagle .50C (Night Hawk .50C) + "Elite" Pistol .40 Dual Elites + "Fiveseven" Pistol ES Five-Seven + + "M3" Shotgun Benelli M3 (Leone 12 Gauge Super) + "XM1014" Shotgun Benelli XM1014 (Leone YG1265 Auto Shotgun) + + "Mac10" SMG Ingram MAC-10 + "TMP" SMG Steyr TMP (Schmidt Machine Pistol) + "MP5Navy" SMG HK MP5 Navy (KM Sub-Machine Gun) + "UMP45" SMG K&M UMP45 + "P90" SMG FN P90 (ES C90) + + "Galil" Rifle IMI Galil (IDF Defender) + "Famas" Rifle Giat FAMAS (Clarion 5.56) + "AK47" Rifle AK-47 (CV-47) + "M4A1" Rifle M4A1 Carbine (Maverick M4A1 Carbine) + "SG552" Rifle SIG SG552 (Krieg 552 Commando) + "AUG" Rifle Steyr AUG (Bullpup) + + "M249" Machine gun FN M249 (ES M249 Para) + + "Scout" Sniper Steyr Scout (Schmidt Scout) + "SG550" Sniper SIG SG550 (Krieg 550 Commando) + "G3SG1" Sniper G3/SG-1 (D3/AU-1) + "AWP" Sniper Arctic Warfare Magnum (Magnum Sniper Rifle) + + "hegrenade" Grenade High explosive grenade + "flashbang" Grenade Flash bang + "smokegrenade" Grenade Smoke grenade + + "NVGs" Equipment Night vision goggles + + +3.8.3 WEAPON COMMANDS + +Available commands for managing weapon restrictions. These can be used in the +main configuration file, or on a per-map basis with map configuration files. + + Syntax: Argument: Description: + --------------------------------------------------------------------------- + zr_restrict [weapon|weapontype] ... + Restricts one or more weapons or weapon types (group). + + weapon The weapon name. + weapon type The weapon type group. + + --------------------------------------------------------------------------- + zr_unrestrict + Unrestricts one or more weapons or weapon types (group). + + weapon The weapon name. + weapon type The weapon type group. + + --------------------------------------------------------------------------- + zmarket + Displays the ZMarket weapon menu. + + +3.9 HIT GROUP CONFIGURATION +------------------------------ + +A hit group configuration makes it possible to disable damage or adjust knock +back per hit group. This is useful for fine tuning game balance. + +The hit group configuration file is a file in Valve's key/value format with +the root key "hitgroups" and a sub key for each hit group. + +The default file is: + + addons/sourcemod/configs/zr/hitgroups.txt + + +3.9.1 HIT GROUP ATTRIBUTES + + Attribute: Type: Limits/Requirements: + =========================================================================== + index number - + The hit group index. + + Options: + 0 - Generic + 1 - Head + 2 - Chest + 3 - Stomach + 4 - Left Arm + 5 - Right Arm + 6 - Left Leg + 7 - Right Leg + 8 - Gear + + --------------------------------------------------------------------------- + damage text "yes" or "no" + Allows damage to be done on the specified hit group for zombies. + + Options: + "yes" - Allow damage + "no" - Ignore damage + + --------------------------------------------------------------------------- + knockback decimal - + The knock back multiplier for the hitgroup. 1.0 for no change. + + +3.10 INFECTION SETTINGS +------------------------- + + +3.11 DAMAGE CONTROL SETTINGS +------------------------------ + + +3.12 MONEY CONFIGURATION +-------------------------- + + + +4.0 HOW TO PLAY +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +(how to defend against zombies, in a fair way) +(zombie tricks) + + +5.0 TROUBLESHOOTING +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +5.1 VERIFY REQUIREMENTS +-------------------------- + + +5.2 STARTUP +-------------- + + +5.3 ERROR MESSAGES +--------------------- + + +5.4 COMMON PROBLEMS +---------------------- + + +6.0 GAMEPLAY GUIDELINES +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +7.0 REPORTING BUGS AND IMPROVEMENTS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~