From cd1d2d572397b807cd879790e398ca27d7640a54 Mon Sep 17 00:00:00 2001 From: Richard Helgeby Date: Sun, 27 Jul 2014 11:09:33 +0300 Subject: [PATCH 1/7] Update build.sh script to use Git. --- build.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 From 105a23bf329207656252b3a32330ee68d1822e02 Mon Sep 17 00:00:00 2001 From: Richard Helgeby Date: Sun, 27 Jul 2014 11:46:02 +0300 Subject: [PATCH 2/7] Add .gitattributes to set correct line ending style on various files. --- .gitattributes | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .gitattributes 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 From f084dab794aad5448f135a20d7519311af8ace4d Mon Sep 17 00:00:00 2001 From: Richard Helgeby Date: Wed, 30 Jul 2014 12:03:42 +0300 Subject: [PATCH 3/7] Update compilers and includes to version 1.6.0. --- Makefile | 4 +- compile.bat | 50 +-- env/darwin/bin/spcomp-1.6.0 | Bin 0 -> 277360 bytes env/include/admin.inc | 18 +- env/include/adt_array.inc | 4 +- env/include/adt_trie.inc | 79 +++-- env/include/basecomm.inc | 16 + env/include/clientprefs.inc | 5 +- env/include/clients.inc | 54 +++- env/include/console.inc | 39 ++- env/include/core.inc | 61 ++++ env/include/cstrike.inc | 258 ++++++++++++---- env/include/datapack.inc | 4 +- env/include/dbi.inc | 87 +++++- env/include/entity.inc | 35 ++- env/include/entity_prop_stocks.inc | 73 ++--- env/include/events.inc | 2 +- env/include/files.inc | 12 +- env/include/float.inc | 73 ++--- env/include/functions.inc | 17 ++ env/include/geoip.inc | 4 +- env/include/halflife.inc | 62 +++- env/include/keyvalues.inc | 2 +- env/include/lang.inc | 2 +- env/include/logging.inc | 11 - env/include/menus.inc | 22 +- env/include/protobuf.inc | 368 +++++++++++++++++++++++ env/include/regex.inc | 17 +- env/include/sdkhooks.inc | 308 +++++++++++++++---- env/include/sdktools.inc | 16 + env/include/sdktools_entinput.inc | 2 +- env/include/sdktools_functions.inc | 34 ++- env/include/sdktools_gamerules.inc | 8 + env/include/sdktools_hooks.inc | 12 +- env/include/sdktools_sound.inc | 2 +- env/include/sdktools_stringtables.inc | 12 +- env/include/sdktools_tempents_stocks.inc | 12 +- env/include/sdktools_voice.inc | 3 +- env/include/sorting.inc | 6 +- env/include/sourcemod.inc | 7 +- env/include/string.inc | 14 +- env/include/testing.inc | 72 +++++ env/include/tf2.inc | 106 +++++-- env/include/tf2_stocks.inc | 48 ++- env/include/timers.inc | 1 + env/include/topmenus.inc | 30 +- env/include/usermessages.inc | 22 +- env/include/version.inc | 15 +- env/include/version_auto.inc | 15 + env/linux/bin/spcomp-1.6.0 | Bin 0 -> 264408 bytes env/win32/bin/spcomp-1.6.0.exe | Bin 0 -> 384000 bytes 51 files changed, 1726 insertions(+), 398 deletions(-) create mode 100755 env/darwin/bin/spcomp-1.6.0 create mode 100644 env/include/protobuf.inc create mode 100644 env/include/testing.inc create mode 100644 env/include/version_auto.inc create mode 100755 env/linux/bin/spcomp-1.6.0 create mode 100644 env/win32/bin/spcomp-1.6.0.exe 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/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/env/darwin/bin/spcomp-1.6.0 b/env/darwin/bin/spcomp-1.6.0 new file mode 100755 index 0000000000000000000000000000000000000000..02df00e09e65dd3c0cc66f0159061e8d4f9eeb74 GIT binary patch literal 277360 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 s%zGY{X0zFZYik(dO&|LPHty(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 0000000000000000000000000000000000000000..c609e7ffb9558b603156aef67b913638ba536371 GIT binary patch literal 264408 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
  • *U-v*pU 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%0AgRlh@hTccu0!j&xrCfkeO1WS@Qtsd> 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 Osvz(xeaPV(0sDX8DTKxV literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9539647080c7458e7c024f727abe63bb26230015 GIT binary patch literal 384000 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

    h(dkDaA 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 Date: Wed, 30 Jul 2014 12:23:47 +0300 Subject: [PATCH 4/7] Normalize line endings. --- compiling.txt | 60 +- .../addons/sourcemod/configs/zr/downloads.txt | 66 +- .../addons/sourcemod/configs/zr/hitgroups.txt | 254 +- .../addons/sourcemod/configs/zr/models.txt | 196 +- .../configs/zr/playerclasses-nemesis.txt | 596 ++--- .../sourcemod/configs/zr/playerclasses.txt | 1160 ++++---- .../addons/sourcemod/configs/zr/weapons.txt | 1560 +++++------ .../es/zombiereloaded.phrases.txt | 2174 +++++++-------- .../no/zombiereloaded.phrases.txt | 2172 +++++++-------- .../ru/zombiereloaded.phrases.txt | 2174 +++++++-------- .../translations/zombiereloaded.phrases.txt | 2322 ++++++++--------- .../cfg/sourcemod/zombiereloaded/classic.cfg | 10 +- .../gamemode-examples/cs_italy.cfg | 8 +- .../gamemode-examples/de_dust.cfg | 8 +- .../gamemode-examples/de_dust.post.cfg | 10 +- .../gamemode-examples/de_dust2.cfg | 8 +- .../cfg/sourcemod/zombiereloaded/nemesis.cfg | 50 +- .../sourcemod/zombiereloaded/randommode.cfg | 14 +- .../cfg/sourcemod/zombiereloaded/survivor.cfg | 50 +- .../cfg/sourcemod/zombiereloaded/swarm.cfg | 62 +- .../sourcemod/zombiereloaded/swarm.post.cfg | 12 +- .../zombiereloaded/zombiereloaded.cfg | 1542 +++++------ docs/license.txt | 1348 +++++----- docs/old/zr_3.0-b2-patch_changelog.txt | 522 ++-- docs/old/zr_3.0-b2_release_notes.txt | 198 +- docs/old/zr_3.0_release_notes.txt | 142 +- docs/zr_3.1_release_notes.txt | 442 ++-- env/readme.txt | 32 +- updateversion.bat | 26 +- 29 files changed, 8609 insertions(+), 8609 deletions(-) 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/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/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/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 From 42a2037f3097db1ff7e7f26e85dae43057a1b39d Mon Sep 17 00:00:00 2001 From: Richard Helgeby Date: Wed, 30 Jul 2014 19:00:46 +0300 Subject: [PATCH 5/7] Add code guidelines document. --- docs/codestyle.txt | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 docs/codestyle.txt 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. From 8d6819c75ce1f7abd0aae9ab67ff67199e400753 Mon Sep 17 00:00:00 2001 From: Richard Helgeby Date: Sun, 14 Sep 2014 14:03:53 +0200 Subject: [PATCH 6/7] Fix invalid timer handle error when ambient sounds are disabled. --- src/zr/soundeffects/ambientsounds.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/zr/soundeffects/ambientsounds.inc b/src/zr/soundeffects/ambientsounds.inc index 60d37bf..b0a645f 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. From 8cf314bebfc823b08b429720d8aaf9478ea8a000 Mon Sep 17 00:00:00 2001 From: Richard Helgeby Date: Sun, 14 Sep 2014 14:05:40 +0200 Subject: [PATCH 7/7] Fix typo in timer handle fix. --- src/zr/soundeffects/ambientsounds.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zr/soundeffects/ambientsounds.inc b/src/zr/soundeffects/ambientsounds.inc index b0a645f..25f246a 100644 --- a/src/zr/soundeffects/ambientsounds.inc +++ b/src/zr/soundeffects/ambientsounds.inc @@ -185,7 +185,7 @@ AmbientSoundsRestart() if (tAmbientSounds != INVALID_HANDLE) { KillTimer(tAmbientSounds); - tAmbientSounds == INVALID_HANDLE; + tAmbientSounds = INVALID_HANDLE; } // If ambience is disabled, then stop.