diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..b35a3f6
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,10 @@
+*.sp text eol=native
+*.inc text eol=native
+
+*.txt text eol=crlf
+*.cfg text eol=crlf
+
+*.sh text eol=lf
+*.bat text eol=crlf
+
+Makefile text eol=lf
diff --git a/Makefile b/Makefile
index d3262ab..e13ca5b 100644
--- a/Makefile
+++ b/Makefile
@@ -4,8 +4,8 @@
SOURCEDIR=src
SMINCLUDES=env/include
BUILDDIR=build
-SPCOMP_LINUX=env/linux/bin/spcomp-1.4.1
-SPCOMP_DARWIN=env/darwin/bin/spcomp-1.4.1
+SPCOMP_LINUX=env/linux/bin/spcomp-1.6.0
+SPCOMP_DARWIN=env/darwin/bin/spcomp-1.6.0
DOS2UNIX_LINUX=dos2unix -p
DOS2UNIX_DARWIN=env/darwin/bin/dos2unix -p
VERSIONDUMP=./updateversion.sh
diff --git a/build.sh b/build.sh
index 9b0b473..5b6cbc5 100755
--- a/build.sh
+++ b/build.sh
@@ -1,7 +1,7 @@
#!/bin/sh
VERSION="zombiereloaded-3.1"
-REVISION=$(hg id -n)
+REVISION=$(git rev-parse --short HEAD)
SYNTAX="Usage: $0 [--patch ]"
@@ -18,7 +18,7 @@ SOURCE_DEST=$RELEASEDIR/addons/sourcemod/scripting
DOCS_DEST=$RELEASEDIR/zrdocs
PLUGINDIR=$RELEASEDIR/addons/sourcemod/plugins
EXTENSIONDIR=$RELEASEDIR/addons/sourcemod/extensions
-ZIPFILE=$VERSION-r$REVISION.zip
+ZIPFILE=$VERSION-$REVISION.zip
MAKEPATCH=false
@@ -47,7 +47,7 @@ then
exit 1
fi
- ZIPFILE=$VERSION-patch-r$PATCHREV-r$REVISION.zip
+ ZIPFILE=$VERSION-patch-$PATCHREV-$REVISION.zip
else
echo "Missing base revision number. $SYNTAX"
exit 1
diff --git a/compile.bat b/compile.bat
index 769c6ee..fecb379 100644
--- a/compile.bat
+++ b/compile.bat
@@ -1,25 +1,25 @@
-@echo off
-
-set SOURCEDIR=src
-set SMINCLUDES=env\include
-set BUILDDIR=build
-set SPCOMP=env\win32\bin\spcomp-1.4.1.exe
-set VERSIONDUMP=updateversion.bat
-
-:: Dump version and revision information first.
-echo Updating version and revision info...
-start /wait %VERSIONDUMP%
-
-:: Make build directory.
-if not exist "%BUILDDIR%" (
- mkdir %BUILDDIR%
-)
-
-:: Compile.
-echo Starting compiler:
-%SPCOMP% -i%SOURCEDIR% -i%SOURCEDIR%/include -i%SMINCLUDES% -o%BUILDDIR%/zombiereloaded.smx %SOURCEDIR%\zombiereloaded.sp
-
-echo Compiling done. This script is looped, close if you're done.
-pause
-
-compile.bat
+@echo off
+
+set SOURCEDIR=src
+set SMINCLUDES=env\include
+set BUILDDIR=build
+set SPCOMP=env\win32\bin\spcomp-1.6.0.exe
+set VERSIONDUMP=updateversion.bat
+
+:: Dump version and revision information first.
+echo Updating version and revision info...
+start /wait %VERSIONDUMP%
+
+:: Make build directory.
+if not exist "%BUILDDIR%" (
+ mkdir %BUILDDIR%
+)
+
+:: Compile.
+echo Starting compiler:
+%SPCOMP% -i%SOURCEDIR% -i%SOURCEDIR%/include -i%SMINCLUDES% -o%BUILDDIR%/zombiereloaded.smx %SOURCEDIR%\zombiereloaded.sp
+
+echo Compiling done. This script is looped, close if you're done.
+pause
+
+compile.bat
diff --git a/compiling.txt b/compiling.txt
index af88f7a..14b797d 100644
--- a/compiling.txt
+++ b/compiling.txt
@@ -1,30 +1,30 @@
-This plugin has a command for dumping detailed version info (zr_version) based
-on info from a automatically generated file (hgversion.h.inc).
-
-There's a script that generate this file and must be executed every time before
-compiling:
-
- Linux: updateversion.sh
- Windows: updateversion.bat (Executes updateversion.sh using Cygwin)
-
-Mercurial (or TortoiseHG) must be installed for this script to work. If you
-don't have Mercurial, there's an option to disable version info. In
-zombiereloaded.sp there's a line like this:
-
- #define ADD_VERSION_INFO
-
-To disable it, comment that line like this:
-
- //#define ADD_VERSION_INFO
-
-Then you should be able to compile without hgversion.h.inc.
-
-On linux use the makefile to compile since that one will do most of the work.
-Make sure you clean any existing builds before compiling:
-
- make clean
- make
-
-For compiling on windows, run:
-
- compile.bat
+This plugin has a command for dumping detailed version info (zr_version) based
+on info from a automatically generated file (hgversion.h.inc).
+
+There's a script that generate this file and must be executed every time before
+compiling:
+
+ Linux: updateversion.sh
+ Windows: updateversion.bat (Executes updateversion.sh using Cygwin)
+
+Mercurial (or TortoiseHG) must be installed for this script to work. If you
+don't have Mercurial, there's an option to disable version info. In
+zombiereloaded.sp there's a line like this:
+
+ #define ADD_VERSION_INFO
+
+To disable it, comment that line like this:
+
+ //#define ADD_VERSION_INFO
+
+Then you should be able to compile without hgversion.h.inc.
+
+On linux use the makefile to compile since that one will do most of the work.
+Make sure you clean any existing builds before compiling:
+
+ make clean
+ make
+
+For compiling on windows, run:
+
+ compile.bat
diff --git a/cstrike/addons/sourcemod/configs/zr/downloads.txt b/cstrike/addons/sourcemod/configs/zr/downloads.txt
index 12acf99..64ae8c9 100644
--- a/cstrike/addons/sourcemod/configs/zr/downloads.txt
+++ b/cstrike/addons/sourcemod/configs/zr/downloads.txt
@@ -1,33 +1,33 @@
-// ============================================================================
-//
-// ZOMBIE:RELOADED
-// Downloads configuration
-//
-// See Download List (3.6) section in the manual for detailed info.
-//
-// ============================================================================
-// * Each uncommented line will be used as a file path for clients to download.
-// ----------------------------------------------------------------------------
-// Defaults:
-// ----------------------------------------------------------------------------
-
-materials/models/player/zh/Zombie_Classic_sheet.vmt
-materials/models/player/zh/corpse1.vmt
-materials/models/player/zh/Charple1_sheet.vmt
-
-// hellknight
-materials/models/player/ics/hellknight_red/estuche.vmt
-materials/models/player/ics/hellknight_red/estuche.vtf
-materials/models/player/ics/hellknight_red/hellknight.vmt
-materials/models/player/ics/hellknight_red/hellknight.vtf
-materials/models/player/ics/hellknight_red/hellknight_normal.vtf
-
-// team win overlays
-materials/overlays/zr/zombies_win.vtf
-materials/overlays/zr/zombies_win.vmt
-materials/overlays/zr/humans_win.vtf
-materials/overlays/zr/humans_win.vmt
-
-// zvision
-materials/overlays/zr/zvision.vtf
-materials/overlays/zr/zvision.vmt
+// ============================================================================
+//
+// ZOMBIE:RELOADED
+// Downloads configuration
+//
+// See Download List (3.6) section in the manual for detailed info.
+//
+// ============================================================================
+// * Each uncommented line will be used as a file path for clients to download.
+// ----------------------------------------------------------------------------
+// Defaults:
+// ----------------------------------------------------------------------------
+
+materials/models/player/zh/Zombie_Classic_sheet.vmt
+materials/models/player/zh/corpse1.vmt
+materials/models/player/zh/Charple1_sheet.vmt
+
+// hellknight
+materials/models/player/ics/hellknight_red/estuche.vmt
+materials/models/player/ics/hellknight_red/estuche.vtf
+materials/models/player/ics/hellknight_red/hellknight.vmt
+materials/models/player/ics/hellknight_red/hellknight.vtf
+materials/models/player/ics/hellknight_red/hellknight_normal.vtf
+
+// team win overlays
+materials/overlays/zr/zombies_win.vtf
+materials/overlays/zr/zombies_win.vmt
+materials/overlays/zr/humans_win.vtf
+materials/overlays/zr/humans_win.vmt
+
+// zvision
+materials/overlays/zr/zvision.vtf
+materials/overlays/zr/zvision.vmt
diff --git a/cstrike/addons/sourcemod/configs/zr/hitgroups.txt b/cstrike/addons/sourcemod/configs/zr/hitgroups.txt
index dc7c729..303b236 100644
--- a/cstrike/addons/sourcemod/configs/zr/hitgroups.txt
+++ b/cstrike/addons/sourcemod/configs/zr/hitgroups.txt
@@ -1,127 +1,127 @@
-// ============================================================================
-//
-// ZOMBIE:RELOADED
-// Hitgroup configuration
-//
-// Check the hitgroup configuration section in the manual for detailed info.
-//
-// ============================================================================
-//
-// SHORT DESCRIPTIONS
-//
-// Attribute: Values: Description:
-// ----------------------------------------------------------------------------
-// index number The hitgroup index.
-// damage on/off Allow damage to be done on this hitgroup for zombies.
-// knockback decimal The knockback multiplier for this hitgroup.
-
-"hitgroups" // Counter-Strike: Source hitgroups
-{
- "Generic"
- {
- // General
- "index" "0"
-
- // Damage
- "damage" "on"
-
- // Knockback
- "knockback" "1.0"
- }
-
- "Head"
- {
- // General
- "index" "1"
-
- // Damage
- "damage" "on"
-
- // Knockback
- "knockback" "1.2"
- }
-
- "Chest"
- {
- // General
- "index" "2"
-
- // Damage
- "damage" "on"
-
- // Knockback
- "knockback" "1.0"
- }
-
- "Stomach"
- {
- // General
- "index" "3"
-
- // Damage
- "damage" "on"
-
- // Knockback
- "knockback" "1.0"
- }
-
- "LeftArm"
- {
- // General
- "index" "4"
-
- // Damage
- "damage" "on"
-
- // Knockback
- "knockback" "0.9"
- }
-
- "RightArm"
- {
- // General
- "index" "5"
-
- // Damage
- "damage" "on"
-
- // Knockback
- "knockback" "0.9"
- }
-
- "LeftLeg"
- {
- // General
- "index" "6"
-
- // Damage
- "damage" "on"
-
- // Knockback
- "knockback" "0.9"
- }
-
- "RightLeg"
- {
- // General
- "index" "7"
-
- // Damage
- "damage" "on"
-
- // Knockback
- "knockback" "0.9"
- }
-
- "Gear"
- {
- // General
- "index" "8"
-
- // Damage
- "damage" "on"
-
- // Knockback
- "knockback" "1.0"
- }
-}
+// ============================================================================
+//
+// ZOMBIE:RELOADED
+// Hitgroup configuration
+//
+// Check the hitgroup configuration section in the manual for detailed info.
+//
+// ============================================================================
+//
+// SHORT DESCRIPTIONS
+//
+// Attribute: Values: Description:
+// ----------------------------------------------------------------------------
+// index number The hitgroup index.
+// damage on/off Allow damage to be done on this hitgroup for zombies.
+// knockback decimal The knockback multiplier for this hitgroup.
+
+"hitgroups" // Counter-Strike: Source hitgroups
+{
+ "Generic"
+ {
+ // General
+ "index" "0"
+
+ // Damage
+ "damage" "on"
+
+ // Knockback
+ "knockback" "1.0"
+ }
+
+ "Head"
+ {
+ // General
+ "index" "1"
+
+ // Damage
+ "damage" "on"
+
+ // Knockback
+ "knockback" "1.2"
+ }
+
+ "Chest"
+ {
+ // General
+ "index" "2"
+
+ // Damage
+ "damage" "on"
+
+ // Knockback
+ "knockback" "1.0"
+ }
+
+ "Stomach"
+ {
+ // General
+ "index" "3"
+
+ // Damage
+ "damage" "on"
+
+ // Knockback
+ "knockback" "1.0"
+ }
+
+ "LeftArm"
+ {
+ // General
+ "index" "4"
+
+ // Damage
+ "damage" "on"
+
+ // Knockback
+ "knockback" "0.9"
+ }
+
+ "RightArm"
+ {
+ // General
+ "index" "5"
+
+ // Damage
+ "damage" "on"
+
+ // Knockback
+ "knockback" "0.9"
+ }
+
+ "LeftLeg"
+ {
+ // General
+ "index" "6"
+
+ // Damage
+ "damage" "on"
+
+ // Knockback
+ "knockback" "0.9"
+ }
+
+ "RightLeg"
+ {
+ // General
+ "index" "7"
+
+ // Damage
+ "damage" "on"
+
+ // Knockback
+ "knockback" "0.9"
+ }
+
+ "Gear"
+ {
+ // General
+ "index" "8"
+
+ // Damage
+ "damage" "on"
+
+ // Knockback
+ "knockback" "1.0"
+ }
+}
diff --git a/cstrike/addons/sourcemod/configs/zr/models.txt b/cstrike/addons/sourcemod/configs/zr/models.txt
index 8c8f450..af9424d 100644
--- a/cstrike/addons/sourcemod/configs/zr/models.txt
+++ b/cstrike/addons/sourcemod/configs/zr/models.txt
@@ -1,98 +1,98 @@
-// ============================================================================
-//
-// ZOMBIE:RELOADED
-// Model configuration
-//
-// See Model Configuration (3.5) section in the manual for detailed info.
-//
-// ============================================================================
-//
-// SHORT DESCRIPTIONS
-//
-// Attribute: Description:
-// ----------------------------------------------------------------------------
-// name Name of model file, without extension.
-// path Path to model files. MUST end with "/".
-// team Model type:
-// "zombies"
-// "humans"
-// access Access type:
-// "public" - Everyone can use the model.
-// "admins" - Model can only be used by admins.
-// "hidden" - Model is excluded from public random selections.
-// "motherzombies" - Model can only be used by mother zombies.
-// "group" - Use group authentication.
-// group If access is "group": A SourceMod group name. Otherwise blank ("").
-
-"models"
-{
- "zh_charple001"
- {
- "name" "zh_charple001"
- "path" "models/player/zh/"
- "team" "zombies"
- "access" "public"
- "group" ""
- }
-
- "zh_zombie003"
- {
- "name" "zh_zombie003"
- "path" "models/player/zh/"
- "team" "zombies"
- "access" "public"
- "group" ""
- }
-
- "zh_corpse002"
- {
- "name" "zh_corpse002"
- "path" "models/player/zh/"
- "team" "zombies"
- "access" "public"
- "group" ""
- }
-
- "t_guerilla"
- {
- "name" "t_guerilla"
- "path" "models/player/ics/hellknight_red/"
- "team" "zombies"
- "access" "public"
- "group" ""
- }
-
- // Special model examples:
- // -----------------------
-
- // Only admins can use this zombie model.
- //"admin_zombie"
- //{
- // "name" "1337model"
- // "path" "models/player/adminmodels/"
- // "team" "zombies"
- // "access" "admins"
- // "group" ""
- //}
-
- // Only members of the zr_vip group in SourceMod can use this human model.
- //"vip_human"
- //{
- // "name" "vipmodel"
- // "path" "models/player/vip/"
- // "team" "humans"
- // "access" "group"
- // "group" "zr_vip"
- //}
-
- // This model will be excluded from public random selections. Only classes
- // that use "random_hidden" or explicit specify this model will be able to use it.
- //"hidden"
- //{
- // "name" "hiddenmodel"
- // "path" "models/player/"
- // "team" "humans"
- // "access" "hidden"
- // "group" ""
- //}
-}
+// ============================================================================
+//
+// ZOMBIE:RELOADED
+// Model configuration
+//
+// See Model Configuration (3.5) section in the manual for detailed info.
+//
+// ============================================================================
+//
+// SHORT DESCRIPTIONS
+//
+// Attribute: Description:
+// ----------------------------------------------------------------------------
+// name Name of model file, without extension.
+// path Path to model files. MUST end with "/".
+// team Model type:
+// "zombies"
+// "humans"
+// access Access type:
+// "public" - Everyone can use the model.
+// "admins" - Model can only be used by admins.
+// "hidden" - Model is excluded from public random selections.
+// "motherzombies" - Model can only be used by mother zombies.
+// "group" - Use group authentication.
+// group If access is "group": A SourceMod group name. Otherwise blank ("").
+
+"models"
+{
+ "zh_charple001"
+ {
+ "name" "zh_charple001"
+ "path" "models/player/zh/"
+ "team" "zombies"
+ "access" "public"
+ "group" ""
+ }
+
+ "zh_zombie003"
+ {
+ "name" "zh_zombie003"
+ "path" "models/player/zh/"
+ "team" "zombies"
+ "access" "public"
+ "group" ""
+ }
+
+ "zh_corpse002"
+ {
+ "name" "zh_corpse002"
+ "path" "models/player/zh/"
+ "team" "zombies"
+ "access" "public"
+ "group" ""
+ }
+
+ "t_guerilla"
+ {
+ "name" "t_guerilla"
+ "path" "models/player/ics/hellknight_red/"
+ "team" "zombies"
+ "access" "public"
+ "group" ""
+ }
+
+ // Special model examples:
+ // -----------------------
+
+ // Only admins can use this zombie model.
+ //"admin_zombie"
+ //{
+ // "name" "1337model"
+ // "path" "models/player/adminmodels/"
+ // "team" "zombies"
+ // "access" "admins"
+ // "group" ""
+ //}
+
+ // Only members of the zr_vip group in SourceMod can use this human model.
+ //"vip_human"
+ //{
+ // "name" "vipmodel"
+ // "path" "models/player/vip/"
+ // "team" "humans"
+ // "access" "group"
+ // "group" "zr_vip"
+ //}
+
+ // This model will be excluded from public random selections. Only classes
+ // that use "random_hidden" or explicit specify this model will be able to use it.
+ //"hidden"
+ //{
+ // "name" "hiddenmodel"
+ // "path" "models/player/"
+ // "team" "humans"
+ // "access" "hidden"
+ // "group" ""
+ //}
+}
diff --git a/cstrike/addons/sourcemod/configs/zr/playerclasses-nemesis.txt b/cstrike/addons/sourcemod/configs/zr/playerclasses-nemesis.txt
index 9fde68f..73e2584 100644
--- a/cstrike/addons/sourcemod/configs/zr/playerclasses-nemesis.txt
+++ b/cstrike/addons/sourcemod/configs/zr/playerclasses-nemesis.txt
@@ -1,298 +1,298 @@
-// ============================================================================
-//
-// Zombie:Reloaded Class configuration
-//
-// See Class Configuration (3.7) in the manual for detailed info.
-//
-// ============================================================================
-//
-// SHORT DESCRIPTIONS
-//
-// Attribute: Values: Description:
-// ----------------------------------------------------------------------------
-// enabled yes/no Enables or disables a class.
-// team number Specifies what team the class belongs to:
-// 0 - Zombies
-// 1 - Humans
-// 2 - Admin mode classes (incomplete feautre!)
-// team_default yes/no Marks the class as the default class in the team.
-// flags number Special class flags (bit field). To combine multiple flags
-// use a sum of the flag values. Available flags:
-// 1 - Admins only
-// 2 - Mother zombies only
-// group text Restrict class to member of this SourceMod group. Leave blank for no restriction.
-// name text The class name used in class menu.
-// description text The class description used in class menu.
-// model_path text Path to model to use. Relative to cstrike folder.
-// alpha_initial number Initial transparency setting.
-// alpha_damaged number Transparency when damaged.
-// alpha_damage number How much damage to do before switching alpha.
-// overlay_path text Overlay displayed at the player.
-// nvgs yes/no Give and turn on night vision.
-// fov number Field of view value. 90 is default.
-// has_napalm yes/no Allows player to throw napalm grenades. Humans only.
-// napalm_time decimal Napalm burn duration. Zombies only.
-// immunity_mode text Special immunity modes. Some modes only works on humans or zombies:
-// "none" - Instant infection.
-// "kill" - Humans are instantly killed instead of turning zombies when attacked by zombies.
-// "full" - Completely immune. Humans can't be infected, zombies don't receive damage or knock back. Careful with this, it might not be that fun.
-// "infect" - Humans are immune to infections until HP go below a threshold. Threshold at zero enable stabbing to death.
-// "damage" - Zombies are immune to damage from humans/grenades, but still vulnerable to knock back.
-// "delay" - Delay infection for a certain number of seconds.
-// "shield" - Shield against infections (humans) or knock back (zombies) for a certain amount of seconds (similar to TF2's übercharge). Deploy with "zshield" command.
-// immunity_amount number Immunity data value (humans only). Depends on the immunity mode above:
-// "infect" - HP threshold. Infection will be allowed when HP go below this value. Zero will enable stabbing to death.
-// "delay" - Number of seconds the infection is delayed since first hit by a zombie.
-// "shield" - Number of seconds the shield is active.
-// immunity_cooldown number Number of seconds of cooldown for temporary immunity actions, depending on mode.
-// "delay" - Number of seconds the delay is reduced every time a zombie attack, while a delayed infection is in progress.
-// "shield" - Number of seconds the player has to wait before the shield can be used again.
-// no_fall_damage on/off Disables fall damage.
-// health number How many health points to give.
-// health_regen_interval decimal Sets the regeneration interval. 0 to disable.
-// health_regen_amount number How much HP to give per interval.
-// health_infect_gain number How much HP to give when the player infects someone. Zombies only.
-// kill_bonus number How many points to give per kill. Zombies only.
-// speed decimal The player speed. In LMV mode 300 is normal speed, 600 is double speed.
-// knockback decimal Force of the knockback when shot at. Zombies only.
-// jump_height decimal Multiplier of the players jump height. 0.0 means no jump boost, 1.0 is normal.
-// jump_distance decimal Multiplier of the players jump distance. 0.0 means no forward jump boost, 1.0 is normal.
-
-"classes"
-{
- // ------------------------------------------
- //
- // Zombie classes
- //
- // ------------------------------------------
- "zombie_nemesis"
- {
- // General
- "enabled" "yes"
- "team" "0"
- "team_default" "yes"
- "flags" "0"
- "group" ""
-
- "name" "Nemesis"
- "description" "+++ Everything!"
-
- // Model
- "model_path" "models/player/ics/hellknight_red/t_guerilla.mdl"
- "alpha_initial" "255"
- "alpha_damaged" "255"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" "overlays/zr/zvision"
- "nvgs" "no"
- "fov" "120"
-
- // Effects
- "has_napalm" "no"
- "napalm_time" "15.0"
-
- // Player behavior
- "immunity_mode" "none"
- "immunity_amount" "1"
- "immunity_cooldown" "60"
- "no_fall_damage" "yes"
-
- "health" "64000"
- "health_regen_interval" "0.0"
- "health_regen_amount" "0"
- "health_infect_gain" "100"
- "kill_bonus" "2"
-
- "speed" "400"
- "knockback" "1.8"
- "jump_height" "1.3"
- "jump_distance" "1.6"
- }
-
- // ------------------------------------------
- //
- // Human classes
- //
- // ------------------------------------------
-
- "human_normal"
- {
- // General
- "enabled" "yes"
- "team" "1"
- "team_default" "yes"
- "flags" "0"
- "group" ""
-
- "name" "Normal Human"
- "description" "Default Counter-Strike settings"
-
- // Model
- "model_path" "default"
- "alpha_initial" "255"
- "alpha_damaged" "255"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" ""
- "nvgs" "no"
- "fov" "90"
-
- // Effects
- "has_napalm" "yes"
- "napalm_time" "0.0"
-
- // Player behavior
- "immunity_mode" "kill"
- "immunity_amount" "1"
- "immunity_cooldown" "60"
- "no_fall_damage" "no"
-
- "health" "100"
- "health_regen_interval" "0.0"
- "health_regen_amount" "0"
- "health_infect_gain" "0"
- "kill_bonus" "2"
-
- "speed" "300"
- "knockback" "0"
- "jump_height" "1.0"
- "jump_distance" "1.0"
- }
-
- "human_speedy"
- {
- // General
- "enabled" "yes"
- "team" "1"
- "team_default" "no"
- "flags" "0"
- "group" ""
-
- "name" "Speedy"
- "description" "+Speed"
-
- // Model
- "model_path" "default"
- "alpha_initial" "255"
- "alpha_damaged" "255"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" ""
- "nvgs" "no"
- "fov" "90"
-
- // Effects
- "has_napalm" "no"
- "napalm_time" "0.0"
-
- // Player behavior
- "immunity_mode" "kill"
- "immunity_amount" "1"
- "immunity_cooldown" "60"
- "no_fall_damage" "0"
-
- "health" "100"
- "health_regen_interval" "0.0"
- "health_regen_amount" "0"
- "health_infect_gain" "0"
- "kill_bonus" "1"
-
- "speed" "360"
- "knockback" "0"
- "jump_height" "1.0"
- "jump_distance" "1.0"
- }
-
- "human_light"
- {
- // General
- "enabled" "yes"
- "team" "1"
- "team_default" "no"
- "flags" "0"
- "group" ""
-
- "name" "Light"
- "description" "-Speed | +Jump | +Immunity"
-
- // Model
- "model_path" "default"
- "alpha_initial" "255"
- "alpha_damaged" "255"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" ""
- "nvgs" "no"
- "fov" "90"
-
- // Effects
- "has_napalm" "yes"
- "napalm_time" "0.0"
-
- // Player behavior
- "immunity_mode" "kill"
- "immunity_amount" "1"
- "immunity_cooldown" "60"
- "no_fall_damage" "yes"
-
- "health" "100"
- "health_regen_interval" "0.0"
- "health_regen_amount" "0"
- "health_infect_gain" "0"
- "kill_bonus" "1"
-
- "speed" "260"
- "knockback" "0"
- "jump_height" "1.4"
- "jump_distance" "1.4"
- }
-
- "human_stealth"
- {
- // General
- "enabled" "yes"
- "team" "1"
- "team_default" "no"
- "flags" "0"
- "group" ""
-
- "name" "Stealth"
- "description" "Slow, but almost invisible"
-
- // Model
- "model_path" "default"
- "alpha_initial" "15"
- "alpha_damaged" "15"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" ""
- "nvgs" "no"
- "fov" "90"
-
- // Effects
- "has_napalm" "yes"
- "napalm_time" "0.0"
-
- // Player behavior
- "immunity_mode" "kill"
- "immunity_amount" "1"
- "immunity_cooldown" "60"
- "no_fall_damage" "yes"
-
- "health" "100"
- "health_regen_interval" "0.0"
- "health_regen_amount" "0"
- "health_infect_gain" "0"
- "kill_bonus" "1"
-
- "speed" "260"
- "knockback" "0"
- "jump_height" "1.4"
- "jump_distance" "1.4"
- }
-}
+// ============================================================================
+//
+// Zombie:Reloaded Class configuration
+//
+// See Class Configuration (3.7) in the manual for detailed info.
+//
+// ============================================================================
+//
+// SHORT DESCRIPTIONS
+//
+// Attribute: Values: Description:
+// ----------------------------------------------------------------------------
+// enabled yes/no Enables or disables a class.
+// team number Specifies what team the class belongs to:
+// 0 - Zombies
+// 1 - Humans
+// 2 - Admin mode classes (incomplete feautre!)
+// team_default yes/no Marks the class as the default class in the team.
+// flags number Special class flags (bit field). To combine multiple flags
+// use a sum of the flag values. Available flags:
+// 1 - Admins only
+// 2 - Mother zombies only
+// group text Restrict class to member of this SourceMod group. Leave blank for no restriction.
+// name text The class name used in class menu.
+// description text The class description used in class menu.
+// model_path text Path to model to use. Relative to cstrike folder.
+// alpha_initial number Initial transparency setting.
+// alpha_damaged number Transparency when damaged.
+// alpha_damage number How much damage to do before switching alpha.
+// overlay_path text Overlay displayed at the player.
+// nvgs yes/no Give and turn on night vision.
+// fov number Field of view value. 90 is default.
+// has_napalm yes/no Allows player to throw napalm grenades. Humans only.
+// napalm_time decimal Napalm burn duration. Zombies only.
+// immunity_mode text Special immunity modes. Some modes only works on humans or zombies:
+// "none" - Instant infection.
+// "kill" - Humans are instantly killed instead of turning zombies when attacked by zombies.
+// "full" - Completely immune. Humans can't be infected, zombies don't receive damage or knock back. Careful with this, it might not be that fun.
+// "infect" - Humans are immune to infections until HP go below a threshold. Threshold at zero enable stabbing to death.
+// "damage" - Zombies are immune to damage from humans/grenades, but still vulnerable to knock back.
+// "delay" - Delay infection for a certain number of seconds.
+// "shield" - Shield against infections (humans) or knock back (zombies) for a certain amount of seconds (similar to TF2's übercharge). Deploy with "zshield" command.
+// immunity_amount number Immunity data value (humans only). Depends on the immunity mode above:
+// "infect" - HP threshold. Infection will be allowed when HP go below this value. Zero will enable stabbing to death.
+// "delay" - Number of seconds the infection is delayed since first hit by a zombie.
+// "shield" - Number of seconds the shield is active.
+// immunity_cooldown number Number of seconds of cooldown for temporary immunity actions, depending on mode.
+// "delay" - Number of seconds the delay is reduced every time a zombie attack, while a delayed infection is in progress.
+// "shield" - Number of seconds the player has to wait before the shield can be used again.
+// no_fall_damage on/off Disables fall damage.
+// health number How many health points to give.
+// health_regen_interval decimal Sets the regeneration interval. 0 to disable.
+// health_regen_amount number How much HP to give per interval.
+// health_infect_gain number How much HP to give when the player infects someone. Zombies only.
+// kill_bonus number How many points to give per kill. Zombies only.
+// speed decimal The player speed. In LMV mode 300 is normal speed, 600 is double speed.
+// knockback decimal Force of the knockback when shot at. Zombies only.
+// jump_height decimal Multiplier of the players jump height. 0.0 means no jump boost, 1.0 is normal.
+// jump_distance decimal Multiplier of the players jump distance. 0.0 means no forward jump boost, 1.0 is normal.
+
+"classes"
+{
+ // ------------------------------------------
+ //
+ // Zombie classes
+ //
+ // ------------------------------------------
+ "zombie_nemesis"
+ {
+ // General
+ "enabled" "yes"
+ "team" "0"
+ "team_default" "yes"
+ "flags" "0"
+ "group" ""
+
+ "name" "Nemesis"
+ "description" "+++ Everything!"
+
+ // Model
+ "model_path" "models/player/ics/hellknight_red/t_guerilla.mdl"
+ "alpha_initial" "255"
+ "alpha_damaged" "255"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" "overlays/zr/zvision"
+ "nvgs" "no"
+ "fov" "120"
+
+ // Effects
+ "has_napalm" "no"
+ "napalm_time" "15.0"
+
+ // Player behavior
+ "immunity_mode" "none"
+ "immunity_amount" "1"
+ "immunity_cooldown" "60"
+ "no_fall_damage" "yes"
+
+ "health" "64000"
+ "health_regen_interval" "0.0"
+ "health_regen_amount" "0"
+ "health_infect_gain" "100"
+ "kill_bonus" "2"
+
+ "speed" "400"
+ "knockback" "1.8"
+ "jump_height" "1.3"
+ "jump_distance" "1.6"
+ }
+
+ // ------------------------------------------
+ //
+ // Human classes
+ //
+ // ------------------------------------------
+
+ "human_normal"
+ {
+ // General
+ "enabled" "yes"
+ "team" "1"
+ "team_default" "yes"
+ "flags" "0"
+ "group" ""
+
+ "name" "Normal Human"
+ "description" "Default Counter-Strike settings"
+
+ // Model
+ "model_path" "default"
+ "alpha_initial" "255"
+ "alpha_damaged" "255"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" ""
+ "nvgs" "no"
+ "fov" "90"
+
+ // Effects
+ "has_napalm" "yes"
+ "napalm_time" "0.0"
+
+ // Player behavior
+ "immunity_mode" "kill"
+ "immunity_amount" "1"
+ "immunity_cooldown" "60"
+ "no_fall_damage" "no"
+
+ "health" "100"
+ "health_regen_interval" "0.0"
+ "health_regen_amount" "0"
+ "health_infect_gain" "0"
+ "kill_bonus" "2"
+
+ "speed" "300"
+ "knockback" "0"
+ "jump_height" "1.0"
+ "jump_distance" "1.0"
+ }
+
+ "human_speedy"
+ {
+ // General
+ "enabled" "yes"
+ "team" "1"
+ "team_default" "no"
+ "flags" "0"
+ "group" ""
+
+ "name" "Speedy"
+ "description" "+Speed"
+
+ // Model
+ "model_path" "default"
+ "alpha_initial" "255"
+ "alpha_damaged" "255"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" ""
+ "nvgs" "no"
+ "fov" "90"
+
+ // Effects
+ "has_napalm" "no"
+ "napalm_time" "0.0"
+
+ // Player behavior
+ "immunity_mode" "kill"
+ "immunity_amount" "1"
+ "immunity_cooldown" "60"
+ "no_fall_damage" "0"
+
+ "health" "100"
+ "health_regen_interval" "0.0"
+ "health_regen_amount" "0"
+ "health_infect_gain" "0"
+ "kill_bonus" "1"
+
+ "speed" "360"
+ "knockback" "0"
+ "jump_height" "1.0"
+ "jump_distance" "1.0"
+ }
+
+ "human_light"
+ {
+ // General
+ "enabled" "yes"
+ "team" "1"
+ "team_default" "no"
+ "flags" "0"
+ "group" ""
+
+ "name" "Light"
+ "description" "-Speed | +Jump | +Immunity"
+
+ // Model
+ "model_path" "default"
+ "alpha_initial" "255"
+ "alpha_damaged" "255"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" ""
+ "nvgs" "no"
+ "fov" "90"
+
+ // Effects
+ "has_napalm" "yes"
+ "napalm_time" "0.0"
+
+ // Player behavior
+ "immunity_mode" "kill"
+ "immunity_amount" "1"
+ "immunity_cooldown" "60"
+ "no_fall_damage" "yes"
+
+ "health" "100"
+ "health_regen_interval" "0.0"
+ "health_regen_amount" "0"
+ "health_infect_gain" "0"
+ "kill_bonus" "1"
+
+ "speed" "260"
+ "knockback" "0"
+ "jump_height" "1.4"
+ "jump_distance" "1.4"
+ }
+
+ "human_stealth"
+ {
+ // General
+ "enabled" "yes"
+ "team" "1"
+ "team_default" "no"
+ "flags" "0"
+ "group" ""
+
+ "name" "Stealth"
+ "description" "Slow, but almost invisible"
+
+ // Model
+ "model_path" "default"
+ "alpha_initial" "15"
+ "alpha_damaged" "15"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" ""
+ "nvgs" "no"
+ "fov" "90"
+
+ // Effects
+ "has_napalm" "yes"
+ "napalm_time" "0.0"
+
+ // Player behavior
+ "immunity_mode" "kill"
+ "immunity_amount" "1"
+ "immunity_cooldown" "60"
+ "no_fall_damage" "yes"
+
+ "health" "100"
+ "health_regen_interval" "0.0"
+ "health_regen_amount" "0"
+ "health_infect_gain" "0"
+ "kill_bonus" "1"
+
+ "speed" "260"
+ "knockback" "0"
+ "jump_height" "1.4"
+ "jump_distance" "1.4"
+ }
+}
diff --git a/cstrike/addons/sourcemod/configs/zr/playerclasses.txt b/cstrike/addons/sourcemod/configs/zr/playerclasses.txt
index 4b272af..b543408 100644
--- a/cstrike/addons/sourcemod/configs/zr/playerclasses.txt
+++ b/cstrike/addons/sourcemod/configs/zr/playerclasses.txt
@@ -1,580 +1,580 @@
-// ============================================================================
-//
-// Zombie:Reloaded Class configuration
-//
-// See Class Configuration (3.7) in the manual for detailed info.
-//
-// ============================================================================
-//
-// SHORT DESCRIPTIONS
-//
-// Attribute: Values: Description:
-// ----------------------------------------------------------------------------
-// enabled yes/no Enables or disables a class.
-// team number Specifies what team the class belongs to:
-// 0 - Zombies
-// 1 - Humans
-// 2 - Admin mode classes (incomplete feautre!)
-// team_default yes/no Marks the class as the default class in the team.
-// flags number Special class flags (bit field). To combine multiple flags
-// use a sum of the flag values. Available flags:
-// 1 - Admins only
-// 2 - Mother zombies only
-// group text Restrict class to member of this SourceMod group. Leave blank for no restriction.
-// name text The class name used in class menu.
-// description text The class description used in class menu.
-// model_path text Path to model to use. Relative to cstrike folder.
-// model_skin_index number Model skin index to use if model support multiple skins. First skin is 0.
-// alpha_initial number Initial transparency setting.
-// alpha_damaged number Transparency when damaged.
-// alpha_damage number How much damage to do before switching alpha.
-// overlay_path text Overlay displayed at the player.
-// nvgs yes/no Give and turn on night vision.
-// fov number Field of view value. 90 is default.
-// has_napalm yes/no Allows player to throw napalm grenades. Humans only.
-// napalm_time decimal Napalm burn duration. Zombies only.
-// immunity_mode text Special immunity modes. Some modes only works on humans or zombies:
-// "none" - Instant infection.
-// "kill" - Humans are instantly killed instead of turning zombies when attacked by zombies.
-// "full" - Completely immune. Humans can't be infected, zombies don't receive damage or knock back. Careful with this, it might not be that fun.
-// "infect" - Humans are immune to infections until HP go below a threshold. Threshold at zero enable stabbing to death.
-// "damage" - Zombies are immune to damage from humans/grenades, but still vulnerable to knock back.
-// "delay" - Delay infection for a certain number of seconds.
-// "shield" - Shield against infections (humans) or knock back (zombies) for a certain amount of seconds (similar to TF2's übercharge). Deploy with "zshield" command.
-// immunity_amount number Immunity data value (humans only). Depends on the immunity mode above:
-// "infect" - HP threshold. Infection will be allowed when HP go below this value. Zero will enable stabbing to death.
-// "delay" - Number of seconds the infection is delayed since first hit by a zombie.
-// "shield" - Number of seconds the shield is active.
-// immunity_cooldown number Number of seconds of cooldown for temporary immunity actions, depending on mode.
-// "delay" - Number of seconds the delay is reduced every time a zombie attack, while a delayed infection is in progress.
-// "shield" - Number of seconds the player has to wait before the shield can be used again.
-// no_fall_damage on/off Disables fall damage.
-// health number How many health points to give.
-// health_regen_interval decimal Sets the regeneration interval. 0 to disable.
-// health_regen_amount number How much HP to give per interval.
-// health_infect_gain number How much HP to give when the player infects someone. Zombies only.
-// kill_bonus number How many points to give per kill. Zombies only.
-// speed decimal The player speed. In LMV mode 300 is normal speed, 600 is double speed.
-// knockback decimal Force of the knockback when shot at. Zombies only.
-// jump_height decimal Multiplier of the players jump height. 0.0 means no jump boost, 1.0 is normal.
-// jump_distance decimal Multiplier of the players jump distance. 0.0 means no forward jump boost, 1.0 is normal.
-
-"classes"
-{
- // ------------------------------------------
- //
- // Zombie classes
- //
- // ------------------------------------------
- "zombie_classic"
- {
- // General
- "enabled" "yes"
- "team" "0"
- "team_default" "yes"
- "flags" "0"
- "group" ""
-
- "name" "Classic"
- "description" "Need brains!!! Arrrrggghh!"
-
- // Model
- "model_path" "models/player/zh/zh_corpse002.mdl"
- "model_skin_index" "0"
- "alpha_initial" "255"
- "alpha_damaged" "255"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" "overlays/zr/zvision"
- "nvgs" "no"
- "fov" "90"
-
- // Effects
- "has_napalm" "no"
- "napalm_time" "10.0"
-
- // Player behavior
- "immunity_mode" "none"
- "immunity_amount" "1"
- "immunity_cooldown" "60"
- "no_fall_damage" "yes"
-
- "health" "3200"
- "health_regen_interval" "0.0"
- "health_regen_amount" "0"
- "health_infect_gain" "500"
- "kill_bonus" "2"
-
- "speed" "390"
- "knockback" "3.2"
- "jump_height" "1.1"
- "jump_distance" "1.2"
- }
-
- "zombie_fast"
- {
- // General
- "enabled" "yes"
- "team" "0"
- "team_default" "no"
- "flags" "0"
- "group" ""
-
- "name" "Fast"
- "description" "-HP | +Speed | +Jump | +Knockback"
-
- // Model
- "model_path" "models/player/zh/zh_charple001.mdl"
- "model_skin_index" "0"
- "alpha_initial" "255"
- "alpha_damaged" "255"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" "overlays/zr/zvision"
- "nvgs" "no"
- "fov" "90"
-
- // Effects
- "has_napalm" "no"
- "napalm_time" "7.0"
-
- // Player behavior
- "immunity_mode" "none"
- "immunity_amount" "1"
- "immunity_cooldown" "60"
- "no_fall_damage" "yes"
-
- "health" "2500"
- "health_regen_interval" "0.0"
- "health_regen_amount" "0"
- "health_infect_gain" "400"
- "kill_bonus" "2"
-
- "speed" "420"
- "knockback" "4.0"
- "jump_height" "1.3"
- "jump_distance" "1.2"
- }
-
- "zombie_mutated"
- {
- // General
- "enabled" "yes"
- "team" "0"
- "team_default" "no"
- "flags" "0"
- "group" ""
-
- "name" "Mutated"
- "description" "+HP | -Speed | +Jump | +Knockback"
-
- // Model
- "model_path" "models/player/zh/zh_zombie003.mdl"
- "model_skin_index" "0"
- "alpha_initial" "255"
- "alpha_damaged" "255"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" "overlays/zr/zvision"
- "nvgs" "no"
- "fov" "90"
-
- // Effects
- "has_napalm" "no"
- "napalm_time" "15.0"
-
- // Player behavior
- "immunity_mode" "none"
- "immunity_amount" "1"
- "immunity_cooldown" "60"
- "no_fall_damage" "yes"
-
- "health" "3500"
- "health_regen_interval" "0.0"
- "health_regen_amount" "0"
- "health_infect_gain" "850"
- "kill_bonus" "2"
-
- "speed" "270"
- "knockback" "3.5"
- "jump_height" "1.3"
- "jump_distance" "1.3"
- }
-
- "zombie_heavy"
- {
- // General
- "enabled" "yes"
- "team" "0"
- "team_default" "no"
- "flags" "0"
- "group" ""
-
- "name" "Heavy"
- "description" "+HP | -Speed | -Knockback"
-
- // Model
- "model_path" "models/player/ics/hellknight_red/t_guerilla.mdl"
- "model_skin_index" "0"
- "alpha_initial" "255"
- "alpha_damaged" "255"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" "overlays/zr/zvision"
- "nvgs" "no"
- "fov" "90"
-
- // Effects
- "has_napalm" "no"
- "napalm_time" "10.0"
-
- // Player behavior
- "immunity_mode" "none"
- "immunity_amount" "1"
- "immunity_cooldown" "60"
- "no_fall_damage" "yes"
-
- "health" "5500"
- "health_regen_interval" "0.0"
- "health_regen_amount" "0"
- "health_infect_gain" "2000"
- "kill_bonus" "2"
-
- "speed" "250"
- "knockback" "2.0"
- "jump_height" "1.0"
- "jump_distance" "1.0"
- }
-
- "mother_zombie"
- {
- // General
- "enabled" "yes"
- "team" "0"
- "team_default" "no"
- "flags" "2"
- "group" ""
-
- "name" "Mother zombie"
- "description" "+HP regen | +Speed | +Jump | -Knockback"
-
- // Model
- "model_path" "models/player/zh/zh_zombie003.mdl"
- "model_skin_index" "0"
- "alpha_initial" "255"
- "alpha_damaged" "255"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" "overlays/zr/zvision"
- "nvgs" "no"
- "fov" "90"
-
- // Effects
- "has_napalm" "0"
- "napalm_time" "5.0"
-
- // Player behavior
- "immunity_mode" "none"
- "immunity_amount" "1"
- "immunity_cooldown" "60"
- "no_fall_damage" "yes"
-
- "health" "3000"
- "health_regen_interval" "0.25"
- "health_regen_amount" "10"
- "health_infect_gain" "1000"
- "kill_bonus" "4"
-
- "speed" "432"
- "knockback" "2.3"
- "jump_height" "1.2"
- "jump_distance" "1.3"
- }
-
- "mother_zombie_admin"
- {
- // General
- "enabled" "yes"
- "team" "0"
- "team_default" "no"
- "flags" "3"
- "group" ""
-
- "name" "Admin mother zombie"
- "description" "+HP regen | +Speed | +Jump | -Knockback"
-
- // Model
- "model_path" "models/player/zh/zh_charple001.mdl"
- "model_skin_index" "0"
- "alpha_initial" "255"
- "alpha_damaged" "255"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" "overlays/zr/zvision"
- "nvgs" "no"
- "fov" "90"
-
- // Effects
- "has_napalm" "no"
- "napalm_time" "3.0"
-
- // Player behavior
- "immunity_mode" "none"
- "immunity_amount" "1"
- "immunity_cooldown" "60"
- "no_fall_damage" "yes"
-
- "health" "3500"
- "health_regen_interval" "0.25"
- "health_regen_amount" "10"
- "health_infect_gain" "1000"
- "kill_bonus" "1"
-
- "speed" "486"
- "knockback" "2.3"
- "jump_height" "1.2"
- "jump_distance" "1.3"
- }
-
- // ------------------------------------------
- //
- // Human classes
- //
- // ------------------------------------------
-
- "human_normal"
- {
- // General
- "enabled" "yes"
- "team" "1"
- "team_default" "yes"
- "flags" "0"
- "group" ""
-
- "name" "Normal Human"
- "description" "Default Counter-Strike settings"
-
- // Model
- "model_path" "default"
- "model_skin_index" "0"
- "alpha_initial" "255"
- "alpha_damaged" "255"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" ""
- "nvgs" "no"
- "fov" "90"
-
- // Effects
- "has_napalm" "yes"
- "napalm_time" "0.0"
-
- // Player behavior
- "immunity_mode" "none"
- "immunity_amount" "1"
- "immunity_cooldown" "60"
- "no_fall_damage" "no"
-
- "health" "100"
- "health_regen_interval" "0.0"
- "health_regen_amount" "0"
- "health_infect_gain" "0"
- "kill_bonus" "2"
-
- "speed" "300"
- "knockback" "0"
- "jump_height" "1.0"
- "jump_distance" "1.0"
- }
-
- "human_vip"
- {
- // General
- "enabled" "no"
- "team" "1"
- "team_default" "yes"
- "flags" "0"
- "group" "" // Write the name of a SourceMod group for vip players ("zr_vip" for instance), then make it in SourceMod.
-
- "name" "VIP Human"
- "description" "Human class for important players"
-
- // Model
- "model_path" "default"
- "model_skin_index" "0"
- "alpha_initial" "255"
- "alpha_damaged" "255"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" ""
- "nvgs" "no"
- "fov" "90"
-
- // Effects
- "has_napalm" "yes"
- "napalm_time" "0.0"
-
- // Player behavior
- "immunity_mode" "none"
- "immunity_amount" "1"
- "immunity_cooldown" "60"
- "no_fall_damage" "yes"
-
- "health" "200"
- "health_regen_interval" "1.0"
- "health_regen_amount" "10"
- "health_infect_gain" "0"
- "kill_bonus" "1"
-
- "speed" "300"
- "knockback" "0"
- "jump_height" "1.2"
- "jump_distance" "1.2"
- }
-
- "human_admin"
- {
- // General
- "enabled" "yes"
- "team" "1"
- "team_default" "no"
- "flags" "1"
- "group" ""
-
- "name" "Admin Human"
- "description" "Human class for admins"
-
- // Model
- "model_path" "default"
- "model_skin_index" "0"
- "alpha_initial" "255"
- "alpha_damaged" "255"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" ""
- "nvgs" "no"
- "fov" "90"
-
- // Effects
- "has_napalm" "yes"
- "napalm_time" "0.0"
-
- // Player behavior
- "immunity_mode" "none"
- "immunity_amount" "1"
- "immunity_cooldown" "60"
- "no_fall_damage" "yes"
-
- "health" "200"
- "health_regen_interval" "1.0"
- "health_regen_amount" "10"
- "health_infect_gain" "0"
- "kill_bonus" "1"
-
- "speed" "360"
- "knockback" "0"
- "jump_height" "1.2"
- "jump_distance" "1.2"
- }
-
- "human_speedy"
- {
- // General
- "enabled" "yes"
- "team" "1"
- "team_default" "no"
- "flags" "0"
- "group" ""
-
- "name" "Speedy"
- "description" "+Speed"
-
- // Model
- "model_path" "default"
- "model_skin_index" "0"
- "alpha_initial" "255"
- "alpha_damaged" "255"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" ""
- "nvgs" "no"
- "fov" "90"
-
- // Effects
- "has_napalm" "no"
- "napalm_time" "0.0"
-
- // Player behavior
- "immunity_mode" "none"
- "immunity_amount" "1"
- "immunity_cooldown" "60"
- "no_fall_damage" "0"
-
- "health" "100"
- "health_regen_interval" "0.0"
- "health_regen_amount" "0"
- "health_infect_gain" "0"
- "kill_bonus" "1"
-
- "speed" "360"
- "knockback" "0"
- "jump_height" "1.0"
- "jump_distance" "1.0"
- }
-
- "human_light"
- {
- // General
- "enabled" "yes"
- "team" "1"
- "team_default" "no"
- "flags" "0"
- "group" ""
-
- "name" "Light"
- "description" "-Speed | +Jump | +Immunity"
-
- // Model
- "model_path" "default"
- "model_skin_index" "0"
- "alpha_initial" "255"
- "alpha_damaged" "255"
- "alpha_damage" "0"
-
- // Hud
- "overlay_path" ""
- "nvgs" "no"
- "fov" "90"
-
- // Effects
- "has_napalm" "yes"
- "napalm_time" "0.0"
-
- // Player behavior
- "immunity_mode" "infect" // Invulnerable to infection,
- "immunity_amount" "25" // until HP go below 25.
- "immunity_cooldown" "60"
- "no_fall_damage" "yes"
-
- "health" "100"
- "health_regen_interval" "0.0"
- "health_regen_amount" "0"
- "health_infect_gain" "0"
- "kill_bonus" "1"
-
- "speed" "260"
- "knockback" "0"
- "jump_height" "1.4"
- "jump_distance" "1.4"
- }
-}
+// ============================================================================
+//
+// Zombie:Reloaded Class configuration
+//
+// See Class Configuration (3.7) in the manual for detailed info.
+//
+// ============================================================================
+//
+// SHORT DESCRIPTIONS
+//
+// Attribute: Values: Description:
+// ----------------------------------------------------------------------------
+// enabled yes/no Enables or disables a class.
+// team number Specifies what team the class belongs to:
+// 0 - Zombies
+// 1 - Humans
+// 2 - Admin mode classes (incomplete feautre!)
+// team_default yes/no Marks the class as the default class in the team.
+// flags number Special class flags (bit field). To combine multiple flags
+// use a sum of the flag values. Available flags:
+// 1 - Admins only
+// 2 - Mother zombies only
+// group text Restrict class to member of this SourceMod group. Leave blank for no restriction.
+// name text The class name used in class menu.
+// description text The class description used in class menu.
+// model_path text Path to model to use. Relative to cstrike folder.
+// model_skin_index number Model skin index to use if model support multiple skins. First skin is 0.
+// alpha_initial number Initial transparency setting.
+// alpha_damaged number Transparency when damaged.
+// alpha_damage number How much damage to do before switching alpha.
+// overlay_path text Overlay displayed at the player.
+// nvgs yes/no Give and turn on night vision.
+// fov number Field of view value. 90 is default.
+// has_napalm yes/no Allows player to throw napalm grenades. Humans only.
+// napalm_time decimal Napalm burn duration. Zombies only.
+// immunity_mode text Special immunity modes. Some modes only works on humans or zombies:
+// "none" - Instant infection.
+// "kill" - Humans are instantly killed instead of turning zombies when attacked by zombies.
+// "full" - Completely immune. Humans can't be infected, zombies don't receive damage or knock back. Careful with this, it might not be that fun.
+// "infect" - Humans are immune to infections until HP go below a threshold. Threshold at zero enable stabbing to death.
+// "damage" - Zombies are immune to damage from humans/grenades, but still vulnerable to knock back.
+// "delay" - Delay infection for a certain number of seconds.
+// "shield" - Shield against infections (humans) or knock back (zombies) for a certain amount of seconds (similar to TF2's übercharge). Deploy with "zshield" command.
+// immunity_amount number Immunity data value (humans only). Depends on the immunity mode above:
+// "infect" - HP threshold. Infection will be allowed when HP go below this value. Zero will enable stabbing to death.
+// "delay" - Number of seconds the infection is delayed since first hit by a zombie.
+// "shield" - Number of seconds the shield is active.
+// immunity_cooldown number Number of seconds of cooldown for temporary immunity actions, depending on mode.
+// "delay" - Number of seconds the delay is reduced every time a zombie attack, while a delayed infection is in progress.
+// "shield" - Number of seconds the player has to wait before the shield can be used again.
+// no_fall_damage on/off Disables fall damage.
+// health number How many health points to give.
+// health_regen_interval decimal Sets the regeneration interval. 0 to disable.
+// health_regen_amount number How much HP to give per interval.
+// health_infect_gain number How much HP to give when the player infects someone. Zombies only.
+// kill_bonus number How many points to give per kill. Zombies only.
+// speed decimal The player speed. In LMV mode 300 is normal speed, 600 is double speed.
+// knockback decimal Force of the knockback when shot at. Zombies only.
+// jump_height decimal Multiplier of the players jump height. 0.0 means no jump boost, 1.0 is normal.
+// jump_distance decimal Multiplier of the players jump distance. 0.0 means no forward jump boost, 1.0 is normal.
+
+"classes"
+{
+ // ------------------------------------------
+ //
+ // Zombie classes
+ //
+ // ------------------------------------------
+ "zombie_classic"
+ {
+ // General
+ "enabled" "yes"
+ "team" "0"
+ "team_default" "yes"
+ "flags" "0"
+ "group" ""
+
+ "name" "Classic"
+ "description" "Need brains!!! Arrrrggghh!"
+
+ // Model
+ "model_path" "models/player/zh/zh_corpse002.mdl"
+ "model_skin_index" "0"
+ "alpha_initial" "255"
+ "alpha_damaged" "255"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" "overlays/zr/zvision"
+ "nvgs" "no"
+ "fov" "90"
+
+ // Effects
+ "has_napalm" "no"
+ "napalm_time" "10.0"
+
+ // Player behavior
+ "immunity_mode" "none"
+ "immunity_amount" "1"
+ "immunity_cooldown" "60"
+ "no_fall_damage" "yes"
+
+ "health" "3200"
+ "health_regen_interval" "0.0"
+ "health_regen_amount" "0"
+ "health_infect_gain" "500"
+ "kill_bonus" "2"
+
+ "speed" "390"
+ "knockback" "3.2"
+ "jump_height" "1.1"
+ "jump_distance" "1.2"
+ }
+
+ "zombie_fast"
+ {
+ // General
+ "enabled" "yes"
+ "team" "0"
+ "team_default" "no"
+ "flags" "0"
+ "group" ""
+
+ "name" "Fast"
+ "description" "-HP | +Speed | +Jump | +Knockback"
+
+ // Model
+ "model_path" "models/player/zh/zh_charple001.mdl"
+ "model_skin_index" "0"
+ "alpha_initial" "255"
+ "alpha_damaged" "255"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" "overlays/zr/zvision"
+ "nvgs" "no"
+ "fov" "90"
+
+ // Effects
+ "has_napalm" "no"
+ "napalm_time" "7.0"
+
+ // Player behavior
+ "immunity_mode" "none"
+ "immunity_amount" "1"
+ "immunity_cooldown" "60"
+ "no_fall_damage" "yes"
+
+ "health" "2500"
+ "health_regen_interval" "0.0"
+ "health_regen_amount" "0"
+ "health_infect_gain" "400"
+ "kill_bonus" "2"
+
+ "speed" "420"
+ "knockback" "4.0"
+ "jump_height" "1.3"
+ "jump_distance" "1.2"
+ }
+
+ "zombie_mutated"
+ {
+ // General
+ "enabled" "yes"
+ "team" "0"
+ "team_default" "no"
+ "flags" "0"
+ "group" ""
+
+ "name" "Mutated"
+ "description" "+HP | -Speed | +Jump | +Knockback"
+
+ // Model
+ "model_path" "models/player/zh/zh_zombie003.mdl"
+ "model_skin_index" "0"
+ "alpha_initial" "255"
+ "alpha_damaged" "255"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" "overlays/zr/zvision"
+ "nvgs" "no"
+ "fov" "90"
+
+ // Effects
+ "has_napalm" "no"
+ "napalm_time" "15.0"
+
+ // Player behavior
+ "immunity_mode" "none"
+ "immunity_amount" "1"
+ "immunity_cooldown" "60"
+ "no_fall_damage" "yes"
+
+ "health" "3500"
+ "health_regen_interval" "0.0"
+ "health_regen_amount" "0"
+ "health_infect_gain" "850"
+ "kill_bonus" "2"
+
+ "speed" "270"
+ "knockback" "3.5"
+ "jump_height" "1.3"
+ "jump_distance" "1.3"
+ }
+
+ "zombie_heavy"
+ {
+ // General
+ "enabled" "yes"
+ "team" "0"
+ "team_default" "no"
+ "flags" "0"
+ "group" ""
+
+ "name" "Heavy"
+ "description" "+HP | -Speed | -Knockback"
+
+ // Model
+ "model_path" "models/player/ics/hellknight_red/t_guerilla.mdl"
+ "model_skin_index" "0"
+ "alpha_initial" "255"
+ "alpha_damaged" "255"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" "overlays/zr/zvision"
+ "nvgs" "no"
+ "fov" "90"
+
+ // Effects
+ "has_napalm" "no"
+ "napalm_time" "10.0"
+
+ // Player behavior
+ "immunity_mode" "none"
+ "immunity_amount" "1"
+ "immunity_cooldown" "60"
+ "no_fall_damage" "yes"
+
+ "health" "5500"
+ "health_regen_interval" "0.0"
+ "health_regen_amount" "0"
+ "health_infect_gain" "2000"
+ "kill_bonus" "2"
+
+ "speed" "250"
+ "knockback" "2.0"
+ "jump_height" "1.0"
+ "jump_distance" "1.0"
+ }
+
+ "mother_zombie"
+ {
+ // General
+ "enabled" "yes"
+ "team" "0"
+ "team_default" "no"
+ "flags" "2"
+ "group" ""
+
+ "name" "Mother zombie"
+ "description" "+HP regen | +Speed | +Jump | -Knockback"
+
+ // Model
+ "model_path" "models/player/zh/zh_zombie003.mdl"
+ "model_skin_index" "0"
+ "alpha_initial" "255"
+ "alpha_damaged" "255"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" "overlays/zr/zvision"
+ "nvgs" "no"
+ "fov" "90"
+
+ // Effects
+ "has_napalm" "0"
+ "napalm_time" "5.0"
+
+ // Player behavior
+ "immunity_mode" "none"
+ "immunity_amount" "1"
+ "immunity_cooldown" "60"
+ "no_fall_damage" "yes"
+
+ "health" "3000"
+ "health_regen_interval" "0.25"
+ "health_regen_amount" "10"
+ "health_infect_gain" "1000"
+ "kill_bonus" "4"
+
+ "speed" "432"
+ "knockback" "2.3"
+ "jump_height" "1.2"
+ "jump_distance" "1.3"
+ }
+
+ "mother_zombie_admin"
+ {
+ // General
+ "enabled" "yes"
+ "team" "0"
+ "team_default" "no"
+ "flags" "3"
+ "group" ""
+
+ "name" "Admin mother zombie"
+ "description" "+HP regen | +Speed | +Jump | -Knockback"
+
+ // Model
+ "model_path" "models/player/zh/zh_charple001.mdl"
+ "model_skin_index" "0"
+ "alpha_initial" "255"
+ "alpha_damaged" "255"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" "overlays/zr/zvision"
+ "nvgs" "no"
+ "fov" "90"
+
+ // Effects
+ "has_napalm" "no"
+ "napalm_time" "3.0"
+
+ // Player behavior
+ "immunity_mode" "none"
+ "immunity_amount" "1"
+ "immunity_cooldown" "60"
+ "no_fall_damage" "yes"
+
+ "health" "3500"
+ "health_regen_interval" "0.25"
+ "health_regen_amount" "10"
+ "health_infect_gain" "1000"
+ "kill_bonus" "1"
+
+ "speed" "486"
+ "knockback" "2.3"
+ "jump_height" "1.2"
+ "jump_distance" "1.3"
+ }
+
+ // ------------------------------------------
+ //
+ // Human classes
+ //
+ // ------------------------------------------
+
+ "human_normal"
+ {
+ // General
+ "enabled" "yes"
+ "team" "1"
+ "team_default" "yes"
+ "flags" "0"
+ "group" ""
+
+ "name" "Normal Human"
+ "description" "Default Counter-Strike settings"
+
+ // Model
+ "model_path" "default"
+ "model_skin_index" "0"
+ "alpha_initial" "255"
+ "alpha_damaged" "255"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" ""
+ "nvgs" "no"
+ "fov" "90"
+
+ // Effects
+ "has_napalm" "yes"
+ "napalm_time" "0.0"
+
+ // Player behavior
+ "immunity_mode" "none"
+ "immunity_amount" "1"
+ "immunity_cooldown" "60"
+ "no_fall_damage" "no"
+
+ "health" "100"
+ "health_regen_interval" "0.0"
+ "health_regen_amount" "0"
+ "health_infect_gain" "0"
+ "kill_bonus" "2"
+
+ "speed" "300"
+ "knockback" "0"
+ "jump_height" "1.0"
+ "jump_distance" "1.0"
+ }
+
+ "human_vip"
+ {
+ // General
+ "enabled" "no"
+ "team" "1"
+ "team_default" "yes"
+ "flags" "0"
+ "group" "" // Write the name of a SourceMod group for vip players ("zr_vip" for instance), then make it in SourceMod.
+
+ "name" "VIP Human"
+ "description" "Human class for important players"
+
+ // Model
+ "model_path" "default"
+ "model_skin_index" "0"
+ "alpha_initial" "255"
+ "alpha_damaged" "255"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" ""
+ "nvgs" "no"
+ "fov" "90"
+
+ // Effects
+ "has_napalm" "yes"
+ "napalm_time" "0.0"
+
+ // Player behavior
+ "immunity_mode" "none"
+ "immunity_amount" "1"
+ "immunity_cooldown" "60"
+ "no_fall_damage" "yes"
+
+ "health" "200"
+ "health_regen_interval" "1.0"
+ "health_regen_amount" "10"
+ "health_infect_gain" "0"
+ "kill_bonus" "1"
+
+ "speed" "300"
+ "knockback" "0"
+ "jump_height" "1.2"
+ "jump_distance" "1.2"
+ }
+
+ "human_admin"
+ {
+ // General
+ "enabled" "yes"
+ "team" "1"
+ "team_default" "no"
+ "flags" "1"
+ "group" ""
+
+ "name" "Admin Human"
+ "description" "Human class for admins"
+
+ // Model
+ "model_path" "default"
+ "model_skin_index" "0"
+ "alpha_initial" "255"
+ "alpha_damaged" "255"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" ""
+ "nvgs" "no"
+ "fov" "90"
+
+ // Effects
+ "has_napalm" "yes"
+ "napalm_time" "0.0"
+
+ // Player behavior
+ "immunity_mode" "none"
+ "immunity_amount" "1"
+ "immunity_cooldown" "60"
+ "no_fall_damage" "yes"
+
+ "health" "200"
+ "health_regen_interval" "1.0"
+ "health_regen_amount" "10"
+ "health_infect_gain" "0"
+ "kill_bonus" "1"
+
+ "speed" "360"
+ "knockback" "0"
+ "jump_height" "1.2"
+ "jump_distance" "1.2"
+ }
+
+ "human_speedy"
+ {
+ // General
+ "enabled" "yes"
+ "team" "1"
+ "team_default" "no"
+ "flags" "0"
+ "group" ""
+
+ "name" "Speedy"
+ "description" "+Speed"
+
+ // Model
+ "model_path" "default"
+ "model_skin_index" "0"
+ "alpha_initial" "255"
+ "alpha_damaged" "255"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" ""
+ "nvgs" "no"
+ "fov" "90"
+
+ // Effects
+ "has_napalm" "no"
+ "napalm_time" "0.0"
+
+ // Player behavior
+ "immunity_mode" "none"
+ "immunity_amount" "1"
+ "immunity_cooldown" "60"
+ "no_fall_damage" "0"
+
+ "health" "100"
+ "health_regen_interval" "0.0"
+ "health_regen_amount" "0"
+ "health_infect_gain" "0"
+ "kill_bonus" "1"
+
+ "speed" "360"
+ "knockback" "0"
+ "jump_height" "1.0"
+ "jump_distance" "1.0"
+ }
+
+ "human_light"
+ {
+ // General
+ "enabled" "yes"
+ "team" "1"
+ "team_default" "no"
+ "flags" "0"
+ "group" ""
+
+ "name" "Light"
+ "description" "-Speed | +Jump | +Immunity"
+
+ // Model
+ "model_path" "default"
+ "model_skin_index" "0"
+ "alpha_initial" "255"
+ "alpha_damaged" "255"
+ "alpha_damage" "0"
+
+ // Hud
+ "overlay_path" ""
+ "nvgs" "no"
+ "fov" "90"
+
+ // Effects
+ "has_napalm" "yes"
+ "napalm_time" "0.0"
+
+ // Player behavior
+ "immunity_mode" "infect" // Invulnerable to infection,
+ "immunity_amount" "25" // until HP go below 25.
+ "immunity_cooldown" "60"
+ "no_fall_damage" "yes"
+
+ "health" "100"
+ "health_regen_interval" "0.0"
+ "health_regen_amount" "0"
+ "health_infect_gain" "0"
+ "kill_bonus" "1"
+
+ "speed" "260"
+ "knockback" "0"
+ "jump_height" "1.4"
+ "jump_distance" "1.4"
+ }
+}
diff --git a/cstrike/addons/sourcemod/configs/zr/weapons.txt b/cstrike/addons/sourcemod/configs/zr/weapons.txt
index f166fe2..970057a 100644
--- a/cstrike/addons/sourcemod/configs/zr/weapons.txt
+++ b/cstrike/addons/sourcemod/configs/zr/weapons.txt
@@ -1,780 +1,780 @@
-// ============================================================================
-//
-// ZOMBIE:RELOADED
-// Weapon configuration
-//
-// Check the weapon configuration section in the manual for detailed info.
-//
-// ============================================================================
-//
-// SHORT DESCRIPTIONS
-//
-// Attribute: Values: Description:
-// ----------------------------------------------------------------------------
-// weaponentity text The entity name of the weapon refered to. (Don't change this)
-// weapontype text The type of weapon it is. [List types, separate by ", "]
-// weaponslot number The slot index the weapon resides in. (Don't change this)
-// restrictdefault yes/no The default restricted status of the weapon on map start.
-// toggleable yes/no Enable weapon to have restrictions toggled mid-game.
-// ammotype text Ammo entity that belongs to weapons. (Don't change this)
-// ammoprice number Price of ammo for this weapon.
-// knockback decimal The knockback multiplier for the weapon. ['0.5' = half knockback | 2.0 = double]
-// zmarketprice number The price of the weapon in ZMarket. [Default: CS:S buymenu price]
-// zmarketpurchasemax number The max number of purchases allowed per spawn for the weapon.
-//
-// Notes:
-// * Omitting and option will disable the feature for the weapon.
-
-"weapons" // Counter-Strike: Source weapons
-{
- "Glock"
- {
- // General
-
- "weaponentity" "weapon_glock"
- "weapontype" "All, Pistol"
- "weaponslot" "1"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_9mm"
- "ammoprice" "100"
-
- // Knockback (module)
-
- "knockback" "1.1"
-
- // ZMarket (module)
-
- "zmarketprice" "400"
- }
-
- "USP"
- {
- // General
-
- "weaponentity" "weapon_usp"
- "weapontype" "All, Pistol"
- "weaponslot" "1"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_45acp"
- "ammoprice" "100"
-
- // Knockback (module)
-
- "knockback" "1.1"
-
- // ZMarket (module)
-
- "zmarketprice" "500"
- }
-
- "P228"
- {
- // General
-
- "weaponentity" "weapon_p228"
- "weapontype" "All, Pistol"
- "weaponslot" "1"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_357sig"
- "ammoprice" "100"
-
- // Knockback (module)
-
- "knockback" "1.1"
-
- // ZMarket (module)
-
- "zmarketprice" "600"
-
- }
-
- "Deagle"
- {
- // General
-
- "weaponentity" "weapon_deagle"
- "weapontype" "All, Pistol"
- "weaponslot" "1"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_50ae"
- "ammoprice" "100"
-
- // Knockback (module)
-
- "knockback" "1.1"
-
- // ZMarket (module)
-
- "zmarketprice" "650"
-
- }
-
- "Elite"
- {
- // General
-
- "weaponentity" "weapon_elite"
- "weapontype" "All, Pistol"
- "weaponslot" "1"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_9mm"
- "ammoprice" "100"
-
- // Knockback (module)
-
- "knockback" "1.0"
-
- // ZMarket (module)
-
- "zmarketprice" "800"
-
- }
-
- "Fiveseven"
- {
- // General
-
- "weaponentity" "weapon_fiveseven"
- "weapontype" "All, Pistol"
- "weaponslot" "1"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_57mm"
- "ammoprice" "100"
-
- // Knockback (module)
-
- "knockback" "1.1"
-
- // ZMarket (module)
-
- "zmarketprice" "750"
-
- }
-
- "M3"
- {
- // General
-
- "weaponentity" "weapon_m3"
- "weapontype" "All, Shotgun"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_buckshot"
- "ammoprice" "300"
-
- // Knockback (module)
-
- "knockback" "0.8" // Remember that there are 8 pellets in 1 shot.
-
- // ZMarket (module)
-
- "zmarketprice" "1700"
-
- }
-
- "XM1014"
- {
- // General
-
- "weaponentity" "weapon_xm1014"
- "weapontype" "All, Shotgun"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_buckshot"
- "ammoprice" "300"
-
- // Knockback (module)
-
- "knockback" "0.8" // Remember that there are 8 pellets in 1 shot.
-
- // ZMarket (module)
-
- "zmarketprice" "3000"
-
- }
-
- "Mac10"
- {
- // General
-
- "weaponentity" "weapon_mac10"
- "weapontype" "All, SMG"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_45acp"
- "ammoprice" "300"
-
- // Knockback (module)
-
- "knockback" "1.0"
-
- // ZMarket (module)
-
- "zmarketprice" "1400"
- }
-
- "TMP"
- {
- // General
-
- "weaponentity" "weapon_tmp"
- "weapontype" "All, SMG"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_9mm"
- "ammoprice" "300"
-
- // Knockback (module)
-
- "knockback" "1.0"
-
- // ZMarket (module)
-
- "zmarketprice" "1250"
- }
-
- "MP5Navy"
- {
- // General
-
- "weaponentity" "weapon_mp5navy"
- "weapontype" "All, SMG"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_9mm"
- "ammoprice" "300"
-
- // Knockback (module)
-
- "knockback" "1.0"
-
- // ZMarket (module)
-
- "zmarketprice" "1500"
- }
-
- "UMP45"
- {
- // General
-
- "weaponentity" "weapon_ump45"
- "weapontype" "All, SMG"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_45acp"
- "ammoprice" "300"
-
- // Knockback (module)
-
- "knockback" "1.0"
-
- // ZMarket (module)
-
- "zmarketprice" "1700"
- }
-
- "P90"
- {
- // General
-
- "weaponentity" "weapon_p90"
- "weapontype" "All, SMG"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_57mm"
- "ammoprice" "300"
-
- // Knockback (module)
-
- "knockback" "1.0"
-
- // ZMarket (module)
-
- "zmarketprice" "2350"
- }
-
- "Galil"
- {
- // General
-
- "weaponentity" "weapon_galil"
- "weapontype" "All, Rifle"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_556mm"
- "ammoprice" "500"
-
- // Knockback (module)
-
- "knockback" "1.0"
-
- // ZMarket (module)
-
- "zmarketprice" "2000"
- }
-
- "Famas"
- {
- // General
-
- "weaponentity" "weapon_famas"
- "weapontype" "All, Rifle"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_556mm"
- "ammoprice" "500"
-
- // Knockback (module)
-
- "knockback" "1.0"
-
- // ZMarket (module)
-
- "zmarketprice" "2250"
- }
-
- "AK47"
- {
- // General
-
- "weaponentity" "weapon_ak47"
- "weapontype" "All, Rifle"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_762mm"
- "ammoprice" "500"
-
- // Knockback (module)
-
- "knockback" "1.0"
-
- // ZMarket (module)
-
- "zmarketprice" "2500"
- }
-
- "M4A1"
- {
- // General
-
- "weaponentity" "weapon_m4a1"
- "weapontype" "All, Rifle"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_556mm"
- "ammoprice" "500"
-
- // Knockback (module)
-
- "knockback" "1.0"
-
- // ZMarket (module)
-
- "zmarketprice" "3100"
- }
-
- "SG552"
- {
- // General
-
- "weaponentity" "weapon_sg552"
- "weapontype" "All, Rifle"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_556mm"
- "ammoprice" "500"
-
- // Knockback (module)
-
- "knockback" "1.0"
-
- // ZMarket (module)
-
- "zmarketprice" "3500"
- }
-
- "AUG"
- {
- // General
-
- "weaponentity" "weapon_aug"
- "weapontype" "All, Rifle"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_762mm"
- "ammoprice" "500"
-
- // Knockback (module)
-
- "knockback" "1.0"
-
- // ZMarket (module)
-
- "zmarketprice" "3500"
- }
-
- "Scout"
- {
- // General
-
- "weaponentity" "weapon_scout"
- "weapontype" "All, Sniper"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_762mm"
- "ammoprice" "750"
-
- // Knockback (module)
-
- "knockback" "1.8"
-
- // ZMarket (module)
-
- "zmarketprice" "2750"
- }
-
- "SG550"
- {
- // General
-
- "weaponentity" "weapon_sg550"
- "weapontype" "All, Sniper"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_556mm"
- "ammoprice" "1000"
-
- // Knockback (module)
-
- "knockback" "0.9"
-
- // ZMarket (module)
-
- "zmarketprice" "4200"
- }
-
- "G3SG1"
- {
- // General
-
- "weaponentity" "weapon_g3sg1"
- "weapontype" "All, Sniper"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_762mm"
- "ammoprice" "1000"
-
- // Knockback (module)
-
- "knockback" "0.9"
-
- // ZMarket (module)
-
- "zmarketprice" "5000"
- }
-
- "AWP"
- {
- // General
-
- "weaponentity" "weapon_awp"
- "weapontype" "All, Sniper"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_338mag"
- "ammoprice" "1000"
-
- // Knockback (module)
-
- "knockback" "1.8"
-
- // ZMarket (module)
-
- "zmarketprice" "4750"
- }
-
- "M249"
- {
- // General
-
- "weaponentity" "weapon_m249"
- "weapontype" "All, Machine Gun"
- "weaponslot" "0"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Weapon Ammo (core)
-
- "ammotype" "ammo_556mm_box"
- "ammoprice" "1500"
-
- // Knockback (module)
-
- "knockback" "1.0"
-
- // ZMarket (module)
-
- "zmarketprice" "5750"
- }
-
- "Knife"
- {
- // General
-
- "weaponentity" "weapon_knife"
- "weapontype" "All, Melee"
- "weaponslot" "2"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "no"
-
- // Knockback (module)
-
- "knockback" "10.0"
- }
-
- "HEGrenade"
- {
- // General
-
- "weaponentity" "weapon_hegrenade"
- "weapontype" "All, Projectile"
- "weaponslot" "3"
-
- // Restrict (core)
-
- "restrictdefault" "no"
- "toggleable" "yes"
-
- // Knockback (module)
-
- "knockback" "6.0"
-
- // ZMarket (module)
-
- "zmarketprice" "300"
- "zmarketpurchasemax" "1"
- }
-
- "Flashbang"
- {
- // General
-
- "weaponentity" "weapon_flashbang"
- "weapontype" "All, Projectile"
- "weaponslot" "3"
-
- // Restrict (core)
-
- "restrictdefault" "yes"
- "toggleable" "yes"
-
- // ZMarket (module)
-
- "zmarketprice" "200"
- "zmarketpurchasemax" "1"
- }
-
- "Smokegrenade"
- {
- // General
-
- "weaponentity" "weapon_smokegrenade"
- "weapontype" "All, Projectile"
- "weaponslot" "3"
-
- // Restrict (core)
-
- "restrictdefault" "yes"
- "toggleable" "yes"
-
- // ZMarket (module)
-
- "zmarketprice" "300"
- "zmarketpurchasemax" "1"
- }
-
- "NVGs"
- {
- // General
-
- "weaponentity" "item_nvgs"
- "weapontype" "All, Equipment"
- "weaponslot" "5"
-
- // Restrict (core)
-
- "restrictdefault" "yes"
- "toggleable" "yes"
-
- // ZMarket (module)
-
- "zmarketprice" "1000"
- }
-}
+// ============================================================================
+//
+// ZOMBIE:RELOADED
+// Weapon configuration
+//
+// Check the weapon configuration section in the manual for detailed info.
+//
+// ============================================================================
+//
+// SHORT DESCRIPTIONS
+//
+// Attribute: Values: Description:
+// ----------------------------------------------------------------------------
+// weaponentity text The entity name of the weapon refered to. (Don't change this)
+// weapontype text The type of weapon it is. [List types, separate by ", "]
+// weaponslot number The slot index the weapon resides in. (Don't change this)
+// restrictdefault yes/no The default restricted status of the weapon on map start.
+// toggleable yes/no Enable weapon to have restrictions toggled mid-game.
+// ammotype text Ammo entity that belongs to weapons. (Don't change this)
+// ammoprice number Price of ammo for this weapon.
+// knockback decimal The knockback multiplier for the weapon. ['0.5' = half knockback | 2.0 = double]
+// zmarketprice number The price of the weapon in ZMarket. [Default: CS:S buymenu price]
+// zmarketpurchasemax number The max number of purchases allowed per spawn for the weapon.
+//
+// Notes:
+// * Omitting and option will disable the feature for the weapon.
+
+"weapons" // Counter-Strike: Source weapons
+{
+ "Glock"
+ {
+ // General
+
+ "weaponentity" "weapon_glock"
+ "weapontype" "All, Pistol"
+ "weaponslot" "1"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_9mm"
+ "ammoprice" "100"
+
+ // Knockback (module)
+
+ "knockback" "1.1"
+
+ // ZMarket (module)
+
+ "zmarketprice" "400"
+ }
+
+ "USP"
+ {
+ // General
+
+ "weaponentity" "weapon_usp"
+ "weapontype" "All, Pistol"
+ "weaponslot" "1"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_45acp"
+ "ammoprice" "100"
+
+ // Knockback (module)
+
+ "knockback" "1.1"
+
+ // ZMarket (module)
+
+ "zmarketprice" "500"
+ }
+
+ "P228"
+ {
+ // General
+
+ "weaponentity" "weapon_p228"
+ "weapontype" "All, Pistol"
+ "weaponslot" "1"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_357sig"
+ "ammoprice" "100"
+
+ // Knockback (module)
+
+ "knockback" "1.1"
+
+ // ZMarket (module)
+
+ "zmarketprice" "600"
+
+ }
+
+ "Deagle"
+ {
+ // General
+
+ "weaponentity" "weapon_deagle"
+ "weapontype" "All, Pistol"
+ "weaponslot" "1"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_50ae"
+ "ammoprice" "100"
+
+ // Knockback (module)
+
+ "knockback" "1.1"
+
+ // ZMarket (module)
+
+ "zmarketprice" "650"
+
+ }
+
+ "Elite"
+ {
+ // General
+
+ "weaponentity" "weapon_elite"
+ "weapontype" "All, Pistol"
+ "weaponslot" "1"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_9mm"
+ "ammoprice" "100"
+
+ // Knockback (module)
+
+ "knockback" "1.0"
+
+ // ZMarket (module)
+
+ "zmarketprice" "800"
+
+ }
+
+ "Fiveseven"
+ {
+ // General
+
+ "weaponentity" "weapon_fiveseven"
+ "weapontype" "All, Pistol"
+ "weaponslot" "1"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_57mm"
+ "ammoprice" "100"
+
+ // Knockback (module)
+
+ "knockback" "1.1"
+
+ // ZMarket (module)
+
+ "zmarketprice" "750"
+
+ }
+
+ "M3"
+ {
+ // General
+
+ "weaponentity" "weapon_m3"
+ "weapontype" "All, Shotgun"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_buckshot"
+ "ammoprice" "300"
+
+ // Knockback (module)
+
+ "knockback" "0.8" // Remember that there are 8 pellets in 1 shot.
+
+ // ZMarket (module)
+
+ "zmarketprice" "1700"
+
+ }
+
+ "XM1014"
+ {
+ // General
+
+ "weaponentity" "weapon_xm1014"
+ "weapontype" "All, Shotgun"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_buckshot"
+ "ammoprice" "300"
+
+ // Knockback (module)
+
+ "knockback" "0.8" // Remember that there are 8 pellets in 1 shot.
+
+ // ZMarket (module)
+
+ "zmarketprice" "3000"
+
+ }
+
+ "Mac10"
+ {
+ // General
+
+ "weaponentity" "weapon_mac10"
+ "weapontype" "All, SMG"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_45acp"
+ "ammoprice" "300"
+
+ // Knockback (module)
+
+ "knockback" "1.0"
+
+ // ZMarket (module)
+
+ "zmarketprice" "1400"
+ }
+
+ "TMP"
+ {
+ // General
+
+ "weaponentity" "weapon_tmp"
+ "weapontype" "All, SMG"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_9mm"
+ "ammoprice" "300"
+
+ // Knockback (module)
+
+ "knockback" "1.0"
+
+ // ZMarket (module)
+
+ "zmarketprice" "1250"
+ }
+
+ "MP5Navy"
+ {
+ // General
+
+ "weaponentity" "weapon_mp5navy"
+ "weapontype" "All, SMG"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_9mm"
+ "ammoprice" "300"
+
+ // Knockback (module)
+
+ "knockback" "1.0"
+
+ // ZMarket (module)
+
+ "zmarketprice" "1500"
+ }
+
+ "UMP45"
+ {
+ // General
+
+ "weaponentity" "weapon_ump45"
+ "weapontype" "All, SMG"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_45acp"
+ "ammoprice" "300"
+
+ // Knockback (module)
+
+ "knockback" "1.0"
+
+ // ZMarket (module)
+
+ "zmarketprice" "1700"
+ }
+
+ "P90"
+ {
+ // General
+
+ "weaponentity" "weapon_p90"
+ "weapontype" "All, SMG"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_57mm"
+ "ammoprice" "300"
+
+ // Knockback (module)
+
+ "knockback" "1.0"
+
+ // ZMarket (module)
+
+ "zmarketprice" "2350"
+ }
+
+ "Galil"
+ {
+ // General
+
+ "weaponentity" "weapon_galil"
+ "weapontype" "All, Rifle"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_556mm"
+ "ammoprice" "500"
+
+ // Knockback (module)
+
+ "knockback" "1.0"
+
+ // ZMarket (module)
+
+ "zmarketprice" "2000"
+ }
+
+ "Famas"
+ {
+ // General
+
+ "weaponentity" "weapon_famas"
+ "weapontype" "All, Rifle"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_556mm"
+ "ammoprice" "500"
+
+ // Knockback (module)
+
+ "knockback" "1.0"
+
+ // ZMarket (module)
+
+ "zmarketprice" "2250"
+ }
+
+ "AK47"
+ {
+ // General
+
+ "weaponentity" "weapon_ak47"
+ "weapontype" "All, Rifle"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_762mm"
+ "ammoprice" "500"
+
+ // Knockback (module)
+
+ "knockback" "1.0"
+
+ // ZMarket (module)
+
+ "zmarketprice" "2500"
+ }
+
+ "M4A1"
+ {
+ // General
+
+ "weaponentity" "weapon_m4a1"
+ "weapontype" "All, Rifle"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_556mm"
+ "ammoprice" "500"
+
+ // Knockback (module)
+
+ "knockback" "1.0"
+
+ // ZMarket (module)
+
+ "zmarketprice" "3100"
+ }
+
+ "SG552"
+ {
+ // General
+
+ "weaponentity" "weapon_sg552"
+ "weapontype" "All, Rifle"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_556mm"
+ "ammoprice" "500"
+
+ // Knockback (module)
+
+ "knockback" "1.0"
+
+ // ZMarket (module)
+
+ "zmarketprice" "3500"
+ }
+
+ "AUG"
+ {
+ // General
+
+ "weaponentity" "weapon_aug"
+ "weapontype" "All, Rifle"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_762mm"
+ "ammoprice" "500"
+
+ // Knockback (module)
+
+ "knockback" "1.0"
+
+ // ZMarket (module)
+
+ "zmarketprice" "3500"
+ }
+
+ "Scout"
+ {
+ // General
+
+ "weaponentity" "weapon_scout"
+ "weapontype" "All, Sniper"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_762mm"
+ "ammoprice" "750"
+
+ // Knockback (module)
+
+ "knockback" "1.8"
+
+ // ZMarket (module)
+
+ "zmarketprice" "2750"
+ }
+
+ "SG550"
+ {
+ // General
+
+ "weaponentity" "weapon_sg550"
+ "weapontype" "All, Sniper"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_556mm"
+ "ammoprice" "1000"
+
+ // Knockback (module)
+
+ "knockback" "0.9"
+
+ // ZMarket (module)
+
+ "zmarketprice" "4200"
+ }
+
+ "G3SG1"
+ {
+ // General
+
+ "weaponentity" "weapon_g3sg1"
+ "weapontype" "All, Sniper"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_762mm"
+ "ammoprice" "1000"
+
+ // Knockback (module)
+
+ "knockback" "0.9"
+
+ // ZMarket (module)
+
+ "zmarketprice" "5000"
+ }
+
+ "AWP"
+ {
+ // General
+
+ "weaponentity" "weapon_awp"
+ "weapontype" "All, Sniper"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_338mag"
+ "ammoprice" "1000"
+
+ // Knockback (module)
+
+ "knockback" "1.8"
+
+ // ZMarket (module)
+
+ "zmarketprice" "4750"
+ }
+
+ "M249"
+ {
+ // General
+
+ "weaponentity" "weapon_m249"
+ "weapontype" "All, Machine Gun"
+ "weaponslot" "0"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Weapon Ammo (core)
+
+ "ammotype" "ammo_556mm_box"
+ "ammoprice" "1500"
+
+ // Knockback (module)
+
+ "knockback" "1.0"
+
+ // ZMarket (module)
+
+ "zmarketprice" "5750"
+ }
+
+ "Knife"
+ {
+ // General
+
+ "weaponentity" "weapon_knife"
+ "weapontype" "All, Melee"
+ "weaponslot" "2"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "no"
+
+ // Knockback (module)
+
+ "knockback" "10.0"
+ }
+
+ "HEGrenade"
+ {
+ // General
+
+ "weaponentity" "weapon_hegrenade"
+ "weapontype" "All, Projectile"
+ "weaponslot" "3"
+
+ // Restrict (core)
+
+ "restrictdefault" "no"
+ "toggleable" "yes"
+
+ // Knockback (module)
+
+ "knockback" "6.0"
+
+ // ZMarket (module)
+
+ "zmarketprice" "300"
+ "zmarketpurchasemax" "1"
+ }
+
+ "Flashbang"
+ {
+ // General
+
+ "weaponentity" "weapon_flashbang"
+ "weapontype" "All, Projectile"
+ "weaponslot" "3"
+
+ // Restrict (core)
+
+ "restrictdefault" "yes"
+ "toggleable" "yes"
+
+ // ZMarket (module)
+
+ "zmarketprice" "200"
+ "zmarketpurchasemax" "1"
+ }
+
+ "Smokegrenade"
+ {
+ // General
+
+ "weaponentity" "weapon_smokegrenade"
+ "weapontype" "All, Projectile"
+ "weaponslot" "3"
+
+ // Restrict (core)
+
+ "restrictdefault" "yes"
+ "toggleable" "yes"
+
+ // ZMarket (module)
+
+ "zmarketprice" "300"
+ "zmarketpurchasemax" "1"
+ }
+
+ "NVGs"
+ {
+ // General
+
+ "weaponentity" "item_nvgs"
+ "weapontype" "All, Equipment"
+ "weaponslot" "5"
+
+ // Restrict (core)
+
+ "restrictdefault" "yes"
+ "toggleable" "yes"
+
+ // ZMarket (module)
+
+ "zmarketprice" "1000"
+ }
+}
diff --git a/cstrike/addons/sourcemod/translations/es/zombiereloaded.phrases.txt b/cstrike/addons/sourcemod/translations/es/zombiereloaded.phrases.txt
index 40e5990..2b57c0f 100644
--- a/cstrike/addons/sourcemod/translations/es/zombiereloaded.phrases.txt
+++ b/cstrike/addons/sourcemod/translations/es/zombiereloaded.phrases.txt
@@ -1,1087 +1,1087 @@
-ïğż"Phrases"
-{
- // ===========================
- // General (base)
- // ===========================
-
- "General round objective"
- {
- "es" "El juego es @greenHumanos vs. Zombis@default, El objetivo de los zombis es infectar a todos los humanos. Traducido por @greenFranc1sco @defaultSteam: @greenfranug"
- }
-
- "General zmenu reminder"
- {
- "es" "Para ayuda en comandos Zombie:Reloaded, escribe \"{1}{2}\" en chat."
- }
-
- // ===========================
- // Generic (base)
- // ===========================
-
- // General
-
- "Literal text"
- {
- "es" "{1}"
- }
- // Set string to "{1}" for all languages.
-
- "Feature is disabled"
- {
- "es" "Esta caracteristica esta desactivada por el host del servidor."
- }
-
- "Not enough money"
- {
- "es" "Tu no tienes suficiente dinero para comprar este articulo."
- }
-
- "Must be player"
- {
- "es" "Esta funcion esta reservada solo para jugadores."
- }
-
- "Must be admin"
- {
- "es" "Esta funcion esta reservada solo para admins."
- }
-
- "No access to command"
- {
- "es" "No estas autorizado a ejecutar este comando."
- }
-
- "Must be alive"
- {
- "es" "Esta funcion requiere que tu estes vivo."
- }
-
- "Must be dead"
- {
- "es" "Esta funcion requiere que tu estes muerto."
- }
-
- "Must be on team"
- {
- "es" "Esta funcion requiere que tu estes en un equipo."
- }
-
- "Must be zombie"
- {
- "es" "Esta funcion requiere que tu seas zombi."
- }
-
- "Must be human"
- {
- "es" "Esta funcion requiere que tu seas humano."
- }
-
- "Increase by"
- {
- "es" "Aumentado en {1}"
- }
-
- "Decrease by"
- {
- "es" "Disminuido en {1}"
- }
-
- "Current Value"
- {
- "es" "El valor actual:"
- }
-
- "Zombie"
- {
- "es" "Zombi"
- }
-
- "Human"
- {
- "es" "Humano"
- }
-
- // Menu
-
- "Menu empty"
- {
- "es" "(Indefinido)"
- }
-
- // ===========================
- // Config (core)
- // ===========================
-
- // Commands
-
- "Config command reload syntax"
- {
- "es" "Sintasis: zr_reloadconfig [archivo alias2] ... - Vuelve a cargar un archivo de configuracion."
- }
-
- "Config command reload related commands"
- {
- "es" "Comando(s) relacionado(s): zr_config_reloadall"
- }
-
- "Config command reload syntax aliases"
- {
- "es" "Archivo alias:\n* \"{1}\"\n* \"{2}\"\n* \"{3}\"\n* \"{4}\"\n* \"{5}\""
- }
-
- "Config command reload invalid"
- {
- "es" "Invalido archivo de alias: \"{1}\""
- }
-
- "Config command reload not loaded"
- {
- "es" "Archivo de configuracion \"{1}\" no se pudo cargar. (Cualquier desajuste o invalido el contenido del archivo.)"
- }
-
- "Config command reload all stats begin"
- {
- "es" "Recargando todos los archivos de configuracion de Zombie:Reloaded...\n------------------------------------------------"
- }
-
- "Config command reload all stats successful"
- {
- "es" "\"{1}\" - Exito."
- }
-
- "Config command reload all stats failed"
- {
- "es" "\"{1}\" - Fallo. (Cualquier desajuste o invalido el contenido del archivo.)"
- }
-
- // ===========================
- // Log (core)
- // ===========================
-
- "Log Generic Flag"
- {
- // Max length: 19 characters.
- "es" "Bandera generica:"
- }
-
- "Log Value"
- {
- // Max length: 7 characters:
- "es" "Valor:"
- }
-
- "Log Module"
- {
- // Max length: 23 characters:
- "es" "Modulo:"
- }
-
- "Log Status"
- {
- "es" "Estado del Filtro:"
- }
-
- "Log Module Filtering"
- {
- "es" "Modulo de filtrado:"
- }
-
- "Log Module Short Name"
- {
- "es" "Nombre corto:"
- }
-
- // ===========================
- // Classes
- // ===========================
-
- // General
-
- "Classes admin mode enabled"
- {
- "es" "El modo de admin esta habilitado!"
- }
-
- "Classes random assignment"
- {
- "es" "Has sido aleatoriamente asignado a la clase @green\"{1}\"."
- }
-
- // Center Text/HUD
-
- "Classes overlay toggle"
- {
- "es" "Cambiar clase de comandos del Overlay: {1}"
- }
-
- // Menu
-
- "Classes menu title"
- {
- "es" "Seleccion de clases:"
- }
-
- "Classes menu active"
- {
- "es" "Activo: {1}"
- }
-
- "Classes menu next"
- {
- "es" "Siguiente aparicion: {1}"
- }
-
- "Classes menu select zombie"
- {
- "es" "Seleccione la clase de Zombi"
- }
-
- "Classes menu select human"
- {
- "es" "Seleccione la clase de Humano"
- }
-
- "Classes menu select admin"
- {
- "es" "Seleccione la clase de Admin"
- }
-
- "Classes menu admin mode toggle"
- {
- "es" "Activar el modo de admin"
- }
-
- "Classes Menu Team Select Title"
- {
- "es" "Seleccionar Equipo:"
- }
-
- "Classes Menu Zombies"
- {
- "es" "Zombis"
- }
-
- "Classes Menu Humans"
- {
- "es" "Humanos"
- }
-
- "Classes Menu Multiplier Select Title"
- {
- "es" "Seleccione Multiplicador:"
- }
-
- "Classes Menu Adjust Value"
- {
- "es" "Ajustar Valor:"
- }
-
- // Attributes
-
- "Classes Attrib Napalm Time"
- {
- "es" "Tiempo de Napalm"
- }
-
- "Classes Attrib Health"
- {
- "es" "Salud"
- }
-
- "Classes Attrib Regen Interval"
- {
- "es" "Intervalo de regeneracion de salud"
- }
-
- "Classes Attrib Regen Amount"
- {
- "es" "Cantidad de regeneracion de salud"
- }
-
- "Classes Attrib Infect Gain"
- {
- "es" "Ganancia de la salud al infectar"
- }
-
- "Classes Attrib Speed"
- {
- "es" "Velocidad de carrera"
- }
-
- "Classes Attrib Knockback"
- {
- "es" "Retroceso al ser disparado"
- }
-
- "Classes Attrib Jump Height"
- {
- "es" "Altura del salto"
- }
-
- "Classes Attrib Jump Distance"
- {
- "es" "Distancia del salto"
- }
-
- "Classes Selection Not Allowed"
- {
- "es" "No esta permitido el cambio de clases."
- }
-
- // ===========================
- // Immunity
- // ===========================
-
- "Immunity Shield Not Available"
- {
- "en" "You don't have a shield."
- }
-
- "Immunity Shield Cooldown"
- {
- "en" "{1} seconds until shield is available."
- }
-
- "Immunity Shield Time Left"
- {
- "en" "Shield time left: {1}"
- }
-
- // ===========================
- // Overlays (core)
- // ===========================
-
- "Overlays not supported"
- {
- "es" "Bloqueando Overlay - DX{1} Detectado (DX{2} Requerido)"
- }
-
- // ===========================
- // Infect (core)
- // ===========================
-
- // General
-
- "Infect infected"
- {
- "es" "Has sido infectado! Ahora debes ir a infectar a otros jugadores."
- }
-
- "Infect human"
- {
- "es" "Los dioses misericordiosos (conocidos como admins) han resucitado tu alma, aprovecha esta nueva oportunidad!"
- }
-
- "Infect disconnect"
- {
- "es" "El ultimo zombi a dejado el juego, y te ha pasado la infeccion a ti. (luego se lo agradeces xD)"
- }
-
- // Center Text
-
- "Infect countdown"
- {
- "es" "First infection in {1} seconds."
- }
-
- // Menu
-
- "Infect menu clients title"
- {
- "es" "Gestion de Zombis\nActivar infeccion:\n[] = Infecctado"
- }
-
- // Commands
-
- "Infect command infect syntax"
- {
- "es" "Infectar a un cliente. Uso: zr_infect [resucitar - 1/0]"
- }
-
- "Infect command human syntax"
- {
- "es" "Cambiar un cliente a humano. Uso: zr_human [resucitar - 1/0] [proteccion - 1/0]"
- }
-
- "Infect command infect successful"
- {
- "es" "El jugador @green{1} @defaultha sido infectado con exito."
- }
-
- "Infect command infect mother successful"
- {
- "es" "El jugador @green{1} @defaultha sido infectado con exito como el zombi madre."
- }
-
- "Infect command infect unsuccessful"
- {
- "es" "El jugador @green{1} @defaultya es un zombi."
- }
-
- "Infect command human successful"
- {
- "es" "El jugador @green{1} @defaultha vuelto a ser humano con exito."
- }
-
- "Infect command human unsuccessful"
- {
- "es" "El jugador @green{1} @defaultya es un humano."
- }
-
- // ===========================
- // Damage (core)
- // ===========================
-
- "Damage suicide intercept"
- {
- "es" "Intento de suicidio bloqueado (se valiente y no te suicides)."
- }
-
- // ===========================
- // Menu (core)
- // ===========================
-
- // General
-
- "Menu main title"
- {
- "es" "Comandos ZR (Traducidos por Franc1sco Steam: franug):\nPrefijo de comando con \"{1}\" o \"{2}\" (calma) al escribir en el chat."
- }
-
- "Menu main zadmin"
- {
- "es" "ZAdmin - Abrir el menu de admin"
- }
-
- "Menu main zclass"
- {
- "es" "ZClass - Configurar los parametros de la clase"
- }
-
- "Menu main zcookies"
- {
- "es" "ZCookies - Cambia tu configuracion personal de ZR aqui"
- }
-
- "Menu main zspawn"
- {
- "es" "ZSpawn - Has entrado tarde? Reaparece con esto"
- }
-
- "Menu main ztele"
- {
- "es" "ZTele - Estas atascado? Teleportate al punto de inicio"
- }
-
- "Menu main zhp"
- {
- "es" "ZHP - Muestra tu Salud real como zombi"
- }
-
- "Menu main zmarket"
- {
- "es" "ZMarket - Comprate cosas aqui"
- }
-
- // ===========================
- // Weapons (core)
- // ===========================
-
- // General
-
- "Zombie cant use weapon"
- {
- "es" "Los zombis no pueden usar armas!"
- }
-
- // Restrict
-
- "Restrict weapon"
- {
- "es" "El arma @green\"{1}\" @defaultha sido restringida."
- }
-
- "Unrestrict weapon"
- {
- "es" "El arma @green\"{1}\" @defaultha sido autorizada."
- }
-
- "Restrict weapon stopped"
- {
- "es" "El arma @green\"{1}\" @defaultya esta restringida."
- }
-
- "Unrestrict weapon stopped"
- {
- "es" "El arma @green\"{1}\" @default no tiene restricciones."
- }
-
- "Restrict weapon type"
- {
- "es" "Las armas del tipo @green\"{1}\" @defaultse han restringido."
- }
-
- "Unrestrict weapon type"
- {
- "es" "Las armas del tipo @green\"{1}\" @defaultse han autorizado."
- }
-
- "Restrict weapon type stopped"
- {
- "es" "Las armas del tipo @green\"{1}\" @defaultestan ya todas restringidas."
- }
-
- "Unrestrict weapon type stopped"
- {
- "es" "Las armas del tipo @green\"{1}\" @defaultno tienen restricciones."
- }
-
- "Restrict weapon untoggleable"
- {
- "es" "El arma @green\"{1}\" @defaultno puede tener sus restricciones de alternancia."
- }
-
- "Weapon invalid"
- {
- "es" "El arma @green\"{1}\" @defaultes un nombre de (tipo) arma invalido."
- }
-
- "Weapon is restricted"
- {
- "es" "El arma @green{1} @defaultesta restringida."
- }
-
- // ZMarket
-
- "Weapons zmarket buyzone"
- {
- "es" "Debes estar en una zona de compra para utilizar el Zmarket."
- }
-
- "Weapons zmarket purchase"
- {
- "es" "Has comprado el arma @green{1}. @defaultSelecciona de nuevo el elemento si la municion es baja."
- }
-
- "Weapons zmarket purchase max"
- {
- "es" "El arma @green{1} @defaulttiene un limite de compra de @green{2}@default. Deberas esperar a tu proxima aparicion para poder volver a comprarlo."
- }
-
- "Weapons zmarket grenade max"
- {
- "es" "solo se puede llevar {1} granada(s) de este tipo."
- }
-
- "Weapons zmarket auto-rebuy toggle on"
- {
- "es" "Auto-recompra ha sido activado, su preseleccion se obtienen automaticamente cada vez que aparezcas."
- }
-
- "Weapons zmarket auto-rebuy toggle off"
- {
- "es" "Auto-recompra ha sido desactivada."
- }
-
- "Weapons zmarket updated loadout"
- {
- "es" "No eres capaz de comprar un arma en este momento, pero su preseleccion se ha actualizado con esta arma."
- }
-
- "Weapons zmarket get current loadout"
- {
- "es" "Actualizacion de preseleccion actual, utilice la opcion de recompra para comprar estas armas de nuevo."
- }
-
- // Commands
-
- "Weapons command restrict syntax"
- {
- "es" "Restringe un arma o un tipo de arma. Uso: zr_restrict [arma2|tipodearma2] ..."
- }
-
- "Weapons command unrestrict syntax"
- {
- "es" "Autoriza un arma o un tipo de arma. Uso: zr_unrestrict [arma2|tipodearma2] ..."
- }
-
- // Menu (Restrict)
-
- "Weapons menu restrict main title"
- {
- "es" "Gestion de Armas"
- }
-
- "Weapons menu restrict main restrict"
- {
- "es" "Restricciones de Armas"
- }
-
- "Weapons menu restrict main market"
- {
- "es" "ZMarket"
- }
-
- "Weapons menu restrict types title"
- {
- "es" "Restricciones de Arma\nSelecciona tipo de arma:"
- }
-
- "Weapons menu restrict types weapon type title"
- {
- "es" "Restricciones de Arma\nTipo de Arma: {1}\n[] = Restringida"
- }
-
- "Weapons menu restrict types restrict all"
- {
- "es" "Restringir el tipo de arma {1}"
- }
-
- "Weapons menu restrict types unrestrict all"
- {
- "es" "Autorizar el tipo de arma {1}"
- }
-
- "Weapons menu restrict zmarket title"
- {
- "es" "ZMarket\nSeleccionar opciones:"
- }
-
- "Weapons menu restrict zmarket buyzone"
- {
- "es" "Solo zona de compra - {1}"
- }
-
- // Menu (ZMarket)
-
- "Weapons menu zmarket main title"
- {
- "es" "ZMarket\nSeleccionar una opcion:"
- }
-
- "Weapons menu zmarket main get loadout"
- {
- "es" "Guardar configuracion actual"
- }
-
- "Weapons menu zmarket main view loadout"
- {
- "es" "Ver configuracion actual"
- }
-
- "Weapons menu zmarket main rebuy"
- {
- "es" "Comprar configuracion actual"
- }
-
- "Weapons menu zmarket main auto-rebuy"
- {
- "es" "Auto-Recompra: {1}"
- }
-
- "Weapons menu zmarket main weapons list"
- {
- "es" "Comprar Armas"
- }
-
- "Weapons menu zmarket loadout title"
- {
- "es" "ZMarket\nMi configuracion actual:\nSeleccione la ranura de armas para borrar.\nNota: Recompra se refiere a estas armas."
- }
-
- "Weapons menu zmarket loadout primary"
- {
- "es" "Primaria: {1}"
- }
-
- "Weapons menu zmarket loadout secondary"
- {
- "es" "Secundaria: {1}"
- }
-
- "Weapons menu zmarket loadout melee"
- {
- "es" "Melee: {1}"
- }
-
- "Weapons menu zmarket loadout projectile"
- {
- "es" "Projectil: {1}"
- }
-
- "Weapons menu zmarket loadout explosive"
- {
- "es" "Explosivo: {1}"
- }
-
- "Weapons menu zmarket loadout nvgs"
- {
- "es" "Vision Nocturna: {1}"
- }
-
- "Weapons menu zmarket loadout empty"
- {
- "es" "(Ninguno)"
- }
-
- "Weapons menu zmarket types title"
- {
- "es" "ZMarket\nSeleccionar tipo de arma:"
- }
-
- "Weapons menu zmarket types weapon type title"
- {
- "es" "ZMarket\nTipo de arma: {1}\n[] = Restringida"
- }
-
- "Weapons menu zmarket types weapon info"
- {
- "es" "{1} (${2})\nDejar compra: {3}"
- }
-
- "Weapons menu zmarket types weapon ammo"
- {
- "es" "Municion"
- }
-
- // ===========================
- // Hitgroups (core)
- // ===========================
-
- // Menu
-
- "Hitgroups menu hitgroups title"
- {
- "es" "Gestion de Grupo de Impacto\nComandos: zr_hitgroup(_enable_all/_headshots_only)\nSeleccione un Grupo de Impacto a Activar:"
- }
-
- "Hitgroups menu hitgroups enable all"
- {
- "es" "Activar todos los Grupos de Impacto"
- }
-
- "Hitgroups menu hitgroups headshots only"
- {
- "es" "Solo Disparos a la Cabeza"
- }
-
- // Commands
-
- "Hitgroups command syntax"
- {
- "es" "Cambia o establece si un Grupo de Impacto de un zombie puede ser daħado. Uso: zr_hitgroup [1/0]"
- }
-
- "Hitgroups command related commands"
- {
- "es" "Comando(s) similar(es): zr_hitgroup_enable_all, zr_hitgroup_headshots_only"
- }
-
- "Hitgroups command syntax names"
- {
- "es" "Nombres del Grupo de Impacto:"
- }
-
- "Hitgroups command successful on"
- {
- "es" "Daħos por Grupo de Impacto \"{1}\" se ha activado."
- }
-
- "Hitgroups command successful off"
- {
- "es" "Daħos por Grupo de Impacto \"{1}\" se ha desactivado."
- }
-
- "Hitgroups command invalid hitgroup"
- {
- "es" "\"{1}\" No es un Grupo de Impacto valido. Escribe zr_hitgroup para ver todos los alias."
- }
-
- "Hitgroups command enable all successful"
- {
- "es" "Todos los Grupos de Impacto de los zombies han sido habilitados para el daħo."
- }
-
- "Hitgroups command headshots only successful"
- {
- "es" "Los zombis ahora solo pueden ser daħados por disparos a la cabeza."
- }
-
- // ===========================
- // ZAdmin (core)
- // ===========================
-
- "ZAdmin main title"
- {
- "es" "ZAdmin\nSelecciona categoria:"
- }
-
- "ZAdmin main class multipliers"
- {
- "es" "Multiplicador de Clases"
- }
-
- "ZAdmin main weapons"
- {
- "es" "Gestion de Armas"
- }
-
- "ZAdmin main hitgroups"
- {
- "es" "Gestion de Grupo de Impacto"
- }
-
- "ZAdmin main zombie"
- {
- "es" "Gestion de Zombi"
- }
-
- "ZAdmin main force zspawn"
- {
- "es" "Forzar ZSpawn"
- }
-
- "ZAdmin main force ztele"
- {
- "es" "Forzar ZTele"
- }
-
- // ===========================
- // AntiStick (module)
- // ===========================
-
- // Commands
-
- "AntiStick command set width syntax"
- {
- "es" "Establece el ancho del casco de un modelo. (Ver zr_antistick_list_models) Uso: zr_antistick_set_width "
- }
-
- "AntiStick command list models list"
- {
- "es" "Nombre de jugador: Modelo: Anchura del casco:\n-------------------------------------------------------------------------------------------------------------"
- }
-
- "AntiStick command list models name"
- {
- "es" "{1} {2} {3}"
- }
-
- "AntiStick command set width successful"
- {
- "es" "La anchura del casco para el modelo \"{1}\" ha sido cambiada a \"{2}.\""
- }
-
- "AntiStick command set width invalid model"
- {
- "es" "Invalido modelo/jugador especificado: \"{1}\""
- }
-
- "AntiStick command set width invalid width"
- {
- "es" "Invalida anchura del modelo de casco especificada: \"{1}\""
- }
-
- // ===========================
- // Spawn Protect (module)
- // ===========================
-
- // General
-
- "Spawn protection begin"
- {
- "es" "Los zombis estan presentes, usted tiene {1} segundos para encontrar un lugar seguro antes de perder la inmunidad."
- }
-
- "Spawn protection end"
- {
- "es" "Ahora eres vulnerable a la infeccion de un zombie."
- }
-
- // HUD
-
- "Spawn Protect"
- {
- "es" "La proteccion contra zombis termina en: {1} segundos."
- }
-
- // ===========================
- // ZCookies (module)
- // ===========================
-
- "ZCookies Menu main title"
- {
- "es" "ZCookies\nSeleccione un cookie:"
- }
-
- "ZCookies menu main auto-rebuy"
- {
- "es" "ZMarket Auto-Recompra: {1}"
- }
-
- "ZCookies menu main zhp"
- {
- "es" "Pantalla ZHP: {1}"
- }
-
- "ZCookies menu main overlay"
- {
- "es" "Humano/Zombi Clase de Overlay: {1}"
- }
-
- "ZCookies zmarket loadout"
- {
- "es" "ZMarket Preseleccion"
- }
-
- // ===========================
- // ZSpawn (module)
- // ===========================
-
- // General
-
- "ZSpawn double spawn"
- {
- "es" "ZSpawn solo se puede utilizar si entraste tarde durante una ronda en progreso."
- }
-
- "ZSpawn timelimit"
- {
- "es" "El tiempo limite ({1} segundos), para usar ZSpawn, ya ha expirado."
- }
-
- // Menu
-
- "ZSpawn clients title"
- {
- "es" "Forzar ZSpawn (zr_zspawn_force)\nSeleccionar un jugador:"
- }
-
- // Commands
-
- "ZSpawn command force syntax"
- {
- "es" "Forzar ZSpawn en un Cliente. Uso: zr_zspawn_force ['0' = aparecer como humano | '1' = aparecer como zombi]"
-
- }
-
- "ZSpawn command force successful"
- {
- "es" "El jugador {1} ha sido resucitado correctamente."
- }
-
- "ZSpawn command force unsuccessful"
- {
- "es" "El jugador {1} no pudo ser resucitado."
- }
-
- // ===========================
- // ZTele (module)
- // ===========================
-
- // General
-
- "ZTele restricted human"
- {
- "es" "ZTele esta restringido para los seres humanos en este momento."
- }
-
- "ZTele max"
- {
- "es" "Has llegado a tu maximo de teleportaciones ({1} por ronda)."
- }
-
- "ZTele in progress"
- {
- "es" "En este momento esta en espera de teletransporte."
- }
-
- "ZTele autocancel text"
- {
- "es" "Teletransporte ha sido cancelado. (La restriccion limite es de {1} pies.)"
- }
-
- // Center Text
-
- "ZTele countdown"
- {
- "es" "Teletransportandose al punto de inicio en: {1} segundos."
- }
-
- "ZTele autocancel centertext"
- {
- "es" "El teletransporte ha sido cancelado."
- }
-
- "ZTele countdown end"
- {
- "es" "Teletransportado al punto de inicio. (Veces: {1}/{2})"
- }
-
- // Menu
-
- "ZTele clients title"
- {
- "es" "Forzar ZTele (zr_ztele_force)\nSeleccionar un jugador:"
- }
-
- // Commands
-
- "ZTele command force syntax"
- {
- "es" "Forzar ZTele en un Cliente. Uso: zr_ztele_force "
-
- }
-
- "ZTele command force successful"
- {
- "es" "El jugador {1} ha sido teletransportado correctamente."
- }
-
- "ZTele command force unsuccessful"
- {
- "es" "El jugador {1} no pudo ser teletransportado."
- }
-
- // ===========================
- // ZHP (module)
- // ===========================
-
- // General
-
- "ZHP enable"
- {
- "es" "Pantalla de Salud activada, Tu Salud real sera mostrada despues de la infeccion."
- }
-
- "ZHP disable"
- {
- "es" "Pantalla de Salud desactivada."
- }
-
- // HUD
-
- "Display HP"
- {
- "es" "Salud: {1}"
- }
-
- // ===========================
- // Volumetric features (module)
- // ===========================
-
- "Vol Anticamp Message"
- {
- "es" "Esta area esta restringida, por favor muevete."
- }
-
- "Vol Slay"
- {
- "es" "Matado jugador \"{1}\" por campear en una zona restringida (ID: {2})."
- }
-
- "Vol Ignite"
- {
- "es" "Quemado jugador \"{1}\" por campear en una zona restringida (ID: {2})."
- }
-}
+ïğż"Phrases"
+{
+ // ===========================
+ // General (base)
+ // ===========================
+
+ "General round objective"
+ {
+ "es" "El juego es @greenHumanos vs. Zombis@default, El objetivo de los zombis es infectar a todos los humanos. Traducido por @greenFranc1sco @defaultSteam: @greenfranug"
+ }
+
+ "General zmenu reminder"
+ {
+ "es" "Para ayuda en comandos Zombie:Reloaded, escribe \"{1}{2}\" en chat."
+ }
+
+ // ===========================
+ // Generic (base)
+ // ===========================
+
+ // General
+
+ "Literal text"
+ {
+ "es" "{1}"
+ }
+ // Set string to "{1}" for all languages.
+
+ "Feature is disabled"
+ {
+ "es" "Esta caracteristica esta desactivada por el host del servidor."
+ }
+
+ "Not enough money"
+ {
+ "es" "Tu no tienes suficiente dinero para comprar este articulo."
+ }
+
+ "Must be player"
+ {
+ "es" "Esta funcion esta reservada solo para jugadores."
+ }
+
+ "Must be admin"
+ {
+ "es" "Esta funcion esta reservada solo para admins."
+ }
+
+ "No access to command"
+ {
+ "es" "No estas autorizado a ejecutar este comando."
+ }
+
+ "Must be alive"
+ {
+ "es" "Esta funcion requiere que tu estes vivo."
+ }
+
+ "Must be dead"
+ {
+ "es" "Esta funcion requiere que tu estes muerto."
+ }
+
+ "Must be on team"
+ {
+ "es" "Esta funcion requiere que tu estes en un equipo."
+ }
+
+ "Must be zombie"
+ {
+ "es" "Esta funcion requiere que tu seas zombi."
+ }
+
+ "Must be human"
+ {
+ "es" "Esta funcion requiere que tu seas humano."
+ }
+
+ "Increase by"
+ {
+ "es" "Aumentado en {1}"
+ }
+
+ "Decrease by"
+ {
+ "es" "Disminuido en {1}"
+ }
+
+ "Current Value"
+ {
+ "es" "El valor actual:"
+ }
+
+ "Zombie"
+ {
+ "es" "Zombi"
+ }
+
+ "Human"
+ {
+ "es" "Humano"
+ }
+
+ // Menu
+
+ "Menu empty"
+ {
+ "es" "(Indefinido)"
+ }
+
+ // ===========================
+ // Config (core)
+ // ===========================
+
+ // Commands
+
+ "Config command reload syntax"
+ {
+ "es" "Sintasis: zr_reloadconfig [archivo alias2] ... - Vuelve a cargar un archivo de configuracion."
+ }
+
+ "Config command reload related commands"
+ {
+ "es" "Comando(s) relacionado(s): zr_config_reloadall"
+ }
+
+ "Config command reload syntax aliases"
+ {
+ "es" "Archivo alias:\n* \"{1}\"\n* \"{2}\"\n* \"{3}\"\n* \"{4}\"\n* \"{5}\""
+ }
+
+ "Config command reload invalid"
+ {
+ "es" "Invalido archivo de alias: \"{1}\""
+ }
+
+ "Config command reload not loaded"
+ {
+ "es" "Archivo de configuracion \"{1}\" no se pudo cargar. (Cualquier desajuste o invalido el contenido del archivo.)"
+ }
+
+ "Config command reload all stats begin"
+ {
+ "es" "Recargando todos los archivos de configuracion de Zombie:Reloaded...\n------------------------------------------------"
+ }
+
+ "Config command reload all stats successful"
+ {
+ "es" "\"{1}\" - Exito."
+ }
+
+ "Config command reload all stats failed"
+ {
+ "es" "\"{1}\" - Fallo. (Cualquier desajuste o invalido el contenido del archivo.)"
+ }
+
+ // ===========================
+ // Log (core)
+ // ===========================
+
+ "Log Generic Flag"
+ {
+ // Max length: 19 characters.
+ "es" "Bandera generica:"
+ }
+
+ "Log Value"
+ {
+ // Max length: 7 characters:
+ "es" "Valor:"
+ }
+
+ "Log Module"
+ {
+ // Max length: 23 characters:
+ "es" "Modulo:"
+ }
+
+ "Log Status"
+ {
+ "es" "Estado del Filtro:"
+ }
+
+ "Log Module Filtering"
+ {
+ "es" "Modulo de filtrado:"
+ }
+
+ "Log Module Short Name"
+ {
+ "es" "Nombre corto:"
+ }
+
+ // ===========================
+ // Classes
+ // ===========================
+
+ // General
+
+ "Classes admin mode enabled"
+ {
+ "es" "El modo de admin esta habilitado!"
+ }
+
+ "Classes random assignment"
+ {
+ "es" "Has sido aleatoriamente asignado a la clase @green\"{1}\"."
+ }
+
+ // Center Text/HUD
+
+ "Classes overlay toggle"
+ {
+ "es" "Cambiar clase de comandos del Overlay: {1}"
+ }
+
+ // Menu
+
+ "Classes menu title"
+ {
+ "es" "Seleccion de clases:"
+ }
+
+ "Classes menu active"
+ {
+ "es" "Activo: {1}"
+ }
+
+ "Classes menu next"
+ {
+ "es" "Siguiente aparicion: {1}"
+ }
+
+ "Classes menu select zombie"
+ {
+ "es" "Seleccione la clase de Zombi"
+ }
+
+ "Classes menu select human"
+ {
+ "es" "Seleccione la clase de Humano"
+ }
+
+ "Classes menu select admin"
+ {
+ "es" "Seleccione la clase de Admin"
+ }
+
+ "Classes menu admin mode toggle"
+ {
+ "es" "Activar el modo de admin"
+ }
+
+ "Classes Menu Team Select Title"
+ {
+ "es" "Seleccionar Equipo:"
+ }
+
+ "Classes Menu Zombies"
+ {
+ "es" "Zombis"
+ }
+
+ "Classes Menu Humans"
+ {
+ "es" "Humanos"
+ }
+
+ "Classes Menu Multiplier Select Title"
+ {
+ "es" "Seleccione Multiplicador:"
+ }
+
+ "Classes Menu Adjust Value"
+ {
+ "es" "Ajustar Valor:"
+ }
+
+ // Attributes
+
+ "Classes Attrib Napalm Time"
+ {
+ "es" "Tiempo de Napalm"
+ }
+
+ "Classes Attrib Health"
+ {
+ "es" "Salud"
+ }
+
+ "Classes Attrib Regen Interval"
+ {
+ "es" "Intervalo de regeneracion de salud"
+ }
+
+ "Classes Attrib Regen Amount"
+ {
+ "es" "Cantidad de regeneracion de salud"
+ }
+
+ "Classes Attrib Infect Gain"
+ {
+ "es" "Ganancia de la salud al infectar"
+ }
+
+ "Classes Attrib Speed"
+ {
+ "es" "Velocidad de carrera"
+ }
+
+ "Classes Attrib Knockback"
+ {
+ "es" "Retroceso al ser disparado"
+ }
+
+ "Classes Attrib Jump Height"
+ {
+ "es" "Altura del salto"
+ }
+
+ "Classes Attrib Jump Distance"
+ {
+ "es" "Distancia del salto"
+ }
+
+ "Classes Selection Not Allowed"
+ {
+ "es" "No esta permitido el cambio de clases."
+ }
+
+ // ===========================
+ // Immunity
+ // ===========================
+
+ "Immunity Shield Not Available"
+ {
+ "en" "You don't have a shield."
+ }
+
+ "Immunity Shield Cooldown"
+ {
+ "en" "{1} seconds until shield is available."
+ }
+
+ "Immunity Shield Time Left"
+ {
+ "en" "Shield time left: {1}"
+ }
+
+ // ===========================
+ // Overlays (core)
+ // ===========================
+
+ "Overlays not supported"
+ {
+ "es" "Bloqueando Overlay - DX{1} Detectado (DX{2} Requerido)"
+ }
+
+ // ===========================
+ // Infect (core)
+ // ===========================
+
+ // General
+
+ "Infect infected"
+ {
+ "es" "Has sido infectado! Ahora debes ir a infectar a otros jugadores."
+ }
+
+ "Infect human"
+ {
+ "es" "Los dioses misericordiosos (conocidos como admins) han resucitado tu alma, aprovecha esta nueva oportunidad!"
+ }
+
+ "Infect disconnect"
+ {
+ "es" "El ultimo zombi a dejado el juego, y te ha pasado la infeccion a ti. (luego se lo agradeces xD)"
+ }
+
+ // Center Text
+
+ "Infect countdown"
+ {
+ "es" "First infection in {1} seconds."
+ }
+
+ // Menu
+
+ "Infect menu clients title"
+ {
+ "es" "Gestion de Zombis\nActivar infeccion:\n[] = Infecctado"
+ }
+
+ // Commands
+
+ "Infect command infect syntax"
+ {
+ "es" "Infectar a un cliente. Uso: zr_infect [resucitar - 1/0]"
+ }
+
+ "Infect command human syntax"
+ {
+ "es" "Cambiar un cliente a humano. Uso: zr_human [resucitar - 1/0] [proteccion - 1/0]"
+ }
+
+ "Infect command infect successful"
+ {
+ "es" "El jugador @green{1} @defaultha sido infectado con exito."
+ }
+
+ "Infect command infect mother successful"
+ {
+ "es" "El jugador @green{1} @defaultha sido infectado con exito como el zombi madre."
+ }
+
+ "Infect command infect unsuccessful"
+ {
+ "es" "El jugador @green{1} @defaultya es un zombi."
+ }
+
+ "Infect command human successful"
+ {
+ "es" "El jugador @green{1} @defaultha vuelto a ser humano con exito."
+ }
+
+ "Infect command human unsuccessful"
+ {
+ "es" "El jugador @green{1} @defaultya es un humano."
+ }
+
+ // ===========================
+ // Damage (core)
+ // ===========================
+
+ "Damage suicide intercept"
+ {
+ "es" "Intento de suicidio bloqueado (se valiente y no te suicides)."
+ }
+
+ // ===========================
+ // Menu (core)
+ // ===========================
+
+ // General
+
+ "Menu main title"
+ {
+ "es" "Comandos ZR (Traducidos por Franc1sco Steam: franug):\nPrefijo de comando con \"{1}\" o \"{2}\" (calma) al escribir en el chat."
+ }
+
+ "Menu main zadmin"
+ {
+ "es" "ZAdmin - Abrir el menu de admin"
+ }
+
+ "Menu main zclass"
+ {
+ "es" "ZClass - Configurar los parametros de la clase"
+ }
+
+ "Menu main zcookies"
+ {
+ "es" "ZCookies - Cambia tu configuracion personal de ZR aqui"
+ }
+
+ "Menu main zspawn"
+ {
+ "es" "ZSpawn - Has entrado tarde? Reaparece con esto"
+ }
+
+ "Menu main ztele"
+ {
+ "es" "ZTele - Estas atascado? Teleportate al punto de inicio"
+ }
+
+ "Menu main zhp"
+ {
+ "es" "ZHP - Muestra tu Salud real como zombi"
+ }
+
+ "Menu main zmarket"
+ {
+ "es" "ZMarket - Comprate cosas aqui"
+ }
+
+ // ===========================
+ // Weapons (core)
+ // ===========================
+
+ // General
+
+ "Zombie cant use weapon"
+ {
+ "es" "Los zombis no pueden usar armas!"
+ }
+
+ // Restrict
+
+ "Restrict weapon"
+ {
+ "es" "El arma @green\"{1}\" @defaultha sido restringida."
+ }
+
+ "Unrestrict weapon"
+ {
+ "es" "El arma @green\"{1}\" @defaultha sido autorizada."
+ }
+
+ "Restrict weapon stopped"
+ {
+ "es" "El arma @green\"{1}\" @defaultya esta restringida."
+ }
+
+ "Unrestrict weapon stopped"
+ {
+ "es" "El arma @green\"{1}\" @default no tiene restricciones."
+ }
+
+ "Restrict weapon type"
+ {
+ "es" "Las armas del tipo @green\"{1}\" @defaultse han restringido."
+ }
+
+ "Unrestrict weapon type"
+ {
+ "es" "Las armas del tipo @green\"{1}\" @defaultse han autorizado."
+ }
+
+ "Restrict weapon type stopped"
+ {
+ "es" "Las armas del tipo @green\"{1}\" @defaultestan ya todas restringidas."
+ }
+
+ "Unrestrict weapon type stopped"
+ {
+ "es" "Las armas del tipo @green\"{1}\" @defaultno tienen restricciones."
+ }
+
+ "Restrict weapon untoggleable"
+ {
+ "es" "El arma @green\"{1}\" @defaultno puede tener sus restricciones de alternancia."
+ }
+
+ "Weapon invalid"
+ {
+ "es" "El arma @green\"{1}\" @defaultes un nombre de (tipo) arma invalido."
+ }
+
+ "Weapon is restricted"
+ {
+ "es" "El arma @green{1} @defaultesta restringida."
+ }
+
+ // ZMarket
+
+ "Weapons zmarket buyzone"
+ {
+ "es" "Debes estar en una zona de compra para utilizar el Zmarket."
+ }
+
+ "Weapons zmarket purchase"
+ {
+ "es" "Has comprado el arma @green{1}. @defaultSelecciona de nuevo el elemento si la municion es baja."
+ }
+
+ "Weapons zmarket purchase max"
+ {
+ "es" "El arma @green{1} @defaulttiene un limite de compra de @green{2}@default. Deberas esperar a tu proxima aparicion para poder volver a comprarlo."
+ }
+
+ "Weapons zmarket grenade max"
+ {
+ "es" "solo se puede llevar {1} granada(s) de este tipo."
+ }
+
+ "Weapons zmarket auto-rebuy toggle on"
+ {
+ "es" "Auto-recompra ha sido activado, su preseleccion se obtienen automaticamente cada vez que aparezcas."
+ }
+
+ "Weapons zmarket auto-rebuy toggle off"
+ {
+ "es" "Auto-recompra ha sido desactivada."
+ }
+
+ "Weapons zmarket updated loadout"
+ {
+ "es" "No eres capaz de comprar un arma en este momento, pero su preseleccion se ha actualizado con esta arma."
+ }
+
+ "Weapons zmarket get current loadout"
+ {
+ "es" "Actualizacion de preseleccion actual, utilice la opcion de recompra para comprar estas armas de nuevo."
+ }
+
+ // Commands
+
+ "Weapons command restrict syntax"
+ {
+ "es" "Restringe un arma o un tipo de arma. Uso: zr_restrict [arma2|tipodearma2] ..."
+ }
+
+ "Weapons command unrestrict syntax"
+ {
+ "es" "Autoriza un arma o un tipo de arma. Uso: zr_unrestrict [arma2|tipodearma2] ..."
+ }
+
+ // Menu (Restrict)
+
+ "Weapons menu restrict main title"
+ {
+ "es" "Gestion de Armas"
+ }
+
+ "Weapons menu restrict main restrict"
+ {
+ "es" "Restricciones de Armas"
+ }
+
+ "Weapons menu restrict main market"
+ {
+ "es" "ZMarket"
+ }
+
+ "Weapons menu restrict types title"
+ {
+ "es" "Restricciones de Arma\nSelecciona tipo de arma:"
+ }
+
+ "Weapons menu restrict types weapon type title"
+ {
+ "es" "Restricciones de Arma\nTipo de Arma: {1}\n[] = Restringida"
+ }
+
+ "Weapons menu restrict types restrict all"
+ {
+ "es" "Restringir el tipo de arma {1}"
+ }
+
+ "Weapons menu restrict types unrestrict all"
+ {
+ "es" "Autorizar el tipo de arma {1}"
+ }
+
+ "Weapons menu restrict zmarket title"
+ {
+ "es" "ZMarket\nSeleccionar opciones:"
+ }
+
+ "Weapons menu restrict zmarket buyzone"
+ {
+ "es" "Solo zona de compra - {1}"
+ }
+
+ // Menu (ZMarket)
+
+ "Weapons menu zmarket main title"
+ {
+ "es" "ZMarket\nSeleccionar una opcion:"
+ }
+
+ "Weapons menu zmarket main get loadout"
+ {
+ "es" "Guardar configuracion actual"
+ }
+
+ "Weapons menu zmarket main view loadout"
+ {
+ "es" "Ver configuracion actual"
+ }
+
+ "Weapons menu zmarket main rebuy"
+ {
+ "es" "Comprar configuracion actual"
+ }
+
+ "Weapons menu zmarket main auto-rebuy"
+ {
+ "es" "Auto-Recompra: {1}"
+ }
+
+ "Weapons menu zmarket main weapons list"
+ {
+ "es" "Comprar Armas"
+ }
+
+ "Weapons menu zmarket loadout title"
+ {
+ "es" "ZMarket\nMi configuracion actual:\nSeleccione la ranura de armas para borrar.\nNota: Recompra se refiere a estas armas."
+ }
+
+ "Weapons menu zmarket loadout primary"
+ {
+ "es" "Primaria: {1}"
+ }
+
+ "Weapons menu zmarket loadout secondary"
+ {
+ "es" "Secundaria: {1}"
+ }
+
+ "Weapons menu zmarket loadout melee"
+ {
+ "es" "Melee: {1}"
+ }
+
+ "Weapons menu zmarket loadout projectile"
+ {
+ "es" "Projectil: {1}"
+ }
+
+ "Weapons menu zmarket loadout explosive"
+ {
+ "es" "Explosivo: {1}"
+ }
+
+ "Weapons menu zmarket loadout nvgs"
+ {
+ "es" "Vision Nocturna: {1}"
+ }
+
+ "Weapons menu zmarket loadout empty"
+ {
+ "es" "(Ninguno)"
+ }
+
+ "Weapons menu zmarket types title"
+ {
+ "es" "ZMarket\nSeleccionar tipo de arma:"
+ }
+
+ "Weapons menu zmarket types weapon type title"
+ {
+ "es" "ZMarket\nTipo de arma: {1}\n[] = Restringida"
+ }
+
+ "Weapons menu zmarket types weapon info"
+ {
+ "es" "{1} (${2})\nDejar compra: {3}"
+ }
+
+ "Weapons menu zmarket types weapon ammo"
+ {
+ "es" "Municion"
+ }
+
+ // ===========================
+ // Hitgroups (core)
+ // ===========================
+
+ // Menu
+
+ "Hitgroups menu hitgroups title"
+ {
+ "es" "Gestion de Grupo de Impacto\nComandos: zr_hitgroup(_enable_all/_headshots_only)\nSeleccione un Grupo de Impacto a Activar:"
+ }
+
+ "Hitgroups menu hitgroups enable all"
+ {
+ "es" "Activar todos los Grupos de Impacto"
+ }
+
+ "Hitgroups menu hitgroups headshots only"
+ {
+ "es" "Solo Disparos a la Cabeza"
+ }
+
+ // Commands
+
+ "Hitgroups command syntax"
+ {
+ "es" "Cambia o establece si un Grupo de Impacto de un zombie puede ser daħado. Uso: zr_hitgroup [1/0]"
+ }
+
+ "Hitgroups command related commands"
+ {
+ "es" "Comando(s) similar(es): zr_hitgroup_enable_all, zr_hitgroup_headshots_only"
+ }
+
+ "Hitgroups command syntax names"
+ {
+ "es" "Nombres del Grupo de Impacto:"
+ }
+
+ "Hitgroups command successful on"
+ {
+ "es" "Daħos por Grupo de Impacto \"{1}\" se ha activado."
+ }
+
+ "Hitgroups command successful off"
+ {
+ "es" "Daħos por Grupo de Impacto \"{1}\" se ha desactivado."
+ }
+
+ "Hitgroups command invalid hitgroup"
+ {
+ "es" "\"{1}\" No es un Grupo de Impacto valido. Escribe zr_hitgroup para ver todos los alias."
+ }
+
+ "Hitgroups command enable all successful"
+ {
+ "es" "Todos los Grupos de Impacto de los zombies han sido habilitados para el daħo."
+ }
+
+ "Hitgroups command headshots only successful"
+ {
+ "es" "Los zombis ahora solo pueden ser daħados por disparos a la cabeza."
+ }
+
+ // ===========================
+ // ZAdmin (core)
+ // ===========================
+
+ "ZAdmin main title"
+ {
+ "es" "ZAdmin\nSelecciona categoria:"
+ }
+
+ "ZAdmin main class multipliers"
+ {
+ "es" "Multiplicador de Clases"
+ }
+
+ "ZAdmin main weapons"
+ {
+ "es" "Gestion de Armas"
+ }
+
+ "ZAdmin main hitgroups"
+ {
+ "es" "Gestion de Grupo de Impacto"
+ }
+
+ "ZAdmin main zombie"
+ {
+ "es" "Gestion de Zombi"
+ }
+
+ "ZAdmin main force zspawn"
+ {
+ "es" "Forzar ZSpawn"
+ }
+
+ "ZAdmin main force ztele"
+ {
+ "es" "Forzar ZTele"
+ }
+
+ // ===========================
+ // AntiStick (module)
+ // ===========================
+
+ // Commands
+
+ "AntiStick command set width syntax"
+ {
+ "es" "Establece el ancho del casco de un modelo. (Ver zr_antistick_list_models) Uso: zr_antistick_set_width "
+ }
+
+ "AntiStick command list models list"
+ {
+ "es" "Nombre de jugador: Modelo: Anchura del casco:\n-------------------------------------------------------------------------------------------------------------"
+ }
+
+ "AntiStick command list models name"
+ {
+ "es" "{1} {2} {3}"
+ }
+
+ "AntiStick command set width successful"
+ {
+ "es" "La anchura del casco para el modelo \"{1}\" ha sido cambiada a \"{2}.\""
+ }
+
+ "AntiStick command set width invalid model"
+ {
+ "es" "Invalido modelo/jugador especificado: \"{1}\""
+ }
+
+ "AntiStick command set width invalid width"
+ {
+ "es" "Invalida anchura del modelo de casco especificada: \"{1}\""
+ }
+
+ // ===========================
+ // Spawn Protect (module)
+ // ===========================
+
+ // General
+
+ "Spawn protection begin"
+ {
+ "es" "Los zombis estan presentes, usted tiene {1} segundos para encontrar un lugar seguro antes de perder la inmunidad."
+ }
+
+ "Spawn protection end"
+ {
+ "es" "Ahora eres vulnerable a la infeccion de un zombie."
+ }
+
+ // HUD
+
+ "Spawn Protect"
+ {
+ "es" "La proteccion contra zombis termina en: {1} segundos."
+ }
+
+ // ===========================
+ // ZCookies (module)
+ // ===========================
+
+ "ZCookies Menu main title"
+ {
+ "es" "ZCookies\nSeleccione un cookie:"
+ }
+
+ "ZCookies menu main auto-rebuy"
+ {
+ "es" "ZMarket Auto-Recompra: {1}"
+ }
+
+ "ZCookies menu main zhp"
+ {
+ "es" "Pantalla ZHP: {1}"
+ }
+
+ "ZCookies menu main overlay"
+ {
+ "es" "Humano/Zombi Clase de Overlay: {1}"
+ }
+
+ "ZCookies zmarket loadout"
+ {
+ "es" "ZMarket Preseleccion"
+ }
+
+ // ===========================
+ // ZSpawn (module)
+ // ===========================
+
+ // General
+
+ "ZSpawn double spawn"
+ {
+ "es" "ZSpawn solo se puede utilizar si entraste tarde durante una ronda en progreso."
+ }
+
+ "ZSpawn timelimit"
+ {
+ "es" "El tiempo limite ({1} segundos), para usar ZSpawn, ya ha expirado."
+ }
+
+ // Menu
+
+ "ZSpawn clients title"
+ {
+ "es" "Forzar ZSpawn (zr_zspawn_force)\nSeleccionar un jugador:"
+ }
+
+ // Commands
+
+ "ZSpawn command force syntax"
+ {
+ "es" "Forzar ZSpawn en un Cliente. Uso: zr_zspawn_force ['0' = aparecer como humano | '1' = aparecer como zombi]"
+
+ }
+
+ "ZSpawn command force successful"
+ {
+ "es" "El jugador {1} ha sido resucitado correctamente."
+ }
+
+ "ZSpawn command force unsuccessful"
+ {
+ "es" "El jugador {1} no pudo ser resucitado."
+ }
+
+ // ===========================
+ // ZTele (module)
+ // ===========================
+
+ // General
+
+ "ZTele restricted human"
+ {
+ "es" "ZTele esta restringido para los seres humanos en este momento."
+ }
+
+ "ZTele max"
+ {
+ "es" "Has llegado a tu maximo de teleportaciones ({1} por ronda)."
+ }
+
+ "ZTele in progress"
+ {
+ "es" "En este momento esta en espera de teletransporte."
+ }
+
+ "ZTele autocancel text"
+ {
+ "es" "Teletransporte ha sido cancelado. (La restriccion limite es de {1} pies.)"
+ }
+
+ // Center Text
+
+ "ZTele countdown"
+ {
+ "es" "Teletransportandose al punto de inicio en: {1} segundos."
+ }
+
+ "ZTele autocancel centertext"
+ {
+ "es" "El teletransporte ha sido cancelado."
+ }
+
+ "ZTele countdown end"
+ {
+ "es" "Teletransportado al punto de inicio. (Veces: {1}/{2})"
+ }
+
+ // Menu
+
+ "ZTele clients title"
+ {
+ "es" "Forzar ZTele (zr_ztele_force)\nSeleccionar un jugador:"
+ }
+
+ // Commands
+
+ "ZTele command force syntax"
+ {
+ "es" "Forzar ZTele en un Cliente. Uso: zr_ztele_force "
+
+ }
+
+ "ZTele command force successful"
+ {
+ "es" "El jugador {1} ha sido teletransportado correctamente."
+ }
+
+ "ZTele command force unsuccessful"
+ {
+ "es" "El jugador {1} no pudo ser teletransportado."
+ }
+
+ // ===========================
+ // ZHP (module)
+ // ===========================
+
+ // General
+
+ "ZHP enable"
+ {
+ "es" "Pantalla de Salud activada, Tu Salud real sera mostrada despues de la infeccion."
+ }
+
+ "ZHP disable"
+ {
+ "es" "Pantalla de Salud desactivada."
+ }
+
+ // HUD
+
+ "Display HP"
+ {
+ "es" "Salud: {1}"
+ }
+
+ // ===========================
+ // Volumetric features (module)
+ // ===========================
+
+ "Vol Anticamp Message"
+ {
+ "es" "Esta area esta restringida, por favor muevete."
+ }
+
+ "Vol Slay"
+ {
+ "es" "Matado jugador \"{1}\" por campear en una zona restringida (ID: {2})."
+ }
+
+ "Vol Ignite"
+ {
+ "es" "Quemado jugador \"{1}\" por campear en una zona restringida (ID: {2})."
+ }
+}
diff --git a/cstrike/addons/sourcemod/translations/no/zombiereloaded.phrases.txt b/cstrike/addons/sourcemod/translations/no/zombiereloaded.phrases.txt
index dabd670..10c7c22 100644
--- a/cstrike/addons/sourcemod/translations/no/zombiereloaded.phrases.txt
+++ b/cstrike/addons/sourcemod/translations/no/zombiereloaded.phrases.txt
@@ -1,1086 +1,1086 @@
-ïğż"Phrases"
-{
- // ===========================
- // General (base)
- // ===========================
-
- "General round objective"
- {
- "no" "Spillet gr ut p at @greenmennesker og zombier@default kjemper mot hverandre. Mlet for zombiene er infisere alle med kniven."
- }
-
- "General zmenu reminder"
- {
- "no" "For f hjelp om kommandoer til Zombie:Reloaded, skriv \"{1}{2}\" i samtaleomrdet."
- }
-
- // ===========================
- // Generic (base)
- // ===========================
-
- // General
-
- "Literal text"
- {
- "no" "{1}"
- }
-
- "Feature is disabled"
- {
- "no" "Denne funksjonen er deaktivert av tjeneren."
- }
-
- "Not enough money"
- {
- "no" "Du har ikke nok penger til kj¸pe denne gjenstanden."
- }
-
- "Must be player"
- {
- "no" "Denne funksjonen gjelder kun for spillere."
- }
-
- "Must be admin"
- {
- "no" "Denne funksjonen gjelder kun for administratorer."
- }
-
- "No access to command"
- {
- "no" "Du har ikke tilgang til denne kommandoen."
- }
-
- "Must be alive"
- {
- "no" "Denne funksjonen gjelder kun for levende spillere."
- }
-
- "Must be dead"
- {
- "no" "Denne funksjonen gjelder kun f¸r d¸de spillere."
- }
-
- "Must be on team"
- {
- "no" "Du m vĤre p et lag for kunne bruke denne funksjonen."
- }
-
- "Must be zombie"
- {
- "no" "Du m vĤre zombie for kunne bruke denne funksjonen."
- }
-
- "Must be human"
- {
- "no" "Du m vĤre menneske for kunne bruke denne funksjonen."
- }
-
- "Increase by"
- {
- "no" "kning med {1}"
- }
-
- "Decrease by"
- {
- "no" "Reduser med {1}"
- }
-
- "Current Value"
- {
- "no" "Gjeldende verdi:"
- }
-
- "Zombie"
- {
- "no" "Zombie"
- }
-
- "Human"
- {
- "no" "Menneske"
- }
-
- // Menu
-
- "Menu empty"
- {
- "no" "(Tom)"
- }
-
- // ===========================
- // Config (core)
- // ===========================
-
- // Commands
-
- "Config command reload syntax"
- {
- "no" "Syntaks: zr_reloadconfig [fil 2] ... - Laster om en konfigurasjonsfil."
- }
-
- "Config command reload related commands"
- {
- "no" "Relaterte kommandoer: zr_config_reloadall"
- }
-
- "Config command reload syntax aliases"
- {
- "no" "Filalias:\n* \"{1}\"\n* \"{2}\"\n* \"{3}\"\n* \"{4}\"\n* \"{5}\""
- }
-
- "Config command reload invalid"
- {
- "no" "Ugyldig filalias: \"{1}\""
- }
-
- "Config command reload not loaded"
- {
- "no" "Kunne ikke laste konfigurasjonsfilen \"{1}\". Filen har ugyldig innhold eller funksjonen er deaktivert."
- }
-
- "Config command reload all stats begin"
- {
- "no" "Laster om alle konfigurasjonsfilene til Zombie:Reloaded...\n------------------------------------------------"
- }
-
- "Config command reload all stats successful"
- {
- "no" "\"{1}\" - Vellykket."
- }
-
- "Config command reload all stats failed"
- {
- "no" "\"{1}\" - Feilet. Filen har ugyldig innhold eller funksjonen er deaktivert."
- }
-
- // ===========================
- // Log (core)
- // ===========================
-
- "Log Generic Flag"
- {
- // Max length: 19 characters.
- "no" "Generisk flagg:"
- }
-
- "Log Value"
- {
- // Max length: 7 characters:
- "no" "Verdi:"
- }
-
- "Log Module"
- {
- // Max length: 23 characters:
- "no" "Modul:"
- }
-
- "Log Status"
- {
- "no" "Filterstatus:"
- }
-
- "Log Module Filtering"
- {
- "no" "Modulfiltrering:"
- }
-
- "Log Module Short Name"
- {
- "no" "Kort navn:"
- }
-
- // ===========================
- // Classes
- // ===========================
-
- // General
-
- "Classes admin mode enabled"
- {
- "no" "Administratormodus er aktivert!"
- }
-
- "Classes random assignment"
- {
- "no" "Du er blitt tilfeldig tildelt klassen @green\"{1}\"@default."
- }
-
- // Center Text/HUD
-
- "Classes overlay toggle"
- {
- "no" "Kommandoer for veksle mellom overlegg: {1}"
- }
-
- // Menu
-
- "Classes menu title"
- {
- "no" "Klassevalg:"
- }
-
- "Classes menu active"
- {
- "no" "Aktiv: {1}"
- }
-
- "Classes menu next"
- {
- "no" "Pf¸lgende: {1}"
- }
-
- "Classes menu select zombie"
- {
- "no" "Velg zombieklasse"
- }
-
- "Classes menu select human"
- {
- "no" "Velg menneskeklasse"
- }
-
- "Classes menu select admin"
- {
- "no" "Velg administratormodusklasse"
- }
-
- "Classes menu admin mode toggle"
- {
- "no" "Veksle mellom administratormodus"
- }
-
- "Classes Menu Team Select Title"
- {
- "no" "Velg lag:"
- }
-
- "Classes Menu Zombies"
- {
- "no" "Zombier"
- }
-
- "Classes Menu Humans"
- {
- "no" "Mennesker"
- }
-
- "Classes Menu Multiplier Select Title"
- {
- "no" "Velg multiplikator:"
- }
-
- "Classes Menu Adjust Value"
- {
- "no" "Juster verdi:"
- }
-
- // Attributes
-
- "Classes Attrib Napalm Time"
- {
- "no" "Varighet for brannbombegranater"
- }
-
- "Classes Attrib Health"
- {
- "no" "Helse"
- }
-
- "Classes Attrib Regen Interval"
- {
- "no" "Interval for helseregenerasjon"
- }
-
- "Classes Attrib Regen Amount"
- {
- "no" "Mengde for helseregenerasjon"
- }
-
- "Classes Attrib Infect Gain"
- {
- "no" "Helsegevinst ved infeksjon"
- }
-
- "Classes Attrib Speed"
- {
- "no" "L¸pehastighet"
- }
-
- "Classes Attrib Knockback"
- {
- "no" "Tilbakeslag"
- }
-
- "Classes Attrib Jump Height"
- {
- "no" "Hoppeh¸yde"
- }
-
- "Classes Attrib Jump Distance"
- {
- "no" "Hoppelengde"
- }
-
- "Classes Selection Not Allowed"
- {
- "no" "Endring av klasse er ikke tillatt."
- }
-
- // ===========================
- // Immunity
- // ===========================
-
- "Immunity Shield Not Available"
- {
- "en" "Du har ikke skjold."
- }
-
- "Immunity Shield Cooldown"
- {
- "en" "{1} sekunder igjen til skjoldet er tilgjengelig."
- }
-
- "Immunity Shield Time Left"
- {
- "en" "Tid igjen med skjold: {1}"
- }
-
- // ===========================
- // Overlays (core)
- // ===========================
-
- "Overlays not supported"
- {
- "no" "Blokkerer overlegg - DirectX {1} oppdaget, men DirectX {2} er pkrevd."
- }
-
- // ===========================
- // Infect (core)
- // ===========================
-
- // General
-
- "Infect infected"
- {
- "no" "Du er blitt infisert! Smitt s mange mennesker du klarer ved bruke kniven."
- }
-
- "Infect human"
- {
- "no" "De barmhjertige gudene (kjent som administratorer) har berget sjelen din. Finn et gjemmested!"
- }
-
- "Infect disconnect"
- {
- "no" "Den siste zombien har forlatt spillet. Du er blitt valgt som erstatning."
- }
-
- // Center Text
-
- "Infect countdown"
- {
- "no" "F¸rste infeksjon om {1} sekunder."
- }
-
- // Menu
-
- "Infect menu clients title"
- {
- "no" "Spillerbehandling\nVeksle mellom zombie og menneske:\n[] = Infisert"
- }
-
- // Commands
-
- "Infect command infect syntax"
- {
- "no" "Infiserer en spiller. Syntaks: zr_infect [teleporter - 1/0]"
- }
-
- "Infect command human syntax"
- {
- "no" "Gj¸r en spiller om til et menneske. Syntaks: zr_human [teleporter - 1/0] [beskyttelse - 1/0]"
- }
-
- "Infect command infect successful"
- {
- "no" "@green{1}@default ble vellykket infisert."
- }
-
- "Infect command infect mother successful"
- {
- "no" "@green{1}@default ble vellykket infisert som moderzombie."
- }
-
- "Infect command infect unsuccessful"
- {
- "no" "@green{1}@default er allerede en zombie."
- }
-
- "Infect command human successful"
- {
- "no" "@green{1}@default ble vellykket gjort om til et menneske."
- }
-
- "Infect command human unsuccessful"
- {
- "no" "@green{1}@default er allerede et menneske."
- }
-
- // ===========================
- // Damage (core)
- // ===========================
-
- "Damage suicide intercept"
- {
- "no" "Selvmordsfors¸k hindret."
- }
-
- // ===========================
- // Menu (core)
- // ===========================
-
- // General
-
- "Menu main title"
- {
- "no" "ZR-kommandoer:\nStart kommandoen med \"{1}\" or \"{2}\" (skjules) i samtaleomrdet."
- }
-
- "Menu main zadmin"
- {
- "no" "ZAdmin -
pne administrasjonsmeny"
- }
-
- "Menu main zclass"
- {
- "no" "ZClass - Endre klasseinstillinger"
- }
-
- "Menu main zcookies"
- {
- "no" "ZCookies - Endre lagrede instillinger"
- }
-
- "Menu main zspawn"
- {
- "no" "ZSpawn - Bli med i spillet ¸yeblikkelig"
- }
-
- "Menu main ztele"
- {
- "no" "ZTele - Teleporter til startomrde"
- }
-
- "Menu main zhp"
- {
- "no" "ZHP - Vis nvĤrende helseniv"
- }
-
- "Menu main zmarket"
- {
- "no" "ZMarket - Endre vpeninstillinger"
- }
-
- // ===========================
- // Weapons (core)
- // ===========================
-
- // General
-
- "Zombie cant use weapon"
- {
- "no" "Zombier kan ikke bruke vpen."
- }
-
- // Restrict
-
- "Restrict weapon"
- {
- "no" "Vpenet @green\"{1}\"@default ble sperret."
- }
-
- "Unrestrict weapon"
- {
- "no" "Vpenet @green\"{1}\"@default er ikke lenger sperret."
- }
-
- "Restrict weapon stopped"
- {
- "no" "Vpenet @green\"{1}\"@default er allerede sperret."
- }
-
- "Unrestrict weapon stopped"
- {
- "no" "Vpenet @green\"{1}\"@default er ikke sperret."
- }
-
- "Restrict weapon type"
- {
- "no" "Vpentypen @green\"{1}\"@default er sperret."
- }
-
- "Unrestrict weapon type"
- {
- "no" "Vpentypen @green\"{1}\"@default er ikke lenger sperret."
- }
-
- "Restrict weapon type stopped"
- {
- "no" "Vpentypen @green\"{1}\"@default er allerede sperret."
- }
-
- "Unrestrict weapon type stopped"
- {
- "no" "Vpentypen @green\"{1}\"@default er ikke sperret."
- }
-
- "Restrict weapon untoggleable"
- {
- "no" "Vpenet @green\"{1}\"@default kan ikke sperres."
- }
-
- "Weapon invalid"
- {
- "no" "Vpenet eller vpentypen @green\"{1}\"@default er ugyldig."
- }
-
- "Weapon is restricted"
- {
- "no" "Vpenet @green{1}@default er sperret."
- }
-
- // ZMarket
-
- "Weapons zmarket buyzone"
- {
- "no" "Du m vĤre i en kj¸pesone for kunne bruke ZMarket."
- }
-
- "Weapons zmarket purchase"
- {
- "no" "Du har kj¸pt vpenet @green{1}@default. Velg gjenstanden igjen for kj¸pe mer ammunisjon."
- }
-
- "Weapons zmarket purchase max"
- {
- "no" "Vpenet @green{1}@default har en kj¸pegrense p @green{2}@default enheter. Vent til neste runde eller gjenoppliving."
- }
-
- "Weapons zmarket grenade max"
- {
- "no" "Du kan bare holde {1} granat(er) av denne typen."
- }
-
- "Weapons zmarket auto-rebuy toggle on"
- {
- "no" "Autokj¸p er aktivert, dine valg vil automatisk bli kj¸pt hver runde eller hver gjenoppliving."
- }
-
- "Weapons zmarket auto-rebuy toggle off"
- {
- "no" "Autokj¸p er deaktivert."
- }
-
- "Weapons zmarket updated loadout"
- {
- "no" "Du kan ikke kj¸pe vpen for ¸yeblikket, men vpenvalget er blitt lagret."
- }
-
- "Weapons zmarket get current loadout"
- {
- "no" "Vpenvalg oppdatert. Bruk gjenkj¸pvalget for kj¸pe disse vpnene igjen."
- }
-
- // Commands
-
- "Weapons command restrict syntax"
- {
- "no" "Sperrer et vpen eller en vpentype. Syntaks: zr_restrict [vpen|vpentype] ..."
- }
-
- "Weapons command unrestrict syntax"
- {
- "no" "Fjerner sperre av et vpen eller en vpentype. Syntaks: zr_unrestrict [vpen|vpentype] ..."
- }
-
- // Menu (Restrict)
-
- "Weapons menu restrict main title"
- {
- "no" "Vpenbehandling"
- }
-
- "Weapons menu restrict main restrict"
- {
- "no" "Vpensperringer"
- }
-
- "Weapons menu restrict main market"
- {
- "no" "ZMarket"
- }
-
- "Weapons menu restrict types title"
- {
- "no" "Vpensperringer\nVelg vpentype:"
- }
-
- "Weapons menu restrict types weapon type title"
- {
- "no" "Vpensperringer\nVpentype: {1}\n[] = Sperret"
- }
-
- "Weapons menu restrict types restrict all"
- {
- "no" "Sperr vpentypen \"{1}\""
- }
-
- "Weapons menu restrict types unrestrict all"
- {
- "no" "Fjern sperre for vpentypen \"{1}\""
- }
-
- "Weapons menu restrict zmarket title"
- {
- "no" "ZMarket\nVelg instilling:"
- }
-
- "Weapons menu restrict zmarket buyzone"
- {
- "no" "Kun i kj¸pesoner - {1}"
- }
-
- // Menu (ZMarket)
-
- "Weapons menu zmarket main title"
- {
- "no" "ZMarket"
- }
-
- "Weapons menu zmarket main get loadout"
- {
- "no" "Lagre gjeldende vpenvalg"
- }
-
- "Weapons menu zmarket main view loadout"
- {
- "no" "Vis vpenvalg"
- }
-
- "Weapons menu zmarket main rebuy"
- {
- "no" "Kj¸p lagret vpenvalg"
- }
-
- "Weapons menu zmarket main auto-rebuy"
- {
- "no" "Autokj¸p: {1}"
- }
-
- "Weapons menu zmarket main weapons list"
- {
- "no" "Vis vpenliste"
- }
-
- "Weapons menu zmarket loadout title"
- {
- "no" "ZMarket\nGjeldende vpenvalg:\nFjern vpen ved velge det."
- }
-
- "Weapons menu zmarket loadout primary"
- {
- "no" "PrimĤrvpen: {1}"
- }
-
- "Weapons menu zmarket loadout secondary"
- {
- "no" "sekundĤrvpen: {1}"
- }
-
- "Weapons menu zmarket loadout melee"
- {
- "no" "NĤrkamp: {1}"
- }
-
- "Weapons menu zmarket loadout projectile"
- {
- "no" "Prosjektiler: {1}"
- }
-
- "Weapons menu zmarket loadout explosive"
- {
- "no" "Granater: {1}"
- }
-
- "Weapons menu zmarket loadout nvgs"
- {
- "no" "Nattsyn: {1}"
- }
-
- "Weapons menu zmarket loadout empty"
- {
- "no" "(Ingen)"
- }
-
- "Weapons menu zmarket types title"
- {
- "no" "ZMarket\nVelg vpentype:"
- }
-
- "Weapons menu zmarket types weapon type title"
- {
- "no" "ZMarket\nVpentype: {1}\n[] = Sperret"
- }
-
- "Weapons menu zmarket types weapon info"
- {
- "no" "{1} (${2})\nAntall kj¸p igjen: {3}"
- }
-
- "Weapons menu zmarket types weapon ammo"
- {
- "no" "Ammunisjon"
- }
-
- // ===========================
- // Hitgroups (core)
- // ===========================
-
- // Menu
-
- "Hitgroups menu hitgroups title"
- {
- "no" "Treffgruppebehandling\nKommandoer: zr_hitgroup(_enable_all/_headshots_only)\nVelg en treffgruppe for aktivere/deaktivere:"
- }
-
- "Hitgroups menu hitgroups enable all"
- {
- "no" "Aktiver alle treffgrupper"
- }
-
- "Hitgroups menu hitgroups headshots only"
- {
- "no" "Kun hodeskudd"
- }
-
- // Commands
-
- "Hitgroups command syntax"
- {
- "no" "Veksle, aktiver eller deaktiver en treffgruppe til zombiene. Usage: zr_hitgroup [aktiv - 1/0]"
- }
-
- "Hitgroups command related commands"
- {
- "no" "Relaterte kommandoer: zr_hitgroup_enable_all, zr_hitgroup_headshots_only"
- }
-
- "Hitgroups command syntax names"
- {
- "no" "Treffgruppenavn:"
- }
-
- "Hitgroups command successful on"
- {
- "no" "Skade for treffgruppen \"{1}\" er aktivert."
- }
-
- "Hitgroups command successful off"
- {
- "no" "Skade for treffgruppen \"{1}\" er deaktivert."
- }
-
- "Hitgroups command invalid hitgroup"
- {
- "no" "\"{1}\" er ikke en gyldig treffgruppe. Bruk zr_hitgroup for se alle treffgruppenavnene."
- }
-
- "Hitgroups command enable all successful"
- {
- "no" "Alle treffgruppene er aktivert."
- }
-
- "Hitgroups command headshots only successful"
- {
- "no" "Zombiene kan n kun bli skadet av hodeskudd."
- }
-
- // ===========================
- // ZAdmin (core)
- // ===========================
-
- "ZAdmin main title"
- {
- "no" "ZAdmin\nVelg kategori:"
- }
-
- "ZAdmin main class multipliers"
- {
- "no" "Klassemultiplikatorer"
- }
-
- "ZAdmin main weapons"
- {
- "no" "Vpenbehandling"
- }
-
- "ZAdmin main hitgroups"
- {
- "no" "Treffgruppebehandling"
- }
-
- "ZAdmin main zombie"
- {
- "no" "Spillerbehandling"
- }
-
- "ZAdmin main force zspawn"
- {
- "no" "Tving gjenoppliving"
- }
-
- "ZAdmin main force ztele"
- {
- "no" "Tving teleport"
- }
-
- // ===========================
- // AntiStick (module)
- // ===========================
-
- // Commands
-
- // Not translating antistick phrases because hull width settings had no effect. To be removed.
-
- "AntiStick command set width syntax"
- {
- "no" "Sets the width of a model's hull. (See zr_antistick_list_models) Usage: zr_antistick_set_width "
- }
-
- "AntiStick command list models list"
- {
- "no" "Player name: Model: Hull width:\n-------------------------------------------------------------------------------------------------------------"
- }
-
- "AntiStick command list models name"
- {
- "no" "{1} {2} {3}"
- }
-
- "AntiStick command set width successful"
- {
- "no" "Model hull width for model \"{1}\" has been changed to \"{2}.\""
- }
-
- "AntiStick command set width invalid model"
- {
- "no" "Invalid model/player specified: \"{1}\""
- }
-
- "AntiStick command set width invalid width"
- {
- "no" "Invalid model hull width specified: \"{1}\""
- }
-
- // ===========================
- // Spawn Protect (module)
- // ===========================
-
- // General
-
- "Spawn protection begin"
- {
- "no" "Zombier tilstede, du er beskyttet og har {1} sekunder p finne et trygt sted."
- }
-
- "Spawn protection end"
- {
- "no" "Du er n utsatt for bli smittet av en zombie."
- }
-
- // HUD
-
- "Spawn Protect"
- {
- "no" "Zombiebeskyttelsen stopper om {1} sekunder."
- }
-
- // ===========================
- // ZCookies (module)
- // ===========================
-
- "ZCookies Menu main title"
- {
- "no" "ZCookies\nVelg informasjonskapsel:"
- }
-
- "ZCookies menu main auto-rebuy"
- {
- "no" "Autokj¸p (ZMarket): {1}"
- }
-
- "ZCookies menu main zhp"
- {
- "no" "ZHP-skjerm: {1}"
- }
-
- "ZCookies menu main overlay"
- {
- "no" "Vis klasseoverlegg: {1}"
- }
-
- "ZCookies zmarket loadout"
- {
- "no" "Vpenvalg (ZMarket)"
- }
-
- // ===========================
- // ZSpawn (module)
- // ===========================
-
- // General
-
- "ZSpawn double spawn"
- {
- "no" "ZSpawn kan kun bli brukt hvis du koblet til servern midt i en runde."
- }
-
- "ZSpawn timelimit"
- {
- "no" "Tidsfristen ({1} sekunder) for bruke ZSpawn har gtt ut."
- }
-
- // Menu
-
- "ZSpawn clients title"
- {
- "no" "Tving gjenoppliving (zr_zspawn_force)\nVelg en spiller:"
- }
-
- // Commands
-
- "ZSpawn command force syntax"
- {
- "no" "Tving gjenoppliving p en spiller. Syntaks: zr_zspawn_force ['0' = Menneske | '1' = Zombie]"
- }
-
- "ZSpawn command force successful"
- {
- "no" "{1} ble vellykket gjenopplivet."
- }
-
- "ZSpawn command force unsuccessful"
- {
- "no" "{1} kunne ikke bli gjenopplivet."
- }
-
- // ===========================
- // ZTele (module)
- // ===========================
-
- // General
-
- "ZTele restricted human"
- {
- "no" "Mennesker kan ikke teleporteres for ¸yeblikket."
- }
-
- "ZTele max"
- {
- "no" "Du har brukt opp alle teleportene ({1}) for denne runden."
- }
-
- "ZTele in progress"
- {
- "no" "Du venter p allerede p en teleport."
- }
-
- "ZTele autocancel text"
- {
- "no" "Teleport avbrutt. Du har forflyttet deg lengre enn tillatt da du ventet p en teleport. Maks lengde er {1} fot."
- }
-
- // Center Text
-
- "ZTele countdown"
- {
- "no" "Teleporterer til startomrdet om {1} sekunder."
- }
-
- "ZTele autocancel centertext"
- {
- "no" "Teleport avbrutt."
- }
-
- "ZTele countdown end"
- {
- "no" "Teleportert til startomrdet. (Antall: {1}/{2})"
- }
-
- // Menu
-
- "ZTele clients title"
- {
- "no" "Tving teleport (zr_ztele_force)\nVelg en spiller:"
- }
-
- // Commands
-
- "ZTele command force syntax"
- {
- "no" "Tving teleport p en spiller. Syntaks: zr_ztele_force "
- }
-
- "ZTele command force successful"
- {
- "no" "{1} ble vellykket teleportert."
- }
-
- "ZTele command force unsuccessful"
- {
- "no" "{1} kunne ikke bli teleportert."
- }
-
- // ===========================
- // ZHP (module)
- // ===========================
-
- // General
-
- "ZHP enable"
- {
- "no" "HP-skjerm aktivert. Du vil se din ekte helseverdi som zombie."
- }
-
- "ZHP disable"
- {
- "no" "HP-skjerm deaktivert."
- }
-
- // HUD
-
- "Display HP"
- {
- "no" "HP: {1}"
- }
-
- // ===========================
- // Volumetric features (module)
- // ===========================
-
- "Vol Anticamp Message"
- {
- "no" "Dette omrdet er sperret, vennligst g videre."
- }
-
- "Vol Slay"
- {
- "no" "Drepte \"{1}\" for opphold i sperret omrde (ID: {2})."
- }
-
- "Vol Ignite"
- {
- "no" "Satt fyr p \"{1}\" for opphold i sperret omrde (ID: {2})."
- }
-}
+ïğż"Phrases"
+{
+ // ===========================
+ // General (base)
+ // ===========================
+
+ "General round objective"
+ {
+ "no" "Spillet gr ut p at @greenmennesker og zombier@default kjemper mot hverandre. Mlet for zombiene er infisere alle med kniven."
+ }
+
+ "General zmenu reminder"
+ {
+ "no" "For f hjelp om kommandoer til Zombie:Reloaded, skriv \"{1}{2}\" i samtaleomrdet."
+ }
+
+ // ===========================
+ // Generic (base)
+ // ===========================
+
+ // General
+
+ "Literal text"
+ {
+ "no" "{1}"
+ }
+
+ "Feature is disabled"
+ {
+ "no" "Denne funksjonen er deaktivert av tjeneren."
+ }
+
+ "Not enough money"
+ {
+ "no" "Du har ikke nok penger til kj¸pe denne gjenstanden."
+ }
+
+ "Must be player"
+ {
+ "no" "Denne funksjonen gjelder kun for spillere."
+ }
+
+ "Must be admin"
+ {
+ "no" "Denne funksjonen gjelder kun for administratorer."
+ }
+
+ "No access to command"
+ {
+ "no" "Du har ikke tilgang til denne kommandoen."
+ }
+
+ "Must be alive"
+ {
+ "no" "Denne funksjonen gjelder kun for levende spillere."
+ }
+
+ "Must be dead"
+ {
+ "no" "Denne funksjonen gjelder kun f¸r d¸de spillere."
+ }
+
+ "Must be on team"
+ {
+ "no" "Du m vĤre p et lag for kunne bruke denne funksjonen."
+ }
+
+ "Must be zombie"
+ {
+ "no" "Du m vĤre zombie for kunne bruke denne funksjonen."
+ }
+
+ "Must be human"
+ {
+ "no" "Du m vĤre menneske for kunne bruke denne funksjonen."
+ }
+
+ "Increase by"
+ {
+ "no" "kning med {1}"
+ }
+
+ "Decrease by"
+ {
+ "no" "Reduser med {1}"
+ }
+
+ "Current Value"
+ {
+ "no" "Gjeldende verdi:"
+ }
+
+ "Zombie"
+ {
+ "no" "Zombie"
+ }
+
+ "Human"
+ {
+ "no" "Menneske"
+ }
+
+ // Menu
+
+ "Menu empty"
+ {
+ "no" "(Tom)"
+ }
+
+ // ===========================
+ // Config (core)
+ // ===========================
+
+ // Commands
+
+ "Config command reload syntax"
+ {
+ "no" "Syntaks: zr_reloadconfig [fil 2] ... - Laster om en konfigurasjonsfil."
+ }
+
+ "Config command reload related commands"
+ {
+ "no" "Relaterte kommandoer: zr_config_reloadall"
+ }
+
+ "Config command reload syntax aliases"
+ {
+ "no" "Filalias:\n* \"{1}\"\n* \"{2}\"\n* \"{3}\"\n* \"{4}\"\n* \"{5}\""
+ }
+
+ "Config command reload invalid"
+ {
+ "no" "Ugyldig filalias: \"{1}\""
+ }
+
+ "Config command reload not loaded"
+ {
+ "no" "Kunne ikke laste konfigurasjonsfilen \"{1}\". Filen har ugyldig innhold eller funksjonen er deaktivert."
+ }
+
+ "Config command reload all stats begin"
+ {
+ "no" "Laster om alle konfigurasjonsfilene til Zombie:Reloaded...\n------------------------------------------------"
+ }
+
+ "Config command reload all stats successful"
+ {
+ "no" "\"{1}\" - Vellykket."
+ }
+
+ "Config command reload all stats failed"
+ {
+ "no" "\"{1}\" - Feilet. Filen har ugyldig innhold eller funksjonen er deaktivert."
+ }
+
+ // ===========================
+ // Log (core)
+ // ===========================
+
+ "Log Generic Flag"
+ {
+ // Max length: 19 characters.
+ "no" "Generisk flagg:"
+ }
+
+ "Log Value"
+ {
+ // Max length: 7 characters:
+ "no" "Verdi:"
+ }
+
+ "Log Module"
+ {
+ // Max length: 23 characters:
+ "no" "Modul:"
+ }
+
+ "Log Status"
+ {
+ "no" "Filterstatus:"
+ }
+
+ "Log Module Filtering"
+ {
+ "no" "Modulfiltrering:"
+ }
+
+ "Log Module Short Name"
+ {
+ "no" "Kort navn:"
+ }
+
+ // ===========================
+ // Classes
+ // ===========================
+
+ // General
+
+ "Classes admin mode enabled"
+ {
+ "no" "Administratormodus er aktivert!"
+ }
+
+ "Classes random assignment"
+ {
+ "no" "Du er blitt tilfeldig tildelt klassen @green\"{1}\"@default."
+ }
+
+ // Center Text/HUD
+
+ "Classes overlay toggle"
+ {
+ "no" "Kommandoer for veksle mellom overlegg: {1}"
+ }
+
+ // Menu
+
+ "Classes menu title"
+ {
+ "no" "Klassevalg:"
+ }
+
+ "Classes menu active"
+ {
+ "no" "Aktiv: {1}"
+ }
+
+ "Classes menu next"
+ {
+ "no" "Pf¸lgende: {1}"
+ }
+
+ "Classes menu select zombie"
+ {
+ "no" "Velg zombieklasse"
+ }
+
+ "Classes menu select human"
+ {
+ "no" "Velg menneskeklasse"
+ }
+
+ "Classes menu select admin"
+ {
+ "no" "Velg administratormodusklasse"
+ }
+
+ "Classes menu admin mode toggle"
+ {
+ "no" "Veksle mellom administratormodus"
+ }
+
+ "Classes Menu Team Select Title"
+ {
+ "no" "Velg lag:"
+ }
+
+ "Classes Menu Zombies"
+ {
+ "no" "Zombier"
+ }
+
+ "Classes Menu Humans"
+ {
+ "no" "Mennesker"
+ }
+
+ "Classes Menu Multiplier Select Title"
+ {
+ "no" "Velg multiplikator:"
+ }
+
+ "Classes Menu Adjust Value"
+ {
+ "no" "Juster verdi:"
+ }
+
+ // Attributes
+
+ "Classes Attrib Napalm Time"
+ {
+ "no" "Varighet for brannbombegranater"
+ }
+
+ "Classes Attrib Health"
+ {
+ "no" "Helse"
+ }
+
+ "Classes Attrib Regen Interval"
+ {
+ "no" "Interval for helseregenerasjon"
+ }
+
+ "Classes Attrib Regen Amount"
+ {
+ "no" "Mengde for helseregenerasjon"
+ }
+
+ "Classes Attrib Infect Gain"
+ {
+ "no" "Helsegevinst ved infeksjon"
+ }
+
+ "Classes Attrib Speed"
+ {
+ "no" "L¸pehastighet"
+ }
+
+ "Classes Attrib Knockback"
+ {
+ "no" "Tilbakeslag"
+ }
+
+ "Classes Attrib Jump Height"
+ {
+ "no" "Hoppeh¸yde"
+ }
+
+ "Classes Attrib Jump Distance"
+ {
+ "no" "Hoppelengde"
+ }
+
+ "Classes Selection Not Allowed"
+ {
+ "no" "Endring av klasse er ikke tillatt."
+ }
+
+ // ===========================
+ // Immunity
+ // ===========================
+
+ "Immunity Shield Not Available"
+ {
+ "en" "Du har ikke skjold."
+ }
+
+ "Immunity Shield Cooldown"
+ {
+ "en" "{1} sekunder igjen til skjoldet er tilgjengelig."
+ }
+
+ "Immunity Shield Time Left"
+ {
+ "en" "Tid igjen med skjold: {1}"
+ }
+
+ // ===========================
+ // Overlays (core)
+ // ===========================
+
+ "Overlays not supported"
+ {
+ "no" "Blokkerer overlegg - DirectX {1} oppdaget, men DirectX {2} er pkrevd."
+ }
+
+ // ===========================
+ // Infect (core)
+ // ===========================
+
+ // General
+
+ "Infect infected"
+ {
+ "no" "Du er blitt infisert! Smitt s mange mennesker du klarer ved bruke kniven."
+ }
+
+ "Infect human"
+ {
+ "no" "De barmhjertige gudene (kjent som administratorer) har berget sjelen din. Finn et gjemmested!"
+ }
+
+ "Infect disconnect"
+ {
+ "no" "Den siste zombien har forlatt spillet. Du er blitt valgt som erstatning."
+ }
+
+ // Center Text
+
+ "Infect countdown"
+ {
+ "no" "F¸rste infeksjon om {1} sekunder."
+ }
+
+ // Menu
+
+ "Infect menu clients title"
+ {
+ "no" "Spillerbehandling\nVeksle mellom zombie og menneske:\n[] = Infisert"
+ }
+
+ // Commands
+
+ "Infect command infect syntax"
+ {
+ "no" "Infiserer en spiller. Syntaks: zr_infect [teleporter - 1/0]"
+ }
+
+ "Infect command human syntax"
+ {
+ "no" "Gj¸r en spiller om til et menneske. Syntaks: zr_human [teleporter - 1/0] [beskyttelse - 1/0]"
+ }
+
+ "Infect command infect successful"
+ {
+ "no" "@green{1}@default ble vellykket infisert."
+ }
+
+ "Infect command infect mother successful"
+ {
+ "no" "@green{1}@default ble vellykket infisert som moderzombie."
+ }
+
+ "Infect command infect unsuccessful"
+ {
+ "no" "@green{1}@default er allerede en zombie."
+ }
+
+ "Infect command human successful"
+ {
+ "no" "@green{1}@default ble vellykket gjort om til et menneske."
+ }
+
+ "Infect command human unsuccessful"
+ {
+ "no" "@green{1}@default er allerede et menneske."
+ }
+
+ // ===========================
+ // Damage (core)
+ // ===========================
+
+ "Damage suicide intercept"
+ {
+ "no" "Selvmordsfors¸k hindret."
+ }
+
+ // ===========================
+ // Menu (core)
+ // ===========================
+
+ // General
+
+ "Menu main title"
+ {
+ "no" "ZR-kommandoer:\nStart kommandoen med \"{1}\" or \"{2}\" (skjules) i samtaleomrdet."
+ }
+
+ "Menu main zadmin"
+ {
+ "no" "ZAdmin -
pne administrasjonsmeny"
+ }
+
+ "Menu main zclass"
+ {
+ "no" "ZClass - Endre klasseinstillinger"
+ }
+
+ "Menu main zcookies"
+ {
+ "no" "ZCookies - Endre lagrede instillinger"
+ }
+
+ "Menu main zspawn"
+ {
+ "no" "ZSpawn - Bli med i spillet ¸yeblikkelig"
+ }
+
+ "Menu main ztele"
+ {
+ "no" "ZTele - Teleporter til startomrde"
+ }
+
+ "Menu main zhp"
+ {
+ "no" "ZHP - Vis nvĤrende helseniv"
+ }
+
+ "Menu main zmarket"
+ {
+ "no" "ZMarket - Endre vpeninstillinger"
+ }
+
+ // ===========================
+ // Weapons (core)
+ // ===========================
+
+ // General
+
+ "Zombie cant use weapon"
+ {
+ "no" "Zombier kan ikke bruke vpen."
+ }
+
+ // Restrict
+
+ "Restrict weapon"
+ {
+ "no" "Vpenet @green\"{1}\"@default ble sperret."
+ }
+
+ "Unrestrict weapon"
+ {
+ "no" "Vpenet @green\"{1}\"@default er ikke lenger sperret."
+ }
+
+ "Restrict weapon stopped"
+ {
+ "no" "Vpenet @green\"{1}\"@default er allerede sperret."
+ }
+
+ "Unrestrict weapon stopped"
+ {
+ "no" "Vpenet @green\"{1}\"@default er ikke sperret."
+ }
+
+ "Restrict weapon type"
+ {
+ "no" "Vpentypen @green\"{1}\"@default er sperret."
+ }
+
+ "Unrestrict weapon type"
+ {
+ "no" "Vpentypen @green\"{1}\"@default er ikke lenger sperret."
+ }
+
+ "Restrict weapon type stopped"
+ {
+ "no" "Vpentypen @green\"{1}\"@default er allerede sperret."
+ }
+
+ "Unrestrict weapon type stopped"
+ {
+ "no" "Vpentypen @green\"{1}\"@default er ikke sperret."
+ }
+
+ "Restrict weapon untoggleable"
+ {
+ "no" "Vpenet @green\"{1}\"@default kan ikke sperres."
+ }
+
+ "Weapon invalid"
+ {
+ "no" "Vpenet eller vpentypen @green\"{1}\"@default er ugyldig."
+ }
+
+ "Weapon is restricted"
+ {
+ "no" "Vpenet @green{1}@default er sperret."
+ }
+
+ // ZMarket
+
+ "Weapons zmarket buyzone"
+ {
+ "no" "Du m vĤre i en kj¸pesone for kunne bruke ZMarket."
+ }
+
+ "Weapons zmarket purchase"
+ {
+ "no" "Du har kj¸pt vpenet @green{1}@default. Velg gjenstanden igjen for kj¸pe mer ammunisjon."
+ }
+
+ "Weapons zmarket purchase max"
+ {
+ "no" "Vpenet @green{1}@default har en kj¸pegrense p @green{2}@default enheter. Vent til neste runde eller gjenoppliving."
+ }
+
+ "Weapons zmarket grenade max"
+ {
+ "no" "Du kan bare holde {1} granat(er) av denne typen."
+ }
+
+ "Weapons zmarket auto-rebuy toggle on"
+ {
+ "no" "Autokj¸p er aktivert, dine valg vil automatisk bli kj¸pt hver runde eller hver gjenoppliving."
+ }
+
+ "Weapons zmarket auto-rebuy toggle off"
+ {
+ "no" "Autokj¸p er deaktivert."
+ }
+
+ "Weapons zmarket updated loadout"
+ {
+ "no" "Du kan ikke kj¸pe vpen for ¸yeblikket, men vpenvalget er blitt lagret."
+ }
+
+ "Weapons zmarket get current loadout"
+ {
+ "no" "Vpenvalg oppdatert. Bruk gjenkj¸pvalget for kj¸pe disse vpnene igjen."
+ }
+
+ // Commands
+
+ "Weapons command restrict syntax"
+ {
+ "no" "Sperrer et vpen eller en vpentype. Syntaks: zr_restrict [vpen|vpentype] ..."
+ }
+
+ "Weapons command unrestrict syntax"
+ {
+ "no" "Fjerner sperre av et vpen eller en vpentype. Syntaks: zr_unrestrict [vpen|vpentype] ..."
+ }
+
+ // Menu (Restrict)
+
+ "Weapons menu restrict main title"
+ {
+ "no" "Vpenbehandling"
+ }
+
+ "Weapons menu restrict main restrict"
+ {
+ "no" "Vpensperringer"
+ }
+
+ "Weapons menu restrict main market"
+ {
+ "no" "ZMarket"
+ }
+
+ "Weapons menu restrict types title"
+ {
+ "no" "Vpensperringer\nVelg vpentype:"
+ }
+
+ "Weapons menu restrict types weapon type title"
+ {
+ "no" "Vpensperringer\nVpentype: {1}\n[] = Sperret"
+ }
+
+ "Weapons menu restrict types restrict all"
+ {
+ "no" "Sperr vpentypen \"{1}\""
+ }
+
+ "Weapons menu restrict types unrestrict all"
+ {
+ "no" "Fjern sperre for vpentypen \"{1}\""
+ }
+
+ "Weapons menu restrict zmarket title"
+ {
+ "no" "ZMarket\nVelg instilling:"
+ }
+
+ "Weapons menu restrict zmarket buyzone"
+ {
+ "no" "Kun i kj¸pesoner - {1}"
+ }
+
+ // Menu (ZMarket)
+
+ "Weapons menu zmarket main title"
+ {
+ "no" "ZMarket"
+ }
+
+ "Weapons menu zmarket main get loadout"
+ {
+ "no" "Lagre gjeldende vpenvalg"
+ }
+
+ "Weapons menu zmarket main view loadout"
+ {
+ "no" "Vis vpenvalg"
+ }
+
+ "Weapons menu zmarket main rebuy"
+ {
+ "no" "Kj¸p lagret vpenvalg"
+ }
+
+ "Weapons menu zmarket main auto-rebuy"
+ {
+ "no" "Autokj¸p: {1}"
+ }
+
+ "Weapons menu zmarket main weapons list"
+ {
+ "no" "Vis vpenliste"
+ }
+
+ "Weapons menu zmarket loadout title"
+ {
+ "no" "ZMarket\nGjeldende vpenvalg:\nFjern vpen ved velge det."
+ }
+
+ "Weapons menu zmarket loadout primary"
+ {
+ "no" "PrimĤrvpen: {1}"
+ }
+
+ "Weapons menu zmarket loadout secondary"
+ {
+ "no" "sekundĤrvpen: {1}"
+ }
+
+ "Weapons menu zmarket loadout melee"
+ {
+ "no" "NĤrkamp: {1}"
+ }
+
+ "Weapons menu zmarket loadout projectile"
+ {
+ "no" "Prosjektiler: {1}"
+ }
+
+ "Weapons menu zmarket loadout explosive"
+ {
+ "no" "Granater: {1}"
+ }
+
+ "Weapons menu zmarket loadout nvgs"
+ {
+ "no" "Nattsyn: {1}"
+ }
+
+ "Weapons menu zmarket loadout empty"
+ {
+ "no" "(Ingen)"
+ }
+
+ "Weapons menu zmarket types title"
+ {
+ "no" "ZMarket\nVelg vpentype:"
+ }
+
+ "Weapons menu zmarket types weapon type title"
+ {
+ "no" "ZMarket\nVpentype: {1}\n[] = Sperret"
+ }
+
+ "Weapons menu zmarket types weapon info"
+ {
+ "no" "{1} (${2})\nAntall kj¸p igjen: {3}"
+ }
+
+ "Weapons menu zmarket types weapon ammo"
+ {
+ "no" "Ammunisjon"
+ }
+
+ // ===========================
+ // Hitgroups (core)
+ // ===========================
+
+ // Menu
+
+ "Hitgroups menu hitgroups title"
+ {
+ "no" "Treffgruppebehandling\nKommandoer: zr_hitgroup(_enable_all/_headshots_only)\nVelg en treffgruppe for aktivere/deaktivere:"
+ }
+
+ "Hitgroups menu hitgroups enable all"
+ {
+ "no" "Aktiver alle treffgrupper"
+ }
+
+ "Hitgroups menu hitgroups headshots only"
+ {
+ "no" "Kun hodeskudd"
+ }
+
+ // Commands
+
+ "Hitgroups command syntax"
+ {
+ "no" "Veksle, aktiver eller deaktiver en treffgruppe til zombiene. Usage: zr_hitgroup [aktiv - 1/0]"
+ }
+
+ "Hitgroups command related commands"
+ {
+ "no" "Relaterte kommandoer: zr_hitgroup_enable_all, zr_hitgroup_headshots_only"
+ }
+
+ "Hitgroups command syntax names"
+ {
+ "no" "Treffgruppenavn:"
+ }
+
+ "Hitgroups command successful on"
+ {
+ "no" "Skade for treffgruppen \"{1}\" er aktivert."
+ }
+
+ "Hitgroups command successful off"
+ {
+ "no" "Skade for treffgruppen \"{1}\" er deaktivert."
+ }
+
+ "Hitgroups command invalid hitgroup"
+ {
+ "no" "\"{1}\" er ikke en gyldig treffgruppe. Bruk zr_hitgroup for se alle treffgruppenavnene."
+ }
+
+ "Hitgroups command enable all successful"
+ {
+ "no" "Alle treffgruppene er aktivert."
+ }
+
+ "Hitgroups command headshots only successful"
+ {
+ "no" "Zombiene kan n kun bli skadet av hodeskudd."
+ }
+
+ // ===========================
+ // ZAdmin (core)
+ // ===========================
+
+ "ZAdmin main title"
+ {
+ "no" "ZAdmin\nVelg kategori:"
+ }
+
+ "ZAdmin main class multipliers"
+ {
+ "no" "Klassemultiplikatorer"
+ }
+
+ "ZAdmin main weapons"
+ {
+ "no" "Vpenbehandling"
+ }
+
+ "ZAdmin main hitgroups"
+ {
+ "no" "Treffgruppebehandling"
+ }
+
+ "ZAdmin main zombie"
+ {
+ "no" "Spillerbehandling"
+ }
+
+ "ZAdmin main force zspawn"
+ {
+ "no" "Tving gjenoppliving"
+ }
+
+ "ZAdmin main force ztele"
+ {
+ "no" "Tving teleport"
+ }
+
+ // ===========================
+ // AntiStick (module)
+ // ===========================
+
+ // Commands
+
+ // Not translating antistick phrases because hull width settings had no effect. To be removed.
+
+ "AntiStick command set width syntax"
+ {
+ "no" "Sets the width of a model's hull. (See zr_antistick_list_models) Usage: zr_antistick_set_width "
+ }
+
+ "AntiStick command list models list"
+ {
+ "no" "Player name: Model: Hull width:\n-------------------------------------------------------------------------------------------------------------"
+ }
+
+ "AntiStick command list models name"
+ {
+ "no" "{1} {2} {3}"
+ }
+
+ "AntiStick command set width successful"
+ {
+ "no" "Model hull width for model \"{1}\" has been changed to \"{2}.\""
+ }
+
+ "AntiStick command set width invalid model"
+ {
+ "no" "Invalid model/player specified: \"{1}\""
+ }
+
+ "AntiStick command set width invalid width"
+ {
+ "no" "Invalid model hull width specified: \"{1}\""
+ }
+
+ // ===========================
+ // Spawn Protect (module)
+ // ===========================
+
+ // General
+
+ "Spawn protection begin"
+ {
+ "no" "Zombier tilstede, du er beskyttet og har {1} sekunder p finne et trygt sted."
+ }
+
+ "Spawn protection end"
+ {
+ "no" "Du er n utsatt for bli smittet av en zombie."
+ }
+
+ // HUD
+
+ "Spawn Protect"
+ {
+ "no" "Zombiebeskyttelsen stopper om {1} sekunder."
+ }
+
+ // ===========================
+ // ZCookies (module)
+ // ===========================
+
+ "ZCookies Menu main title"
+ {
+ "no" "ZCookies\nVelg informasjonskapsel:"
+ }
+
+ "ZCookies menu main auto-rebuy"
+ {
+ "no" "Autokj¸p (ZMarket): {1}"
+ }
+
+ "ZCookies menu main zhp"
+ {
+ "no" "ZHP-skjerm: {1}"
+ }
+
+ "ZCookies menu main overlay"
+ {
+ "no" "Vis klasseoverlegg: {1}"
+ }
+
+ "ZCookies zmarket loadout"
+ {
+ "no" "Vpenvalg (ZMarket)"
+ }
+
+ // ===========================
+ // ZSpawn (module)
+ // ===========================
+
+ // General
+
+ "ZSpawn double spawn"
+ {
+ "no" "ZSpawn kan kun bli brukt hvis du koblet til servern midt i en runde."
+ }
+
+ "ZSpawn timelimit"
+ {
+ "no" "Tidsfristen ({1} sekunder) for bruke ZSpawn har gtt ut."
+ }
+
+ // Menu
+
+ "ZSpawn clients title"
+ {
+ "no" "Tving gjenoppliving (zr_zspawn_force)\nVelg en spiller:"
+ }
+
+ // Commands
+
+ "ZSpawn command force syntax"
+ {
+ "no" "Tving gjenoppliving p en spiller. Syntaks: zr_zspawn_force ['0' = Menneske | '1' = Zombie]"
+ }
+
+ "ZSpawn command force successful"
+ {
+ "no" "{1} ble vellykket gjenopplivet."
+ }
+
+ "ZSpawn command force unsuccessful"
+ {
+ "no" "{1} kunne ikke bli gjenopplivet."
+ }
+
+ // ===========================
+ // ZTele (module)
+ // ===========================
+
+ // General
+
+ "ZTele restricted human"
+ {
+ "no" "Mennesker kan ikke teleporteres for ¸yeblikket."
+ }
+
+ "ZTele max"
+ {
+ "no" "Du har brukt opp alle teleportene ({1}) for denne runden."
+ }
+
+ "ZTele in progress"
+ {
+ "no" "Du venter p allerede p en teleport."
+ }
+
+ "ZTele autocancel text"
+ {
+ "no" "Teleport avbrutt. Du har forflyttet deg lengre enn tillatt da du ventet p en teleport. Maks lengde er {1} fot."
+ }
+
+ // Center Text
+
+ "ZTele countdown"
+ {
+ "no" "Teleporterer til startomrdet om {1} sekunder."
+ }
+
+ "ZTele autocancel centertext"
+ {
+ "no" "Teleport avbrutt."
+ }
+
+ "ZTele countdown end"
+ {
+ "no" "Teleportert til startomrdet. (Antall: {1}/{2})"
+ }
+
+ // Menu
+
+ "ZTele clients title"
+ {
+ "no" "Tving teleport (zr_ztele_force)\nVelg en spiller:"
+ }
+
+ // Commands
+
+ "ZTele command force syntax"
+ {
+ "no" "Tving teleport p en spiller. Syntaks: zr_ztele_force "
+ }
+
+ "ZTele command force successful"
+ {
+ "no" "{1} ble vellykket teleportert."
+ }
+
+ "ZTele command force unsuccessful"
+ {
+ "no" "{1} kunne ikke bli teleportert."
+ }
+
+ // ===========================
+ // ZHP (module)
+ // ===========================
+
+ // General
+
+ "ZHP enable"
+ {
+ "no" "HP-skjerm aktivert. Du vil se din ekte helseverdi som zombie."
+ }
+
+ "ZHP disable"
+ {
+ "no" "HP-skjerm deaktivert."
+ }
+
+ // HUD
+
+ "Display HP"
+ {
+ "no" "HP: {1}"
+ }
+
+ // ===========================
+ // Volumetric features (module)
+ // ===========================
+
+ "Vol Anticamp Message"
+ {
+ "no" "Dette omrdet er sperret, vennligst g videre."
+ }
+
+ "Vol Slay"
+ {
+ "no" "Drepte \"{1}\" for opphold i sperret omrde (ID: {2})."
+ }
+
+ "Vol Ignite"
+ {
+ "no" "Satt fyr p \"{1}\" for opphold i sperret omrde (ID: {2})."
+ }
+}
diff --git a/cstrike/addons/sourcemod/translations/ru/zombiereloaded.phrases.txt b/cstrike/addons/sourcemod/translations/ru/zombiereloaded.phrases.txt
index 6b96744..018380f 100644
--- a/cstrike/addons/sourcemod/translations/ru/zombiereloaded.phrases.txt
+++ b/cstrike/addons/sourcemod/translations/ru/zombiereloaded.phrases.txt
@@ -1,1087 +1,1087 @@
-ïğż"Phrases"
-{
- // ===========================
- // General (base)
- // ===========================
-
- "General round objective"
- {
- "ru" "¸Ñ²° @greenğÑ´µı żÑѸ² ·ĵħ¸@default, ѵğÑ ´ğÑ ·ĵħ¸ â ¸½Ñ¸Ñ¸Ñ²°ÑÑ ²ÑµÑ
ğÑ´µı, ¸ÑżğÑ·ÑÑ ½ĥ."
- }
-
- "General zmenu reminder"
- {
- "ru" "ğÑ żĵѸ ż şĵ°½´°ĵ Zombie:Reloaded, ²²µ´¸Ñµ \"{1}{2}\" ² Ñ°Ñ."
- }
-
- // ===========================
- // Generic (base)
- // ===========================
-
- // General
-
- "Literal text"
- {
- "ru" "{1}"
- }
- // Set string to "{1}" for all languages.
-
- "Feature is disabled"
- {
- "ru" "°½½°Ñ ÑѽşÑ¸Ñ ÑşğÑѵ½°."
- }
-
- "Not enough money"
- {
- "ru" "£ ²°Ñ ½µ´ÑÑ°Ñѽ ´µ½µ³ ´ğÑ żşÑżş¸ ´°½½ı ²µÑ¸."
- }
-
- "Must be player"
- {
- "ru" "°½½°Ñ ÑѽşÑ¸Ñ ÑğÑş ´ğÑ ¸³Ñş²."
- }
-
- "Must be admin"
- {
- "ru" "°½½°Ñ ÑѽşÑ¸Ñ ÑğÑş ´ğÑ °´ĵ¸½²."
- }
-
- "No access to command"
- {
- "ru" "£ ²°Ñ ½µÑ ´ÑÑÑż° ş ÑÑı şĵ°½´µ."
- }
-
- "Must be alive"
- {
- "ru" "°½½°Ñ ÑѽşÑ¸Ñ ´ÑÑÑż½° ÑğÑş, ş³´° ²Ñ ĥ¸²Ñ."
- }
-
- "Must be dead"
- {
- "ru" "°½½°Ñ ÑѽşÑ¸Ñ ´ÑÑÑż½° ÑğÑş, ş³´° ²Ñ ĵµÑѲÑ."
- }
-
- "Must be on team"
- {
- "ru" "°½½°Ñ ÑѽşÑ¸Ñ ´ÑÑÑż½° ÑğÑş żÑğµ żÑ¸Ñµ´¸½µ½¸Ñ ş ş°şı-ğ¸ħ şĵ°½´µ."
- }
-
- "Must be zombie"
- {
- "ru" "°½½°Ñ ÑѽşÑ¸Ñ ´ÑÑÑż½° ÑğÑş, ş³´° ²Ñ ·ĵħ¸."
- }
-
- "Must be human"
- {
- "ru" "°½½°Ñ ÑѽşÑ¸Ñ ´ÑÑÑż½° ÑğÑş, ş³´° ²Ñ Ñµğ²µş."
- }
-
- "Increase by"
- {
- "ru" "£²µğ¸Ñ¸ÑÑ ½° {1}"
- }
-
- "Decrease by"
- {
- "ru" "£ĵµ½ÑѸÑÑ ½° {1}"
- }
-
- "Current Value"
- {
- "ru" "˘µşÑѵµ ·½°Ñµ½¸µ:"
- }
-
- "Zombie"
- {
- "ru" "ĵħ¸"
- }
-
- "Human"
- {
- "ru" "§µğ²µş"
- }
-
- // Menu
-
- "Menu empty"
- {
- "ru" "(ÑÑÑ)"
- }
-
- // ===========================
- // Config (core)
- // ===========================
-
- // Commands
-
- "Config command reload syntax"
- {
- "ru" "Ħ¸½Ñ°şÑ¸Ñ: zr_reloadconfig <°ğ¸°Ñ Ñ°ığ°1> [°ğ¸°Ñ Ñ°ığ°2] ... - µÑµ·°³ÑÑ·¸ÑÑ Ñ°ığ ş½Ñ¸³ÑѰѸ¸."
- }
-
- "Config command reload related commands"
- {
- "ru" "Ħ²Ñ·°½½Ñµ şĵ°½´Ñ: zr_config_reloadall"
- }
-
- "Config command reload syntax aliases"
- {
- "ru" "ğ¸°ÑÑ Ñ°ığ°:\n* \"{1}\"\n* \"{2}\"\n* \"{3}\"\n* \"{4}\"\n* \"{5}\""
- }
-
- "Config command reload invalid"
- {
- "ru" "µżÑ°²¸ğѽÑı °ğ¸°Ñ Ñ°ığ°: \"{1}\""
- }
-
- "Config command reload not loaded"
- {
- "ru" "µ Ñ´°ğÑÑ ·°³ÑÑ·¸ÑÑ Ñ°ığ ş½Ñ¸³ÑѰѸ¸ \"{1}\". (ÑşğÑѵ½ ¸ğ¸ ½µ²µÑ½µ Ñ´µÑĥ¸ĵµ Ñ°ığ°.)"
- }
-
- "Config command reload all stats begin"
- {
- "ru" "µÑµ·°³ÑÑ·ş° ²ÑµÑ
Ñ°ığ² ş½Ñ¸³ÑѰѸ¸ Zombie:Reloaded...\n------------------------------------------------"
- }
-
- "Config command reload all stats successful"
- {
- "ru" "\"{1}\" - Ѳ."
- }
-
- "Config command reload all stats failed"
- {
- "ru" "\"{1}\" - Ѹħş°. (ÑşğÑѵ½ ¸ğ¸ ½µ²µÑ½µ Ñ´µÑĥ¸ĵµ Ñ°ığ°.)"
- }
-
- // ===========================
- // Log (core)
- // ===========================
-
- "Log Generic Flag"
- {
- // Max length: 19 characters.
- "ru" "ѽ.Ñğ°³:"
- }
-
- "Log Value"
- {
- // Max length: 7 characters:
- "ru" "3½aÑ:"
- }
-
- "Log Module"
- {
- // Max length: 23 characters:
- "ru" "´ÑğÑ:"
- }
-
- "Log Status"
- {
- "ru" "ĦÑ°ÑÑÑ Ñ¸ğÑÑÑ°:"
- }
-
- "Log Module Filtering"
- {
- "ru" "¤¸ğÑÑÑ°Ñ¸Ñ ĵ´ÑğÑ:"
- }
-
- "Log Module Short Name"
- {
- "ru" "Ñ°Ñşµ ¸ĵÑ:"
- }
-
- // ===========================
- // Classes
- // ===========================
-
- // General
-
- "Classes admin mode enabled"
- {
- "ru" "´ĵ¸½ ѵĥ¸ĵ ²şğÑѵ½!"
- }
-
- "Classes random assignment"
- {
- "ru" "°ĵ ħÑğ ÑğÑÑ°ı½Ñĵ ħÑ°·ĵ żÑ¸Ñ²µ½ şğ°ÑÑ @green\"{1}\"@default."
- }
-
- // Center Text/HUD
-
- "Classes overlay toggle"
- {
- "ru" "ĵ°½´Ñ şğ°ÑѲ³ ²µÑğµÑ: {1}"
- }
-
- // Menu
-
- "Classes menu title"
- {
- "ru" "ÑħÑ şğ°ÑÑ°:"
- }
-
- "Classes menu active"
- {
- "ru" "˘µşÑѸı: {1}"
- }
-
- "Classes menu next"
- {
- "ru" "²Ñı: {1}"
- }
-
- "Classes menu select zombie"
- {
- "ru" "ÑħÑ şğ°ÑÑ° ·ĵħ¸"
- }
-
- "Classes menu select human"
- {
- "ru" "ÑħÑ şğ°ÑÑ° Ñµğ²µş°"
- }
-
- "Classes menu select admin"
- {
- "ru" "ÑħÑ °´ĵ¸½Ñş³ şğ°ÑÑ°"
- }
-
- "Classes menu admin mode toggle"
- {
- "ru" "şğÑѸÑÑ °´ĵ¸½Ñş¸ı ѵĥ¸ĵ"
- }
-
- "Classes Menu Team Select Title"
- {
- "ru" "ÑħÑ şĵ°½´Ñ:"
- }
-
- "Classes Menu Zombies"
- {
- "ru" "ĵħ¸"
- }
-
- "Classes Menu Humans"
- {
- "ru" "Ñ´¸"
- }
-
- "Classes Menu Multiplier Select Title"
- {
- "ru" "ÑħÑ ĵ½ĥ¸ÑµğÑ:"
- }
-
- "Classes Menu Adjust Value"
- {
- "ru" "·ĵµ½µ½¸µ:"
- }
-
- // Attributes
-
- "Classes Attrib Napalm Time"
- {
- "ru" "ѵĵÑ ³Ñµ½¸Ñ"
- }
-
- "Classes Attrib Health"
- {
- "ru" "´Ñ²Ñµ"
- }
-
- "Classes Attrib Regen Interval"
- {
- "ru" "½ÑµÑ²°ğ ²Ñżğ½µ½¸Ñ HP"
- }
-
- "Classes Attrib Regen Amount"
- {
- "ru" "ğ-² ²Ñżğ½Ñµĵ³ HP"
- }
-
- "Classes Attrib Infect Gain"
- {
- "ru" "½ÑÑ HP żÑ¸ ¸½ÑµşÑ¸¸"
- }
-
- "Classes Attrib Speed"
- {
- "ru" "ĦşÑÑÑÑ ħµ³°"
- }
-
- "Classes Attrib Knockback"
- {
- "ru" "ÑħÑ°ÑѲ°½¸µ"
- }
-
- "Classes Attrib Jump Height"
- {
- "ru" "ÑÑÑ° żÑÑĥş²"
- }
-
- "Classes Attrib Jump Distance"
- {
- "ru" "°ğѽÑÑÑ żÑÑĥş²"
- }
-
- "Classes Selection Not Allowed"
- {
- "ru" "·ĵµ½µ½¸µ şğ°ÑÑ° ·°żÑµÑµ½."
- }
-
- // ===========================
- // Immunity
- // ===========================
-
- "Immunity Shield Not Available"
- {
- "en" "You don't have a shield."
- }
-
- "Immunity Shield Cooldown"
- {
- "en" "{1} seconds until shield is available."
- }
-
- "Immunity Shield Time Left"
- {
- "en" "Shield time left: {1}"
- }
-
- // ===========================
- // Overlays (core)
- // ===========================
-
- "Overlays not supported"
- {
- "ru" "²µÑğµı ÑşğÑѵ½ - ħ½°Ñĥѵ½ DX{1} (½µħÑ
´¸ĵ DX{2})"
- }
-
- // ===========================
- // Infect (core)
- // ===========================
-
- // General
-
- "Infect infected"
- {
- "ru" "Ñ ħÑ𸠸½Ñ¸Ñ¸Ñ²°½½Ñ! ˘µżµÑÑ ·°Ñ°·¸Ñµ ş°ş ĵĥ½ ħğÑѵ ´Ñѳ¸Ñ
ğÑ´µı."
- }
-
- "Infect human"
- {
- "ru" "Ñ ħÑğ¸ ²ÑşÑµÑµ½Ñ °´ĵ¸½¸ÑÑÑ°ÑÑĵ, ¸Ñ¸Ñµ ÑşÑÑѸµ!"
- }
-
- "Infect disconnect"
- {
- "ru" "Ñğµ´½¸ı ·ĵħ¸ żş¸½Ñ𠸳ÑÑ, żÑÑĵÑ ²°ĵ ´ÑÑ°ğ°ÑÑ µ³ ¸½ÑµşÑ¸Ñ."
- }
-
- // Center Text
-
- "Infect countdown"
- {
- "ru" "First infection in {1} seconds."
- }
-
- // Menu
-
- "Infect menu clients title"
- {
- "ru" "£żÑ°²ğµ½¸µ ·ĵħ¸\nµÑµşğÑѵ½¸µ ¸½ÑµşÑ¸¸:\n[] = ½Ñ¸Ñ¸Ñ²°½"
- }
-
- // Commands
-
- "Infect command infect syntax"
- {
- "ru" "½Ñ¸Ñ¸Ñ²°ÑÑ ¸³Ñş°. ÑżğÑ·²°½¸µ: zr_infect <ѸğÑÑÑ> [²ÑşÑµÑ¸ÑÑ - 1/0]"
- }
-
- "Infect command human syntax"
- {
- "ru" "ѵ²Ñ°Ñ¸ÑÑ ¸³Ñş° ² Ñµğ²µş°. ÑżğÑ·²°½¸µ: zr_human <ѸğÑÑÑ> [²ÑşÑµÑ¸ÑÑ - 1/0] [·°Ñ¸Ñ° - 1/0]"
- }
-
- "Infect command infect successful"
- {
- "ru" "³Ñş @green{1}@default ħÑğ ÑÑżµÑ½ ¸½Ñ¸Ñ¸Ñ²°½."
- }
-
- "Infect command infect mother successful"
- {
- "ru" "³Ñş @green{1}@default ħÑğ ÑÑżµÑ½ ¸½Ñ¸Ñ¸Ñ²°½ ¸ ÑÑ°ğ żµÑ²Ñĵ ·ĵħ¸."
- }
-
- "Infect command infect unsuccessful"
- {
- "ru" "³Ñş @green{1}@default Ñĥµ ѲğѵÑÑÑ ·ĵħ¸."
- }
-
- "Infect command human successful"
- {
- "ru" "³Ñş @green{1}@default ħÑğ ÑÑżµÑ½ żÑµ²Ñ°Ñµ½ ħѰѽ ² Ñµğ²µş°."
- }
-
- "Infect command human unsuccessful"
- {
- "ru" "³Ñş@green{1}@default Ñĥµ ѲğѵÑÑÑ Ñµğ²µşĵ."
- }
-
- // ===========================
- // Damage (core)
- // ===========================
-
- "Damage suicide intercept"
- {
- "ru" "ѵѵѵ½° żżÑÑş° ÑѸѸ´°."
- }
-
- // ===========================
- // Menu (core)
- // ===========================
-
- // General
-
- "Menu main title"
- {
- "ru" "ĵ°½´Ñ:\nѵѸşÑ şĵ°½´ Ñ°Ñ° \"{1}\" ¸ğ¸ \"{2}\" (ѸÑ
)."
- }
-
- "Menu main zadmin"
- {
- "ru" "ZAdmin - ´ĵ¸½ ĵµ½Ñ"
- }
-
- "Menu main zclass"
- {
- "ru" "ZClass - °ÑÑÑış° şğ°ÑѲ"
- }
-
- "Menu main zcookies"
- {
- "ru" "ZCookies - µÑѽ°ğѽѵ ½°ÑÑÑış¸"
- }
-
- "Menu main zspawn"
- {
- "ru" "ZSpawn - ÑşÑµÑµ½¸µ"
- }
-
- "Menu main ztele"
- {
- "ru" "ZTele - ˘µğµżÑÑ ş ÑµÑż°²½Ñ"
- }
-
- "Menu main zhp"
- {
- "ru" "ZHP - ş°· ·´Ñ²ÑÑ"
- }
-
- "Menu main zmarket"
- {
- "ru" "ZMarket - ÑħÑ °ĵѽ¸Ñ¸¸"
- }
-
- // ===========================
- // Weapons (core)
- // ===========================
-
- // General
-
- "Zombie cant use weapon"
- {
- "ru" "ĵħ¸ ½µ ĵ³ÑÑ ¸ÑżğÑ·²°ÑÑ ÑÑĥ¸µ!"
- }
-
- // Restrict
-
- "Restrict weapon"
- {
- "ru" "ÑÑĥ¸µ @green\"{1}\"@default ħÑğ ·°żÑµÑµ½."
- }
-
- "Unrestrict weapon"
- {
- "ru" "ÑÑĥ¸µ @green\"{1}\"@default ħÑğ Ñ°·ÑµÑµ½."
- }
-
- "Restrict weapon stopped"
- {
- "ru" "ÑÑĥ¸µ @green\"{1}\"@default Ñĥµ ѲğѵÑÑÑ ·°żÑµÑµ½½Ñĵ."
- }
-
- "Unrestrict weapon stopped"
- {
- "ru" "ÑÑĥ¸µ @green\"{1}\"@default ½µ ѲğѵÑÑÑ ·°żÑµÑµ½½Ñĵ."
- }
-
- "Restrict weapon type"
- {
- "ru" "ÑÑĥ¸µ Ѹż° @green\"{1}\"@default ħÑğ ·°żÑµÑµ½."
- }
-
- "Unrestrict weapon type"
- {
- "ru" "ÑÑĥ¸µ Ѹż° @green\"{1}\"@default ħÑğ Ñ°·ÑµÑµ½."
- }
-
- "Restrict weapon type stopped"
- {
- "ru" "ÑÑĥ¸µ Ѹż° @green\"{1}\"@default Ñĥµ ѲğѵÑÑÑ ·°żÑµÑµ½½Ñĵ."
- }
-
- "Unrestrict weapon type stopped"
- {
- "ru" "ÑÑĥ¸µ Ѹż° @green\"{1}\"@default ½µ ѲğѵÑÑÑ ·°żÑµÑµ½½Ñĵ."
- }
-
- "Restrict weapon untoggleable"
- {
- "ru" "ÑÑĥ¸µ @green\"{1}\"@default ½µ ĵĥµÑ ħÑÑÑ ·°żÑµÑµ½."
- }
-
- "Weapon invalid"
- {
- "ru" "ÑÑĥ¸µ @green\"{1}\"@default ½µ ѲğѵÑÑÑ żÑ°²¸ğѽÑĵ ¸ĵµ½µĵ ¸ğ¸ Ѹżĵ ÑÑĥ¸Ñ."
- }
-
- "Weapon is restricted"
- {
- "ru" "ÑÑĥ¸µ @green{1}@default ·°żÑµÑµ½."
- }
-
- // ZMarket
-
- "Weapons zmarket buyzone"
- {
- "ru" "Ñ ´ğĥ½Ñ ½°Ñ
´¸ÑÑÑÑ ² ·½µ ·°şÑżş¸ ´ğÑ ¸ÑżğÑ·²°½¸Ñ ZMarket."
- }
-
- "Weapons zmarket purchase"
- {
- "ru" "Ñ żÑ¸ħѵğ¸ ÑÑĥ¸µ @green{1}@default. ÑħµÑ¸Ñµ µ³ µÑµ Ñ°· ´ğÑ żşÑżş¸ ż°Ñѽ."
- }
-
- "Weapons zmarket purchase max"
- {
- "ru" "ÑÑĥ¸µ @green{1}@default ¸ĵµµÑ ğ¸ĵ¸Ñ żşÑżş @green{2}@default. żÑħÑıѵ żÑ¸ħѵÑѸ µ³ ² Ñğµ´ÑÑѸı Ñ°·."
- }
-
- "Weapons zmarket grenade max"
- {
- "ru" "Ñ ĵĥµÑµ ½µÑѸ ÑğÑş {1} ³Ñ°½°ÑÑ ´°½½³ Ѹż°."
- }
-
- "Weapons zmarket auto-rebuy toggle on"
- {
- "ru" "²Ñ-żşÑżş° ħÑğ° ²şğÑѵ½°, ²°Ñ° °ĵѽ¸Ñ¸Ñ ħÑ´µÑ °²Ñĵ°Ñ¸ÑµÑş¸ ·°şÑż°ÑÑÑÑ żÑ¸ ş°ĥ´ĵ ÑµÑż°²½µ."
- }
-
- "Weapons zmarket auto-rebuy toggle off"
- {
- "ru" "²Ñ-żşÑżş° ħÑğ° ÑşğÑѵ½°."
- }
-
- "Weapons zmarket updated loadout"
- {
- "ru" " ´°½½Ñı ĵĵµ½Ñ ²Ñ ½µ ĵĥµÑµ żğÑѸÑÑ ´°½½µ ÑÑĥ¸µ, ½ ²°Ñ ·°ş°· ħÑğ ÑÑ
Ñ°½µ½."
- }
-
- "Weapons zmarket get current loadout"
- {
- "ru" "ĵѽ¸Ñ¸Ñ ħ½²ğµ½°, ¸ÑżğÑ·Ñıѵ żÑ¸Ñ ż²Ñѽı żşÑżş¸ ´ğÑ żÑ¸ħѵѵ½¸Ñ Ñѳ ĥµ ÑÑĥ¸Ñ."
- }
-
- // Commands
-
- "Weapons command restrict syntax"
- {
- "ru" "°żÑµÑ ÑÑĥ¸Ñ ¸ğ¸ Ѹż° ÑÑĥ¸Ñ. ÑżğÑ·²°½¸µ: zr_restrict <ÑÑĥ¸µ|Ѹż ÑÑĥ¸Ñ> [ÑÑĥ¸µ2|Ѹż ÑÑĥ¸Ñ2] ..."
- }
-
- "Weapons command unrestrict syntax"
- {
- "ru" " °·ÑµÑµ½¸µ ÑÑĥ¸Ñ ¸ğ¸ Ѹż° ÑÑĥ¸Ñ. ÑżğÑ·²°½¸µ: zr_unrestrict <ÑÑĥ¸µ|Ѹż ÑÑĥ¸Ñ> [ÑÑĥ¸µ2|Ѹż ÑÑĥ¸Ñ2] ..."
- }
-
- // Menu (Restrict)
-
- "Weapons menu restrict main title"
- {
- "ru" "£żÑ°²ğµ½¸µ ÑÑĥ¸µĵ"
- }
-
- "Weapons menu restrict main restrict"
- {
- "ru" "°żÑµÑ ÑÑĥ¸Ñ"
- }
-
- "Weapons menu restrict main market"
- {
- "ru" "ZMarket"
- }
-
- "Weapons menu restrict types title"
- {
- "ru" "°żÑµÑ ÑÑĥ¸Ñ\nÑħµÑ¸Ñµ Ѹż ÑÑĥ¸Ñ:"
- }
-
- "Weapons menu restrict types weapon type title"
- {
- "ru" "°żÑµÑ ÑÑĥ¸Ñ\n˘¸ż ÑÑĥ¸Ñ: {1}\n[] = °żÑµÑµ½"
- }
-
- "Weapons menu restrict types restrict all"
- {
- "ru" "°żÑµÑ¸ÑÑ ÑÑĥ¸µ Ѹż° {1}"
- }
-
- "Weapons menu restrict types unrestrict all"
- {
- "ru" " °·ÑµÑ¸ÑÑ ÑÑĥ¸µ Ѹż° {1}"
- }
-
- "Weapons menu restrict zmarket title"
- {
- "ru" "ZMarket\nÑħµÑ¸Ñµ ½°ÑÑÑışÑ:"
- }
-
- "Weapons menu restrict zmarket buyzone"
- {
- "ru" "˘ğÑş ² ·½µ ·°şÑżş¸ - {1}"
- }
-
- // Menu (ZMarket)
-
- "Weapons menu zmarket main title"
- {
- "ru" "ZMarket\nÑħµÑ¸Ñµ żÑ¸Ñ:"
- }
-
- "Weapons menu zmarket main get loadout"
- {
- "ru" "ĦÑ
Ñ°½¸ÑÑ ÑµşÑѵµ ÑÑĥ¸µ"
- }
-
- "Weapons menu zmarket main view loadout"
- {
- "ru" "ÑÑĵÑÑ ÑµşÑÑı °ĵѽ¸Ñ¸¸"
- }
-
- "Weapons menu zmarket main rebuy"
- {
- "ru" "Ħ½²° şÑż¸ÑÑ ĵÑ °ĵѽ¸Ñ¸Ñ"
- }
-
- "Weapons menu zmarket main auto-rebuy"
- {
- "ru" "²Ñ-żşÑżş°: {1}"
- }
-
- "Weapons menu zmarket main weapons list"
- {
- "ru" "ÑÑĵÑÑ Ñż¸Ñş° ÑÑĥ¸Ñ"
- }
-
- "Weapons menu zmarket loadout title"
- {
- "ru" "ZMarket\nÑ ÑµşÑÑ°Ñ °ĵѽ¸Ñ¸Ñ:\nÑħµÑ¸Ñµ ÑğÑ ´ğÑ Ñ¸ÑÑş¸.\nѸĵµÑ°¸µ: ²Ñ-żşÑżş° ¸ÑżğÑ·ÑµÑ ´°½½Ñı Ñż¸Ñş."
- }
-
- "Weapons menu zmarket loadout primary"
- {
- "ru" "ѽ²½µ: {1}"
- }
-
- "Weapons menu zmarket loadout secondary"
- {
- "ru" "¸ÑÑğµÑ: {1}"
- }
-
- "Weapons menu zmarket loadout melee"
- {
- "ru" "ğ¸ĥ½¸ı ħı: {1}"
- }
-
- "Weapons menu zmarket loadout projectile"
- {
- "ru" "Ħ½°ÑÑ´Ñ: {1}"
- }
-
- "Weapons menu zmarket loadout explosive"
- {
- "ru" "·ÑÑ²Ñ°Ñş°: {1}"
- }
-
- "Weapons menu zmarket loadout nvgs"
- {
- "ru" "ѽµ ²¸´µ½¸µ: {1}"
- }
-
- "Weapons menu zmarket loadout empty"
- {
- "ru" "(ÑÑÑ)"
- }
-
- "Weapons menu zmarket types title"
- {
- "ru" "ZMarket\nÑħµÑ¸Ñµ Ѹż ÑÑĥ¸Ñ:"
- }
-
- "Weapons menu zmarket types weapon type title"
- {
- "ru" "ZMarket\n˘¸ż ÑÑĥ¸Ñ: {1}\n[] = °żÑµÑµ½"
- }
-
- "Weapons menu zmarket types weapon info"
- {
- "ru" "{1} (${2})\nÑÑ°ğÑÑ żşÑżş: {3}"
- }
-
- "Weapons menu zmarket types weapon ammo"
- {
- "ru" "°ÑѽÑ"
- }
-
- // ===========================
- // Hitgroups (core)
- // ===========================
-
- // Menu
-
- "Hitgroups menu hitgroups title"
- {
- "ru" "£żÑ°²ğµ½¸µ ·½°ĵ¸ żÑ°ĥµ½¸ı\nĵ°½´Ñ: zr_hitgroup(_enable_all/_headshots_only)\nÑħµÑ¸Ñµ ·½Ñ ´ğÑ żµÑµşğÑѵ½¸Ñ:"
- }
-
- "Hitgroups menu hitgroups enable all"
- {
- "ru" "şğÑѸÑÑ ²Ñµ ·½Ñ żÑ°ĥµ½¸ı"
- }
-
- "Hitgroups menu hitgroups headshots only"
- {
- "ru" "˘ğÑş ² ³ğ²Ñ"
- }
-
- // Commands
-
- "Hitgroups command syntax"
- {
- "ru" "µÑµşğÑѵ½¸µ ¸ğ¸ ·°´°½¸µ ·½Ñ żÑ°ĥµ½¸ı ·ĵħ¸, şÑÑѵ ĵ³ÑÑ żğÑѸÑÑ Ñѽ. ÑżğÑ·²°½¸µ: zr_hitgroup <°ğ¸°Ñ ·½Ñ> [1/0]"
- }
-
- "Hitgroups command related commands"
- {
- "ru" "Ħ²Ñ·°½½Ñµ şĵ°½´Ñ: zr_hitgroup_enable_all, zr_hitgroup_headshots_only"
- }
-
- "Hitgroups command syntax names"
- {
- "ru" "ĵµ½° ·½ żÑ°ĥµ½¸ı:"
- }
-
- "Hitgroups command successful on"
- {
- "ru" "£Ñ½ ´ğÑ ·½Ñ żÑ°ĥµ½¸ı \"{1}\" ħÑğ ²şğÑѵ½."
- }
-
- "Hitgroups command successful off"
- {
- "ru" "£Ñ½ ´ğÑ ·½Ñ żÑ°ĥµ½¸ı \"{1}\" ħÑğ ²ÑşğÑѵ½."
- }
-
- "Hitgroups command invalid hitgroup"
- {
- "ru" "\"{1}\" ½µ ѲğѵÑÑÑ żÑ°²¸ğѽÑĵ °ğ¸°Ñĵ ·½Ñ żÑ°ĥµ½¸ı. °ż¸Ñ¸Ñµ zr_hitgroup ´ğÑ żÑÑĵÑÑ° ²ÑµÑ
°ğ¸°Ñ²."
- }
-
- "Hitgroups command enable all successful"
- {
- "ru" "ѵ ·½Ñ żÑ°ĥµ½¸ı ·ĵħ¸ ħÑğ¸ ÑşÑÑÑÑ ´ğÑ żğÑѵ½¸Ñ Ñѽ°."
- }
-
- "Hitgroups command headshots only successful"
- {
- "ru" "˘µżµÑÑ ·ĵħ¸ ĵ³ÑÑ żğÑÑ°ÑÑ Ñѽ ÑğÑş żÑ¸ żż°´°½¸ÑÑ
² ³ğ²Ñ."
- }
-
- // ===========================
- // ZAdmin (core)
- // ===========================
-
- "ZAdmin main title"
- {
- "ru" "ZAdmin\nÑħµÑ¸Ñµ ş°Ñµ³Ñ¸Ñ:"
- }
-
- "ZAdmin main class multipliers"
- {
- "ru" "°Ñ°ĵµÑÑÑ şğ°ÑѲ"
- }
-
- "ZAdmin main weapons"
- {
- "ru" "£żÑ°²ğµ½¸µ ÑÑĥ¸µĵ"
- }
-
- "ZAdmin main hitgroups"
- {
- "ru" "£żÑ°²ğµ½¸µ ·½°ĵ¸ żÑ°ĥµ½¸ı"
- }
-
- "ZAdmin main zombie"
- {
- "ru" "£żÑ°²ğµ½¸µ ·ĵħ¸"
- }
-
- "ZAdmin main force zspawn"
- {
- "ru" "ÑşÑµÑ¸ÑÑ ¸³Ñş°"
- }
-
- "ZAdmin main force ztele"
- {
- "ru" "˘µğµżÑѸѲ°ÑÑ ¸³Ñş°"
- }
-
- // ===========================
- // AntiStick (module)
- // ===========================
-
- // Commands
-
- "AntiStick command set width syntax"
- {
- "ru" "£ÑÑ°½°²ğ¸²°µÑ ³Ñ°½¸ÑÑ ĵ´µğ¸. (ĦĵÑѸѵ zr_antistick_list_models) ÑżğÑ·²°½¸µ: zr_antistick_set_width <ĵ´µğÑ/¸³Ñş> <ѸѸ½°>"
- }
-
- "AntiStick command list models list"
- {
- "ru" "ĵÑ ¸³Ñş°: ´µğÑ: ¨¸Ñ¸½°:\n-------------------------------------------------------------------------------------------------------------"
- }
-
- "AntiStick command list models name"
- {
- "ru" "{1} {2} {3}"
- }
-
- "AntiStick command set width successful"
- {
- "ru" "Ñ°½¸Ñ ĵ´µğ¸ \"{1}\" ħÑ𸠸·ĵµ½µ½Ñ ½° \"{2}.\""
- }
-
- "AntiStick command set width invalid model"
- {
- "ru" "°´°½° ½µ²µÑ½°Ñ ĵ´µğÑ/¸³Ñş: \"{1}\""
- }
-
- "AntiStick command set width invalid width"
- {
- "ru" "°´°½° ½µżÑ°²¸ğѽ°Ñ ѸѸ½° ĵ´µğ¸: \"{1}\""
- }
-
- // ===========================
- // Spawn Protect (module)
- // ===========================
-
- // General
-
- "Spawn protection begin"
- {
- "ru" "ĵħ¸ ½° Ѳħ´µ, Ñ ²°Ñ µÑÑÑ {1} ѵşÑ½´, ÑÑħÑ ½°ıѸ ħµ·ż°Ñ½µ ĵµÑÑ, żş° ²Ñ ½µ żÑµÑÑ𸠸ĵĵѽ¸ÑµÑ."
- }
-
- "Spawn protection end"
- {
- "ru" "°Ñ ¸ĵĵѽ¸ÑµÑ ·°ş½Ñ¸ğÑÑ."
- }
-
- // HUD
-
- "Spawn Protect"
- {
- "ru" "ĵĵѽ¸ÑµÑ ·°ş½Ñ¸ÑÑÑ ÑµÑµ·: {1} ѵşÑ½´."
- }
-
- // ===========================
- // ZCookies (module)
- // ===========================
-
- "ZCookies Menu main title"
- {
- "ru" "ZCookies\nÑħµÑ¸Ñµ ½°ÑÑÑışÑ:"
- }
-
- "ZCookies menu main auto-rebuy"
- {
- "ru" "²Ñ-żşÑżş°: {1}"
- }
-
- "ZCookies menu main zhp"
- {
- "ru" "ş°· ·´Ñ²ÑÑ: {1}"
- }
-
- "ZCookies menu main overlay"
- {
- "ru" "ğ°ÑѲÑı ²µÑğµı: {1}"
- }
-
- "ZCookies zmarket loadout"
- {
- "ru" "ĵѽ¸Ñ¸Ñ"
- }
-
- // ===========================
- // ZSpawn (module)
- // ===========================
-
- // General
-
- "ZSpawn double spawn"
- {
- "ru" "ZSpawn ĵĥµÑ ħÑÑÑ ¸ÑżğÑ·²°½ ÑğÑş, ş³´° ²Ñ ż·´½ ·°Ñ𸠲 ¸³ÑÑ ¸ Ѱѽ´ Ñĥµ ½°Ñ°ğÑÑ."
- }
-
- "ZSpawn timelimit"
- {
- "ru" "¸ĵ¸Ñ ²Ñµĵµ½¸ ({1} ѵşÑ½´) ½° ¸ÑżğÑ·²°½¸µ ZSpawn Ñĥµ ¸Ñѵş."
- }
-
- // Menu
-
- "ZSpawn clients title"
- {
- "ru" "ÑşÑµÑ¸ÑÑ ¸³Ñş° (zr_zspawn_force)\nÑħµÑ¸Ñµ ¸³Ñş°:"
- }
-
- // Commands
-
- "ZSpawn command force syntax"
- {
- "ru" "ÑşÑµÑµ½¸µ ¸³Ñş°. ÑżğÑ·²°½¸µ: zr_zspawn_force <¸³Ñş> ['0' = Ħ´µğ°ÑÑ Ñµğ²µşĵ | '1' = Ħ´µğ°ÑÑ ·ĵħ¸]"
-
- }
-
- "ZSpawn command force successful"
- {
- "ru" "³Ñş {1} ħÑğ ÑÑżµÑ½ ²ÑşÑµÑµ½."
- }
-
- "ZSpawn command force unsuccessful"
- {
- "ru" "³Ñş {1} ½µ ĵĥµÑ ħÑÑÑ ²ÑşÑµÑµ½."
- }
-
- // ===========================
- // ZTele (module)
- // ===========================
-
- // General
-
- "ZTele restricted human"
- {
- "ru" " ´°½½Ñı ĵĵµ½Ñ ZTele Ñ°·ÑµÑµ½ ÑğÑş ğÑ´Ñĵ."
- }
-
- "ZTele max"
- {
- "ru" "Ñ ´ÑѸ³ğ¸ ğ¸ĵ¸Ñ° ¸ÑżğÑ·²°½¸µ ² {1} ѵğµżÑѲ ·° Ѱѽ´."
- }
-
- "ZTele in progress"
- {
- "ru" "Ñ ĥ¸´°µÑµ ѵğµżÑѰѸ¸."
- }
-
- "ZTele autocancel text"
- {
- "ru" "˘µğµżÑÑ°Ñ¸Ñ Ñĵµ½µ½°. (Ñ ÑÑ𸠽° {1} ÑÑѲ)"
- }
-
- // Center Text
-
- "ZTele countdown"
- {
- "ru" "˘µğµżÑÑ ş ÑµÑż°²½Ñ ѵѵ·: {1} ѵşÑ½´."
- }
-
- "ZTele autocancel centertext"
- {
- "ru" "˘µğµżÑÑ°Ñ¸Ñ ħÑğ° Ñĵµ½µ½°."
- }
-
- "ZTele countdown end"
- {
- "ru" "˘µğµżÑÑ°Ñ¸Ñ ·°²µÑѵ½°. (ÑżğÑ·²°½: {1}/{2})"
- }
-
- // Menu
-
- "ZTele clients title"
- {
- "ru" "˘µğµżÑѸѲ°ÑÑ ¸³Ñş° (zr_ztele_force)\nÑħÑ°ÑÑ ¸³Ñş°:"
- }
-
- // Commands
-
- "ZTele command force syntax"
- {
- "ru" "˘µğµżÑѸѲ°ÑÑ ¸³Ñş°. ÑżğÑ·²°½¸µ: zr_ztele_force <¸³Ñş>"
-
- }
-
- "ZTele command force successful"
- {
- "ru" "³Ñş {1} ħÑğ ÑÑżµÑ½ ѵğµżÑѸѲ°½."
- }
-
- "ZTele command force unsuccessful"
- {
- "ru" "³Ñş {1} ½µ ĵĥµÑ ħÑÑÑ ÑµğµżÑѸѲ°½."
- }
-
- // ===========================
- // ZHP (module)
- // ===========================
-
- // General
-
- "ZHP enable"
- {
- "ru" "ş°· ·´Ñ²ÑÑ ²şğÑѵ½, ²°Ñµ ѵ°ğѽµ ·´Ñ²Ñµ ħÑ´µÑ żş°·°½ żÑğµ ¸½Ñ¸Ñ¸Ñ²°½¸Ñ."
- }
-
- "ZHP disable"
- {
- "ru" "ş°· ·´Ñ²ÑÑ ÑşğÑѵ½."
- }
-
- // HUD
-
- "Display HP"
- {
- "ru" "HP: {1}"
- }
-
- // ===========================
- // Volumetric features (module)
- // ===========================
-
- "Vol Anticamp Message"
- {
- "ru" "°½½°Ñ ·½° ѲğѵÑÑÑ ·°żÑµÑµ½½ı. ĥ°ğÑıÑÑ°, żş¸½Ñѵ µµ."
- }
-
- "Vol Slay"
- {
- "ru" "³Ñş Ñħ¸Ñ \"{1}\" ·° ÑѸ´şÑ ² ·°żÑµÑµ½½ı ·½µ (ID: {2})."
- }
-
- "Vol Ignite"
- {
- "ru" "³Ñş ż´ĥĥµ½ \"{1}\" ·° ÑѸ´şÑ ² ·°żÑµÑµ½½ı ·½µ (ID: {2})."
- }
-}
+ïğż"Phrases"
+{
+ // ===========================
+ // General (base)
+ // ===========================
+
+ "General round objective"
+ {
+ "ru" "¸Ñ²° @greenğÑ´µı żÑѸ² ·ĵħ¸@default, ѵğÑ ´ğÑ ·ĵħ¸ â ¸½Ñ¸Ñ¸Ñ²°ÑÑ ²ÑµÑ
ğÑ´µı, ¸ÑżğÑ·ÑÑ ½ĥ."
+ }
+
+ "General zmenu reminder"
+ {
+ "ru" "ğÑ żĵѸ ż şĵ°½´°ĵ Zombie:Reloaded, ²²µ´¸Ñµ \"{1}{2}\" ² Ñ°Ñ."
+ }
+
+ // ===========================
+ // Generic (base)
+ // ===========================
+
+ // General
+
+ "Literal text"
+ {
+ "ru" "{1}"
+ }
+ // Set string to "{1}" for all languages.
+
+ "Feature is disabled"
+ {
+ "ru" "°½½°Ñ ÑѽşÑ¸Ñ ÑşğÑѵ½°."
+ }
+
+ "Not enough money"
+ {
+ "ru" "£ ²°Ñ ½µ´ÑÑ°Ñѽ ´µ½µ³ ´ğÑ żşÑżş¸ ´°½½ı ²µÑ¸."
+ }
+
+ "Must be player"
+ {
+ "ru" "°½½°Ñ ÑѽşÑ¸Ñ ÑğÑş ´ğÑ ¸³Ñş²."
+ }
+
+ "Must be admin"
+ {
+ "ru" "°½½°Ñ ÑѽşÑ¸Ñ ÑğÑş ´ğÑ °´ĵ¸½²."
+ }
+
+ "No access to command"
+ {
+ "ru" "£ ²°Ñ ½µÑ ´ÑÑÑż° ş ÑÑı şĵ°½´µ."
+ }
+
+ "Must be alive"
+ {
+ "ru" "°½½°Ñ ÑѽşÑ¸Ñ ´ÑÑÑż½° ÑğÑş, ş³´° ²Ñ ĥ¸²Ñ."
+ }
+
+ "Must be dead"
+ {
+ "ru" "°½½°Ñ ÑѽşÑ¸Ñ ´ÑÑÑż½° ÑğÑş, ş³´° ²Ñ ĵµÑѲÑ."
+ }
+
+ "Must be on team"
+ {
+ "ru" "°½½°Ñ ÑѽşÑ¸Ñ ´ÑÑÑż½° ÑğÑş żÑğµ żÑ¸Ñµ´¸½µ½¸Ñ ş ş°şı-ğ¸ħ şĵ°½´µ."
+ }
+
+ "Must be zombie"
+ {
+ "ru" "°½½°Ñ ÑѽşÑ¸Ñ ´ÑÑÑż½° ÑğÑş, ş³´° ²Ñ ·ĵħ¸."
+ }
+
+ "Must be human"
+ {
+ "ru" "°½½°Ñ ÑѽşÑ¸Ñ ´ÑÑÑż½° ÑğÑş, ş³´° ²Ñ Ñµğ²µş."
+ }
+
+ "Increase by"
+ {
+ "ru" "£²µğ¸Ñ¸ÑÑ ½° {1}"
+ }
+
+ "Decrease by"
+ {
+ "ru" "£ĵµ½ÑѸÑÑ ½° {1}"
+ }
+
+ "Current Value"
+ {
+ "ru" "˘µşÑѵµ ·½°Ñµ½¸µ:"
+ }
+
+ "Zombie"
+ {
+ "ru" "ĵħ¸"
+ }
+
+ "Human"
+ {
+ "ru" "§µğ²µş"
+ }
+
+ // Menu
+
+ "Menu empty"
+ {
+ "ru" "(ÑÑÑ)"
+ }
+
+ // ===========================
+ // Config (core)
+ // ===========================
+
+ // Commands
+
+ "Config command reload syntax"
+ {
+ "ru" "Ħ¸½Ñ°şÑ¸Ñ: zr_reloadconfig <°ğ¸°Ñ Ñ°ığ°1> [°ğ¸°Ñ Ñ°ığ°2] ... - µÑµ·°³ÑÑ·¸ÑÑ Ñ°ığ ş½Ñ¸³ÑѰѸ¸."
+ }
+
+ "Config command reload related commands"
+ {
+ "ru" "Ħ²Ñ·°½½Ñµ şĵ°½´Ñ: zr_config_reloadall"
+ }
+
+ "Config command reload syntax aliases"
+ {
+ "ru" "ğ¸°ÑÑ Ñ°ığ°:\n* \"{1}\"\n* \"{2}\"\n* \"{3}\"\n* \"{4}\"\n* \"{5}\""
+ }
+
+ "Config command reload invalid"
+ {
+ "ru" "µżÑ°²¸ğѽÑı °ğ¸°Ñ Ñ°ığ°: \"{1}\""
+ }
+
+ "Config command reload not loaded"
+ {
+ "ru" "µ Ñ´°ğÑÑ ·°³ÑÑ·¸ÑÑ Ñ°ığ ş½Ñ¸³ÑѰѸ¸ \"{1}\". (ÑşğÑѵ½ ¸ğ¸ ½µ²µÑ½µ Ñ´µÑĥ¸ĵµ Ñ°ığ°.)"
+ }
+
+ "Config command reload all stats begin"
+ {
+ "ru" "µÑµ·°³ÑÑ·ş° ²ÑµÑ
Ñ°ığ² ş½Ñ¸³ÑѰѸ¸ Zombie:Reloaded...\n------------------------------------------------"
+ }
+
+ "Config command reload all stats successful"
+ {
+ "ru" "\"{1}\" - Ѳ."
+ }
+
+ "Config command reload all stats failed"
+ {
+ "ru" "\"{1}\" - Ѹħş°. (ÑşğÑѵ½ ¸ğ¸ ½µ²µÑ½µ Ñ´µÑĥ¸ĵµ Ñ°ığ°.)"
+ }
+
+ // ===========================
+ // Log (core)
+ // ===========================
+
+ "Log Generic Flag"
+ {
+ // Max length: 19 characters.
+ "ru" "ѽ.Ñğ°³:"
+ }
+
+ "Log Value"
+ {
+ // Max length: 7 characters:
+ "ru" "3½aÑ:"
+ }
+
+ "Log Module"
+ {
+ // Max length: 23 characters:
+ "ru" "´ÑğÑ:"
+ }
+
+ "Log Status"
+ {
+ "ru" "ĦÑ°ÑÑÑ Ñ¸ğÑÑÑ°:"
+ }
+
+ "Log Module Filtering"
+ {
+ "ru" "¤¸ğÑÑÑ°Ñ¸Ñ ĵ´ÑğÑ:"
+ }
+
+ "Log Module Short Name"
+ {
+ "ru" "Ñ°Ñşµ ¸ĵÑ:"
+ }
+
+ // ===========================
+ // Classes
+ // ===========================
+
+ // General
+
+ "Classes admin mode enabled"
+ {
+ "ru" "´ĵ¸½ ѵĥ¸ĵ ²şğÑѵ½!"
+ }
+
+ "Classes random assignment"
+ {
+ "ru" "°ĵ ħÑğ ÑğÑÑ°ı½Ñĵ ħÑ°·ĵ żÑ¸Ñ²µ½ şğ°ÑÑ @green\"{1}\"@default."
+ }
+
+ // Center Text/HUD
+
+ "Classes overlay toggle"
+ {
+ "ru" "ĵ°½´Ñ şğ°ÑѲ³ ²µÑğµÑ: {1}"
+ }
+
+ // Menu
+
+ "Classes menu title"
+ {
+ "ru" "ÑħÑ şğ°ÑÑ°:"
+ }
+
+ "Classes menu active"
+ {
+ "ru" "˘µşÑѸı: {1}"
+ }
+
+ "Classes menu next"
+ {
+ "ru" "²Ñı: {1}"
+ }
+
+ "Classes menu select zombie"
+ {
+ "ru" "ÑħÑ şğ°ÑÑ° ·ĵħ¸"
+ }
+
+ "Classes menu select human"
+ {
+ "ru" "ÑħÑ şğ°ÑÑ° Ñµğ²µş°"
+ }
+
+ "Classes menu select admin"
+ {
+ "ru" "ÑħÑ °´ĵ¸½Ñş³ şğ°ÑÑ°"
+ }
+
+ "Classes menu admin mode toggle"
+ {
+ "ru" "şğÑѸÑÑ °´ĵ¸½Ñş¸ı ѵĥ¸ĵ"
+ }
+
+ "Classes Menu Team Select Title"
+ {
+ "ru" "ÑħÑ şĵ°½´Ñ:"
+ }
+
+ "Classes Menu Zombies"
+ {
+ "ru" "ĵħ¸"
+ }
+
+ "Classes Menu Humans"
+ {
+ "ru" "Ñ´¸"
+ }
+
+ "Classes Menu Multiplier Select Title"
+ {
+ "ru" "ÑħÑ ĵ½ĥ¸ÑµğÑ:"
+ }
+
+ "Classes Menu Adjust Value"
+ {
+ "ru" "·ĵµ½µ½¸µ:"
+ }
+
+ // Attributes
+
+ "Classes Attrib Napalm Time"
+ {
+ "ru" "ѵĵÑ ³Ñµ½¸Ñ"
+ }
+
+ "Classes Attrib Health"
+ {
+ "ru" "´Ñ²Ñµ"
+ }
+
+ "Classes Attrib Regen Interval"
+ {
+ "ru" "½ÑµÑ²°ğ ²Ñżğ½µ½¸Ñ HP"
+ }
+
+ "Classes Attrib Regen Amount"
+ {
+ "ru" "ğ-² ²Ñżğ½Ñµĵ³ HP"
+ }
+
+ "Classes Attrib Infect Gain"
+ {
+ "ru" "½ÑÑ HP żÑ¸ ¸½ÑµşÑ¸¸"
+ }
+
+ "Classes Attrib Speed"
+ {
+ "ru" "ĦşÑÑÑÑ ħµ³°"
+ }
+
+ "Classes Attrib Knockback"
+ {
+ "ru" "ÑħÑ°ÑѲ°½¸µ"
+ }
+
+ "Classes Attrib Jump Height"
+ {
+ "ru" "ÑÑÑ° żÑÑĥş²"
+ }
+
+ "Classes Attrib Jump Distance"
+ {
+ "ru" "°ğѽÑÑÑ żÑÑĥş²"
+ }
+
+ "Classes Selection Not Allowed"
+ {
+ "ru" "·ĵµ½µ½¸µ şğ°ÑÑ° ·°żÑµÑµ½."
+ }
+
+ // ===========================
+ // Immunity
+ // ===========================
+
+ "Immunity Shield Not Available"
+ {
+ "en" "You don't have a shield."
+ }
+
+ "Immunity Shield Cooldown"
+ {
+ "en" "{1} seconds until shield is available."
+ }
+
+ "Immunity Shield Time Left"
+ {
+ "en" "Shield time left: {1}"
+ }
+
+ // ===========================
+ // Overlays (core)
+ // ===========================
+
+ "Overlays not supported"
+ {
+ "ru" "²µÑğµı ÑşğÑѵ½ - ħ½°Ñĥѵ½ DX{1} (½µħÑ
´¸ĵ DX{2})"
+ }
+
+ // ===========================
+ // Infect (core)
+ // ===========================
+
+ // General
+
+ "Infect infected"
+ {
+ "ru" "Ñ ħÑ𸠸½Ñ¸Ñ¸Ñ²°½½Ñ! ˘µżµÑÑ ·°Ñ°·¸Ñµ ş°ş ĵĥ½ ħğÑѵ ´Ñѳ¸Ñ
ğÑ´µı."
+ }
+
+ "Infect human"
+ {
+ "ru" "Ñ ħÑğ¸ ²ÑşÑµÑµ½Ñ °´ĵ¸½¸ÑÑÑ°ÑÑĵ, ¸Ñ¸Ñµ ÑşÑÑѸµ!"
+ }
+
+ "Infect disconnect"
+ {
+ "ru" "Ñğµ´½¸ı ·ĵħ¸ żş¸½Ñ𠸳ÑÑ, żÑÑĵÑ ²°ĵ ´ÑÑ°ğ°ÑÑ µ³ ¸½ÑµşÑ¸Ñ."
+ }
+
+ // Center Text
+
+ "Infect countdown"
+ {
+ "ru" "First infection in {1} seconds."
+ }
+
+ // Menu
+
+ "Infect menu clients title"
+ {
+ "ru" "£żÑ°²ğµ½¸µ ·ĵħ¸\nµÑµşğÑѵ½¸µ ¸½ÑµşÑ¸¸:\n[] = ½Ñ¸Ñ¸Ñ²°½"
+ }
+
+ // Commands
+
+ "Infect command infect syntax"
+ {
+ "ru" "½Ñ¸Ñ¸Ñ²°ÑÑ ¸³Ñş°. ÑżğÑ·²°½¸µ: zr_infect <ѸğÑÑÑ> [²ÑşÑµÑ¸ÑÑ - 1/0]"
+ }
+
+ "Infect command human syntax"
+ {
+ "ru" "ѵ²Ñ°Ñ¸ÑÑ ¸³Ñş° ² Ñµğ²µş°. ÑżğÑ·²°½¸µ: zr_human <ѸğÑÑÑ> [²ÑşÑµÑ¸ÑÑ - 1/0] [·°Ñ¸Ñ° - 1/0]"
+ }
+
+ "Infect command infect successful"
+ {
+ "ru" "³Ñş @green{1}@default ħÑğ ÑÑżµÑ½ ¸½Ñ¸Ñ¸Ñ²°½."
+ }
+
+ "Infect command infect mother successful"
+ {
+ "ru" "³Ñş @green{1}@default ħÑğ ÑÑżµÑ½ ¸½Ñ¸Ñ¸Ñ²°½ ¸ ÑÑ°ğ żµÑ²Ñĵ ·ĵħ¸."
+ }
+
+ "Infect command infect unsuccessful"
+ {
+ "ru" "³Ñş @green{1}@default Ñĥµ ѲğѵÑÑÑ ·ĵħ¸."
+ }
+
+ "Infect command human successful"
+ {
+ "ru" "³Ñş @green{1}@default ħÑğ ÑÑżµÑ½ żÑµ²Ñ°Ñµ½ ħѰѽ ² Ñµğ²µş°."
+ }
+
+ "Infect command human unsuccessful"
+ {
+ "ru" "³Ñş@green{1}@default Ñĥµ ѲğѵÑÑÑ Ñµğ²µşĵ."
+ }
+
+ // ===========================
+ // Damage (core)
+ // ===========================
+
+ "Damage suicide intercept"
+ {
+ "ru" "ѵѵѵ½° żżÑÑş° ÑѸѸ´°."
+ }
+
+ // ===========================
+ // Menu (core)
+ // ===========================
+
+ // General
+
+ "Menu main title"
+ {
+ "ru" "ĵ°½´Ñ:\nѵѸşÑ şĵ°½´ Ñ°Ñ° \"{1}\" ¸ğ¸ \"{2}\" (ѸÑ
)."
+ }
+
+ "Menu main zadmin"
+ {
+ "ru" "ZAdmin - ´ĵ¸½ ĵµ½Ñ"
+ }
+
+ "Menu main zclass"
+ {
+ "ru" "ZClass - °ÑÑÑış° şğ°ÑѲ"
+ }
+
+ "Menu main zcookies"
+ {
+ "ru" "ZCookies - µÑѽ°ğѽѵ ½°ÑÑÑış¸"
+ }
+
+ "Menu main zspawn"
+ {
+ "ru" "ZSpawn - ÑşÑµÑµ½¸µ"
+ }
+
+ "Menu main ztele"
+ {
+ "ru" "ZTele - ˘µğµżÑÑ ş ÑµÑż°²½Ñ"
+ }
+
+ "Menu main zhp"
+ {
+ "ru" "ZHP - ş°· ·´Ñ²ÑÑ"
+ }
+
+ "Menu main zmarket"
+ {
+ "ru" "ZMarket - ÑħÑ °ĵѽ¸Ñ¸¸"
+ }
+
+ // ===========================
+ // Weapons (core)
+ // ===========================
+
+ // General
+
+ "Zombie cant use weapon"
+ {
+ "ru" "ĵħ¸ ½µ ĵ³ÑÑ ¸ÑżğÑ·²°ÑÑ ÑÑĥ¸µ!"
+ }
+
+ // Restrict
+
+ "Restrict weapon"
+ {
+ "ru" "ÑÑĥ¸µ @green\"{1}\"@default ħÑğ ·°żÑµÑµ½."
+ }
+
+ "Unrestrict weapon"
+ {
+ "ru" "ÑÑĥ¸µ @green\"{1}\"@default ħÑğ Ñ°·ÑµÑµ½."
+ }
+
+ "Restrict weapon stopped"
+ {
+ "ru" "ÑÑĥ¸µ @green\"{1}\"@default Ñĥµ ѲğѵÑÑÑ ·°żÑµÑµ½½Ñĵ."
+ }
+
+ "Unrestrict weapon stopped"
+ {
+ "ru" "ÑÑĥ¸µ @green\"{1}\"@default ½µ ѲğѵÑÑÑ ·°żÑµÑµ½½Ñĵ."
+ }
+
+ "Restrict weapon type"
+ {
+ "ru" "ÑÑĥ¸µ Ѹż° @green\"{1}\"@default ħÑğ ·°żÑµÑµ½."
+ }
+
+ "Unrestrict weapon type"
+ {
+ "ru" "ÑÑĥ¸µ Ѹż° @green\"{1}\"@default ħÑğ Ñ°·ÑµÑµ½."
+ }
+
+ "Restrict weapon type stopped"
+ {
+ "ru" "ÑÑĥ¸µ Ѹż° @green\"{1}\"@default Ñĥµ ѲğѵÑÑÑ ·°żÑµÑµ½½Ñĵ."
+ }
+
+ "Unrestrict weapon type stopped"
+ {
+ "ru" "ÑÑĥ¸µ Ѹż° @green\"{1}\"@default ½µ ѲğѵÑÑÑ ·°żÑµÑµ½½Ñĵ."
+ }
+
+ "Restrict weapon untoggleable"
+ {
+ "ru" "ÑÑĥ¸µ @green\"{1}\"@default ½µ ĵĥµÑ ħÑÑÑ ·°żÑµÑµ½."
+ }
+
+ "Weapon invalid"
+ {
+ "ru" "ÑÑĥ¸µ @green\"{1}\"@default ½µ ѲğѵÑÑÑ żÑ°²¸ğѽÑĵ ¸ĵµ½µĵ ¸ğ¸ Ѹżĵ ÑÑĥ¸Ñ."
+ }
+
+ "Weapon is restricted"
+ {
+ "ru" "ÑÑĥ¸µ @green{1}@default ·°żÑµÑµ½."
+ }
+
+ // ZMarket
+
+ "Weapons zmarket buyzone"
+ {
+ "ru" "Ñ ´ğĥ½Ñ ½°Ñ
´¸ÑÑÑÑ ² ·½µ ·°şÑżş¸ ´ğÑ ¸ÑżğÑ·²°½¸Ñ ZMarket."
+ }
+
+ "Weapons zmarket purchase"
+ {
+ "ru" "Ñ żÑ¸ħѵğ¸ ÑÑĥ¸µ @green{1}@default. ÑħµÑ¸Ñµ µ³ µÑµ Ñ°· ´ğÑ żşÑżş¸ ż°Ñѽ."
+ }
+
+ "Weapons zmarket purchase max"
+ {
+ "ru" "ÑÑĥ¸µ @green{1}@default ¸ĵµµÑ ğ¸ĵ¸Ñ żşÑżş @green{2}@default. żÑħÑıѵ żÑ¸ħѵÑѸ µ³ ² Ñğµ´ÑÑѸı Ñ°·."
+ }
+
+ "Weapons zmarket grenade max"
+ {
+ "ru" "Ñ ĵĥµÑµ ½µÑѸ ÑğÑş {1} ³Ñ°½°ÑÑ ´°½½³ Ѹż°."
+ }
+
+ "Weapons zmarket auto-rebuy toggle on"
+ {
+ "ru" "²Ñ-żşÑżş° ħÑğ° ²şğÑѵ½°, ²°Ñ° °ĵѽ¸Ñ¸Ñ ħÑ´µÑ °²Ñĵ°Ñ¸ÑµÑş¸ ·°şÑż°ÑÑÑÑ żÑ¸ ş°ĥ´ĵ ÑµÑż°²½µ."
+ }
+
+ "Weapons zmarket auto-rebuy toggle off"
+ {
+ "ru" "²Ñ-żşÑżş° ħÑğ° ÑşğÑѵ½°."
+ }
+
+ "Weapons zmarket updated loadout"
+ {
+ "ru" " ´°½½Ñı ĵĵµ½Ñ ²Ñ ½µ ĵĥµÑµ żğÑѸÑÑ ´°½½µ ÑÑĥ¸µ, ½ ²°Ñ ·°ş°· ħÑğ ÑÑ
Ñ°½µ½."
+ }
+
+ "Weapons zmarket get current loadout"
+ {
+ "ru" "ĵѽ¸Ñ¸Ñ ħ½²ğµ½°, ¸ÑżğÑ·Ñıѵ żÑ¸Ñ ż²Ñѽı żşÑżş¸ ´ğÑ żÑ¸ħѵѵ½¸Ñ Ñѳ ĥµ ÑÑĥ¸Ñ."
+ }
+
+ // Commands
+
+ "Weapons command restrict syntax"
+ {
+ "ru" "°żÑµÑ ÑÑĥ¸Ñ ¸ğ¸ Ѹż° ÑÑĥ¸Ñ. ÑżğÑ·²°½¸µ: zr_restrict <ÑÑĥ¸µ|Ѹż ÑÑĥ¸Ñ> [ÑÑĥ¸µ2|Ѹż ÑÑĥ¸Ñ2] ..."
+ }
+
+ "Weapons command unrestrict syntax"
+ {
+ "ru" " °·ÑµÑµ½¸µ ÑÑĥ¸Ñ ¸ğ¸ Ѹż° ÑÑĥ¸Ñ. ÑżğÑ·²°½¸µ: zr_unrestrict <ÑÑĥ¸µ|Ѹż ÑÑĥ¸Ñ> [ÑÑĥ¸µ2|Ѹż ÑÑĥ¸Ñ2] ..."
+ }
+
+ // Menu (Restrict)
+
+ "Weapons menu restrict main title"
+ {
+ "ru" "£żÑ°²ğµ½¸µ ÑÑĥ¸µĵ"
+ }
+
+ "Weapons menu restrict main restrict"
+ {
+ "ru" "°żÑµÑ ÑÑĥ¸Ñ"
+ }
+
+ "Weapons menu restrict main market"
+ {
+ "ru" "ZMarket"
+ }
+
+ "Weapons menu restrict types title"
+ {
+ "ru" "°żÑµÑ ÑÑĥ¸Ñ\nÑħµÑ¸Ñµ Ѹż ÑÑĥ¸Ñ:"
+ }
+
+ "Weapons menu restrict types weapon type title"
+ {
+ "ru" "°żÑµÑ ÑÑĥ¸Ñ\n˘¸ż ÑÑĥ¸Ñ: {1}\n[] = °żÑµÑµ½"
+ }
+
+ "Weapons menu restrict types restrict all"
+ {
+ "ru" "°żÑµÑ¸ÑÑ ÑÑĥ¸µ Ѹż° {1}"
+ }
+
+ "Weapons menu restrict types unrestrict all"
+ {
+ "ru" " °·ÑµÑ¸ÑÑ ÑÑĥ¸µ Ѹż° {1}"
+ }
+
+ "Weapons menu restrict zmarket title"
+ {
+ "ru" "ZMarket\nÑħµÑ¸Ñµ ½°ÑÑÑışÑ:"
+ }
+
+ "Weapons menu restrict zmarket buyzone"
+ {
+ "ru" "˘ğÑş ² ·½µ ·°şÑżş¸ - {1}"
+ }
+
+ // Menu (ZMarket)
+
+ "Weapons menu zmarket main title"
+ {
+ "ru" "ZMarket\nÑħµÑ¸Ñµ żÑ¸Ñ:"
+ }
+
+ "Weapons menu zmarket main get loadout"
+ {
+ "ru" "ĦÑ
Ñ°½¸ÑÑ ÑµşÑѵµ ÑÑĥ¸µ"
+ }
+
+ "Weapons menu zmarket main view loadout"
+ {
+ "ru" "ÑÑĵÑÑ ÑµşÑÑı °ĵѽ¸Ñ¸¸"
+ }
+
+ "Weapons menu zmarket main rebuy"
+ {
+ "ru" "Ħ½²° şÑż¸ÑÑ ĵÑ °ĵѽ¸Ñ¸Ñ"
+ }
+
+ "Weapons menu zmarket main auto-rebuy"
+ {
+ "ru" "²Ñ-żşÑżş°: {1}"
+ }
+
+ "Weapons menu zmarket main weapons list"
+ {
+ "ru" "ÑÑĵÑÑ Ñż¸Ñş° ÑÑĥ¸Ñ"
+ }
+
+ "Weapons menu zmarket loadout title"
+ {
+ "ru" "ZMarket\nÑ ÑµşÑÑ°Ñ °ĵѽ¸Ñ¸Ñ:\nÑħµÑ¸Ñµ ÑğÑ ´ğÑ Ñ¸ÑÑş¸.\nѸĵµÑ°¸µ: ²Ñ-żşÑżş° ¸ÑżğÑ·ÑµÑ ´°½½Ñı Ñż¸Ñş."
+ }
+
+ "Weapons menu zmarket loadout primary"
+ {
+ "ru" "ѽ²½µ: {1}"
+ }
+
+ "Weapons menu zmarket loadout secondary"
+ {
+ "ru" "¸ÑÑğµÑ: {1}"
+ }
+
+ "Weapons menu zmarket loadout melee"
+ {
+ "ru" "ğ¸ĥ½¸ı ħı: {1}"
+ }
+
+ "Weapons menu zmarket loadout projectile"
+ {
+ "ru" "Ħ½°ÑÑ´Ñ: {1}"
+ }
+
+ "Weapons menu zmarket loadout explosive"
+ {
+ "ru" "·ÑÑ²Ñ°Ñş°: {1}"
+ }
+
+ "Weapons menu zmarket loadout nvgs"
+ {
+ "ru" "ѽµ ²¸´µ½¸µ: {1}"
+ }
+
+ "Weapons menu zmarket loadout empty"
+ {
+ "ru" "(ÑÑÑ)"
+ }
+
+ "Weapons menu zmarket types title"
+ {
+ "ru" "ZMarket\nÑħµÑ¸Ñµ Ѹż ÑÑĥ¸Ñ:"
+ }
+
+ "Weapons menu zmarket types weapon type title"
+ {
+ "ru" "ZMarket\n˘¸ż ÑÑĥ¸Ñ: {1}\n[] = °żÑµÑµ½"
+ }
+
+ "Weapons menu zmarket types weapon info"
+ {
+ "ru" "{1} (${2})\nÑÑ°ğÑÑ żşÑżş: {3}"
+ }
+
+ "Weapons menu zmarket types weapon ammo"
+ {
+ "ru" "°ÑѽÑ"
+ }
+
+ // ===========================
+ // Hitgroups (core)
+ // ===========================
+
+ // Menu
+
+ "Hitgroups menu hitgroups title"
+ {
+ "ru" "£żÑ°²ğµ½¸µ ·½°ĵ¸ żÑ°ĥµ½¸ı\nĵ°½´Ñ: zr_hitgroup(_enable_all/_headshots_only)\nÑħµÑ¸Ñµ ·½Ñ ´ğÑ żµÑµşğÑѵ½¸Ñ:"
+ }
+
+ "Hitgroups menu hitgroups enable all"
+ {
+ "ru" "şğÑѸÑÑ ²Ñµ ·½Ñ żÑ°ĥµ½¸ı"
+ }
+
+ "Hitgroups menu hitgroups headshots only"
+ {
+ "ru" "˘ğÑş ² ³ğ²Ñ"
+ }
+
+ // Commands
+
+ "Hitgroups command syntax"
+ {
+ "ru" "µÑµşğÑѵ½¸µ ¸ğ¸ ·°´°½¸µ ·½Ñ żÑ°ĥµ½¸ı ·ĵħ¸, şÑÑѵ ĵ³ÑÑ żğÑѸÑÑ Ñѽ. ÑżğÑ·²°½¸µ: zr_hitgroup <°ğ¸°Ñ ·½Ñ> [1/0]"
+ }
+
+ "Hitgroups command related commands"
+ {
+ "ru" "Ħ²Ñ·°½½Ñµ şĵ°½´Ñ: zr_hitgroup_enable_all, zr_hitgroup_headshots_only"
+ }
+
+ "Hitgroups command syntax names"
+ {
+ "ru" "ĵµ½° ·½ żÑ°ĥµ½¸ı:"
+ }
+
+ "Hitgroups command successful on"
+ {
+ "ru" "£Ñ½ ´ğÑ ·½Ñ żÑ°ĥµ½¸ı \"{1}\" ħÑğ ²şğÑѵ½."
+ }
+
+ "Hitgroups command successful off"
+ {
+ "ru" "£Ñ½ ´ğÑ ·½Ñ żÑ°ĥµ½¸ı \"{1}\" ħÑğ ²ÑşğÑѵ½."
+ }
+
+ "Hitgroups command invalid hitgroup"
+ {
+ "ru" "\"{1}\" ½µ ѲğѵÑÑÑ żÑ°²¸ğѽÑĵ °ğ¸°Ñĵ ·½Ñ żÑ°ĥµ½¸ı. °ż¸Ñ¸Ñµ zr_hitgroup ´ğÑ żÑÑĵÑÑ° ²ÑµÑ
°ğ¸°Ñ²."
+ }
+
+ "Hitgroups command enable all successful"
+ {
+ "ru" "ѵ ·½Ñ żÑ°ĥµ½¸ı ·ĵħ¸ ħÑğ¸ ÑşÑÑÑÑ ´ğÑ żğÑѵ½¸Ñ Ñѽ°."
+ }
+
+ "Hitgroups command headshots only successful"
+ {
+ "ru" "˘µżµÑÑ ·ĵħ¸ ĵ³ÑÑ żğÑÑ°ÑÑ Ñѽ ÑğÑş żÑ¸ żż°´°½¸ÑÑ
² ³ğ²Ñ."
+ }
+
+ // ===========================
+ // ZAdmin (core)
+ // ===========================
+
+ "ZAdmin main title"
+ {
+ "ru" "ZAdmin\nÑħµÑ¸Ñµ ş°Ñµ³Ñ¸Ñ:"
+ }
+
+ "ZAdmin main class multipliers"
+ {
+ "ru" "°Ñ°ĵµÑÑÑ şğ°ÑѲ"
+ }
+
+ "ZAdmin main weapons"
+ {
+ "ru" "£żÑ°²ğµ½¸µ ÑÑĥ¸µĵ"
+ }
+
+ "ZAdmin main hitgroups"
+ {
+ "ru" "£żÑ°²ğµ½¸µ ·½°ĵ¸ żÑ°ĥµ½¸ı"
+ }
+
+ "ZAdmin main zombie"
+ {
+ "ru" "£żÑ°²ğµ½¸µ ·ĵħ¸"
+ }
+
+ "ZAdmin main force zspawn"
+ {
+ "ru" "ÑşÑµÑ¸ÑÑ ¸³Ñş°"
+ }
+
+ "ZAdmin main force ztele"
+ {
+ "ru" "˘µğµżÑѸѲ°ÑÑ ¸³Ñş°"
+ }
+
+ // ===========================
+ // AntiStick (module)
+ // ===========================
+
+ // Commands
+
+ "AntiStick command set width syntax"
+ {
+ "ru" "£ÑÑ°½°²ğ¸²°µÑ ³Ñ°½¸ÑÑ ĵ´µğ¸. (ĦĵÑѸѵ zr_antistick_list_models) ÑżğÑ·²°½¸µ: zr_antistick_set_width <ĵ´µğÑ/¸³Ñş> <ѸѸ½°>"
+ }
+
+ "AntiStick command list models list"
+ {
+ "ru" "ĵÑ ¸³Ñş°: ´µğÑ: ¨¸Ñ¸½°:\n-------------------------------------------------------------------------------------------------------------"
+ }
+
+ "AntiStick command list models name"
+ {
+ "ru" "{1} {2} {3}"
+ }
+
+ "AntiStick command set width successful"
+ {
+ "ru" "Ñ°½¸Ñ ĵ´µğ¸ \"{1}\" ħÑ𸠸·ĵµ½µ½Ñ ½° \"{2}.\""
+ }
+
+ "AntiStick command set width invalid model"
+ {
+ "ru" "°´°½° ½µ²µÑ½°Ñ ĵ´µğÑ/¸³Ñş: \"{1}\""
+ }
+
+ "AntiStick command set width invalid width"
+ {
+ "ru" "°´°½° ½µżÑ°²¸ğѽ°Ñ ѸѸ½° ĵ´µğ¸: \"{1}\""
+ }
+
+ // ===========================
+ // Spawn Protect (module)
+ // ===========================
+
+ // General
+
+ "Spawn protection begin"
+ {
+ "ru" "ĵħ¸ ½° Ѳħ´µ, Ñ ²°Ñ µÑÑÑ {1} ѵşÑ½´, ÑÑħÑ ½°ıѸ ħµ·ż°Ñ½µ ĵµÑÑ, żş° ²Ñ ½µ żÑµÑÑ𸠸ĵĵѽ¸ÑµÑ."
+ }
+
+ "Spawn protection end"
+ {
+ "ru" "°Ñ ¸ĵĵѽ¸ÑµÑ ·°ş½Ñ¸ğÑÑ."
+ }
+
+ // HUD
+
+ "Spawn Protect"
+ {
+ "ru" "ĵĵѽ¸ÑµÑ ·°ş½Ñ¸ÑÑÑ ÑµÑµ·: {1} ѵşÑ½´."
+ }
+
+ // ===========================
+ // ZCookies (module)
+ // ===========================
+
+ "ZCookies Menu main title"
+ {
+ "ru" "ZCookies\nÑħµÑ¸Ñµ ½°ÑÑÑışÑ:"
+ }
+
+ "ZCookies menu main auto-rebuy"
+ {
+ "ru" "²Ñ-żşÑżş°: {1}"
+ }
+
+ "ZCookies menu main zhp"
+ {
+ "ru" "ş°· ·´Ñ²ÑÑ: {1}"
+ }
+
+ "ZCookies menu main overlay"
+ {
+ "ru" "ğ°ÑѲÑı ²µÑğµı: {1}"
+ }
+
+ "ZCookies zmarket loadout"
+ {
+ "ru" "ĵѽ¸Ñ¸Ñ"
+ }
+
+ // ===========================
+ // ZSpawn (module)
+ // ===========================
+
+ // General
+
+ "ZSpawn double spawn"
+ {
+ "ru" "ZSpawn ĵĥµÑ ħÑÑÑ ¸ÑżğÑ·²°½ ÑğÑş, ş³´° ²Ñ ż·´½ ·°Ñ𸠲 ¸³ÑÑ ¸ Ѱѽ´ Ñĥµ ½°Ñ°ğÑÑ."
+ }
+
+ "ZSpawn timelimit"
+ {
+ "ru" "¸ĵ¸Ñ ²Ñµĵµ½¸ ({1} ѵşÑ½´) ½° ¸ÑżğÑ·²°½¸µ ZSpawn Ñĥµ ¸Ñѵş."
+ }
+
+ // Menu
+
+ "ZSpawn clients title"
+ {
+ "ru" "ÑşÑµÑ¸ÑÑ ¸³Ñş° (zr_zspawn_force)\nÑħµÑ¸Ñµ ¸³Ñş°:"
+ }
+
+ // Commands
+
+ "ZSpawn command force syntax"
+ {
+ "ru" "ÑşÑµÑµ½¸µ ¸³Ñş°. ÑżğÑ·²°½¸µ: zr_zspawn_force <¸³Ñş> ['0' = Ħ´µğ°ÑÑ Ñµğ²µşĵ | '1' = Ħ´µğ°ÑÑ ·ĵħ¸]"
+
+ }
+
+ "ZSpawn command force successful"
+ {
+ "ru" "³Ñş {1} ħÑğ ÑÑżµÑ½ ²ÑşÑµÑµ½."
+ }
+
+ "ZSpawn command force unsuccessful"
+ {
+ "ru" "³Ñş {1} ½µ ĵĥµÑ ħÑÑÑ ²ÑşÑµÑµ½."
+ }
+
+ // ===========================
+ // ZTele (module)
+ // ===========================
+
+ // General
+
+ "ZTele restricted human"
+ {
+ "ru" " ´°½½Ñı ĵĵµ½Ñ ZTele Ñ°·ÑµÑµ½ ÑğÑş ğÑ´Ñĵ."
+ }
+
+ "ZTele max"
+ {
+ "ru" "Ñ ´ÑѸ³ğ¸ ğ¸ĵ¸Ñ° ¸ÑżğÑ·²°½¸µ ² {1} ѵğµżÑѲ ·° Ѱѽ´."
+ }
+
+ "ZTele in progress"
+ {
+ "ru" "Ñ ĥ¸´°µÑµ ѵğµżÑѰѸ¸."
+ }
+
+ "ZTele autocancel text"
+ {
+ "ru" "˘µğµżÑÑ°Ñ¸Ñ Ñĵµ½µ½°. (Ñ ÑÑ𸠽° {1} ÑÑѲ)"
+ }
+
+ // Center Text
+
+ "ZTele countdown"
+ {
+ "ru" "˘µğµżÑÑ ş ÑµÑż°²½Ñ ѵѵ·: {1} ѵşÑ½´."
+ }
+
+ "ZTele autocancel centertext"
+ {
+ "ru" "˘µğµżÑÑ°Ñ¸Ñ ħÑğ° Ñĵµ½µ½°."
+ }
+
+ "ZTele countdown end"
+ {
+ "ru" "˘µğµżÑÑ°Ñ¸Ñ ·°²µÑѵ½°. (ÑżğÑ·²°½: {1}/{2})"
+ }
+
+ // Menu
+
+ "ZTele clients title"
+ {
+ "ru" "˘µğµżÑѸѲ°ÑÑ ¸³Ñş° (zr_ztele_force)\nÑħÑ°ÑÑ ¸³Ñş°:"
+ }
+
+ // Commands
+
+ "ZTele command force syntax"
+ {
+ "ru" "˘µğµżÑѸѲ°ÑÑ ¸³Ñş°. ÑżğÑ·²°½¸µ: zr_ztele_force <¸³Ñş>"
+
+ }
+
+ "ZTele command force successful"
+ {
+ "ru" "³Ñş {1} ħÑğ ÑÑżµÑ½ ѵğµżÑѸѲ°½."
+ }
+
+ "ZTele command force unsuccessful"
+ {
+ "ru" "³Ñş {1} ½µ ĵĥµÑ ħÑÑÑ ÑµğµżÑѸѲ°½."
+ }
+
+ // ===========================
+ // ZHP (module)
+ // ===========================
+
+ // General
+
+ "ZHP enable"
+ {
+ "ru" "ş°· ·´Ñ²ÑÑ ²şğÑѵ½, ²°Ñµ ѵ°ğѽµ ·´Ñ²Ñµ ħÑ´µÑ żş°·°½ żÑğµ ¸½Ñ¸Ñ¸Ñ²°½¸Ñ."
+ }
+
+ "ZHP disable"
+ {
+ "ru" "ş°· ·´Ñ²ÑÑ ÑşğÑѵ½."
+ }
+
+ // HUD
+
+ "Display HP"
+ {
+ "ru" "HP: {1}"
+ }
+
+ // ===========================
+ // Volumetric features (module)
+ // ===========================
+
+ "Vol Anticamp Message"
+ {
+ "ru" "°½½°Ñ ·½° ѲğѵÑÑÑ ·°żÑµÑµ½½ı. ĥ°ğÑıÑÑ°, żş¸½Ñѵ µµ."
+ }
+
+ "Vol Slay"
+ {
+ "ru" "³Ñş Ñħ¸Ñ \"{1}\" ·° ÑѸ´şÑ ² ·°żÑµÑµ½½ı ·½µ (ID: {2})."
+ }
+
+ "Vol Ignite"
+ {
+ "ru" "³Ñş ż´ĥĥµ½ \"{1}\" ·° ÑѸ´şÑ ² ·°żÑµÑµ½½ı ·½µ (ID: {2})."
+ }
+}
diff --git a/cstrike/addons/sourcemod/translations/zombiereloaded.phrases.txt b/cstrike/addons/sourcemod/translations/zombiereloaded.phrases.txt
index 7241612..4e32665 100644
--- a/cstrike/addons/sourcemod/translations/zombiereloaded.phrases.txt
+++ b/cstrike/addons/sourcemod/translations/zombiereloaded.phrases.txt
@@ -1,1161 +1,1161 @@
-ïğż"Phrases"
-{
- // ===========================
- // General (base)
- // ===========================
-
- "General round objective"
- {
- "en" "The game is @greenHumans vs. Zombies@default, the goal for zombies is to infect all humans by knifing them."
- }
-
- "General zmenu reminder"
- {
- "#format" "{1:s},{2:s}"
- "en" "For help on Zombie:Reloaded commands, type \"{1}{2}\" in chat."
- }
-
- // ===========================
- // Generic (base)
- // ===========================
-
- // General
-
- "Literal text"
- {
- "#format" "{1:s}"
- "en" "{1}"
- }
- // Set string to "{1}" for all languages.
-
- "Feature is disabled"
- {
- "en" "This feature is currently disabled by the server host."
- }
-
- "Not enough money"
- {
- "en" "You do not have enough money to buy this item."
- }
-
- "Must be player"
- {
- "en" "This feature is reserved for players only."
- }
-
- "Must be admin"
- {
- "en" "This feature is reserved for admins only."
- }
-
- "No access to command"
- {
- "en" "You do not have access to this command."
- }
-
- "Must be alive"
- {
- "en" "This feature requires that you are alive."
- }
-
- "Must be dead"
- {
- "en" "This feature requires that you are dead."
- }
-
- "Must be on team"
- {
- "en" "This feature requires that you are on a team."
- }
-
- "Must be zombie"
- {
- "en" "This feature requires that you are a zombie."
- }
-
- "Must be human"
- {
- "en" "This feature requires that you are a human."
- }
-
- "Increase by"
- {
- "#format" "{1:s}"
- "en" "Increase by {1}"
- }
-
- "Decrease by"
- {
- "#format" "{1:s}"
- "en" "Decrease by {1}"
- }
-
- "Current Value"
- {
- "en" "Current value:"
- }
-
- "Zombie"
- {
- "en" "Zombie"
- }
-
- "Human"
- {
- "en" "Human"
- }
-
- // Menu
-
- "Menu empty"
- {
- "en" "(Empty)"
- }
-
- // ===========================
- // Config (core)
- // ===========================
-
- // Commands
-
- "Config command reload syntax"
- {
- "en" "Syntax: zr_reloadconfig [file alias2] ... - Reloads a config file."
- }
-
- "Config command reload related commands"
- {
- "en" "Related command(s): zr_config_reloadall"
- }
-
- "Config command reload syntax aliases"
- {
- "#format" "{1:s},{2:s},{3:s},{4:s},{5:s}"
- "en" "File Aliases:\n* \"{1}\"\n* \"{2}\"\n* \"{3}\"\n* \"{4}\"\n* \"{5}\""
- }
-
- "Config command reload invalid"
- {
- "#format" "{1:s}"
- "en" "Invalid file alias: \"{1}\""
- }
-
- "Config command reload not loaded"
- {
- "#format" "{1:s}"
- "en" "Config file \"{1}\" failed to load. (Either disabled or invalid file content.)"
- }
-
- "Config command reload all stats begin"
- {
- "en" "Reloading all Zombie:Reloaded config files...\n------------------------------------------------"
- }
-
- "Config command reload all stats successful"
- {
- "#format" "{1:s}"
- "en" "\"{1}\" - Successful."
- }
-
- "Config command reload all stats failed"
- {
- "#format" "{1:s}"
- "en" "\"{1}\" - Failed. (Either disabled or invalid file content.)"
- }
-
- // ===========================
- // Log (core)
- // ===========================
-
- "Log Generic Flag"
- {
- // Max length: 19 characters.
- "en" "Generic Flag:"
- }
-
- "Log Value"
- {
- // Max length: 7 characters:
- "en" "Value:"
- }
-
- "Log Module"
- {
- // Max length: 23 characters:
- "en" "Module:"
- }
-
- "Log Status"
- {
- "en" "Filter Status:"
- }
-
- "Log Module Filtering"
- {
- "en" "Module Filtering:"
- }
-
- "Log Module Short Name"
- {
- "en" "Short Name:"
- }
-
- // ===========================
- // Classes
- // ===========================
-
- // General
-
- "Classes admin mode enabled"
- {
- "en" "Admin mode is enabled!"
- }
-
- "Classes random assignment"
- {
- "#format" "{1:s}"
- "en" "You have randomly been assigned to the @green\"{1}\" @defaultclass."
- }
-
- // Center Text/HUD
-
- "Classes overlay toggle"
- {
- "#format" "{1:s}"
- "en" "Class overlay toggle commands: {1}"
- }
-
- // Menu
-
- "Classes menu title"
- {
- "en" "Class Selection:"
- }
-
- "Classes menu active"
- {
- "#format" "{1:s}"
- "en" "Active: {1}"
- }
-
- "Classes menu next"
- {
- "#format" "{1:s}"
- "en" "Next spawn: {1}"
- }
-
- "Classes menu select zombie"
- {
- "en" "Select Zombie Class"
- }
-
- "Classes menu select human"
- {
- "en" "Select Human Class"
- }
-
- "Classes menu select admin"
- {
- "en" "Select Admin Mode Class"
- }
-
- "Classes menu admin mode toggle"
- {
- "en" "Toggle Admin Mode"
- }
-
- "Classes Menu Team Select Title"
- {
- "en" "Select Team:"
- }
-
- "Classes Menu Zombies"
- {
- "en" "Zombies"
- }
-
- "Classes Menu Humans"
- {
- "en" "Humans"
- }
-
- "Classes Menu Multiplier Select Title"
- {
- "en" "Select Multiplier:"
- }
-
- "Classes Menu Adjust Value"
- {
- "en" "Adjust Value:"
- }
-
- // Attributes
-
- "Classes Attrib Napalm Time"
- {
- "en" "Napalm Time"
- }
-
- "Classes Attrib Health"
- {
- "en" "Health"
- }
-
- "Classes Attrib Regen Interval"
- {
- "en" "Health Regeneration Interval"
- }
-
- "Classes Attrib Regen Amount"
- {
- "en" "Health Regeneration Amount"
- }
-
- "Classes Attrib Infect Gain"
- {
- "en" "Infection Health Gain"
- }
-
- "Classes Attrib Speed"
- {
- "en" "Running Speed"
- }
-
- "Classes Attrib Knockback"
- {
- "en" "Knock Back"
- }
-
- "Classes Attrib Jump Height"
- {
- "en" "Jump Height"
- }
-
- "Classes Attrib Jump Distance"
- {
- "en" "Jump Distance"
- }
-
- "Classes Selection Not Allowed"
- {
- "en" "Changing classes is not allowed."
- }
-
- // ===========================
- // Immunity
- // ===========================
-
- "Immunity Shield Not Available"
- {
- "en" "You don't have a shield."
- }
-
- "Immunity Shield Cooldown"
- {
- "#format" "{1:d}"
- "en" "{1} seconds until shield is available."
- }
-
- "Immunity Shield Time Left"
- {
- "#format" "{1:d}"
- "en" "Shield time left: {1}"
- }
-
- // ===========================
- // Overlays (core)
- // ===========================
-
- "Overlays not supported"
- {
- "#format" "{1:d},{2:d}"
- "en" "Blocking Overlay - DX{1} Detected (DX{2} Required)"
- }
-
- // ===========================
- // Infect (core)
- // ===========================
-
- // General
-
- "Infect infected"
- {
- "en" "You have been infected! Go pass it on to as many other players as you can."
- }
-
- "Infect human"
- {
- "en" "The merciful gods (known as admins) have resurrected your soul, find some cover!"
- }
-
- "Infect disconnect"
- {
- "en" "The last zombie has left the game, and has passed the infection on to you."
- }
-
- // Center Text
-
- "Infect countdown"
- {
- "#format" "{1:d}"
- "en" "First infection in {1} seconds."
- }
-
- // Menu
-
- "Infect menu clients title"
- {
- "en" "Zombie Management\nToggle Infection:\n[] = Infected"
- }
-
- // Commands
-
- "Infect command infect syntax"
- {
- "en" "Infect a client. Usage: zr_infect [respawn - 1/0]"
- }
-
- "Infect command human syntax"
- {
- "en" "Turn a client into a human. Usage: zr_human [respawn - 1/0] [protect - 1/0]"
- }
-
- "Infect command infect successful"
- {
- "#format" "{1:s}"
- "en" "Player @green{1} @defaulthas been successfully infected."
- }
-
- "Infect command infect mother successful"
- {
- "#format" "{1:s}"
- "en" "Player @green{1} @defaulthas been successfully infected as the mother zombie."
- }
-
- "Infect command infect unsuccessful"
- {
- "#format" "{1:s}"
- "en" "Player @green{1} @defaultis already a zombie."
- }
-
- "Infect command human successful"
- {
- "#format" "{1:s}"
- "en" "Player @green{1} @defaulthas been successfully brought back as a human."
- }
-
- "Infect command human unsuccessful"
- {
- "#format" "{1:s}"
- "en" "Player @green{1} @defaultis already a human."
- }
-
- // ===========================
- // Damage (core)
- // ===========================
-
- "Damage suicide intercept"
- {
- "en" "Suicide attempt intercepted."
- }
-
- // ===========================
- // Menu (core)
- // ===========================
-
- // General
-
- "Menu main title"
- {
- "#format" "{1:s},{2:s}"
- "en" "ZR Commands:\nPrefix command with \"{1}\" or \"{2}\" (quiet) when typing in chat."
- }
-
- "Menu main zadmin"
- {
- "en" "ZAdmin - Open admin menu"
- }
-
- "Menu main zclass"
- {
- "en" "ZClass - Configure class settings"
- }
-
- "Menu main zcookies"
- {
- "en" "ZCookies - Toggle personal ZR settings here"
- }
-
- "Menu main zspawn"
- {
- "en" "ZSpawn - Join late? Spawn with this"
- }
-
- "Menu main ztele"
- {
- "en" "ZTele - Stuck? Teleport back to spawn"
- }
-
- "Menu main zhp"
- {
- "en" "ZHP - Shows real HP as zombie"
- }
-
- "Menu main zmarket"
- {
- "en" "ZMarket - Customize loadouts here"
- }
-
- // ===========================
- // Weapons (core)
- // ===========================
-
- // General
-
- "Zombie cant use weapon"
- {
- "en" "Zombies can't use weapons!"
- }
-
- // Restrict
-
- "Restrict weapon"
- {
- "#format" "{1:s}"
- "en" "Weapon @green\"{1}\" @defaulthas been restricted."
- }
-
- "Unrestrict weapon"
- {
- "#format" "{1:s}"
- "en" "Weapon @green\"{1}\" @defaulthas been unrestricted."
- }
-
- "Restrict weapon stopped"
- {
- "#format" "{1:s}"
- "en" "Weapon @green\"{1}\" @defaultis already restricted."
- }
-
- "Unrestrict weapon stopped"
- {
- "#format" "{1:s}"
- "en" "Weapon @green\"{1}\" @default has no restrictions set."
- }
-
- "Restrict weapon type"
- {
- "#format" "{1:s}"
- "en" "Weapons of type @green\"{1}\" @defaulthave been restricted."
- }
-
- "Unrestrict weapon type"
- {
- "#format" "{1:s}"
- "en" "Weapons of type @green\"{1}\" @defaulthave been unrestricted."
- }
-
- "Restrict weapon type stopped"
- {
- "#format" "{1:s}"
- "en" "Weapons of type @green\"{1}\" @defaultare all already restricted."
- }
-
- "Unrestrict weapon type stopped"
- {
- "#format" "{1:s}"
- "en" "Weapons of type @green\"{1}\" @defaulthave no restrictions set."
- }
-
- "Restrict weapon untoggleable"
- {
- "#format" "{1:s}"
- "en" "Weapon @green\"{1}\" @defaultmay not have its restrictions toggled."
- }
-
- "Weapon invalid"
- {
- "#format" "{1:s}"
- "en" "Weapon @green\"{1}\" @defaultis an invalid weapon (type) name."
- }
-
- "Weapon is restricted"
- {
- "#format" "{1:s}"
- "en" "Weapon @green{1} @defaultis restricted."
- }
-
- // ZMarket
-
- "Weapons zmarket buyzone"
- {
- "en" "You must be in a buyzone to use ZMarket."
- }
-
- "Weapons zmarket purchase"
- {
- "#format" "{1:s}"
- "en" "You have purchased weapon @green{1}. @defaultSelect item again to buy ammo if you are low."
- }
-
- "Weapons zmarket purchase max"
- {
- "#format" "{1:s},{2:d}"
- "en" "Weapon @green{1} @defaulthas a purchase limit of @green{2}@default. Wait until you respawn to try again."
- }
-
- "Weapons zmarket grenade max"
- {
- "#format" "{1:d}"
- "en" "You may only carry {1} grenade(s) of this type."
- }
-
- "Weapons zmarket auto-rebuy toggle on"
- {
- "en" "Auto-rebuy has been enabled, your loadout will be automatically purchased for you each time you spawn."
- }
-
- "Weapons zmarket auto-rebuy toggle off"
- {
- "en" "Auto-rebuy has been disabled."
- }
-
- "Weapons zmarket updated loadout"
- {
- "en" "You are not able to purchase a weapon at this time, but your loadout has been updated with this weapon."
- }
-
- "Weapons zmarket get current loadout"
- {
- "en" "Updated current loadout, use rebuy option to purchase these weapons again."
- }
-
- // Commands
-
- "Weapons command restrict syntax"
- {
- "en" "Restricts a weapon or a weapon type. Usage: zr_restrict [weapon2|weapontype2] ..."
- }
-
- "Weapons command unrestrict syntax"
- {
- "en" "Unrestricts a weapon or a weapon type. Usage: zr_unrestrict [weapon2|weapontype2] ..."
- }
-
- // Menu (Restrict)
-
- "Weapons menu restrict main title"
- {
- "en" "Weapons Management"
- }
-
- "Weapons menu restrict main restrict"
- {
- "en" "Weapon Restrictions"
- }
-
- "Weapons menu restrict main market"
- {
- "en" "ZMarket"
- }
-
- "Weapons menu restrict types title"
- {
- "en" "Weapon Restrictions\nSelect Weapon Type:"
- }
-
- "Weapons menu restrict types weapon type title"
- {
- "#format" "{1:s}"
- "en" "Weapon Restrictions\nWeapon Type: {1}\n[] = Restricted"
- }
-
- "Weapons menu restrict types restrict all"
- {
- "#format" "{1:s}"
- "en" "Restrict weapon type {1}"
- }
-
- "Weapons menu restrict types unrestrict all"
- {
- "#format" "{1:s}"
- "en" "Unrestrict weapon type {1}"
- }
-
- "Weapons menu restrict zmarket title"
- {
- "en" "ZMarket\nSelect Setting:"
- }
-
- "Weapons menu restrict zmarket buyzone"
- {
- "#format" "{1:s}"
- "en" "Buyzone Only - {1}"
- }
-
- // Menu (ZMarket)
-
- "Weapons menu zmarket main title"
- {
- "en" "ZMarket\nSelect an Option:"
- }
-
- "Weapons menu zmarket main get loadout"
- {
- "en" "Save Current Setup"
- }
-
- "Weapons menu zmarket main view loadout"
- {
- "en" "View Saved Setup"
- }
-
- "Weapons menu zmarket main rebuy"
- {
- "en" "Buy Saved Setup"
- }
-
- "Weapons menu zmarket main auto-rebuy"
- {
- "#format" "{1:s}"
- "en" "Auto-Rebuy: {1}"
- }
-
- "Weapons menu zmarket main weapons list"
- {
- "en" "Buy Weapons"
- }
-
- "Weapons menu zmarket loadout title"
- {
- "en" "ZMarket\nMy Current Setup:\nSelect weapon slot to clear.\nNote: Rebuy refers to these weapons."
- }
-
- "Weapons menu zmarket loadout primary"
- {
- "#format" "{1:s}"
- "en" "Primary: {1}"
- }
-
- "Weapons menu zmarket loadout secondary"
- {
- "#format" "{1:s}"
- "en" "Secondary: {1}"
- }
-
- "Weapons menu zmarket loadout melee"
- {
- "#format" "{1:s}"
- "en" "Melee: {1}"
- }
-
- "Weapons menu zmarket loadout projectile"
- {
- "#format" "{1:s}"
- "en" "Projectile: {1}"
- }
-
- "Weapons menu zmarket loadout explosive"
- {
- "#format" "{1:s}"
- "en" "Explosive: {1}"
- }
-
- "Weapons menu zmarket loadout nvgs"
- {
- "#format" "{1:s}"
- "en" "NVGs: {1}"
- }
-
- "Weapons menu zmarket loadout empty"
- {
- "en" "(None)"
- }
-
- "Weapons menu zmarket types title"
- {
- "en" "ZMarket\nSelect Weapon Type:"
- }
-
- "Weapons menu zmarket types weapon type title"
- {
- "#format" "{1:s}"
- "en" "ZMarket\nWeapon Type: {1}\n[] = Restricted"
- }
-
- "Weapons menu zmarket types weapon info"
- {
- "#format" "{1:s},{2:d},{3:d}"
- "en" "{1} (${2})\nPurchases Left: {3}"
- }
-
- "Weapons menu zmarket types weapon ammo"
- {
- "en" "Ammo"
- }
-
- // ===========================
- // Hitgroups (core)
- // ===========================
-
- // Menu
-
- "Hitgroups menu hitgroups title"
- {
- "en" "Hitgroup Management\nCommands: zr_hitgroup(_enable_all/_headshots_only)\nSelect a Hitgroup to Toggle:"
- }
-
- "Hitgroups menu hitgroups enable all"
- {
- "en" "Enable All Hitgroups"
- }
-
- "Hitgroups menu hitgroups headshots only"
- {
- "en" "Headshots Only"
- }
-
- // Commands
-
- "Hitgroups command syntax"
- {
- "en" "Toggles or sets if a zombie's hitgroup can be damaged. Usage: zr_hitgroup [1/0]"
- }
-
- "Hitgroups command related commands"
- {
- "en" "Related command(s): zr_hitgroup_enable_all, zr_hitgroup_headshots_only"
- }
-
- "Hitgroups command syntax names"
- {
- "en" "Hitgroup Names:"
- }
-
- "Hitgroups command successful on"
- {
- "#format" "{1:s}"
- "en" "Damage for hitgroup \"{1}\" has been toggled on."
- }
-
- "Hitgroups command successful off"
- {
- "#format" "{1:s}"
- "en" "Damage for hitgroup \"{1}\" has been toggled off."
- }
-
- "Hitgroups command invalid hitgroup"
- {
- "#format" "{1:s}"
- "en" "\"{1}\" is not a valid hitgroup alias. Type zr_hitgroup to view all aliases."
- }
-
- "Hitgroups command enable all successful"
- {
- "en" "All zombie hitgroups have been enabled for damage."
- }
-
- "Hitgroups command headshots only successful"
- {
- "en" "Zombies may now only be damaged by headshots."
- }
-
- // ===========================
- // ZAdmin (core)
- // ===========================
-
- "ZAdmin main title"
- {
- "en" "ZAdmin\nSelect Category:"
- }
-
- "ZAdmin main class multipliers"
- {
- "en" "Class Multipliers"
- }
-
- "ZAdmin main weapons"
- {
- "en" "Weapon Management"
- }
-
- "ZAdmin main hitgroups"
- {
- "en" "Hitgroup Management"
- }
-
- "ZAdmin main zombie"
- {
- "en" "Zombie Management"
- }
-
- "ZAdmin main force zspawn"
- {
- "en" "Force ZSpawn"
- }
-
- "ZAdmin main force ztele"
- {
- "en" "Force ZTele"
- }
-
- // ===========================
- // AntiStick (module)
- // ===========================
-
- // Commands
-
- "AntiStick command set width syntax"
- {
- "en" "Sets the width of a model's hull. (See zr_antistick_list_models) Usage: zr_antistick_set_width "
- }
-
- "AntiStick command list models list"
- {
- "en" "Player name: Model: Hull width:\n-------------------------------------------------------------------------------------------------------------"
- }
-
- "AntiStick command list models name"
- {
- "#format" "{1:-35s},{2:-51s},{3:-.2f}"
- "en" "{1} {2} {3}"
- }
-
- "AntiStick command set width successful"
- {
- "#format" "{1:s},{2:f}"
- "en" "Model hull width for model \"{1}\" has been changed to \"{2}.\""
- }
-
- "AntiStick command set width invalid model"
- {
- "#format" "{1:s}"
- "en" "Invalid model/player specified: \"{1}\""
- }
-
- "AntiStick command set width invalid width"
- {
- "#format" "{1:f}"
- "en" "Invalid model hull width specified: \"{1}\""
- }
-
- // ===========================
- // Spawn Protect (module)
- // ===========================
-
- // General
-
- "Spawn protection begin"
- {
- "#format" "{1:d}"
- "en" "Zombies are present, you have {1} seconds to find a safe place before you lose immunity."
- }
-
- "Spawn protection end"
- {
- "en" "You are now susceptible to zombie infection."
- }
-
- // HUD
-
- "Spawn Protect"
- {
- "#format" "{1:d}"
- "en" "Zombie protection ends in: {1} seconds."
- }
-
- // ===========================
- // ZCookies (module)
- // ===========================
-
- "ZCookies Menu main title"
- {
- "en" "ZCookies\nSelect a Cookie:"
- }
-
- "ZCookies menu main auto-rebuy"
- {
- "#format" "{1:s}"
- "en" "ZMarket Auto-Rebuy: {1}"
- }
-
- "ZCookies menu main zhp"
- {
- "#format" "{1:s}"
- "en" "ZHP Display: {1}"
- }
-
- "ZCookies menu main overlay"
- {
- "#format" "{1:s}"
- "en" "Human/Zombie Class Overlay: {1}"
- }
-
- "ZCookies zmarket loadout"
- {
- "en" "ZMarket Loadout"
- }
-
- // ===========================
- // ZSpawn (module)
- // ===========================
-
- // General
-
- "ZSpawn double spawn"
- {
- "en" "ZSpawn can only be used if you joined late during a round in progress."
- }
-
- "ZSpawn timelimit"
- {
- "#format" "{1:d}"
- "en" "The timelimit ({1} seconds), to use ZSpawn, has already expired."
- }
-
- // Menu
-
- "ZSpawn clients title"
- {
- "en" "Force ZSpawn (zr_zspawn_force)\nSelect a Player:"
- }
-
- // Commands
-
- "ZSpawn command force syntax"
- {
- "en" "Force ZSpawn on a client. Usage: zr_zspawn_force ['0' = Spawn as human | '1' = Spawn as zombie]"
-
- }
-
- "ZSpawn command force successful"
- {
- "#format" "{1:s}"
- "en" "Player {1} was successfully spawned."
- }
-
- "ZSpawn command force unsuccessful"
- {
- "#format" "{1:s}"
- "en" "Player {1} couldn't be spawned."
- }
-
- // ===========================
- // ZTele (module)
- // ===========================
-
- // General
-
- "ZTele restricted human"
- {
- "en" "ZTele is restricted for humans at this time."
- }
-
- "ZTele max"
- {
- "#format" "{1:d}"
- "en" "You have reached your max of {1} teleport(s) per round."
- }
-
- "ZTele in progress"
- {
- "en" "You are currently pending teleportation."
- }
-
- "ZTele autocancel text"
- {
- "#format" "{1:d}"
- "en" "Teleport has been cancelled. (Restrictive boundary is {1} ft.)"
- }
-
- // Center Text
-
- "ZTele countdown"
- {
- "#format" "{1:d}"
- "en" "Teleporting back to spawn in: {1} seconds."
- }
-
- "ZTele autocancel centertext"
- {
- "en" "Teleport has been cancelled."
- }
-
- "ZTele countdown end"
- {
- "#format" "{1:d},{2:d}"
- "en" "Teleported back to spawn. (Count: {1}/{2})"
- }
-
- // Menu
-
- "ZTele clients title"
- {
- "en" "Force ZTele (zr_ztele_force)\nSelect a Player:"
- }
-
- // Commands
-
- "ZTele command force syntax"
- {
- "en" "Force ZTele on a client. Usage: zr_ztele_force "
-
- }
-
- "ZTele command force successful"
- {
- "#format" "{1:s}"
- "en" "Player {1} was successfully teleported."
- }
-
- "ZTele command force unsuccessful"
- {
- "#format" "{1:s}"
- "en" "Player {1} couldn't be teleported."
- }
-
- // ===========================
- // ZHP (module)
- // ===========================
-
- // General
-
- "ZHP enable"
- {
- "en" "HP display enabled, your real HP will be displayed after infection."
- }
-
- "ZHP disable"
- {
- "en" "HP display disabled."
- }
-
- // HUD
-
- "Display HP"
- {
- "#format" "{1:d}"
- "en" "HP: {1}"
- }
-
- // ===========================
- // Volumetric features (module)
- // ===========================
-
- "Vol Anticamp Message"
- {
- "en" "This area is restricted, please move."
- }
-
- "Vol Slay"
- {
- "#format" "{1:s},{2:d}"
- "en" "Slayed player \"{1}\" for camping in a restricted area (ID: {2})."
- }
-
- "Vol Ignite"
- {
- "#format" "{1:s},{2:d}"
- "en" "Ignited player \"{1}\" for camping in a restricted area (ID: {2})."
- }
-}
+ïğż"Phrases"
+{
+ // ===========================
+ // General (base)
+ // ===========================
+
+ "General round objective"
+ {
+ "en" "The game is @greenHumans vs. Zombies@default, the goal for zombies is to infect all humans by knifing them."
+ }
+
+ "General zmenu reminder"
+ {
+ "#format" "{1:s},{2:s}"
+ "en" "For help on Zombie:Reloaded commands, type \"{1}{2}\" in chat."
+ }
+
+ // ===========================
+ // Generic (base)
+ // ===========================
+
+ // General
+
+ "Literal text"
+ {
+ "#format" "{1:s}"
+ "en" "{1}"
+ }
+ // Set string to "{1}" for all languages.
+
+ "Feature is disabled"
+ {
+ "en" "This feature is currently disabled by the server host."
+ }
+
+ "Not enough money"
+ {
+ "en" "You do not have enough money to buy this item."
+ }
+
+ "Must be player"
+ {
+ "en" "This feature is reserved for players only."
+ }
+
+ "Must be admin"
+ {
+ "en" "This feature is reserved for admins only."
+ }
+
+ "No access to command"
+ {
+ "en" "You do not have access to this command."
+ }
+
+ "Must be alive"
+ {
+ "en" "This feature requires that you are alive."
+ }
+
+ "Must be dead"
+ {
+ "en" "This feature requires that you are dead."
+ }
+
+ "Must be on team"
+ {
+ "en" "This feature requires that you are on a team."
+ }
+
+ "Must be zombie"
+ {
+ "en" "This feature requires that you are a zombie."
+ }
+
+ "Must be human"
+ {
+ "en" "This feature requires that you are a human."
+ }
+
+ "Increase by"
+ {
+ "#format" "{1:s}"
+ "en" "Increase by {1}"
+ }
+
+ "Decrease by"
+ {
+ "#format" "{1:s}"
+ "en" "Decrease by {1}"
+ }
+
+ "Current Value"
+ {
+ "en" "Current value:"
+ }
+
+ "Zombie"
+ {
+ "en" "Zombie"
+ }
+
+ "Human"
+ {
+ "en" "Human"
+ }
+
+ // Menu
+
+ "Menu empty"
+ {
+ "en" "(Empty)"
+ }
+
+ // ===========================
+ // Config (core)
+ // ===========================
+
+ // Commands
+
+ "Config command reload syntax"
+ {
+ "en" "Syntax: zr_reloadconfig [file alias2] ... - Reloads a config file."
+ }
+
+ "Config command reload related commands"
+ {
+ "en" "Related command(s): zr_config_reloadall"
+ }
+
+ "Config command reload syntax aliases"
+ {
+ "#format" "{1:s},{2:s},{3:s},{4:s},{5:s}"
+ "en" "File Aliases:\n* \"{1}\"\n* \"{2}\"\n* \"{3}\"\n* \"{4}\"\n* \"{5}\""
+ }
+
+ "Config command reload invalid"
+ {
+ "#format" "{1:s}"
+ "en" "Invalid file alias: \"{1}\""
+ }
+
+ "Config command reload not loaded"
+ {
+ "#format" "{1:s}"
+ "en" "Config file \"{1}\" failed to load. (Either disabled or invalid file content.)"
+ }
+
+ "Config command reload all stats begin"
+ {
+ "en" "Reloading all Zombie:Reloaded config files...\n------------------------------------------------"
+ }
+
+ "Config command reload all stats successful"
+ {
+ "#format" "{1:s}"
+ "en" "\"{1}\" - Successful."
+ }
+
+ "Config command reload all stats failed"
+ {
+ "#format" "{1:s}"
+ "en" "\"{1}\" - Failed. (Either disabled or invalid file content.)"
+ }
+
+ // ===========================
+ // Log (core)
+ // ===========================
+
+ "Log Generic Flag"
+ {
+ // Max length: 19 characters.
+ "en" "Generic Flag:"
+ }
+
+ "Log Value"
+ {
+ // Max length: 7 characters:
+ "en" "Value:"
+ }
+
+ "Log Module"
+ {
+ // Max length: 23 characters:
+ "en" "Module:"
+ }
+
+ "Log Status"
+ {
+ "en" "Filter Status:"
+ }
+
+ "Log Module Filtering"
+ {
+ "en" "Module Filtering:"
+ }
+
+ "Log Module Short Name"
+ {
+ "en" "Short Name:"
+ }
+
+ // ===========================
+ // Classes
+ // ===========================
+
+ // General
+
+ "Classes admin mode enabled"
+ {
+ "en" "Admin mode is enabled!"
+ }
+
+ "Classes random assignment"
+ {
+ "#format" "{1:s}"
+ "en" "You have randomly been assigned to the @green\"{1}\" @defaultclass."
+ }
+
+ // Center Text/HUD
+
+ "Classes overlay toggle"
+ {
+ "#format" "{1:s}"
+ "en" "Class overlay toggle commands: {1}"
+ }
+
+ // Menu
+
+ "Classes menu title"
+ {
+ "en" "Class Selection:"
+ }
+
+ "Classes menu active"
+ {
+ "#format" "{1:s}"
+ "en" "Active: {1}"
+ }
+
+ "Classes menu next"
+ {
+ "#format" "{1:s}"
+ "en" "Next spawn: {1}"
+ }
+
+ "Classes menu select zombie"
+ {
+ "en" "Select Zombie Class"
+ }
+
+ "Classes menu select human"
+ {
+ "en" "Select Human Class"
+ }
+
+ "Classes menu select admin"
+ {
+ "en" "Select Admin Mode Class"
+ }
+
+ "Classes menu admin mode toggle"
+ {
+ "en" "Toggle Admin Mode"
+ }
+
+ "Classes Menu Team Select Title"
+ {
+ "en" "Select Team:"
+ }
+
+ "Classes Menu Zombies"
+ {
+ "en" "Zombies"
+ }
+
+ "Classes Menu Humans"
+ {
+ "en" "Humans"
+ }
+
+ "Classes Menu Multiplier Select Title"
+ {
+ "en" "Select Multiplier:"
+ }
+
+ "Classes Menu Adjust Value"
+ {
+ "en" "Adjust Value:"
+ }
+
+ // Attributes
+
+ "Classes Attrib Napalm Time"
+ {
+ "en" "Napalm Time"
+ }
+
+ "Classes Attrib Health"
+ {
+ "en" "Health"
+ }
+
+ "Classes Attrib Regen Interval"
+ {
+ "en" "Health Regeneration Interval"
+ }
+
+ "Classes Attrib Regen Amount"
+ {
+ "en" "Health Regeneration Amount"
+ }
+
+ "Classes Attrib Infect Gain"
+ {
+ "en" "Infection Health Gain"
+ }
+
+ "Classes Attrib Speed"
+ {
+ "en" "Running Speed"
+ }
+
+ "Classes Attrib Knockback"
+ {
+ "en" "Knock Back"
+ }
+
+ "Classes Attrib Jump Height"
+ {
+ "en" "Jump Height"
+ }
+
+ "Classes Attrib Jump Distance"
+ {
+ "en" "Jump Distance"
+ }
+
+ "Classes Selection Not Allowed"
+ {
+ "en" "Changing classes is not allowed."
+ }
+
+ // ===========================
+ // Immunity
+ // ===========================
+
+ "Immunity Shield Not Available"
+ {
+ "en" "You don't have a shield."
+ }
+
+ "Immunity Shield Cooldown"
+ {
+ "#format" "{1:d}"
+ "en" "{1} seconds until shield is available."
+ }
+
+ "Immunity Shield Time Left"
+ {
+ "#format" "{1:d}"
+ "en" "Shield time left: {1}"
+ }
+
+ // ===========================
+ // Overlays (core)
+ // ===========================
+
+ "Overlays not supported"
+ {
+ "#format" "{1:d},{2:d}"
+ "en" "Blocking Overlay - DX{1} Detected (DX{2} Required)"
+ }
+
+ // ===========================
+ // Infect (core)
+ // ===========================
+
+ // General
+
+ "Infect infected"
+ {
+ "en" "You have been infected! Go pass it on to as many other players as you can."
+ }
+
+ "Infect human"
+ {
+ "en" "The merciful gods (known as admins) have resurrected your soul, find some cover!"
+ }
+
+ "Infect disconnect"
+ {
+ "en" "The last zombie has left the game, and has passed the infection on to you."
+ }
+
+ // Center Text
+
+ "Infect countdown"
+ {
+ "#format" "{1:d}"
+ "en" "First infection in {1} seconds."
+ }
+
+ // Menu
+
+ "Infect menu clients title"
+ {
+ "en" "Zombie Management\nToggle Infection:\n[] = Infected"
+ }
+
+ // Commands
+
+ "Infect command infect syntax"
+ {
+ "en" "Infect a client. Usage: zr_infect [respawn - 1/0]"
+ }
+
+ "Infect command human syntax"
+ {
+ "en" "Turn a client into a human. Usage: zr_human [respawn - 1/0] [protect - 1/0]"
+ }
+
+ "Infect command infect successful"
+ {
+ "#format" "{1:s}"
+ "en" "Player @green{1} @defaulthas been successfully infected."
+ }
+
+ "Infect command infect mother successful"
+ {
+ "#format" "{1:s}"
+ "en" "Player @green{1} @defaulthas been successfully infected as the mother zombie."
+ }
+
+ "Infect command infect unsuccessful"
+ {
+ "#format" "{1:s}"
+ "en" "Player @green{1} @defaultis already a zombie."
+ }
+
+ "Infect command human successful"
+ {
+ "#format" "{1:s}"
+ "en" "Player @green{1} @defaulthas been successfully brought back as a human."
+ }
+
+ "Infect command human unsuccessful"
+ {
+ "#format" "{1:s}"
+ "en" "Player @green{1} @defaultis already a human."
+ }
+
+ // ===========================
+ // Damage (core)
+ // ===========================
+
+ "Damage suicide intercept"
+ {
+ "en" "Suicide attempt intercepted."
+ }
+
+ // ===========================
+ // Menu (core)
+ // ===========================
+
+ // General
+
+ "Menu main title"
+ {
+ "#format" "{1:s},{2:s}"
+ "en" "ZR Commands:\nPrefix command with \"{1}\" or \"{2}\" (quiet) when typing in chat."
+ }
+
+ "Menu main zadmin"
+ {
+ "en" "ZAdmin - Open admin menu"
+ }
+
+ "Menu main zclass"
+ {
+ "en" "ZClass - Configure class settings"
+ }
+
+ "Menu main zcookies"
+ {
+ "en" "ZCookies - Toggle personal ZR settings here"
+ }
+
+ "Menu main zspawn"
+ {
+ "en" "ZSpawn - Join late? Spawn with this"
+ }
+
+ "Menu main ztele"
+ {
+ "en" "ZTele - Stuck? Teleport back to spawn"
+ }
+
+ "Menu main zhp"
+ {
+ "en" "ZHP - Shows real HP as zombie"
+ }
+
+ "Menu main zmarket"
+ {
+ "en" "ZMarket - Customize loadouts here"
+ }
+
+ // ===========================
+ // Weapons (core)
+ // ===========================
+
+ // General
+
+ "Zombie cant use weapon"
+ {
+ "en" "Zombies can't use weapons!"
+ }
+
+ // Restrict
+
+ "Restrict weapon"
+ {
+ "#format" "{1:s}"
+ "en" "Weapon @green\"{1}\" @defaulthas been restricted."
+ }
+
+ "Unrestrict weapon"
+ {
+ "#format" "{1:s}"
+ "en" "Weapon @green\"{1}\" @defaulthas been unrestricted."
+ }
+
+ "Restrict weapon stopped"
+ {
+ "#format" "{1:s}"
+ "en" "Weapon @green\"{1}\" @defaultis already restricted."
+ }
+
+ "Unrestrict weapon stopped"
+ {
+ "#format" "{1:s}"
+ "en" "Weapon @green\"{1}\" @default has no restrictions set."
+ }
+
+ "Restrict weapon type"
+ {
+ "#format" "{1:s}"
+ "en" "Weapons of type @green\"{1}\" @defaulthave been restricted."
+ }
+
+ "Unrestrict weapon type"
+ {
+ "#format" "{1:s}"
+ "en" "Weapons of type @green\"{1}\" @defaulthave been unrestricted."
+ }
+
+ "Restrict weapon type stopped"
+ {
+ "#format" "{1:s}"
+ "en" "Weapons of type @green\"{1}\" @defaultare all already restricted."
+ }
+
+ "Unrestrict weapon type stopped"
+ {
+ "#format" "{1:s}"
+ "en" "Weapons of type @green\"{1}\" @defaulthave no restrictions set."
+ }
+
+ "Restrict weapon untoggleable"
+ {
+ "#format" "{1:s}"
+ "en" "Weapon @green\"{1}\" @defaultmay not have its restrictions toggled."
+ }
+
+ "Weapon invalid"
+ {
+ "#format" "{1:s}"
+ "en" "Weapon @green\"{1}\" @defaultis an invalid weapon (type) name."
+ }
+
+ "Weapon is restricted"
+ {
+ "#format" "{1:s}"
+ "en" "Weapon @green{1} @defaultis restricted."
+ }
+
+ // ZMarket
+
+ "Weapons zmarket buyzone"
+ {
+ "en" "You must be in a buyzone to use ZMarket."
+ }
+
+ "Weapons zmarket purchase"
+ {
+ "#format" "{1:s}"
+ "en" "You have purchased weapon @green{1}. @defaultSelect item again to buy ammo if you are low."
+ }
+
+ "Weapons zmarket purchase max"
+ {
+ "#format" "{1:s},{2:d}"
+ "en" "Weapon @green{1} @defaulthas a purchase limit of @green{2}@default. Wait until you respawn to try again."
+ }
+
+ "Weapons zmarket grenade max"
+ {
+ "#format" "{1:d}"
+ "en" "You may only carry {1} grenade(s) of this type."
+ }
+
+ "Weapons zmarket auto-rebuy toggle on"
+ {
+ "en" "Auto-rebuy has been enabled, your loadout will be automatically purchased for you each time you spawn."
+ }
+
+ "Weapons zmarket auto-rebuy toggle off"
+ {
+ "en" "Auto-rebuy has been disabled."
+ }
+
+ "Weapons zmarket updated loadout"
+ {
+ "en" "You are not able to purchase a weapon at this time, but your loadout has been updated with this weapon."
+ }
+
+ "Weapons zmarket get current loadout"
+ {
+ "en" "Updated current loadout, use rebuy option to purchase these weapons again."
+ }
+
+ // Commands
+
+ "Weapons command restrict syntax"
+ {
+ "en" "Restricts a weapon or a weapon type. Usage: zr_restrict [weapon2|weapontype2] ..."
+ }
+
+ "Weapons command unrestrict syntax"
+ {
+ "en" "Unrestricts a weapon or a weapon type. Usage: zr_unrestrict [weapon2|weapontype2] ..."
+ }
+
+ // Menu (Restrict)
+
+ "Weapons menu restrict main title"
+ {
+ "en" "Weapons Management"
+ }
+
+ "Weapons menu restrict main restrict"
+ {
+ "en" "Weapon Restrictions"
+ }
+
+ "Weapons menu restrict main market"
+ {
+ "en" "ZMarket"
+ }
+
+ "Weapons menu restrict types title"
+ {
+ "en" "Weapon Restrictions\nSelect Weapon Type:"
+ }
+
+ "Weapons menu restrict types weapon type title"
+ {
+ "#format" "{1:s}"
+ "en" "Weapon Restrictions\nWeapon Type: {1}\n[] = Restricted"
+ }
+
+ "Weapons menu restrict types restrict all"
+ {
+ "#format" "{1:s}"
+ "en" "Restrict weapon type {1}"
+ }
+
+ "Weapons menu restrict types unrestrict all"
+ {
+ "#format" "{1:s}"
+ "en" "Unrestrict weapon type {1}"
+ }
+
+ "Weapons menu restrict zmarket title"
+ {
+ "en" "ZMarket\nSelect Setting:"
+ }
+
+ "Weapons menu restrict zmarket buyzone"
+ {
+ "#format" "{1:s}"
+ "en" "Buyzone Only - {1}"
+ }
+
+ // Menu (ZMarket)
+
+ "Weapons menu zmarket main title"
+ {
+ "en" "ZMarket\nSelect an Option:"
+ }
+
+ "Weapons menu zmarket main get loadout"
+ {
+ "en" "Save Current Setup"
+ }
+
+ "Weapons menu zmarket main view loadout"
+ {
+ "en" "View Saved Setup"
+ }
+
+ "Weapons menu zmarket main rebuy"
+ {
+ "en" "Buy Saved Setup"
+ }
+
+ "Weapons menu zmarket main auto-rebuy"
+ {
+ "#format" "{1:s}"
+ "en" "Auto-Rebuy: {1}"
+ }
+
+ "Weapons menu zmarket main weapons list"
+ {
+ "en" "Buy Weapons"
+ }
+
+ "Weapons menu zmarket loadout title"
+ {
+ "en" "ZMarket\nMy Current Setup:\nSelect weapon slot to clear.\nNote: Rebuy refers to these weapons."
+ }
+
+ "Weapons menu zmarket loadout primary"
+ {
+ "#format" "{1:s}"
+ "en" "Primary: {1}"
+ }
+
+ "Weapons menu zmarket loadout secondary"
+ {
+ "#format" "{1:s}"
+ "en" "Secondary: {1}"
+ }
+
+ "Weapons menu zmarket loadout melee"
+ {
+ "#format" "{1:s}"
+ "en" "Melee: {1}"
+ }
+
+ "Weapons menu zmarket loadout projectile"
+ {
+ "#format" "{1:s}"
+ "en" "Projectile: {1}"
+ }
+
+ "Weapons menu zmarket loadout explosive"
+ {
+ "#format" "{1:s}"
+ "en" "Explosive: {1}"
+ }
+
+ "Weapons menu zmarket loadout nvgs"
+ {
+ "#format" "{1:s}"
+ "en" "NVGs: {1}"
+ }
+
+ "Weapons menu zmarket loadout empty"
+ {
+ "en" "(None)"
+ }
+
+ "Weapons menu zmarket types title"
+ {
+ "en" "ZMarket\nSelect Weapon Type:"
+ }
+
+ "Weapons menu zmarket types weapon type title"
+ {
+ "#format" "{1:s}"
+ "en" "ZMarket\nWeapon Type: {1}\n[] = Restricted"
+ }
+
+ "Weapons menu zmarket types weapon info"
+ {
+ "#format" "{1:s},{2:d},{3:d}"
+ "en" "{1} (${2})\nPurchases Left: {3}"
+ }
+
+ "Weapons menu zmarket types weapon ammo"
+ {
+ "en" "Ammo"
+ }
+
+ // ===========================
+ // Hitgroups (core)
+ // ===========================
+
+ // Menu
+
+ "Hitgroups menu hitgroups title"
+ {
+ "en" "Hitgroup Management\nCommands: zr_hitgroup(_enable_all/_headshots_only)\nSelect a Hitgroup to Toggle:"
+ }
+
+ "Hitgroups menu hitgroups enable all"
+ {
+ "en" "Enable All Hitgroups"
+ }
+
+ "Hitgroups menu hitgroups headshots only"
+ {
+ "en" "Headshots Only"
+ }
+
+ // Commands
+
+ "Hitgroups command syntax"
+ {
+ "en" "Toggles or sets if a zombie's hitgroup can be damaged. Usage: zr_hitgroup [1/0]"
+ }
+
+ "Hitgroups command related commands"
+ {
+ "en" "Related command(s): zr_hitgroup_enable_all, zr_hitgroup_headshots_only"
+ }
+
+ "Hitgroups command syntax names"
+ {
+ "en" "Hitgroup Names:"
+ }
+
+ "Hitgroups command successful on"
+ {
+ "#format" "{1:s}"
+ "en" "Damage for hitgroup \"{1}\" has been toggled on."
+ }
+
+ "Hitgroups command successful off"
+ {
+ "#format" "{1:s}"
+ "en" "Damage for hitgroup \"{1}\" has been toggled off."
+ }
+
+ "Hitgroups command invalid hitgroup"
+ {
+ "#format" "{1:s}"
+ "en" "\"{1}\" is not a valid hitgroup alias. Type zr_hitgroup to view all aliases."
+ }
+
+ "Hitgroups command enable all successful"
+ {
+ "en" "All zombie hitgroups have been enabled for damage."
+ }
+
+ "Hitgroups command headshots only successful"
+ {
+ "en" "Zombies may now only be damaged by headshots."
+ }
+
+ // ===========================
+ // ZAdmin (core)
+ // ===========================
+
+ "ZAdmin main title"
+ {
+ "en" "ZAdmin\nSelect Category:"
+ }
+
+ "ZAdmin main class multipliers"
+ {
+ "en" "Class Multipliers"
+ }
+
+ "ZAdmin main weapons"
+ {
+ "en" "Weapon Management"
+ }
+
+ "ZAdmin main hitgroups"
+ {
+ "en" "Hitgroup Management"
+ }
+
+ "ZAdmin main zombie"
+ {
+ "en" "Zombie Management"
+ }
+
+ "ZAdmin main force zspawn"
+ {
+ "en" "Force ZSpawn"
+ }
+
+ "ZAdmin main force ztele"
+ {
+ "en" "Force ZTele"
+ }
+
+ // ===========================
+ // AntiStick (module)
+ // ===========================
+
+ // Commands
+
+ "AntiStick command set width syntax"
+ {
+ "en" "Sets the width of a model's hull. (See zr_antistick_list_models) Usage: zr_antistick_set_width "
+ }
+
+ "AntiStick command list models list"
+ {
+ "en" "Player name: Model: Hull width:\n-------------------------------------------------------------------------------------------------------------"
+ }
+
+ "AntiStick command list models name"
+ {
+ "#format" "{1:-35s},{2:-51s},{3:-.2f}"
+ "en" "{1} {2} {3}"
+ }
+
+ "AntiStick command set width successful"
+ {
+ "#format" "{1:s},{2:f}"
+ "en" "Model hull width for model \"{1}\" has been changed to \"{2}.\""
+ }
+
+ "AntiStick command set width invalid model"
+ {
+ "#format" "{1:s}"
+ "en" "Invalid model/player specified: \"{1}\""
+ }
+
+ "AntiStick command set width invalid width"
+ {
+ "#format" "{1:f}"
+ "en" "Invalid model hull width specified: \"{1}\""
+ }
+
+ // ===========================
+ // Spawn Protect (module)
+ // ===========================
+
+ // General
+
+ "Spawn protection begin"
+ {
+ "#format" "{1:d}"
+ "en" "Zombies are present, you have {1} seconds to find a safe place before you lose immunity."
+ }
+
+ "Spawn protection end"
+ {
+ "en" "You are now susceptible to zombie infection."
+ }
+
+ // HUD
+
+ "Spawn Protect"
+ {
+ "#format" "{1:d}"
+ "en" "Zombie protection ends in: {1} seconds."
+ }
+
+ // ===========================
+ // ZCookies (module)
+ // ===========================
+
+ "ZCookies Menu main title"
+ {
+ "en" "ZCookies\nSelect a Cookie:"
+ }
+
+ "ZCookies menu main auto-rebuy"
+ {
+ "#format" "{1:s}"
+ "en" "ZMarket Auto-Rebuy: {1}"
+ }
+
+ "ZCookies menu main zhp"
+ {
+ "#format" "{1:s}"
+ "en" "ZHP Display: {1}"
+ }
+
+ "ZCookies menu main overlay"
+ {
+ "#format" "{1:s}"
+ "en" "Human/Zombie Class Overlay: {1}"
+ }
+
+ "ZCookies zmarket loadout"
+ {
+ "en" "ZMarket Loadout"
+ }
+
+ // ===========================
+ // ZSpawn (module)
+ // ===========================
+
+ // General
+
+ "ZSpawn double spawn"
+ {
+ "en" "ZSpawn can only be used if you joined late during a round in progress."
+ }
+
+ "ZSpawn timelimit"
+ {
+ "#format" "{1:d}"
+ "en" "The timelimit ({1} seconds), to use ZSpawn, has already expired."
+ }
+
+ // Menu
+
+ "ZSpawn clients title"
+ {
+ "en" "Force ZSpawn (zr_zspawn_force)\nSelect a Player:"
+ }
+
+ // Commands
+
+ "ZSpawn command force syntax"
+ {
+ "en" "Force ZSpawn on a client. Usage: zr_zspawn_force ['0' = Spawn as human | '1' = Spawn as zombie]"
+
+ }
+
+ "ZSpawn command force successful"
+ {
+ "#format" "{1:s}"
+ "en" "Player {1} was successfully spawned."
+ }
+
+ "ZSpawn command force unsuccessful"
+ {
+ "#format" "{1:s}"
+ "en" "Player {1} couldn't be spawned."
+ }
+
+ // ===========================
+ // ZTele (module)
+ // ===========================
+
+ // General
+
+ "ZTele restricted human"
+ {
+ "en" "ZTele is restricted for humans at this time."
+ }
+
+ "ZTele max"
+ {
+ "#format" "{1:d}"
+ "en" "You have reached your max of {1} teleport(s) per round."
+ }
+
+ "ZTele in progress"
+ {
+ "en" "You are currently pending teleportation."
+ }
+
+ "ZTele autocancel text"
+ {
+ "#format" "{1:d}"
+ "en" "Teleport has been cancelled. (Restrictive boundary is {1} ft.)"
+ }
+
+ // Center Text
+
+ "ZTele countdown"
+ {
+ "#format" "{1:d}"
+ "en" "Teleporting back to spawn in: {1} seconds."
+ }
+
+ "ZTele autocancel centertext"
+ {
+ "en" "Teleport has been cancelled."
+ }
+
+ "ZTele countdown end"
+ {
+ "#format" "{1:d},{2:d}"
+ "en" "Teleported back to spawn. (Count: {1}/{2})"
+ }
+
+ // Menu
+
+ "ZTele clients title"
+ {
+ "en" "Force ZTele (zr_ztele_force)\nSelect a Player:"
+ }
+
+ // Commands
+
+ "ZTele command force syntax"
+ {
+ "en" "Force ZTele on a client. Usage: zr_ztele_force "
+
+ }
+
+ "ZTele command force successful"
+ {
+ "#format" "{1:s}"
+ "en" "Player {1} was successfully teleported."
+ }
+
+ "ZTele command force unsuccessful"
+ {
+ "#format" "{1:s}"
+ "en" "Player {1} couldn't be teleported."
+ }
+
+ // ===========================
+ // ZHP (module)
+ // ===========================
+
+ // General
+
+ "ZHP enable"
+ {
+ "en" "HP display enabled, your real HP will be displayed after infection."
+ }
+
+ "ZHP disable"
+ {
+ "en" "HP display disabled."
+ }
+
+ // HUD
+
+ "Display HP"
+ {
+ "#format" "{1:d}"
+ "en" "HP: {1}"
+ }
+
+ // ===========================
+ // Volumetric features (module)
+ // ===========================
+
+ "Vol Anticamp Message"
+ {
+ "en" "This area is restricted, please move."
+ }
+
+ "Vol Slay"
+ {
+ "#format" "{1:s},{2:d}"
+ "en" "Slayed player \"{1}\" for camping in a restricted area (ID: {2})."
+ }
+
+ "Vol Ignite"
+ {
+ "#format" "{1:s},{2:d}"
+ "en" "Ignited player \"{1}\" for camping in a restricted area (ID: {2})."
+ }
+}
diff --git a/cstrike/cfg/sourcemod/zombiereloaded/classic.cfg b/cstrike/cfg/sourcemod/zombiereloaded/classic.cfg
index 46f75ce..4344b5e 100644
--- a/cstrike/cfg/sourcemod/zombiereloaded/classic.cfg
+++ b/cstrike/cfg/sourcemod/zombiereloaded/classic.cfg
@@ -1,5 +1,5 @@
-// Dummy config that's not doing anything so classic settings will be kept. It's
-// still possible to add stuff here for configuring classic mode if something
-// differ from the default configuration.
-
-// Used by randommode.cfg.
+// Dummy config that's not doing anything so classic settings will be kept. It's
+// still possible to add stuff here for configuring classic mode if something
+// differ from the default configuration.
+
+// Used by randommode.cfg.
diff --git a/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/cs_italy.cfg b/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/cs_italy.cfg
index d0e385c..4883e95 100644
--- a/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/cs_italy.cfg
+++ b/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/cs_italy.cfg
@@ -1,4 +1,4 @@
-// Place this in cfg/sourcemod/zombiereloaded to use it.
-
-// Enable a random mode in cs_italy.
-exec sourcemod/zombiereloaded/randommode.cfg
+// Place this in cfg/sourcemod/zombiereloaded to use it.
+
+// Enable a random mode in cs_italy.
+exec sourcemod/zombiereloaded/randommode.cfg
diff --git a/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/de_dust.cfg b/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/de_dust.cfg
index b493c71..e19db31 100644
--- a/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/de_dust.cfg
+++ b/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/de_dust.cfg
@@ -1,4 +1,4 @@
-// Place this in cfg/sourcemod/zombiereloaded to use it.
-
-// Use swarm mode in de_dust.
-exec sourcemod/zombiereloaded/swarm.cfg
+// Place this in cfg/sourcemod/zombiereloaded to use it.
+
+// Use swarm mode in de_dust.
+exec sourcemod/zombiereloaded/swarm.cfg
diff --git a/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/de_dust.post.cfg b/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/de_dust.post.cfg
index 3b2379e..ac5ec26 100644
--- a/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/de_dust.post.cfg
+++ b/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/de_dust.post.cfg
@@ -1,5 +1,5 @@
-// Place this in cfg/sourcemod/zombiereloaded to use it.
-
-// Use swarm mode in de_dust. Swarm mode also has a post map config that must
-// be executed.
-exec sourcemod/zombiereloaded/swarm.post.cfg
+// Place this in cfg/sourcemod/zombiereloaded to use it.
+
+// Use swarm mode in de_dust. Swarm mode also has a post map config that must
+// be executed.
+exec sourcemod/zombiereloaded/swarm.post.cfg
diff --git a/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/de_dust2.cfg b/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/de_dust2.cfg
index 61b832a..6f44b3e 100644
--- a/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/de_dust2.cfg
+++ b/cstrike/cfg/sourcemod/zombiereloaded/gamemode-examples/de_dust2.cfg
@@ -1,4 +1,4 @@
-// Place this in cfg/sourcemod/zombiereloaded to use it.
-
-// Use nemesis mode in de_dust2.
-exec sourcemod/zombiereloaded/nemesis.cfg
+// Place this in cfg/sourcemod/zombiereloaded to use it.
+
+// Use nemesis mode in de_dust2.
+exec sourcemod/zombiereloaded/nemesis.cfg
diff --git a/cstrike/cfg/sourcemod/zombiereloaded/nemesis.cfg b/cstrike/cfg/sourcemod/zombiereloaded/nemesis.cfg
index 1ca20de..a23b998 100644
--- a/cstrike/cfg/sourcemod/zombiereloaded/nemesis.cfg
+++ b/cstrike/cfg/sourcemod/zombiereloaded/nemesis.cfg
@@ -1,25 +1,25 @@
-// Configures ZR in nemesis mode. Everyone but a small group of humans are
-// infected. Execute this config from a pre map config file.
-
-// Using a custom class set with the nemesis class. All human classes are
-// instantly killed when attacked by the zombie.
-zr_config_path_playerclasses "configs/zr/playerclasses-nemesis.txt"
-
-// Set default zombie to the nemesis class.
-zr_classes_default_zombie "Nemesis"
-
-// Use absolute infection mode.
-zr_infect_mzombie_mode absolute
-
-// One mother zombie.
-zr_infect_mzombie_ratio 1
-
-// Zombies must be teleported to spawn on mother zombie infect, or the humans
-// will be doomed.
-zr_infect_mzombie_respawn 1
-
-// Disable respawning of dead players.
-zr_respawn 0
-
-// Disable zspawn command.
-zr_zspawn 0
+// Configures ZR in nemesis mode. Everyone but a small group of humans are
+// infected. Execute this config from a pre map config file.
+
+// Using a custom class set with the nemesis class. All human classes are
+// instantly killed when attacked by the zombie.
+zr_config_path_playerclasses "configs/zr/playerclasses-nemesis.txt"
+
+// Set default zombie to the nemesis class.
+zr_classes_default_zombie "Nemesis"
+
+// Use absolute infection mode.
+zr_infect_mzombie_mode absolute
+
+// One mother zombie.
+zr_infect_mzombie_ratio 1
+
+// Zombies must be teleported to spawn on mother zombie infect, or the humans
+// will be doomed.
+zr_infect_mzombie_respawn 1
+
+// Disable respawning of dead players.
+zr_respawn 0
+
+// Disable zspawn command.
+zr_zspawn 0
diff --git a/cstrike/cfg/sourcemod/zombiereloaded/randommode.cfg b/cstrike/cfg/sourcemod/zombiereloaded/randommode.cfg
index 50bdee0..adf5154 100644
--- a/cstrike/cfg/sourcemod/zombiereloaded/randommode.cfg
+++ b/cstrike/cfg/sourcemod/zombiereloaded/randommode.cfg
@@ -1,7 +1,7 @@
-cfglist_create zr_modes
-cfglist_add zr_modes sourcemod/zombiereloaded/classic.cfg
-cfglist_add zr_modes sourcemod/zombiereloaded/nemesis.cfg
-cfglist_add zr_modes sourcemod/zombiereloaded/survivor.cfg
-cfglist_add zr_modes sourcemod/zombiereloaded/swarm.cfg
-cfglist_exec_random zr_modes
-cfglist_delete zr_modes
+cfglist_create zr_modes
+cfglist_add zr_modes sourcemod/zombiereloaded/classic.cfg
+cfglist_add zr_modes sourcemod/zombiereloaded/nemesis.cfg
+cfglist_add zr_modes sourcemod/zombiereloaded/survivor.cfg
+cfglist_add zr_modes sourcemod/zombiereloaded/swarm.cfg
+cfglist_exec_random zr_modes
+cfglist_delete zr_modes
diff --git a/cstrike/cfg/sourcemod/zombiereloaded/survivor.cfg b/cstrike/cfg/sourcemod/zombiereloaded/survivor.cfg
index 7e78c9a..0b7827e 100644
--- a/cstrike/cfg/sourcemod/zombiereloaded/survivor.cfg
+++ b/cstrike/cfg/sourcemod/zombiereloaded/survivor.cfg
@@ -1,25 +1,25 @@
-// Configures ZR in survivor mode. Everyone but a small group of humans are
-// infected. Execute this config from a pre map config file.
-
-// Optional. Change to a different set of classes and models here if you want to
-// use different classes. For instance:
-// zr_config_path_playerclasses "configs/zr/playerclasses-survivor.txt"
-// zr_config_path_models "configs/zr/models-survivor.txt"
-
-// Use absolute infection mode.
-zr_infect_mzombie_mode absolute
-
-// Number of humans. Must be negative in this mode. For instance, -5 will give
-// four remaining humans after mother zombie infection, the rest will be zombies.
-zr_infect_mzombie_ratio -5
-
-// Zombies must be teleported to spawn on mother zombie infect, or the humans
-// will be doomed.
-zr_infect_mzombie_respawn 1
-
-// Respawn in zombie team.
-zr_respawn 1
-zr_respawn_team_zombie 1
-
-// Prevent zombies suiciding to get on human team.
-zr_respawn_team_zombie_world 1
+// Configures ZR in survivor mode. Everyone but a small group of humans are
+// infected. Execute this config from a pre map config file.
+
+// Optional. Change to a different set of classes and models here if you want to
+// use different classes. For instance:
+// zr_config_path_playerclasses "configs/zr/playerclasses-survivor.txt"
+// zr_config_path_models "configs/zr/models-survivor.txt"
+
+// Use absolute infection mode.
+zr_infect_mzombie_mode absolute
+
+// Number of humans. Must be negative in this mode. For instance, -5 will give
+// four remaining humans after mother zombie infection, the rest will be zombies.
+zr_infect_mzombie_ratio -5
+
+// Zombies must be teleported to spawn on mother zombie infect, or the humans
+// will be doomed.
+zr_infect_mzombie_respawn 1
+
+// Respawn in zombie team.
+zr_respawn 1
+zr_respawn_team_zombie 1
+
+// Prevent zombies suiciding to get on human team.
+zr_respawn_team_zombie_world 1
diff --git a/cstrike/cfg/sourcemod/zombiereloaded/swarm.cfg b/cstrike/cfg/sourcemod/zombiereloaded/swarm.cfg
index 421f744..4f77624 100644
--- a/cstrike/cfg/sourcemod/zombiereloaded/swarm.cfg
+++ b/cstrike/cfg/sourcemod/zombiereloaded/swarm.cfg
@@ -1,31 +1,31 @@
-// Configures ZR in swarm mode. A large group of humans are infected, while the
-// rest fight to the death (immune from infection).
-
-// Execute this config from a pre map config file. Remember to also execute
-// swarm.post.cfg from a post map config file.
-
-// Optional. Change to a different set of classes and models here if you want to
-// use different classes. Remember to use immunity mode "infect" and amount "0"
-// on all human classes.
-// zr_config_path_playerclasses "configs/zr/playerclasses-swarm.txt"
-// zr_config_path_models "configs/zr/models-swarm.txt"
-
-// Use dynamic infection mode.
-zr_infect_mzombie_mode dynamic
-
-// Infection ratio. Infect every second player (50%). Use a higher number to get
-// fewer zombies.
-zr_infect_mzombie_ratio 2
-
-// Teleport zombies to spawn on mother zombie infection.
-zr_infect_mzombie_respawn 1
-
-// Disable respawning.
-zr_respawn 0
-zr_zspawn 0
-
-// Use the ConfigList plugin to post execute swarm.post.cfg. ZR will detect this
-// plugin and execute the "zr_post_exec" list if it exists.
-cfglist_delete zr_post_exec
-cfglist_create zr_post_exec
-cfglist_add zr_post_exec sourcemod/zombiereloaded/swarm.post.cfg
+// Configures ZR in swarm mode. A large group of humans are infected, while the
+// rest fight to the death (immune from infection).
+
+// Execute this config from a pre map config file. Remember to also execute
+// swarm.post.cfg from a post map config file.
+
+// Optional. Change to a different set of classes and models here if you want to
+// use different classes. Remember to use immunity mode "infect" and amount "0"
+// on all human classes.
+// zr_config_path_playerclasses "configs/zr/playerclasses-swarm.txt"
+// zr_config_path_models "configs/zr/models-swarm.txt"
+
+// Use dynamic infection mode.
+zr_infect_mzombie_mode dynamic
+
+// Infection ratio. Infect every second player (50%). Use a higher number to get
+// fewer zombies.
+zr_infect_mzombie_ratio 2
+
+// Teleport zombies to spawn on mother zombie infection.
+zr_infect_mzombie_respawn 1
+
+// Disable respawning.
+zr_respawn 0
+zr_zspawn 0
+
+// Use the ConfigList plugin to post execute swarm.post.cfg. ZR will detect this
+// plugin and execute the "zr_post_exec" list if it exists.
+cfglist_delete zr_post_exec
+cfglist_create zr_post_exec
+cfglist_add zr_post_exec sourcemod/zombiereloaded/swarm.post.cfg
diff --git a/cstrike/cfg/sourcemod/zombiereloaded/swarm.post.cfg b/cstrike/cfg/sourcemod/zombiereloaded/swarm.post.cfg
index 74b4532..2628cd5 100644
--- a/cstrike/cfg/sourcemod/zombiereloaded/swarm.post.cfg
+++ b/cstrike/cfg/sourcemod/zombiereloaded/swarm.post.cfg
@@ -1,6 +1,6 @@
-// Configures ZR in swarm mode. Execute this file from a _post_ map config file.
-
-// Make all human classes immune to infection (stab to death). These changes
-// will be reset when reloading or changing the map.
-zr_class_modify humans immunity_mode infect
-zr_class_modify humans immunity_amount 0
+// Configures ZR in swarm mode. Execute this file from a _post_ map config file.
+
+// Make all human classes immune to infection (stab to death). These changes
+// will be reset when reloading or changing the map.
+zr_class_modify humans immunity_mode infect
+zr_class_modify humans immunity_amount 0
diff --git a/cstrike/cfg/sourcemod/zombiereloaded/zombiereloaded.cfg b/cstrike/cfg/sourcemod/zombiereloaded/zombiereloaded.cfg
index 5f403af..3dfec82 100644
--- a/cstrike/cfg/sourcemod/zombiereloaded/zombiereloaded.cfg
+++ b/cstrike/cfg/sourcemod/zombiereloaded/zombiereloaded.cfg
@@ -1,771 +1,771 @@
-// ============================================================================
-//
-// ZOMBIE:RELOADED
-// Plugin configuration
-//
-// Check the plugin configuration section in the manual for detailed info.
-//
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// Zombie-Related Server Variables
-// ----------------------------------------------------------------------------
-
-// The max speed of any player in the server (250 is normal speed). This is just a speed limit, and not the real players' speed.
-// Default: "500"
-sv_maxspeed 500
-
-// Amount of time, in minutes, zombies have to infect all humans.
-// Default: "5"
-mp_roundtime 5
-
-// Allows players to move items with their 'use' key.
-// Default: "1"
-sv_turbophysics 1
-
-// Multiplier for how easy props are moved ['1' = No push]
-// Default: "3"
-phys_pushscale 3
-
-
-// ----------------------------------------------------------------------------
-// Ammo Reserve Settings
-// ----------------------------------------------------------------------------
-
-ammo_50AE_max 800 // deagle
-ammo_762mm_max 800 // scout, ak47, g3sg1, aug
-ammo_556mm_box_max 800 // m249
-ammo_556mm_max 800 // galil, sg552, famas, m4a1, sg550
-ammo_338mag_max 200 // awp
-ammo_9mm_max 800 // mp5navy, tmp, glock, elite
-ammo_buckshot_max 800 // m3, xm1014
-ammo_45acp_max 800 // ump45, mac10, usp
-ammo_357sig_max 800 // P228
-ammo_57mm_max 800 // p90, fiveseven
-
-
-// ----------------------------------------------------------------------------
-// Notes
-// ----------------------------------------------------------------------------
-// All notes are generalities, exceptions will be noted in appropriate place.
-// --------------------------------------------------------------------------
-// * All units of time are assumed to be in seconds.
-// * ...
-// ----------------------------------------------------------------------------
-// Format:
-//
-// Default: ""
-// ""
-// ----------------------------------------------------------------------------
-// Description:
-// " [ = '' | ...]"
-// OR
-// " [: | ...]"
-//
-// Specifications:
-// These are specific values that the cvar can be set to. Used to illustrate
-// the scale of a cvar, min/max values, etc.
-//
-// Meaning:
-// The description of what the specification does.
-//
-// Flag:
-// Includes any of the following:
-// * "Dependency" - Means this cvar relies on another cvar to be enabled.
-// E.G. Has no effect until its dependencies are enabled.
-// * "Delimiter" - Separate each item by this given character.
-// * "Override" - Means this cvar overrides another if enabled.
-// * "Recommended" - Means another cvar is recommended to be enabled if this
-// one is.
-// ...
-//
-// Value:
-// The value of the flag. Usually a referenced cvar.
-
-
-// ----------------------------------------------------------------------------
-// Log (core)
-// ----------------------------------------------------------------------------
-
-// Enable logging of events in the plugin. Fatal errors are always logged.
-// Default: "1"
-zr_log "1"
-
-// A bit field that specify what event types to log. See logging section (3.3) in manual for details.
-// Default: "2"
-zr_log_flags "2"
-
-// Enable module filtering. Only events from listed modules will be logged.
-// Default: "0"
-zr_log_module_filter "0"
-
-// Don't log events triggered by console commands that are executed by the console itself, like commands in configs. Enable this command to avoid spamming logs with events like weapon restrictions.
-// Default: "1"
-zr_log_ignore_console "1"
-
-// Always log error messages no matter what logging flags or modules filters that are enabled.
-// Default: "1"
-zr_log_error_override "1"
-
-// Print log events to admin chat in addition to the log file.
-// Default: "0"
-zr_log_print_admins "0"
-
-// Print log events to public chat in addition to the log file.
-// Default: "0"
-zr_log_print_chat "0"
-
-
-// ----------------------------------------------------------------------------
-// Config (core)
-// ----------------------------------------------------------------------------
-
-// Path, relative to root sourcemod directory, to models config file.
-// Default: "configs/zr/models.txt"
-zr_config_path_models "configs/zr/models.txt"
-
-// Path, relative to root sourcemod directory, to downloads file.
-// Default: "configs/zr/downloads.txt"
-zr_config_path_downloads "configs/zr/downloads.txt"
-
-// Path, relative to root sourcemod directory, to playerclasses config file.
-// Default: "configs/zr/playerclasses.txt"
-zr_config_path_playerclasses "configs/zr/playerclasses.txt"
-
-// Path, relative to root sourcemod directory, to weapons config file.
-// Default: "configs/zr/weapons.txt"
-zr_config_path_weapons "configs/zr/weapons.txt"
-
-// Path, relative to root sourcemod directory, to hitgroups config file.
-// Default: "configs/zr/hitgroups.txt"
-zr_config_path_hitgroups "configs/zr/hitgroups.txt"
-
-
-// ----------------------------------------------------------------------------
-// Permission settings
-// ----------------------------------------------------------------------------
-
-// Use group authentication instead of flags to access admin features. Generic admin flag is still required on some features.
-// -
-// Default: "0"
-zr_permissions_use_groups "0"
-
-// ----------------------------------------------------------------------------
-// Classes (core)
-// ----------------------------------------------------------------------------
-
-// General
-
-// Re-display class selection menu every spawn.
-// Default: "0"
-zr_classes_menu_spawn "0"
-
-// Display class selection menu when a player spawn for the first time.
-// Default: "0"
-zr_classes_menu_join "0"
-
-// Automatically close class selection menu after selecting a class.
-// Default: "1"
-zr_classes_menu_autoclose "1"
-
-// Player is assigned a random class every spawn. [Override: zr_classes_default_*]
-// Default: "0"
-zr_classes_random "0"
-
-// Time limit to change human class with instant change after spawning. Time is in seconds. Use 0 or negative to disable.
-// Default: "20"
-zr_classes_change_timelimit "20"
-
-// Save players' class selections in server cookies and restore when connecting. [Override: zr_classes_default_*]
-// Default: "1"
-zr_classes_save "1"
-
-// (Not implemented!) Admin-only class assigned to admins on connect, if any. ["default" = Default human class | "random" = Random admin-only class]
-// Default: "random"
-zr_classes_default_admin "default"
-
-// (Incomplete) Admin-mode class assigned to admins on connect. Do not confuse this with admin-only classes. ["random" = Random admin class | "" = Class config default]
-// Default: "random"
-zr_classes_default_admin_mode "random"
-
-// Human class assigned to players on connect. ["random" = Random human class | "" = Class config default]
-// Default: "random"
-zr_classes_default_human "random"
-
-// Zombie class assigned to players on connect. ["random" = Random zombie class | "" = Class config default]
-// Default: "random"
-zr_classes_default_zombie "random"
-
-// Zombie class assigned to mother zombies. ["motherzombies" = Random mother zombie class | "random" = Random regular zombie class | "disabled" = Don't change class on mother zombies]
-// Default: "motherzombies"
-zr_classes_default_mother_zombie "motherzombies"
-
-// Allow players to select zombie classes.
-// Default: "1"
-zr_classes_zombie_select "1"
-
-// Allow players to select human classes.
-// Default: "1"
-zr_classes_human_select "1"
-
-// Allow admins to select admin mode classes. (Not to be confused by admin-only classes!)
-// Default: "1"
-zr_classes_admin_select "1"
-
-// Speed method to use when applying player speed. Do not touch this if you don't know what you're doing! ["lmv" = Lagged movement value | "prop" = Player speed property]
-// Default: "lmv"
-zr_classes_speed_method "lmv"
-
-// CS: GO only: Applies an upwards boost if necessary as a workaround for low knock back when standing on the ground. Side effects: Weaker and flying zombies (compensate with lower knock back).
-// Default: "1"
-zr_classes_csgo_knockback_boost "1"
-
-// Overlay
-
-// Allow players to toggle class overlay.
-// Default: "1"
-zr_classes_overlay_toggle "1"
-
-// List of commands to hook that players can use to toggle class overlay. [Dependency: zr_classes_overlay_toggle | Delimiter: ", "]
-// Default: "nightvision"
-zr_classes_overlay_togglecmds "nightvision"
-
-// Default class overlay toggle state set on connecting player.
-// Default: "1"
-zr_classes_overlay_default "1"
-
-
-// ----------------------------------------------------------------------------
-// Weapons (core)
-// ----------------------------------------------------------------------------
-
-// General
-
-// Enable weapons module, disabling this will disable any weapons-related features. (weapon restrictions, weapon knockback multipliers, etc)
-// Default: "1"
-zr_weapons "1"
-
-// Restrict
-
-// Enable weapon restriction module, disabling this will disable weapon restriction commands.
-// Default: "1"
-zr_weapons_restrict "1"
-
-// Restricts zombies from picking up weapons after the round has ended but before the next round has begun.
-// Default: "1"
-zr_weapons_restrict_endequip "1"
-
-// ZMarket
-
-// Allow player to buy from a list of weapons in the weapons config.
-// Default: "1"
-zr_weapons_zmarket "1"
-
-// Requires player to be inside a buyzone to use ZMarket. [Dependency: zr_weapons_zmarket]
-// Default: "1"
-zr_weapons_zmarket_buyzone "1"
-
-// Allow players to rebuy their previous weapons. [Dependency: zr_weapons_zmarket]
-// Default: "1"
-zr_weapons_zmarket_rebuy "1"
-
-// Allow players to automatically rebuy their previous weapons. [Dependency: zr_weapons_zmarket&zr_weapons_zmarket_rebuy]
-// Default: "1"
-zr_weapons_zmarket_rebuy_auto "1"
-
-
-// ----------------------------------------------------------------------------
-// Hitgroups (core)
-// ----------------------------------------------------------------------------
-
-// Enable hitgroups module, disabling this will disable hitgroup-related features. (hitgroup knockback multipliers, hitgroup damage control)
-// Default: "1"
-zr_hitgroups "1"
-
-
-// ----------------------------------------------------------------------------
-// Infect (core)
-// ----------------------------------------------------------------------------
-
-// General
-
-// Mother zombie infection mode. ['dynamic' = every n-th zombie (ratio) | 'absolute' = n zombies (ratio) | 'range' = min/max]
-// Default: "dynamic"
-zr_infect_mzombie_mode "dynamic"
-
-// Dynamic mode: Infection ratio. Every n-th player is infected. | Absolute mode: Number of zombies to infect (positive ratio), or number of humans to keep (negative ratio).
-// Default: "7"
-zr_infect_mzombie_ratio "7"
-
-// Minimum number of mother zombies. Range mode only, cannot be zero.
-// Default: "1"
-zr_infect_mzombie_min "1"
-
-// Maximum number of mother zombies. Range mode only, cannot be zero.
-// Default: "3"
-zr_infect_mzombie_max "3"
-
-// Counts down to the first infection of the round. The counter is displayed in the middle of the screen.
-// Default: "0"
-zr_infect_mzombie_countdown "0"
-
-// Teleport mother zombies back to spawn on infect.
-// Default: "0"
-zr_infect_mzombie_respawn "0"
-
-// Maximum time from the start of the round until picking the mother zombie(s).
-// Default: "50.0"
-zr_infect_spawntime_max "50.0"
-
-// Minimum time from the start of the round until picking the mother zombie(s).
-// Default: "30.0"
-zr_infect_spawntime_min "30.0"
-
-// Prevent a player from being chosen as mother zombie two rounds in a row.
-// Default: "1"
-zr_infect_consecutive_block "1"
-
-// Force player to drop all weapons on infect, disabling this will strip weapons instead.
-// Default: "1"
-zr_infect_weapons_drop "1"
-
-// Effects
-
-// Disabling this will disable the fireball, smoke cloud, and sparks in a more efficient way.
-// Default: "1"
-zr_infect_explosion "1"
-
-// Spawn a fireball effect around player on infection. [Dependency: zr_infect_explosion]
-// Default: "1"
-zr_infect_fireball "1"
-
-// Spawn a smoke cloud effect around player on infection. [Dependency: zr_infect_explosion]
-// Default: "1"
-zr_infect_smoke "1"
-
-// Emit sparks from player on infection. [Dependency: zr_infect_explosion]
-// Default: "1"
-zr_infect_sparks "1"
-
-// Sound, relative to "sound" folder, to play from player on infection. ['""' = No sound]
-// Default: "npc/fast_zombie/fz_scream1.wav"
-zr_infect_sound "npc/fast_zombie/fz_scream1.wav"
-
-// Emit an energy splash from player on infection.
-// Default: "1"
-zr_infect_esplash "1"
-
-// Shake player's view on infect.
-// Default: "1"
-zr_infect_shake "1"
-
-// Amplitude of shaking effect. [Dependency: zr_infect_shake]
-// Default: "15.0"
-zr_infect_shake_amp "15.0"
-
-// Frequency of shaking effect. [Dependency: zr_infect_shake]
-// Default: "1.0"
-zr_infect_shake_frequency "1.0"
-
-// Duration of shaking effect. [Dependency: zr_infect_shake]
-// Default: "5.0"
-zr_infect_shake_duration "5.0"
-
-
-// ----------------------------------------------------------------------------
-// Damage (core)
-// ----------------------------------------------------------------------------
-
-// Hitgroup damage
-
-// Read hitgroup damage control from hitgroup config file, disabling this allows all zombie hitgroups to be shot.
-// Default: "1"
-zr_damage_hitgroups "1"
-
-// Block Damage Types
-
-// Block friendly fire.
-// Default: "1"
-zr_damage_block_ff "1"
-
-// Block blast damage inflicted on self or teammates.
-// Default: "1"
-zr_damage_block_blast "1"
-
-// Suicide Intercept
-
-// Intercept suicide commands attempted by zombies.
-// Default: "0"
-zr_damage_suicide_zombie "0"
-
-// Intercept suicide commands attempted by mother zombies.
-// Default: "1"
-zr_damage_suicide_mzombie "1"
-
-// Intercept suicide commands attempted by humans.
-// Default: "0"
-zr_damage_suicide_human "0"
-
-// List of client commands to intercept as suicide attempts. [Delimiter: ", "]
-// Default: "kill, spectate, jointeam, joinclass, explode"
-zr_damage_suicide_cmds "kill, spectate, jointeam, joinclass, explode"
-
-// Intercept suicide commands only after the first zombie has spawned.
-// Default: "1"
-zr_damage_suicide_after_infect "1"
-
-
-// ----------------------------------------------------------------------------
-// Overlays (core)
-// ----------------------------------------------------------------------------
-
-// How often to update overlays on players. [0.0 = Disabled]
-// Default: "1.0"
-zr_overlays_update_time "1.0"
-
-// Minimum DirectX level allowed for overlays (mat_dxlevel).
-// Default: "80"
-zr_overlays_min_dxlevel "80"
-
-
-// ----------------------------------------------------------------------------
-// Round End (core)
-// ----------------------------------------------------------------------------
-
-// Show specified overlay to players depending on winner when the round ends.
-// Default: "1"
-zr_roundend_overlay "1"
-
-// Overlay, relative to "materials" folder, to display when zombies win the round. [Dependency: zr_roundend_overlay]
-// Default: "overlays/zr/zombies_win"
-zr_roundend_overlays_zombie "overlays/zr/zombies_win"
-
-// Overlay, relative to "materials" folder, to display when humans win the round. [Dependency: zr_roundend_overlay]
-// Default: "overlays/zr/humans_win"
-zr_roundend_overlays_human "overlays/zr/humans_win"
-
-// Balances the team every time the round ends. Disable this if you use something else to balance teams.
-// Default: "1"
-zr_roundend_balance_teams "1"
-
-// ----------------------------------------------------------------------------
-// Account (module)
-// ----------------------------------------------------------------------------
-
-// Reset player's cash each spawn.
-// Default: "1"
-zr_account_cashfill "1"
-
-// Amount of cash to set player's account to. [Dependency: zr_account_cashfill]
-// Default: "12000"
-zr_account_cashfill_value "12000"
-
-// Attacker receives amount of cash equivalent to the damage that was inflicted.
-// Default: "0"
-zr_account_cashdmg "0"
-
-
-// ----------------------------------------------------------------------------
-// Visual Effects (module)
-// ----------------------------------------------------------------------------
-
-// Lightstyle
-
-// Change lightstyle (brightness) of the map.
-// Default: "0"
-zr_veffects_lightstyle "0"
-
-// Lightstyle value. ['a' = Darkest | 'z' = Brightest | Dependency: zr_veffects_lightstyle]
-// Default: "b"
-zr_veffects_lightstyle_value "b"
-
-// Sky
-
-// Change map skybox.
-// Default: "0"
-zr_veffects_sky "0"
-
-// Skybox file, relative to "materials/skybox" folder, to change map skybox to. This file is automatically downloaded to clients. [Dependency: zr_veffects_sky]
-// Default: "sky_borealis01up.vmt"
-zr_veffects_sky_path "sky_borealis01up.vmt"
-
-// Sun
-
-// Disable sun rendering on map.
-// Default: "0"
-zr_veffects_sun_disable "0"
-
-// Fog (UNSUPPORTED) SourceMod currently doesn't support this feature.
-
-// (UNSUPPORTED) Enable fog rendering on the map.
-// Default: "0"
-zr_veffects_fog "0"
-
-// (UNSUPPORTED) If fog exists already on the map, then replace with new modified fog. [Dependency: zr_veffects_fog]
-// Default: "0"
-zr_veffects_fog_override "0"
-
-// (UNSUPPORTED) Primary color of the fog. [Dependency: zr_veffects_fog]
-// Default: "255 255 255"
-zr_veffects_fog_pcolor "255 255 255"
-
-// (UNSUPPORTED) Secondary color of the fog. [Dependency: zr_veffects_fog]
-// Default: "255 255 255"
-zr_veffects_fog_scolor "255 255 255"
-
-// (UNSUPPORTED) Density (thickness) of the fog. [Dependency: zr_veffects_fog]
-// Default: "0.8"
-zr_veffects_fog_density "0.8"
-
-// (UNSUPPORTED) Distance from player to start rendering foremost fog. [Dependency: zr_veffects_fog]
-// Default: "0"
-zr_veffects_fog_startdist "0"
-
-// (UNSUPPORTED) Distance from player to stop rendering fog. [Dependency: zr_veffects_fog]
-// Default: "400"
-zr_veffects_fog_enddist "400"
-
-// (UNSUPPORTED) Vertical clipping plane.
-// Default: "2000"
-zr_veffects_fog_farz "2000"
-
-// Ragdoll
-
-// Remove players' ragdolls from the game after a delay.
-// Default: "1"
-zr_veffects_ragdoll_remove "1"
-
-// The ragdoll removal effect. ['-2' = Effectless removal | '-1' = Random effect | '0' = Energy dissolve | '1' = Heavy electrical dissolve | '2' = Light electrical dissolve | '3' = Core dissolve | Dependency: zr_veffects_ragdoll_remove]
-// Default: "-1"
-zr_veffects_ragdoll_dissolve "-1"
-
-// Time to wait before removing the ragdoll. [Dependency: zr_veffects_ragdoll_remove]
-// Default: "0.5"
-zr_veffects_ragdoll_delay "0.5"
-
-
-// ----------------------------------------------------------------------------
-// Sound Effects (module)
-// ----------------------------------------------------------------------------
-
-// Zombie Sounds
-
-// Time between emission of a moan sound from a zombie.
-// Default: "30.0"
-zr_seffects_moan "30.0"
-
-// The probability that a groan sound will be emitted from a zombie when shot. ['100' = 1% chance | '50' = 2% chance | '1' = 100% chance]
-// Default: "5"
-zr_seffects_groan "5"
-
-// Emit a death sound when a zombie dies.
-// Default: "1"
-zr_seffects_death "1"
-
-// Number of sound commands allowed within the time span, or total limit if time span is disabled. ['0' = Disable sound command limit]
-// Default: "4"
-zr_seffects_command_limit "4"
-
-// Time span for sound command limiter (in seconds). ['0' = Disable time span check | positive number = Time span]
-// Default: "10"
-zr_seffects_command_timespan "10"
-
-// Ambient Sounds
-
-// Play an ambient sound to all players during gameplay.
-// Default: "1"
-zr_ambientsounds "1"
-
-// Sound file, relative to "sound" folder, to play as ambience. This file is automatically downloaded to clients. [Dependency: zr_ambientsounds]
-// Default: "ambient/zr/zr_ambience.mp3"
-zr_ambientsounds_file "ambient/zr/zr_ambience.mp3"
-
-// Length of the ambient sound. [Dependency: zr_ambientsounds]
-// Default: "60.0"
-zr_ambientsounds_length "60.0"
-
-// Volume of the ambient sound. [1.0 = Max volume | 0.0001 = Not audible | Dependency: zr_ambientsounds]
-// Default: "0.8"
-zr_ambientsounds_volume "0.8"
-
-
-// ----------------------------------------------------------------------------
-// Anti-Stick (module)
-// ----------------------------------------------------------------------------
-
-// Automatically unstick players when stuck within each others' collision hull.
-// Default: "1"
-zr_antistick "1"
-
-
-// ----------------------------------------------------------------------------
-// Spawn Protect (module)
-// ----------------------------------------------------------------------------
-
-// Player will be protected from infection when spawning into the game late.
-// Default: "1"
-zr_spawnprotect "1"
-
-// Amount of time to protect player. [Dependency: zr_spawnprotect]
-// Default: "10"
-zr_spawnprotect_time "10"
-
-// Speed of the player during protection. See the manual for more information. [Dependency: zr_spawnprotect]
-// Default: "600.0"
-zr_spawnprotect_speed "600.0"
-
-// Alpha of the player during protection. ['255' = Fully visible | '0' = Completely invisible | Dependency: zr_spawnprotect]
-// Default: "0"
-zr_spawnprotect_alpha "0"
-
-
-// ----------------------------------------------------------------------------
-// Respawn (module)
-// ----------------------------------------------------------------------------
-
-// Respawn players after death. [Recommended: (Enable) zr_zspawn*]
-// Default: "0"
-zr_respawn "0"
-
-// Time after death to delay player respawn. [Dependency: zr_respawn]
-// Default: "1"
-zr_respawn_delay "1"
-
-// Respawn player as a zombie. [Dependency: zr_respawn]
-// Default: "1"
-zr_respawn_team_zombie "1"
-
-// Respawn player as a zombie if player was a zombie and killed by world damage. [Override: zr_respawn_team_zombie]
-// Default: "1"
-zr_respawn_team_zombie_world "1"
-
-
-// ----------------------------------------------------------------------------
-// Napalm (module)
-// ----------------------------------------------------------------------------
-
-// Ignite grenade in mid-air after player throws it. [Dependency: Human Attribute 'has_napalm']
-// Default: "1"
-zr_napalm_ignite "1"
-
-// Minimum water-saturation before flame is extinguished. ['0' = Disabled | '1' = Feet | '2' = Waist | '3' = Full submersion]
-// Default: "0"
-zr_napalm_douse "0"
-
-
-// ----------------------------------------------------------------------------
-// Jump Boost (module)
-// ----------------------------------------------------------------------------
-
-// Prevent players from using forward jump boost multipliers to bunny hop.
-// Default: "1"
-zr_jumpboost_bhop_protect "1"
-
-// The maximum horizontal velocity a player can achieve before bunnyhop protection kicks in. [Dependency: zr_jumpboost_bhop_protect]
-// Default: "300"
-zr_jumpboost_bhop_max "300"
-
-
-// ----------------------------------------------------------------------------
-// Volumetric Features (module)
-// ----------------------------------------------------------------------------
-
-// Enables volumetric features.
-// Default: "1"
-zr_vol "1"
-
-// How often to update player positions and trigger events, in seconds.
-// Default: "1.0"
-zr_vol_update_interval "1.0"
-
-// How often to check for delayed events, in seconds. Use lower values for more precise delays.
-// Default: "1.0"
-zr_vol_trigger_interval "1.0"
-
-
-// ----------------------------------------------------------------------------
-// ZSpawn (module)
-// ----------------------------------------------------------------------------
-
-// Allow players to spawn into the game late.
-// Default: "1"
-zr_zspawn "1"
-
-// Override spawn team when spawning by means of ZSpawn.
-// Default: "1"
-zr_zspawn_team_override "1"
-
-// Spawn player on zombie team when spawning by means of ZSpawn. [Dependency: zr_zspawn_team_override | Override: zr_respawn_team_zombie]
-// Default: "0"
-zr_zspawn_team_zombie "0"
-
-// Block players disconnecting and rejoing the game using zspawn.
-// Default: "1"
-zr_zspawn_block_rejoin "1"
-
-// Put a time limit on the use of ZSpawn.
-// Default: "1"
-zr_zspawn_timelimit "1"
-
-// Time from the start of the round to allow ZSpawn. [Dependency: zr_zspawn_timelimit]
-// Default: "120.0"
-zr_zspawn_timelimit_time "120.0"
-
-// Spawn player on the zombie team AFTER the timelimit is up. ['-1' = Block ZSpawn | '0' = Spawn as human | '1' = Spawn as zombie | Dependency: zr_zspawn_timelimit]
-// Default: "1"
-zr_zspawn_timelimit_zombie "1"
-
-
-
-// ----------------------------------------------------------------------------
-// ZTele (module)
-// ----------------------------------------------------------------------------
-
-// Allow zombies to use ZTele.
-// Default: "1"
-zr_ztele_zombie "1"
-
-// Allow humans to use ZTele before the mother zombie has spawned.
-// Default: "1"
-zr_ztele_human_before "1"
-
-// Allow humans to use ZTele after the mother zombie has spawned.
-// Default: "1"
-zr_ztele_human_after "1"
-
-// Time between using ZTele command and teleportation for zombies. [Dependency: zr_ztele_zombie]
-// Default: "3.0"
-zr_ztele_delay_zombie "3.0"
-
-// Time between using ZTele command and teleportation for humans. [Dependency: zr_ztele_human_(before)/(after)]
-// Default: "3.0"
-zr_ztele_delay_human "3.0"
-
-// Max number of times a zombie is allowed to use ZTele per round. [Dependency: zr_ztele_zombie]
-// Default: "3"
-zr_ztele_max_zombie "3"
-
-// Max number of times a human is allowed to use ZTele per round. [Dependency: zr_ztele_human_(before)/(after)]
-// Default: "1"
-zr_ztele_max_human "1"
-
-// Automatically cancel ZTele if player moves out of a set boundary. [Dependency: zr_ztele_(zombie)/(human)[_(before)/(after)]]
-// Default: "1"
-zr_ztele_autocancel "1"
-
-// Maximum distance, in feet, player is allowed to travel before teleport is cancelled. [Dependency: zr_ztele_autocancel]
-// Default: "20"
-zr_ztele_autocancel_distance "20"
-
-
-// ----------------------------------------------------------------------------
-// ZHP (module)
-// ----------------------------------------------------------------------------
-
-// Allow player to toggle real HP display as a zombie.
-// Default: "1"
-zr_zhp "1"
-
-// Default ZHP toggle state set on connecting player. [Dependency: zr_zhp]
-// Default: "1"
-zr_zhp_default "1"
+// ============================================================================
+//
+// ZOMBIE:RELOADED
+// Plugin configuration
+//
+// Check the plugin configuration section in the manual for detailed info.
+//
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// Zombie-Related Server Variables
+// ----------------------------------------------------------------------------
+
+// The max speed of any player in the server (250 is normal speed). This is just a speed limit, and not the real players' speed.
+// Default: "500"
+sv_maxspeed 500
+
+// Amount of time, in minutes, zombies have to infect all humans.
+// Default: "5"
+mp_roundtime 5
+
+// Allows players to move items with their 'use' key.
+// Default: "1"
+sv_turbophysics 1
+
+// Multiplier for how easy props are moved ['1' = No push]
+// Default: "3"
+phys_pushscale 3
+
+
+// ----------------------------------------------------------------------------
+// Ammo Reserve Settings
+// ----------------------------------------------------------------------------
+
+ammo_50AE_max 800 // deagle
+ammo_762mm_max 800 // scout, ak47, g3sg1, aug
+ammo_556mm_box_max 800 // m249
+ammo_556mm_max 800 // galil, sg552, famas, m4a1, sg550
+ammo_338mag_max 200 // awp
+ammo_9mm_max 800 // mp5navy, tmp, glock, elite
+ammo_buckshot_max 800 // m3, xm1014
+ammo_45acp_max 800 // ump45, mac10, usp
+ammo_357sig_max 800 // P228
+ammo_57mm_max 800 // p90, fiveseven
+
+
+// ----------------------------------------------------------------------------
+// Notes
+// ----------------------------------------------------------------------------
+// All notes are generalities, exceptions will be noted in appropriate place.
+// --------------------------------------------------------------------------
+// * All units of time are assumed to be in seconds.
+// * ...
+// ----------------------------------------------------------------------------
+// Format:
+//
+// Default: ""
+// ""
+// ----------------------------------------------------------------------------
+// Description:
+// " [ = '' | ...]"
+// OR
+// " [: | ...]"
+//
+// Specifications:
+// These are specific values that the cvar can be set to. Used to illustrate
+// the scale of a cvar, min/max values, etc.
+//
+// Meaning:
+// The description of what the specification does.
+//
+// Flag:
+// Includes any of the following:
+// * "Dependency" - Means this cvar relies on another cvar to be enabled.
+// E.G. Has no effect until its dependencies are enabled.
+// * "Delimiter" - Separate each item by this given character.
+// * "Override" - Means this cvar overrides another if enabled.
+// * "Recommended" - Means another cvar is recommended to be enabled if this
+// one is.
+// ...
+//
+// Value:
+// The value of the flag. Usually a referenced cvar.
+
+
+// ----------------------------------------------------------------------------
+// Log (core)
+// ----------------------------------------------------------------------------
+
+// Enable logging of events in the plugin. Fatal errors are always logged.
+// Default: "1"
+zr_log "1"
+
+// A bit field that specify what event types to log. See logging section (3.3) in manual for details.
+// Default: "2"
+zr_log_flags "2"
+
+// Enable module filtering. Only events from listed modules will be logged.
+// Default: "0"
+zr_log_module_filter "0"
+
+// Don't log events triggered by console commands that are executed by the console itself, like commands in configs. Enable this command to avoid spamming logs with events like weapon restrictions.
+// Default: "1"
+zr_log_ignore_console "1"
+
+// Always log error messages no matter what logging flags or modules filters that are enabled.
+// Default: "1"
+zr_log_error_override "1"
+
+// Print log events to admin chat in addition to the log file.
+// Default: "0"
+zr_log_print_admins "0"
+
+// Print log events to public chat in addition to the log file.
+// Default: "0"
+zr_log_print_chat "0"
+
+
+// ----------------------------------------------------------------------------
+// Config (core)
+// ----------------------------------------------------------------------------
+
+// Path, relative to root sourcemod directory, to models config file.
+// Default: "configs/zr/models.txt"
+zr_config_path_models "configs/zr/models.txt"
+
+// Path, relative to root sourcemod directory, to downloads file.
+// Default: "configs/zr/downloads.txt"
+zr_config_path_downloads "configs/zr/downloads.txt"
+
+// Path, relative to root sourcemod directory, to playerclasses config file.
+// Default: "configs/zr/playerclasses.txt"
+zr_config_path_playerclasses "configs/zr/playerclasses.txt"
+
+// Path, relative to root sourcemod directory, to weapons config file.
+// Default: "configs/zr/weapons.txt"
+zr_config_path_weapons "configs/zr/weapons.txt"
+
+// Path, relative to root sourcemod directory, to hitgroups config file.
+// Default: "configs/zr/hitgroups.txt"
+zr_config_path_hitgroups "configs/zr/hitgroups.txt"
+
+
+// ----------------------------------------------------------------------------
+// Permission settings
+// ----------------------------------------------------------------------------
+
+// Use group authentication instead of flags to access admin features. Generic admin flag is still required on some features.
+// -
+// Default: "0"
+zr_permissions_use_groups "0"
+
+// ----------------------------------------------------------------------------
+// Classes (core)
+// ----------------------------------------------------------------------------
+
+// General
+
+// Re-display class selection menu every spawn.
+// Default: "0"
+zr_classes_menu_spawn "0"
+
+// Display class selection menu when a player spawn for the first time.
+// Default: "0"
+zr_classes_menu_join "0"
+
+// Automatically close class selection menu after selecting a class.
+// Default: "1"
+zr_classes_menu_autoclose "1"
+
+// Player is assigned a random class every spawn. [Override: zr_classes_default_*]
+// Default: "0"
+zr_classes_random "0"
+
+// Time limit to change human class with instant change after spawning. Time is in seconds. Use 0 or negative to disable.
+// Default: "20"
+zr_classes_change_timelimit "20"
+
+// Save players' class selections in server cookies and restore when connecting. [Override: zr_classes_default_*]
+// Default: "1"
+zr_classes_save "1"
+
+// (Not implemented!) Admin-only class assigned to admins on connect, if any. ["default" = Default human class | "random" = Random admin-only class]
+// Default: "random"
+zr_classes_default_admin "default"
+
+// (Incomplete) Admin-mode class assigned to admins on connect. Do not confuse this with admin-only classes. ["random" = Random admin class | "" = Class config default]
+// Default: "random"
+zr_classes_default_admin_mode "random"
+
+// Human class assigned to players on connect. ["random" = Random human class | "" = Class config default]
+// Default: "random"
+zr_classes_default_human "random"
+
+// Zombie class assigned to players on connect. ["random" = Random zombie class | "" = Class config default]
+// Default: "random"
+zr_classes_default_zombie "random"
+
+// Zombie class assigned to mother zombies. ["motherzombies" = Random mother zombie class | "random" = Random regular zombie class | "disabled" = Don't change class on mother zombies]
+// Default: "motherzombies"
+zr_classes_default_mother_zombie "motherzombies"
+
+// Allow players to select zombie classes.
+// Default: "1"
+zr_classes_zombie_select "1"
+
+// Allow players to select human classes.
+// Default: "1"
+zr_classes_human_select "1"
+
+// Allow admins to select admin mode classes. (Not to be confused by admin-only classes!)
+// Default: "1"
+zr_classes_admin_select "1"
+
+// Speed method to use when applying player speed. Do not touch this if you don't know what you're doing! ["lmv" = Lagged movement value | "prop" = Player speed property]
+// Default: "lmv"
+zr_classes_speed_method "lmv"
+
+// CS: GO only: Applies an upwards boost if necessary as a workaround for low knock back when standing on the ground. Side effects: Weaker and flying zombies (compensate with lower knock back).
+// Default: "1"
+zr_classes_csgo_knockback_boost "1"
+
+// Overlay
+
+// Allow players to toggle class overlay.
+// Default: "1"
+zr_classes_overlay_toggle "1"
+
+// List of commands to hook that players can use to toggle class overlay. [Dependency: zr_classes_overlay_toggle | Delimiter: ", "]
+// Default: "nightvision"
+zr_classes_overlay_togglecmds "nightvision"
+
+// Default class overlay toggle state set on connecting player.
+// Default: "1"
+zr_classes_overlay_default "1"
+
+
+// ----------------------------------------------------------------------------
+// Weapons (core)
+// ----------------------------------------------------------------------------
+
+// General
+
+// Enable weapons module, disabling this will disable any weapons-related features. (weapon restrictions, weapon knockback multipliers, etc)
+// Default: "1"
+zr_weapons "1"
+
+// Restrict
+
+// Enable weapon restriction module, disabling this will disable weapon restriction commands.
+// Default: "1"
+zr_weapons_restrict "1"
+
+// Restricts zombies from picking up weapons after the round has ended but before the next round has begun.
+// Default: "1"
+zr_weapons_restrict_endequip "1"
+
+// ZMarket
+
+// Allow player to buy from a list of weapons in the weapons config.
+// Default: "1"
+zr_weapons_zmarket "1"
+
+// Requires player to be inside a buyzone to use ZMarket. [Dependency: zr_weapons_zmarket]
+// Default: "1"
+zr_weapons_zmarket_buyzone "1"
+
+// Allow players to rebuy their previous weapons. [Dependency: zr_weapons_zmarket]
+// Default: "1"
+zr_weapons_zmarket_rebuy "1"
+
+// Allow players to automatically rebuy their previous weapons. [Dependency: zr_weapons_zmarket&zr_weapons_zmarket_rebuy]
+// Default: "1"
+zr_weapons_zmarket_rebuy_auto "1"
+
+
+// ----------------------------------------------------------------------------
+// Hitgroups (core)
+// ----------------------------------------------------------------------------
+
+// Enable hitgroups module, disabling this will disable hitgroup-related features. (hitgroup knockback multipliers, hitgroup damage control)
+// Default: "1"
+zr_hitgroups "1"
+
+
+// ----------------------------------------------------------------------------
+// Infect (core)
+// ----------------------------------------------------------------------------
+
+// General
+
+// Mother zombie infection mode. ['dynamic' = every n-th zombie (ratio) | 'absolute' = n zombies (ratio) | 'range' = min/max]
+// Default: "dynamic"
+zr_infect_mzombie_mode "dynamic"
+
+// Dynamic mode: Infection ratio. Every n-th player is infected. | Absolute mode: Number of zombies to infect (positive ratio), or number of humans to keep (negative ratio).
+// Default: "7"
+zr_infect_mzombie_ratio "7"
+
+// Minimum number of mother zombies. Range mode only, cannot be zero.
+// Default: "1"
+zr_infect_mzombie_min "1"
+
+// Maximum number of mother zombies. Range mode only, cannot be zero.
+// Default: "3"
+zr_infect_mzombie_max "3"
+
+// Counts down to the first infection of the round. The counter is displayed in the middle of the screen.
+// Default: "0"
+zr_infect_mzombie_countdown "0"
+
+// Teleport mother zombies back to spawn on infect.
+// Default: "0"
+zr_infect_mzombie_respawn "0"
+
+// Maximum time from the start of the round until picking the mother zombie(s).
+// Default: "50.0"
+zr_infect_spawntime_max "50.0"
+
+// Minimum time from the start of the round until picking the mother zombie(s).
+// Default: "30.0"
+zr_infect_spawntime_min "30.0"
+
+// Prevent a player from being chosen as mother zombie two rounds in a row.
+// Default: "1"
+zr_infect_consecutive_block "1"
+
+// Force player to drop all weapons on infect, disabling this will strip weapons instead.
+// Default: "1"
+zr_infect_weapons_drop "1"
+
+// Effects
+
+// Disabling this will disable the fireball, smoke cloud, and sparks in a more efficient way.
+// Default: "1"
+zr_infect_explosion "1"
+
+// Spawn a fireball effect around player on infection. [Dependency: zr_infect_explosion]
+// Default: "1"
+zr_infect_fireball "1"
+
+// Spawn a smoke cloud effect around player on infection. [Dependency: zr_infect_explosion]
+// Default: "1"
+zr_infect_smoke "1"
+
+// Emit sparks from player on infection. [Dependency: zr_infect_explosion]
+// Default: "1"
+zr_infect_sparks "1"
+
+// Sound, relative to "sound" folder, to play from player on infection. ['""' = No sound]
+// Default: "npc/fast_zombie/fz_scream1.wav"
+zr_infect_sound "npc/fast_zombie/fz_scream1.wav"
+
+// Emit an energy splash from player on infection.
+// Default: "1"
+zr_infect_esplash "1"
+
+// Shake player's view on infect.
+// Default: "1"
+zr_infect_shake "1"
+
+// Amplitude of shaking effect. [Dependency: zr_infect_shake]
+// Default: "15.0"
+zr_infect_shake_amp "15.0"
+
+// Frequency of shaking effect. [Dependency: zr_infect_shake]
+// Default: "1.0"
+zr_infect_shake_frequency "1.0"
+
+// Duration of shaking effect. [Dependency: zr_infect_shake]
+// Default: "5.0"
+zr_infect_shake_duration "5.0"
+
+
+// ----------------------------------------------------------------------------
+// Damage (core)
+// ----------------------------------------------------------------------------
+
+// Hitgroup damage
+
+// Read hitgroup damage control from hitgroup config file, disabling this allows all zombie hitgroups to be shot.
+// Default: "1"
+zr_damage_hitgroups "1"
+
+// Block Damage Types
+
+// Block friendly fire.
+// Default: "1"
+zr_damage_block_ff "1"
+
+// Block blast damage inflicted on self or teammates.
+// Default: "1"
+zr_damage_block_blast "1"
+
+// Suicide Intercept
+
+// Intercept suicide commands attempted by zombies.
+// Default: "0"
+zr_damage_suicide_zombie "0"
+
+// Intercept suicide commands attempted by mother zombies.
+// Default: "1"
+zr_damage_suicide_mzombie "1"
+
+// Intercept suicide commands attempted by humans.
+// Default: "0"
+zr_damage_suicide_human "0"
+
+// List of client commands to intercept as suicide attempts. [Delimiter: ", "]
+// Default: "kill, spectate, jointeam, joinclass, explode"
+zr_damage_suicide_cmds "kill, spectate, jointeam, joinclass, explode"
+
+// Intercept suicide commands only after the first zombie has spawned.
+// Default: "1"
+zr_damage_suicide_after_infect "1"
+
+
+// ----------------------------------------------------------------------------
+// Overlays (core)
+// ----------------------------------------------------------------------------
+
+// How often to update overlays on players. [0.0 = Disabled]
+// Default: "1.0"
+zr_overlays_update_time "1.0"
+
+// Minimum DirectX level allowed for overlays (mat_dxlevel).
+// Default: "80"
+zr_overlays_min_dxlevel "80"
+
+
+// ----------------------------------------------------------------------------
+// Round End (core)
+// ----------------------------------------------------------------------------
+
+// Show specified overlay to players depending on winner when the round ends.
+// Default: "1"
+zr_roundend_overlay "1"
+
+// Overlay, relative to "materials" folder, to display when zombies win the round. [Dependency: zr_roundend_overlay]
+// Default: "overlays/zr/zombies_win"
+zr_roundend_overlays_zombie "overlays/zr/zombies_win"
+
+// Overlay, relative to "materials" folder, to display when humans win the round. [Dependency: zr_roundend_overlay]
+// Default: "overlays/zr/humans_win"
+zr_roundend_overlays_human "overlays/zr/humans_win"
+
+// Balances the team every time the round ends. Disable this if you use something else to balance teams.
+// Default: "1"
+zr_roundend_balance_teams "1"
+
+// ----------------------------------------------------------------------------
+// Account (module)
+// ----------------------------------------------------------------------------
+
+// Reset player's cash each spawn.
+// Default: "1"
+zr_account_cashfill "1"
+
+// Amount of cash to set player's account to. [Dependency: zr_account_cashfill]
+// Default: "12000"
+zr_account_cashfill_value "12000"
+
+// Attacker receives amount of cash equivalent to the damage that was inflicted.
+// Default: "0"
+zr_account_cashdmg "0"
+
+
+// ----------------------------------------------------------------------------
+// Visual Effects (module)
+// ----------------------------------------------------------------------------
+
+// Lightstyle
+
+// Change lightstyle (brightness) of the map.
+// Default: "0"
+zr_veffects_lightstyle "0"
+
+// Lightstyle value. ['a' = Darkest | 'z' = Brightest | Dependency: zr_veffects_lightstyle]
+// Default: "b"
+zr_veffects_lightstyle_value "b"
+
+// Sky
+
+// Change map skybox.
+// Default: "0"
+zr_veffects_sky "0"
+
+// Skybox file, relative to "materials/skybox" folder, to change map skybox to. This file is automatically downloaded to clients. [Dependency: zr_veffects_sky]
+// Default: "sky_borealis01up.vmt"
+zr_veffects_sky_path "sky_borealis01up.vmt"
+
+// Sun
+
+// Disable sun rendering on map.
+// Default: "0"
+zr_veffects_sun_disable "0"
+
+// Fog (UNSUPPORTED) SourceMod currently doesn't support this feature.
+
+// (UNSUPPORTED) Enable fog rendering on the map.
+// Default: "0"
+zr_veffects_fog "0"
+
+// (UNSUPPORTED) If fog exists already on the map, then replace with new modified fog. [Dependency: zr_veffects_fog]
+// Default: "0"
+zr_veffects_fog_override "0"
+
+// (UNSUPPORTED) Primary color of the fog. [Dependency: zr_veffects_fog]
+// Default: "255 255 255"
+zr_veffects_fog_pcolor "255 255 255"
+
+// (UNSUPPORTED) Secondary color of the fog. [Dependency: zr_veffects_fog]
+// Default: "255 255 255"
+zr_veffects_fog_scolor "255 255 255"
+
+// (UNSUPPORTED) Density (thickness) of the fog. [Dependency: zr_veffects_fog]
+// Default: "0.8"
+zr_veffects_fog_density "0.8"
+
+// (UNSUPPORTED) Distance from player to start rendering foremost fog. [Dependency: zr_veffects_fog]
+// Default: "0"
+zr_veffects_fog_startdist "0"
+
+// (UNSUPPORTED) Distance from player to stop rendering fog. [Dependency: zr_veffects_fog]
+// Default: "400"
+zr_veffects_fog_enddist "400"
+
+// (UNSUPPORTED) Vertical clipping plane.
+// Default: "2000"
+zr_veffects_fog_farz "2000"
+
+// Ragdoll
+
+// Remove players' ragdolls from the game after a delay.
+// Default: "1"
+zr_veffects_ragdoll_remove "1"
+
+// The ragdoll removal effect. ['-2' = Effectless removal | '-1' = Random effect | '0' = Energy dissolve | '1' = Heavy electrical dissolve | '2' = Light electrical dissolve | '3' = Core dissolve | Dependency: zr_veffects_ragdoll_remove]
+// Default: "-1"
+zr_veffects_ragdoll_dissolve "-1"
+
+// Time to wait before removing the ragdoll. [Dependency: zr_veffects_ragdoll_remove]
+// Default: "0.5"
+zr_veffects_ragdoll_delay "0.5"
+
+
+// ----------------------------------------------------------------------------
+// Sound Effects (module)
+// ----------------------------------------------------------------------------
+
+// Zombie Sounds
+
+// Time between emission of a moan sound from a zombie.
+// Default: "30.0"
+zr_seffects_moan "30.0"
+
+// The probability that a groan sound will be emitted from a zombie when shot. ['100' = 1% chance | '50' = 2% chance | '1' = 100% chance]
+// Default: "5"
+zr_seffects_groan "5"
+
+// Emit a death sound when a zombie dies.
+// Default: "1"
+zr_seffects_death "1"
+
+// Number of sound commands allowed within the time span, or total limit if time span is disabled. ['0' = Disable sound command limit]
+// Default: "4"
+zr_seffects_command_limit "4"
+
+// Time span for sound command limiter (in seconds). ['0' = Disable time span check | positive number = Time span]
+// Default: "10"
+zr_seffects_command_timespan "10"
+
+// Ambient Sounds
+
+// Play an ambient sound to all players during gameplay.
+// Default: "1"
+zr_ambientsounds "1"
+
+// Sound file, relative to "sound" folder, to play as ambience. This file is automatically downloaded to clients. [Dependency: zr_ambientsounds]
+// Default: "ambient/zr/zr_ambience.mp3"
+zr_ambientsounds_file "ambient/zr/zr_ambience.mp3"
+
+// Length of the ambient sound. [Dependency: zr_ambientsounds]
+// Default: "60.0"
+zr_ambientsounds_length "60.0"
+
+// Volume of the ambient sound. [1.0 = Max volume | 0.0001 = Not audible | Dependency: zr_ambientsounds]
+// Default: "0.8"
+zr_ambientsounds_volume "0.8"
+
+
+// ----------------------------------------------------------------------------
+// Anti-Stick (module)
+// ----------------------------------------------------------------------------
+
+// Automatically unstick players when stuck within each others' collision hull.
+// Default: "1"
+zr_antistick "1"
+
+
+// ----------------------------------------------------------------------------
+// Spawn Protect (module)
+// ----------------------------------------------------------------------------
+
+// Player will be protected from infection when spawning into the game late.
+// Default: "1"
+zr_spawnprotect "1"
+
+// Amount of time to protect player. [Dependency: zr_spawnprotect]
+// Default: "10"
+zr_spawnprotect_time "10"
+
+// Speed of the player during protection. See the manual for more information. [Dependency: zr_spawnprotect]
+// Default: "600.0"
+zr_spawnprotect_speed "600.0"
+
+// Alpha of the player during protection. ['255' = Fully visible | '0' = Completely invisible | Dependency: zr_spawnprotect]
+// Default: "0"
+zr_spawnprotect_alpha "0"
+
+
+// ----------------------------------------------------------------------------
+// Respawn (module)
+// ----------------------------------------------------------------------------
+
+// Respawn players after death. [Recommended: (Enable) zr_zspawn*]
+// Default: "0"
+zr_respawn "0"
+
+// Time after death to delay player respawn. [Dependency: zr_respawn]
+// Default: "1"
+zr_respawn_delay "1"
+
+// Respawn player as a zombie. [Dependency: zr_respawn]
+// Default: "1"
+zr_respawn_team_zombie "1"
+
+// Respawn player as a zombie if player was a zombie and killed by world damage. [Override: zr_respawn_team_zombie]
+// Default: "1"
+zr_respawn_team_zombie_world "1"
+
+
+// ----------------------------------------------------------------------------
+// Napalm (module)
+// ----------------------------------------------------------------------------
+
+// Ignite grenade in mid-air after player throws it. [Dependency: Human Attribute 'has_napalm']
+// Default: "1"
+zr_napalm_ignite "1"
+
+// Minimum water-saturation before flame is extinguished. ['0' = Disabled | '1' = Feet | '2' = Waist | '3' = Full submersion]
+// Default: "0"
+zr_napalm_douse "0"
+
+
+// ----------------------------------------------------------------------------
+// Jump Boost (module)
+// ----------------------------------------------------------------------------
+
+// Prevent players from using forward jump boost multipliers to bunny hop.
+// Default: "1"
+zr_jumpboost_bhop_protect "1"
+
+// The maximum horizontal velocity a player can achieve before bunnyhop protection kicks in. [Dependency: zr_jumpboost_bhop_protect]
+// Default: "300"
+zr_jumpboost_bhop_max "300"
+
+
+// ----------------------------------------------------------------------------
+// Volumetric Features (module)
+// ----------------------------------------------------------------------------
+
+// Enables volumetric features.
+// Default: "1"
+zr_vol "1"
+
+// How often to update player positions and trigger events, in seconds.
+// Default: "1.0"
+zr_vol_update_interval "1.0"
+
+// How often to check for delayed events, in seconds. Use lower values for more precise delays.
+// Default: "1.0"
+zr_vol_trigger_interval "1.0"
+
+
+// ----------------------------------------------------------------------------
+// ZSpawn (module)
+// ----------------------------------------------------------------------------
+
+// Allow players to spawn into the game late.
+// Default: "1"
+zr_zspawn "1"
+
+// Override spawn team when spawning by means of ZSpawn.
+// Default: "1"
+zr_zspawn_team_override "1"
+
+// Spawn player on zombie team when spawning by means of ZSpawn. [Dependency: zr_zspawn_team_override | Override: zr_respawn_team_zombie]
+// Default: "0"
+zr_zspawn_team_zombie "0"
+
+// Block players disconnecting and rejoing the game using zspawn.
+// Default: "1"
+zr_zspawn_block_rejoin "1"
+
+// Put a time limit on the use of ZSpawn.
+// Default: "1"
+zr_zspawn_timelimit "1"
+
+// Time from the start of the round to allow ZSpawn. [Dependency: zr_zspawn_timelimit]
+// Default: "120.0"
+zr_zspawn_timelimit_time "120.0"
+
+// Spawn player on the zombie team AFTER the timelimit is up. ['-1' = Block ZSpawn | '0' = Spawn as human | '1' = Spawn as zombie | Dependency: zr_zspawn_timelimit]
+// Default: "1"
+zr_zspawn_timelimit_zombie "1"
+
+
+
+// ----------------------------------------------------------------------------
+// ZTele (module)
+// ----------------------------------------------------------------------------
+
+// Allow zombies to use ZTele.
+// Default: "1"
+zr_ztele_zombie "1"
+
+// Allow humans to use ZTele before the mother zombie has spawned.
+// Default: "1"
+zr_ztele_human_before "1"
+
+// Allow humans to use ZTele after the mother zombie has spawned.
+// Default: "1"
+zr_ztele_human_after "1"
+
+// Time between using ZTele command and teleportation for zombies. [Dependency: zr_ztele_zombie]
+// Default: "3.0"
+zr_ztele_delay_zombie "3.0"
+
+// Time between using ZTele command and teleportation for humans. [Dependency: zr_ztele_human_(before)/(after)]
+// Default: "3.0"
+zr_ztele_delay_human "3.0"
+
+// Max number of times a zombie is allowed to use ZTele per round. [Dependency: zr_ztele_zombie]
+// Default: "3"
+zr_ztele_max_zombie "3"
+
+// Max number of times a human is allowed to use ZTele per round. [Dependency: zr_ztele_human_(before)/(after)]
+// Default: "1"
+zr_ztele_max_human "1"
+
+// Automatically cancel ZTele if player moves out of a set boundary. [Dependency: zr_ztele_(zombie)/(human)[_(before)/(after)]]
+// Default: "1"
+zr_ztele_autocancel "1"
+
+// Maximum distance, in feet, player is allowed to travel before teleport is cancelled. [Dependency: zr_ztele_autocancel]
+// Default: "20"
+zr_ztele_autocancel_distance "20"
+
+
+// ----------------------------------------------------------------------------
+// ZHP (module)
+// ----------------------------------------------------------------------------
+
+// Allow player to toggle real HP display as a zombie.
+// Default: "1"
+zr_zhp "1"
+
+// Default ZHP toggle state set on connecting player. [Dependency: zr_zhp]
+// Default: "1"
+zr_zhp_default "1"
diff --git a/docs/codestyle.txt b/docs/codestyle.txt
new file mode 100644
index 0000000..dbcb42d
--- /dev/null
+++ b/docs/codestyle.txt
@@ -0,0 +1,23 @@
+Zombie:Reloaded Code Guidelines
+===============================
+
+This is a draft of coding guidelines for Zombie:Reloaded. If something is not
+mentioned here, study the existing code to ensure consistency.
+
+Most of the code was written before we decided on the code style, so we may even
+break our own rules according to this document.
+
+Highly recommended book:
+Clean Code: A Handbook of Agile Software Craftsmanship (2008)
+Robert C. Martin
+
+* Curly braces on separate lines.
+* Indent with 4 spaces instead of tabs (configure your editor).
+* Unix line endings.
+* Always use curly braces with control statements (if, for, while, do).
+* UTF-8 file encoding without BOM.
+* Extract code into multiple functions if code is too complex. ZR is still bad
+ at following this rule.
+* If the code needs comments, it should be refactored/renamed to better explain
+ what it's doing. ZR has a lot of unnecessary comments, mostly because it's not
+ following the single purpose-function rule above.
diff --git a/docs/license.txt b/docs/license.txt
index 818433e..94a9ed0 100644
--- a/docs/license.txt
+++ b/docs/license.txt
@@ -1,674 +1,674 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- Copyright (C)
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-.
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/docs/old/zr_3.0-b2-patch_changelog.txt b/docs/old/zr_3.0-b2-patch_changelog.txt
index caaa45a..19ab02c 100644
--- a/docs/old/zr_3.0-b2-patch_changelog.txt
+++ b/docs/old/zr_3.0-b2-patch_changelog.txt
@@ -1,261 +1,261 @@
-===============================================================================
-
- Zombie:Reloaded Beta 2
-
- Patch Changelog
-
-===============================================================================
-
-For detailed info about changes in configuration files, see diff-files in the
-"changes" directory. They describe added and removed lines for each patch
-released. If the file is empty there are no config changes in that patch.
-
-2009.12.11 - r545
--------------------
-
-* Initial beta 2 release. See zr_3.0-b2_release_notes.txt.
-
-
-2009.12.17 - r555
--------------------
-
-* Fixed too short translation buffer on yes/no phrases.
-* Fixed warning about invalid class attribute.
-
-
-2009.12.23 - r557
--------------------
-
-* Added russian translation by exvel.
-
-
-2009.12.25 - r565
--------------------
-
-* Fixed incorrect link in docs.
-* Removed redundant check for class menu command.
-* Fixed suicide intercept message not displayed in chat. Text from chat will
- still appear in console if written from console.
-* Added source code for current snapshot in release package.
-
-
-2010.01.07 - r580
--------------------
-
-* Added zrdocs/changes.diff in patches that will describe changes in text files
- since the main release, in unified diff format. Use a editor that support
- diff coloring for easier reading.
-* Fixed players not extinguished properly when in water.
-* Fixed invalid default values in some has_napalm class attributes.
-* Fixed the display bug in ZTele showing 0/X uses instead of 1/X.
-* Changed to error types to be fatal and stop plugin to prevent further errors
- (fixes rare invalid handle error in weapon module).
-* Fixed weapon not rendering correctly in rare cases.
-* Added a cvar to allow zombies to pick up weapons at the end of the round.
-
-
-2010.01.25 - r584
--------------------
-
-* Simplified english and norwegian zmarket menu phrases.
-* Fixed account module giving money to zombies hurting themself with
- self-inflicted damage
-* Fixed zr_damage_suicide_human not working when enabled.
-* Switched the plugin to use SDK Hooks extension instead of ZR Tools (r584 and
- newer). Run this on SourceMod 1.3 or newer.
-
-
-2010.02.14 - r595
--------------------
-
-* Added patch changelog.
-* Fixed unlimited ammo exploit in ZMarket menu.
-* Fixed admin classes not restored from cookies.
-* Fixed a bug in client listing menus when selecting a client that left the
- game caused errors.
-* Fixed the default sky on the first map not reverting properly if
- zr_veffects_sky was enabled in zombiereloaded.cfg.
-* Fixed players not extinguished when in water.
-* Stopped the "Zombies can't use weapons" message when using autobuy outside of
- a buyzone.
-* Fixed problems that came up if a client was infected through admin after the
- round started, but before the freezetime expired.
-* Fixed a bug where zr_suicide_cmds was being ignored and only the default
- value was being used.
-
-2010.02.23 - r598
--------------------
-
-* Fixed cookies being reset on some occasions and admin-dependant classes are
- restored properly as well.
-
-
-2010.04.05 - r607
--------------------
-
-* Separated patch difflog (changes.diff) into separate file for each patch
- released.
-* Added scream and moan commands for zombies, with spam protection.
-* Added missing note about no_fall_damage class attribute in docs.
-* Fixed class attributes applied too early (moved to spawn post event). This
- fixes issues with FOV and bots.
-* Fixed saved classes not validated by team id when restoring from cookies.
-
-
-2010.06.03 - r611
--------------------
-
-* Added cvar to enable suicide intercept before the first zombie.
-* Added cvar for minimum dx level on overlays.
-* Fixed classes not always restored from cookies.
-
-
-2010.06.03 - r613
--------------------
-
-* Fixed signatures and round end defines that were updated in CS:S OB.
-
-
-2010.07.25 - r633
--------------------
-
-* Added support for different speed methods, defaulted to prop offset method.
- See the manual for more information about the class speed attribute.
- Important: Class speeds and spawn protection speed must be updated! Use this
- conversion formula:
- prop speed offset = ((lmv speed / 300) * 250) - 250
- If you don't want to update speed values right now, use
- "zr_classes_speed_method lmv" in zombiereloaded.cfg for backwards
- compatibility.
-* Added 'explode' suicide command from OB update to intercept list (bug 190).
-* Removed unnecessary antistick commands for model hull width, all models have
- the same hull width.
-* Removed hint sound on hp display and spawn protection timer. Credits goes to
- to Tauphi.
-* Fixed an error that happened when buying ammo and not having a weapon in
- prim/sec slot.
-* Fixed class menus being disabled and not checking if the player have access
- to private classes.
-* Fixed client not connected error in class module.
-* Updated compiler. ZR now requires SourceMod 1.3 or newer.
-
-
-2010.08.28 - r643
--------------------
-
-* Fixed function signatures that were changed after a CS update. Credit goes to
- psychonic.
-* Fixed class speed multiplier not properly applied with prop speed method (bug
- 199).
-* Fixed invalid handle error in ZMarket module (bug 152).
-* Fixed a rare case where removing weapons didn't work.
-* Possibly fixed invalid handle error with WeaponsEntityToDisplay (bug 163).
-* Lowered sv_maxspeed to work around a acceleration issue with spectators.
-* Added validation error messages for individual attributes when loading
- classes. Easier than reading bits from a number.
-* Improved confusing description of the NVGs class attribute.
-
-2010.10.15 - r644
--------------------
-
-* Changed default speed method to LMV because prop speed offsets are broken at
- the moment. This will introduce some side effects again; jump and fall speed
- is affected. Weapon recoil is also affected, but it's not confirmed that it
- has negative impact on bullets or aiming itself.
- Note: Those who already changed speed method back to LMV don't need this
- patch.
-
-2010.11.14 - r647
--------------------
-
-* Added external plugin API for ZR with basic infection and respawn tools. The
- following natives and forwards are now available:
- ZR_IsClientZombie
- ZR_IsClientHuman
- ZR_InfectClient
- ZR_HumanClient
- ZR_OnClientInfect
- ZR_OnClientInfected
- ZR_OnClientHuman
- ZR_OnClientHumanPost
- ZR_RespawnClient
- ZR_OnClientRespawn
- ZR_OnClientRespawned
- ZR_SetKilledByWorld
- ZR_GetKilledByWorld
- See addons/sourcemod/scripting/include/zr in the package for details.
- Also see addons/sourcemod/scripting/testsuite/zr for API usage examples.
-
-2010.11.17 - r648
--------------------
-
-* Fixed players not respawning as zombies when they are supposed to.
-
-2011.06.17 - r651, r653
--------------------------
-
-* Added improved random number generator from SMLIB.
-* Fixed dead players being able to get weapons through ZMarket.
-* Fixed consecutive mother zombie infection prevention not always working.
-
-2011.06.23 - r657
------------------
-
-* Added spanish translation by Franc1sco.
-
-2011.08.05 - r666
------------------
-
-* Increased class limit to 64 classes.
-* Fixed the ragdoll module unintentionally removing other valid entities if a
- ragdoll was attempted to be removed after the round restarted.
-* Fixed format settings in spanish translation spamming logs.
-* Fixed index out of bounds error when class limit is reached.
-* Fixed double inclusion of jump boost module preventing code from compiling on
- newer compilers.
-
-2011.10.30 - r669
------------------
-
-* Fixed internal player spawn post event fired too early (causing invisible
- models).
-* Possibly fixed invalid entity error (bug 195).
-
-2011.12.08 - r671
------------------
-
-* Updated gamedata file. Thanks to pillepallus.
-
-2011.12.26 - r673
------------------
-
-* Added infection countdown. Backported from zr-dev:52955b169945 (655).
-
-2011.12.27 - r675
------------------
-
-* Added cvar for disabling team balancing on round end (for use with custom
- team balancer): zr_roundend_balance_teams. Disabling this will cause players
- to remain on their current team when a new round starts. If zombies win,
- everyone will remain on the terrorists team.
-* Fixed invalid handle error after a map change.
-* Fixed language code typo in translations.
-* Infection countdown is no longer displayed if the infection delay is just one
- second.
-
-2012.06.10 - r689
------------------
-* Fixed ragdoll removal not being entirely disabled.
-* Fixed disabled classes still being validated.
-* Fixed memory leak in infection countdown feature.
-* Updated to use new natives in cstrike extension instead of SDK calls (fixing ZR not finding some signatures in some cases). Requires SourceMod 1.4.0 or newer.
-* Changed ZMarket to auto-buy weapons once settings are loaded (if auto-buy is enabled).
-
-2012.07.03 - r692
------------------
-* Replaced RemoveEdict with kill entity input command. This might fix some rare crashes.
-* Updated gamedata file. Thanks to psychonic and TnTSCS.
-
-2012.07.04 - r693
------------------
-* Fixed incorrect offsets in gamedata file.
+===============================================================================
+
+ Zombie:Reloaded Beta 2
+
+ Patch Changelog
+
+===============================================================================
+
+For detailed info about changes in configuration files, see diff-files in the
+"changes" directory. They describe added and removed lines for each patch
+released. If the file is empty there are no config changes in that patch.
+
+2009.12.11 - r545
+-------------------
+
+* Initial beta 2 release. See zr_3.0-b2_release_notes.txt.
+
+
+2009.12.17 - r555
+-------------------
+
+* Fixed too short translation buffer on yes/no phrases.
+* Fixed warning about invalid class attribute.
+
+
+2009.12.23 - r557
+-------------------
+
+* Added russian translation by exvel.
+
+
+2009.12.25 - r565
+-------------------
+
+* Fixed incorrect link in docs.
+* Removed redundant check for class menu command.
+* Fixed suicide intercept message not displayed in chat. Text from chat will
+ still appear in console if written from console.
+* Added source code for current snapshot in release package.
+
+
+2010.01.07 - r580
+-------------------
+
+* Added zrdocs/changes.diff in patches that will describe changes in text files
+ since the main release, in unified diff format. Use a editor that support
+ diff coloring for easier reading.
+* Fixed players not extinguished properly when in water.
+* Fixed invalid default values in some has_napalm class attributes.
+* Fixed the display bug in ZTele showing 0/X uses instead of 1/X.
+* Changed to error types to be fatal and stop plugin to prevent further errors
+ (fixes rare invalid handle error in weapon module).
+* Fixed weapon not rendering correctly in rare cases.
+* Added a cvar to allow zombies to pick up weapons at the end of the round.
+
+
+2010.01.25 - r584
+-------------------
+
+* Simplified english and norwegian zmarket menu phrases.
+* Fixed account module giving money to zombies hurting themself with
+ self-inflicted damage
+* Fixed zr_damage_suicide_human not working when enabled.
+* Switched the plugin to use SDK Hooks extension instead of ZR Tools (r584 and
+ newer). Run this on SourceMod 1.3 or newer.
+
+
+2010.02.14 - r595
+-------------------
+
+* Added patch changelog.
+* Fixed unlimited ammo exploit in ZMarket menu.
+* Fixed admin classes not restored from cookies.
+* Fixed a bug in client listing menus when selecting a client that left the
+ game caused errors.
+* Fixed the default sky on the first map not reverting properly if
+ zr_veffects_sky was enabled in zombiereloaded.cfg.
+* Fixed players not extinguished when in water.
+* Stopped the "Zombies can't use weapons" message when using autobuy outside of
+ a buyzone.
+* Fixed problems that came up if a client was infected through admin after the
+ round started, but before the freezetime expired.
+* Fixed a bug where zr_suicide_cmds was being ignored and only the default
+ value was being used.
+
+2010.02.23 - r598
+-------------------
+
+* Fixed cookies being reset on some occasions and admin-dependant classes are
+ restored properly as well.
+
+
+2010.04.05 - r607
+-------------------
+
+* Separated patch difflog (changes.diff) into separate file for each patch
+ released.
+* Added scream and moan commands for zombies, with spam protection.
+* Added missing note about no_fall_damage class attribute in docs.
+* Fixed class attributes applied too early (moved to spawn post event). This
+ fixes issues with FOV and bots.
+* Fixed saved classes not validated by team id when restoring from cookies.
+
+
+2010.06.03 - r611
+-------------------
+
+* Added cvar to enable suicide intercept before the first zombie.
+* Added cvar for minimum dx level on overlays.
+* Fixed classes not always restored from cookies.
+
+
+2010.06.03 - r613
+-------------------
+
+* Fixed signatures and round end defines that were updated in CS:S OB.
+
+
+2010.07.25 - r633
+-------------------
+
+* Added support for different speed methods, defaulted to prop offset method.
+ See the manual for more information about the class speed attribute.
+ Important: Class speeds and spawn protection speed must be updated! Use this
+ conversion formula:
+ prop speed offset = ((lmv speed / 300) * 250) - 250
+ If you don't want to update speed values right now, use
+ "zr_classes_speed_method lmv" in zombiereloaded.cfg for backwards
+ compatibility.
+* Added 'explode' suicide command from OB update to intercept list (bug 190).
+* Removed unnecessary antistick commands for model hull width, all models have
+ the same hull width.
+* Removed hint sound on hp display and spawn protection timer. Credits goes to
+ to Tauphi.
+* Fixed an error that happened when buying ammo and not having a weapon in
+ prim/sec slot.
+* Fixed class menus being disabled and not checking if the player have access
+ to private classes.
+* Fixed client not connected error in class module.
+* Updated compiler. ZR now requires SourceMod 1.3 or newer.
+
+
+2010.08.28 - r643
+-------------------
+
+* Fixed function signatures that were changed after a CS update. Credit goes to
+ psychonic.
+* Fixed class speed multiplier not properly applied with prop speed method (bug
+ 199).
+* Fixed invalid handle error in ZMarket module (bug 152).
+* Fixed a rare case where removing weapons didn't work.
+* Possibly fixed invalid handle error with WeaponsEntityToDisplay (bug 163).
+* Lowered sv_maxspeed to work around a acceleration issue with spectators.
+* Added validation error messages for individual attributes when loading
+ classes. Easier than reading bits from a number.
+* Improved confusing description of the NVGs class attribute.
+
+2010.10.15 - r644
+-------------------
+
+* Changed default speed method to LMV because prop speed offsets are broken at
+ the moment. This will introduce some side effects again; jump and fall speed
+ is affected. Weapon recoil is also affected, but it's not confirmed that it
+ has negative impact on bullets or aiming itself.
+ Note: Those who already changed speed method back to LMV don't need this
+ patch.
+
+2010.11.14 - r647
+-------------------
+
+* Added external plugin API for ZR with basic infection and respawn tools. The
+ following natives and forwards are now available:
+ ZR_IsClientZombie
+ ZR_IsClientHuman
+ ZR_InfectClient
+ ZR_HumanClient
+ ZR_OnClientInfect
+ ZR_OnClientInfected
+ ZR_OnClientHuman
+ ZR_OnClientHumanPost
+ ZR_RespawnClient
+ ZR_OnClientRespawn
+ ZR_OnClientRespawned
+ ZR_SetKilledByWorld
+ ZR_GetKilledByWorld
+ See addons/sourcemod/scripting/include/zr in the package for details.
+ Also see addons/sourcemod/scripting/testsuite/zr for API usage examples.
+
+2010.11.17 - r648
+-------------------
+
+* Fixed players not respawning as zombies when they are supposed to.
+
+2011.06.17 - r651, r653
+-------------------------
+
+* Added improved random number generator from SMLIB.
+* Fixed dead players being able to get weapons through ZMarket.
+* Fixed consecutive mother zombie infection prevention not always working.
+
+2011.06.23 - r657
+-----------------
+
+* Added spanish translation by Franc1sco.
+
+2011.08.05 - r666
+-----------------
+
+* Increased class limit to 64 classes.
+* Fixed the ragdoll module unintentionally removing other valid entities if a
+ ragdoll was attempted to be removed after the round restarted.
+* Fixed format settings in spanish translation spamming logs.
+* Fixed index out of bounds error when class limit is reached.
+* Fixed double inclusion of jump boost module preventing code from compiling on
+ newer compilers.
+
+2011.10.30 - r669
+-----------------
+
+* Fixed internal player spawn post event fired too early (causing invisible
+ models).
+* Possibly fixed invalid entity error (bug 195).
+
+2011.12.08 - r671
+-----------------
+
+* Updated gamedata file. Thanks to pillepallus.
+
+2011.12.26 - r673
+-----------------
+
+* Added infection countdown. Backported from zr-dev:52955b169945 (655).
+
+2011.12.27 - r675
+-----------------
+
+* Added cvar for disabling team balancing on round end (for use with custom
+ team balancer): zr_roundend_balance_teams. Disabling this will cause players
+ to remain on their current team when a new round starts. If zombies win,
+ everyone will remain on the terrorists team.
+* Fixed invalid handle error after a map change.
+* Fixed language code typo in translations.
+* Infection countdown is no longer displayed if the infection delay is just one
+ second.
+
+2012.06.10 - r689
+-----------------
+* Fixed ragdoll removal not being entirely disabled.
+* Fixed disabled classes still being validated.
+* Fixed memory leak in infection countdown feature.
+* Updated to use new natives in cstrike extension instead of SDK calls (fixing ZR not finding some signatures in some cases). Requires SourceMod 1.4.0 or newer.
+* Changed ZMarket to auto-buy weapons once settings are loaded (if auto-buy is enabled).
+
+2012.07.03 - r692
+-----------------
+* Replaced RemoveEdict with kill entity input command. This might fix some rare crashes.
+* Updated gamedata file. Thanks to psychonic and TnTSCS.
+
+2012.07.04 - r693
+-----------------
+* Fixed incorrect offsets in gamedata file.
diff --git a/docs/old/zr_3.0-b2_release_notes.txt b/docs/old/zr_3.0-b2_release_notes.txt
index 0c96eb5..29dde1b 100644
--- a/docs/old/zr_3.0-b2_release_notes.txt
+++ b/docs/old/zr_3.0-b2_release_notes.txt
@@ -1,105 +1,105 @@
-===============================================================================
-
- Zombie:Reloaded Release Notes
-
- Targets plugin version 3.0.0 Beta 2, 2009.12.11
- Written by Richard Helgeby
-
- Last modified: 2009.12.11
-
+===============================================================================
+
+ Zombie:Reloaded Release Notes
+
+ Targets plugin version 3.0.0 Beta 2, 2009.12.11
+ Written by Richard Helgeby
+
+ Last modified: 2009.12.11
+
===============================================================================
Release Notes For Changes In Beta 2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Almost all known issues is now fixed. Beta 2 is a result of six months of work
-on our spare time, which is pretty good in our opinion. There's a few new
-features and some changes. These are the major news (also see changelog below):
-
-* Support for group authentication on admin commands, models and classes.
- See Admin Authentication (3.24) in the user manual for usage information.
-
-* Class selections and other settings can be saved in cookies (stored in a
+
+Almost all known issues is now fixed. Beta 2 is a result of six months of work
+on our spare time, which is pretty good in our opinion. There's a few new
+features and some changes. These are the major news (also see changelog below):
+
+* Support for group authentication on admin commands, models and classes.
+ See Admin Authentication (3.24) in the user manual for usage information.
+
+* Class selections and other settings can be saved in cookies (stored in a
database or a file on the server).
-
-* Class editor for volumetric features. Modify class attributes on players in a
- certain area. This could be extra jump boost in some places, or lower knock
- back in tubes and vents. Note that this feature is still a work in progress.
-
- Documentation for this one isn't written yet. This syntax should help:
- zr_vol_add classedit =
-
- This will make players run fast in a certain area (replace coordinates):
- zr_vol_add -492 -522 497 511 534 681 classedit speed=500
-
-* Changed model list to Valve's key/values format (same as classes use). Now
- it's possible to separate models into different groups and teams.
-
-* There's a compatibility fix in classes for servers with plugins that change
- models. "model_path" in a class can be set to "no_change" so model can be
- changed by another plugin than Zombie:Reloaded.
-
-* The user manual is converted to a nice looking HTML manual with links for
- quick navigation. Don't forget to have a look at it, at least if you have
- problems.
-
- Troubleshooting section is updated with explanation of all error messages
- and some info about common problems. Otherwise look at the configuration
- section on how to configure every feature.
-
-
-Richard Helgeby &
+
+* Class editor for volumetric features. Modify class attributes on players in a
+ certain area. This could be extra jump boost in some places, or lower knock
+ back in tubes and vents. Note that this feature is still a work in progress.
+
+ Documentation for this one isn't written yet. This syntax should help:
+ zr_vol_add classedit =
+
+ This will make players run fast in a certain area (replace coordinates):
+ zr_vol_add -492 -522 497 511 534 681 classedit speed=500
+
+* Changed model list to Valve's key/values format (same as classes use). Now
+ it's possible to separate models into different groups and teams.
+
+* There's a compatibility fix in classes for servers with plugins that change
+ models. "model_path" in a class can be set to "no_change" so model can be
+ changed by another plugin than Zombie:Reloaded.
+
+* The user manual is converted to a nice looking HTML manual with links for
+ quick navigation. Don't forget to have a look at it, at least if you have
+ problems.
+
+ Troubleshooting section is updated with explanation of all error messages
+ and some info about common problems. Otherwise look at the configuration
+ section on how to configure every feature.
+
+
+Richard Helgeby &
Greyscale
-
-
-Changelog
------------
-Added a cvar to either reset the burn time when naded, or to use the original burn-time. (r408)
-Added norwegian translations. (r413)
-Added cvars for disallowing class selection, per team. (r421)
-Added cvar to redisplay class selection menu every spawn. (r424)
-Added feature for allowing instant class change on humans after spawning, with a time limit. (r424)
-Added feature for using group based authentication on admin commands in Zombie:Reloaded, using SourceMod groups. (425)
-Added support for group authentication on classes (makes VIP and donator classes possible). (r427)
-Added feature for saving class selections in cookies. (r432)
-Added zr_version command for dumping version info. Useful when reporting problems. (r442)
-Added support for Grenade Pack plugin (by Greyscale). (r447)
-Added class editor volumetric feature that can modify certain class attributes on players in a volume. (r469)
-Added HTML version of the user manual. (r486)
-Added more random model selection presets for classes: public, admins, hidden and mother zombies. (r506)
-Added cvar for displaying class menu on first spawn. (r518)
-Changed lightstyle cvar default to be disabled. (r414)
-Changed classes to support not changing player model (for compatibility with other plugins). (r431)
-Changed maximum class limit to 48 classes. (r478)
-Changed class dumping commands to admin commands. (r479)
-Changed sky and sun cvars default to be disabled (to mach default lightstyle setting). (r483)
-Changed default setting to allow humans to use teleport after mother zombie spawn. (r486)
-Changed admin teleport command to also log target names. (r493)
-Changed map config files to be loaded at correct time. (r500)
-Changed model config to key/value format and improved model module features. (r506)
-Fixed translation buffers too short for languages that use unicode characters. (r409)
-Fixed some potential problems in ZMarket handling NVGs. (r410)
-Fixed some menus not properly translating into the client's language. (r411)
-Fixed translation issues in class menus (r412).
-Fixed ZMarket auto-rebuy possibly being stuck on if market was disabled. Now auto-disables if market is disabled. (r416)
-Fixed missing quote in english translation file. (r421)
-Fixed default class assignment assigning classes players doesn't have access to. (r433)
-Fixed teleport not resetting velocity. (r434)
-Fixed no fall damage class attribute not working on human classes. (r435)
-Fixed weapon type restriction menu not translating the first time. (r443)
-Fixed ZMarket weapon type selection menu title not translated.
-Fixed too short title string buffer in ZMarket loadout, ZTele force, ZSpawn force and hit group menus. (r443)
-Fixed "empty" phrase not translated. (r443)
-Fixed on/off translation string space too short in hit group menu. (r443)
-Fixed not all grenades being removed when infected. (r458)
-Fixed players ignited twice on some anticamp volumes. (r561)
-Fixed health regeneration timer not stopping if a player were kicked or timed out. (r469)
-Fixed existing volumes not removed after a map change. (r469)
-Fixed server console not having full access to admin commands. (r488)
-Fixed memory leak in ZMarket. (r489)
-Fixed memory leak in model list parser. (r492)
-Fixed timer handle error on map end. (r500)
-Fixed ambience sound still playing when disabled. (r520)
-Fixed health regeneration timer handle error. (r527)
-Fixed zr_class_set_multiplier not aborting when there's a invalid attribute name specified. (r529)
-Fixed broken FOV. (r542)
+
+
+Changelog
+-----------
+Added a cvar to either reset the burn time when naded, or to use the original burn-time. (r408)
+Added norwegian translations. (r413)
+Added cvars for disallowing class selection, per team. (r421)
+Added cvar to redisplay class selection menu every spawn. (r424)
+Added feature for allowing instant class change on humans after spawning, with a time limit. (r424)
+Added feature for using group based authentication on admin commands in Zombie:Reloaded, using SourceMod groups. (425)
+Added support for group authentication on classes (makes VIP and donator classes possible). (r427)
+Added feature for saving class selections in cookies. (r432)
+Added zr_version command for dumping version info. Useful when reporting problems. (r442)
+Added support for Grenade Pack plugin (by Greyscale). (r447)
+Added class editor volumetric feature that can modify certain class attributes on players in a volume. (r469)
+Added HTML version of the user manual. (r486)
+Added more random model selection presets for classes: public, admins, hidden and mother zombies. (r506)
+Added cvar for displaying class menu on first spawn. (r518)
+Changed lightstyle cvar default to be disabled. (r414)
+Changed classes to support not changing player model (for compatibility with other plugins). (r431)
+Changed maximum class limit to 48 classes. (r478)
+Changed class dumping commands to admin commands. (r479)
+Changed sky and sun cvars default to be disabled (to mach default lightstyle setting). (r483)
+Changed default setting to allow humans to use teleport after mother zombie spawn. (r486)
+Changed admin teleport command to also log target names. (r493)
+Changed map config files to be loaded at correct time. (r500)
+Changed model config to key/value format and improved model module features. (r506)
+Fixed translation buffers too short for languages that use unicode characters. (r409)
+Fixed some potential problems in ZMarket handling NVGs. (r410)
+Fixed some menus not properly translating into the client's language. (r411)
+Fixed translation issues in class menus (r412).
+Fixed ZMarket auto-rebuy possibly being stuck on if market was disabled. Now auto-disables if market is disabled. (r416)
+Fixed missing quote in english translation file. (r421)
+Fixed default class assignment assigning classes players doesn't have access to. (r433)
+Fixed teleport not resetting velocity. (r434)
+Fixed no fall damage class attribute not working on human classes. (r435)
+Fixed weapon type restriction menu not translating the first time. (r443)
+Fixed ZMarket weapon type selection menu title not translated.
+Fixed too short title string buffer in ZMarket loadout, ZTele force, ZSpawn force and hit group menus. (r443)
+Fixed "empty" phrase not translated. (r443)
+Fixed on/off translation string space too short in hit group menu. (r443)
+Fixed not all grenades being removed when infected. (r458)
+Fixed players ignited twice on some anticamp volumes. (r561)
+Fixed health regeneration timer not stopping if a player were kicked or timed out. (r469)
+Fixed existing volumes not removed after a map change. (r469)
+Fixed server console not having full access to admin commands. (r488)
+Fixed memory leak in ZMarket. (r489)
+Fixed memory leak in model list parser. (r492)
+Fixed timer handle error on map end. (r500)
+Fixed ambience sound still playing when disabled. (r520)
+Fixed health regeneration timer handle error. (r527)
+Fixed zr_class_set_multiplier not aborting when there's a invalid attribute name specified. (r529)
+Fixed broken FOV. (r542)
diff --git a/docs/old/zr_3.0_release_notes.txt b/docs/old/zr_3.0_release_notes.txt
index e0abd82..d3e0c02 100644
--- a/docs/old/zr_3.0_release_notes.txt
+++ b/docs/old/zr_3.0_release_notes.txt
@@ -1,57 +1,57 @@
-===============================================================================
-
- Zombie:Reloaded Release Notes
-
- Targets plugin version 3.0.0 Beta 1, 2009.07.25
- Written by Richard Helgeby
-
- Last modified: 2009.12.11
-
+===============================================================================
+
+ Zombie:Reloaded Release Notes
+
+ Targets plugin version 3.0.0 Beta 1, 2009.07.25
+ Written by Richard Helgeby
+
+ Last modified: 2009.12.11
+
===============================================================================
Release Notes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-This is a major release and it do break compatibility with older configuration!
+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
-(source have reached 30 000 lines total). 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 do more.
-
-UPDATE: See "zr_3.0-b2_release_notes.txt" for changes in Beta 2.
-
-
-Richard Helgeby &
+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
+(source have reached 30 000 lines total). 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 do more.
+
+UPDATE: See "zr_3.0-b2_release_notes.txt" for changes in Beta 2.
+
+
+Richard Helgeby &
Greyscale
OVERVIEW OF MAJOR CHANGES
---------------------------
-* New configuration style. Configuration files and CVARs are also validated so
+* 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
+ 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
+ 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
@@ -62,10 +62,10 @@ OVERVIEW OF MAJOR CHANGES
* 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
+* 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
@@ -80,8 +80,8 @@ 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
+The validation prevents unexpected or invalid behaviour in the plugin. Dealing
+with errors or warnings in error logs helps a lot troubleshooting eventual
issues in the plugin caused by incorrect configurations.
It's also possible to specify the path of configuration files. This can be used
@@ -91,14 +91,14 @@ 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
+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
@@ -108,26 +108,26 @@ 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
+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.
-
+
+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
------------------------
@@ -165,11 +165,11 @@ certain stuff on players. These are the available features:
- 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.
+
+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
@@ -208,7 +208,7 @@ or do generic commands. That is:
LOGGING SYSTEM
----------------
-The logging system is based on logging flags and filtering that gives full
+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:
@@ -222,7 +222,7 @@ There are a few generic log events and settings, like these:
- Debug messages, if any. Usually only developers use this one.
- - Debug messages with more detail. It may cause spam, but this can be
+ - 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
@@ -233,6 +233,6 @@ There are a few generic log events and settings, like these:
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.
+
+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_3.1_release_notes.txt b/docs/zr_3.1_release_notes.txt
index e832bd1..12ccd69 100644
--- a/docs/zr_3.1_release_notes.txt
+++ b/docs/zr_3.1_release_notes.txt
@@ -1,221 +1,221 @@
-===============================================================================
-
- Zombie:Reloaded Release Notes
- Version 3.1.0
-
- Written by Richard Helgeby
-
-===============================================================================
-
-Release Notes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Zombie:Reloaded is now mature enough to be called stable and we bump the version
-to 3.1. The patches since the beta 2 release have fixed several issues and
-improved a few things.
-
-There's no official CS: GO support yet, as it's not our primary focus.
-
-
-Richard Helgeby &
-Greyscale
-
-2013.01.12
-
-
-MAJOR NEWS IN THIS RELEASE
-----------------------------
-
-IMMUNITY MODES
-
-Immunity modes is an old idea that has been around since ZR 3.0 beta 1. It was
-never given priority, until now.
-
-These modes change the way attacks are received either as zombie or human. It's
-now possible to do the following:
-
- * Slow infection. Zombies can hurt humans so they'll loose HP. Either humans
- are stabbed to death, or they can be infected if go below a HP threshold. If
- some maps have medkits (or implement them) humans will get multiple chances
- of getting away from zombies.
-
- * Delayed infection. Instead of instantly turning a zombie, the infection is
- delayed a few seconds (customizable). It's also possible to enable that
- subsequent zombie attacks will reduce the delay by a certain amount of
- seconds and speedup the infection. A possible feature that can be
- implemented later is a cure for infection so that humans can cure themself
- before the time is up.
-
- * Instant kill. Zombies will instantly kill humans when attacking instead of
- infecting.
-
- * Block damage. Zombies can't take damage from humans, but are still
- vulnerable to knock back. With this mode, humans can only win by surviving
- the entire round.
-
- * Deploy a shield. This is a temporary immunity mode similar to TF2's
- übercharge and activated by the "zshield" command (in chat or console).
- Humans will be immune to infection and zombies will not receive knock back
- (they still receive damage). The shield only last for a few seconds and need
- a cooldown before it can be used again. Both values can be customized.
- Currently there are no visual effects when the shield is deployed, but this
- makes it possible for humans to use themself as a decoy.
-
- * Be completely immune. Humans can't be infected and zombies don't receive
- damage or knock back. There's no use for this mode itself and it will break
- the game, but it's there if someone want to be creative with addon plugins.
- It's practically the same as a permanent spawn protection, only that it
- works on zombie classes too.
-
-It's of course possible to make various classes with different modes, so you're
-not bound to use only one of them.
-
-These modes can drastically improve the gameplay and make it more fun to play.
-
-
-INFECTION MODES
-
-It's now possible to get better control of how many humans that are infected
-when the round has started. It has three modes:
-
- * Dynamic (default). This is the old one that scales number of zombies
- according to a ratio and number of players on the server.
-
- * Absolute. Infect an absolute number of humans. This mode also has an option
- to invert the infection so that everyone but a small group of humans are
- infected (like a survivor game mode).
-
- * Range. Infects a random number of players between a minimum and maximum
- range.
-
-
-GAME MODE CONFIGS
-
-With the introduction of immunity modes and infection modes it's possible to
-make a few game modes. These are not real game modes, but various configurations
-of Zombie:Reloaded.
-
-A few example configs are provided (based on the Zombie Plague plugin):
-
- * Nemesis. Only one zombie is spawned, but it's very powerful and do instant
- kills (64K HP, speed, jump boost, and very low knock back). Humans must
- survive the round or kill it. Teamwork is essential in this mode.
-
- * Survivor. Everyone is infected but a small group of humans.
-
- * Swarm. 50% is infected. Humans fight to the death - humans are stabbed to
- death instead of infected. This requires a post map config to modify the
- immunity mode on all humans.
-
-When the map is changed or reloaded the default configuration is restored. You
-need to use map configs to enable these modes. It might work to enable some of
-them after the map is loaded, but some modes require the class config to be
-reloaded and reapplied on all players (zr_config_reload and zr_class_reload
-commands).
-
-
-INSTALLATION
---------------
-
-Install the following requirements:
-
-* Metamod:Source 1.8.6+
- http://sourcemm.net/
-
-* SourceMod 1.4.0+
- http://sourcemod.net/
-
-* SDK Hooks extension 2.0+
- http://forums.alliedmods.net/showthread.php?t=106748
-
-The version numbers listed above are minimum requirements. You should always get
-the latest stable version.
-
-See their documentation on how to install the requirements. Though, SDK Hooks is
-easily installed by just extracting the contents into the "cstrike" folder on
-the dedicated server and all files should go in the correct folders.
-
-Note: Verify that both Metamod:Source and SourceMod is running before
- continuing. Type these commands in the server console: "meta version" and
- "sm version". If both give version information it's working. If not, go
- through their installation instructions again and verify that everything
- is in the correct place.
-
-When the requirements are installed the Zombie:Reloaded release package can be
-extracted into the "cstrike" folder and all files should go in the correct
-place.
-
-Start the dedicated server and verify that Zombie:Reloaded is running by typing
-this command in the server console: "zr_version".
-
-Check the SourceMod error logs if it's not working. Zombie:Reloaded will
-validate and log errors if something is wrong. Look for messages from
-zombiereloaded.smx.
-
-See the manual in docs/zr_manual.htm for details about configuration settings.
-It's recommended to look through it to get to know details about the features
-and how to configure them. Make sure you check it before reporting problems.
-
-
-SOURCE CODE
--------------
-
-The source code is bundled in every release and patch. It's located in
-addons/sourcemod/scripting/ and prepared to compile once the SDK Hooks include
-file is installed.
-
-Source code repositories with build scripts are available on our side at Google
-Code:
-
- * http://code.google.com/p/zombiereloaded/wiki/Source?tm=4
-
-The repositories are bundled with all requirements except Mercurial itself and
-should compile out of box.
-
-Snapshot builds will be available at:
-
- * http://code.google.com/p/zombiereloaded/downloads/list
- * http://www.helgeby.net/zrdev/release/auto/zr-3.1
-
-Note that helgeby.net has limited bandwith and if we want a few people to try a
-certain snapshot we'll upload it on our site at Google Code for faster
-downloads.
-
-Also note that we don't support snapshot builds. Only official releases and
-patches are supported.
-
-
-ADDON PLUGINS
----------------
-
-A few people from the Allied Modders community have developed some addon plugins
-as a supplement to Zombie:Reloaded. A list of them are available here:
-
- * http://forums.alliedmods.net/showthread.php?t=159596
-
-
-LIST OF CHANGES
------------------
-
-These are the changes since the beta 2 release:
-
- * Many bug fixes and minor changes (50+).
- * Added a cvar to allow zombies to pick up weapons at the end of the round.
- * Added scream and moan commands for zombies, with spam protection.
- * Added cvar to enable suicide intercept before the first zombie.
- * Added cvar for minimum dx level on overlays.
- * Added validation error messages for individual attributes when loading
- classes. Easier than reading bits from a number.
- * Added external plugin API for ZR with basic infection, respawn and class
- tools.
- * Added improved random number generator from SMLIB. (Better random zombie
- selection, etc.)
- * Added infection countdown.
- * Added cvar for disabling team balancing on round end (when using a custom
- team balancing plugin).
- * Added knock back boost workaround for CS: GO.
- * Added immunity modes.
- * Added infection modes.
- * Changed class limit to 64 classes.
- * Changed Zombie:Reloaded to use the SDK Hooks extension instead of our old ZR
- Tools extension.
+===============================================================================
+
+ Zombie:Reloaded Release Notes
+ Version 3.1.0
+
+ Written by Richard Helgeby
+
+===============================================================================
+
+Release Notes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Zombie:Reloaded is now mature enough to be called stable and we bump the version
+to 3.1. The patches since the beta 2 release have fixed several issues and
+improved a few things.
+
+There's no official CS: GO support yet, as it's not our primary focus.
+
+
+Richard Helgeby &
+Greyscale
+
+2013.01.12
+
+
+MAJOR NEWS IN THIS RELEASE
+----------------------------
+
+IMMUNITY MODES
+
+Immunity modes is an old idea that has been around since ZR 3.0 beta 1. It was
+never given priority, until now.
+
+These modes change the way attacks are received either as zombie or human. It's
+now possible to do the following:
+
+ * Slow infection. Zombies can hurt humans so they'll loose HP. Either humans
+ are stabbed to death, or they can be infected if go below a HP threshold. If
+ some maps have medkits (or implement them) humans will get multiple chances
+ of getting away from zombies.
+
+ * Delayed infection. Instead of instantly turning a zombie, the infection is
+ delayed a few seconds (customizable). It's also possible to enable that
+ subsequent zombie attacks will reduce the delay by a certain amount of
+ seconds and speedup the infection. A possible feature that can be
+ implemented later is a cure for infection so that humans can cure themself
+ before the time is up.
+
+ * Instant kill. Zombies will instantly kill humans when attacking instead of
+ infecting.
+
+ * Block damage. Zombies can't take damage from humans, but are still
+ vulnerable to knock back. With this mode, humans can only win by surviving
+ the entire round.
+
+ * Deploy a shield. This is a temporary immunity mode similar to TF2's
+ übercharge and activated by the "zshield" command (in chat or console).
+ Humans will be immune to infection and zombies will not receive knock back
+ (they still receive damage). The shield only last for a few seconds and need
+ a cooldown before it can be used again. Both values can be customized.
+ Currently there are no visual effects when the shield is deployed, but this
+ makes it possible for humans to use themself as a decoy.
+
+ * Be completely immune. Humans can't be infected and zombies don't receive
+ damage or knock back. There's no use for this mode itself and it will break
+ the game, but it's there if someone want to be creative with addon plugins.
+ It's practically the same as a permanent spawn protection, only that it
+ works on zombie classes too.
+
+It's of course possible to make various classes with different modes, so you're
+not bound to use only one of them.
+
+These modes can drastically improve the gameplay and make it more fun to play.
+
+
+INFECTION MODES
+
+It's now possible to get better control of how many humans that are infected
+when the round has started. It has three modes:
+
+ * Dynamic (default). This is the old one that scales number of zombies
+ according to a ratio and number of players on the server.
+
+ * Absolute. Infect an absolute number of humans. This mode also has an option
+ to invert the infection so that everyone but a small group of humans are
+ infected (like a survivor game mode).
+
+ * Range. Infects a random number of players between a minimum and maximum
+ range.
+
+
+GAME MODE CONFIGS
+
+With the introduction of immunity modes and infection modes it's possible to
+make a few game modes. These are not real game modes, but various configurations
+of Zombie:Reloaded.
+
+A few example configs are provided (based on the Zombie Plague plugin):
+
+ * Nemesis. Only one zombie is spawned, but it's very powerful and do instant
+ kills (64K HP, speed, jump boost, and very low knock back). Humans must
+ survive the round or kill it. Teamwork is essential in this mode.
+
+ * Survivor. Everyone is infected but a small group of humans.
+
+ * Swarm. 50% is infected. Humans fight to the death - humans are stabbed to
+ death instead of infected. This requires a post map config to modify the
+ immunity mode on all humans.
+
+When the map is changed or reloaded the default configuration is restored. You
+need to use map configs to enable these modes. It might work to enable some of
+them after the map is loaded, but some modes require the class config to be
+reloaded and reapplied on all players (zr_config_reload and zr_class_reload
+commands).
+
+
+INSTALLATION
+--------------
+
+Install the following requirements:
+
+* Metamod:Source 1.8.6+
+ http://sourcemm.net/
+
+* SourceMod 1.4.0+
+ http://sourcemod.net/
+
+* SDK Hooks extension 2.0+
+ http://forums.alliedmods.net/showthread.php?t=106748
+
+The version numbers listed above are minimum requirements. You should always get
+the latest stable version.
+
+See their documentation on how to install the requirements. Though, SDK Hooks is
+easily installed by just extracting the contents into the "cstrike" folder on
+the dedicated server and all files should go in the correct folders.
+
+Note: Verify that both Metamod:Source and SourceMod is running before
+ continuing. Type these commands in the server console: "meta version" and
+ "sm version". If both give version information it's working. If not, go
+ through their installation instructions again and verify that everything
+ is in the correct place.
+
+When the requirements are installed the Zombie:Reloaded release package can be
+extracted into the "cstrike" folder and all files should go in the correct
+place.
+
+Start the dedicated server and verify that Zombie:Reloaded is running by typing
+this command in the server console: "zr_version".
+
+Check the SourceMod error logs if it's not working. Zombie:Reloaded will
+validate and log errors if something is wrong. Look for messages from
+zombiereloaded.smx.
+
+See the manual in docs/zr_manual.htm for details about configuration settings.
+It's recommended to look through it to get to know details about the features
+and how to configure them. Make sure you check it before reporting problems.
+
+
+SOURCE CODE
+-------------
+
+The source code is bundled in every release and patch. It's located in
+addons/sourcemod/scripting/ and prepared to compile once the SDK Hooks include
+file is installed.
+
+Source code repositories with build scripts are available on our side at Google
+Code:
+
+ * http://code.google.com/p/zombiereloaded/wiki/Source?tm=4
+
+The repositories are bundled with all requirements except Mercurial itself and
+should compile out of box.
+
+Snapshot builds will be available at:
+
+ * http://code.google.com/p/zombiereloaded/downloads/list
+ * http://www.helgeby.net/zrdev/release/auto/zr-3.1
+
+Note that helgeby.net has limited bandwith and if we want a few people to try a
+certain snapshot we'll upload it on our site at Google Code for faster
+downloads.
+
+Also note that we don't support snapshot builds. Only official releases and
+patches are supported.
+
+
+ADDON PLUGINS
+---------------
+
+A few people from the Allied Modders community have developed some addon plugins
+as a supplement to Zombie:Reloaded. A list of them are available here:
+
+ * http://forums.alliedmods.net/showthread.php?t=159596
+
+
+LIST OF CHANGES
+-----------------
+
+These are the changes since the beta 2 release:
+
+ * Many bug fixes and minor changes (50+).
+ * Added a cvar to allow zombies to pick up weapons at the end of the round.
+ * Added scream and moan commands for zombies, with spam protection.
+ * Added cvar to enable suicide intercept before the first zombie.
+ * Added cvar for minimum dx level on overlays.
+ * Added validation error messages for individual attributes when loading
+ classes. Easier than reading bits from a number.
+ * Added external plugin API for ZR with basic infection, respawn and class
+ tools.
+ * Added improved random number generator from SMLIB. (Better random zombie
+ selection, etc.)
+ * Added infection countdown.
+ * Added cvar for disabling team balancing on round end (when using a custom
+ team balancing plugin).
+ * Added knock back boost workaround for CS: GO.
+ * Added immunity modes.
+ * Added infection modes.
+ * Changed class limit to 64 classes.
+ * Changed Zombie:Reloaded to use the SDK Hooks extension instead of our old ZR
+ Tools extension.
diff --git a/env/darwin/bin/spcomp-1.6.0 b/env/darwin/bin/spcomp-1.6.0
new file mode 100755
index 0000000..02df00e
Binary files /dev/null and b/env/darwin/bin/spcomp-1.6.0 differ
diff --git a/env/include/admin.inc b/env/include/admin.inc
index 0278156..40c5907 100644
--- a/env/include/admin.inc
+++ b/env/include/admin.inc
@@ -138,7 +138,7 @@ enum ImmunityType
*/
enum GroupId
{
- INVALID_GROUP_ID = -1, /**< An invalid/nonexistant group */
+ INVALID_GROUP_ID = -1, /**< An invalid/non-existent group */
};
/**
@@ -146,7 +146,7 @@ enum GroupId
*/
enum AdminId
{
- INVALID_ADMIN_ID = -1, /**< An invalid/nonexistant admin */
+ INVALID_ADMIN_ID = -1, /**< An invalid/non-existent admin */
};
/**
@@ -169,7 +169,7 @@ enum AdminCachePart
};
/**
- * Called when part of the cache which needs to be rebuilt.
+ * Called when part of the cache needs to be rebuilt.
*
* @param part Part of the admin cache to rebuild.
*/
@@ -324,7 +324,7 @@ native bool:GetAdmGroupCmdOverride(GroupId:id, const String:name[], OverrideType
* Registers an authentication identity type. You normally never need to call this except for
* very specific systems.
*
- * @param codename Codename to use for your authentication type.
+ * @param name Codename to use for your authentication type.
* @noreturn
*/
native RegisterAuthIdentType(const String:name[]);
@@ -347,7 +347,7 @@ native AdminId:CreateAdmin(const String:name[]="");
* @param maxlength Maximum size of string buffer.
* @return Number of bytes written.
*/
-native GetAdminUsername(AdminId:id, const String:name[], maxlength);
+native GetAdminUsername(AdminId:id, String:name[], maxlength);
/**
* Binds an admin to an identity for fast lookup later on. The bind must be unique.
@@ -425,7 +425,7 @@ native GroupId:GetAdminGroup(AdminId:id, index, const String:name[], maxlength);
* Sets a password on an admin.
*
* @param id AdminId index of the admin.
- * @param passwd String containing the password.
+ * @param password String containing the password.
* @noreturn
*/
native SetAdminPassword(AdminId:id, const String:password[]);
@@ -434,12 +434,12 @@ native SetAdminPassword(AdminId:id, const String:password[]);
* Gets an admin's password.
*
* @param id AdminId index of the admin.
- * @param name Optional buffer to store the admin's password.
+ * @param buffer Optional buffer to store the admin's password.
* @param maxlength Maximum size of the output name buffer.
* Note: This will safely chop UTF-8 strings.
* @return True if there was a password set, false otherwise.
*/
-native bool:GetAdminPassword(AdminId:id, const String:buffer[]="", maxlength=0);
+native bool:GetAdminPassword(AdminId:id, String:buffer[]="", maxlength=0);
/**
* Attempts to find an admin by an auth method and an identity.
@@ -537,7 +537,7 @@ native ReadFlagString(const String:flags[], &numchars=0);
/**
* Tests whether one admin can target another.
*
- * The hueristics for this check are as follows:
+ * The heuristics for this check are as follows:
* 0. If the targeting AdminId is INVALID_ADMIN_ID, targeting fails.
* 1. If the targeted AdminId is INVALID_ADMIN_ID, targeting succeeds.
* 2. If the targeted AdminId is the same as the targeting AdminId,
diff --git a/env/include/adt_array.inc b/env/include/adt_array.inc
index e8b81f6..798ae55 100644
--- a/env/include/adt_array.inc
+++ b/env/include/adt_array.inc
@@ -210,14 +210,14 @@ native SetArrayCell(Handle:array, index, any:value, block=0, bool:asChar=false);
* @return Number of characters copied.
* @error Invalid Handle or invalid index.
*/
-native SetArrayString(Handle:array, index, const String:buffer[]);
+native SetArrayString(Handle:array, index, const String:value[]);
/**
* Sets an array of cells in an array.
*
* @param array Array Handle.
* @param index Index in the array.
- * @param buffer Array to copy.
+ * @param values Array to copy.
* @param size If not set, assumes the buffer size is equal to the
* blocksize. Otherwise, the size passed is used.
* @return Number of cells copied.
diff --git a/env/include/adt_trie.inc b/env/include/adt_trie.inc
index 4de66fa..4e9f120 100644
--- a/env/include/adt_trie.inc
+++ b/env/include/adt_trie.inc
@@ -1,5 +1,5 @@
/**
- * vim: set ts=4 :
+ * vim: set ts=4 sw=4 tw=99 noet :
* =============================================================================
* SourceMod (C)2004-2008 AlliedModders LLC. All rights reserved.
* =============================================================================
@@ -36,35 +36,37 @@
#define _adt_trie_included
/**
- * Creates a Trie structure. A trie is a data storage object that maps any value to a
- * string of text. It features very fast lookup and deletion, but grows very slow for
- * insertion once tens of thousands of items are added.
+ * Creates a hash map. A hash map is a container that can map strings (called
+ * "keys") to arbitrary values (cells, arrays, or strings). Keys in a hash map
+ * are unique. That is, there is at most one entry in the map for a given key.
*
- * Keys in Tries are unique. That is, each key may only have one value. Unlike arrays,
- * Tries cannot be iterated right now. Since the contents are known to be unique, to
- * work around this, you can use ADT Arrays to store a list of keys known to be in a
- * Trie.
+ * Insertion, deletion, and lookup in a hash map are all considered to be fast
+ * operations, amortized to O(1), or constant time.
*
- * @return New Trie Handle, which must be freed via CloseHandle().
+ * The word "Trie" in this API is historical. As of SourceMod 1.6, tries have
+ * been internally replaced with hash tables, which have O(1) insertion time
+ * instead of O(n).
+ *
+ * @return New Map Handle, which must be freed via CloseHandle().
*/
native Handle:CreateTrie();
/**
- * Sets a value in a Trie, either inserting a new entry or replacing an old one.
+ * Sets a value in a hash map, either inserting a new entry or replacing an old one.
*
- * @param trie Trie Handle.
+ * @param map Map Handle.
* @param key Key string.
* @param value Value to store at this key.
* @param replace If false, operation will fail if the key is already set.
* @return True on success, false on failure.
* @error Invalid Handle.
*/
-native bool:SetTrieValue(Handle:trie, const String:key[], any:value, bool:replace=true);
+native bool:SetTrieValue(Handle:map, const String:key[], any:value, bool:replace=true);
/**
- * Sets an array value in a Trie, either inserting a new entry or replacing an old one.
+ * Sets an array value in a Map, either inserting a new entry or replacing an old one.
*
- * @param trie Trie Handle.
+ * @param map Map Handle.
* @param key Key string.
* @param array Array to store.
* @param num_items Number of items in the array.
@@ -72,36 +74,36 @@ native bool:SetTrieValue(Handle:trie, const String:key[], any:value, bool:replac
* @return True on success, false on failure.
* @error Invalid Handle.
*/
-native bool:SetTrieArray(Handle:trie, const String:key[], const any:array[], num_items, bool:replace=true);
+native bool:SetTrieArray(Handle:map, const String:key[], const any:array[], num_items, bool:replace=true);
/**
- * Sets a string value in a Trie, either inserting a new entry or replacing an old one.
+ * Sets a string value in a Map, either inserting a new entry or replacing an old one.
*
- * @param trie Trie Handle.
+ * @param map Map Handle.
* @param key Key string.
* @param value String to store.
* @param replace If false, operation will fail if the key is already set.
* @return True on success, false on failure.
* @error Invalid Handle.
*/
-native bool:SetTrieString(Handle:trie, const String:key[], const String:value[], bool:replace=true);
+native bool:SetTrieString(Handle:map, const String:key[], const String:value[], bool:replace=true);
/**
- * Retrieves a value in a Trie.
+ * Retrieves a value in a Map.
*
- * @param trie Trie Handle.
+ * @param map Map Handle.
* @param key Key string.
- * @param val Variable to store value.
+ * @param value Variable to store value.
* @return True on success. False if the key is not set, or the key is set
* as an array or string (not a value).
* @error Invalid Handle.
*/
-native bool:GetTrieValue(Handle:trie, const String:key[], &any:value);
+native bool:GetTrieValue(Handle:map, const String:key[], &any:value);
/**
- * Retrieves an array in a Trie.
+ * Retrieves an array in a Map.
*
- * @param trie Trie Handle.
+ * @param map Map Handle.
* @param key Key string.
* @param array Buffer to store array.
* @param max_size Maximum size of array buffer.
@@ -110,12 +112,12 @@ native bool:GetTrieValue(Handle:trie, const String:key[], &any:value);
* as a value or string (not an array).
* @error Invalid Handle.
*/
-native bool:GetTrieArray(Handle:trie, const String:key[], any:array[], max_size, &size=0);
+native bool:GetTrieArray(Handle:map, const String:key[], any:array[], max_size, &size=0);
/**
- * Retrieves a string in a Trie.
+ * Retrieves a string in a Map.
*
- * @param trie Trie Handle.
+ * @param map Map Handle.
* @param key Key string.
* @param value Buffer to store value.
* @param max_size Maximum size of string buffer.
@@ -124,34 +126,31 @@ native bool:GetTrieArray(Handle:trie, const String:key[], any:array[], max_size,
* as a value or array (not a string).
* @error Invalid Handle.
*/
-native bool:GetTrieString(Handle:trie, const String:key[], String:value[], max_size, &size=0);
+native bool:GetTrieString(Handle:map, const String:key[], String:value[], max_size, &size=0);
/**
- * Removes a key entry from a Trie.
+ * Removes a key entry from a Map.
*
- * @param trie Trie Handle.
+ * @param map Map Handle.
* @param key Key string.
* @return True on success, false if the value was never set.
* @error Invalid Handle.
*/
-native RemoveFromTrie(Handle:trie, const String:key[]);
+native RemoveFromTrie(Handle:map, const String:key[]);
/**
- * Clears all entries from a Trie.
+ * Clears all entries from a Map.
*
- * @param trie Trie Handle.
+ * @param map Map Handle.
* @error Invalid Handle.
*/
-native ClearTrie(Handle:trie);
+native ClearTrie(Handle:map);
/**
- * Retrieves the number of elements in a trie.
+ * Retrieves the number of elements in a map.
*
- * Note that trie items are not enumerable/iteratable. If you need to
- * retrieve the elements in a trie, store its keys in an ADT Array.
- *
- * @param trie Trie Handle.
+ * @param map Map Handle.
* @return Number of elements in the trie.
* @error Invalid Handle.
*/
-native GetTrieSize(Handle:trie);
+native GetTrieSize(Handle:map);
diff --git a/env/include/basecomm.inc b/env/include/basecomm.inc
index 8cfd319..832afbc 100644
--- a/env/include/basecomm.inc
+++ b/env/include/basecomm.inc
@@ -35,6 +35,22 @@
#endif
#define _basecomm_included
+/**
+ * Called when a client is muted or unmuted
+ *
+ * @param client Client index
+ * @param muteState True if client was muted, false otherwise
+ */
+ forward BaseComm_OnClientMute(client, bool:muteState);
+
+ /**
+ * Called when a client is gagged or ungagged
+ *
+ * @param client Client index
+ * @param gagState True if client was gaged, false otherwise
+ */
+ forward BaseComm_OnClientGag(client, bool:gagState);
+
/**
* Returns whether or not a client is gagged
*
diff --git a/env/include/clientprefs.inc b/env/include/clientprefs.inc
index 2a78a11..c6ac023 100644
--- a/env/include/clientprefs.inc
+++ b/env/include/clientprefs.inc
@@ -162,8 +162,8 @@ forward OnClientCookiesCached(client);
* Cookie Menu Callback prototype
*
* @param client Client index.
- * @param action CookeMenuAction being performed.
- * @param data Info data passed.
+ * @param action CookieMenuAction being performed.
+ * @param info Info data passed.
* @param buffer Outbut buffer.
* @param maxlen Max length of the output buffer.
*/
@@ -221,7 +221,6 @@ native Handle:GetCookieIterator();
* @param access Access level of the cookie.
* @param desc Cookie description buffer.
* @param descLen Cookie description buffer size.
- * @param
* @return True on success, false if there are no more commands.
*/
native bool:ReadCookieIterator(Handle:iter,
diff --git a/env/include/clients.inc b/env/include/clients.inc
index be1d5f0..13381c3 100644
--- a/env/include/clients.inc
+++ b/env/include/clients.inc
@@ -209,6 +209,21 @@ forward OnClientPostAdminCheck(client);
*/
native GetMaxClients();
+/**
+ * Returns the maximum number of human players allowed on the server. This is
+ * a game-specific function used on newer games to limit the number of humans
+ * that can join a game and can be lower than MaxClients. It is the number often
+ * reflected in the server browser or when viewing the output of the status command.
+ * On unsupported games or modes without overrides, it will return the same value
+ * as MaxClients.
+ *
+ * You should not globally cache the value to GetMaxHumanPlayers() because it can change across
+ * game modes. You may still cache it locally.
+ *
+ * @return Maximum number of humans allowed.
+ */
+native GetMaxHumanPlayers();
+
/**
* Returns the client count put in the server.
*
@@ -232,7 +247,7 @@ native bool:GetClientName(client, String:name[], maxlen);
* Retrieves a client's IP address.
*
* @param client Player index.
- * @param name Buffer to store the client's ip address.
+ * @param ip Buffer to store the client's ip address.
* @param maxlen Maximum length of string buffer (includes NULL terminator).
* @param remport Remove client's port from the ip string (true by default).
* @return True on success, false otherwise.
@@ -246,10 +261,25 @@ native bool:GetClientIP(client, String:ip[], maxlen, bool:remport=true);
* @param client Player index.
* @param auth Buffer to store the client's auth string.
* @param maxlen Maximum length of string buffer (includes NULL terminator).
+ * @param validate Check backend validation status.
+ * DO NOT PASS FALSE UNLESS YOU UNDERSTAND THE CONSEQUENCES,
+ * You WILL KNOW if you need to use this, MOST WILL NOT.
* @return True on success, false otherwise.
* @error If the client is not connected or the index is invalid.
*/
-native bool:GetClientAuthString(client, String:auth[], maxlen);
+native bool:GetClientAuthString(client, String:auth[], maxlen, bool:validate=true);
+
+/**
+ * Returns the client's Steam account ID.
+ *
+ * @param client Client Index.
+ * @param validate Check backend validation status.
+ * DO NOT PASS FALSE UNLESS YOU UNDERSTAND THE CONSEQUENCES,
+ * You WILL KNOW if you need to use this, MOST WILL NOT.
+ * @return Steam account ID or 0 if not available.
+ * @error If the client is not connected or the index is invalid.
+ */
+native GetSteamAccountID(client, bool:validate=true);
/**
* Retrieves a client's user id, which is an index incremented for every client
@@ -590,7 +620,7 @@ native GetClientFrags(client);
*
* @param client Player's index.
* @return Data rate.
- * @error Invalid client index, client not in game, or fake client.
+ * @error Invalid client index, client not connected, or fake client.
*/
native GetClientDataRate(client);
@@ -599,7 +629,7 @@ native GetClientDataRate(client);
*
* @param client Player's index.
* @return True if client is timing out, false otherwise.
- * @error Invalid client index, client not in game, or fake client.
+ * @error Invalid client index, client not connected, or fake client.
*/
native bool:IsClientTimingOut(client);
@@ -608,7 +638,7 @@ native bool:IsClientTimingOut(client);
*
* @param client Player's index.
* @return Connection time.
- * @error Invalid client index, client not in game, or fake client.
+ * @error Invalid client index, client not connected, or fake client.
*/
native Float:GetClientTime(client);
@@ -618,7 +648,7 @@ native Float:GetClientTime(client);
* @param client Player's index.
* @param flow Traffic flowing direction.
* @return Latency, or -1 if network info is not available.
- * @error Invalid client index, client not in game, or fake client.
+ * @error Invalid client index, client not connected, or fake client.
*/
native Float:GetClientLatency(client, NetFlow:flow);
@@ -628,7 +658,7 @@ native Float:GetClientLatency(client, NetFlow:flow);
* @param client Player's index.
* @param flow Traffic flowing direction.
* @return Latency, or -1 if network info is not available.
- * @error Invalid client index, client not in game, or fake client.
+ * @error Invalid client index, client not connected, or fake client.
*/
native Float:GetClientAvgLatency(client, NetFlow:flow);
@@ -638,7 +668,7 @@ native Float:GetClientAvgLatency(client, NetFlow:flow);
* @param client Player's index.
* @param flow Traffic flowing direction.
* @return Average packet loss, or -1 if network info is not available.
- * @error Invalid client index, client not in game, or fake client.
+ * @error Invalid client index, client not connected, or fake client.
*/
native Float:GetClientAvgLoss(client, NetFlow:flow);
@@ -648,7 +678,7 @@ native Float:GetClientAvgLoss(client, NetFlow:flow);
* @param client Player's index.
* @param flow Traffic flowing direction.
* @return Average packet loss, or -1 if network info is not available.
- * @error Invalid client index, client not in game, or fake client.
+ * @error Invalid client index, client not connected, or fake client.
*/
native Float:GetClientAvgChoke(client, NetFlow:flow);
@@ -658,7 +688,7 @@ native Float:GetClientAvgChoke(client, NetFlow:flow);
* @param client Player's index.
* @param flow Traffic flowing direction.
* @return Data flow.
- * @error Invalid client index, client not in game, or fake client.
+ * @error Invalid client index, client not connected, or fake client.
*/
native Float:GetClientAvgData(client, NetFlow:flow);
@@ -668,7 +698,7 @@ native Float:GetClientAvgData(client, NetFlow:flow);
* @param client Player's index.
* @param flow Traffic flowing direction.
* @return Packet frequency.
- * @error Invalid client index, client not in game, or fake client.
+ * @error Invalid client index, client not connected, or fake client.
*/
native Float:GetClientAvgPackets(client, NetFlow:flow);
@@ -733,6 +763,7 @@ native ChangeClientTeam(client, team);
/**
* Returns the clients unique serial identifier.
*
+ * @param client Client index.
* @return Serial number.
*/
native GetClientSerial(client);
@@ -740,6 +771,7 @@ native GetClientSerial(client);
/**
* Returns the client index by its serial number.
*
+ * @param serial Serial number.
* @return Client index, or 0 for invalid serial.
*/
native GetClientFromSerial(serial);
diff --git a/env/include/console.inc b/env/include/console.inc
index 140a059..d89bcbc 100644
--- a/env/include/console.inc
+++ b/env/include/console.inc
@@ -160,7 +160,7 @@ native ServerExecute();
*
* @param client Index of the client.
* @param fmt Format of the client command.
- * @param ... Format parameters/
+ * @param ... Format parameters
* @noreturn
* @error Invalid client index, or client not connected.
*/
@@ -324,7 +324,7 @@ native FormatActivitySource(client, target, const String:namebuf[], maxlength);
/**
* Called when a server-only command is invoked.
*
- * @params args Number of arguments that were in the argument string.
+ * @param args Number of arguments that were in the argument string.
* @return An Action value. Not handling the command
* means that Source will report it as "not found."
*/
@@ -358,7 +358,7 @@ functag public Action:ConCmd(client, args);
* Creates a console command, or hooks an already existing one.
*
* Console commands are case sensitive. However, if the command already exists in the game,
- * the a client may enter the command in any case. SourceMod corrects for this automatically,
+ * a client may enter the command in any case. SourceMod corrects for this automatically,
* and you should only hook the "real" version of the command.
*
* @param cmd Name of the command to hook or create.
@@ -703,7 +703,7 @@ funcenum ConVarQueryFinished
* Starts a query to retrieve the value of a client's console variable.
*
* @param client Player index.
- * @param name Name of client convar to query.
+ * @param cvarName Name of client convar to query.
* @param callback A function to use as a callback when the query has finished.
* @param value Optional value to pass to the callback function.
* @return A cookie that uniquely identifies the query.
@@ -938,3 +938,34 @@ native bool:AddCommandListener(CommandListener:callback, const String:command[]=
*/
native RemoveCommandListener(CommandListener:callback, const String:command[]="");
+/**
+ * Returns true if the supplied command exists.
+ *
+ * @param command Command to find.
+ * @return True if command is found, false otherwise.
+ */
+stock bool:CommandExists(const String:command[])
+{
+ return (GetCommandFlags(command) != INVALID_FCVAR_FLAGS);
+}
+/**
+ * Global listener for the chat commands.
+ *
+ * @param client Client index.
+ * @param command Command name.
+ * @param sArgs Chat argument string.
+ *
+ * @return An Action value. Returning Plugin_Handled bypasses the game function call.
+ Returning Plugin_Stop bypasses the post hook as well as the game function.
+ */
+forward Action:OnClientSayCommand(client, const String:command[], const String:sArgs[]);
+
+/**
+ * Global post listener for the chat commands.
+ *
+ * @param client Client index.
+ * @param command Command name.
+ * @param sArgs Chat argument string.
+ *
+ */
+forward OnClientSayCommand_Post(client, const String:command[], const String:sArgs[]);
diff --git a/env/include/core.inc b/env/include/core.inc
index 13ae42a..262e186 100644
--- a/env/include/core.inc
+++ b/env/include/core.inc
@@ -167,6 +167,67 @@ public __ext_core_SetNTVOptional()
MarkNativeAsOptional("RequireFeature");
MarkNativeAsOptional("AddCommandListener");
MarkNativeAsOptional("RemoveCommandListener");
+
+ MarkNativeAsOptional("BfWriteBool");
+ MarkNativeAsOptional("BfWriteByte");
+ MarkNativeAsOptional("BfWriteChar");
+ MarkNativeAsOptional("BfWriteShort");
+ MarkNativeAsOptional("BfWriteWord");
+ MarkNativeAsOptional("BfWriteNum");
+ MarkNativeAsOptional("BfWriteFloat");
+ MarkNativeAsOptional("BfWriteString");
+ MarkNativeAsOptional("BfWriteEntity");
+ MarkNativeAsOptional("BfWriteAngle");
+ MarkNativeAsOptional("BfWriteCoord");
+ MarkNativeAsOptional("BfWriteVecCoord");
+ MarkNativeAsOptional("BfWriteVecNormal");
+ MarkNativeAsOptional("BfWriteAngles");
+ MarkNativeAsOptional("BfReadBool");
+ MarkNativeAsOptional("BfReadByte");
+ MarkNativeAsOptional("BfReadChar");
+ MarkNativeAsOptional("BfReadShort");
+ MarkNativeAsOptional("BfReadWord");
+ MarkNativeAsOptional("BfReadNum");
+ MarkNativeAsOptional("BfReadFloat");
+ MarkNativeAsOptional("BfReadString");
+ MarkNativeAsOptional("BfReadEntity");
+ MarkNativeAsOptional("BfReadAngle");
+ MarkNativeAsOptional("BfReadCoord");
+ MarkNativeAsOptional("BfReadVecCoord");
+ MarkNativeAsOptional("BfReadVecNormal");
+ MarkNativeAsOptional("BfReadAngles");
+ MarkNativeAsOptional("BfGetNumBytesLeft");
+
+ MarkNativeAsOptional("PbReadInt");
+ MarkNativeAsOptional("PbReadFloat");
+ MarkNativeAsOptional("PbReadBool");
+ MarkNativeAsOptional("PbReadString");
+ MarkNativeAsOptional("PbReadColor");
+ MarkNativeAsOptional("PbReadAngle");
+ MarkNativeAsOptional("PbReadVector");
+ MarkNativeAsOptional("PbReadVector2D");
+ MarkNativeAsOptional("PbGetRepeatedFieldCount");
+ MarkNativeAsOptional("PbSetInt");
+ MarkNativeAsOptional("PbSetFloat");
+ MarkNativeAsOptional("PbSetBool");
+ MarkNativeAsOptional("PbSetString");
+ MarkNativeAsOptional("PbSetColor");
+ MarkNativeAsOptional("PbSetAngle");
+ MarkNativeAsOptional("PbSetVector");
+ MarkNativeAsOptional("PbSetVector2D");
+ MarkNativeAsOptional("PbAddInt");
+ MarkNativeAsOptional("PbAddFloat");
+ MarkNativeAsOptional("PbAddBool");
+ MarkNativeAsOptional("PbAddString");
+ MarkNativeAsOptional("PbAddColor");
+ MarkNativeAsOptional("PbAddAngle");
+ MarkNativeAsOptional("PbAddVector");
+ MarkNativeAsOptional("PbAddVector2D");
+ MarkNativeAsOptional("PbRemoveRepeatedFieldValue");
+ MarkNativeAsOptional("PbReadMessage");
+ MarkNativeAsOptional("PbReadRepeatedMessage");
+ MarkNativeAsOptional("PbAddMessage");
+
VerifyCoreVersion();
}
diff --git a/env/include/cstrike.inc b/env/include/cstrike.inc
index 2d82a14..45ccac0 100644
--- a/env/include/cstrike.inc
+++ b/env/include/cstrike.inc
@@ -42,66 +42,95 @@
#define CS_SLOT_PRIMARY 0 /**< Primary weapon slot. */
#define CS_SLOT_SECONDARY 1 /**< Secondary weapon slot. */
+#define CS_SLOT_KNIFE 2 /**< Knife slot. */
#define CS_SLOT_GRENADE 3 /**< Grenade slot (will only return one grenade). */
#define CS_SLOT_C4 4 /**< C4 slot. */
+#define CS_DMG_HEADSHOT (1 << 30) /**< Headshot */
+
enum CSRoundEndReason
{
- CSRoundEnd_TargetBombed = 0, // Target Successfully Bombed!
- CSRoundEnd_VIPEscaped, // The VIP has escaped!
- CSRoundEnd_VIPKilled, // VIP has been assassinated!
- CSRoundEnd_TerroristsEscaped, // The terrorists have escaped!
- CSRoundEnd_CTStoppedEscape, // The CTs have prevented most of the terrorists from escaping!
- CSRoundEnd_TerroristsStopped, // Escaping terrorists have all been neutralized!
- CSRoundEnd_BombDefused, // The bomb has been defused!
- CSRoundEnd_CTWin, // Counter-Terrorists Win!
- CSRoundEnd_TerroristWin, // Terrorists Win!
- CSRoundEnd_Draw, // Round Draw!
- CSRoundEnd_HostagesRescued, // All Hostages have been rescued!
- CSRoundEnd_TargetSaved, // Target has been saved!
- CSRoundEnd_HostagesNotRescued, // Hostages have not been rescued!
- CSRoundEnd_TerroristsNotEscaped, // Terrorists have not escaped!
- CSRoundEnd_VIPNotEscaped, // VIP has not escaped!
- CSRoundEnd_GameStart // Game Commencing!
+ CSRoundEnd_TargetBombed = 0, /**< Target Successfully Bombed! */
+ CSRoundEnd_VIPEscaped, /**< The VIP has escaped! */
+ CSRoundEnd_VIPKilled, /**< VIP has been assassinated! */
+ CSRoundEnd_TerroristsEscaped, /**< The terrorists have escaped! */
+ CSRoundEnd_CTStoppedEscape, /**< The CTs have prevented most of the terrorists from escaping! */
+ CSRoundEnd_TerroristsStopped, /**< Escaping terrorists have all been neutralized! */
+ CSRoundEnd_BombDefused, /**< The bomb has been defused! */
+ CSRoundEnd_CTWin, /**< Counter-Terrorists Win! */
+ CSRoundEnd_TerroristWin, /**< Terrorists Win! */
+ CSRoundEnd_Draw, /**< Round Draw! */
+ CSRoundEnd_HostagesRescued, /**< All Hostages have been rescued! */
+ CSRoundEnd_TargetSaved, /**< Target has been saved! */
+ CSRoundEnd_HostagesNotRescued, /**< Hostages have not been rescued! */
+ CSRoundEnd_TerroristsNotEscaped, /**< Terrorists have not escaped! */
+ CSRoundEnd_VIPNotEscaped, /**< VIP has not escaped! */
+ CSRoundEnd_GameStart, /**< Game Commencing! */
+
+ // The below only exist on CS:GO
+ CSRoundEnd_TerroristsSurrender, /**< Terrorists Surrender */
+ CSRoundEnd_CTSurrender, /**< CTs Surrender */
};
enum CSWeaponID
{
- CSWeapon_NONE,
- CSWeapon_P228,
- CSWeapon_GLOCK,
- CSWeapon_SCOUT,
- CSWeapon_HEGRENADE,
- CSWeapon_XM1014,
- CSWeapon_C4,
- CSWeapon_MAC10,
- CSWeapon_AUG,
- CSWeapon_SMOKEGRENADE,
- CSWeapon_ELITE,
- CSWeapon_FIVESEVEN,
- CSWeapon_UMP45,
- CSWeapon_SG550,
- CSWeapon_GALIL,
- CSWeapon_FAMAS,
- CSWeapon_USP,
- CSWeapon_AWP,
- CSWeapon_MP5NAVY,
- CSWeapon_M249,
- CSWeapon_M3,
- CSWeapon_M4A1,
- CSWeapon_TMP,
- CSWeapon_G3SG1,
- CSWeapon_FLASHBANG,
- CSWeapon_DEAGLE,
- CSWeapon_SG552,
- CSWeapon_AK47,
- CSWeapon_KNIFE,
- CSWeapon_P90,
- CSWeapon_SHIELD,
- CSWeapon_KEVLAR,
- CSWeapon_ASSAULTSUIT,
- CSWeapon_NIGHTVISION
+ CSWeapon_NONE = 0,
+ CSWeapon_P228,
+ CSWeapon_GLOCK,
+ CSWeapon_SCOUT,
+ CSWeapon_HEGRENADE,
+ CSWeapon_XM1014,
+ CSWeapon_C4,
+ CSWeapon_MAC10,
+ CSWeapon_AUG,
+ CSWeapon_SMOKEGRENADE,
+ CSWeapon_ELITE,
+ CSWeapon_FIVESEVEN,
+ CSWeapon_UMP45,
+ CSWeapon_SG550,
+ CSWeapon_GALIL,
+ CSWeapon_FAMAS,
+ CSWeapon_USP,
+ CSWeapon_AWP,
+ CSWeapon_MP5NAVY,
+ CSWeapon_M249,
+ CSWeapon_M3,
+ CSWeapon_M4A1,
+ CSWeapon_TMP,
+ CSWeapon_G3SG1,
+ CSWeapon_FLASHBANG,
+ CSWeapon_DEAGLE,
+ CSWeapon_SG552,
+ CSWeapon_AK47,
+ CSWeapon_KNIFE,
+ CSWeapon_P90,
+ CSWeapon_SHIELD,
+ CSWeapon_KEVLAR,
+ CSWeapon_ASSAULTSUIT,
+ CSWeapon_NIGHTVISION,
+ CSWeapon_GALILAR,
+ CSWeapon_BIZON,
+ CSWeapon_MAG7,
+ CSWeapon_NEGEV,
+ CSWeapon_SAWEDOFF,
+ CSWeapon_TEC9,
+ CSWeapon_TASER,
+ CSWeapon_HKP2000,
+ CSWeapon_MP7,
+ CSWeapon_MP9,
+ CSWeapon_NOVA,
+ CSWeapon_P250,
+ CSWeapon_SCAR17,
+ CSWeapon_SCAR20,
+ CSWeapon_SG556,
+ CSWeapon_SSG08,
+ CSWeapon_KNIFE_GG,
+ CSWeapon_MOLOTOV,
+ CSWeapon_DECOY,
+ CSWeapon_INCGRENADE,
+ CSWeapon_DEFUSER
};
+
/**
* Called when a player attempts to purchase an item.
* Return Plugin_Continue to allow the purchase or return a
@@ -118,7 +147,7 @@ forward Action:CS_OnBuyCommand(client, const String:weapon[]);
* higher action to deny.
*
* @param client Client index
- * @param weapon Weapon index
+ * @param weaponIndex Weapon index
*/
forward Action:CS_OnCSWeaponDrop(client, weaponIndex);
@@ -236,7 +265,120 @@ native CS_GetClientClanTag(client, String:buffer[], size);
* @error Invalid client.
*/
native CS_SetClientClanTag(client, const String:tag[]);
-
+
+/**
+ * Gets a team's score
+ * @param team Team index to get score for.
+ * @return Returns the internal team score.
+ *
+ * @error Invalid team index.
+ */
+native CS_GetTeamScore(team);
+
+/**
+ * Sets a team's score
+ * @param team Team index to set score for.
+ * @param value Value to set teams score as.
+ * @noreturn
+ *
+ * @error Invalid team index.
+ * @note This will update the scoreboard only after the scoreboard update function is called. Use SetTeamScore plus this to update the scoreboard instantly and save values correctly.
+ */
+native CS_SetTeamScore(team, value);
+
+/**
+ * Gets a client's mvp count
+ * @param client Client index to get mvp count of.
+ * @return Returns the client's internal MVP count.
+ *
+ * @error Invalid client.
+ */
+native CS_GetMVPCount(client);
+
+/**
+ * Sets a client's mvp count
+ * @param client Client index to set mvp count for.
+ * @param value Value to set client's mvp count as.
+ * @noreturn
+ *
+ * @error Invalid client.
+ */
+native CS_SetMVPCount(client, value);
+
+/**
+ * Gets a client's contribution score (CS:GO only)
+ * @param client Client index to get score of.
+ * @return Returns the client's score.
+ *
+ * @error Invalid client.
+ */
+native CS_GetClientContributionScore(client);
+
+/**
+ * Sets a client's contribution score (CS:GO only)
+ * @param client Client index to set score for.
+ * @param value Value to set client's score as.
+ * @noreturn
+ *
+ * @error Invalid client.
+ */
+native CS_SetClientContributionScore(client, value);
+
+/**
+ * Gets a client's assists (CS:GO only)
+ * @param client Client index to get assists of.
+ * @return Returns the client's assists.
+ *
+ * @error Invalid client.
+ */
+native CS_GetClientAssists(client);
+
+/**
+ * Sets a client's assists (CS:GO only)
+ * @param client Client index to set assists for.
+ * @param value Value to set client's assists as.
+ * @noreturn
+ *
+ * @error Invalid client.
+ */
+native CS_SetClientAssists(client, value);
+
+/**
+ * Gets a weaponID from a alias
+ * @param alias Weapon alias to attempt to get an id for.
+ * @return Returns a weapon id or 0 if failed to find a match.
+ *
+ * @note For best results use CS_GetTranslatedWeaponAlias on the weapon name before passing it.
+ */
+native CSWeaponID:CS_AliasToWeaponID(const String:alias[]);
+
+/**
+ * Gets a alias from a weaponID
+ * @param weaponID WeaponID to get alias for.
+ * @param destination Destination string to hold the weapon alias.
+ * @param len Length of the destination array.
+ * @return Returns number of cells written.
+ */
+native CS_WeaponIDToAlias(CSWeaponID:weaponID, String:destination[], len);
+
+/**
+ * Returns weather a WeaponID is valid on the current mod (css or csgo)
+ * @param weaponID WeaponID to check
+ * @return Returns true if its a valid WeaponID false otherwise.
+ *
+ * @note This will return false always for CSWeapon_NONE
+ */
+native bool:CS_IsValidWeaponID(CSWeaponID:id);
+
+/**
+ * Sets a player's model based on their current class
+ *
+ * @param client Player's index.
+ * @noreturn
+ * @error Invalid client index, client not in game.
+ */
+native CS_UpdateClientModel(client);
+
/**
* Do not edit below this line!
*/
@@ -263,6 +405,18 @@ public __ext_cstrike_SetNTVOptional()
MarkNativeAsOptional("CS_GetWeaponPrice");
MarkNativeAsOptional("CS_GetClientClanTag");
MarkNativeAsOptional("CS_SetClientClanTag");
+ MarkNativeAsOptional("CS_GetTeamScore");
+ MarkNativeAsOptional("CS_SetTeamScore");
+ MarkNativeAsOptional("CS_GetMVPCount");
+ MarkNativeAsOptional("CS_SetMVPCount");
+ MarkNativeAsOptional("CS_GetClientContributionScore");
+ MarkNativeAsOptional("CS_SetClientContributionScore");
+ MarkNativeAsOptional("CS_GetClientAssists");
+ MarkNativeAsOptional("CS_SetClientAssists");
+ MarkNativeAsOptional("CS_AliasToWeaponID");
+ MarkNativeAsOptional("CS_WeaponIDToAlias");
+ MarkNativeAsOptional("CS_IsValidWeaponID");
+ MarkNativeAsOptional("CS_UpdateClientModel");
}
#endif
diff --git a/env/include/datapack.inc b/env/include/datapack.inc
index 4ad8eb4..ce3d8b7 100644
--- a/env/include/datapack.inc
+++ b/env/include/datapack.inc
@@ -50,7 +50,7 @@ native Handle:CreateDataPack();
* @noreturn
* @error Invalid handle.
*/
-native WritePackCell(Handle:pack, cell);
+native WritePackCell(Handle:pack, any:cell);
/**
* Packs a float into a data pack.
@@ -79,7 +79,7 @@ native WritePackString(Handle:pack, const String:str[]);
* @return Cell value.
* @error Invalid handle, or bounds error.
*/
-native ReadPackCell(Handle:pack);
+native any:ReadPackCell(Handle:pack);
/**
* Reads a float from a data pack.
diff --git a/env/include/dbi.inc b/env/include/dbi.inc
index 175d1c6..bbb1d6e 100644
--- a/env/include/dbi.inc
+++ b/env/include/dbi.inc
@@ -137,6 +137,8 @@ stock Handle:SQL_DefConnect(String:error[], maxlength, bool:persistent=true)
* @param keyvalues Key/value pairs from a KeyValues handle, describing the connection.
* @param error Error buffer.
* @param maxlength Maximum length of the error buffer.
+ * @param persistent True to re-use a previous persistent connection if
+ * possible, false otherwise.
* @return A database connection Handle, or INVALID_HANDLE on failure.
* On failure the error buffer will be filled with a message.
* @error Invalid KeyValues handle.
@@ -249,6 +251,18 @@ native SQL_GetDriverIdent(Handle:driver, String:ident[], maxlength);
*/
native SQL_GetDriverProduct(Handle:driver, String:product[], maxlength);
+/**
+ * Sets the character set of the current connection.
+ * Like SET NAMES .. in mysql, but stays after connection problems.
+ *
+ * Example: "utf8", "latin1"
+ *
+ * @param database Database Handle.
+ * @param characterset The character set string to change to.
+ * @return True, if character set was changed, false otherwise.
+ */
+native bool:SQL_SetCharset(Handle:database, const String:charset[]);
+
/**
* Returns the number of affected rows from the last query.
*
@@ -292,7 +306,7 @@ native bool:SQL_GetError(Handle:hndl, String:error[], maxlength);
* encloses the string in ''. While drivers tend to allow " instead, the string
* may be not be escaped (for example, on SQLite)!
*
- * @param hndl A database Handle.
+ * @param database A database Handle.
* @param string String to quote.
* @param buffer Buffer to store quoted string in.
* @param maxlength Maximum length of the buffer.
@@ -557,7 +571,7 @@ native SQL_BindParamInt(Handle:statement, param, number, bool:signed=true);
*
* @param statement A statement (prepared query) Handle.
* @param param The parameter index (starting from 0).
- * @param float The float number to bind.
+ * @param value The float number to bind.
* @noreturn
* @error Invalid statement Handle or parameter index, or
* SQL error.
@@ -621,7 +635,7 @@ native SQL_UnlockDatabase(Handle:database);
/**
* General callback for threaded SQL stuff.
*
- * @param db Parent object of the Handle (or INVALID_HANDLE if none).
+ * @param owner Parent object of the Handle (or INVALID_HANDLE if none).
* @param hndl Handle to the child object (or INVALID_HANDLE if none).
* @param error Error string if there was an error. The error could be
* empty even if an error condition exists, so it is important
@@ -654,6 +668,7 @@ native bool:SQL_IsSameConnection(Handle:hndl1, Handle:hndl2);
* @param callback Callback; new Handle will be in hndl, owner is the driver.
* If no driver was found, the owner is INVALID_HANDLE.
* @param name Database name.
+ * @param data Extra data value to pass to the callback.
* @noreturn
*/
native SQL_TConnect(SQLTCallback:callback, const String:name[]="default", any:data=0);
@@ -679,3 +694,69 @@ native SQL_TConnect(SQLTCallback:callback, const String:name[]="default", any:da
* @error Invalid database Handle.
*/
native SQL_TQuery(Handle:database, SQLTCallback:callback, const String:query[], any:data=0, DBPriority:prio=DBPrio_Normal);
+
+/**
+ * Creates a new transaction object. A transaction object is a list of queries
+ * that can be sent to the database thread and executed as a single transaction.
+ *
+ * @return A transaction handle.
+ */
+native Handle:SQL_CreateTransaction();
+
+/**
+ * Adds a query to a transaction object.
+ *
+ * @param txn A transaction handle.
+ * @param query Query string.
+ * @param data Extra data value to pass to the final callback.
+ * @return The index of the query in the transaction's query list.
+ * @error Invalid transaction handle.
+ */
+native SQL_AddQuery(Handle:txn, const String:query[], any:data=0);
+
+/**
+ * Callback for a successful transaction.
+ *
+ * @param db Database handle.
+ * @param data Data value passed to SQL_ExecuteTransaction().
+ * @param numQueries Number of queries executed in the transaction.
+ * @param results An array of Query handle results, one for each of numQueries. They are closed automatically.
+ * @param queryData An array of each data value passed to SQL_AddQuery().
+ * @noreturn
+ */
+functag public SQLTxnSuccess(Handle:db, any:data, numQueries, Handle:results[], any:queryData[]);
+
+/**
+ * Callback for a failed transaction.
+ *
+ * @param db Database handle.
+ * @param data Data value passed to SQL_ExecuteTransaction().
+ * @param numQueries Number of queries executed in the transaction.
+ * @param error Error message.
+ * @param failIndex Index of the query that failed, or -1 if something else.
+ * @param queryData An array of each data value passed to SQL_AddQuery().
+ * @noreturn
+ */
+functag public SQLTxnFailure(Handle:db, any:data, numQueries, const String:error[], failIndex, any:queryData[]);
+
+/**
+ * Sends a transaction to the database thread. The transaction handle is
+ * automatically closed. When the transaction completes, the optional
+ * callback is invoked.
+ *
+ * @param db A database handle.
+ * @param txn A transaction handle.
+ * @param onSuccess An optional callback to receive a successful transaction.
+ * @param onError An optional callback to receive an error message.
+ * @param data An optional value to pass to callbacks.
+ * @param prio Priority queue to use.
+ * @noreturn
+ * @error An invalid handle.
+ */
+native SQL_ExecuteTransaction(
+ Handle:db,
+ Handle:txn,
+ SQLTxnSuccess:onSuccess=SQLTxnSuccess:-1,
+ SQLTxnFailure:onError=SQLTxnFailure:-1,
+ any:data=0,
+ DBPriority:priority=DBPrio_Normal);
diff --git a/env/include/entity.inc b/env/include/entity.inc
index 6fb8d7c..d33a3b8 100644
--- a/env/include/entity.inc
+++ b/env/include/entity.inc
@@ -226,6 +226,7 @@ native GetEntData(entity, offset, size=4);
*
* @param entity Edict index.
* @param offset Offset to use.
+ * @param value Value to set.
* @param size Number of bytes to write (valid values are 1, 2, or 4).
* @param changeState If true, change will be sent over the network.
* @return Value at the given memory location.
@@ -251,6 +252,7 @@ native Float:GetEntDataFloat(entity, offset);
*
* @param entity Edict index.
* @param offset Offset to use.
+ * @param value Value to set.
* @param changeState If true, change will be sent over the network.
* @return Value at the given memory location.
* @error Invalid entity or offset out of reasonable bounds.
@@ -281,7 +283,7 @@ native GetEntDataEnt(entity, offset);
* reasons explained in the notes.
*
* Note: This function uses 0 as an indicator to unset data, but
- * 0 is also the world entity index. Thus, the a property cannot
+ * 0 is also the world entity index. Thus, a property cannot
* be set to the world entity using this native.
*
* @param entity Edict index.
@@ -447,6 +449,26 @@ native FindDataMapOffs(entity,
const String:prop[],
&PropFieldType:type=PropFieldType:0,
&num_bits=0);
+
+/**
+ * Given an entity, finds a nested datamap property offset.
+ * This information is cached for future calls.
+ *
+ * @param entity Entity index.
+ * @param prop Property name.
+ * @param type Optional parameter to store the type.
+ * @param num_bits Optional parameter to store the number of bits the field
+ * uses. The bit count will either be 1 (for boolean) or
+ * divisible by 8 (including 0 if unknown).
+ * @param local_offset Optional parameter to store the local offset, as
+ * FindDataMapOffs() would return.
+ * @return An offset, or -1 on failure.
+ */
+native FindDataMapInfo(entity,
+ const String:prop[],
+ &PropFieldType:type=PropFieldType:0,
+ &num_bits=0,
+ &local_offset=0);
/**
* Wrapper function for finding a send property for a particular entity.
@@ -691,12 +713,21 @@ stock SetEntDataArray(entity, offset, const array[], arraySize, dataSize=4, bool
}
}
+/**
+ * Gets the memory address of an entity.
+ *
+ * @param entity Entity index.
+ * @return Address of the entity.
+ * @error Invalid entity.
+ */
+native Address:GetEntityAddress(entity);
+
/**
* Retrieves the classname of an entity.
* This is like GetEdictClassname(), except it works for ALL
* entities, not just edicts.
*
- * @param edict Index of the entity.
+ * @param entity Index of the entity.
* @param clsname Buffer to store the classname.
* @param maxlength Maximum length of the buffer.
* @return True on success, false if there is no classname set.
diff --git a/env/include/entity_prop_stocks.inc b/env/include/entity_prop_stocks.inc
index 91d7951..7f22b50 100644
--- a/env/include/entity_prop_stocks.inc
+++ b/env/include/entity_prop_stocks.inc
@@ -113,55 +113,56 @@ enum RenderFx
#define IN_RELOAD (1 << 13)
#define IN_ALT1 (1 << 14)
#define IN_ALT2 (1 << 15)
-#define IN_SCORE (1 << 16) // Used by client.dll for when scoreboard is held down
-#define IN_SPEED (1 << 17) // Player is holding the speed key
-#define IN_WALK (1 << 18) // Player holding walk key
-#define IN_ZOOM (1 << 19) // Zoom key for HUD zoom
-#define IN_WEAPON1 (1 << 20) // weapon defines these bits
-#define IN_WEAPON2 (1 << 21) // weapon defines these bits
+#define IN_SCORE (1 << 16) /**< Used by client.dll for when scoreboard is held down */
+#define IN_SPEED (1 << 17) /**< Player is holding the speed key */
+#define IN_WALK (1 << 18) /**< Player holding walk key */
+#define IN_ZOOM (1 << 19) /**< Zoom key for HUD zoom */
+#define IN_WEAPON1 (1 << 20) /**< weapon defines these bits */
+#define IN_WEAPON2 (1 << 21) /**< weapon defines these bits */
#define IN_BULLRUSH (1 << 22)
-#define IN_GRENADE1 (1 << 23) // grenade 1
-#define IN_GRENADE2 (1 << 24) // grenade 2
+#define IN_GRENADE1 (1 << 23) /**< grenade 1 */
+#define IN_GRENADE2 (1 << 24) /**< grenade 2 */
+#define IN_ATTACK3 (1 << 25)
// Note: these are only for use with GetEntityFlags and SetEntityFlags
// and may not match the game's actual, internal m_fFlags values.
// PLAYER SPECIFIC FLAGS FIRST BECAUSE WE USE ONLY A FEW BITS OF NETWORK PRECISION
-#define FL_ONGROUND (1 << 0) // At rest / on the ground
-#define FL_DUCKING (1 << 1) // Player flag -- Player is fully crouched
-#define FL_WATERJUMP (1 << 2) // player jumping out of water
-#define FL_ONTRAIN (1 << 3) // Player is _controlling_ a train, so movement commands should be ignored on client during prediction.
-#define FL_INRAIN (1 << 4) // Indicates the entity is standing in rain
-#define FL_FROZEN (1 << 5) // Player is frozen for 3rd person camera
-#define FL_ATCONTROLS (1 << 6) // Player can't move, but keeps key inputs for controlling another entity
-#define FL_CLIENT (1 << 7) // Is a player
-#define FL_FAKECLIENT (1 << 8) // Fake client, simulated server side; don't send network messages to them
+#define FL_ONGROUND (1 << 0) /**< At rest / on the ground */
+#define FL_DUCKING (1 << 1) /**< Player flag -- Player is fully crouched */
+#define FL_WATERJUMP (1 << 2) /**< player jumping out of water */
+#define FL_ONTRAIN (1 << 3) /**< Player is _controlling_ a train, so movement commands should be ignored on client during prediction. */
+#define FL_INRAIN (1 << 4) /**< Indicates the entity is standing in rain */
+#define FL_FROZEN (1 << 5) /**< Player is frozen for 3rd person camera */
+#define FL_ATCONTROLS (1 << 6) /**< Player can't move, but keeps key inputs for controlling another entity */
+#define FL_CLIENT (1 << 7) /**< Is a player */
+#define FL_FAKECLIENT (1 << 8) /**< Fake client, simulated server side; don't send network messages to them */
// NOTE if you move things up, make sure to change this value
#define PLAYER_FLAG_BITS 9
// NON-PLAYER SPECIFIC (i.e., not used by GameMovement or the client .dll ) -- Can still be applied to players, though
-#define FL_INWATER (1 << 9) // In water
-#define FL_FLY (1 << 10) // Changes the SV_Movestep() behavior to not need to be on ground
-#define FL_SWIM (1 << 11) // Changes the SV_Movestep() behavior to not need to be on ground (but stay in water)
+#define FL_INWATER (1 << 9) /**< In water */
+#define FL_FLY (1 << 10) /**< Changes the SV_Movestep() behavior to not need to be on ground */
+#define FL_SWIM (1 << 11) /**< Changes the SV_Movestep() behavior to not need to be on ground (but stay in water) */
#define FL_CONVEYOR (1 << 12)
#define FL_NPC (1 << 13)
#define FL_GODMODE (1 << 14)
#define FL_NOTARGET (1 << 15)
-#define FL_AIMTARGET (1 << 16) // set if the crosshair needs to aim onto the entity
-#define FL_PARTIALGROUND (1 << 17) // not all corners are valid
-#define FL_STATICPROP (1 << 18) // Eetsa static prop!
-#define FL_GRAPHED (1 << 19) // worldgraph has this ent listed as something that blocks a connection
+#define FL_AIMTARGET (1 << 16) /**< set if the crosshair needs to aim onto the entity */
+#define FL_PARTIALGROUND (1 << 17) /**< not all corners are valid */
+#define FL_STATICPROP (1 << 18) /**< Eetsa static prop! */
+#define FL_GRAPHED (1 << 19) /**< worldgraph has this ent listed as something that blocks a connection */
#define FL_GRENADE (1 << 20)
-#define FL_STEPMOVEMENT (1 << 21) // Changes the SV_Movestep() behavior to not do any processing
-#define FL_DONTTOUCH (1 << 22) // Doesn't generate touch functions, generates Untouch() for anything it was touching when this flag was set
-#define FL_BASEVELOCITY (1 << 23) // Base velocity has been applied this frame (used to convert base velocity into momentum)
-#define FL_WORLDBRUSH (1 << 24) // Not moveable/removeable brush entity (really part of the world, but represented as an entity for transparency or something)
-#define FL_OBJECT (1 << 25) // Terrible name. This is an object that NPCs should see. Missiles, for example.
-#define FL_KILLME (1 << 26) // This entity is marked for death -- will be freed by game DLL
-#define FL_ONFIRE (1 << 27) // You know...
-#define FL_DISSOLVING (1 << 28) // We're dissolving!
-#define FL_TRANSRAGDOLL (1 << 29) // In the process of turning into a client side ragdoll.
-#define FL_UNBLOCKABLE_BY_PLAYER (1 << 30) // pusher that can't be blocked by the player
-#define FL_FREEZING (1 << 31) // We're becoming frozen!
-#define FL_EP2V_UNKNOWN1 (1 << 31) // Unknown
+#define FL_STEPMOVEMENT (1 << 21) /**< Changes the SV_Movestep() behavior to not do any processing */
+#define FL_DONTTOUCH (1 << 22) /**< Doesn't generate touch functions, generates Untouch() for anything it was touching when this flag was set */
+#define FL_BASEVELOCITY (1 << 23) /**< Base velocity has been applied this frame (used to convert base velocity into momentum) */
+#define FL_WORLDBRUSH (1 << 24) /**< Not moveable/removeable brush entity (really part of the world, but represented as an entity for transparency or something) */
+#define FL_OBJECT (1 << 25) /**< Terrible name. This is an object that NPCs should see. Missiles, for example. */
+#define FL_KILLME (1 << 26) /**< This entity is marked for death -- will be freed by game DLL */
+#define FL_ONFIRE (1 << 27) /**< You know... */
+#define FL_DISSOLVING (1 << 28) /**< We're dissolving! */
+#define FL_TRANSRAGDOLL (1 << 29) /**< In the process of turning into a client side ragdoll. */
+#define FL_UNBLOCKABLE_BY_PLAYER (1 << 30) /**< pusher that can't be blocked by the player */
+#define FL_FREEZING (1 << 31) /**< We're becoming frozen! */
+#define FL_EP2V_UNKNOWN1 (1 << 31) /**< Unknown */
// END entity flag #defines
/**
diff --git a/env/include/events.inc b/env/include/events.inc
index 3308fe7..d7e8f4c 100644
--- a/env/include/events.inc
+++ b/env/include/events.inc
@@ -235,7 +235,7 @@ native SetEventString(Handle:event, const String:key[], const String:value[]);
* Retrieves the name of a game event.
*
* @param event Handle to the event.
- * @param value Buffer to store the name of the event.
+ * @param name Buffer to store the name of the event.
* @param maxlength Maximum length of string buffer.
* @noreturn
* @error Invalid or corrupt Handle.
diff --git a/env/include/files.inc b/env/include/files.inc
index 8a4d2d2..f353deb 100644
--- a/env/include/files.inc
+++ b/env/include/files.inc
@@ -303,9 +303,9 @@ native FilePosition(Handle:file);
*
* @param path Path to the file.
* @param use_valve_fs If true, the Valve file system will be used instead.
- * This can be used to check for the existance of files
- * inside GCFs or the game cache, rather than solely files
- * that are on disk.
+ * This can be used to find files existing in any of
+ * the GAME search paths, rather than solely files
+ * existing directly in the gamedir.
* @return True if the file exists, false otherwise.
*/
native bool:FileExists(const String:path[], bool:use_valve_fs=false);
@@ -331,9 +331,13 @@ native bool:DirExists(const String:path[]);
* Get the file size in bytes.
*
* @param path Path to the file.
+ * @param use_valve_fs If true, the Valve file system will be used instead.
+ * This can be used to find files existing in any of
+ * the GAME search paths, rather than solely files
+ * existing directly in the gamedir.
* @return File size in bytes, -1 if file not found.
*/
-native FileSize(const String:path[]);
+native FileSize(const String:path[], bool:use_valve_fs=false);
/**
* Flushes a file's buffered output; any buffered output
diff --git a/env/include/float.inc b/env/include/float.inc
index 73a5c3e..1282158 100644
--- a/env/include/float.inc
+++ b/env/include/float.inc
@@ -246,10 +246,25 @@ stock RoundFloat(Float:value)
*/
#pragma rational Float
+native bool:__FLOAT_GT__(Float:a, Float:b);
+native bool:__FLOAT_GE__(Float:a, Float:b);
+native bool:__FLOAT_LT__(Float:a, Float:b);
+native bool:__FLOAT_LE__(Float:a, Float:b);
+native bool:__FLOAT_EQ__(Float:a, Float:b);
+native bool:__FLOAT_NE__(Float:a, Float:b);
+native bool:__FLOAT_NOT__(Float:a);
+
native Float:operator*(Float:oper1, Float:oper2) = FloatMul;
native Float:operator/(Float:oper1, Float:oper2) = FloatDiv;
native Float:operator+(Float:oper1, Float:oper2) = FloatAdd;
native Float:operator-(Float:oper1, Float:oper2) = FloatSub;
+native bool:operator!(Float:oper1) = __FLOAT_NOT__;
+native bool:operator>(Float:oper1, Float:oper2) = __FLOAT_GT__;
+native bool:operator>=(Float:oper1, Float:oper2) = __FLOAT_GE__;
+native bool:operator<(Float:oper1, Float:oper2) = __FLOAT_LT__;
+native bool:operator<=(Float:oper1, Float:oper2) = __FLOAT_LE__;
+native bool:operator!=(Float:oper1, Float:oper2) = __FLOAT_NE__;
+native bool:operator==(Float:oper1, Float:oper2) = __FLOAT_EQ__;
stock Float:operator++(Float:oper)
{
@@ -263,7 +278,7 @@ stock Float:operator--(Float:oper)
stock Float:operator-(Float:oper)
{
- return oper^Float:((-1)^((-1)/2)); /* IEEE values are sign/magnitude */
+ return oper^Float:cellmin; /* IEEE values are sign/magnitude */
}
stock Float:operator*(Float:oper1, oper2)
@@ -296,90 +311,54 @@ stock Float:operator-(oper1, Float:oper2)
return FloatSub(float(oper1), oper2);
}
-stock bool:operator==(Float:oper1, Float:oper2)
-{
- return FloatCompare(oper1, oper2) == 0;
-}
-
stock bool:operator==(Float:oper1, oper2)
{
- return FloatCompare(oper1, float(oper2)) == 0; /* "==" is commutative */
-}
-
-stock bool:operator!=(Float:oper1, Float:oper2)
-{
- return FloatCompare(oper1, oper2) != 0;
+ return __FLOAT_EQ__(oper1, float(oper2));
}
stock bool:operator!=(Float:oper1, oper2)
{
- return FloatCompare(oper1, float(oper2)) != 0; /* "==" is commutative */
-}
-
-stock bool:operator>(Float:oper1, Float:oper2)
-{
- return FloatCompare(oper1, oper2) > 0;
+ return __FLOAT_NE__(oper1, float(oper2));
}
stock bool:operator>(Float:oper1, oper2)
{
- return FloatCompare(oper1, float(oper2)) > 0;
+ return __FLOAT_GT__(oper1, float(oper2));
}
stock bool:operator>(oper1, Float:oper2)
{
- return FloatCompare(float(oper1), oper2) > 0;
-}
-
-stock bool:operator>=(Float:oper1, Float:oper2)
-{
- return FloatCompare(oper1, oper2) >= 0;
+ return __FLOAT_GT__(float(oper1), oper2);
}
stock bool:operator>=(Float:oper1, oper2)
{
- return FloatCompare(oper1, float(oper2)) >= 0;
+ return __FLOAT_GE__(oper1, float(oper2));
}
stock bool:operator>=(oper1, Float:oper2)
{
- return FloatCompare(float(oper1), oper2) >= 0;
-}
-
-stock bool:operator<(Float:oper1, Float:oper2)
-{
- return FloatCompare(oper1, oper2) < 0;
+ return __FLOAT_GE__(float(oper1), oper2);
}
stock bool:operator<(Float:oper1, oper2)
{
- return FloatCompare(oper1, float(oper2)) < 0;
+ return __FLOAT_LT__(oper1, float(oper2));
}
stock bool:operator<(oper1, Float:oper2)
{
- return FloatCompare(float(oper1), oper2) < 0;
-}
-
-stock bool:operator<=(Float:oper1, Float:oper2)
-{
- return FloatCompare(oper1, oper2) <= 0;
+ return __FLOAT_LT__(float(oper1), oper2);
}
stock bool:operator<=(Float:oper1, oper2)
{
- return FloatCompare(oper1, float(oper2)) <= 0;
+ return __FLOAT_LE__(oper1, float(oper2));
}
stock bool:operator<=(oper1, Float:oper2)
{
- return FloatCompare(float(oper1), oper2) <= 0;
-}
-
-stock bool:operator!(Float:oper)
-{
- return (_:oper & ((-1)/2)) == 0; /* -1 = all bits to 1; /2 = remove most significant bit (sign)
- works on both 32bit and 64bit systems; no constant required */
+ return __FLOAT_LE__(float(oper1), oper2);
}
/**
diff --git a/env/include/functions.inc b/env/include/functions.inc
index 1a6ddcb..105f1d2 100644
--- a/env/include/functions.inc
+++ b/env/include/functions.inc
@@ -492,3 +492,20 @@ native FormatNativeString(out_param,
&written=0,
String:out_string[]="",
const String:fmt_string[]="");
+
+/**
+ * Defines a RequestFrame Callback.
+ *
+ * @param data Data passed to the RequestFrame native.
+ * @noreturn
+ */
+functag public RequestFrameCallback(any:data);
+
+/**
+ * Creates a single use Next Frame hook.
+ *
+ * @param Function Function to call on the next frame.
+ * @param data Value to be passed on the invocation of the Function.
+ * @noreturn
+ */
+native RequestFrame(RequestFrameCallback:Function, any:data=0);
diff --git a/env/include/geoip.inc b/env/include/geoip.inc
index 725126e..3df697e 100644
--- a/env/include/geoip.inc
+++ b/env/include/geoip.inc
@@ -63,8 +63,8 @@ native bool:GeoipCode3(const String:ip[], String:ccode[4]);
* Gets the full country name. (max length of output string is 45)
*
* @param ip Ip to determine the country code.
- * @param ccode Destination string buffer to store the country name.
- * @param len Maximum length of output string buffer.
+ * @param name Destination string buffer to store the country name.
+ * @param maxlength Maximum length of output string buffer.
* @return True on success, false if no country found.
*/
native bool:GeoipCountry(const String:ip[], String:name[], maxlength);
diff --git a/env/include/halflife.inc b/env/include/halflife.inc
index 18294d9..c734e90 100644
--- a/env/include/halflife.inc
+++ b/env/include/halflife.inc
@@ -42,10 +42,13 @@
#define SOURCE_SDK_EPISODE2 30 /**< SDK+Engine released after Episode 2/Orange Box */
#define SOURCE_SDK_BLOODYGOODTIME 32 /**< Modified version of ep2 engine used by Bloody Good Time (no SDK) */
#define SOURCE_SDK_EYE 33 /**< Modified version of ep2 engine used by E.Y.E Divine Cybermancy (no SDK) */
-#define SOURCE_SDK_EPISODE2VALVE 35 /**< SDK+Engine released after Episode 2/Orange Box */
+#define SOURCE_SDK_CSS 34 /**< Sometime-older version of Source 2009 SDK+Engine, used for Counter-Strike: Source */
+#define SOURCE_SDK_EPISODE2VALVE 35 /**< SDK+Engine released after Episode 2/Orange Box, "Source 2009" or "Source MP" */
#define SOURCE_SDK_LEFT4DEAD 40 /**< Engine released after Left 4 Dead (no SDK yet) */
#define SOURCE_SDK_LEFT4DEAD2 50 /**< Engine released after Left 4 Dead 2 (no SDK yet) */
#define SOURCE_SDK_ALIENSWARM 60 /**< SDK+Engine released after Alien Swarm */
+#define SOURCE_SDK_CSGO 80 /**< Engine released after CS:GO (no SDK yet) */
+#define SOURCE_SDK_DOTA 90 /**< Engine released after Dota 2 (no SDK) */
#define MOTDPANEL_TYPE_TEXT 0 /**< Treat msg as plain text */
#define MOTDPANEL_TYPE_INDEX 1 /**< Msg is auto determined by the engine */
@@ -61,6 +64,32 @@ enum DialogType
DialogType_AskConnect /**< ask the client to connect to a specified IP */
};
+enum EngineVersion
+{
+ Engine_Unknown, /**< Could not determine the engine version */
+ Engine_Original, /**< Original Source Engine (used by The Ship) */
+ Engine_SourceSDK2006, /**< Episode 1 Source Engine (second major SDK) */
+ Engine_SourceSDK2007, /**< Orange Box Source Engine (third major SDK) */
+ Engine_Left4Dead, /**< Left 4 Dead */
+ Engine_DarkMessiah, /**< Dark Messiah Multiplayer (based on original engine) */
+ Engine_Left4Dead2 = 7, /**< Left 4 Dead 2 */
+ Engine_AlienSwarm, /**< Alien Swarm (and Alien Swarm SDK) */
+ Engine_BloodyGoodTime, /**< Bloody Good Time */
+ Engine_EYE, /**< E.Y.E Divine Cybermancy */
+ Engine_Portal2, /**< Portal 2 */
+ Engine_CSGO, /**< Counter-Strike: Global Offensive */
+ Engine_CSS, /**< Counter-Strike: Source */
+ Engine_DOTA, /**< Dota 2 */
+ Engine_HL2DM, /**< Half-Life 2 Deathmatch */
+ Engine_DODS, /**< Day of Defeat: Source */
+ Engine_TF2, /**< Team Fortress 2 */
+ Engine_NuclearDawn, /**< Nuclear Dawn */
+ Engine_SDK2013, /**< Source SDK 2013 */
+ Engine_Blade, /**< Blade Symphony */
+ Engine_Insurgency, /**< Insurgency (2013 Retail version)*/
+ Engine_Contagion, /**< Contagion */
+};
+
#define INVALID_ENT_REFERENCE 0xFFFFFFFF
/**
@@ -101,7 +130,7 @@ native GetRandomInt(nmin, nmax);
/**
* Returns whether a map is valid or not.
*
- * @param Map name, excluding .bsp extension.
+ * @param map Map name, excluding .bsp extension.
* @return True if valid, false otherwise.
*/
native bool:IsMapValid(const String:map[]);
@@ -127,6 +156,13 @@ native Float:GetEngineTime();
*/
native Float:GetGameTime();
+/**
+ * Returns the game's internal tick count.
+ *
+ * @return Game tick count.
+ */
+native GetGameTickCount();
+
/**
* Returns the game description from the mod.
*
@@ -212,7 +248,7 @@ native bool:IsDecalPrecached(const String:decal[]);
/**
* Returns if a given generic file is precached.
*
- * @param decal Name of the generic file to check.
+ * @param generic Name of the generic file to check.
* @return True if precached, false otherwise.
*/
native bool:IsGenericPrecached(const String:generic[]);
@@ -254,8 +290,19 @@ native CreateDialog(client, Handle:kv, DialogType:type);
*
* @return SOURCE_SDK version code.
*/
+#pragma deprecated See GetEngineVersion()
native GuessSDKVersion();
+/**
+ * Gets the engine version that the currently-loaded SM core was compiled against.
+ *
+ * The engine version values are not guaranteed to be in any particular order,
+ * and should only be compared by (in)equality.
+ *
+ * @return An EngineVersion value.
+ */
+native EngineVersion:GetEngineVersion();
+
/**
* Prints a message to a specific client in the chat area.
*
@@ -537,14 +584,17 @@ stock ShowMOTDPanel(client, const String:title[], const String:msg[], type=MOTDP
*
* @param client Client index.
* @param time Duration to hold the panel on the client's screen.
- * @param ip Destionation IP.
+ * @param ip Destination IP.
+ * @param password Password to connect to the destination IP. The client will be able to see this.
* @noreturn
*/
-stock DisplayAskConnectBox(client, Float:time, const String:ip[])
+stock DisplayAskConnectBox(client, Float:time, const String:ip[], const String:password[] = "")
{
+ decl String:destination[288];
+ FormatEx(destination, sizeof(destination), "%s/%s", ip, password);
new Handle:Kv = CreateKeyValues("data");
KvSetFloat(Kv, "time", time);
- KvSetString(Kv, "title", ip);
+ KvSetString(Kv, "title", destination);
CreateDialog(client, Kv, DialogType_AskConnect);
CloseHandle(Kv);
}
diff --git a/env/include/keyvalues.inc b/env/include/keyvalues.inc
index a026b4f..51f6580 100644
--- a/env/include/keyvalues.inc
+++ b/env/include/keyvalues.inc
@@ -60,7 +60,7 @@ enum KvDataTypes
* @param firstValue If firstKey is non-empty, specifies the first key's value.
* @return A Handle to a new KeyValues structure.
*/
-native Handle:CreateKeyValues(const String:name[], const String:firstkey[]="", const String:firstValue[]="");
+native Handle:CreateKeyValues(const String:name[], const String:firstKey[]="", const String:firstValue[]="");
/**
* Sets a string value of a KeyValues key.
diff --git a/env/include/lang.inc b/env/include/lang.inc
index 8d57f16..6ff4464 100644
--- a/env/include/lang.inc
+++ b/env/include/lang.inc
@@ -41,7 +41,7 @@
* Loads a translation file for the plugin calling this native.
* If no extension is specified, .txt is assumed.
*
- * @param path Translation file.
+ * @param file Translation file.
* @noreturn
*/
native LoadTranslations(const String:file[]);
diff --git a/env/include/logging.inc b/env/include/logging.inc
index 39028c6..4269b22 100644
--- a/env/include/logging.inc
+++ b/env/include/logging.inc
@@ -45,17 +45,6 @@
*/
native LogMessage(const String:format[], any:...);
-/**
- * Logs a message to the SourceMod logs without any plugin logtag. This is
- * useful for re-routing messages from other plugins, for example, messages
- * from LogAction().
- *
- * @param format String format.
- * @param ... Format arguments.
- * @noreturn
- */
-native LogMessageEx(const String:format[], any:...);
-
/**
* Logs a message to any file. The log message will be in the normal
* SourceMod format, with the plugin logtag prepended.
diff --git a/env/include/menus.inc b/env/include/menus.inc
index 3d44aa8..fa6cbac 100644
--- a/env/include/menus.inc
+++ b/env/include/menus.inc
@@ -345,6 +345,7 @@ native GetMenuTitle(Handle:menu, String:buffer[], maxlength);
* Creates a raw MenuPanel based off the menu's style.
* The Handle must be freed with CloseHandle().
*
+ * @param menu Menu Handle.
* @return A new MenuPanel Handle.
* @error Invalid Handle.
*/
@@ -404,6 +405,16 @@ native bool:GetMenuExitBackButton(Handle:menu);
*/
native SetMenuExitBackButton(Handle:menu, bool:button);
+/**
+ * Sets whether or not the menu has a "no vote" button in slot 1.
+ * By default, menus do not have a no vote button.
+ *
+ * @param menu Menu Handle.
+ * @param button True to enable the button, false to remove it.
+ * @return True if allowed; false on failure.
+ * @error Invalid Handle.
+ */
+native bool:SetMenuNoVoteButton(Handle:menu, bool:button);
/**
* Cancels a menu from displaying on all clients. While the
@@ -489,14 +500,14 @@ native bool:VoteMenu(Handle:menu, clients[], numClients, time, flags=0);
* in progress.
* @error Invalid Handle.
*/
-stock VoteMenuToAll(Handle:menu, time, flags=0)
+stock bool:VoteMenuToAll(Handle:menu, time, flags=0)
{
new total;
decl players[MaxClients];
for (new i=1; i<=MaxClients; i++)
{
- if (!IsClientInGame(i))
+ if (!IsClientInGame(i) || IsFakeClient(i))
{
continue;
}
@@ -590,7 +601,7 @@ native Handle:CreatePanel(Handle:hStyle=INVALID_HANDLE);
* Creates a Menu from a MenuStyle. The Handle must be closed with
* CloseHandle().
*
- * @parma hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style.
+ * @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style.
* @param handler Function which will receive menu actions.
* @param actions Optionally set which actions to receive. Select,
* Cancel, and End will always be received regardless
@@ -614,7 +625,7 @@ native MenuSource:GetClientMenu(client, Handle:hStyle=INVALID_HANDLE);
/**
* Cancels a menu on a client. This will only affect non-external menus.
*
- * @param hstyle MenuStyle Handle, or INVALID_HANDLE to use the default style.
+ * @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style.
* @param client Client index.
* @param autoIgnore If true, no menus can be re-drawn on the client during
* the cancellation process.
@@ -644,7 +655,7 @@ native Handle:GetPanelStyle(Handle:panel);
* Sets the panel's title.
*
* @param panel A MenuPanel Handle.
- * @param title Text to set as the title.
+ * @param text Text to set as the title.
* @param onlyIfEmpty If true, the title will only be set if no title is set.
* @noreturn
* @error Invalid Handle.
@@ -691,6 +702,7 @@ native CanPanelDrawFlags(Handle:panel, style);
* Sets the selectable key map of a panel. This is not supported by
* all styles (only by Radio, as of this writing).
*
+ * @param panel A MenuPanel Handle.
* @param keys An integer where each bit N allows key
* N+1 to be selected. If no keys are selectable,
* then key 0 (bit 9) is automatically set.
diff --git a/env/include/protobuf.inc b/env/include/protobuf.inc
new file mode 100644
index 0000000..56f0bd9
--- /dev/null
+++ b/env/include/protobuf.inc
@@ -0,0 +1,368 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod (C)2013 AlliedModders LLC. All rights reserved.
+ * =============================================================================
+ *
+ * This file is part of the SourceMod/SourcePawn SDK.
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see .
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation. You must obey the GNU General Public License in
+ * all respects for all other code used. Additionally, AlliedModders LLC grants
+ * this exception to all derivative works. AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or .
+ *
+ * Version: $Id$
+ */
+
+#if defined _protobuf_included
+#endinput
+#endif
+#define _protobuf_included
+
+#define PB_FIELD_NOT_REPEATED -1
+
+/**
+ * Reads an int32, uint32, sint32, fixed32, sfixed32, or enum value from a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param index Index into repeated field.
+ * @return Integer value read.
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbReadInt(Handle:pb, const String:field[], index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Reads a float or downcasted double from a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param index Index into repeated field.
+ * @return Float value read.
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native Float:PbReadFloat(Handle:pb, const String:field[], index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Reads a bool from a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param index Index into repeated field.
+ * @return Boolean value read.
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native bool:PbReadBool(Handle:pb, const String:field[], index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Reads a string from a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param buffer Destination string buffer.
+ * @param maxlength Maximum length of output string buffer.
+ * @param index Index into repeated field.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbReadString(Handle:pb, const String:field[], String:buffer[], maxlength, index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Reads an RGBA color value from a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param buffer Destination color buffer.
+ * @param index Index into repeated field.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbReadColor(Handle:pb, const String:field[], buffer[4], index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Reads an XYZ angle value from a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param buffer Destination angle buffer.
+ * @param index Index into repeated field.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbReadAngle(Handle:pb, const String:field[], Float:buffer[3], index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Reads an XYZ vector value from a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param buffer Destination vector buffer.
+ * @param index Index into repeated field.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbReadVector(Handle:pb, const String:field[], Float:buffer[3], index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Reads an XY vector value from a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param buffer Destination vector buffer.
+ * @param index Index into repeated field.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbReadVector2D(Handle:pb, const String:field[], Float:buffer[2], index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Gets the number of elements in a repeated field of a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @return Number of elements in the field.
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbGetRepeatedFieldCount(Handle:pb, const String:field[]);
+
+/**
+ * Sets an int32, uint32, sint32, fixed32, sfixed32, or enum value on a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param value Integer value to set.
+ * @param index Index into repeated field.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbSetInt(Handle:pb, const String:field[], value, index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Sets a float or double on a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param value Float value to set.
+ * @param index Index into repeated field.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbSetFloat(Handle:pb, const String:field[], Float:value, index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Sets a bool on a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param value Boolean value to set.
+ * @param index Index into repeated field.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbSetBool(Handle:pb, const String:field[], bool:value, index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Sets a string on a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param value String value to set.
+ * @param index Index into repeated field.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbSetString(Handle:pb, const String:field[], const String:value[], index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Sets an RGBA color on a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param color Color value to set.
+ * @param index Index into repeated field.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbSetColor(Handle:pb, const String:field[], const color[4], index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Sets an XYZ angle on a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param angle Angle value to set.
+ * @param index Index into repeated field.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbSetAngle(Handle:pb, const String:field[], const Float:angle[3], index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Sets an XYZ vector on a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param vec Vector value to set.
+ * @param index Index into repeated field.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbSetVector(Handle:pb, const String:field[], const Float:vec[3], index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Sets an XY vector on a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param vec Vector value to set.
+ * @param index Index into repeated field.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbSetVector2D(Handle:pb, const String:field[], const Float:vec[2], index=PB_FIELD_NOT_REPEATED);
+
+/**
+ * Add an int32, uint32, sint32, fixed32, sfixed32, or enum value to a protobuf message repeated field.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param value Integer value to add.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbAddInt(Handle:pb, const String:field[], value);
+
+/**
+ * Add a float or double to a protobuf message repeated field.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param value Float value to add.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbAddFloat(Handle:pb, const String:field[], Float:value);
+
+/**
+ * Add a bool to a protobuf message repeated field.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param value Boolean value to add.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbAddBool(Handle:pb, const String:field[], bool:value);
+
+/**
+ * Add a string to a protobuf message repeated field.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param value String value to add.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbAddString(Handle:pb, const String:field[], const String:value[]);
+
+/**
+ * Add an RGBA color to a protobuf message repeated field.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param color Color value to add.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbAddColor(Handle:pb, const String:field[], const color[4]);
+
+/**
+ * Add an XYZ angle to a protobuf message repeated field.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param angle Angle value to add.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbAddAngle(Handle:pb, const String:field[], const Float:angle[3]);
+
+/**
+ * Add an XYZ vector to a protobuf message repeated field.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param vec Vector value to add.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbAddVector(Handle:pb, const String:field[], const Float:vec[3]);
+
+/**
+ * Add an XY vector to a protobuf message repeated field.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param vec Vector value to add.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbAddVector2D(Handle:pb, const String:field[], const Float:vec[2]);
+
+/**
+ * Removes a value by index from a protobuf message repeated field.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param index Index into repeated field.
+ * @noreturn
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native PbRemoveRepeatedFieldValue(Handle:pb, const String:field[], index);
+
+/**
+ * Retrieve a handle to an embedded protobuf message in a protobuf message.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @return protobuf handle to embedded message.
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native Handle:PbReadMessage(Handle:pb, const String:field[]);
+
+/**
+ * Retrieve a handle to an embedded protobuf message in a protobuf message repeated field.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @param index Index in the repeated field.
+ * @return protobuf handle to embedded message.
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native Handle:PbReadRepeatedMessage(Handle:pb, const String:field[], index);
+
+/**
+ * Adds an embedded protobuf message to a protobuf message repeated field.
+ *
+ * @param pb protobuf handle.
+ * @param field Field name.
+ * @return protobuf handle to added, embedded message.
+ * @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
+ */
+native Handle:PbAddMessage(Handle:pb, const String:field[]);
diff --git a/env/include/regex.inc b/env/include/regex.inc
index bfdd22c..555c4a3 100644
--- a/env/include/regex.inc
+++ b/env/include/regex.inc
@@ -43,9 +43,13 @@
#define PCRE_MULTILINE 0x00000002 /* Multilines (affects ^ and $ so that they match the start/end of a line rather than matching the start/end of the string). */
#define PCRE_DOTALL 0x00000004 /* Single line (affects . so that it matches any character, even new line characters). */
#define PCRE_EXTENDED 0x00000008 /* Pattern extension (ignore whitespace and # comments). */
+#define PCRE_ANCHORED 0x00000010 /* Force pattern anchoring. */
+#define PCRE_DOLLAR_ENDONLY 0x00000020 /* $ not to match newline at end. */
#define PCRE_UNGREEDY 0x00000200 /* Invert greediness of quantifiers */
+#define PCRE_NOTEMPTY 0x00000400 /* An empty string is not a valid match. */
#define PCRE_UTF8 0x00000800 /* Use UTF-8 Chars */
#define PCRE_NO_UTF8_CHECK 0x00002000 /* Do not check the pattern for UTF-8 validity (only relevant if PCRE_UTF8 is set) */
+#define PCRE_UCP 0x20000000 /* Use Unicode properties for \ed, \ew, etc. */
/**
@@ -76,7 +80,16 @@ enum RegexError
REGEX_ERROR_DFA_RECURSE = -20,
REGEX_ERROR_RECURSIONLIMIT = -21,
REGEX_ERROR_NULLWSLIMIT = -22, /* No longer actually used */
- REGEX_ERROR_BADNEWLINE = -23
+ REGEX_ERROR_BADNEWLINE = -23,
+ REGEX_ERROR_BADOFFSET = -24,
+ REGEX_ERROR_SHORTUTF8 = -25,
+ REGEX_ERROR_RECURSELOOP = -26,
+ REGEX_ERROR_JIT_STACKLIMIT = -27,
+ REGEX_ERROR_BADMODE = -28,
+ REGEX_ERROR_BADENDIANNESS = -29,
+ REGEX_ERROR_DFA_BADRESTART = -30,
+ REGEX_ERROR_JIT_BADOPTION = -31,
+ REGEX_ERROR_BADLENGTH = -32,
};
/**
@@ -114,7 +127,7 @@ native MatchRegex(Handle:regex, const String:str[], &RegexError:ret = REGEX_ERRO
* @param regex The regex handle to extract data from.
* @param str_id The index of the expression to get - starts at 0, and ends at substrings - 1.
* @param buffer The buffer to set to the matching substring.
- * @param maxLen The maximum string length of the buffer.
+ * @param maxlen The maximum string length of the buffer.
* @return True if a substring was found, False on fail/error
*/
native bool:GetRegexSubString(Handle:regex, str_id, String:buffer[], maxlen);
diff --git a/env/include/sdkhooks.inc b/env/include/sdkhooks.inc
index bba7237..2b25504 100644
--- a/env/include/sdkhooks.inc
+++ b/env/include/sdkhooks.inc
@@ -1,43 +1,80 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod (C)2009-2013 AlliedModders LLC. All rights reserved.
+ * =============================================================================
+ *
+ * This file is part of the SourceMod/SourcePawn SDK.
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see .
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation. You must obey the GNU General Public License in
+ * all respects for all other code used. Additionally, AlliedModders LLC grants
+ * this exception to all derivative works. AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or .
+ */
+
#if defined _sdkhooks_included
#endinput
#endif
#define _sdkhooks_included
-#define DMG_GENERIC 0 // generic damage was done
-#define DMG_CRUSH (1 << 0) // crushed by falling or moving object.
- // NOTE: It's assumed crush damage is occurring as a result of physics collision, so no extra physics force is generated by crush damage.
- // DON'T use DMG_CRUSH when damaging entities unless it's the result of a physics collision. You probably want DMG_CLUB instead.
-#define DMG_BULLET (1 << 1) // shot
-#define DMG_SLASH (1 << 2) // cut, clawed, stabbed
-#define DMG_BURN (1 << 3) // heat burned
-#define DMG_VEHICLE (1 << 4) // hit by a vehicle
-#define DMG_FALL (1 << 5) // fell too far
-#define DMG_BLAST (1 << 6) // explosive blast damage
-#define DMG_CLUB (1 << 7) // crowbar, punch, headbutt
-#define DMG_SHOCK (1 << 8) // electric shock
-#define DMG_SONIC (1 << 9) // sound pulse shockwave
-#define DMG_ENERGYBEAM (1 << 10) // laser or other high energy beam
-#define DMG_PREVENT_PHYSICS_FORCE (1 << 11) // Prevent a physics force
-#define DMG_NEVERGIB (1 << 12) // with this bit OR'd in, no damage type will be able to gib victims upon death
-#define DMG_ALWAYSGIB (1 << 13) // with this bit OR'd in, any damage type can be made to gib victims upon death.
-#define DMG_DROWN (1 << 14) // Drowning
-#define DMG_PARALYZE (1 << 15) // slows affected creature down
-#define DMG_NERVEGAS (1 << 16) // nerve toxins, very bad
-#define DMG_POISON (1 << 17) // blood poisoning - heals over time like drowning damage
-#define DMG_RADIATION (1 << 18) // radiation exposure
-#define DMG_DROWNRECOVER (1 << 19) // drowning recovery
-#define DMG_ACID (1 << 20) // toxic chemicals or acid burns
-#define DMG_SLOWBURN (1 << 21) // in an oven
-#define DMG_REMOVENORAGDOLL (1 << 22) // with this bit OR'd in, no ragdoll will be created, and the target will be quietly removed.
- // use this to kill an entity that you've already got a server-side ragdoll for
-#define DMG_PHYSGUN (1 << 23) // Hit by manipulator. Usually doesn't do any damage.
-#define DMG_PLASMA (1 << 24) // Shot by Cremator
-#define DMG_AIRBOAT (1 << 25) // Hit by the airboat's gun
-#define DMG_DISSOLVE (1 << 26) // Dissolving!
-#define DMG_BLAST_SURFACE (1 << 27) // A blast on the surface of water that cannot harm things underwater
+// this is obviously _not_ a robust check, but it will solve most conflict and is clean
+#if !defined DMG_GENERIC
+#define DMG_GENERIC 0 /**< generic damage was done */
+#define DMG_CRUSH (1 << 0) /**< crushed by falling or moving object.
+ NOTE: It's assumed crush damage is occurring as a result of physics collision, so no extra physics force is generated by crush damage.
+ DON'T use DMG_CRUSH when damaging entities unless it's the result of a physics collision. You probably want DMG_CLUB instead. */
+#define DMG_BULLET (1 << 1) /**< shot */
+#define DMG_SLASH (1 << 2) /**< cut, clawed, stabbed */
+#define DMG_BURN (1 << 3) /**< heat burned */
+#define DMG_VEHICLE (1 << 4) /**< hit by a vehicle */
+#define DMG_FALL (1 << 5) /**< fell too far */
+#define DMG_BLAST (1 << 6) /**< explosive blast damage */
+#define DMG_CLUB (1 << 7) /**< crowbar, punch, headbutt */
+#define DMG_SHOCK (1 << 8) /**< electric shock */
+#define DMG_SONIC (1 << 9) /**< sound pulse shockwave */
+#define DMG_ENERGYBEAM (1 << 10) /**< laser or other high energy beam */
+#define DMG_PREVENT_PHYSICS_FORCE (1 << 11) /**< Prevent a physics force */
+#define DMG_NEVERGIB (1 << 12) /**< with this bit OR'd in, no damage type will be able to gib victims upon death */
+#define DMG_ALWAYSGIB (1 << 13) /**< with this bit OR'd in, any damage type can be made to gib victims upon death. */
+#define DMG_DROWN (1 << 14) /**< Drowning */
+#define DMG_PARALYZE (1 << 15) /**< slows affected creature down */
+#define DMG_NERVEGAS (1 << 16) /**< nerve toxins, very bad */
+#define DMG_POISON (1 << 17) /**< blood poisoning - heals over time like drowning damage */
+#define DMG_RADIATION (1 << 18) /**< radiation exposure */
+#define DMG_DROWNRECOVER (1 << 19) /**< drowning recovery */
+#define DMG_ACID (1 << 20) /**< toxic chemicals or acid burns */
+#define DMG_SLOWBURN (1 << 21) /**< in an oven */
+#define DMG_REMOVENORAGDOLL (1 << 22) /**< with this bit OR'd in, no ragdoll will be created, and the target will be quietly removed.
+ use this to kill an entity that you've already got a server-side ragdoll for */
+#define DMG_PHYSGUN (1 << 23) /**< Hit by manipulator. Usually doesn't do any damage. */
+#define DMG_PLASMA (1 << 24) /**< Shot by Cremator */
+#define DMG_AIRBOAT (1 << 25) /**< Hit by the airboat's gun */
+#define DMG_DISSOLVE (1 << 26) /**< Dissolving! */
+#define DMG_BLAST_SURFACE (1 << 27) /**< A blast on the surface of water that cannot harm things underwater */
#define DMG_DIRECT (1 << 28)
-#define DMG_BUCKSHOT (1 << 29) // not quite a bullet. Little, rounder, different.
+#define DMG_BUCKSHOT (1 << 29) /**< not quite a bullet. Little, rounder, different. */
+#endif
+#if !defined DMG_CRIT
+ // TF2 crits and minicrits
+ #define DMG_CRIT DMG_ACID
+#endif
enum SDKHookType
{
@@ -62,68 +99,183 @@ enum SDKHookType
SDKHook_ShouldCollide,
SDKHook_PreThinkPost,
SDKHook_PostThinkPost,
- SDKHook_ThinkPost
+ SDKHook_ThinkPost,
+ SDKHook_EndTouchPost,
+ SDKHook_GroundEntChangedPost,
+ SDKHook_SpawnPost,
+ SDKHook_StartTouchPost,
+ SDKHook_TouchPost,
+ SDKHook_VPhysicsUpdate,
+ SDKHook_VPhysicsUpdatePost,
+ SDKHook_WeaponCanSwitchToPost,
+ SDKHook_WeaponCanUsePost,
+ SDKHook_WeaponDropPost,
+ SDKHook_WeaponEquipPost,
+ SDKHook_WeaponSwitchPost,
+ SDKHook_Use,
+ SDKHook_UsePost,
+ SDKHook_Reload,
+ SDKHook_ReloadPost,
+ SDKHook_GetMaxHealth, /**< ep2v and later */
};
/*
Alphabetized for easy readability
- SDKHook_EndTouch
- SDKHook_FireBulletsPost
- SDKHook_OnTakeDamage
- SDKHook_OnTakeDamagePost
- SDKHook_PreThink
- SDKHook_PreThinkPost
- SDKHook_PostThink
- SDKHook_PostThinkPost
- SDKHook_SetTransmit
- SDKHook_ShouldCollide
- SDKHook_Spawn
- SDKHook_StartTouch
- SDKHook_Think
- SDKHook_ThinkPost
- SDKHook_Touch
- SDKHook_TraceAttack
- SDKHook_TraceAttackPost
- SDKHook_WeaponCanSwitchTo
- SDKHook_WeaponCanUse
- SDKHook_WeaponDrop
- SDKHook_WeaponEquip
- SDKHook_WeaponSwitch
+ SDKHook_EndTouch,
+ SDKHook_EndTouchPost,
+
+ SDKHook_FireBulletsPost,
+
+ SDKHook_GetMaxHealth, (ep2v and later)
+
+ SDKHook_GroundEntChangedPost,
+
+ SDKHook_OnTakeDamage,
+ SDKHook_OnTakeDamagePost,
+
+ SDKHook_PreThink,
+ SDKHook_PreThinkPost,
+
+ SDKHook_PostThink,
+ SDKHook_PostThinkPost,
+
+ SDKHook_Reload,
+ SDKHook_ReloadPost,
+
+ SDKHook_SetTransmit,
+
+ SDKHook_ShouldCollide,
+
+ SDKHook_Spawn,
+ SDKHook_SpawnPost,
+
+ SDKHook_StartTouch,
+ SDKHook_StartTouchPost,
+
+ SDKHook_Think,
+ SDKHook_ThinkPost,
+
+ SDKHook_Touch,
+ SDKHook_TouchPost,
+
+ SDKHook_TraceAttack,
+ SDKHook_TraceAttackPost,
+
+ SDKHook_Use,
+ SDKHook_UsePost,
+
+ SDKHook_VPhysicsUpdate,
+ SDKHook_VPhysicsUpdatePost,
+
+ SDKHook_WeaponCanSwitchTo,
+ SDKHook_WeaponCanSwitchToPost,
+
+ SDKHook_WeaponCanUse,
+ SDKHook_WeaponCanUsePost,
+
+ SDKHook_WeaponDrop,
+ SDKHook_WeaponDropPost,
+
+ SDKHook_WeaponEquip,
+ SDKHook_WeaponEquipPost,
+
+ SDKHook_WeaponSwitch,
+ SDKHook_WeaponSwitchPost
*/
+enum UseType
+{
+ Use_Off,
+ Use_On,
+ Use_Set,
+ Use_Toggle
+};
+
funcenum SDKHookCB
{
// PreThink/Post
// PostThink/Post
public(client),
+
// Spawn
+ Action:public(entity),
+
+ // GroundEntChanged
+ // SpawnPost
// Think/Post
+ // VPhysicsUpdate/Post
public(entity),
+
// EndTouch
// StartTouch
// Touch
+ Action:public(entity, other),
+
+ // EndTouchPost
+ // StartTouchPost
+ // TouchPost
public(entity, other),
+
// SetTransmit
Action:public(entity, client),
+
// WeaponCanSwitchTo
// WeaponCanUse
// WeaponDrop
// WeaponEquip
// WeaponSwitch
Action:public(client, weapon),
+
+ // WeaponCanSwitchToPost
+ // WeaponCanUsePost
+ // WeaponDropPost
+ // WeaponEquipPost
+ // WeaponSwitchPost
+ public(client, weapon),
+
+ // GetMaxHealth (ep2v and later)
+ Action:public(entity, &maxhealth),
+
// OnTakeDamage
+ // Note: The weapon parameter is not used by all games and damage sources.
+ // Note: Force application is dependent on game and damage type(s)
+ // SDKHooks 1.0+
Action:public(victim, &attacker, &inflictor, &Float:damage, &damagetype),
+ // SDKHooks 2.0+
+ Action:public(victim, &attacker, &inflictor, &Float:damage, &damagetype, &weapon, Float:damageForce[3], Float:damagePosition[3]),
+ // SDKHooks 2.1+ (can check for support at runtime using GetFeatureStatus on SDKHook_DmgCustomInOTD capability.
+ // DON'T attempt to access 'damagecustom' var if feature status != available
+ Action:public(victim, &attacker, &inflictor, &Float:damage, &damagetype, &weapon,
+ Float:damageForce[3], Float:damagePosition[3], damagecustom),
+
// OnTakeDamagePost
public(victim, attacker, inflictor, Float:damage, damagetype),
- // FireBullets
+ public(victim, attacker, inflictor, Float:damage, damagetype, weapon, const Float:damageForce[3], const Float:damagePosition[3]),
+
+ // FireBulletsPost
public(client, shots, const String:weaponname[]),
+
// TraceAttack
Action:public(victim, &attacker, &inflictor, &Float:damage, &damagetype, &ammotype, hitbox, hitgroup),
+
// TraceAttackPost
public(victim, attacker, inflictor, Float:damage, damagetype, ammotype, hitbox, hitgroup),
+
// ShouldCollide
- Action:public(entity, &collisiongroup, &contentsmask, &bool:result)
+ bool:public(entity, collisiongroup, contentsmask, bool:originalResult),
+
+ // Use
+ Action:public(entity, activator, caller, UseType:type, Float:value),
+
+ // UsePost
+ public(entity, activator, caller, UseType:type, Float:value),
+
+ // Reload
+ Action:public(weapon),
+
+ // Reload post
+ public(weapon, bool:bSuccessful)
};
@@ -147,6 +299,8 @@ forward OnEntityDestroyed(entity);
/**
* @brief When the game description is retrieved
*
+ * @note Not supported on ep2v.
+ *
* @param gameDesc Game description
* @noreturn
*/
@@ -191,11 +345,41 @@ native bool:SDKHookEx(entity, SDKHookType:type, SDKHookCB:callback);
*/
native SDKUnhook(entity, SDKHookType:type, SDKHookCB:callback);
-/** Do Not Edit Below This Line **/
+/**
+ * @brief Applies damage to an entity
+ *
+ * @note Force application is dependent on game and damage type(s)
+ *
+ * @param entity Entity index taking damage
+ * @param inflictor Inflictor entity index
+ * @param attacker Attacker entity index
+ * @param damage Amount of damage
+ * @param damageType Bitfield of damage types
+ * @param weapon Weapon index (orangebox and later) or -1 for unspecified
+ * @param damageForce Velocity of damage force
+ * @param damagePosition Origin of damage
+ * @noreturn
+ */
+native SDKHooks_TakeDamage(entity, inflictor, attacker, Float:damage, damageType=DMG_GENERIC, weapon=-1, const Float:damageForce[3]=NULL_VECTOR, const Float:damagePosition[3]=NULL_VECTOR);
-public Extension:__ext_sdkhooks =
+/**
+ * @brief Forces a client to drop the specified weapon
+ *
+ * @param client Client index.
+ * @param weapon Weapon entity index.
+ * @param vecTarget Location to toss weapon to, or NULL_VECTOR for default.
+ * @param vecVelocity Velocity at which to toss weapon, or NULL_VECTOR for default.
+ * @noreturn
+ * @error Invalid client or weapon entity, weapon not owned by client.
+ */
+native SDKHooks_DropWeapon(client, weapon, const Float:vecTarget[3]=NULL_VECTOR, const Float:vecVelocity[3]=NULL_VECTOR);
+
+/**
+ * Do not edit below this line!
+ */
+public Extension:__ext_sdkhooks =
{
- name = "sdkhooks",
+ name = "SDKHooks",
file = "sdkhooks.ext",
#if defined AUTOLOAD_EXTENSIONS
autoload = 1,
@@ -207,4 +391,4 @@ public Extension:__ext_sdkhooks =
#else
required = 0,
#endif
-};
\ No newline at end of file
+};
diff --git a/env/include/sdktools.inc b/env/include/sdktools.inc
index db96337..3351bcf 100644
--- a/env/include/sdktools.inc
+++ b/env/include/sdktools.inc
@@ -72,6 +72,7 @@ enum SDKFuncConfSource
{
SDKConf_Virtual = 0, /**< Read a virtual index from the Offsets section */
SDKConf_Signature = 1, /**< Read a signature from the Signatures section */
+ SDKConf_Address = 2, /**< Read an address from the Addresses section */
};
enum SDKType
@@ -130,6 +131,14 @@ native PrepSDKCall_SetVirtual(vtblidx);
*/
native bool:PrepSDKCall_SetSignature(SDKLibrary:lib, const String:signature[], bytes);
+/**
+ * Uses the given function address for the SDK call.
+ *
+ * @param addr Address of function to use.
+ * @return True on success, false on failure.
+ */
+native bool:PrepSDKCall_SetAddress(Address:addr);
+
/**
* Finds an address or virtual function index in a GameConfig file and sets it as
* the calling information for the SDK call.
@@ -194,6 +203,13 @@ native Handle:EndPrepSDKCall();
*/
native any:SDKCall(Handle:call, any:...);
+/**
+ * Returns the entity index of the player resource/manager entity.
+ *
+ * @return Index of resource entity or -1 if not found.
+ */
+native GetPlayerResourceEntity();
+
#include
/**
diff --git a/env/include/sdktools_entinput.inc b/env/include/sdktools_entinput.inc
index 1eb5f6b..88d90cc 100644
--- a/env/include/sdktools_entinput.inc
+++ b/env/include/sdktools_entinput.inc
@@ -109,7 +109,7 @@ native SetVariantColor(const color[4]);
/**
* Sets an entity in the global variant object.
*
- * @param Entity index.
+ * @param entity Entity index.
* @noreturn
* @error Invalid entity index.
*/
diff --git a/env/include/sdktools_functions.inc b/env/include/sdktools_functions.inc
index c8e3705..16b3e47 100644
--- a/env/include/sdktools_functions.inc
+++ b/env/include/sdktools_functions.inc
@@ -81,13 +81,13 @@ native GetPlayerWeaponSlot(client, slot);
native IgniteEntity(entity, Float:time, bool:npc=false, Float:size=0.0, bool:level=false);
/**
- * Extinguishes a player that is on fire.
+ * Extinguishes an entity that is on fire.
*
* @param entity Entity index.
* @noreturn
* @error Invalid entity or client not in game, or lack of mod support.
*/
-native ExtinguishEntity(client);
+native ExtinguishEntity(entity);
/**
* Teleports an entity.
@@ -194,7 +194,7 @@ native bool:DispatchKeyValueFloat(entity, const String:keyName[], Float:value);
* @return True on success, false otherwise.
* @error Invalid entity index, or no mod support.
*/
-native bool:DispatchKeyValueVector(entity, const String:keyName[], const Float:vector[3]);
+native bool:DispatchKeyValueVector(entity, const String:keyName[], const Float:vec[3]);
/**
* Returns the entity a client is aiming at.
@@ -270,7 +270,7 @@ native GetTeamClientCount(index);
native SetEntityModel(entity, const String:model[]);
/**
- * Retrieves the decal file name associated to a given client.
+ * Retrieves the decal file name associated with a given client.
*
* @param client Player's index.
* @param hex Buffer to store the logo filename.
@@ -280,6 +280,17 @@ native SetEntityModel(entity, const String:model[]);
*/
native bool:GetPlayerDecalFile(client, String:hex[], maxlength);
+/**
+ * Retrieves the jingle file name associated with a given client.
+ *
+ * @param client Player's index.
+ * @param hex Buffer to store the jingle filename.
+ * @param maxlength Maximum length of string buffer.
+ * @return True on success, otherwise false.
+ * @error Invalid client or client not in game.
+ */
+native bool:GetPlayerJingleFile(client, String:hex[], maxlength);
+
/**
* Returns the average server network traffic in bytes/sec.
*
@@ -293,7 +304,7 @@ native GetServerNetStats(&Float:in, &Float:out);
* Equip's a player's weapon.
*
* @param client Client index.
- * @param item CBaseCombatWeapon entity index.
+ * @param weapon CBaseCombatWeapon entity index.
* @noreturn
* @error Invalid client or entity, lack of mod support, or client not in
* game.
@@ -320,3 +331,16 @@ native ActivateEntity(entity);
* @error Invalid client index, or client not connected.
*/
native SetClientInfo(client, const String:key[], const String:value[]);
+
+/**
+ * Gives ammo of a certain type to a player.
+ * This natives obeys the maximum amount of ammo a player can carry per ammo type.
+ *
+ * @param client The client index.
+ * @param amount Amount of ammo to give. Is capped at ammotype's limit.
+ * @param ammotype Type of ammo to give to player.
+ * @param suppressSound If true, don't play the ammo pickup sound.
+ *
+ * @return Amount of ammo actually given.
+ */
+native GivePlayerAmmo(client, amount, ammotype, bool:suppressSound=false);
\ No newline at end of file
diff --git a/env/include/sdktools_gamerules.inc b/env/include/sdktools_gamerules.inc
index 967963d..6a5f7ba 100644
--- a/env/include/sdktools_gamerules.inc
+++ b/env/include/sdktools_gamerules.inc
@@ -66,6 +66,9 @@ enum RoundState {
//Game is over, doing bonus round stuff
RoundState_Bonus,
+
+ //Between rounds
+ RoundState_BetweenRounds,
};
/**
@@ -90,6 +93,7 @@ native GameRules_GetProp(const String:prop[], size=4, element=0);
* This value is auto-detected, and the size parameter is
* only used as a fallback in case detection fails.
* @param element Element # (starting from 0) if property is an array.
+ * @param changeState If true, change will be sent over the network.
* @error Not supported.
* @noreturn
*/
@@ -111,6 +115,7 @@ native Float:GameRules_GetPropFloat(const String:prop[], element=0);
* @param prop Property name.
* @param value Value to set.
* @param element Element # (starting from 0) if property is an array.
+ * @param changeState If true, change will be sent over the network.
* @noreturn
* @error Not supported.
*/
@@ -134,6 +139,7 @@ native GameRules_GetPropEnt(const String:prop[], element=0);
* @param prop Property name.
* @param other Entity index to set, or -1 to unset.
* @param element Element # (starting from 0) if property is an array.
+ * @param changeState If true, change will be sent over the network.
* @noreturn
* @error Not supported.
*/
@@ -156,6 +162,7 @@ native GameRules_GetPropVector(const String:prop[], Float:vec[3], element=0);
* @param prop Property name.
* @param vec Vector to set.
* @param element Element # (starting from 0) if property is an array.
+ * @param changeState If true, change will be sent over the network.
* @noreturn
* @error Not supported.
*/
@@ -177,6 +184,7 @@ native GameRules_GetPropString(const String:prop[], String:buffer[], maxlen);
*
* @param prop Property to use.
* @param buffer String to set.
+ * @param changeState If true, change will be sent over the network.
* @return Number of non-null bytes written.
* @error Not supported.
*/
diff --git a/env/include/sdktools_hooks.inc b/env/include/sdktools_hooks.inc
index 0f8d20e..bae8d52 100644
--- a/env/include/sdktools_hooks.inc
+++ b/env/include/sdktools_hooks.inc
@@ -35,6 +35,8 @@
#endif
#define _sdktools_hooks_included
+#define FEATURECAP_PLAYERRUNCMD_11PARAMS "SDKTools PlayerRunCmd 11Params"
+
/**
* @brief Called when a clients movement buttons are being processed
*
@@ -44,6 +46,14 @@
* @param vel Players desired velocity.
* @param angles Players desired view angles.
* @param weapon Entity index of the new weapon if player switches weapon, 0 otherwise.
+ * @param subtype Weapon subtype when selected from a menu.
+ * @param cmdnum Command number. Increments from the first command sent.
+ * @param tickcount Tick count. A client's prediction based on the server's GetGameTickCount value.
+ * @param seed Random seed. Used to determine weapon recoil, spread, and other predicted elements.
+ * @param mouse Mouse direction (x, y).
* @return Plugin_Handled to block the commands from being processed, Plugin_Continue otherwise.
+ *
+ * @note To see if all 11 params are avaliable, use FeatureType_Capability and
+ * FEATURECAP_PLAYERRUNCMD_11PARAMS.
*/
-forward Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon);
\ No newline at end of file
+forward Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon, &subtype, &cmdnum, &tickcount, &seed, mouse[2]);
\ No newline at end of file
diff --git a/env/include/sdktools_sound.inc b/env/include/sdktools_sound.inc
index a978dbd..bfb4e3f 100644
--- a/env/include/sdktools_sound.inc
+++ b/env/include/sdktools_sound.inc
@@ -127,7 +127,7 @@ enum
* @param name Sound file name relative to the "sounds" folder.
* @noreturn
*/
-native PrefetchSound(const String:nane[]);
+native PrefetchSound(const String:name[]);
/**
* This function is not known to work, and may crash. You should
diff --git a/env/include/sdktools_stringtables.inc b/env/include/sdktools_stringtables.inc
index b54583b..8c4ee08 100644
--- a/env/include/sdktools_stringtables.inc
+++ b/env/include/sdktools_stringtables.inc
@@ -86,7 +86,7 @@ native GetStringTableName(tableidx, String:name[], maxlength);
* Searches for the index of a given string in a string table.
*
* @param tableidx A string table index.
- * @param string String to find.
+ * @param str String to find.
* @return String index if found, INVALID_STRING_INDEX otherwise.
* @error Invalid string table index.
*/
@@ -97,12 +97,12 @@ native FindStringIndex(tableidx, const String:str[]);
*
* @param tableidx A string table index.
* @param stringidx A string index.
- * @param name Buffer to store the string value.
+ * @param str Buffer to store the string value.
* @param maxlength Maximum length of string buffer.
* @return Number of bytes written to the buffer (UTF-8 safe).
* @error Invalid string table index or string index.
*/
-native ReadStringTable(tableidx, stringIdx, String:str[], maxlength);
+native ReadStringTable(tableidx, stringidx, String:str[], maxlength);
/**
* Returns the length of the user data associated with a given string index.
@@ -124,7 +124,7 @@ native GetStringTableDataLength(tableidx, stringidx);
* @return Number of bytes written to the buffer (UTF-8 safe).
* @error Invalid string table index or string index.
*/
-native GetStringTableData(tableidx, stringIdx, String:userdata[], maxlength);
+native GetStringTableData(tableidx, stringidx, String:userdata[], maxlength);
/**
* Sets the user data associated with a given string index.
@@ -136,13 +136,13 @@ native GetStringTableData(tableidx, stringIdx, String:userdata[], maxlength);
* @return Number of bytes written to the buffer (UTF-8 safe).
* @error Invalid string table index or string index.
*/
-native SetStringTableData(tableidx, stringIdx, const String:userdata[], length);
+native SetStringTableData(tableidx, stringidx, const String:userdata[], length);
/**
* Adds a string to a given string table.
*
* @param tableidx A string table index.
- * @param string String to add.
+ * @param str String to add.
* @param userdata An optional user data string.
* @param length Length of user data string. This should include the null terminator.
* If set to -1, then user data will be not be altered if the specified string
diff --git a/env/include/sdktools_tempents_stocks.inc b/env/include/sdktools_tempents_stocks.inc
index 2a52bf1..6a632c0 100644
--- a/env/include/sdktools_tempents_stocks.inc
+++ b/env/include/sdktools_tempents_stocks.inc
@@ -100,7 +100,7 @@ stock TE_SetupSparks(const Float:pos[3], const Float:dir[3], Magnitude, TrailLen
* @param pos Position of the smoke.
* @param Model Precached model index.
* @param Scale Scale of the smoke.
- * @param Framerate Frame rate of the smoke.
+ * @param FrameRate Frame rate of the smoke.
* @noreturn
*/
stock TE_SetupSmoke(const Float:pos[3], Model, Float:Scale, FrameRate)
@@ -278,7 +278,7 @@ stock TE_SetupBloodSprite(const Float:pos[3], const Float:dir[3], const color[4]
* @param Life Time duration of the ring.
* @param Width Beam width.
* @param Amplitude Beam amplitude.
- * @param color Color array (r, g, b, a).
+ * @param Color Color array (r, g, b, a).
* @param Speed Speed of the beam.
* @param Flags Beam flags.
* @noreturn
@@ -321,7 +321,7 @@ stock TE_SetupBeamRingPoint(const Float:center[3], Float:Start_Radius, Float:End
* @param EndWidth Final beam width.
* @param FadeLength Beam fade time duration.
* @param Amplitude Beam amplitude.
- * @param color Color array (r, g, b, a).
+ * @param Color Color array (r, g, b, a).
* @param Speed Speed of the beam.
* @noreturn
*/
@@ -361,7 +361,7 @@ stock TE_SetupBeamPoints(const Float:start[3], const Float:end[3], ModelIndex, H
* @param EndWidth Final beam width.
* @param FadeLength Beam fade time duration.
* @param Amplitude Beam amplitude.
- * @param color Color array (r, g, b, a).
+ * @param Color Color array (r, g, b, a).
* @param Speed Speed of the beam.
* @noreturn
*/
@@ -399,7 +399,7 @@ stock TE_SetupBeamLaser(StartEntity, EndEntity, ModelIndex, HaloIndex, StartFram
* @param Life Time duration of the ring.
* @param Width Beam width.
* @param Amplitude Beam amplitude.
- * @param color Color array (r, g, b, a).
+ * @param Color Color array (r, g, b, a).
* @param Speed Speed of the beam.
* @param Flags Beam flags.
* @noreturn
@@ -436,7 +436,7 @@ stock TE_SetupBeamRing(StartEntity, EndEntity, ModelIndex, HaloIndex, StartFrame
* @param Width Initial beam width.
* @param EndWidth Final beam width.
* @param FadeLength Beam fade time duration.
- * @param color Color array (r, g, b, a).
+ * @param Color Color array (r, g, b, a).
* @noreturn
*/
stock TE_SetupBeamFollow(EntIndex, ModelIndex, HaloIndex, Float:Life, Float:Width, Float:EndWidth, FadeLength, const Color[4])
diff --git a/env/include/sdktools_voice.inc b/env/include/sdktools_voice.inc
index ef27180..132898b 100644
--- a/env/include/sdktools_voice.inc
+++ b/env/include/sdktools_voice.inc
@@ -78,6 +78,7 @@ native GetClientListeningFlags(client);
*
* @param iReceiver The listener index.
* @param iSender The sender index.
+ * @param bListen True if the receiver can listen to the sender, false otherwise.
* @return True if successful otherwise false.
*/
#pragma deprecated Use SetListenOverride() instead
@@ -98,7 +99,7 @@ native bool:GetClientListening(iReceiver, iSender);
*
* @param iReceiver The listener index.
* @param iSender The sender index.
- * @param override
+ * @param override The override of the receiver's ability to listen to the sender.
* @return True if successful otherwise false.
*/
native bool:SetListenOverride(iReceiver, iSender, ListenOverride:override);
diff --git a/env/include/sorting.inc b/env/include/sorting.inc
index 2b1bfec..50ac310 100644
--- a/env/include/sorting.inc
+++ b/env/include/sorting.inc
@@ -84,7 +84,7 @@ native SortFloats(Float:array[], array_size, SortOrder:order = Sort_Ascending);
* @param order Sorting order to use.
* @noreturn
*/
-native SortStrings(String:array[][], num_strings, SortOrder:order = Sort_Ascending);
+native SortStrings(String:array[][], array_size, SortOrder:order = Sort_Ascending);
/**
* Sort comparison function for 1D array elements.
@@ -125,8 +125,8 @@ native SortCustom1D(array[], array_size, SortFunc1D:sortfunc, Handle:hndl=INVALI
*/
funcenum SortFunc2D
{
- public(array[], array[], const array[][], Handle:hndl),
- public(String:array[], String:array[], const String:array[][], Handle:hndl),
+ public(elem1[], elem2[], const array[][], Handle:hndl),
+ public(String:elem1[], String:elem2[], const String:array[][], Handle:hndl),
};
/**
diff --git a/env/include/sourcemod.inc b/env/include/sourcemod.inc
index 8d165f7..dec146d 100644
--- a/env/include/sourcemod.inc
+++ b/env/include/sourcemod.inc
@@ -66,6 +66,7 @@ struct Plugin
#include
#include
#include
+#include
#include
#include
#include
@@ -277,7 +278,7 @@ native GetPluginFilename(Handle:plugin, String:buffer[], maxlength);
* @return True if being debugged, false otherwise.
* @error Invalid Handle.
*/
-native bool:IsPluginDebugging(Handle:hndl);
+native bool:IsPluginDebugging(Handle:plugin);
/**
* Retrieves a plugin's public info.
@@ -327,7 +328,7 @@ native SetFailState(const String:string[], any:...);
* Aborts the current callback and throws an error. This function
* does not return in that no code is executed following it.
*
- * @param format String format.
+ * @param fmt String format.
* @param ... Format arguments.
* @noreturn
* @error Always!
@@ -386,7 +387,7 @@ native GameConfGetOffset(Handle:gc, const String:key[]);
*/
native bool:GameConfGetKeyValue(Handle:gc, const String:key[], String:buffer[], maxlen);
-/*
+/**
* Finds an address calculation in a GameConfig file,
* performs LoadFromAddress on it as appropriate, then returns the final address.
*
diff --git a/env/include/string.inc b/env/include/string.inc
index 957ad68..a06b924 100644
--- a/env/include/string.inc
+++ b/env/include/string.inc
@@ -119,7 +119,7 @@ stock bool:StrEqual(const String:str1[], const String:str2[], bool:caseSensitive
* destination will be truncated.
*
* @param dest Destination string buffer to copy to.
- * @param destlen Destination buffer length (includes null terminator).
+ * @param destLen Destination buffer length (includes null terminator).
* @param source Source string buffer to copy from.
* @return Number of cells written.
*/
@@ -323,7 +323,7 @@ native GetCharBytes(const String:source[]);
*
* @note Multi-byte characters will always return false.
*
- * @param char Character to test.
+ * @param chr Character to test.
* @return True if character is alphabetical, otherwise false.
*/
native bool:IsCharAlpha(chr);
@@ -333,7 +333,7 @@ native bool:IsCharAlpha(chr);
*
* @note Multi-byte characters will always return false.
*
- * @param char Character to test.
+ * @param chr Character to test.
* @return True if character is numeric, otherwise false.
*/
native bool:IsCharNumeric(chr);
@@ -343,7 +343,7 @@ native bool:IsCharNumeric(chr);
*
* @note Multi-byte characters will always return false.
*
- * @param char Character to test.
+ * @param chr Character to test.
* @return True if character is whitespace, otherwise false.
*/
native bool:IsCharSpace(chr);
@@ -351,7 +351,7 @@ native bool:IsCharSpace(chr);
/**
* Returns if a character is multi-byte or not.
*
- * @param char Character to test.
+ * @param chr Character to test.
* @return 0 for a normal 7-bit ASCII character,
* otherwise number of bytes in multi-byte character.
*/
@@ -362,7 +362,7 @@ native IsCharMB(chr);
*
* @note Multi-byte characters will always return false.
*
- * @param char Character to test.
+ * @param chr Character to test.
* @return True if character is uppercase, otherwise false.
*/
native bool:IsCharUpper(chr);
@@ -372,7 +372,7 @@ native bool:IsCharUpper(chr);
*
* @note Multi-byte characters will always return false.
*
- * @param char Character to test.
+ * @param chr Character to test.
* @return True if character is lowercase, otherwise false.
*/
native bool:IsCharLower(chr);
diff --git a/env/include/testing.inc b/env/include/testing.inc
new file mode 100644
index 0000000..28b50e8
--- /dev/null
+++ b/env/include/testing.inc
@@ -0,0 +1,72 @@
+/**
+ * vim: set ts=4 sw=4 tw=99 noet :
+ * =============================================================================
+ * SourceMod (C)2004-2014 AlliedModders LLC. All rights reserved.
+ * =============================================================================
+ *
+ * This file is part of the SourceMod/SourcePawn SDK.
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see .
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation. You must obey the GNU General Public License in
+ * all respects for all other code used. Additionally, AlliedModders LLC grants
+ * this exception to all derivative works. AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or .
+ *
+ * Version: $Id$
+ */
+
+static TestNumber = 0;
+static String:TestContext[255];
+
+SetTestContext(const String:context[])
+{
+ strcopy(TestContext, sizeof(TestContext), context);
+}
+
+AssertEq(const String:text[], cell1, cell2)
+{
+ TestNumber++;
+ if (cell1 == cell2) {
+ PrintToServer("[%d] %s: %s == %d OK", TestNumber, TestContext, text, cell2);
+ } else {
+ PrintToServer("[%d] %s FAIL: %s should be %d, got %d", TestNumber, TestContext, text, cell2, cell1);
+ ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext);
+ }
+}
+
+AssertFalse(const String:text[], bool:value)
+{
+ TestNumber++;
+ if (!value) {
+ PrintToServer("[%d] %s: %s == false OK", TestNumber, TestContext, text, value);
+ } else {
+ PrintToServer("[%d] %s FAIL: %s should be false, got true", TestNumber, TestContext, text);
+ ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext);
+ }
+}
+
+AssertTrue(const String:text[], bool:value)
+{
+ TestNumber++;
+ if (value) {
+ PrintToServer("[%d] %s: %s == true OK", TestNumber, TestContext, text, value);
+ } else {
+ PrintToServer("[%d] %s FAIL: %s should be true, got false", TestNumber, TestContext, text);
+ ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext);
+ }
+}
diff --git a/env/include/tf2.inc b/env/include/tf2.inc
index bba1efd..789463d 100644
--- a/env/include/tf2.inc
+++ b/env/include/tf2.inc
@@ -35,13 +35,13 @@
#endif
#define _tf2_included
-#define TF_STUNFLAG_SLOWDOWN (1 << 0) // activates slowdown modifier
-#define TF_STUNFLAG_BONKSTUCK (1 << 1) // bonk sound, stuck
-#define TF_STUNFLAG_LIMITMOVEMENT (1 << 2) // disable forward/backward movement
-#define TF_STUNFLAG_CHEERSOUND (1 << 3) // cheering sound
-#define TF_STUNFLAG_NOSOUNDOREFFECT (1 << 5) // no sound or particle
-#define TF_STUNFLAG_THIRDPERSON (1 << 6) // panic animation
-#define TF_STUNFLAG_GHOSTEFFECT (1 << 7) // ghost particles
+#define TF_STUNFLAG_SLOWDOWN (1 << 0) /**< activates slowdown modifier */
+#define TF_STUNFLAG_BONKSTUCK (1 << 1) /**< bonk sound, stuck */
+#define TF_STUNFLAG_LIMITMOVEMENT (1 << 2) /**< disable forward/backward movement */
+#define TF_STUNFLAG_CHEERSOUND (1 << 3) /**< cheering sound */
+#define TF_STUNFLAG_NOSOUNDOREFFECT (1 << 5) /**< no sound or particle */
+#define TF_STUNFLAG_THIRDPERSON (1 << 6) /**< panic animation */
+#define TF_STUNFLAG_GHOSTEFFECT (1 << 7) /**< ghost particles */
#define TF_STUNFLAGS_LOSERSTATE TF_STUNFLAG_SLOWDOWN|TF_STUNFLAG_NOSOUNDOREFFECT|TF_STUNFLAG_THIRDPERSON
#define TF_STUNFLAGS_GHOSTSCARE TF_STUNFLAG_GHOSTEFFECT|TF_STUNFLAG_THIRDPERSON
@@ -107,23 +107,67 @@ enum TFCond
TFCond_RegenBuffed,
TFCond_MarkedForDeath,
TFCond_NoHealingDamageBuff,
- TFCond_SpeedBuffAlly,
+ TFCond_SpeedBuffAlly, //32
TFCond_HalloweenCritCandy,
-
- TFCond_CritHype = 36,
+ TFCond_CritCanteen,
+ TFCond_CritDemoCharge,
+ TFCond_CritHype,
TFCond_CritOnFirstBlood,
TFCond_CritOnWin,
TFCond_CritOnFlagCapture,
TFCond_CritOnKill,
- TFCond_RestrictToMelee
+ TFCond_RestrictToMelee,
+ TFCond_DefenseBuffNoCritBlock,
+ TFCond_Reprogrammed,
+ TFCond_CritMmmph,
+ TFCond_DefenseBuffMmmph,
+ TFCond_FocusBuff,
+ TFCond_DisguiseRemoved,
+ TFCond_MarkedForDeathSilent,
+ TFCond_DisguisedAsDispenser,
+ TFCond_Sapped,
+ TFCond_UberchargedHidden,
+ TFCond_UberchargedCanteen,
+ TFCond_HalloweenBombHead,
+ TFCond_HalloweenThriller,
+ TFCond_RadiusHealOnDamage,
+ TFCond_CritOnDamage,
+ TFCond_UberchargedOnTakeDamage,
+ TFCond_UberBulletResist,
+ TFCond_UberBlastResist,
+ TFCond_UberFireResist,
+ TFCond_SmallBulletResist,
+ TFCond_SmallBlastResist,
+ TFCond_SmallFireResist,
+ TFCond_Stealthed, // 64
+ TFCond_MedigunDebuff,
+ TFCond_StealthedUserBuffFade,
+ TFCond_BulletImmune,
+ TFCond_BlastImmune,
+ TFCond_FireImmune,
+ TFCond_PreventDeath,
+ TFCond_MVMBotRadiowave,
+ TFCond_HalloweenSpeedBoost,
+ TFCond_HalloweenQuickHeal,
+ TFCond_HalloweenGiant,
+ TFCond_HalloweenTiny,
+ TFCond_HalloweenInHell,
+ TFCond_HalloweenGhostMode,
};
+const Float:TFCondDuration_Infinite = -1.0;
+
enum TFHoliday
{
TFHoliday_Birthday = 1,
TFHoliday_Halloween,
+ TFHoliday_Christmas,
+ TFHoliday_ValentinesDay,
+ TFHoliday_MeetThePyro,
TFHoliday_FullMoon,
TFHoliday_HalloweenOrFullMoon,
+ TFHoliday_HalloweenOrFullMoonOrValentines,
+ TFHoliday_AprilFools,
};
enum TFObjectType
@@ -146,10 +190,11 @@ enum TFObjectMode
* Sets a client on fire for 10 seconds.
*
* @param client Player's index.
+ * @param attacker Attacker's index.
* @noreturn
* @error Invalid client index, client not in game, or no mod support.
*/
-native TF2_IgnitePlayer(client, target);
+native TF2_IgnitePlayer(client, attacker);
/**
* Respawns a client
@@ -175,10 +220,12 @@ native TF2_RegeneratePlayer(client);
* @param client Player's index.
* @param condition Integer identifier of condition to apply.
* @param duration Duration of condition (does not apply to all conditions).
+ * Pass TFCondDuration_Infinite to apply until manually removed.
+ * @param inflictor Condition inflictor's index (0 for no inflictor).
* @noreturn
* @error Invalid client index, client not in game, or no mod support.
*/
-native TF2_AddCondition(client, TFCond:condition, Float:duration);
+native TF2_AddCondition(client, TFCond:condition, Float:duration=TFCondDuration_Infinite, inflictor=0);
/**
* Removes a condition from a player
@@ -227,10 +274,10 @@ native TF2_RemovePlayerDisguise(client);
* Stuns a client
*
* @param client Player's index.
- * @param float Duration of stun.
- * @param float Slowdown percent (as decimal, 0.00-1.00)
- * (ignored if TF_STUNFLAG_SLOWDOWN is not set.
- * @param int Stun flags.
+ * @param duration Duration of stun.
+ * @param slowdown Slowdown percent (as decimal, 0.00-1.00)
+ * Ignored if TF_STUNFLAG_SLOWDOWN is not set.
+ * @param stunflags Stun flags.
* @param attacker Attacker's index (0 is allowed for world).
* @noreturn
*/
@@ -241,7 +288,7 @@ native TF2_StunPlayer(client, Float:duration, Float:slowdown=0.0, stunflags, att
*
* @param client Player's index.
* @param attacker Attacker's index.
- * @param float Duration of bleeding (in seconds).
+ * @param duration Duration of bleeding (in seconds).
* @noreturn
*/
native TF2_MakeBleed(client, attacker, Float:duration);
@@ -251,6 +298,7 @@ native TF2_MakeBleed(client, attacker, Float:duration);
*
* @return The current resource entity index.
*/
+#pragma deprecated Use GetPlayerResourceEntity instead
native TF2_GetResourceEntity();
/**
@@ -295,6 +343,14 @@ forward Action:TF2_OnGetHoliday(&TFHoliday:holiday);
*/
forward Action:TF2_OnIsHolidayActive(TFHoliday:holiday, &bool:result);
+/**
+ * Returns whether or not a holiday is active
+ *
+ * @param holiday Holiday being checked.
+ * @return Boolean of whether or not the holiday is active.
+ */
+native bool:TF2_IsHolidayActive(TFHoliday:holiday);
+
/**
* Returns whether or not a client (Player) is in a duel.
*
@@ -335,6 +391,19 @@ forward TF2_OnWaitingForPlayersStart();
*/
forward TF2_OnWaitingForPlayersEnd();
+/**
+ * Called when a player attempts to use a teleporter to decide if the player should be allowed to teleport.
+ * Return Plugin_Continue to let the original calculation or return a higher
+ * action to override the decision with the value of 'result'
+ *
+ * @param client Client index.
+ * @param teleporter Teleporter entity index.
+ * @param result Buffer param for the result of the decision.
+ * This is prepopulated with the game's original decision to let a player teleport.
+ * @return Plugin_Continue for original calculation, higher value to use 'result'.
+ */
+forward Action:TF2_OnPlayerTeleport(client, teleporter, &bool:result);
+
/**
* Do not edit below this line!
*/
@@ -366,5 +435,6 @@ public __ext_tf2_SetNTVOptional()
MarkNativeAsOptional("TF2_GetResourceEntity");
MarkNativeAsOptional("TF2_GetClass");
MarkNativeAsOptional("TF2_IsPlayerInDuel");
+ MarkNativeAsOptional("TF2_IsHolidayActive");
}
#endif
diff --git a/env/include/tf2_stocks.inc b/env/include/tf2_stocks.inc
index dff35b6..10fff4b 100644
--- a/env/include/tf2_stocks.inc
+++ b/env/include/tf2_stocks.inc
@@ -132,6 +132,18 @@ enum {
TF_CUSTOM_PLASMA_GIB,
TF_CUSTOM_PRACTICE_STICKY,
TF_CUSTOM_EYEBALL_ROCKET,
+ TF_CUSTOM_HEADSHOT_DECAPITATION,
+ TF_CUSTOM_TAUNT_ARMAGEDDON,
+ TF_CUSTOM_FLARE_PELLET,
+ TF_CUSTOM_CLEAVER,
+ TF_CUSTOM_CLEAVER_CRIT,
+ TF_CUSTOM_SAPPER_RECORDER_DEATH,
+ TF_CUSTOM_MERASMUS_PLAYER_BOMB,
+ TF_CUSTOM_MERASMUS_GRENADE,
+ TF_CUSTOM_MERASMUS_ZAP,
+ TF_CUSTOM_MERASMUS_DECAPITATION,
+ TF_CUSTOM_CANNONBALL_PUSH,
+ TF_CUSTOM_TAUNT_ALLCLASS_GUITAR_RIFF,
};
// Weapon codes as used in some events, such as player_death
@@ -218,9 +230,28 @@ enum {
TF_WEAPON_RAYGUN,
TF_WEAPON_PARTICLE_CANNON,
TF_WEAPON_MECHANICAL_ARM,
+ TF_WEAPON_DRG_POMSON,
+ TF_WEAPON_BAT_GIFTWRAP,
+ TF_WEAPON_GRENADE_ORNAMENT,
+ TF_WEAPON_RAYGUN_REVENGE,
+ TF_WEAPON_PEP_BRAWLER_BLASTER,
+ TF_WEAPON_CLEAVER,
+ TF_WEAPON_GRENADE_CLEAVER,
+ TF_WEAPON_STICKY_BALL_LAUNCHER,
+ TF_WEAPON_GRENADE_STICKY_BALL,
+ TF_WEAPON_SHOTGUN_BUILDING_RESCUE,
+ TF_WEAPON_CANNON,
+ TF_WEAPON_THROWABLE,
+ TF_WEAPON_GRENADE_THROWABLE,
+ TF_WEAPON_PDA_SPY_BUILD,
+ TF_WEAPON_GRENADE_WATERBALLOON,
+ TF_WEAPON_HARVESTER_SAW,
+ TF_WEAPON_SPELLBOOK,
+ TF_WEAPON_SPELLBOOK_PROJECTILE,
+ TF_WEAPON_SNIPERRIFLE_CLASSIC,
};
-// TF2 Weapon Slots for GetPlayerWeaponSlot
+// TF2 Weapon Loadout Slots
enum
{
TFWeaponSlot_Primary,
@@ -328,6 +359,7 @@ stock TF2_SetPlayerClass(client, TFClassType:class, bool:weapons=true, bool:pers
* @return Value or -1 on failure.
* @error Invalid client index, client not in game or failed to find resource entity.
*/
+#pragma deprecated Use GetPlayerResourceEntity and GetEntProp instead
stock TF2_GetPlayerResourceData(client, TFResourceType:type)
{
if (!IsClientConnected(client))
@@ -363,6 +395,7 @@ stock TF2_GetPlayerResourceData(client, TFResourceType:type)
* @return Value or -1 on failure.
* @error Invalid client index, client not in game or failed to find resource entity.
*/
+#pragma deprecated Use GetPlayerResourceEntity and SetEntProp instead
stock bool:TF2_SetPlayerResourceData(client, TFResourceType:type, any:value)
{
if (!IsClientConnected(client))
@@ -403,7 +436,7 @@ stock TF2_RemoveWeaponSlot(client, slot)
while ((weaponIndex = GetPlayerWeaponSlot(client, slot)) != -1)
{
RemovePlayerItem(client, weaponIndex);
- RemoveEdict(weaponIndex);
+ AcceptEntityInput(weaponIndex, "Kill");
}
}
@@ -437,6 +470,7 @@ stock TF2_GetPlayerConditionFlags(client)
* Check whether or not a condition is set on a player
*
* @param client Player's index.
+ * @param cond TFCond constant
* @return True if set, false otherwise
*/
stock bool:TF2_IsPlayerInCondition(client, TFCond:cond)
@@ -455,7 +489,7 @@ stock bool:TF2_IsPlayerInCondition(client, TFCond:cond)
return true;
}
}
- else
+ else if (_:cond < 64)
{
new bit = (1 << (_:cond - 32));
if ((GetEntProp(client, Prop_Send, "m_nPlayerCondEx") & bit) == bit)
@@ -463,6 +497,14 @@ stock bool:TF2_IsPlayerInCondition(client, TFCond:cond)
return true;
}
}
+ else
+ {
+ new bit = (1 << (_:cond - 64));
+ if ((GetEntProp(client, Prop_Send, "m_nPlayerCondEx2") & bit) == bit)
+ {
+ return true;
+ }
+ }
return false;
}
diff --git a/env/include/timers.inc b/env/include/timers.inc
index 07e801e..dbaeb14 100644
--- a/env/include/timers.inc
+++ b/env/include/timers.inc
@@ -92,6 +92,7 @@ native Handle:CreateTimer(Float:interval, Timer:func, any:data=INVALID_HANDLE, f
/**
* Kills a timer. Use this instead of CloseHandle() if you need more options.
*
+ * @param timer Timer Handle to kill.
* @param autoClose If autoClose is true, the data that was passed to CreateTimer() will
* be closed as a handle if TIMER_DATA_HNDL_CLOSE was not specified.
* @noreturn
diff --git a/env/include/topmenus.inc b/env/include/topmenus.inc
index b6fcca2..9bc4d7f 100644
--- a/env/include/topmenus.inc
+++ b/env/include/topmenus.inc
@@ -178,11 +178,11 @@ native bool:LoadTopMenuConfig(Handle:topmenu, const String:file[], String:error[
* @param name Object name (MUST be unique).
* @param type Object type.
* @param handler Handler for object.
- * @param cmdname Command name (for access overrides).
- * @param flags Default access flags.
* @param parent Parent object ID, or INVALID_TOPMENUOBJECT for none.
* Items must have a category parent.
* Categories must not have a parent.
+ * @param cmdname Command name (for access overrides).
+ * @param flags Default access flags.
* @param info_string Arbitrary storage (max 255 bytes).
* @return A new TopMenuObject ID, or INVALID_TOPMENUOBJECT on
* failure.
@@ -201,7 +201,7 @@ native TopMenuObject:AddToTopMenu(Handle:topmenu,
* Retrieves the info string of a top menu item.
*
* @param topmenu TopMenu Handle.
- * @param object TopMenuObject ID.
+ * @param parent TopMenuObject ID.
* @param buffer Buffer to store info string.
* @param maxlength Maximum size of info string.
* @return Number of bytes written, not including the
@@ -247,6 +247,17 @@ native RemoveFromTopMenu(Handle:topmenu, TopMenuObject:object);
*/
native bool:DisplayTopMenu(Handle:topmenu, client, TopMenuPosition:position);
+/**
+ * Displays a TopMenu category to a client.
+ *
+ * @param topmenu TopMenu Handle.
+ * @param category Category object id.
+ * @param client Client index.
+ * @return True on success, false on failure.
+ * @error Invalid TopMenu Handle or client not in game.
+ */
+native bool:DisplayTopMenuCategory(Handle:topmenu, TopMenuObject:category, client);
+
/**
* Finds a category's object ID in a TopMenu.
*
@@ -258,6 +269,17 @@ native bool:DisplayTopMenu(Handle:topmenu, client, TopMenuPosition:position);
*/
native TopMenuObject:FindTopMenuCategory(Handle:topmenu, const String:name[]);
+/**
+ * Change the menu title caching behaviour of the TopMenu. By default the titles are cached to reduce overhead.
+ * If you need dynamic menu titles, which can change everytime the menu is displayed to a user, set this to false.
+ *
+ * @param topmenu TopMenu Handle.
+ * @param cache_titles Cache the menu titles and don't call the handler with TopMenuAction_DisplayTitle everytime the menu is drawn?
+ * @noreturn
+ * @error Invalid TopMenu Handle
+ */
+native SetTopMenuTitleCaching(Handle:topmenu, bool:cache_titles);
+
/**
* Do not edit below this line!
*/
@@ -285,6 +307,8 @@ public __ext_topmenus_SetNTVOptional()
MarkNativeAsOptional("AddToTopMenu");
MarkNativeAsOptional("RemoveFromTopMenu");
MarkNativeAsOptional("DisplayTopMenu");
+ MarkNativeAsOptional("DisplayTopMenuCategory");
MarkNativeAsOptional("FindTopMenuCategory");
+ MarkNativeAsOptional("SetTopMenuTitleCaching");
}
#endif
diff --git a/env/include/usermessages.inc b/env/include/usermessages.inc
index b960de3..5a9538d 100644
--- a/env/include/usermessages.inc
+++ b/env/include/usermessages.inc
@@ -43,6 +43,15 @@ enum UserMsg
INVALID_MESSAGE_ID = -1,
};
+/**
+ * UserMsg message serialization formats
+ */
+enum UserMessageType
+{
+ UM_BitBuf = 0,
+ UM_Protobuf,
+};
+
/**
* @section Message Flags.
*/
@@ -54,6 +63,13 @@ enum UserMsg
* @endsection
*/
+/**
+ * Returns usermessage serialization type used for the current engine
+ *
+ * @return The supported usermessage type.
+ */
+native UserMessageType:GetUserMessageType();
+
/**
* Returns the ID of a given message, or -1 on failure.
*
@@ -115,7 +131,7 @@ native EndMessage();
* Called when a message is hooked
*
* @param msg_id Message index.
- * @param bf Handle to the input bit buffer of the message.
+ * @param msg Handle to the input bit buffer or protobuf.
* @param players Array containing player indexes.
* @param playersNum Number of players in the array.
* @param reliable True if message is reliable, false otherwise.
@@ -124,7 +140,7 @@ native EndMessage();
* blocks the message from being sent, and Plugin_Continue
* resumes normal functionality.
*/
-functag public Action:MsgHook(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init);
+functag public Action:MsgHook(UserMsg:msg_id, Handle:msg, const players[], playersNum, bool:reliable, bool:init);
/**
* Called when a message hook has completed.
@@ -142,7 +158,7 @@ functag public MsgPostHook(UserMsg:msg_id, bool:sent);
* @param intercept If intercept is true, message will be fully intercepted,
* allowing the user to block the message. Otherwise,
* the hook is normal and ignores the return value.
- * @param notify Notification function.
+ * @param post Notification function.
* @noreturn
* @error Invalid message index.
*/
diff --git a/env/include/version.inc b/env/include/version.inc
index 50accf5..b69d5c7 100644
--- a/env/include/version.inc
+++ b/env/include/version.inc
@@ -35,8 +35,15 @@
#endif
#define _version_included
-#define SOURCEMOD_V_MAJOR 1 /**< SourceMod Major version */
-#define SOURCEMOD_V_MINOR 4 /**< SourceMod Minor version */
-#define SOURCEMOD_V_RELEASE 1 /**< SourceMod Release version */
+#tryinclude
-#define SOURCEMOD_VERSION "1.4.1" /**< SourceMod version string (major.minor.release.build) */
+#if !defined _auto_version_included
+#define SOURCEMOD_V_TAG "manual"
+#define SOURCEMOD_V_REV 0
+#define SOURCEMOD_V_CSET "0"
+#define SOURCEMOD_V_MAJOR 1 /**< SourceMod Major version */
+#define SOURCEMOD_V_MINOR 6 /**< SourceMod Minor version */
+#define SOURCEMOD_V_RELEASE 0 /**< SourceMod Release version */
+
+#define SOURCEMOD_VERSION "1.6.0-manual" /**< SourceMod version string (major.minor.release-tag) */
+#endif
diff --git a/env/include/version_auto.inc b/env/include/version_auto.inc
new file mode 100644
index 0000000..16dd8d2
--- /dev/null
+++ b/env/include/version_auto.inc
@@ -0,0 +1,15 @@
+
+#if defined _auto_version_included
+ #endinput
+#endif
+#define _auto_version_included
+
+#define SOURCEMOD_V_TAG ""
+#define SOURCEMOD_V_CSET "95ab81f"
+#define SOURCEMOD_V_MAJOR 1
+#define SOURCEMOD_V_MINOR 6
+#define SOURCEMOD_V_RELEASE 0
+#define SOURCEMOD_V_REV 4525
+
+#define SOURCEMOD_VERSION "1.6.0"
+
\ No newline at end of file
diff --git a/env/linux/bin/spcomp-1.6.0 b/env/linux/bin/spcomp-1.6.0
new file mode 100755
index 0000000..c609e7f
Binary files /dev/null and b/env/linux/bin/spcomp-1.6.0 differ
diff --git a/env/readme.txt b/env/readme.txt
index 636cbad..ce15b5d 100644
--- a/env/readme.txt
+++ b/env/readme.txt
@@ -1,16 +1,16 @@
-Compiling:
-
-- Windows: Use compile.bat in the source code repository.
-- Linux: Use the Makefile script.
-
-The binary will be made in /build.
-
-The develop environment should be mostly stand-alone with SourcePawn compiler
-some tools and include files.
-
-Linux requirements:
-- Make
-- Mercurial
-
-Windows requirements:
-- TortoiseHg or Mercurial
+Compiling:
+
+- Windows: Use compile.bat in the source code repository.
+- Linux: Use the Makefile script.
+
+The binary will be made in /build.
+
+The develop environment should be mostly stand-alone with SourcePawn compiler
+some tools and include files.
+
+Linux requirements:
+- Make
+- Mercurial
+
+Windows requirements:
+- TortoiseHg or Mercurial
diff --git a/env/win32/bin/spcomp-1.6.0.exe b/env/win32/bin/spcomp-1.6.0.exe
new file mode 100644
index 0000000..9539647
Binary files /dev/null and b/env/win32/bin/spcomp-1.6.0.exe differ
diff --git a/src/zr/soundeffects/ambientsounds.inc b/src/zr/soundeffects/ambientsounds.inc
index 60d37bf..25f246a 100644
--- a/src/zr/soundeffects/ambientsounds.inc
+++ b/src/zr/soundeffects/ambientsounds.inc
@@ -185,6 +185,7 @@ AmbientSoundsRestart()
if (tAmbientSounds != INVALID_HANDLE)
{
KillTimer(tAmbientSounds);
+ tAmbientSounds = INVALID_HANDLE;
}
// If ambience is disabled, then stop.
diff --git a/updateversion.bat b/updateversion.bat
index f9a6c09..b710c5c 100644
--- a/updateversion.bat
+++ b/updateversion.bat
@@ -1,13 +1,13 @@
-@echo off
-
-REM To avoid complicated and maybe impossible tasks in windows batch scripts,
-REM this script will execute another linux shell script using cygwin.
-
-set BASH=env\win32\bin\bash.exe
-set DATEPATH=env\win32\bin\date.exe
-
-REM Converts a windows path to a linux path for cygwin (/cygdrive/c/...).
-for /f %%s in ('env\win32\bin\cygpath.exe -u "%DATEPATH%"') do set DATEPATH=%%s
-
-%BASH% updateversion.sh %DATEPATH%
-exit
+@echo off
+
+REM To avoid complicated and maybe impossible tasks in windows batch scripts,
+REM this script will execute another linux shell script using cygwin.
+
+set BASH=env\win32\bin\bash.exe
+set DATEPATH=env\win32\bin\date.exe
+
+REM Converts a windows path to a linux path for cygwin (/cygdrive/c/...).
+for /f %%s in ('env\win32\bin\cygpath.exe -u "%DATEPATH%"') do set DATEPATH=%%s
+
+%BASH% updateversion.sh %DATEPATH%
+exit