<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alliedmods.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Slogic</id>
	<title>AlliedModders Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alliedmods.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Slogic"/>
	<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/Special:Contributions/Slogic"/>
	<updated>2026-04-17T23:43:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.6</generator>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=4781</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=4781"/>
		<updated>2007-06-13T11:10:58Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Как увеличить число карт в стандартном голосовании? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:AMX Mod X]]&lt;br /&gt;
= Общие положения, термины, сокращения и условные обозначения =&lt;br /&gt;
:* HL или HL1 - аббревиатура от [[Half-Life 1|Half-Life]] (часть первая);&lt;br /&gt;
:* Mod - &amp;quot;мод&amp;quot;, модификация - дополнение к чему-либо, как правило, расширяющее/изменяющее функциональность;&lt;br /&gt;
:* HL Engine - &amp;quot;движок&amp;quot; Half-Life - &amp;quot;центральный модуль&amp;quot;, осуществляющий выполнение базовых &amp;quot;общемодовых&amp;quot; задач;&lt;br /&gt;
:* MM - [[Metamod]] - сторонний мод особого типа, является промежуточным звеном в системе &amp;quot;HL движок - HL мод&amp;quot;;&lt;br /&gt;
:* AMXX - аббревиатура от [[AMX Mod X]] - Metamod plugin (&amp;quot;плагин&amp;quot;), своего рода Metamod мод;&lt;br /&gt;
:* Map - &amp;quot;карта&amp;quot; - определяет внешний вид территории, на которой происходит игровое действие;&lt;br /&gt;
:* World - &amp;quot;мир&amp;quot; - все пространство, которое занимает карта, а также область, находящаяся за картой;&lt;br /&gt;
:* Spawn - &amp;quot;спавн&amp;quot; - момент, когда игрок появляется в мире, обретая физическое тело;&lt;br /&gt;
:* SinglePlayer - &amp;quot;синглплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать только один игрок;&lt;br /&gt;
:* MultiPlayer - &amp;quot;мультиплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать несколько игроков;&lt;br /&gt;
:* DM - аббревиатура от Death Match - динамичный мультиплеер тип игры, когда после &amp;quot;смерти&amp;quot; игрока происходит его скорый спавн (&amp;quot;респавн&amp;quot;);&lt;br /&gt;
:* HLDM - аббревиатура от Half-Life Death Match - оригинальный HL мод DM типа;&lt;br /&gt;
:* CS - аббревиатура от [[Counter-Stirke]] - наиболее популярный HL мод;&lt;br /&gt;
:* VALVE - [[VALVe Software|корпорация, разработчик HL и CS]], также редко используется как термин, синонимичный HLDM, но подчеркивающий название директории мода (&amp;quot;valve&amp;quot;);&lt;br /&gt;
:* $MODDIR - способ условного обозначения корневой директории мода, например: ''cstrike'', ''valve'';&lt;br /&gt;
:* $MMDIR - способ условного обозначения относительного пути (относительно пути к $MODDIR) к корневой директории Metamod, по-умолчанию: ''addons/metamod'';&lt;br /&gt;
:* $AMXMODX - способ условного обозначения относительного пути (относительно пути к $MODDIR) к корневой директории AMX Mod X, по-умолчанию: ''addons/amxmodx''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Общие вопросы =&lt;br /&gt;
== Где скачать последнюю версию AMX Mod X? ==&lt;br /&gt;
: Последнюю версию всегда можно скачать на официальном сайте AMX Mod X в [http://www.amxmodx.org/downloads.php разделе закачек].&lt;br /&gt;
&lt;br /&gt;
== А что именно качать? ==&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый AMX Mod X пакет, все AMX Mod X дополнения для HL модов, а также AMXX-Studio (специализированный редактор AMX Mod X плагинов), либо, если готовы произвести установку AMX Mod X вручную, а также не желаете закачивать все существующие AMX Mod X дополнения для HL модов, качайте базовый архив (AMX Mod X Base), а затем дополнение для интересующего вас HL мода. Сама по себе базовая поставка практически во всех случаях будет достаточна только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
== Где искать плагины? ==&lt;br /&gt;
: Предварительно отметим, что условно AMX Mod X плагины можно разделить на следующие категории: стандартные, официально одобренные, официально отклоненные и неофициальные. Одобренные плагины можно искать [http://www.amxmodx.org/compiler.php здесь], или, используя [http://forums.alliedmods.net/search.php поисковую систему официального форума]. В поле '''Search in Forum(s)''' отметьте '''Approved Plugins''', также, зажав клавишу Ctrl, можно отметить интересующие вас секции из подраздела '''High-Traffic Plugins'''. Чтобы искать неофициальные плагины, следует также воспользоваться [http://forums.alliedmods.net/search.php поисковой системой официального форума], правда, в поле '''Search in Forum(s)''' необходимо выбрать '''Unapproved/Old Plugins'''. Если для вас не имеет значения статус плагина, и вы склонны к экспериментам, осуществляйте поиск по категории '''Plugins''', которая включает в себя одобренные, отклоненные, недавно опубликованные, вполне возможно, &amp;quot;сырые&amp;quot; плагины, а также темы-запросы, в которых могут быть &amp;quot;быстро написанные&amp;quot; плагины.  Особенность поиска на официальных форумах еще состоит в том, что при вводе слова система ищет именно слова (без учета регистра), т.е. фрагменты, разделенные слева и справа пробелами. Т.о., к примеру, набрав для поиска слово ''FCOS'' вы не найдете нужного вам плагина, хотя есть тема, в которой присутствует текст ''[fcos]''. Для этого надо использовать в поиске строку ''*FCOS*''. Немного поработав с поисковой формой форума, вы легко освоите эту систему. Единственное возможное для некоторых неудобство - практически все описания плагинов написаны на английcком языке. Неофициальные плагины также можно попробовать искать с помощью общеизвестных поисковых систем: Google, Yandex, Rambler и др.&lt;br /&gt;
&lt;br /&gt;
== Сколько плагинов сейчас выпущено под AMX Mod X? ==&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством и надежностью б'''о'''льшая половина из них не белещет. К тому же некоторые плагины, &amp;quot;заброшены&amp;quot; авторами и не обновляются, что приводит даже к несовместимости с новыми версиями AMX Mod X.&lt;br /&gt;
&lt;br /&gt;
== Как устанавливать плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как удалять плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как запустить два различных сервера AMX Mod X? ==&lt;br /&gt;
: К примеру, вы хотите запустить два различных сервера из одной ''cstrike'' директории на базе различных AMX Mod X/Metamod плагинов, настроек и прочего. Это решаемо. Один из примеров для win32 системы приведен ниже:&lt;br /&gt;
:* Создать отдельную AMX Mod X директорию с необходимыми файлами, например: ''addons/amxmodx2''&lt;br /&gt;
:* В ''addons/amxmodx2/configs/core.ini'' везде изменить &amp;quot;amxmodx&amp;quot; на &amp;quot;amxmodx2&amp;quot;&lt;br /&gt;
:* Создать отдельный файл загрузки Metamod плагинов, например: ''addons/metamod/plugins2.ini''&lt;br /&gt;
:* В созданный ''plugins2.ini'' файл вписать: ''win32 addons\amxmodx2\dlls\amxmodx_mm.dll''&lt;br /&gt;
:* Создать в директории ''cstrike'' файл, например, с именем ''amxmodx2.cfg'', его содержимое должно быть следующим:&lt;br /&gt;
&amp;lt;pre&amp;gt;localinfo mm_pluginsfile &amp;quot;addons/metamod/plugins2.ini&amp;quot;&lt;br /&gt;
localinfo amxx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amxx_cfg &amp;quot;addons/amxmodx2/configs/core.ini&amp;quot;&lt;br /&gt;
localinfo amxx_configsdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amxx_customdir &amp;quot;addons/amxmodx2/custom&amp;quot;&lt;br /&gt;
localinfo amxx_datadir &amp;quot;addons/amxmodx2/data&amp;quot;&lt;br /&gt;
localinfo amxx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_logs &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_modules &amp;quot;addons/amxmodx2/configs/modules.ini&amp;quot;&lt;br /&gt;
localinfo amxx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amxx_plugins &amp;quot;addons/amxmodx2/configs/plugins.ini&amp;quot;&lt;br /&gt;
localinfo amxx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&lt;br /&gt;
localinfo amxx_vault &amp;quot;addons/amxmodx2/data/vault.ini&amp;quot;&lt;br /&gt;
localinfo csstats &amp;quot;addons/amxmodx2/data/csstats.dat&amp;quot;&lt;br /&gt;
localinfo csstats_score &amp;quot;addons/amxmodx2/data/csstats.amxx&amp;quot;&lt;br /&gt;
localinfo amx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amx_configdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amx_langdir &amp;quot;addons/amxmodx2/data/amxmod-lang&amp;quot;&lt;br /&gt;
localinfo amx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Теперь второй сервер необходимо будет запускать с параметром командной строки: ''+exec amxmodx2.cfg''&lt;br /&gt;
&lt;br /&gt;
= Вопросы по плагинам =&lt;br /&gt;
== Что такое стандартные плагины? ==&lt;br /&gt;
: Это плагины, которые входят в стандартную поставку AMX Mod X. Они находятся в папке $AMXMODX\scripting.&lt;br /&gt;
&lt;br /&gt;
== Как узнать, в каком плагине зарегистрирована та или иная переменная? ==&lt;br /&gt;
: В серверной консоли наберите команду ''amxx cvars''. Выделите текст, скопируйте в файл, там сделайте поиск искомой переменной. В правой колонке будет стоять имя плагина, в котором она и зарегистрирована.&lt;br /&gt;
&lt;br /&gt;
== Как увеличить число карт в стандартном голосовании? ==&lt;br /&gt;
: Откройте файл $AMXMODX\scripting\mapchooser.sma, замените число 3 в строке&lt;br /&gt;
 #define SELECTMAPS  3&lt;br /&gt;
: на требуемое, затем откомпилируйте плагин и замените исходный.&lt;br /&gt;
&lt;br /&gt;
= Вопросы по компилированию =&lt;br /&gt;
== Что такое компиляция? ==&lt;br /&gt;
: Это процесс, который переводит текстовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX Mod X, который их исполняет), в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все AMX Mod X плагины должны публиковаться под лицензией GNU General Public License. В случае опубликования плагина лицензия обязывает также публиковать его исходный код. Откомпилированные плагины имеют расширение .amxx. Именно файлы этого типа, а не .sma, должны указываться в файле plugins.ini для последующей корректной загрузки плагина.&lt;br /&gt;
&lt;br /&gt;
== Как компилировать плагины? ==&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
== Как упростить процесс компилирования? ==&lt;br /&gt;
: Можно написать стороннюю программу или скрипт, например такой, как пакетный batch файл. Например, создайте файл make.bat со следующим содержимым:&lt;br /&gt;
 @amxxpc.exe %1 -i.\include -o.\compiled\%1&lt;br /&gt;
: Чтобы с помощью него откомпилировать плагин, необходимо выполнить следующую команду:&lt;br /&gt;
 make.bat my_plugin.sma&lt;br /&gt;
: В итоге откомпилированный файл будет помещен в каталог ''compiled'' текущей директории. Если его там нет, значит в процессе компилирования возникли фатальные ошибки, которые выводятся на экран.&lt;br /&gt;
: Если вам необходимо (например, в случае ошибок) отправить кому-нибудь результат компиляции, можете перенаправить вывод информации о процессе компилирования в файл, например таким образом:&lt;br /&gt;
 make.bat my_plugin.sma &amp;gt; my_plugin.log&lt;br /&gt;
&lt;br /&gt;
== Компилятор выводит &amp;quot;max. usage is unknown, due to recursion&amp;quot; ==&lt;br /&gt;
: Ничего страшного - просто компилятор не может вычислить предполагаемый объем памяти, используемый вашим плагином.&lt;br /&gt;
&lt;br /&gt;
= Вопросы по скриптингу =&lt;br /&gt;
&lt;br /&gt;
== С чего начать? ==&lt;br /&gt;
: С со статьи [[Ru Fundamental Basics of AMX Mod X Scripting|Фундаментальные основы AMX Mod X скриптинга]].&lt;br /&gt;
&lt;br /&gt;
== А стоит ли вообще начинать? ==&lt;br /&gt;
: В зависимости от того, какую цель вы преследуете, а также от вашего желания и потенциала. Знание английского языка (чтение) будет огромным плюсом во время обучения, инчае постигать азы будет очень сложно. CS является закрытым проектом без исходных кодов, поэтому могие новые (неизученные) элементы приходится постигать через проведение экспериментов.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=4780</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=4780"/>
		<updated>2007-06-13T11:10:40Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Как узнать, в каком плагине зарегистрирована та или иная переменная? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:AMX Mod X]]&lt;br /&gt;
= Общие положения, термины, сокращения и условные обозначения =&lt;br /&gt;
:* HL или HL1 - аббревиатура от [[Half-Life 1|Half-Life]] (часть первая);&lt;br /&gt;
:* Mod - &amp;quot;мод&amp;quot;, модификация - дополнение к чему-либо, как правило, расширяющее/изменяющее функциональность;&lt;br /&gt;
:* HL Engine - &amp;quot;движок&amp;quot; Half-Life - &amp;quot;центральный модуль&amp;quot;, осуществляющий выполнение базовых &amp;quot;общемодовых&amp;quot; задач;&lt;br /&gt;
:* MM - [[Metamod]] - сторонний мод особого типа, является промежуточным звеном в системе &amp;quot;HL движок - HL мод&amp;quot;;&lt;br /&gt;
:* AMXX - аббревиатура от [[AMX Mod X]] - Metamod plugin (&amp;quot;плагин&amp;quot;), своего рода Metamod мод;&lt;br /&gt;
:* Map - &amp;quot;карта&amp;quot; - определяет внешний вид территории, на которой происходит игровое действие;&lt;br /&gt;
:* World - &amp;quot;мир&amp;quot; - все пространство, которое занимает карта, а также область, находящаяся за картой;&lt;br /&gt;
:* Spawn - &amp;quot;спавн&amp;quot; - момент, когда игрок появляется в мире, обретая физическое тело;&lt;br /&gt;
:* SinglePlayer - &amp;quot;синглплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать только один игрок;&lt;br /&gt;
:* MultiPlayer - &amp;quot;мультиплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать несколько игроков;&lt;br /&gt;
:* DM - аббревиатура от Death Match - динамичный мультиплеер тип игры, когда после &amp;quot;смерти&amp;quot; игрока происходит его скорый спавн (&amp;quot;респавн&amp;quot;);&lt;br /&gt;
:* HLDM - аббревиатура от Half-Life Death Match - оригинальный HL мод DM типа;&lt;br /&gt;
:* CS - аббревиатура от [[Counter-Stirke]] - наиболее популярный HL мод;&lt;br /&gt;
:* VALVE - [[VALVe Software|корпорация, разработчик HL и CS]], также редко используется как термин, синонимичный HLDM, но подчеркивающий название директории мода (&amp;quot;valve&amp;quot;);&lt;br /&gt;
:* $MODDIR - способ условного обозначения корневой директории мода, например: ''cstrike'', ''valve'';&lt;br /&gt;
:* $MMDIR - способ условного обозначения относительного пути (относительно пути к $MODDIR) к корневой директории Metamod, по-умолчанию: ''addons/metamod'';&lt;br /&gt;
:* $AMXMODX - способ условного обозначения относительного пути (относительно пути к $MODDIR) к корневой директории AMX Mod X, по-умолчанию: ''addons/amxmodx''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Общие вопросы =&lt;br /&gt;
== Где скачать последнюю версию AMX Mod X? ==&lt;br /&gt;
: Последнюю версию всегда можно скачать на официальном сайте AMX Mod X в [http://www.amxmodx.org/downloads.php разделе закачек].&lt;br /&gt;
&lt;br /&gt;
== А что именно качать? ==&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый AMX Mod X пакет, все AMX Mod X дополнения для HL модов, а также AMXX-Studio (специализированный редактор AMX Mod X плагинов), либо, если готовы произвести установку AMX Mod X вручную, а также не желаете закачивать все существующие AMX Mod X дополнения для HL модов, качайте базовый архив (AMX Mod X Base), а затем дополнение для интересующего вас HL мода. Сама по себе базовая поставка практически во всех случаях будет достаточна только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
== Где искать плагины? ==&lt;br /&gt;
: Предварительно отметим, что условно AMX Mod X плагины можно разделить на следующие категории: стандартные, официально одобренные, официально отклоненные и неофициальные. Одобренные плагины можно искать [http://www.amxmodx.org/compiler.php здесь], или, используя [http://forums.alliedmods.net/search.php поисковую систему официального форума]. В поле '''Search in Forum(s)''' отметьте '''Approved Plugins''', также, зажав клавишу Ctrl, можно отметить интересующие вас секции из подраздела '''High-Traffic Plugins'''. Чтобы искать неофициальные плагины, следует также воспользоваться [http://forums.alliedmods.net/search.php поисковой системой официального форума], правда, в поле '''Search in Forum(s)''' необходимо выбрать '''Unapproved/Old Plugins'''. Если для вас не имеет значения статус плагина, и вы склонны к экспериментам, осуществляйте поиск по категории '''Plugins''', которая включает в себя одобренные, отклоненные, недавно опубликованные, вполне возможно, &amp;quot;сырые&amp;quot; плагины, а также темы-запросы, в которых могут быть &amp;quot;быстро написанные&amp;quot; плагины.  Особенность поиска на официальных форумах еще состоит в том, что при вводе слова система ищет именно слова (без учета регистра), т.е. фрагменты, разделенные слева и справа пробелами. Т.о., к примеру, набрав для поиска слово ''FCOS'' вы не найдете нужного вам плагина, хотя есть тема, в которой присутствует текст ''[fcos]''. Для этого надо использовать в поиске строку ''*FCOS*''. Немного поработав с поисковой формой форума, вы легко освоите эту систему. Единственное возможное для некоторых неудобство - практически все описания плагинов написаны на английcком языке. Неофициальные плагины также можно попробовать искать с помощью общеизвестных поисковых систем: Google, Yandex, Rambler и др.&lt;br /&gt;
&lt;br /&gt;
== Сколько плагинов сейчас выпущено под AMX Mod X? ==&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством и надежностью б'''о'''льшая половина из них не белещет. К тому же некоторые плагины, &amp;quot;заброшены&amp;quot; авторами и не обновляются, что приводит даже к несовместимости с новыми версиями AMX Mod X.&lt;br /&gt;
&lt;br /&gt;
== Как устанавливать плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как удалять плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как запустить два различных сервера AMX Mod X? ==&lt;br /&gt;
: К примеру, вы хотите запустить два различных сервера из одной ''cstrike'' директории на базе различных AMX Mod X/Metamod плагинов, настроек и прочего. Это решаемо. Один из примеров для win32 системы приведен ниже:&lt;br /&gt;
:* Создать отдельную AMX Mod X директорию с необходимыми файлами, например: ''addons/amxmodx2''&lt;br /&gt;
:* В ''addons/amxmodx2/configs/core.ini'' везде изменить &amp;quot;amxmodx&amp;quot; на &amp;quot;amxmodx2&amp;quot;&lt;br /&gt;
:* Создать отдельный файл загрузки Metamod плагинов, например: ''addons/metamod/plugins2.ini''&lt;br /&gt;
:* В созданный ''plugins2.ini'' файл вписать: ''win32 addons\amxmodx2\dlls\amxmodx_mm.dll''&lt;br /&gt;
:* Создать в директории ''cstrike'' файл, например, с именем ''amxmodx2.cfg'', его содержимое должно быть следующим:&lt;br /&gt;
&amp;lt;pre&amp;gt;localinfo mm_pluginsfile &amp;quot;addons/metamod/plugins2.ini&amp;quot;&lt;br /&gt;
localinfo amxx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amxx_cfg &amp;quot;addons/amxmodx2/configs/core.ini&amp;quot;&lt;br /&gt;
localinfo amxx_configsdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amxx_customdir &amp;quot;addons/amxmodx2/custom&amp;quot;&lt;br /&gt;
localinfo amxx_datadir &amp;quot;addons/amxmodx2/data&amp;quot;&lt;br /&gt;
localinfo amxx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_logs &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_modules &amp;quot;addons/amxmodx2/configs/modules.ini&amp;quot;&lt;br /&gt;
localinfo amxx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amxx_plugins &amp;quot;addons/amxmodx2/configs/plugins.ini&amp;quot;&lt;br /&gt;
localinfo amxx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&lt;br /&gt;
localinfo amxx_vault &amp;quot;addons/amxmodx2/data/vault.ini&amp;quot;&lt;br /&gt;
localinfo csstats &amp;quot;addons/amxmodx2/data/csstats.dat&amp;quot;&lt;br /&gt;
localinfo csstats_score &amp;quot;addons/amxmodx2/data/csstats.amxx&amp;quot;&lt;br /&gt;
localinfo amx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amx_configdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amx_langdir &amp;quot;addons/amxmodx2/data/amxmod-lang&amp;quot;&lt;br /&gt;
localinfo amx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Теперь второй сервер необходимо будет запускать с параметром командной строки: ''+exec amxmodx2.cfg''&lt;br /&gt;
&lt;br /&gt;
= Вопросы по плагинам =&lt;br /&gt;
== Что такое стандартные плагины? ==&lt;br /&gt;
: Это плагины, которые входят в стандартную поставку AMX Mod X. Они находятся в папке $AMXMODX\scripting.&lt;br /&gt;
&lt;br /&gt;
== Как узнать, в каком плагине зарегистрирована та или иная переменная? ==&lt;br /&gt;
: В серверной консоли наберите команду ''amxx cvars''. Выделите текст, скопируйте в файл, там сделайте поиск искомой переменной. В правой колонке будет стоять имя плагина, в котором она и зарегистрирована.&lt;br /&gt;
&lt;br /&gt;
== Как увеличить число карт в стандартном голосовании? ==&lt;br /&gt;
: Откройте файл $AMXMODX\scripting\mapchooser.sma, замените число 3 в строке&lt;br /&gt;
 #define SELECTMAPS  3&lt;br /&gt;
на требуемое, затем откомпилируйте плагин и замените исходный.&lt;br /&gt;
&lt;br /&gt;
= Вопросы по компилированию =&lt;br /&gt;
== Что такое компиляция? ==&lt;br /&gt;
: Это процесс, который переводит текстовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX Mod X, который их исполняет), в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все AMX Mod X плагины должны публиковаться под лицензией GNU General Public License. В случае опубликования плагина лицензия обязывает также публиковать его исходный код. Откомпилированные плагины имеют расширение .amxx. Именно файлы этого типа, а не .sma, должны указываться в файле plugins.ini для последующей корректной загрузки плагина.&lt;br /&gt;
&lt;br /&gt;
== Как компилировать плагины? ==&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
== Как упростить процесс компилирования? ==&lt;br /&gt;
: Можно написать стороннюю программу или скрипт, например такой, как пакетный batch файл. Например, создайте файл make.bat со следующим содержимым:&lt;br /&gt;
 @amxxpc.exe %1 -i.\include -o.\compiled\%1&lt;br /&gt;
: Чтобы с помощью него откомпилировать плагин, необходимо выполнить следующую команду:&lt;br /&gt;
 make.bat my_plugin.sma&lt;br /&gt;
: В итоге откомпилированный файл будет помещен в каталог ''compiled'' текущей директории. Если его там нет, значит в процессе компилирования возникли фатальные ошибки, которые выводятся на экран.&lt;br /&gt;
: Если вам необходимо (например, в случае ошибок) отправить кому-нибудь результат компиляции, можете перенаправить вывод информации о процессе компилирования в файл, например таким образом:&lt;br /&gt;
 make.bat my_plugin.sma &amp;gt; my_plugin.log&lt;br /&gt;
&lt;br /&gt;
== Компилятор выводит &amp;quot;max. usage is unknown, due to recursion&amp;quot; ==&lt;br /&gt;
: Ничего страшного - просто компилятор не может вычислить предполагаемый объем памяти, используемый вашим плагином.&lt;br /&gt;
&lt;br /&gt;
= Вопросы по скриптингу =&lt;br /&gt;
&lt;br /&gt;
== С чего начать? ==&lt;br /&gt;
: С со статьи [[Ru Fundamental Basics of AMX Mod X Scripting|Фундаментальные основы AMX Mod X скриптинга]].&lt;br /&gt;
&lt;br /&gt;
== А стоит ли вообще начинать? ==&lt;br /&gt;
: В зависимости от того, какую цель вы преследуете, а также от вашего желания и потенциала. Знание английского языка (чтение) будет огромным плюсом во время обучения, инчае постигать азы будет очень сложно. CS является закрытым проектом без исходных кодов, поэтому могие новые (неизученные) элементы приходится постигать через проведение экспериментов.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=4779</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=4779"/>
		<updated>2007-06-13T09:42:33Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Как запустить два различных сервера AMX Mod X? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:AMX Mod X]]&lt;br /&gt;
= Общие положения, термины, сокращения и условные обозначения =&lt;br /&gt;
:* HL или HL1 - аббревиатура от [[Half-Life 1|Half-Life]] (часть первая);&lt;br /&gt;
:* Mod - &amp;quot;мод&amp;quot;, модификация - дополнение к чему-либо, как правило, расширяющее/изменяющее функциональность;&lt;br /&gt;
:* HL Engine - &amp;quot;движок&amp;quot; Half-Life - &amp;quot;центральный модуль&amp;quot;, осуществляющий выполнение базовых &amp;quot;общемодовых&amp;quot; задач;&lt;br /&gt;
:* MM - [[Metamod]] - сторонний мод особого типа, является промежуточным звеном в системе &amp;quot;HL движок - HL мод&amp;quot;;&lt;br /&gt;
:* AMXX - аббревиатура от [[AMX Mod X]] - Metamod plugin (&amp;quot;плагин&amp;quot;), своего рода Metamod мод;&lt;br /&gt;
:* Map - &amp;quot;карта&amp;quot; - определяет внешний вид территории, на которой происходит игровое действие;&lt;br /&gt;
:* World - &amp;quot;мир&amp;quot; - все пространство, которое занимает карта, а также область, находящаяся за картой;&lt;br /&gt;
:* Spawn - &amp;quot;спавн&amp;quot; - момент, когда игрок появляется в мире, обретая физическое тело;&lt;br /&gt;
:* SinglePlayer - &amp;quot;синглплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать только один игрок;&lt;br /&gt;
:* MultiPlayer - &amp;quot;мультиплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать несколько игроков;&lt;br /&gt;
:* DM - аббревиатура от Death Match - динамичный мультиплеер тип игры, когда после &amp;quot;смерти&amp;quot; игрока происходит его скорый спавн (&amp;quot;респавн&amp;quot;);&lt;br /&gt;
:* HLDM - аббревиатура от Half-Life Death Match - оригинальный HL мод DM типа;&lt;br /&gt;
:* CS - аббревиатура от [[Counter-Stirke]] - наиболее популярный HL мод;&lt;br /&gt;
:* VALVE - [[VALVe Software|корпорация, разработчик HL и CS]], также редко используется как термин, синонимичный HLDM, но подчеркивающий название директории мода (&amp;quot;valve&amp;quot;);&lt;br /&gt;
:* $MODDIR - способ условного обозначения корневой директории мода, например: ''cstrike'', ''valve'';&lt;br /&gt;
:* $MMDIR - способ условного обозначения относительного пути (относительно пути к $MODDIR) к корневой директории Metamod, по-умолчанию: ''addons/metamod'';&lt;br /&gt;
:* $AMXMODX - способ условного обозначения относительного пути (относительно пути к $MODDIR) к корневой директории AMX Mod X, по-умолчанию: ''addons/amxmodx''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Общие вопросы =&lt;br /&gt;
== Где скачать последнюю версию AMX Mod X? ==&lt;br /&gt;
: Последнюю версию всегда можно скачать на официальном сайте AMX Mod X в [http://www.amxmodx.org/downloads.php разделе закачек].&lt;br /&gt;
&lt;br /&gt;
== А что именно качать? ==&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый AMX Mod X пакет, все AMX Mod X дополнения для HL модов, а также AMXX-Studio (специализированный редактор AMX Mod X плагинов), либо, если готовы произвести установку AMX Mod X вручную, а также не желаете закачивать все существующие AMX Mod X дополнения для HL модов, качайте базовый архив (AMX Mod X Base), а затем дополнение для интересующего вас HL мода. Сама по себе базовая поставка практически во всех случаях будет достаточна только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
== Где искать плагины? ==&lt;br /&gt;
: Предварительно отметим, что условно AMX Mod X плагины можно разделить на следующие категории: стандартные, официально одобренные, официально отклоненные и неофициальные. Одобренные плагины можно искать [http://www.amxmodx.org/compiler.php здесь], или, используя [http://forums.alliedmods.net/search.php поисковую систему официального форума]. В поле '''Search in Forum(s)''' отметьте '''Approved Plugins''', также, зажав клавишу Ctrl, можно отметить интересующие вас секции из подраздела '''High-Traffic Plugins'''. Чтобы искать неофициальные плагины, следует также воспользоваться [http://forums.alliedmods.net/search.php поисковой системой официального форума], правда, в поле '''Search in Forum(s)''' необходимо выбрать '''Unapproved/Old Plugins'''. Если для вас не имеет значения статус плагина, и вы склонны к экспериментам, осуществляйте поиск по категории '''Plugins''', которая включает в себя одобренные, отклоненные, недавно опубликованные, вполне возможно, &amp;quot;сырые&amp;quot; плагины, а также темы-запросы, в которых могут быть &amp;quot;быстро написанные&amp;quot; плагины.  Особенность поиска на официальных форумах еще состоит в том, что при вводе слова система ищет именно слова (без учета регистра), т.е. фрагменты, разделенные слева и справа пробелами. Т.о., к примеру, набрав для поиска слово ''FCOS'' вы не найдете нужного вам плагина, хотя есть тема, в которой присутствует текст ''[fcos]''. Для этого надо использовать в поиске строку ''*FCOS*''. Немного поработав с поисковой формой форума, вы легко освоите эту систему. Единственное возможное для некоторых неудобство - практически все описания плагинов написаны на английcком языке. Неофициальные плагины также можно попробовать искать с помощью общеизвестных поисковых систем: Google, Yandex, Rambler и др.&lt;br /&gt;
&lt;br /&gt;
== Сколько плагинов сейчас выпущено под AMX Mod X? ==&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством и надежностью б'''о'''льшая половина из них не белещет. К тому же некоторые плагины, &amp;quot;заброшены&amp;quot; авторами и не обновляются, что приводит даже к несовместимости с новыми версиями AMX Mod X.&lt;br /&gt;
&lt;br /&gt;
== Как устанавливать плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как удалять плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как запустить два различных сервера AMX Mod X? ==&lt;br /&gt;
: К примеру, вы хотите запустить два различных сервера из одной ''cstrike'' директории на базе различных AMX Mod X/Metamod плагинов, настроек и прочего. Это решаемо. Один из примеров для win32 системы приведен ниже:&lt;br /&gt;
:* Создать отдельную AMX Mod X директорию с необходимыми файлами, например: ''addons/amxmodx2''&lt;br /&gt;
:* В ''addons/amxmodx2/configs/core.ini'' везде изменить &amp;quot;amxmodx&amp;quot; на &amp;quot;amxmodx2&amp;quot;&lt;br /&gt;
:* Создать отдельный файл загрузки Metamod плагинов, например: ''addons/metamod/plugins2.ini''&lt;br /&gt;
:* В созданный ''plugins2.ini'' файл вписать: ''win32 addons\amxmodx2\dlls\amxmodx_mm.dll''&lt;br /&gt;
:* Создать в директории ''cstrike'' файл, например, с именем ''amxmodx2.cfg'', его содержимое должно быть следующим:&lt;br /&gt;
&amp;lt;pre&amp;gt;localinfo mm_pluginsfile &amp;quot;addons/metamod/plugins2.ini&amp;quot;&lt;br /&gt;
localinfo amxx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amxx_cfg &amp;quot;addons/amxmodx2/configs/core.ini&amp;quot;&lt;br /&gt;
localinfo amxx_configsdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amxx_customdir &amp;quot;addons/amxmodx2/custom&amp;quot;&lt;br /&gt;
localinfo amxx_datadir &amp;quot;addons/amxmodx2/data&amp;quot;&lt;br /&gt;
localinfo amxx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_logs &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_modules &amp;quot;addons/amxmodx2/configs/modules.ini&amp;quot;&lt;br /&gt;
localinfo amxx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amxx_plugins &amp;quot;addons/amxmodx2/configs/plugins.ini&amp;quot;&lt;br /&gt;
localinfo amxx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&lt;br /&gt;
localinfo amxx_vault &amp;quot;addons/amxmodx2/data/vault.ini&amp;quot;&lt;br /&gt;
localinfo csstats &amp;quot;addons/amxmodx2/data/csstats.dat&amp;quot;&lt;br /&gt;
localinfo csstats_score &amp;quot;addons/amxmodx2/data/csstats.amxx&amp;quot;&lt;br /&gt;
localinfo amx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amx_configdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amx_langdir &amp;quot;addons/amxmodx2/data/amxmod-lang&amp;quot;&lt;br /&gt;
localinfo amx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Теперь второй сервер необходимо будет запускать с параметром командной строки: ''+exec amxmodx2.cfg''&lt;br /&gt;
&lt;br /&gt;
= Вопросы по плагинам =&lt;br /&gt;
== Что такое стандартные плагины? ==&lt;br /&gt;
: Это плагины, которые входят в стандартную поставку AMX Mod X. Они находятся в папке $AMXMODX\scripting.&lt;br /&gt;
&lt;br /&gt;
== Как узнать, в каком плагине зарегистрирована та или иная переменная? ==&lt;br /&gt;
: В серверной консоли наберите команду ''amxx cvars''. Выделите текст, скопируйте в файл, там сделайте поиск искомой переменной. В правой колонке будет стоять имя плагина, в котором она и зарегистрирована.&lt;br /&gt;
&lt;br /&gt;
= Вопросы по компилированию =&lt;br /&gt;
== Что такое компиляция? ==&lt;br /&gt;
: Это процесс, который переводит текстовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX Mod X, который их исполняет), в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все AMX Mod X плагины должны публиковаться под лицензией GNU General Public License. В случае опубликования плагина лицензия обязывает также публиковать его исходный код. Откомпилированные плагины имеют расширение .amxx. Именно файлы этого типа, а не .sma, должны указываться в файле plugins.ini для последующей корректной загрузки плагина.&lt;br /&gt;
&lt;br /&gt;
== Как компилировать плагины? ==&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
== Как упростить процесс компилирования? ==&lt;br /&gt;
: Можно написать стороннюю программу или скрипт, например такой, как пакетный batch файл. Например, создайте файл make.bat со следующим содержимым:&lt;br /&gt;
 @amxxpc.exe %1 -i.\include -o.\compiled\%1&lt;br /&gt;
: Чтобы с помощью него откомпилировать плагин, необходимо выполнить следующую команду:&lt;br /&gt;
 make.bat my_plugin.sma&lt;br /&gt;
: В итоге откомпилированный файл будет помещен в каталог ''compiled'' текущей директории. Если его там нет, значит в процессе компилирования возникли фатальные ошибки, которые выводятся на экран.&lt;br /&gt;
: Если вам необходимо (например, в случае ошибок) отправить кому-нибудь результат компиляции, можете перенаправить вывод информации о процессе компилирования в файл, например таким образом:&lt;br /&gt;
 make.bat my_plugin.sma &amp;gt; my_plugin.log&lt;br /&gt;
&lt;br /&gt;
== Компилятор выводит &amp;quot;max. usage is unknown, due to recursion&amp;quot; ==&lt;br /&gt;
: Ничего страшного - просто компилятор не может вычислить предполагаемый объем памяти, используемый вашим плагином.&lt;br /&gt;
&lt;br /&gt;
= Вопросы по скриптингу =&lt;br /&gt;
&lt;br /&gt;
== С чего начать? ==&lt;br /&gt;
: С со статьи [[Ru Fundamental Basics of AMX Mod X Scripting|Фундаментальные основы AMX Mod X скриптинга]].&lt;br /&gt;
&lt;br /&gt;
== А стоит ли вообще начинать? ==&lt;br /&gt;
: В зависимости от того, какую цель вы преследуете, а также от вашего желания и потенциала. Знание английского языка (чтение) будет огромным плюсом во время обучения, инчае постигать азы будет очень сложно. CS является закрытым проектом без исходных кодов, поэтому могие новые (неизученные) элементы приходится постигать через проведение экспериментов.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Talk:CS_WeaponList_Message_Dump&amp;diff=4588</id>
		<title>Talk:CS WeaponList Message Dump</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Talk:CS_WeaponList_Message_Dump&amp;diff=4588"/>
		<updated>2007-06-05T14:58:56Z</updated>

		<summary type="html">&lt;p&gt;Slogic: New page: ~~~: MANY THANX. You saved much of my time (i needed an AmmoID for AmmoPickup event). I completely forgot that WeaponList shows any information developer needs.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Slogic|Slogic]]: MANY THANX. You saved much of my time (i needed an AmmoID for AmmoPickup event). I completely forgot that WeaponList shows any information developer needs.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=4445</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=4445"/>
		<updated>2007-04-03T10:54:30Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Где искать плагины? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:AMX Mod X]]&lt;br /&gt;
= Общие положения, термины, сокращения и условные обозначения =&lt;br /&gt;
:* HL или HL1 - аббревиатура от [[Half-Life 1|Half-Life]] (часть первая);&lt;br /&gt;
:* Mod - &amp;quot;мод&amp;quot;, модификация - дополнение к чему-либо, как правило, расширяющее/изменяющее функциональность;&lt;br /&gt;
:* HL Engine - &amp;quot;движок&amp;quot; Half-Life - &amp;quot;центральный модуль&amp;quot;, осуществляющий выполнение базовых &amp;quot;общемодовых&amp;quot; задач;&lt;br /&gt;
:* MM - [[Metamod]] - сторонний мод особого типа, является промежуточным звеном в системе &amp;quot;HL движок - HL мод&amp;quot;;&lt;br /&gt;
:* AMXX - аббревиатура от [[AMX Mod X]] - Metamod plugin (&amp;quot;плагин&amp;quot;), своего рода Metamod мод;&lt;br /&gt;
:* Map - &amp;quot;карта&amp;quot; - определяет внешний вид территории, на которой происходит игровое действие;&lt;br /&gt;
:* World - &amp;quot;мир&amp;quot; - все пространство, которое занимает карта, а также область, находящаяся за картой;&lt;br /&gt;
:* Spawn - &amp;quot;спавн&amp;quot; - момент, когда игрок появляется в мире, обретая физическое тело;&lt;br /&gt;
:* SinglePlayer - &amp;quot;синглплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать только один игрок;&lt;br /&gt;
:* MultiPlayer - &amp;quot;мультиплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать несколько игроков;&lt;br /&gt;
:* DM - аббревиатура от Death Match - динамичный мультиплеер тип игры, когда после &amp;quot;смерти&amp;quot; игрока происходит его скорый спавн (&amp;quot;респавн&amp;quot;);&lt;br /&gt;
:* HLDM - аббревиатура от Half-Life Death Match - оригинальный HL мод DM типа;&lt;br /&gt;
:* CS - аббревиатура от [[Counter-Stirke]] - наиболее популярный HL мод;&lt;br /&gt;
:* VALVE - [[VALVe Software|корпорация, разработчик HL и CS]], также редко используется как термин, синонимичный HLDM, но подчеркивающий название директории мода (&amp;quot;valve&amp;quot;);&lt;br /&gt;
:* $MODDIR - способ условного обозначения корневой директории мода, например: ''cstrike'', ''valve'';&lt;br /&gt;
:* $MMDIR - способ условного обозначения относительного пути (относительно пути к $MODDIR) к корневой директории Metamod, по-умолчанию: ''addons/metamod'';&lt;br /&gt;
:* $AMXMODX - способ условного обозначения относительного пути (относительно пути к $MODDIR) к корневой директории AMX Mod X, по-умолчанию: ''addons/amxmodx''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Общие вопросы =&lt;br /&gt;
== Где скачать последнюю версию AMX Mod X? ==&lt;br /&gt;
: Последнюю версию всегда можно скачать на официальном сайте AMX Mod X в [http://www.amxmodx.org/downloads.php разделе закачек].&lt;br /&gt;
&lt;br /&gt;
== А что именно качать? ==&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый AMX Mod X пакет, все AMX Mod X дополнения для HL модов, а также AMXX-Studio (специализированный редактор AMX Mod X плагинов), либо, если готовы произвести установку AMX Mod X вручную, а также не желаете закачивать все существующие AMX Mod X дополнения для HL модов, качайте базовый архив (AMX Mod X Base), а затем дополнение для интересующего вас HL мода. Сама по себе базовая поставка практически во всех случаях будет достаточна только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
== Где искать плагины? ==&lt;br /&gt;
: Предварительно отметим, что условно AMX Mod X плагины можно разделить на следующие категории: стандартные, официально одобренные, официально отклоненные и неофициальные. Одобренные плагины можно искать [http://www.amxmodx.org/compiler.php здесь], или, используя [http://forums.alliedmods.net/search.php поисковую систему официального форума]. В поле '''Search in Forum(s)''' отметьте '''Approved Plugins''', также, зажав клавишу Ctrl, можно отметить интересующие вас секции из подраздела '''High-Traffic Plugins'''. Чтобы искать неофициальные плагины, следует также воспользоваться [http://forums.alliedmods.net/search.php поисковой системой официального форума], правда, в поле '''Search in Forum(s)''' необходимо выбрать '''Unapproved/Old Plugins'''. Если для вас не имеет значения статус плагина, и вы склонны к экспериментам, осуществляйте поиск по категории '''Plugins''', которая включает в себя одобренные, отклоненные, недавно опубликованные, вполне возможно, &amp;quot;сырые&amp;quot; плагины, а также темы-запросы, в которых могут быть &amp;quot;быстро написанные&amp;quot; плагины.  Особенность поиска на официальных форумах еще состоит в том, что при вводе слова система ищет именно слова (без учета регистра), т.е. фрагменты, разделенные слева и справа пробелами. Т.о., к примеру, набрав для поиска слово ''FCOS'' вы не найдете нужного вам плагина, хотя есть тема, в которой присутствует текст ''[fcos]''. Для этого надо использовать в поиске строку ''*FCOS*''. Немного поработав с поисковой формой форума, вы легко освоите эту систему. Единственное возможное для некоторых неудобство - практически все описания плагинов написаны на английcком языке. Неофициальные плагины также можно попробовать искать с помощью общеизвестных поисковых систем: Google, Yandex, Rambler и др.&lt;br /&gt;
&lt;br /&gt;
== Сколько плагинов сейчас выпущено под AMX Mod X? ==&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством и надежностью б'''о'''льшая половина из них не белещет. К тому же некоторые плагины, &amp;quot;заброшены&amp;quot; авторами и не обновляются, что приводит даже к несовместимости с новыми версиями AMX Mod X.&lt;br /&gt;
&lt;br /&gt;
== Как устанавливать плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как удалять плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как запустить два различных сервера AMX Mod X? ==&lt;br /&gt;
: К примеру, вы хотите запустить два различных сервера из одной ''cstrike'' директории на базе различных AMX Mod X/Metamod плагинов, настроек и прочего. Это решаемо. Один из примеров для win32 системы приведен ниже:&lt;br /&gt;
:* Создать отдельную AMX Mod X директорию с необходимыми файлами, например: ''addons/amxmodx2''&lt;br /&gt;
:* В ''addons/amxmodx2/configs/core.ini'' везде изменить &amp;quot;amxmodx&amp;quot; на &amp;quot;amxmodx2&amp;quot;&lt;br /&gt;
:* Создать отдельный файл загрузки Metamod плагинов, например: ''addons/metamod/plugins2.ini''&lt;br /&gt;
:* В созданный ''plugins2.ini'' файл вписать: ''win32 addons\amxmodx2\dlls\amxmodx_mm.dll''&lt;br /&gt;
:* Создать в директории ''cstrike'' файл, например, с именем ''amxmodx2.cfg'', его содержимое должно быть следующим:&lt;br /&gt;
&amp;lt;pre&amp;gt;localinfo mm_pluginsfile &amp;quot;addons/metamod/plugins2.ini&amp;quot;&lt;br /&gt;
localinfo amxx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amxx_cfg &amp;quot;addons/amxmodx2/configs/core.ini&amp;quot;&lt;br /&gt;
localinfo amxx_configsdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amxx_customdir &amp;quot;addons/amxmodx2/custom&amp;quot;&lt;br /&gt;
localinfo amxx_datadir &amp;quot;addons/amxmodx2/data&amp;quot;&lt;br /&gt;
localinfo amxx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_logs &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_modules &amp;quot;addons/amxmodx2/configs/modules.ini&amp;quot;&lt;br /&gt;
localinfo amxx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amxx_plugins &amp;quot;addons/amxmodx2/configs/plugins.ini&amp;quot;&lt;br /&gt;
localinfo amxx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&lt;br /&gt;
localinfo amxx_vault &amp;quot;addons/amxmodx2/data/vault.ini&amp;quot;&lt;br /&gt;
localinfo csstats &amp;quot;addons/amxmodx2/data/csstats.dat&amp;quot;&lt;br /&gt;
localinfo csstats_score &amp;quot;addons/amxmodx2/data/csstats.amxx&amp;quot;&lt;br /&gt;
localinfo amx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amx_configdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amx_langdir &amp;quot;addons/amxmodx2/data/amxmod-lang&amp;quot;&lt;br /&gt;
localinfo amx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Теперь второй сервер необходимо будет запускать с параметром командной строки: ''+exec amxmodx2.cfg''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Вопросы по компилированию =&lt;br /&gt;
== Что такое компиляция? ==&lt;br /&gt;
: Это процесс, который переводит текстовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX Mod X, который их исполняет), в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все AMX Mod X плагины должны публиковаться под лицензией GNU General Public License. В случае опубликования плагина лицензия обязывает также публиковать его исходный код. Откомпилированные плагины имеют расширение .amxx. Именно файлы этого типа, а не .sma, должны указываться в файле plugins.ini для последующей корректной загрузки плагина.&lt;br /&gt;
&lt;br /&gt;
== Как компилировать плагины? ==&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
== Как упростить процесс компилирования? ==&lt;br /&gt;
: Можно написать стороннюю программу или скрипт, например такой, как пакетный batch файл. Например, создайте файл make.bat со следующим содержимым:&lt;br /&gt;
 @amxxpc.exe %1 -i.\include -o.\compiled\%1&lt;br /&gt;
: Чтобы с помощью него откомпилировать плагин, необходимо выполнить следующую команду:&lt;br /&gt;
 make.bat my_plugin.sma&lt;br /&gt;
: В итоге откомпилированный файл будет помещен в каталог ''compiled'' текущей директории. Если его там нет, значит в процессе компилирования возникли фатальные ошибки, которые выводятся на экран.&lt;br /&gt;
: Если вам необходимо (например, в случае ошибок) отправить кому-нибудь результат компиляции, можете перенаправить вывод информации о процессе компилирования в файл, например таким образом:&lt;br /&gt;
 make.bat my_plugin.sma &amp;gt; my_plugin.log&lt;br /&gt;
&lt;br /&gt;
== Компилятор выводит &amp;quot;max. usage is unknown, due to recursion&amp;quot; ==&lt;br /&gt;
: Ничего страшного - просто компилятор не может вычислить предполагаемый объем памяти, используемый вашим плагином.&lt;br /&gt;
&lt;br /&gt;
= Вопросы по скриптингу =&lt;br /&gt;
&lt;br /&gt;
== С чего начать? ==&lt;br /&gt;
: С со статьи [[Ru Fundamental Basics of AMX Mod X Scripting|Фундаментальные основы AMX Mod X скриптинга]].&lt;br /&gt;
&lt;br /&gt;
== А стоит ли вообще начинать? ==&lt;br /&gt;
: В зависимости от того, какую цель вы преследуете, а также от вашего желания и потенциала. Знание английского языка (чтение) будет огромным плюсом во время обучения, инчае постигать азы будет очень сложно. CS является закрытым проектом без исходных кодов, поэтому могие новые (неизученные) элементы приходится постигать через проведение экспериментов.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=4444</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=4444"/>
		<updated>2007-04-03T10:53:41Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Где искать плагины? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:AMX Mod X]]&lt;br /&gt;
= Общие положения, термины, сокращения и условные обозначения =&lt;br /&gt;
:* HL или HL1 - аббревиатура от [[Half-Life 1|Half-Life]] (часть первая);&lt;br /&gt;
:* Mod - &amp;quot;мод&amp;quot;, модификация - дополнение к чему-либо, как правило, расширяющее/изменяющее функциональность;&lt;br /&gt;
:* HL Engine - &amp;quot;движок&amp;quot; Half-Life - &amp;quot;центральный модуль&amp;quot;, осуществляющий выполнение базовых &amp;quot;общемодовых&amp;quot; задач;&lt;br /&gt;
:* MM - [[Metamod]] - сторонний мод особого типа, является промежуточным звеном в системе &amp;quot;HL движок - HL мод&amp;quot;;&lt;br /&gt;
:* AMXX - аббревиатура от [[AMX Mod X]] - Metamod plugin (&amp;quot;плагин&amp;quot;), своего рода Metamod мод;&lt;br /&gt;
:* Map - &amp;quot;карта&amp;quot; - определяет внешний вид территории, на которой происходит игровое действие;&lt;br /&gt;
:* World - &amp;quot;мир&amp;quot; - все пространство, которое занимает карта, а также область, находящаяся за картой;&lt;br /&gt;
:* Spawn - &amp;quot;спавн&amp;quot; - момент, когда игрок появляется в мире, обретая физическое тело;&lt;br /&gt;
:* SinglePlayer - &amp;quot;синглплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать только один игрок;&lt;br /&gt;
:* MultiPlayer - &amp;quot;мультиплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать несколько игроков;&lt;br /&gt;
:* DM - аббревиатура от Death Match - динамичный мультиплеер тип игры, когда после &amp;quot;смерти&amp;quot; игрока происходит его скорый спавн (&amp;quot;респавн&amp;quot;);&lt;br /&gt;
:* HLDM - аббревиатура от Half-Life Death Match - оригинальный HL мод DM типа;&lt;br /&gt;
:* CS - аббревиатура от [[Counter-Stirke]] - наиболее популярный HL мод;&lt;br /&gt;
:* VALVE - [[VALVe Software|корпорация, разработчик HL и CS]], также редко используется как термин, синонимичный HLDM, но подчеркивающий название директории мода (&amp;quot;valve&amp;quot;);&lt;br /&gt;
:* $MODDIR - способ условного обозначения корневой директории мода, например: ''cstrike'', ''valve'';&lt;br /&gt;
:* $MMDIR - способ условного обозначения относительного пути (относительно пути к $MODDIR) к корневой директории Metamod, по-умолчанию: ''addons/metamod'';&lt;br /&gt;
:* $AMXMODX - способ условного обозначения относительного пути (относительно пути к $MODDIR) к корневой директории AMX Mod X, по-умолчанию: ''addons/amxmodx''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Общие вопросы =&lt;br /&gt;
== Где скачать последнюю версию AMX Mod X? ==&lt;br /&gt;
: Последнюю версию всегда можно скачать на официальном сайте AMX Mod X в [http://www.amxmodx.org/downloads.php разделе закачек].&lt;br /&gt;
&lt;br /&gt;
== А что именно качать? ==&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый AMX Mod X пакет, все AMX Mod X дополнения для HL модов, а также AMXX-Studio (специализированный редактор AMX Mod X плагинов), либо, если готовы произвести установку AMX Mod X вручную, а также не желаете закачивать все существующие AMX Mod X дополнения для HL модов, качайте базовый архив (AMX Mod X Base), а затем дополнение для интересующего вас HL мода. Сама по себе базовая поставка практически во всех случаях будет достаточна только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
== Где искать плагины? ==&lt;br /&gt;
: Предварительно отметим, что условно AMX Mod X плагины можно разделить на следующие категории: стандартные, официально одобренные, официально отклоненные и неофициальные. Одобренные плагины можно искать [http://www.amxmodx.org/compiler.php здесь], или, используя [http://forums.alliedmods.net/search.php поисковую систему официального форума]. В поле '''Search in Forum(s)''' отметьте '''Approved Plugins''', также, зажав клавишу Ctrl, можно отметить интересующие вас секции из подраздела '''High-Traffic Plugins'''. Чтобы искать неофициальные плагины, следует также воспользоваться [http://forums.alliedmods.net/search.php поисковой системой официального форума], правда, в поле '''Search in Forum(s)''' необходимо выбрать '''Unapproved/Old Plugins'''. Если для вас не имеет значения статус плагина, и вы склонны к экспериментам, осуществляйте поиск по категории '''Plugins''', которая включает в себя одобренные, отклоненные, недавно опубликованные, вполне возможно, &amp;quot;сырые&amp;quot; плагины, а также темы-запросы, в которых могут быть &amp;quot;быстро написанные&amp;quot; плагины.  Особенность поиска на официальных форумах еще состоит в том, что при вводе слова система ищет именно слова (без учета регистра), т.е. фрагменты, разделенные слева и справа пробелами. Т.о., к примеру, набрав для поиска слово ''FCOS'' вы не найдете нужного вам плагина, хотя есть тема в которой присутствует текст '[fcos]'. Для этого надо использовать в поиске строку ''*FCOS*''. Немного поработав с поисковой формой форума, вы легко освоите эту систему. Единственное возможное для некоторых неудобство - практически все описания плагинов написаны на английcком языке. Неофициальные плагины также можно попробовать искать с помощью общеизвестных поисковых систем: Google, Yandex, Rambler и др.&lt;br /&gt;
&lt;br /&gt;
== Сколько плагинов сейчас выпущено под AMX Mod X? ==&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством и надежностью б'''о'''льшая половина из них не белещет. К тому же некоторые плагины, &amp;quot;заброшены&amp;quot; авторами и не обновляются, что приводит даже к несовместимости с новыми версиями AMX Mod X.&lt;br /&gt;
&lt;br /&gt;
== Как устанавливать плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как удалять плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как запустить два различных сервера AMX Mod X? ==&lt;br /&gt;
: К примеру, вы хотите запустить два различных сервера из одной ''cstrike'' директории на базе различных AMX Mod X/Metamod плагинов, настроек и прочего. Это решаемо. Один из примеров для win32 системы приведен ниже:&lt;br /&gt;
:* Создать отдельную AMX Mod X директорию с необходимыми файлами, например: ''addons/amxmodx2''&lt;br /&gt;
:* В ''addons/amxmodx2/configs/core.ini'' везде изменить &amp;quot;amxmodx&amp;quot; на &amp;quot;amxmodx2&amp;quot;&lt;br /&gt;
:* Создать отдельный файл загрузки Metamod плагинов, например: ''addons/metamod/plugins2.ini''&lt;br /&gt;
:* В созданный ''plugins2.ini'' файл вписать: ''win32 addons\amxmodx2\dlls\amxmodx_mm.dll''&lt;br /&gt;
:* Создать в директории ''cstrike'' файл, например, с именем ''amxmodx2.cfg'', его содержимое должно быть следующим:&lt;br /&gt;
&amp;lt;pre&amp;gt;localinfo mm_pluginsfile &amp;quot;addons/metamod/plugins2.ini&amp;quot;&lt;br /&gt;
localinfo amxx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amxx_cfg &amp;quot;addons/amxmodx2/configs/core.ini&amp;quot;&lt;br /&gt;
localinfo amxx_configsdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amxx_customdir &amp;quot;addons/amxmodx2/custom&amp;quot;&lt;br /&gt;
localinfo amxx_datadir &amp;quot;addons/amxmodx2/data&amp;quot;&lt;br /&gt;
localinfo amxx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_logs &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_modules &amp;quot;addons/amxmodx2/configs/modules.ini&amp;quot;&lt;br /&gt;
localinfo amxx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amxx_plugins &amp;quot;addons/amxmodx2/configs/plugins.ini&amp;quot;&lt;br /&gt;
localinfo amxx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&lt;br /&gt;
localinfo amxx_vault &amp;quot;addons/amxmodx2/data/vault.ini&amp;quot;&lt;br /&gt;
localinfo csstats &amp;quot;addons/amxmodx2/data/csstats.dat&amp;quot;&lt;br /&gt;
localinfo csstats_score &amp;quot;addons/amxmodx2/data/csstats.amxx&amp;quot;&lt;br /&gt;
localinfo amx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amx_configdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amx_langdir &amp;quot;addons/amxmodx2/data/amxmod-lang&amp;quot;&lt;br /&gt;
localinfo amx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Теперь второй сервер необходимо будет запускать с параметром командной строки: ''+exec amxmodx2.cfg''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Вопросы по компилированию =&lt;br /&gt;
== Что такое компиляция? ==&lt;br /&gt;
: Это процесс, который переводит текстовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX Mod X, который их исполняет), в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все AMX Mod X плагины должны публиковаться под лицензией GNU General Public License. В случае опубликования плагина лицензия обязывает также публиковать его исходный код. Откомпилированные плагины имеют расширение .amxx. Именно файлы этого типа, а не .sma, должны указываться в файле plugins.ini для последующей корректной загрузки плагина.&lt;br /&gt;
&lt;br /&gt;
== Как компилировать плагины? ==&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
== Как упростить процесс компилирования? ==&lt;br /&gt;
: Можно написать стороннюю программу или скрипт, например такой, как пакетный batch файл. Например, создайте файл make.bat со следующим содержимым:&lt;br /&gt;
 @amxxpc.exe %1 -i.\include -o.\compiled\%1&lt;br /&gt;
: Чтобы с помощью него откомпилировать плагин, необходимо выполнить следующую команду:&lt;br /&gt;
 make.bat my_plugin.sma&lt;br /&gt;
: В итоге откомпилированный файл будет помещен в каталог ''compiled'' текущей директории. Если его там нет, значит в процессе компилирования возникли фатальные ошибки, которые выводятся на экран.&lt;br /&gt;
: Если вам необходимо (например, в случае ошибок) отправить кому-нибудь результат компиляции, можете перенаправить вывод информации о процессе компилирования в файл, например таким образом:&lt;br /&gt;
 make.bat my_plugin.sma &amp;gt; my_plugin.log&lt;br /&gt;
&lt;br /&gt;
== Компилятор выводит &amp;quot;max. usage is unknown, due to recursion&amp;quot; ==&lt;br /&gt;
: Ничего страшного - просто компилятор не может вычислить предполагаемый объем памяти, используемый вашим плагином.&lt;br /&gt;
&lt;br /&gt;
= Вопросы по скриптингу =&lt;br /&gt;
&lt;br /&gt;
== С чего начать? ==&lt;br /&gt;
: С со статьи [[Ru Fundamental Basics of AMX Mod X Scripting|Фундаментальные основы AMX Mod X скриптинга]].&lt;br /&gt;
&lt;br /&gt;
== А стоит ли вообще начинать? ==&lt;br /&gt;
: В зависимости от того, какую цель вы преследуете, а также от вашего желания и потенциала. Знание английского языка (чтение) будет огромным плюсом во время обучения, инчае постигать азы будет очень сложно. CS является закрытым проектом без исходных кодов, поэтому могие новые (неизученные) элементы приходится постигать через проведение экспериментов.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=4021</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=4021"/>
		<updated>2007-03-19T07:53:27Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* А стоит ли вообще начинать? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:AMX Mod X]]&lt;br /&gt;
= Общие положения, термины, сокращения и условные обозначения =&lt;br /&gt;
:* HL или HL1 - аббревиатура от [[Half-Life 1|Half-Life]] (часть первая);&lt;br /&gt;
:* Mod - &amp;quot;мод&amp;quot;, модификация - дополнение к чему-либо, как правило, расширяющее/изменяющее функциональность;&lt;br /&gt;
:* HL Engine - &amp;quot;движок&amp;quot; Half-Life - &amp;quot;центральный модуль&amp;quot;, осуществляющий выполнение базовых &amp;quot;общемодовых&amp;quot; задач;&lt;br /&gt;
:* MM - [[Metamod]] - сторонний мод особого типа, является промежуточным звеном в системе &amp;quot;HL движок - HL мод&amp;quot;;&lt;br /&gt;
:* AMXX - аббревиатура от [[AMX Mod X]] - Metamod plugin (&amp;quot;плагин&amp;quot;), своего рода Metamod мод;&lt;br /&gt;
:* Map - &amp;quot;карта&amp;quot; - определяет внешний вид территории, на которой происходит игровое действие;&lt;br /&gt;
:* World - &amp;quot;мир&amp;quot; - все пространство, которое занимает карта, а также область, находящаяся за картой;&lt;br /&gt;
:* Spawn - &amp;quot;спавн&amp;quot; - момент, когда игрок появляется в мире, обретая физическое тело;&lt;br /&gt;
:* SinglePlayer - &amp;quot;синглплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать только один игрок;&lt;br /&gt;
:* MultiPlayer - &amp;quot;мультиплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать несколько игроков;&lt;br /&gt;
:* DM - аббревиатура от Death Match - динамичный мультиплеер тип игры, когда после &amp;quot;смерти&amp;quot; игрока происходит его скорый спавн (&amp;quot;респавн&amp;quot;);&lt;br /&gt;
:* HLDM - аббревиатура от Half-Life Death Match - оригинальный HL мод DM типа;&lt;br /&gt;
:* CS - аббревиатура от [[Counter-Stirke]] - наиболее популярный HL мод;&lt;br /&gt;
:* VALVE - [[VALVe Software|корпорация, разработчик HL и CS]], также редко используется как термин, синонимичный HLDM, но подчеркивающий название директории мода (&amp;quot;valve&amp;quot;);&lt;br /&gt;
:* $MODDIR - способ условного обозначения корневой директории мода, например: ''cstrike'', ''valve'';&lt;br /&gt;
:* $MMDIR - способ условного обозначения относительного пути (относительно пути к $MODDIR) к корневой директории Metamod, по-умолчанию: ''addons/metamod'';&lt;br /&gt;
:* $AMXMODX - способ условного обозначения относительного пути (относительно пути к $MODDIR) к корневой директории AMX Mod X, по-умолчанию: ''addons/amxmodx''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Общие вопросы =&lt;br /&gt;
== Где скачать последнюю версию AMX Mod X? ==&lt;br /&gt;
: Последнюю версию всегда можно скачать на официальном сайте AMX Mod X в [http://www.amxmodx.org/downloads.php разделе закачек].&lt;br /&gt;
&lt;br /&gt;
== А что именно качать? ==&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый AMX Mod X пакет, все AMX Mod X дополнения для HL модов, а также AMXX-Studio (специализированный редактор AMX Mod X плагинов), либо, если готовы произвести установку AMX Mod X вручную, а также не желаете закачивать все существующие AMX Mod X дополнения для HL модов, качайте базовый архив (AMX Mod X Base), а затем дополнение для интересующего вас HL мода. Сама по себе базовая поставка практически во всех случаях будет достаточна только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
== Где искать плагины? ==&lt;br /&gt;
: Предварительно отметим, что условно AMX Mod X плагины можно разделить на следующие категории: стандартные, официально одобренные, официально отклоненные и неофициальные. Одобренные плагины можно искать [http://www.amxmodx.org/compiler.php здесь], или, используя [http://forums.alliedmods.net/search.php поисковую систему официального форума]. В поле '''Search in Forum(s)''' отметьте '''Approved Plugins''', также, зажав клавишу Ctrl, можно отметить интересующие вас секции из подраздела '''High-Traffic Plugins'''. Чтобы искать неофициальные плагины, следует также воспользоваться [http://forums.alliedmods.net/search.php поисковой системой официального форума], правда, в поле '''Search in Forum(s)''' необходимо выбрать '''Unapproved/Old Plugins'''. Если для вас не имеет значения статус плагина, и вы склонны к экспериментам, осуществляйте поиск по категории '''Plugins''', которая включает в себя одобренные, отклоненные, недавно опубликованные, вполне возможно, &amp;quot;сырые&amp;quot; плагины, а также темы-запросы, в которых могут быть &amp;quot;быстро написанные&amp;quot; плагины. Немного поработав с поисковой формой форума, вы легко освоите эту систему. Единственное возможное для некоторых неудобство - практически все описания плагинов написаны на английcком языке. Неофициальные плагины также можно попробовать искать с помощью общеизвестных поисковых систем: Google, Yandex, Rambler и др.&lt;br /&gt;
&lt;br /&gt;
== Сколько плагинов сейчас выпущено под AMX Mod X? ==&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством и надежностью б'''о'''льшая половина из них не белещет. К тому же некоторые плагины, &amp;quot;заброшены&amp;quot; авторами и не обновляются, что приводит даже к несовместимости с новыми версиями AMX Mod X.&lt;br /&gt;
&lt;br /&gt;
== Как устанавливать плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как удалять плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как запустить два различных сервера AMX Mod X? ==&lt;br /&gt;
: К примеру, вы хотите запустить два различных сервера из одной ''cstrike'' директории на базе различных AMX Mod X/Metamod плагинов, настроек и прочего. Это решаемо. Один из примеров для win32 системы приведен ниже:&lt;br /&gt;
:* Создать отдельную AMX Mod X директорию с необходимыми файлами, например: ''addons/amxmodx2''&lt;br /&gt;
:* В ''addons/amxmodx2/configs/core.ini'' везде изменить &amp;quot;amxmodx&amp;quot; на &amp;quot;amxmodx2&amp;quot;&lt;br /&gt;
:* Создать отдельный файл загрузки Metamod плагинов, например: ''addons/metamod/plugins2.ini''&lt;br /&gt;
:* В созданный ''plugins2.ini'' файл вписать: ''win32 addons\amxmodx2\dlls\amxmodx_mm.dll''&lt;br /&gt;
:* Создать в директории ''cstrike'' файл, например, с именем ''amxmodx2.cfg'', его содержимое должно быть следующим:&lt;br /&gt;
&amp;lt;pre&amp;gt;localinfo mm_pluginsfile &amp;quot;addons/metamod/plugins2.ini&amp;quot;&lt;br /&gt;
localinfo amxx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amxx_cfg &amp;quot;addons/amxmodx2/configs/core.ini&amp;quot;&lt;br /&gt;
localinfo amxx_configsdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amxx_customdir &amp;quot;addons/amxmodx2/custom&amp;quot;&lt;br /&gt;
localinfo amxx_datadir &amp;quot;addons/amxmodx2/data&amp;quot;&lt;br /&gt;
localinfo amxx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_logs &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_modules &amp;quot;addons/amxmodx2/configs/modules.ini&amp;quot;&lt;br /&gt;
localinfo amxx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amxx_plugins &amp;quot;addons/amxmodx2/configs/plugins.ini&amp;quot;&lt;br /&gt;
localinfo amxx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&lt;br /&gt;
localinfo amxx_vault &amp;quot;addons/amxmodx2/data/vault.ini&amp;quot;&lt;br /&gt;
localinfo csstats &amp;quot;addons/amxmodx2/data/csstats.dat&amp;quot;&lt;br /&gt;
localinfo csstats_score &amp;quot;addons/amxmodx2/data/csstats.amxx&amp;quot;&lt;br /&gt;
localinfo amx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amx_configdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amx_langdir &amp;quot;addons/amxmodx2/data/amxmod-lang&amp;quot;&lt;br /&gt;
localinfo amx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Теперь второй сервер необходимо будет запускать с параметром командной строки: ''+exec amxmodx2.cfg''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Вопросы по компилированию =&lt;br /&gt;
== Что такое компиляция? ==&lt;br /&gt;
: Это процесс, который переводит текстовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX Mod X, который их исполняет), в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все AMX Mod X плагины должны публиковаться под лицензией GNU General Public License. В случае опубликования плагина лицензия обязывает также публиковать его исходный код. Откомпилированные плагины имеют расширение .amxx. Именно файлы этого типа, а не .sma, должны указываться в файле plugins.ini для последующей корректной загрузки плагина.&lt;br /&gt;
&lt;br /&gt;
== Как компилировать плагины? ==&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
== Как упростить процесс компилирования? ==&lt;br /&gt;
: Можно написать стороннюю программу или скрипт, например такой, как пакетный batch файл. Например, создайте файл make.bat со следующим содержимым:&lt;br /&gt;
 @amxxpc.exe %1 -i.\include -o.\compiled\%1&lt;br /&gt;
: Чтобы с помощью него откомпилировать плагин, необходимо выполнить следующую команду:&lt;br /&gt;
 make.bat my_plugin.sma&lt;br /&gt;
: В итоге откомпилированный файл будет помещен в каталог ''compiled'' текущей директории. Если его там нет, значит в процессе компилирования возникли фатальные ошибки, которые выводятся на экран.&lt;br /&gt;
: Если вам необходимо (например, в случае ошибок) отправить кому-нибудь результат компиляции, можете перенаправить вывод информации о процессе компилирования в файл, например таким образом:&lt;br /&gt;
 make.bat my_plugin.sma &amp;gt; my_plugin.log&lt;br /&gt;
&lt;br /&gt;
== Компилятор выводит &amp;quot;max. usage is unknown, due to recursion&amp;quot; ==&lt;br /&gt;
: Ничего страшного - просто компилятор не может вычислить предполагаемый объем памяти, используемый вашим плагином.&lt;br /&gt;
&lt;br /&gt;
= Вопросы по скриптингу =&lt;br /&gt;
&lt;br /&gt;
== С чего начать? ==&lt;br /&gt;
: С со статьи [[Ru Fundamental Basics of AMX Mod X Scripting|Фундаментальные основы AMX Mod X скриптинга]].&lt;br /&gt;
&lt;br /&gt;
== А стоит ли вообще начинать? ==&lt;br /&gt;
: В зависимости от того, какую цель вы преследуете, а также от вашего желания и потенциала. Знание английского языка (чтение) будет огромным плюсом во время обучения, инчае постигать азы будет очень сложно. CS является закрытым проектом без исходных кодов, поэтому могие новые (неизученные) элементы приходится постигать через проведение экспериментов.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Talk:Ru_AMX_Mod_X_FAQ&amp;diff=4020</id>
		<title>Talk:Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Talk:Ru_AMX_Mod_X_FAQ&amp;diff=4020"/>
		<updated>2007-03-19T07:49:16Z</updated>

		<summary type="html">&lt;p&gt;Slogic: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Slogic|Slogic]]: может убрать определения и оставить только сокращения, а определение терминов реализовать используя возможности WIKI? Или даже сокращения убрать, а в процессе написания делать ссылки на описание этих слов/сокращений.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3997</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3997"/>
		<updated>2007-03-17T23:38:13Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Вопросы по компилированию */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:AMX Mod X]]&lt;br /&gt;
= Общие положения, термины, сокращения и условные обозначения =&lt;br /&gt;
:* HL или HL1 - аббревиатура от Half-Life (часть первая);&lt;br /&gt;
:* Mod - &amp;quot;мод&amp;quot;, модификация - дополнение к чему-либо, как правило, расширяющее/изменяющее функциональность;&lt;br /&gt;
:* HL Engine - &amp;quot;движок&amp;quot; Half-Life - &amp;quot;центральный модуль&amp;quot;, осуществляющий выполнение базовых &amp;quot;общемодовых&amp;quot; задач;&lt;br /&gt;
:* MM - MetaMod - сторонний мод особого типа, является промежуточным звеном в системе &amp;quot;HL движок - HL мод&amp;quot;;&lt;br /&gt;
:* AMXX - аббревиатура от [[AMX Mod X]] - MetaMod plugin (&amp;quot;плагин&amp;quot;), своего рода MetaMod мод;&lt;br /&gt;
:* Map - &amp;quot;карта&amp;quot; - определяет внешний вид территории, на которой происходит игровое действие;&lt;br /&gt;
:* World - &amp;quot;мир&amp;quot; - все пространство, которое занимает карта, а также область, находящаяся за картой;&lt;br /&gt;
:* Spawn - &amp;quot;спавн&amp;quot; - момент, когда игрок появляется в мире, обретая физическое тело;&lt;br /&gt;
:* SinglePlayer - &amp;quot;синглплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать только один игрок;&lt;br /&gt;
:* MultiPlayer - &amp;quot;мультиплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать несколько игроков;&lt;br /&gt;
:* DM - аббревиатура от Death Match - динамичный мультиплеер тип игры, когда после &amp;quot;смерти&amp;quot; игрока происходит его скорый спавн (&amp;quot;респавн&amp;quot;);&lt;br /&gt;
:* HLDM - аббревиатура от Half-Life Death Match - оригинальный HL мод DM типа;&lt;br /&gt;
:* CS - аббревиатура от Counter-Stirke - наиболее популярный HL мод;&lt;br /&gt;
:* VALVE - кампания, разработчик HL и CS, также редко используется как термин, синонимичный HLDM, но направленный на акцентирование названия директории мода (&amp;quot;valve&amp;quot;);&lt;br /&gt;
:* $MODDIR - способ неявного указания названия корневой директории мода, например: ''cstrike'', ''valve'';&lt;br /&gt;
:* $MMDIR - способ неявного указания относительного пути (относительно пути к $MODDIR) к корневой директории MetaMod, по-умолчанию: ''addons/metamod'';&lt;br /&gt;
:* $AMXMODX - способ неявного указания относительного пути (относительно пути к $MODDIR) к корневой директории AMX Mod X, по-умолчанию: ''addons/amxmodx''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Общие вопросы =&lt;br /&gt;
== Где скачать последнюю версию AMX Mod X? ==&lt;br /&gt;
: Последнюю версию всегда можно скачать на официальном сайте AMX Mod X в [http://www.amxmodx.org/downloads.php разделе закачек].&lt;br /&gt;
&lt;br /&gt;
== А что именно качать? ==&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый AMX Mod X пакет, все AMX Mod X дополнения для HL модов, а также AMXX-Studio (специализированный редактор AMX Mod X плагинов), либо, если готовы произвести установку AMX Mod X вручную, а также не желаете закачивать все существующие AMX Mod X дополнения для HL модов, качайте базовый архив (AMX Mod X Base), а затем дополнение для интересующего вас HL мода. Сама по себе базовая поставка практически во всех случаях будет достаточна только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
== Где искать плагины? ==&lt;br /&gt;
: Предварительно отметим, что условно AMX Mod X плагины можно разделить на следующие категории: стандартные, официально одобренные, официально отклоненные и неофициальные. Одобренные плагины можно искать [http://www.amxmodx.org/compiler.php здесь], или, используя [http://forums.alliedmods.net/search.php поисковую систему официального форума]. В поле '''Search in Forum(s)''' отметьте '''Approved Plugins''', также, зажав клавишу Ctrl, можно отметить интересующие вас секции из подраздела '''High-Traffic Plugins'''. Чтобы искать неофициальные плагины, следует также воспользоваться [http://forums.alliedmods.net/search.php поисковой системой официального форума], правда, в поле '''Search in Forum(s)''' необходимо выбрать '''Unapproved/Old Plugins'''. Если для вас не имеет значения статус плагина, и вы склонны к экспериментам, осуществляйте поиск по категории '''Plugins''', которая включает в себя одобренные, отклоненные, недавно опубликованные, вполне возможно, &amp;quot;сырые&amp;quot; плагины, а также темы-запросы, в которых могут быть &amp;quot;быстро написанные&amp;quot; плагины. Немного поработав с поисковой формой форума, вы легко освоите эту систему. Единственное возможное для некоторых неудобство - практически все описания плагинов написаны на английcком языке. Неофициальные плагины также можно попробовать искать с помощью общеизвестных поисковых систем: Google, Yandex, Rambler и др.&lt;br /&gt;
&lt;br /&gt;
== Сколько плагинов сейчас выпущено под AMX Mod X? ==&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством и надежностью б'''о'''льшая половина из них не белещет. К тому же некоторые плагины, &amp;quot;заброшены&amp;quot; авторами и не обновляются, что приводит даже к несовместимости с новыми версиями AMX Mod X.&lt;br /&gt;
&lt;br /&gt;
== Как устанавливать плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как удалять плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как запустить два различных сервера AMX Mod X? ==&lt;br /&gt;
: К примеру, вы хотите запустить два различных сервера из одной cstrike директории на базе различных AMX Mod X/Metamod плагинов, настроек и прочего - это решаемо. Один из примеров для win32 машины приведен ниже:&lt;br /&gt;
:* Создать отдельную AMX Mod X директорию с необходимыми файлами, например: addons/amxmodx2&lt;br /&gt;
:* В addons/amxmodx2/configs/core.ini везде изменить &amp;quot;amxmodx&amp;quot; на &amp;quot;amxmodx2&amp;quot;&lt;br /&gt;
:* Создать отдельный файл загрузки MetaMod плагинов, например: addons/metamod/plugins2.ini&lt;br /&gt;
:* В созданный plugins2.ini файл вписать: win32 addons\amxmodx2\dlls\amxmodx_mm.dll&lt;br /&gt;
:* Создать в директории cstrike файл, например, с именем amxmodx2.cfg, его содержимое должно быть следующим:&lt;br /&gt;
&amp;lt;pre&amp;gt;localinfo mm_pluginsfile &amp;quot;addons/metamod/plugins2.ini&amp;quot;&lt;br /&gt;
localinfo amxx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amxx_cfg &amp;quot;addons/amxmodx2/configs/core.ini&amp;quot;&lt;br /&gt;
localinfo amxx_configsdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amxx_customdir &amp;quot;addons/amxmodx2/custom&amp;quot;&lt;br /&gt;
localinfo amxx_datadir &amp;quot;addons/amxmodx2/data&amp;quot;&lt;br /&gt;
localinfo amxx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_logs &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_modules &amp;quot;addons/amxmodx2/configs/modules.ini&amp;quot;&lt;br /&gt;
localinfo amxx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amxx_plugins &amp;quot;addons/amxmodx2/configs/plugins.ini&amp;quot;&lt;br /&gt;
localinfo amxx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&lt;br /&gt;
localinfo amxx_vault &amp;quot;addons/amxmodx2/data/vault.ini&amp;quot;&lt;br /&gt;
localinfo csstats &amp;quot;addons/amxmodx2/data/csstats.dat&amp;quot;&lt;br /&gt;
localinfo csstats_score &amp;quot;addons/amxmodx2/data/csstats.amxx&amp;quot;&lt;br /&gt;
localinfo amx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amx_configdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amx_langdir &amp;quot;addons/amxmodx2/data/amxmod-lang&amp;quot;&lt;br /&gt;
localinfo amx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Теперь второй сервер необходимо будет запускать с параметром командной строки: +exec amxmodx2.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Вопросы по компилированию =&lt;br /&gt;
== Что такое компиляция? ==&lt;br /&gt;
: Это процесс, который переводит текстовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX Mod X, который их исполняет), в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все AMX Mod X плагины должны публиковаться под лицензией GNU General Public License. В случае опубликования плагина лицензия обязывает также публиковать его исходный код. Откомпилированные плагины имеют расширение .amxx. Именно файлы этого типа, а не .sma, должны указываться в файле plugins.ini для последующей корректной загрузки плагина.&lt;br /&gt;
&lt;br /&gt;
== Как компилировать плагины? ==&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
== Как упростить процесс компилирования? ==&lt;br /&gt;
: Можно написать стороннюю программу или скрипт, например такой, как пакетный batch файл. Например, создайте файл make.bat с содержимым&lt;br /&gt;
 @amxxpc.exe %1 -i.\include -o.\compiled\%1&lt;br /&gt;
: Чтобы с помощью него откомпилировать плагин, надо выполнить команду&lt;br /&gt;
 make.bat my_plugin.sma&lt;br /&gt;
: В итоге откомпилированный файл будет помещен в каталог ''compiled'' текущей директории. Если его там нет, значит в процессе компилирования возникли фатальные ошибки, которые выводятся на экран.&lt;br /&gt;
: Если вам необходимо (например, в случае ошибок) кому-нибудь отправить результат компиляции, можете перенаправить вывод с информацией о процессе компилирования в файл, например, таким образом:&lt;br /&gt;
 make.bat my_plugin.sma &amp;gt; my_plugin.log&lt;br /&gt;
&lt;br /&gt;
== Компилятор выводит &amp;quot;max. usage is unknown, due to recursion&amp;quot; ==&lt;br /&gt;
: Ничего страшного. Просто компилятор не может вычислить предполагаемый объем памяти, используемый вашим плагином.&lt;br /&gt;
&lt;br /&gt;
= Вопросы по скриптингу =&lt;br /&gt;
&lt;br /&gt;
== С чего начать? ==&lt;br /&gt;
: С [[Ru Fundamental Basics of AMX Mod X Scripting|фундаментальных основ AMX Mod X скриптинга]].&lt;br /&gt;
&lt;br /&gt;
== А стоит ли вообще начинать? ==&lt;br /&gt;
: В зависимости от того, какую цель вы преследуете, а также от вашего желания и потенциала.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3996</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3996"/>
		<updated>2007-03-17T23:36:04Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Как упростить процесс компилирования? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:AMX Mod X]]&lt;br /&gt;
= Общие положения, термины, сокращения и условные обозначения =&lt;br /&gt;
:* HL или HL1 - аббревиатура от Half-Life (часть первая);&lt;br /&gt;
:* Mod - &amp;quot;мод&amp;quot;, модификация - дополнение к чему-либо, как правило, расширяющее/изменяющее функциональность;&lt;br /&gt;
:* HL Engine - &amp;quot;движок&amp;quot; Half-Life - &amp;quot;центральный модуль&amp;quot;, осуществляющий выполнение базовых &amp;quot;общемодовых&amp;quot; задач;&lt;br /&gt;
:* MM - MetaMod - сторонний мод особого типа, является промежуточным звеном в системе &amp;quot;HL движок - HL мод&amp;quot;;&lt;br /&gt;
:* AMXX - аббревиатура от [[AMX Mod X]] - MetaMod plugin (&amp;quot;плагин&amp;quot;), своего рода MetaMod мод;&lt;br /&gt;
:* Map - &amp;quot;карта&amp;quot; - определяет внешний вид территории, на которой происходит игровое действие;&lt;br /&gt;
:* World - &amp;quot;мир&amp;quot; - все пространство, которое занимает карта, а также область, находящаяся за картой;&lt;br /&gt;
:* Spawn - &amp;quot;спавн&amp;quot; - момент, когда игрок появляется в мире, обретая физическое тело;&lt;br /&gt;
:* SinglePlayer - &amp;quot;синглплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать только один игрок;&lt;br /&gt;
:* MultiPlayer - &amp;quot;мультиплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать несколько игроков;&lt;br /&gt;
:* DM - аббревиатура от Death Match - динамичный мультиплеер тип игры, когда после &amp;quot;смерти&amp;quot; игрока происходит его скорый спавн (&amp;quot;респавн&amp;quot;);&lt;br /&gt;
:* HLDM - аббревиатура от Half-Life Death Match - оригинальный HL мод DM типа;&lt;br /&gt;
:* CS - аббревиатура от Counter-Stirke - наиболее популярный HL мод;&lt;br /&gt;
:* VALVE - кампания, разработчик HL и CS, также редко используется как термин, синонимичный HLDM, но направленный на акцентирование названия директории мода (&amp;quot;valve&amp;quot;);&lt;br /&gt;
:* $MODDIR - способ неявного указания названия корневой директории мода, например: ''cstrike'', ''valve'';&lt;br /&gt;
:* $MMDIR - способ неявного указания относительного пути (относительно пути к $MODDIR) к корневой директории MetaMod, по-умолчанию: ''addons/metamod'';&lt;br /&gt;
:* $AMXMODX - способ неявного указания относительного пути (относительно пути к $MODDIR) к корневой директории AMX Mod X, по-умолчанию: ''addons/amxmodx''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Общие вопросы =&lt;br /&gt;
== Где скачать последнюю версию AMX Mod X? ==&lt;br /&gt;
: Последнюю версию всегда можно скачать на официальном сайте AMX Mod X в [http://www.amxmodx.org/downloads.php разделе закачек].&lt;br /&gt;
&lt;br /&gt;
== А что именно качать? ==&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый AMX Mod X пакет, все AMX Mod X дополнения для HL модов, а также AMXX-Studio (специализированный редактор AMX Mod X плагинов), либо, если готовы произвести установку AMX Mod X вручную, а также не желаете закачивать все существующие AMX Mod X дополнения для HL модов, качайте базовый архив (AMX Mod X Base), а затем дополнение для интересующего вас HL мода. Сама по себе базовая поставка практически во всех случаях будет достаточна только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
== Где искать плагины? ==&lt;br /&gt;
: Предварительно отметим, что условно AMX Mod X плагины можно разделить на следующие категории: стандартные, официально одобренные, официально отклоненные и неофициальные. Одобренные плагины можно искать [http://www.amxmodx.org/compiler.php здесь], или, используя [http://forums.alliedmods.net/search.php поисковую систему официального форума]. В поле '''Search in Forum(s)''' отметьте '''Approved Plugins''', также, зажав клавишу Ctrl, можно отметить интересующие вас секции из подраздела '''High-Traffic Plugins'''. Чтобы искать неофициальные плагины, следует также воспользоваться [http://forums.alliedmods.net/search.php поисковой системой официального форума], правда, в поле '''Search in Forum(s)''' необходимо выбрать '''Unapproved/Old Plugins'''. Если для вас не имеет значения статус плагина, и вы склонны к экспериментам, осуществляйте поиск по категории '''Plugins''', которая включает в себя одобренные, отклоненные, недавно опубликованные, вполне возможно, &amp;quot;сырые&amp;quot; плагины, а также темы-запросы, в которых могут быть &amp;quot;быстро написанные&amp;quot; плагины. Немного поработав с поисковой формой форума, вы легко освоите эту систему. Единственное возможное для некоторых неудобство - практически все описания плагинов написаны на английcком языке. Неофициальные плагины также можно попробовать искать с помощью общеизвестных поисковых систем: Google, Yandex, Rambler и др.&lt;br /&gt;
&lt;br /&gt;
== Сколько плагинов сейчас выпущено под AMX Mod X? ==&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством и надежностью б'''о'''льшая половина из них не белещет. К тому же некоторые плагины, &amp;quot;заброшены&amp;quot; авторами и не обновляются, что приводит даже к несовместимости с новыми версиями AMX Mod X.&lt;br /&gt;
&lt;br /&gt;
== Как устанавливать плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как удалять плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как запустить два различных сервера AMX Mod X? ==&lt;br /&gt;
: К примеру, вы хотите запустить два различных сервера из одной cstrike директории на базе различных AMX Mod X/Metamod плагинов, настроек и прочего - это решаемо. Один из примеров для win32 машины приведен ниже:&lt;br /&gt;
:* Создать отдельную AMX Mod X директорию с необходимыми файлами, например: addons/amxmodx2&lt;br /&gt;
:* В addons/amxmodx2/configs/core.ini везде изменить &amp;quot;amxmodx&amp;quot; на &amp;quot;amxmodx2&amp;quot;&lt;br /&gt;
:* Создать отдельный файл загрузки MetaMod плагинов, например: addons/metamod/plugins2.ini&lt;br /&gt;
:* В созданный plugins2.ini файл вписать: win32 addons\amxmodx2\dlls\amxmodx_mm.dll&lt;br /&gt;
:* Создать в директории cstrike файл, например, с именем amxmodx2.cfg, его содержимое должно быть следующим:&lt;br /&gt;
&amp;lt;pre&amp;gt;localinfo mm_pluginsfile &amp;quot;addons/metamod/plugins2.ini&amp;quot;&lt;br /&gt;
localinfo amxx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amxx_cfg &amp;quot;addons/amxmodx2/configs/core.ini&amp;quot;&lt;br /&gt;
localinfo amxx_configsdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amxx_customdir &amp;quot;addons/amxmodx2/custom&amp;quot;&lt;br /&gt;
localinfo amxx_datadir &amp;quot;addons/amxmodx2/data&amp;quot;&lt;br /&gt;
localinfo amxx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_logs &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_modules &amp;quot;addons/amxmodx2/configs/modules.ini&amp;quot;&lt;br /&gt;
localinfo amxx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amxx_plugins &amp;quot;addons/amxmodx2/configs/plugins.ini&amp;quot;&lt;br /&gt;
localinfo amxx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&lt;br /&gt;
localinfo amxx_vault &amp;quot;addons/amxmodx2/data/vault.ini&amp;quot;&lt;br /&gt;
localinfo csstats &amp;quot;addons/amxmodx2/data/csstats.dat&amp;quot;&lt;br /&gt;
localinfo csstats_score &amp;quot;addons/amxmodx2/data/csstats.amxx&amp;quot;&lt;br /&gt;
localinfo amx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amx_configdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amx_langdir &amp;quot;addons/amxmodx2/data/amxmod-lang&amp;quot;&lt;br /&gt;
localinfo amx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Теперь второй сервер необходимо будет запускать с параметром командной строки: +exec amxmodx2.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Вопросы по компилированию =&lt;br /&gt;
== Что такое компиляция? ==&lt;br /&gt;
: Это процесс, который переводит текстовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX Mod X, который их исполняет), в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все AMX Mod X плагины должны публиковаться под лицензией GNU General Public License. В случае опубликования плагина лицензия обязывает также публиковать его исходный код. Откомпилированные плагины имеют расширение .amxx. Именно файлы этого типа, а не .sma, должны указываться в файле plugins.ini для последующей корректной загрузки плагина.&lt;br /&gt;
&lt;br /&gt;
== Как компилировать плагины? ==&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
== Компилятор выводит &amp;quot;max. usage is unknown, due to recursion&amp;quot; ==&lt;br /&gt;
: Ничего страшного. Просто компилятор не может вычислить предполагаемый объем памяти, используемый вашим плагином.&lt;br /&gt;
&lt;br /&gt;
== Как упростить процесс компилирования? ==&lt;br /&gt;
: Можно написать стороннюю программу или скрипт, например такой, как пакетный batch файл. Например, создайте файл make.bat с содержимым&lt;br /&gt;
 @amxxpc.exe %1 -i.\include -o.\compiled\%1&lt;br /&gt;
: Чтобы с помощью него откомпилировать плагин, надо выполнить команду&lt;br /&gt;
 make.bat my_plugin.sma&lt;br /&gt;
: В итоге откомпилированный файл будет помещен в каталог ''compiled'' текущей директории. Если его там нет, значит в процессе компилирования возникли фатальные ошибки, которые выводятся на экран.&lt;br /&gt;
: Если вам необходимо (например, в случае ошибок) кому-нибудь отправить результат компиляции, можете перенаправить вывод с информацией о процессе компилирования в файл, например, таким образом:&lt;br /&gt;
 make.bat my_plugin.sma &amp;gt; my_plugin.log&lt;br /&gt;
&lt;br /&gt;
= Вопросы по скриптингу =&lt;br /&gt;
&lt;br /&gt;
== С чего начать? ==&lt;br /&gt;
: С [[Ru Fundamental Basics of AMX Mod X Scripting|фундаментальных основ AMX Mod X скриптинга]].&lt;br /&gt;
&lt;br /&gt;
== А стоит ли вообще начинать? ==&lt;br /&gt;
: В зависимости от того, какую цель вы преследуете, а также от вашего желания и потенциала.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3995</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3995"/>
		<updated>2007-03-17T23:31:46Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Как упростить процесс компилирования? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:AMX Mod X]]&lt;br /&gt;
= Общие положения, термины, сокращения и условные обозначения =&lt;br /&gt;
:* HL или HL1 - аббревиатура от Half-Life (часть первая);&lt;br /&gt;
:* Mod - &amp;quot;мод&amp;quot;, модификация - дополнение к чему-либо, как правило, расширяющее/изменяющее функциональность;&lt;br /&gt;
:* HL Engine - &amp;quot;движок&amp;quot; Half-Life - &amp;quot;центральный модуль&amp;quot;, осуществляющий выполнение базовых &amp;quot;общемодовых&amp;quot; задач;&lt;br /&gt;
:* MM - MetaMod - сторонний мод особого типа, является промежуточным звеном в системе &amp;quot;HL движок - HL мод&amp;quot;;&lt;br /&gt;
:* AMXX - аббревиатура от [[AMX Mod X]] - MetaMod plugin (&amp;quot;плагин&amp;quot;), своего рода MetaMod мод;&lt;br /&gt;
:* Map - &amp;quot;карта&amp;quot; - определяет внешний вид территории, на которой происходит игровое действие;&lt;br /&gt;
:* World - &amp;quot;мир&amp;quot; - все пространство, которое занимает карта, а также область, находящаяся за картой;&lt;br /&gt;
:* Spawn - &amp;quot;спавн&amp;quot; - момент, когда игрок появляется в мире, обретая физическое тело;&lt;br /&gt;
:* SinglePlayer - &amp;quot;синглплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать только один игрок;&lt;br /&gt;
:* MultiPlayer - &amp;quot;мультиплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать несколько игроков;&lt;br /&gt;
:* DM - аббревиатура от Death Match - динамичный мультиплеер тип игры, когда после &amp;quot;смерти&amp;quot; игрока происходит его скорый спавн (&amp;quot;респавн&amp;quot;);&lt;br /&gt;
:* HLDM - аббревиатура от Half-Life Death Match - оригинальный HL мод DM типа;&lt;br /&gt;
:* CS - аббревиатура от Counter-Stirke - наиболее популярный HL мод;&lt;br /&gt;
:* VALVE - кампания, разработчик HL и CS, также редко используется как термин, синонимичный HLDM, но направленный на акцентирование названия директории мода (&amp;quot;valve&amp;quot;);&lt;br /&gt;
:* $MODDIR - способ неявного указания названия корневой директории мода, например: ''cstrike'', ''valve'';&lt;br /&gt;
:* $MMDIR - способ неявного указания относительного пути (относительно пути к $MODDIR) к корневой директории MetaMod, по-умолчанию: ''addons/metamod'';&lt;br /&gt;
:* $AMXMODX - способ неявного указания относительного пути (относительно пути к $MODDIR) к корневой директории AMX Mod X, по-умолчанию: ''addons/amxmodx''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Общие вопросы =&lt;br /&gt;
== Где скачать последнюю версию AMX Mod X? ==&lt;br /&gt;
: Последнюю версию всегда можно скачать на официальном сайте AMX Mod X в [http://www.amxmodx.org/downloads.php разделе закачек].&lt;br /&gt;
&lt;br /&gt;
== А что именно качать? ==&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый AMX Mod X пакет, все AMX Mod X дополнения для HL модов, а также AMXX-Studio (специализированный редактор AMX Mod X плагинов), либо, если готовы произвести установку AMX Mod X вручную, а также не желаете закачивать все существующие AMX Mod X дополнения для HL модов, качайте базовый архив (AMX Mod X Base), а затем дополнение для интересующего вас HL мода. Сама по себе базовая поставка практически во всех случаях будет достаточна только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
== Где искать плагины? ==&lt;br /&gt;
: Предварительно отметим, что условно AMX Mod X плагины можно разделить на следующие категории: стандартные, официально одобренные, официально отклоненные и неофициальные. Одобренные плагины можно искать [http://www.amxmodx.org/compiler.php здесь], или, используя [http://forums.alliedmods.net/search.php поисковую систему официального форума]. В поле '''Search in Forum(s)''' отметьте '''Approved Plugins''', также, зажав клавишу Ctrl, можно отметить интересующие вас секции из подраздела '''High-Traffic Plugins'''. Чтобы искать неофициальные плагины, следует также воспользоваться [http://forums.alliedmods.net/search.php поисковой системой официального форума], правда, в поле '''Search in Forum(s)''' необходимо выбрать '''Unapproved/Old Plugins'''. Если для вас не имеет значения статус плагина, и вы склонны к экспериментам, осуществляйте поиск по категории '''Plugins''', которая включает в себя одобренные, отклоненные, недавно опубликованные, вполне возможно, &amp;quot;сырые&amp;quot; плагины, а также темы-запросы, в которых могут быть &amp;quot;быстро написанные&amp;quot; плагины. Немного поработав с поисковой формой форума, вы легко освоите эту систему. Единственное возможное для некоторых неудобство - практически все описания плагинов написаны на английcком языке. Неофициальные плагины также можно попробовать искать с помощью общеизвестных поисковых систем: Google, Yandex, Rambler и др.&lt;br /&gt;
&lt;br /&gt;
== Сколько плагинов сейчас выпущено под AMX Mod X? ==&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством и надежностью б'''о'''льшая половина из них не белещет. К тому же некоторые плагины, &amp;quot;заброшены&amp;quot; авторами и не обновляются, что приводит даже к несовместимости с новыми версиями AMX Mod X.&lt;br /&gt;
&lt;br /&gt;
== Как устанавливать плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как удалять плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как запустить два различных сервера AMX Mod X? ==&lt;br /&gt;
: К примеру, вы хотите запустить два различных сервера из одной cstrike директории на базе различных AMX Mod X/Metamod плагинов, настроек и прочего - это решаемо. Один из примеров для win32 машины приведен ниже:&lt;br /&gt;
:* Создать отдельную AMX Mod X директорию с необходимыми файлами, например: addons/amxmodx2&lt;br /&gt;
:* В addons/amxmodx2/configs/core.ini везде изменить &amp;quot;amxmodx&amp;quot; на &amp;quot;amxmodx2&amp;quot;&lt;br /&gt;
:* Создать отдельный файл загрузки MetaMod плагинов, например: addons/metamod/plugins2.ini&lt;br /&gt;
:* В созданный plugins2.ini файл вписать: win32 addons\amxmodx2\dlls\amxmodx_mm.dll&lt;br /&gt;
:* Создать в директории cstrike файл, например, с именем amxmodx2.cfg, его содержимое должно быть следующим:&lt;br /&gt;
&amp;lt;pre&amp;gt;localinfo mm_pluginsfile &amp;quot;addons/metamod/plugins2.ini&amp;quot;&lt;br /&gt;
localinfo amxx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amxx_cfg &amp;quot;addons/amxmodx2/configs/core.ini&amp;quot;&lt;br /&gt;
localinfo amxx_configsdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amxx_customdir &amp;quot;addons/amxmodx2/custom&amp;quot;&lt;br /&gt;
localinfo amxx_datadir &amp;quot;addons/amxmodx2/data&amp;quot;&lt;br /&gt;
localinfo amxx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_logs &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_modules &amp;quot;addons/amxmodx2/configs/modules.ini&amp;quot;&lt;br /&gt;
localinfo amxx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amxx_plugins &amp;quot;addons/amxmodx2/configs/plugins.ini&amp;quot;&lt;br /&gt;
localinfo amxx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&lt;br /&gt;
localinfo amxx_vault &amp;quot;addons/amxmodx2/data/vault.ini&amp;quot;&lt;br /&gt;
localinfo csstats &amp;quot;addons/amxmodx2/data/csstats.dat&amp;quot;&lt;br /&gt;
localinfo csstats_score &amp;quot;addons/amxmodx2/data/csstats.amxx&amp;quot;&lt;br /&gt;
localinfo amx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amx_configdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amx_langdir &amp;quot;addons/amxmodx2/data/amxmod-lang&amp;quot;&lt;br /&gt;
localinfo amx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Теперь второй сервер необходимо будет запускать с параметром командной строки: +exec amxmodx2.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Вопросы по компилированию =&lt;br /&gt;
== Что такое компиляция? ==&lt;br /&gt;
: Это процесс, который переводит текстовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX Mod X, который их исполняет), в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все AMX Mod X плагины должны публиковаться под лицензией GNU General Public License. В случае опубликования плагина лицензия обязывает также публиковать его исходный код. Откомпилированные плагины имеют расширение .amxx. Именно файлы этого типа, а не .sma, должны указываться в файле plugins.ini для последующей корректной загрузки плагина.&lt;br /&gt;
&lt;br /&gt;
== Как компилировать плагины? ==&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
== Компилятор выводит &amp;quot;max. usage is unknown, due to recursion&amp;quot; ==&lt;br /&gt;
: Ничего страшного. Просто компилятор не может вычислить предполагаемый объем памяти, используемый вашим плагином.&lt;br /&gt;
&lt;br /&gt;
== Как упростить процесс компилирования? ==&lt;br /&gt;
: Можно написать стороннюю программу или скрипт, например такой, как пакетный batch файл. Например, создайте файл make.bat содержимым&lt;br /&gt;
 @amxxpc.exe %1 -i.\include -o.\compiled\%1&lt;br /&gt;
: Чтобы с помощью него откомпилировать плагин, надо выполнить команду&lt;br /&gt;
 make.bat my_plugin.sma&lt;br /&gt;
: В итоге откомпилированный файл будет помещен в каталог ''compiled'' текущей директории.&lt;br /&gt;
&lt;br /&gt;
= Вопросы по скриптингу =&lt;br /&gt;
&lt;br /&gt;
== С чего начать? ==&lt;br /&gt;
: С [[Ru Fundamental Basics of AMX Mod X Scripting|фундаментальных основ AMX Mod X скриптинга]].&lt;br /&gt;
&lt;br /&gt;
== А стоит ли вообще начинать? ==&lt;br /&gt;
: В зависимости от того, какую цель вы преследуете, а также от вашего желания и потенциала.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3994</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3994"/>
		<updated>2007-03-17T23:27:27Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Где искать плагины? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:AMX Mod X]]&lt;br /&gt;
= Общие положения, термины, сокращения и условные обозначения =&lt;br /&gt;
:* HL или HL1 - аббревиатура от Half-Life (часть первая);&lt;br /&gt;
:* Mod - &amp;quot;мод&amp;quot;, модификация - дополнение к чему-либо, как правило, расширяющее/изменяющее функциональность;&lt;br /&gt;
:* HL Engine - &amp;quot;движок&amp;quot; Half-Life - &amp;quot;центральный модуль&amp;quot;, осуществляющий выполнение базовых &amp;quot;общемодовых&amp;quot; задач;&lt;br /&gt;
:* MM - MetaMod - сторонний мод особого типа, является промежуточным звеном в системе &amp;quot;HL движок - HL мод&amp;quot;;&lt;br /&gt;
:* AMXX - аббревиатура от [[AMX Mod X]] - MetaMod plugin (&amp;quot;плагин&amp;quot;), своего рода MetaMod мод;&lt;br /&gt;
:* Map - &amp;quot;карта&amp;quot; - определяет внешний вид территории, на которой происходит игровое действие;&lt;br /&gt;
:* World - &amp;quot;мир&amp;quot; - все пространство, которое занимает карта, а также область, находящаяся за картой;&lt;br /&gt;
:* Spawn - &amp;quot;спавн&amp;quot; - момент, когда игрок появляется в мире, обретая физическое тело;&lt;br /&gt;
:* SinglePlayer - &amp;quot;синглплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать только один игрок;&lt;br /&gt;
:* MultiPlayer - &amp;quot;мультиплеер&amp;quot; - игровой тип, когда одновременно в игре может участвовать несколько игроков;&lt;br /&gt;
:* DM - аббревиатура от Death Match - динамичный мультиплеер тип игры, когда после &amp;quot;смерти&amp;quot; игрока происходит его скорый спавн (&amp;quot;респавн&amp;quot;);&lt;br /&gt;
:* HLDM - аббревиатура от Half-Life Death Match - оригинальный HL мод DM типа;&lt;br /&gt;
:* CS - аббревиатура от Counter-Stirke - наиболее популярный HL мод;&lt;br /&gt;
:* VALVE - кампания, разработчик HL и CS, также редко используется как термин, синонимичный HLDM, но направленный на акцентирование названия директории мода (&amp;quot;valve&amp;quot;);&lt;br /&gt;
:* $MODDIR - способ неявного указания названия корневой директории мода, например: ''cstrike'', ''valve'';&lt;br /&gt;
:* $MMDIR - способ неявного указания относительного пути (относительно пути к $MODDIR) к корневой директории MetaMod, по-умолчанию: ''addons/metamod'';&lt;br /&gt;
:* $AMXMODX - способ неявного указания относительного пути (относительно пути к $MODDIR) к корневой директории AMX Mod X, по-умолчанию: ''addons/amxmodx''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Общие вопросы =&lt;br /&gt;
== Где скачать последнюю версию AMX Mod X? ==&lt;br /&gt;
: Последнюю версию всегда можно скачать на официальном сайте AMX Mod X в [http://www.amxmodx.org/downloads.php разделе закачек].&lt;br /&gt;
&lt;br /&gt;
== А что именно качать? ==&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый AMX Mod X пакет, все AMX Mod X дополнения для HL модов, а также AMXX-Studio (специализированный редактор AMX Mod X плагинов), либо, если готовы произвести установку AMX Mod X вручную, а также не желаете закачивать все существующие AMX Mod X дополнения для HL модов, качайте базовый архив (AMX Mod X Base), а затем дополнение для интересующего вас HL мода. Сама по себе базовая поставка практически во всех случаях будет достаточна только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
== Где искать плагины? ==&lt;br /&gt;
: Предварительно отметим, что условно AMX Mod X плагины можно разделить на следующие категории: стандартные, официально одобренные, официально отклоненные и неофициальные. Одобренные плагины можно искать [http://www.amxmodx.org/compiler.php здесь], или, используя [http://forums.alliedmods.net/search.php поисковую систему официального форума]. В поле '''Search in Forum(s)''' отметьте '''Approved Plugins''', также, зажав клавишу Ctrl, можно отметить интересующие вас секции из подраздела '''High-Traffic Plugins'''. Чтобы искать неофициальные плагины, следует также воспользоваться [http://forums.alliedmods.net/search.php поисковой системой официального форума], правда, в поле '''Search in Forum(s)''' необходимо выбрать '''Unapproved/Old Plugins'''. Если для вас не имеет значения статус плагина, и вы склонны к экспериментам, осуществляйте поиск по категории '''Plugins''', которая включает в себя одобренные, отклоненные, недавно опубликованные, вполне возможно, &amp;quot;сырые&amp;quot; плагины, а также темы-запросы, в которых могут быть &amp;quot;быстро написанные&amp;quot; плагины. Немного поработав с поисковой формой форума, вы легко освоите эту систему. Единственное возможное для некоторых неудобство - практически все описания плагинов написаны на английcком языке. Неофициальные плагины также можно попробовать искать с помощью общеизвестных поисковых систем: Google, Yandex, Rambler и др.&lt;br /&gt;
&lt;br /&gt;
== Сколько плагинов сейчас выпущено под AMX Mod X? ==&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством и надежностью б'''о'''льшая половина из них не белещет. К тому же некоторые плагины, &amp;quot;заброшены&amp;quot; авторами и не обновляются, что приводит даже к несовместимости с новыми версиями AMX Mod X.&lt;br /&gt;
&lt;br /&gt;
== Как устанавливать плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как удалять плагины? ==&lt;br /&gt;
: Обратитесь к [[Ru Configuring AMX Mod X|этой]] статье.&lt;br /&gt;
&lt;br /&gt;
== Как запустить два различных сервера AMX Mod X? ==&lt;br /&gt;
: К примеру, вы хотите запустить два различных сервера из одной cstrike директории на базе различных AMX Mod X/Metamod плагинов, настроек и прочего - это решаемо. Один из примеров для win32 машины приведен ниже:&lt;br /&gt;
:* Создать отдельную AMX Mod X директорию с необходимыми файлами, например: addons/amxmodx2&lt;br /&gt;
:* В addons/amxmodx2/configs/core.ini везде изменить &amp;quot;amxmodx&amp;quot; на &amp;quot;amxmodx2&amp;quot;&lt;br /&gt;
:* Создать отдельный файл загрузки MetaMod плагинов, например: addons/metamod/plugins2.ini&lt;br /&gt;
:* В созданный plugins2.ini файл вписать: win32 addons\amxmodx2\dlls\amxmodx_mm.dll&lt;br /&gt;
:* Создать в директории cstrike файл, например, с именем amxmodx2.cfg, его содержимое должно быть следующим:&lt;br /&gt;
&amp;lt;pre&amp;gt;localinfo mm_pluginsfile &amp;quot;addons/metamod/plugins2.ini&amp;quot;&lt;br /&gt;
localinfo amxx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amxx_cfg &amp;quot;addons/amxmodx2/configs/core.ini&amp;quot;&lt;br /&gt;
localinfo amxx_configsdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amxx_customdir &amp;quot;addons/amxmodx2/custom&amp;quot;&lt;br /&gt;
localinfo amxx_datadir &amp;quot;addons/amxmodx2/data&amp;quot;&lt;br /&gt;
localinfo amxx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_logs &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amxx_modules &amp;quot;addons/amxmodx2/configs/modules.ini&amp;quot;&lt;br /&gt;
localinfo amxx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amxx_plugins &amp;quot;addons/amxmodx2/configs/plugins.ini&amp;quot;&lt;br /&gt;
localinfo amxx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&lt;br /&gt;
localinfo amxx_vault &amp;quot;addons/amxmodx2/data/vault.ini&amp;quot;&lt;br /&gt;
localinfo csstats &amp;quot;addons/amxmodx2/data/csstats.dat&amp;quot;&lt;br /&gt;
localinfo csstats_score &amp;quot;addons/amxmodx2/data/csstats.amxx&amp;quot;&lt;br /&gt;
localinfo amx_basedir &amp;quot;addons/amxmodx2&amp;quot;&lt;br /&gt;
localinfo amx_configdir &amp;quot;addons/amxmodx2/configs&amp;quot;&lt;br /&gt;
localinfo amx_langdir &amp;quot;addons/amxmodx2/data/amxmod-lang&amp;quot;&lt;br /&gt;
localinfo amx_logdir &amp;quot;addons/amxmodx2/logs&amp;quot;&lt;br /&gt;
localinfo amx_modulesdir &amp;quot;addons/amxmodx2/modules&amp;quot;&lt;br /&gt;
localinfo amx_pluginsdir &amp;quot;addons/amxmodx2/plugins&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
:* Теперь второй сервер необходимо будет запускать с параметром командной строки: +exec amxmodx2.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Вопросы по компилированию =&lt;br /&gt;
== Что такое компиляция? ==&lt;br /&gt;
: Это процесс, который переводит текстовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX Mod X, который их исполняет), в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все AMX Mod X плагины должны публиковаться под лицензией GNU General Public License. В случае опубликования плагина лицензия обязывает также публиковать его исходный код. Откомпилированные плагины имеют расширение .amxx. Именно файлы этого типа, а не .sma, должны указываться в файле plugins.ini для последующей корректной загрузки плагина.&lt;br /&gt;
&lt;br /&gt;
== Как компилировать плагины? ==&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
== Компилятор выводит &amp;quot;max. usage is unknown, due to recursion&amp;quot; ==&lt;br /&gt;
: Ничего страшного. Просто компилятор не может вычислить предполагаемый объем памяти, используемый вашим плагином.&lt;br /&gt;
&lt;br /&gt;
== Как упростить процесс компилирования? ==&lt;br /&gt;
: Можно написать стороннюю программу или скрипт, например такой, как пакетный batch файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Вопросы по скриптингу =&lt;br /&gt;
&lt;br /&gt;
== С чего начать? ==&lt;br /&gt;
: С [[Ru Fundamental Basics of AMX Mod X Scripting|фундаментальных основ AMX Mod X скриптинга]].&lt;br /&gt;
&lt;br /&gt;
== А стоит ли вообще начинать? ==&lt;br /&gt;
: В зависимости от того, какую цель вы преследуете, а также от вашего желания и потенциала.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3990</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3990"/>
		<updated>2007-03-16T17:30:02Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Компилятор выводит */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
== Общие положения, сокращения и условные обозначения ==&lt;br /&gt;
:* AMX/X - аббревиатура от [[AMX Mod X]];&lt;br /&gt;
:* CS - мод Counter-Stirke;&lt;br /&gt;
:* HLDM, VALVE - обозначают один и тот же мод, оригинальный, который шел в самой первой поставке игры Half-Life. Обычно подразумевается не одиночаня игра, а мультиплеер - deathmatch;&lt;br /&gt;
:* DM - аббревиатура от Death Match;&lt;br /&gt;
:* $MODDIR - папка, в которой находится тот или иной мод (причем неважно, какой именно), например ''c:\games\valve\cstrike\'';&lt;br /&gt;
:* $AMXMODX - папка, в которой размещена копия AMX/X, например ''c:\games\valve\cstrike\addons\amxmodx'', а с учтом предыдущего обозначения можем переписать так: ''$MODDIR\addons\amxmodx'';&lt;br /&gt;
:* MM - MetaMod;&lt;br /&gt;
:* $MMDIR - папка, в которой размещен плагин MetaMod, например ''$MODDIR\addons\metamod''.&lt;br /&gt;
&lt;br /&gt;
== Общие вопросы ==&lt;br /&gt;
==== Где скачать последнюю версию AMX/X? ====&lt;br /&gt;
: Последнюю версию всегда можно скачать с [http://www.amxmodx.org/downloads.php официального сайта AMX/X].&lt;br /&gt;
&lt;br /&gt;
==== А что именно качать? ====&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый пакет и все дополнения для модов (''студию включает?''), либо, если собираетесь ставить все вручную (а также сэкономить трафик), качайте базовый архив (AMX Mod X Base), а затем дополнение для того мода, в который вы играете или под который планируете делать плагины. Базовая поставка подходит только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
==== Где искать плагины? ====&lt;br /&gt;
: Предварительно отметим, что плагины бывают стандартные, официально одобренные, официально отклоненные и сторонние. Одобренные плагины можно искать [http://www.amxmodx.org/compiler.php здесь], или используя [http://forums.alliedmods.net/search.php поисковую систему официального форума]. В секции '''Search in Forum(s)''' выбирете '''Approved Plugins'''. Чтобы искать неофициальные плагины используйте эту же ссылку на форум, правда в секции '''Search in Forum(s)''' теперь выбирайте '''Unapproved/Old Plugins'''. Если вам все равно, какой статус у плагина и вы склонны к эксперимантам, делайте поиск сразу по категории '''Plugins''', которая включает в себя как одобренные, неодобренные, но и только что опубликованные, вполне возможно &amp;quot;сырые&amp;quot; плагины, плюс затронет &amp;quot;левые&amp;quot; темы. Думаю, немного поработав с поисковой формой на форуме, вы легко освоите эту систему. Единственынй минус - все описания плагинов на английком языке. Сторонние плагины ищите с помощью общеизвестных поисковых систем: Google, Yandex, Rambler и др.&lt;br /&gt;
&lt;br /&gt;
==== Сколько плагинов сейчас выпущено под AMX/X? ====&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством и надежностью большая половина из них не белещет. К тому же многие плагины, выпущенные в 2004-2005 годах, &amp;quot;заброшены&amp;quot; авторами и не обновляются, что приводит даже к несовместимости с новыми версиями AMX/X.&lt;br /&gt;
&lt;br /&gt;
== Вопросы по компилированию ==&lt;br /&gt;
==== Что такое копиляция? ====&lt;br /&gt;
: Это процесс, который переводит тектовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX/X, который их исполняет) в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все плагины должны публиковаться на официальном сайте под лицензией GNU, которая запрещает не выкладывать на всеобщее обозрение исходный код плагинов. Хотя вы не обязаны их там публиковать.&lt;br /&gt;
: Откомпилированные плагины имеют расширение .amxx. Именно эти файлы должны указываться в файле plugins.ini для последующей загрузке во время игры, а не .sma.&lt;br /&gt;
&lt;br /&gt;
==== Как компилировать плагины? ====&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
==== Компилятор выводит max. usage is unknown, due to recursion ====&lt;br /&gt;
: Ничего страшного. Просто компилятор не может вычислить предполагаемый объем памяти, используемый вашим плагинов во время игры.&lt;br /&gt;
&lt;br /&gt;
==== Как упростить процесс компилирования ====&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
== Вопросы по скриптингу ==&lt;br /&gt;
&lt;br /&gt;
==== С чего начать? ====&lt;br /&gt;
:&lt;br /&gt;
==== А стоит вообще заморачиваться? ====&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3989</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3989"/>
		<updated>2007-03-16T17:28:03Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Что такое копиляция? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
== Общие положения, сокращения и условные обозначения ==&lt;br /&gt;
:* AMX/X - аббревиатура от [[AMX Mod X]];&lt;br /&gt;
:* CS - мод Counter-Stirke;&lt;br /&gt;
:* HLDM, VALVE - обозначают один и тот же мод, оригинальный, который шел в самой первой поставке игры Half-Life. Обычно подразумевается не одиночаня игра, а мультиплеер - deathmatch;&lt;br /&gt;
:* DM - аббревиатура от Death Match;&lt;br /&gt;
:* $MODDIR - папка, в которой находится тот или иной мод (причем неважно, какой именно), например ''c:\games\valve\cstrike\'';&lt;br /&gt;
:* $AMXMODX - папка, в которой размещена копия AMX/X, например ''c:\games\valve\cstrike\addons\amxmodx'', а с учтом предыдущего обозначения можем переписать так: ''$MODDIR\addons\amxmodx'';&lt;br /&gt;
:* MM - MetaMod;&lt;br /&gt;
:* $MMDIR - папка, в которой размещен плагин MetaMod, например ''$MODDIR\addons\metamod''.&lt;br /&gt;
&lt;br /&gt;
== Общие вопросы ==&lt;br /&gt;
==== Где скачать последнюю версию AMX/X? ====&lt;br /&gt;
: Последнюю версию всегда можно скачать с [http://www.amxmodx.org/downloads.php официального сайта AMX/X].&lt;br /&gt;
&lt;br /&gt;
==== А что именно качать? ====&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый пакет и все дополнения для модов (''студию включает?''), либо, если собираетесь ставить все вручную (а также сэкономить трафик), качайте базовый архив (AMX Mod X Base), а затем дополнение для того мода, в который вы играете или под который планируете делать плагины. Базовая поставка подходит только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
==== Где искать плагины? ====&lt;br /&gt;
: Предварительно отметим, что плагины бывают стандартные, официально одобренные, официально отклоненные и сторонние. Одобренные плагины можно искать [http://www.amxmodx.org/compiler.php здесь], или используя [http://forums.alliedmods.net/search.php поисковую систему официального форума]. В секции '''Search in Forum(s)''' выбирете '''Approved Plugins'''. Чтобы искать неофициальные плагины используйте эту же ссылку на форум, правда в секции '''Search in Forum(s)''' теперь выбирайте '''Unapproved/Old Plugins'''. Если вам все равно, какой статус у плагина и вы склонны к эксперимантам, делайте поиск сразу по категории '''Plugins''', которая включает в себя как одобренные, неодобренные, но и только что опубликованные, вполне возможно &amp;quot;сырые&amp;quot; плагины, плюс затронет &amp;quot;левые&amp;quot; темы. Думаю, немного поработав с поисковой формой на форуме, вы легко освоите эту систему. Единственынй минус - все описания плагинов на английком языке. Сторонние плагины ищите с помощью общеизвестных поисковых систем: Google, Yandex, Rambler и др.&lt;br /&gt;
&lt;br /&gt;
==== Сколько плагинов сейчас выпущено под AMX/X? ====&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством и надежностью большая половина из них не белещет. К тому же многие плагины, выпущенные в 2004-2005 годах, &amp;quot;заброшены&amp;quot; авторами и не обновляются, что приводит даже к несовместимости с новыми версиями AMX/X.&lt;br /&gt;
&lt;br /&gt;
== Вопросы по компилированию ==&lt;br /&gt;
==== Что такое копиляция? ====&lt;br /&gt;
: Это процесс, который переводит тектовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX/X, который их исполняет) в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все плагины должны публиковаться на официальном сайте под лицензией GNU, которая запрещает не выкладывать на всеобщее обозрение исходный код плагинов. Хотя вы не обязаны их там публиковать.&lt;br /&gt;
: Откомпилированные плагины имеют расширение .amxx. Именно эти файлы должны указываться в файле plugins.ini для последующей загрузке во время игры, а не .sma.&lt;br /&gt;
&lt;br /&gt;
==== Как компилировать плагины? ====&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
==== Компилятор выводит ====&lt;br /&gt;
:&lt;br /&gt;
==== Как упростить процесс компилирования ====&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
== Вопросы по скриптингу ==&lt;br /&gt;
&lt;br /&gt;
==== С чего начать? ====&lt;br /&gt;
:&lt;br /&gt;
==== А стоит вообще заморачиваться? ====&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3988</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3988"/>
		<updated>2007-03-16T17:25:40Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Сколько плагинов сейчас выпущено под AMX/X? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
== Общие положения, сокращения и условные обозначения ==&lt;br /&gt;
:* AMX/X - аббревиатура от [[AMX Mod X]];&lt;br /&gt;
:* CS - мод Counter-Stirke;&lt;br /&gt;
:* HLDM, VALVE - обозначают один и тот же мод, оригинальный, который шел в самой первой поставке игры Half-Life. Обычно подразумевается не одиночаня игра, а мультиплеер - deathmatch;&lt;br /&gt;
:* DM - аббревиатура от Death Match;&lt;br /&gt;
:* $MODDIR - папка, в которой находится тот или иной мод (причем неважно, какой именно), например ''c:\games\valve\cstrike\'';&lt;br /&gt;
:* $AMXMODX - папка, в которой размещена копия AMX/X, например ''c:\games\valve\cstrike\addons\amxmodx'', а с учтом предыдущего обозначения можем переписать так: ''$MODDIR\addons\amxmodx'';&lt;br /&gt;
:* MM - MetaMod;&lt;br /&gt;
:* $MMDIR - папка, в которой размещен плагин MetaMod, например ''$MODDIR\addons\metamod''.&lt;br /&gt;
&lt;br /&gt;
== Общие вопросы ==&lt;br /&gt;
==== Где скачать последнюю версию AMX/X? ====&lt;br /&gt;
: Последнюю версию всегда можно скачать с [http://www.amxmodx.org/downloads.php официального сайта AMX/X].&lt;br /&gt;
&lt;br /&gt;
==== А что именно качать? ====&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый пакет и все дополнения для модов (''студию включает?''), либо, если собираетесь ставить все вручную (а также сэкономить трафик), качайте базовый архив (AMX Mod X Base), а затем дополнение для того мода, в который вы играете или под который планируете делать плагины. Базовая поставка подходит только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
==== Где искать плагины? ====&lt;br /&gt;
: Предварительно отметим, что плагины бывают стандартные, официально одобренные, официально отклоненные и сторонние. Одобренные плагины можно искать [http://www.amxmodx.org/compiler.php здесь], или используя [http://forums.alliedmods.net/search.php поисковую систему официального форума]. В секции '''Search in Forum(s)''' выбирете '''Approved Plugins'''. Чтобы искать неофициальные плагины используйте эту же ссылку на форум, правда в секции '''Search in Forum(s)''' теперь выбирайте '''Unapproved/Old Plugins'''. Если вам все равно, какой статус у плагина и вы склонны к эксперимантам, делайте поиск сразу по категории '''Plugins''', которая включает в себя как одобренные, неодобренные, но и только что опубликованные, вполне возможно &amp;quot;сырые&amp;quot; плагины, плюс затронет &amp;quot;левые&amp;quot; темы. Думаю, немного поработав с поисковой формой на форуме, вы легко освоите эту систему. Единственынй минус - все описания плагинов на английком языке. Сторонние плагины ищите с помощью общеизвестных поисковых систем: Google, Yandex, Rambler и др.&lt;br /&gt;
&lt;br /&gt;
==== Сколько плагинов сейчас выпущено под AMX/X? ====&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством и надежностью большая половина из них не белещет. К тому же многие плагины, выпущенные в 2004-2005 годах, &amp;quot;заброшены&amp;quot; авторами и не обновляются, что приводит даже к несовместимости с новыми версиями AMX/X.&lt;br /&gt;
&lt;br /&gt;
== Вопросы по компилированию ==&lt;br /&gt;
==== Что такое копиляция? ====&lt;br /&gt;
: Это процесс, который переводит тектовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX/X, который их исполняет) в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все плагины должны публиковаться на официальном сайте под лицензией GNU, которая запрещает не выкладывать на всеобщее обозрение исходный код плагинов. Хотя вы не обязаны их там публиковать.&lt;br /&gt;
&lt;br /&gt;
==== Как компилировать плагины? ====&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
==== Компилятор выводит ====&lt;br /&gt;
:&lt;br /&gt;
==== Как упростить процесс компилирования ====&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
== Вопросы по скриптингу ==&lt;br /&gt;
&lt;br /&gt;
==== С чего начать? ====&lt;br /&gt;
:&lt;br /&gt;
==== А стоит вообще заморачиваться? ====&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3987</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3987"/>
		<updated>2007-03-16T17:24:30Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Где искать плагины? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
== Общие положения, сокращения и условные обозначения ==&lt;br /&gt;
:* AMX/X - аббревиатура от [[AMX Mod X]];&lt;br /&gt;
:* CS - мод Counter-Stirke;&lt;br /&gt;
:* HLDM, VALVE - обозначают один и тот же мод, оригинальный, который шел в самой первой поставке игры Half-Life. Обычно подразумевается не одиночаня игра, а мультиплеер - deathmatch;&lt;br /&gt;
:* DM - аббревиатура от Death Match;&lt;br /&gt;
:* $MODDIR - папка, в которой находится тот или иной мод (причем неважно, какой именно), например ''c:\games\valve\cstrike\'';&lt;br /&gt;
:* $AMXMODX - папка, в которой размещена копия AMX/X, например ''c:\games\valve\cstrike\addons\amxmodx'', а с учтом предыдущего обозначения можем переписать так: ''$MODDIR\addons\amxmodx'';&lt;br /&gt;
:* MM - MetaMod;&lt;br /&gt;
:* $MMDIR - папка, в которой размещен плагин MetaMod, например ''$MODDIR\addons\metamod''.&lt;br /&gt;
&lt;br /&gt;
== Общие вопросы ==&lt;br /&gt;
==== Где скачать последнюю версию AMX/X? ====&lt;br /&gt;
: Последнюю версию всегда можно скачать с [http://www.amxmodx.org/downloads.php официального сайта AMX/X].&lt;br /&gt;
&lt;br /&gt;
==== А что именно качать? ====&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый пакет и все дополнения для модов (''студию включает?''), либо, если собираетесь ставить все вручную (а также сэкономить трафик), качайте базовый архив (AMX Mod X Base), а затем дополнение для того мода, в который вы играете или под который планируете делать плагины. Базовая поставка подходит только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
==== Где искать плагины? ====&lt;br /&gt;
: Предварительно отметим, что плагины бывают стандартные, официально одобренные, официально отклоненные и сторонние. Одобренные плагины можно искать [http://www.amxmodx.org/compiler.php здесь], или используя [http://forums.alliedmods.net/search.php поисковую систему официального форума]. В секции '''Search in Forum(s)''' выбирете '''Approved Plugins'''. Чтобы искать неофициальные плагины используйте эту же ссылку на форум, правда в секции '''Search in Forum(s)''' теперь выбирайте '''Unapproved/Old Plugins'''. Если вам все равно, какой статус у плагина и вы склонны к эксперимантам, делайте поиск сразу по категории '''Plugins''', которая включает в себя как одобренные, неодобренные, но и только что опубликованные, вполне возможно &amp;quot;сырые&amp;quot; плагины, плюс затронет &amp;quot;левые&amp;quot; темы. Думаю, немного поработав с поисковой формой на форуме, вы легко освоите эту систему. Единственынй минус - все описания плагинов на английком языке. Сторонние плагины ищите с помощью общеизвестных поисковых систем: Google, Yandex, Rambler и др.&lt;br /&gt;
&lt;br /&gt;
==== Сколько плагинов сейчас выпущено под AMX/X? ====&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством большая половина из них не белещет. У тому же многие плагины, выпущенные в 2004-2005 годах, &amp;quot;заброшены&amp;quot; автором и не обновляются.&lt;br /&gt;
&lt;br /&gt;
== Вопросы по компилированию ==&lt;br /&gt;
==== Что такое копиляция? ====&lt;br /&gt;
: Это процесс, который переводит тектовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX/X, который их исполняет) в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все плагины должны публиковаться на официальном сайте под лицензией GNU, которая запрещает не выкладывать на всеобщее обозрение исходный код плагинов. Хотя вы не обязаны их там публиковать.&lt;br /&gt;
&lt;br /&gt;
==== Как компилировать плагины? ====&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
==== Компилятор выводит ====&lt;br /&gt;
:&lt;br /&gt;
==== Как упростить процесс компилирования ====&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
== Вопросы по скриптингу ==&lt;br /&gt;
&lt;br /&gt;
==== С чего начать? ====&lt;br /&gt;
:&lt;br /&gt;
==== А стоит вообще заморачиваться? ====&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3986</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3986"/>
		<updated>2007-03-16T17:23:21Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Где искать плагины? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
== Общие положения, сокращения и условные обозначения ==&lt;br /&gt;
:* AMX/X - аббревиатура от [[AMX Mod X]];&lt;br /&gt;
:* CS - мод Counter-Stirke;&lt;br /&gt;
:* HLDM, VALVE - обозначают один и тот же мод, оригинальный, который шел в самой первой поставке игры Half-Life. Обычно подразумевается не одиночаня игра, а мультиплеер - deathmatch;&lt;br /&gt;
:* DM - аббревиатура от Death Match;&lt;br /&gt;
:* $MODDIR - папка, в которой находится тот или иной мод (причем неважно, какой именно), например ''c:\games\valve\cstrike\'';&lt;br /&gt;
:* $AMXMODX - папка, в которой размещена копия AMX/X, например ''c:\games\valve\cstrike\addons\amxmodx'', а с учтом предыдущего обозначения можем переписать так: ''$MODDIR\addons\amxmodx'';&lt;br /&gt;
:* MM - MetaMod;&lt;br /&gt;
:* $MMDIR - папка, в которой размещен плагин MetaMod, например ''$MODDIR\addons\metamod''.&lt;br /&gt;
&lt;br /&gt;
== Общие вопросы ==&lt;br /&gt;
==== Где скачать последнюю версию AMX/X? ====&lt;br /&gt;
: Последнюю версию всегда можно скачать с [http://www.amxmodx.org/downloads.php официального сайта AMX/X].&lt;br /&gt;
&lt;br /&gt;
==== А что именно качать? ====&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый пакет и все дополнения для модов (''студию включает?''), либо, если собираетесь ставить все вручную (а также сэкономить трафик), качайте базовый архив (AMX Mod X Base), а затем дополнение для того мода, в который вы играете или под который планируете делать плагины. Базовая поставка подходит только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
==== Где искать плагины? ====&lt;br /&gt;
: Предварительно отметим, что плагины бывают стандартные, официально одобренные, официально отклоненные и сторонние. Одобренные плагины можно искать [http://www.amxmodx.org/compiler.php здесь], или используя поисковую систему официального форума [http://forums.alliedmods.net/search.php здесь]. В секции '''Search in Forum(s)''' выбирете '''Approved Plugins'''. Чтобы искать неофициальные плагины используйте эту же ссылку на форум, правда в секции '''Search in Forum(s)''' теперь выбирайте '''Unapproved/Old Plugins'''. Если вам все равно, какой статус у плагина и вы склонны к эксперимантам, делайте поиск сразу по категории ''Plugins''', которая включает в себя как одобренные, неодобренные, но и только что опубликованные, вполне возможно &amp;quot;сырые&amp;quot; плагины, плюс затронет &amp;quot;левые&amp;quot; темы. Думаю, немного поработав с поисковой формой на форуме, вы легко освоите эту систему. Единственынй минус - все описания плагинов на английком языке. Сторонние плагины ищите с помощью общеизвестных поисковых систем: Google, Yandex, Rambler и др.&lt;br /&gt;
&lt;br /&gt;
==== Сколько плагинов сейчас выпущено под AMX/X? ====&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством большая половина из них не белещет. У тому же многие плагины, выпущенные в 2004-2005 годах, &amp;quot;заброшены&amp;quot; автором и не обновляются.&lt;br /&gt;
&lt;br /&gt;
== Вопросы по компилированию ==&lt;br /&gt;
==== Что такое копиляция? ====&lt;br /&gt;
: Это процесс, который переводит тектовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX/X, который их исполняет) в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все плагины должны публиковаться на официальном сайте под лицензией GNU, которая запрещает не выкладывать на всеобщее обозрение исходный код плагинов. Хотя вы не обязаны их там публиковать.&lt;br /&gt;
&lt;br /&gt;
==== Как компилировать плагины? ====&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
==== Компилятор выводит ====&lt;br /&gt;
:&lt;br /&gt;
==== Как упростить процесс компилирования ====&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
== Вопросы по скриптингу ==&lt;br /&gt;
&lt;br /&gt;
==== С чего начать? ====&lt;br /&gt;
:&lt;br /&gt;
==== А стоит вообще заморачиваться? ====&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3985</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3985"/>
		<updated>2007-03-16T17:13:54Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Общие положения, сокращения и условные обозначения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
== Общие положения, сокращения и условные обозначения ==&lt;br /&gt;
:* AMX/X - аббревиатура от [[AMX Mod X]];&lt;br /&gt;
:* CS - мод Counter-Stirke;&lt;br /&gt;
:* HLDM, VALVE - обозначают один и тот же мод, оригинальный, который шел в самой первой поставке игры Half-Life. Обычно подразумевается не одиночаня игра, а мультиплеер - deathmatch;&lt;br /&gt;
:* DM - аббревиатура от Death Match;&lt;br /&gt;
:* $MODDIR - папка, в которой находится тот или иной мод (причем неважно, какой именно), например ''c:\games\valve\cstrike\'';&lt;br /&gt;
:* $AMXMODX - папка, в которой размещена копия AMX/X, например ''c:\games\valve\cstrike\addons\amxmodx'', а с учтом предыдущего обозначения можем переписать так: ''$MODDIR\addons\amxmodx'';&lt;br /&gt;
:* MM - MetaMod;&lt;br /&gt;
:* $MMDIR - папка, в которой размещен плагин MetaMod, например ''$MODDIR\addons\metamod''.&lt;br /&gt;
&lt;br /&gt;
== Общие вопросы ==&lt;br /&gt;
==== Где скачать последнюю версию AMX/X? ====&lt;br /&gt;
: Последнюю версию всегда можно скачать с [http://www.amxmodx.org/downloads.php официального сайта AMX/X].&lt;br /&gt;
&lt;br /&gt;
==== А что именно качать? ====&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый пакет и все дополнения для модов (''студию включает?''), либо, если собираетесь ставить все вручную (а также сэкономить трафик), качайте базовый архив (AMX Mod X Base), а затем дополнение для того мода, в который вы играете или под который планируете делать плагины. Базовая поставка подходит только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
==== Где искать плагины? ====&lt;br /&gt;
: П&lt;br /&gt;
&lt;br /&gt;
==== Сколько плагинов сейчас выпущено под AMX/X? ====&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством большая половина из них не белещет. У тому же многие плагины, выпущенные в 2004-2005 годах, &amp;quot;заброшены&amp;quot; автором и не обновляются.&lt;br /&gt;
&lt;br /&gt;
== Вопросы по компилированию ==&lt;br /&gt;
==== Что такое копиляция? ====&lt;br /&gt;
: Это процесс, который переводит тектовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX/X, который их исполняет) в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все плагины должны публиковаться на официальном сайте под лицензией GNU, которая запрещает не выкладывать на всеобщее обозрение исходный код плагинов. Хотя вы не обязаны их там публиковать.&lt;br /&gt;
&lt;br /&gt;
==== Как компилировать плагины? ====&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
==== Компилятор выводит ====&lt;br /&gt;
:&lt;br /&gt;
==== Как упростить процесс компилирования ====&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
== Вопросы по скриптингу ==&lt;br /&gt;
&lt;br /&gt;
==== С чего начать? ====&lt;br /&gt;
:&lt;br /&gt;
==== А стоит вообще заморачиваться? ====&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3984</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3984"/>
		<updated>2007-03-16T17:13:23Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Общие положения, сокращения и условные обозначения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
== Общие положения, сокращения и условные обозначения ==&lt;br /&gt;
:* AMX/X - аббревиатура от [[AMX Mod X]];&lt;br /&gt;
:* CS - мод Counter-Stirke;&lt;br /&gt;
:* HLDM, VALVE - обозначают один и тот же мод, оригинальный, который шел в самой первой поставке игры Half-Life. Обычно подразумевается не одиночаня игра, а мультиплеер - deathmatch;&lt;br /&gt;
:* DM - аббревиатура от Death Match;&lt;br /&gt;
:* $MODDIR - папка, в которой находится тот или иной мод (причем неважно, какой именно), например ''c:\games\valve\cstrike\'';&lt;br /&gt;
:* $AMXMODX - папка, в которой размещена копия AMX/X, например ''c:\games\valve\cstrike\addons\amxmodx'', а с учтом предыдущего обозначения можем переписать так: '$MODDIR\addons\amxmodx';&lt;br /&gt;
:* MM - MetaMod;&lt;br /&gt;
:* $MMDIR - папка, в которой размещен плагин MetaMod, например ''$MODDIR\addons\metamod''.&lt;br /&gt;
&lt;br /&gt;
== Общие вопросы ==&lt;br /&gt;
==== Где скачать последнюю версию AMX/X? ====&lt;br /&gt;
: Последнюю версию всегда можно скачать с [http://www.amxmodx.org/downloads.php официального сайта AMX/X].&lt;br /&gt;
&lt;br /&gt;
==== А что именно качать? ====&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый пакет и все дополнения для модов (''студию включает?''), либо, если собираетесь ставить все вручную (а также сэкономить трафик), качайте базовый архив (AMX Mod X Base), а затем дополнение для того мода, в который вы играете или под который планируете делать плагины. Базовая поставка подходит только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
==== Где искать плагины? ====&lt;br /&gt;
: П&lt;br /&gt;
&lt;br /&gt;
==== Сколько плагинов сейчас выпущено под AMX/X? ====&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством большая половина из них не белещет. У тому же многие плагины, выпущенные в 2004-2005 годах, &amp;quot;заброшены&amp;quot; автором и не обновляются.&lt;br /&gt;
&lt;br /&gt;
== Вопросы по компилированию ==&lt;br /&gt;
==== Что такое копиляция? ====&lt;br /&gt;
: Это процесс, который переводит тектовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX/X, который их исполняет) в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все плагины должны публиковаться на официальном сайте под лицензией GNU, которая запрещает не выкладывать на всеобщее обозрение исходный код плагинов. Хотя вы не обязаны их там публиковать.&lt;br /&gt;
&lt;br /&gt;
==== Как компилировать плагины? ====&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
==== Компилятор выводит ====&lt;br /&gt;
:&lt;br /&gt;
==== Как упростить процесс компилирования ====&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
== Вопросы по скриптингу ==&lt;br /&gt;
&lt;br /&gt;
==== С чего начать? ====&lt;br /&gt;
:&lt;br /&gt;
==== А стоит вообще заморачиваться? ====&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3983</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3983"/>
		<updated>2007-03-16T17:11:20Z</updated>

		<summary type="html">&lt;p&gt;Slogic: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
== Общие положения, сокращения и условные обозначения ==&lt;br /&gt;
:* AMX/X - аббревиатура от [[AMX Mod X]];&lt;br /&gt;
:* CS - мод Counter-Stirke;&lt;br /&gt;
:* HLDM, VALVE - обозначают один и тот же мод, оригинальный, который шел в самой первой поставке игры Half-Life. Обычно подразумевается не одиночаня игра, а мультиплеер - deathmatch;&lt;br /&gt;
:* DM - аббревиатура от Death Match;&lt;br /&gt;
:* $MODDIR - папка, в которой находится тот или иной мод (причем неважно, какой именно), например ''c:\games\valve\cstrike\'';&lt;br /&gt;
:* $AMXMODX - папка, в которой размещена копия AMX/X, например 'c:\games\valve\cstrike\addons\amxmodx'.&lt;br /&gt;
&lt;br /&gt;
== Общие вопросы ==&lt;br /&gt;
==== Где скачать последнюю версию AMX/X? ====&lt;br /&gt;
: Последнюю версию всегда можно скачать с [http://www.amxmodx.org/downloads.php официального сайта AMX/X].&lt;br /&gt;
&lt;br /&gt;
==== А что именно качать? ====&lt;br /&gt;
: Качайте либо инсталлятор (AMX Mod X Full Installer), который включает базовый пакет и все дополнения для модов (''студию включает?''), либо, если собираетесь ставить все вручную (а также сэкономить трафик), качайте базовый архив (AMX Mod X Base), а затем дополнение для того мода, в который вы играете или под который планируете делать плагины. Базовая поставка подходит только для HLDM мода.&lt;br /&gt;
&lt;br /&gt;
==== Где искать плагины? ====&lt;br /&gt;
: П&lt;br /&gt;
&lt;br /&gt;
==== Сколько плагинов сейчас выпущено под AMX/X? ====&lt;br /&gt;
: &amp;quot;Тонны&amp;quot; плагинов. Но, к сожалению, качеством большая половина из них не белещет. У тому же многие плагины, выпущенные в 2004-2005 годах, &amp;quot;заброшены&amp;quot; автором и не обновляются.&lt;br /&gt;
&lt;br /&gt;
== Вопросы по компилированию ==&lt;br /&gt;
==== Что такое копиляция? ====&lt;br /&gt;
: Это процесс, который переводит тектовые файлы (*.sma), содержащие исходный код (т.е. инструкции для AMX/X, который их исполняет) в формат, более пригодный для исполнения.  За счет этого скорость выполнения плагинов возрастает многократно, упрощается разработка &amp;quot;движка&amp;quot;, который эти плагины исполняет, а также в некотором смысле защищается авторский код. Почему в &amp;quot;некотором смысле&amp;quot;? Потому что все плагины должны публиковаться на официальном сайте под лицензией GNU, которая запрещает не выкладывать на всеобщее обозрение исходный код плагинов. Хотя вы не обязаны их там публиковать.&lt;br /&gt;
&lt;br /&gt;
==== Как компилировать плагины? ====&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
==== Компилятор выводит ====&lt;br /&gt;
:&lt;br /&gt;
==== Как упростить процесс компилирования ====&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
== Вопросы по скриптингу ==&lt;br /&gt;
&lt;br /&gt;
==== С чего начать? ====&lt;br /&gt;
:&lt;br /&gt;
==== А стоит вообще заморачиваться? ====&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3982</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3982"/>
		<updated>2007-03-16T16:57:29Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Общие положения и сокращения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общие положения, сокращения и условные обозначения ==&lt;br /&gt;
:* AMX/X - аббревиатура от [[AMX Mod X]]&lt;br /&gt;
:* CS - мод Counter-Stirke&lt;br /&gt;
:* HLDM, VALVE - обозначают один и тот же мод, оригинальный, который шел в самой первой поставке игры Half-Life; обычно подразумевается не одиночаня игра, а мультиплеер - deathmatch&lt;br /&gt;
:* DM - фббревиатура от Death Match&lt;br /&gt;
:* $MODDIR - папка, в которой находится тот или иной мод (причем неважно, какой именно), например ''c:\games\valve\cstrike\''.&lt;br /&gt;
:* $AMXMODX - папка, в которой размещена копия AMX/X, например 'c:\games\valve\cstrike\addons\amxmodx'&lt;br /&gt;
&lt;br /&gt;
== Общие вопросы ==&lt;br /&gt;
==== Где скачать последнюю версию AMX/X? ====&lt;br /&gt;
==== Где искать плагины? ====&lt;br /&gt;
&lt;br /&gt;
== Вопросы по компилированию ==&lt;br /&gt;
==== Что такое копиляция? ====&lt;br /&gt;
:&lt;br /&gt;
==== Как компилировать плагины? ====&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
==== Компилятор выводит ====&lt;br /&gt;
:&lt;br /&gt;
==== Как упростить процесс компилирования ====&lt;br /&gt;
:&lt;br /&gt;
== Вопросы по скриптингу ==&lt;br /&gt;
&lt;br /&gt;
==== С чего начать? ====&lt;br /&gt;
:&lt;br /&gt;
==== А стоит вообще заморачиваться? ====&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3981</id>
		<title>Ru AMX Mod X FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_AMX_Mod_X_FAQ&amp;diff=3981"/>
		<updated>2007-03-16T16:52:30Z</updated>

		<summary type="html">&lt;p&gt;Slogic: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общие положения и сокращения ==&lt;br /&gt;
:* $MODDIR - папка, в которой находится тот или иной мод&lt;br /&gt;
:* $AMXMODX - &lt;br /&gt;
&lt;br /&gt;
== Общие вопросы ==&lt;br /&gt;
==== Где скачать последнюю версию AMX/X? ====&lt;br /&gt;
==== Где искать плагины? ====&lt;br /&gt;
&lt;br /&gt;
== Вопросы по компилированию ==&lt;br /&gt;
==== Что такое копиляция? ====&lt;br /&gt;
:&lt;br /&gt;
==== Как компилировать плагины? ====&lt;br /&gt;
: Базовую информацию вы можете найти на [[Ru Compiling Plugins (AMX Mod X)|этой]] странице.&lt;br /&gt;
&lt;br /&gt;
==== Компилятор выводит ====&lt;br /&gt;
:&lt;br /&gt;
==== Как упростить процесс компилирования ====&lt;br /&gt;
:&lt;br /&gt;
== Вопросы по скриптингу ==&lt;br /&gt;
&lt;br /&gt;
==== С чего начать? ====&lt;br /&gt;
:&lt;br /&gt;
==== А стоит вообще заморачиваться? ====&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Button_constants_(AMX_Mod_X)&amp;diff=3875</id>
		<title>Ru Button constants (AMX Mod X)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Button_constants_(AMX_Mod_X)&amp;diff=3875"/>
		<updated>2007-01-25T14:02:46Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Реализация */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:Scripting (AMX Mod X)]]&lt;br /&gt;
=Кнопочные константы=&lt;br /&gt;
&lt;br /&gt;
Просмотреть оригинал статьи (англ.): [[Button constants (AMX Mod X)]]&lt;br /&gt;
&lt;br /&gt;
=Использование=&lt;br /&gt;
&lt;br /&gt;
Кнопочные константы обычно используются для того, чтобы &amp;quot;поймать&amp;quot; момент, когда игрок пытается совершить какое-либо действие, нажимая на кнопки, &amp;quot;привязанные&amp;quot; к таким командам, как +attack, +use и так далее с помощью команды [[cmd_bind|bind]]. Метод используется потому, что HL &amp;quot;движок&amp;quot;  не может &amp;quot;поймать&amp;quot; +/-команды стандартным регистрированием, если их реализация выполнена в самом движке.&lt;br /&gt;
&lt;br /&gt;
Например, это будет работать:&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_concmd(&amp;quot;+explode&amp;quot;,&amp;quot;explode&amp;quot;);&amp;lt;/pawn&amp;gt;&lt;br /&gt;
А это - нет:&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_concmd(&amp;quot;+attack&amp;quot;,&amp;quot;hook_attack&amp;quot;);&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Константы=&lt;br /&gt;
&lt;br /&gt;
Полный список всех констант вы можете найти [http://amxmodx.org/funcwiki.php?go=module&amp;amp;id=3#const_buttons здесь].&lt;br /&gt;
&lt;br /&gt;
=Реализация=&lt;br /&gt;
&lt;br /&gt;
Вот, например, один из вариантов, как определить, нажимает ли игрок кнопку атаки или нет:&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
#include &amp;lt;engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	register_plugin(&amp;quot;Attack Test&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Hawk552&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public client_PreThink(id)&lt;br /&gt;
{&lt;br /&gt;
	if(entity_get_int(id, EV_INT_BUTTON) &amp;amp; IN_ATTACK)&lt;br /&gt;
	{&lt;br /&gt;
		// do something&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что используется битовый оператор &amp;amp;, в отличии от логического оператора &amp;amp;&amp;amp;. Оператор &amp;amp; проверяет, содержится ли бит после оператора в бите до него, т.е. в данном случае проверяется, есть ли среди нажатых кнопок игрока кнопка IN_ATTACK.&lt;br /&gt;
&lt;br /&gt;
Чтобы заставить игрока эмулировать нажатие кнопки, можно поступить следующим образом:&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
#include &amp;lt;engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	register_plugin(&amp;quot;Attack Test&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Hawk552&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public client_PreThink(id)&lt;br /&gt;
{&lt;br /&gt;
	entity_set_int(id,EV_INT_button,entity_get_int(id,EV_INT_button) | IN_ATTACK);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этот пример будет выставлять флаг кнопки &amp;quot;атака&amp;quot; в положение &amp;quot;ВКЛ&amp;quot; каждый раз, когда рендерится entity игрока. Т.е. мы получаем все кнопки, нажатые в данный момент, и как бы прибавляем кнопку атаки.&lt;br /&gt;
&lt;br /&gt;
Чтобы &amp;quot;поймать&amp;quot; кнопки игрока, а потом &amp;quot;вычесть&amp;quot; какую либо кнопку, можно использовать следующий метод:&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
#include &amp;lt;engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	register_plugin(&amp;quot;Attack Test&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Hawk552&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public client_PreThink(id)&lt;br /&gt;
{&lt;br /&gt;
	entity_set_int(id,EV_INT_button,entity_get_int(id,EV_INT_button) &amp;amp; ~IN_ATTACK);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например, клиент прыгает (IN_JUMP) и атакует (IN_ATTACK) одновременно, функция entity_get_int(id,EV_INT_button) будет возвращать бит сумму IN_ATTACK и IN_JUMP. Используя конструкцию &amp;amp; ~БИТ мы как бы удаляем конкретное значение бита, в данном случае IN_ATTACK. Таким образом, в итоге получим только IN_JUMP.&lt;br /&gt;
&lt;br /&gt;
=Замечания=&lt;br /&gt;
&lt;br /&gt;
Важно понимать, что нажатие какой-либо кнопки не всегда означает, что в это время происходит конкретное действие. Например, если выстрелить из пистолета и не отпускать кнопку атаки - пуля вылетит, атака закончится и не возобновится, т.к. пистолет не является автоматическим оружием, но, т.к. кнопка все еще будет нажата, то, используя вышеприведенный метод, мы получим активное состояние кнопки IN_ATTACK, хотя атаки как таковой в данный момент не осуществляется.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Более наглядный пример с прыжком. Представьте, что вы прыгнули и, не отпуская кнопки прыжка, опустились на землю. Второго прыжка не произойдет, т.к. для этого нужно отпустить кнопку и нажать ее снова. Таким образом, нажатая кнопка прыжка не говорит о том, что в данный момент вы находитесь в состоянии прыжка. Как уже было отмечено, это относится и к другим кнопкам. Поэтому, в подавляющем большинстве случаев вы не должны делать проверку на наличие нажатой кнопки, если хотите определить, совершает ли игрок соответствующее действие или нет, для этого существуют другие методы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
По большому счету метод, описанный в данной статье, может быть эффективен только для блокировки или эмуляции атаки, хотя для этого есть еще более эффективные методы. Описанный метод не может быть применим к блокировке подавляющего большинства кнопок: для этого существуют другие методы ''(TODO: указать здесь ссылку на эти методы)''.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Button_constants_(AMX_Mod_X)&amp;diff=3874</id>
		<title>Ru Button constants (AMX Mod X)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Button_constants_(AMX_Mod_X)&amp;diff=3874"/>
		<updated>2007-01-25T13:31:49Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Использование */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:Scripting (AMX Mod X)]]&lt;br /&gt;
=Кнопочные константы=&lt;br /&gt;
&lt;br /&gt;
Просмотреть оригинал статьи (англ.): [[Button constants (AMX Mod X)]]&lt;br /&gt;
&lt;br /&gt;
=Использование=&lt;br /&gt;
&lt;br /&gt;
Кнопочные константы обычно используются для того, чтобы &amp;quot;поймать&amp;quot; момент, когда игрок пытается совершить какое-либо действие, нажимая на кнопки, &amp;quot;привязанные&amp;quot; к таким командам, как +attack, +use и так далее с помощью команды [[cmd_bind|bind]]. Метод используется потому, что HL &amp;quot;движок&amp;quot;  не может &amp;quot;поймать&amp;quot; +/-команды стандартным регистрированием, если их реализация выполнена в самом движке.&lt;br /&gt;
&lt;br /&gt;
Например, это будет работать:&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_concmd(&amp;quot;+explode&amp;quot;,&amp;quot;explode&amp;quot;);&amp;lt;/pawn&amp;gt;&lt;br /&gt;
А это - нет:&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_concmd(&amp;quot;+attack&amp;quot;,&amp;quot;hook_attack&amp;quot;);&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Константы=&lt;br /&gt;
&lt;br /&gt;
Полный список всех констант вы можете найти [http://amxmodx.org/funcwiki.php?go=module&amp;amp;id=3#const_buttons здесь].&lt;br /&gt;
&lt;br /&gt;
=Реализация=&lt;br /&gt;
&lt;br /&gt;
Вот, например, один из вариантов, как оперделить, нажимает ли игрок кнопку атаки или нет:&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
#include &amp;lt;engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	register_plugin(&amp;quot;Attack Test&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Hawk552&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public client_PreThink(id)&lt;br /&gt;
{&lt;br /&gt;
	if(entity_get_int(id, EV_INT_BUTTON) &amp;amp; IN_ATTACK)&lt;br /&gt;
	{&lt;br /&gt;
		// do something&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что используется битовый оператор &amp;amp;, в отличии от логического оператора &amp;amp;&amp;amp;. Оператор &amp;amp; проверяет, содержится ли бит после оператора в бите до него, т.е. в данном случае проверяется, есть ли среди нажатых кнопок игрока кнопка IN_ATTACK.&lt;br /&gt;
&lt;br /&gt;
Чтобы заставить игрока эмулировать нажатие кнопки, можно поступить следующим образом:&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
#include &amp;lt;engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	register_plugin(&amp;quot;Attack Test&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Hawk552&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public client_PreThink(id)&lt;br /&gt;
{&lt;br /&gt;
	entity_set_int(id,EV_INT_button,entity_get_int(id,EV_INT_button) | IN_ATTACK);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этот пример будет выставлять флаг кнопки &amp;quot;атака&amp;quot; в положение &amp;quot;ВКЛ&amp;quot; каждый раз, когда рендерится entity игрока. Т.е. мы получаем все кнопки, нажатые в данный момент, и как бы прибавляем кнопку атаки.&lt;br /&gt;
&lt;br /&gt;
Чтобы &amp;quot;поймать&amp;quot; кнопки игрока, а потом &amp;quot;вычесть&amp;quot; какую либо кнопку, можно использовать следующий метод:&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
#include &amp;lt;engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	register_plugin(&amp;quot;Attack Test&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Hawk552&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public client_PreThink(id)&lt;br /&gt;
{&lt;br /&gt;
	entity_set_int(id,EV_INT_button,entity_get_int(id,EV_INT_button) &amp;amp; ~IN_ATTACK);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например, клиент прыгает (IN_JUMP) и атакует (IN_ATTACK) одновременно, функция entity_get_int(id,EV_INT_button) будет возвращать бит сумму IN_ATTACK и IN_JUMP. Используя конструкцию &amp;amp; ~БИТ мы как бы удаляем конкретное значение бита, в данном случае IN_ATTACK. Таким образом, в итоге получим только IN_JUMP.&lt;br /&gt;
&lt;br /&gt;
=Замечания=&lt;br /&gt;
&lt;br /&gt;
Важно понимать, что нажатие какой-либо кнопки не всегда означает, что в это время происходит конкретное действие. Например, если выстрелить из пистолета и не отпускать кнопку атаки - пуля вылетит, атака закончится и не возобновится, т.к. пистолет не является автоматическим оружием, но, т.к. кнопка все еще будет нажата, то, используя вышеприведенный метод, мы получим активное состояние кнопки IN_ATTACK, хотя атаки как таковой в данный момент не осуществляется.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Более наглядный пример с прыжком. Представьте, что вы прыгнули и, не отпуская кнопки прыжка, опустились на землю. Второго прыжка не произойдет, т.к. для этого нужно отпустить кнопку и нажать ее снова. Таким образом, нажатая кнопка прыжка не говорит о том, что в данный момент вы находитесь в состоянии прыжка. Как уже было отмечено, это относится и к другим кнопкам. Поэтому, в подавляющем большинстве случаев вы не должны делать проверку на наличие нажатой кнопки, если хотите определить, совершает ли игрок соответствующее действие или нет, для этого существуют другие методы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
По большому счету метод, описанный в данной статье, может быть эффективен только для блокировки или эмуляции атаки, хотя для этого есть еще более эффективные методы. Описанный метод не может быть применим к блокировке подавляющего большинства кнопок: для этого существуют другие методы ''(TODO: указать здесь ссылку на эти методы)''.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Button_constants_(AMX_Mod_X)&amp;diff=3873</id>
		<title>Ru Button constants (AMX Mod X)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Button_constants_(AMX_Mod_X)&amp;diff=3873"/>
		<updated>2007-01-25T13:31:30Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Использование */ more clear&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:Scripting (AMX Mod X)]]&lt;br /&gt;
=Кнопочные константы=&lt;br /&gt;
&lt;br /&gt;
Просмотреть оригинал статьи (англ.): [[Button constants (AMX Mod X)]]&lt;br /&gt;
&lt;br /&gt;
=Использование=&lt;br /&gt;
&lt;br /&gt;
Кнопочные константы обычно используются для того, чтобы &amp;quot;поймать&amp;quot; момент, когда игрок пытается совершить какое-либо действие, нажимая на кнопки, &amp;quot;привязанные&amp;quot; к таким командам, как +attack, +use и так далее с помощью команды [[|cmd_bind|bind]]. Метод используется потому, что HL &amp;quot;движок&amp;quot;  не может &amp;quot;поймать&amp;quot; +/-команды стандартным регистрированием, если их реализация выполнена в самом движке.&lt;br /&gt;
&lt;br /&gt;
Например, это будет работать:&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_concmd(&amp;quot;+explode&amp;quot;,&amp;quot;explode&amp;quot;);&amp;lt;/pawn&amp;gt;&lt;br /&gt;
А это - нет:&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_concmd(&amp;quot;+attack&amp;quot;,&amp;quot;hook_attack&amp;quot;);&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Константы=&lt;br /&gt;
&lt;br /&gt;
Полный список всех констант вы можете найти [http://amxmodx.org/funcwiki.php?go=module&amp;amp;id=3#const_buttons здесь].&lt;br /&gt;
&lt;br /&gt;
=Реализация=&lt;br /&gt;
&lt;br /&gt;
Вот, например, один из вариантов, как оперделить, нажимает ли игрок кнопку атаки или нет:&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
#include &amp;lt;engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	register_plugin(&amp;quot;Attack Test&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Hawk552&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public client_PreThink(id)&lt;br /&gt;
{&lt;br /&gt;
	if(entity_get_int(id, EV_INT_BUTTON) &amp;amp; IN_ATTACK)&lt;br /&gt;
	{&lt;br /&gt;
		// do something&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что используется битовый оператор &amp;amp;, в отличии от логического оператора &amp;amp;&amp;amp;. Оператор &amp;amp; проверяет, содержится ли бит после оператора в бите до него, т.е. в данном случае проверяется, есть ли среди нажатых кнопок игрока кнопка IN_ATTACK.&lt;br /&gt;
&lt;br /&gt;
Чтобы заставить игрока эмулировать нажатие кнопки, можно поступить следующим образом:&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
#include &amp;lt;engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	register_plugin(&amp;quot;Attack Test&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Hawk552&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public client_PreThink(id)&lt;br /&gt;
{&lt;br /&gt;
	entity_set_int(id,EV_INT_button,entity_get_int(id,EV_INT_button) | IN_ATTACK);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этот пример будет выставлять флаг кнопки &amp;quot;атака&amp;quot; в положение &amp;quot;ВКЛ&amp;quot; каждый раз, когда рендерится entity игрока. Т.е. мы получаем все кнопки, нажатые в данный момент, и как бы прибавляем кнопку атаки.&lt;br /&gt;
&lt;br /&gt;
Чтобы &amp;quot;поймать&amp;quot; кнопки игрока, а потом &amp;quot;вычесть&amp;quot; какую либо кнопку, можно использовать следующий метод:&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
#include &amp;lt;engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	register_plugin(&amp;quot;Attack Test&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Hawk552&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public client_PreThink(id)&lt;br /&gt;
{&lt;br /&gt;
	entity_set_int(id,EV_INT_button,entity_get_int(id,EV_INT_button) &amp;amp; ~IN_ATTACK);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например, клиент прыгает (IN_JUMP) и атакует (IN_ATTACK) одновременно, функция entity_get_int(id,EV_INT_button) будет возвращать бит сумму IN_ATTACK и IN_JUMP. Используя конструкцию &amp;amp; ~БИТ мы как бы удаляем конкретное значение бита, в данном случае IN_ATTACK. Таким образом, в итоге получим только IN_JUMP.&lt;br /&gt;
&lt;br /&gt;
=Замечания=&lt;br /&gt;
&lt;br /&gt;
Важно понимать, что нажатие какой-либо кнопки не всегда означает, что в это время происходит конкретное действие. Например, если выстрелить из пистолета и не отпускать кнопку атаки - пуля вылетит, атака закончится и не возобновится, т.к. пистолет не является автоматическим оружием, но, т.к. кнопка все еще будет нажата, то, используя вышеприведенный метод, мы получим активное состояние кнопки IN_ATTACK, хотя атаки как таковой в данный момент не осуществляется.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Более наглядный пример с прыжком. Представьте, что вы прыгнули и, не отпуская кнопки прыжка, опустились на землю. Второго прыжка не произойдет, т.к. для этого нужно отпустить кнопку и нажать ее снова. Таким образом, нажатая кнопка прыжка не говорит о том, что в данный момент вы находитесь в состоянии прыжка. Как уже было отмечено, это относится и к другим кнопкам. Поэтому, в подавляющем большинстве случаев вы не должны делать проверку на наличие нажатой кнопки, если хотите определить, совершает ли игрок соответствующее действие или нет, для этого существуют другие методы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
По большому счету метод, описанный в данной статье, может быть эффективен только для блокировки или эмуляции атаки, хотя для этого есть еще более эффективные методы. Описанный метод не может быть применим к блокировке подавляющего большинства кнопок: для этого существуют другие методы ''(TODO: указать здесь ссылку на эти методы)''.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Using_New_Menu_System&amp;diff=3867</id>
		<title>Ru Using New Menu System</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Using_New_Menu_System&amp;diff=3867"/>
		<updated>2007-01-23T12:36:30Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Завершение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:Scripting (AMX Mod X)]]&lt;br /&gt;
&lt;br /&gt;
= Введение =&lt;br /&gt;
Это статья поможет вам разобраться в новой системе меню.&lt;br /&gt;
&lt;br /&gt;
= Урок по созданию меню =&lt;br /&gt;
Давайте попробуем воспользоваться новой системмой меню. Мы пройдем через этоу простую инструкцию и создадим простое голосование смены карты.&lt;br /&gt;
&lt;br /&gt;
=== Заголовочные файлы ===&lt;br /&gt;
Как обычно мы начинаем с добавления необходимых заголовочных файлов&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Глобальные переменные ===&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
new g_Menu;	// Переменная обработки главного меню&lt;br /&gt;
new g_Votes[3];	// Сохраняем голосования Да как 1, No как 2&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь мы создали 2 глобальные переменные. Одна будет содержать указатель на ваше меню, другая будет хранить результаты голосования. Голоса 'За' будут сохранены в g_Votes[1], а 'Против' - в g_Votes[2]. g_Votes[0] - не используется(?).&lt;br /&gt;
&lt;br /&gt;
=== Регистрируем Плагин и Меню ===&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	// Регистрируем ваш плагин&lt;br /&gt;
	register_plugin(&amp;quot;Vote Menu&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Freecode&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Регистрируем меню смены карты&lt;br /&gt;
	g_Menu = menu_create(&amp;quot;Change Level?&amp;quot;,&amp;quot;menu_handle&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	register_clcmd(&amp;quot;amx_startvote&amp;quot;,&amp;quot;startvote&amp;quot;,ADMIN_CFG,&amp;quot;Gaben&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Теперь нам надо создать наше меню&lt;br /&gt;
	build_menu();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lets break this down. &lt;br /&gt;
&lt;br /&gt;
*Регистрирует ваш плагин&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_plugin(&amp;quot;Vote Menu&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Freecode&amp;quot;);&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*g_Menu - Указатель на ваше меню. Это будет установлено после вызова menu_create.&lt;br /&gt;
&amp;lt;pawn&amp;gt;g_Menu = menu_create(&amp;quot;Change Level?&amp;quot;,&amp;quot;menu_handle&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//menu_create ( title[], handler[], ml=0 )&lt;br /&gt;
//title[] - Заголовок меню&lt;br /&gt;
//handler[] - Эта функция будет вызвана когда будет нажата клавиша в вашем меню.&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Мы добавили эту команду. Она начинает ваше голосование.&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_clcmd(&amp;quot;amx_startvote&amp;quot;,&amp;quot;startvote&amp;quot;,ADMIN_CFG,&amp;quot;Gaben&amp;quot;);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Это вызов функции. build_menu() функция создает ваше меню.&lt;br /&gt;
&amp;lt;pawn&amp;gt;build_menu();&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Создение меню ===&lt;br /&gt;
Конструирование заключается в добавлении пунктов в ваше меню. Прежде чем начали добавлять пункты, мы должны взглянуть на &lt;br /&gt;
menu_additem .&lt;br /&gt;
&amp;lt;pawn&amp;gt;menu_additem ( menu, const name[], const command[], paccess=0, callback=-1 )&amp;lt;/pawn&amp;gt;&lt;br /&gt;
* menu - указатель на меню. Это указывает menu_additem меню к которому нужно добавить пункты.&lt;br /&gt;
* const name[] - имя пункта меню. Это то что будет показано в меню.&lt;br /&gt;
* const command[] - информация пункта меню.&lt;br /&gt;
&lt;br /&gt;
Теперь давайте приступим к созданию нашего меню. Как уже говорилось, это простое голосование смены карты. Так что нам надо всего 2 пункта меню. А именно &amp;quot;Да&amp;quot; и &amp;quot;Нет&amp;quot;.&lt;br /&gt;
&amp;lt;pawn&amp;gt;build_menu()&lt;br /&gt;
{&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;Yes&amp;quot;, &amp;quot;1&amp;quot;);&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;No&amp;quot;, &amp;quot;2&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	menu_setprop(g_Menu, MPROP_PERPAGE, 0);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Примечание&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Как вы можете видеть вместо command[] я указал числа. Это необходимо для более простой идентификации пунктов меню.&lt;br /&gt;
** Я так-же добавил menu_setprop. Это говорит нашему меню что оно не имеет страниц. Для дополнительной информации смотрите в amxconst.inc&lt;br /&gt;
&lt;br /&gt;
=== Показывает меню голосования ===&lt;br /&gt;
Для того что-бы показать меню мы должны использовать menu_display.&lt;br /&gt;
&amp;lt;pawn&amp;gt;menu_display ( id, menu, page )&amp;lt;/pawn&amp;gt;&lt;br /&gt;
* id - id пользователя которому надо показать это меню.&lt;br /&gt;
* menu - тут указываем хэндл меню которое показываем пользователю.&lt;br /&gt;
* page - какая страница (номер страницы меню) с которой начинаем. Страницы меню начинаются с 0.&lt;br /&gt;
&lt;br /&gt;
Ok теперь посмотрим на наш код.&lt;br /&gt;
&amp;lt;pawn&amp;gt;public startvote(id)&lt;br /&gt;
{&lt;br /&gt;
	for(new i = 0; i &amp;lt; 33; i++)&lt;br /&gt;
	{&lt;br /&gt;
		if( is_user_alive(i) )&lt;br /&gt;
		{&lt;br /&gt;
			menu_display(i, g_Menu, 0);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Примечание:&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Используем цыкл для прохождения по всем игрокам и показываем меню тем кто живой.&lt;br /&gt;
&lt;br /&gt;
=== Обработка выборов меню ===&lt;br /&gt;
Последний этап заключается в обработке выбора меню. Это делается через функцию обработки.&lt;br /&gt;
Она вызывается каждый раз когда пользователь сделал выбор.&lt;br /&gt;
Вот  &amp;lt;b&amp;gt;3&amp;lt;/b&amp;gt; переменные которые передаются в функцию.&lt;br /&gt;
* id - id пользователя&lt;br /&gt;
* menu - открытое меню у пользователя&lt;br /&gt;
* item - тут выбор пункта меню пользователем&lt;br /&gt;
&lt;br /&gt;
Далее мы объявляем несколько специальных переменных таких как меню выхода.&lt;br /&gt;
&amp;lt;pawn&amp;gt;#define MENU_EXIT	-3&lt;br /&gt;
#define	MENU_BACK	-2&lt;br /&gt;
#define MENU_MORE	-1&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам надо проверить если пункт меню выбран и он не является специальной переменной&lt;br /&gt;
&amp;lt;pawn&amp;gt;if( item &amp;lt; 0 ) return PLUGIN_CONTINUE;&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующим шагом мы получаем информацию о выбранном пункте меню. Все что мы ищем это номер пункта меню. (Да = 1, Нет = 2).&lt;br /&gt;
Для этого надо использовать menu_item_getinfo.&lt;br /&gt;
&amp;lt;pawn&amp;gt;menu_item_getinfo ( menu, item, &amp;amp;access, command[], cmdlen, name[]=&amp;quot;&amp;quot;, namelen=0, &amp;amp;callback )&amp;lt;/pawn&amp;gt;&lt;br /&gt;
* menu - меню в котором находится пункт меню.&lt;br /&gt;
* item - the item itself&lt;br /&gt;
* &amp;amp;access - (edit)&lt;br /&gt;
* command[] - (edit)(это то где сохраняются идентификационные номера меню)&lt;br /&gt;
* cmdlen - размер command[]&lt;br /&gt;
* name[] - имя пункта меню&lt;br /&gt;
* namelen - размер name[]&lt;br /&gt;
* &amp;amp;callback - (edit)&lt;br /&gt;
&lt;br /&gt;
После того как мы получили информацию о пуектах меню, надо взять из command[] номера выбранных меню(это должно быть 1 или 2). &lt;br /&gt;
Теперь надо добавить в g_Votes теми голосами что были сделаны.&lt;br /&gt;
Вот как завершонная функция должна выглядеть:&lt;br /&gt;
&amp;lt;pawn&amp;gt;public menu_handle(id, menu, item)&lt;br /&gt;
{&lt;br /&gt;
	if( item &amp;lt; 0 ) return PLUGIN_CONTINUE;&lt;br /&gt;
	&lt;br /&gt;
	// Get item info&lt;br /&gt;
	new cmd[3];&lt;br /&gt;
	new access, callback;&lt;br /&gt;
	&lt;br /&gt;
	menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);&lt;br /&gt;
	&lt;br /&gt;
	new iChoice = str_to_num(cmd);&lt;br /&gt;
	&lt;br /&gt;
	g_Votes[iChoice]++;&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Завершение ===&lt;br /&gt;
Ну вот и все. Вы завершили Урок по созданию меню. Используя новую систему меню, можно создать более удобное управление. В следующем уроке вы увидите более сложную систему меню, которая будет использовать callbacks, уничтожение меню и его создание. Вот итоговый код, который должен получиться у вас после выполнения всех действий урока.&lt;br /&gt;
&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new g_Menu;	// Переменная обработки главного меню&lt;br /&gt;
new g_Votes[3];	// Сохраняем голосования Да как 1, No как 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	// Регистрируем ваш плагин&lt;br /&gt;
	register_plugin(&amp;quot;Vote Menu&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Freecode&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Регистрируем меню смены карты&lt;br /&gt;
	g_Menu = menu_create(&amp;quot;Change Level?&amp;quot;,&amp;quot;menu_handle&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	register_clcmd(&amp;quot;amx_startvote&amp;quot;,&amp;quot;startvote&amp;quot;,ADMIN_CFG,&amp;quot;Gaben&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Теперь нам надо создать наше меню&lt;br /&gt;
	build_menu();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
build_menu()&lt;br /&gt;
{&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;Yes&amp;quot;, &amp;quot;1&amp;quot;);&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;No&amp;quot;, &amp;quot;2&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	menu_setprop(g_Menu, MPROP_PERPAGE, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public startvote(id)&lt;br /&gt;
{&lt;br /&gt;
	for(new i = 0; i &amp;lt; 33; i++)&lt;br /&gt;
	{&lt;br /&gt;
		if( is_user_alive(i) )&lt;br /&gt;
		{&lt;br /&gt;
			menu_display(i, g_Menu, 0);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public menu_handle(id, menu, item)&lt;br /&gt;
{&lt;br /&gt;
	if( item &amp;lt; 0 ) return PLUGIN_CONTINUE;&lt;br /&gt;
	&lt;br /&gt;
	// Получаем информацию о пункте&lt;br /&gt;
	new cmd[3];&lt;br /&gt;
	new access, callback;&lt;br /&gt;
	&lt;br /&gt;
	menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);&lt;br /&gt;
	&lt;br /&gt;
	new iChoice = str_to_num(cmd);&lt;br /&gt;
	&lt;br /&gt;
	g_Votes[iChoice]++;&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Using_New_Menu_System&amp;diff=3866</id>
		<title>Ru Using New Menu System</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Using_New_Menu_System&amp;diff=3866"/>
		<updated>2007-01-23T12:34:39Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Введение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:Scripting (AMX Mod X)]]&lt;br /&gt;
&lt;br /&gt;
= Введение =&lt;br /&gt;
Это статья поможет вам разобраться в новой системе меню.&lt;br /&gt;
&lt;br /&gt;
= Урок по созданию меню =&lt;br /&gt;
Давайте попробуем воспользоваться новой системмой меню. Мы пройдем через этоу простую инструкцию и создадим простое голосование смены карты.&lt;br /&gt;
&lt;br /&gt;
=== Заголовочные файлы ===&lt;br /&gt;
Как обычно мы начинаем с добавления необходимых заголовочных файлов&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Глобальные переменные ===&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
new g_Menu;	// Переменная обработки главного меню&lt;br /&gt;
new g_Votes[3];	// Сохраняем голосования Да как 1, No как 2&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь мы создали 2 глобальные переменные. Одна будет содержать указатель на ваше меню, другая будет хранить результаты голосования. Голоса 'За' будут сохранены в g_Votes[1], а 'Против' - в g_Votes[2]. g_Votes[0] - не используется(?).&lt;br /&gt;
&lt;br /&gt;
=== Регистрируем Плагин и Меню ===&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	// Регистрируем ваш плагин&lt;br /&gt;
	register_plugin(&amp;quot;Vote Menu&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Freecode&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Регистрируем меню смены карты&lt;br /&gt;
	g_Menu = menu_create(&amp;quot;Change Level?&amp;quot;,&amp;quot;menu_handle&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	register_clcmd(&amp;quot;amx_startvote&amp;quot;,&amp;quot;startvote&amp;quot;,ADMIN_CFG,&amp;quot;Gaben&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Теперь нам надо создать наше меню&lt;br /&gt;
	build_menu();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lets break this down. &lt;br /&gt;
&lt;br /&gt;
*Регистрирует ваш плагин&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_plugin(&amp;quot;Vote Menu&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Freecode&amp;quot;);&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*g_Menu - Указатель на ваше меню. Это будет установлено после вызова menu_create.&lt;br /&gt;
&amp;lt;pawn&amp;gt;g_Menu = menu_create(&amp;quot;Change Level?&amp;quot;,&amp;quot;menu_handle&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//menu_create ( title[], handler[], ml=0 )&lt;br /&gt;
//title[] - Заголовок меню&lt;br /&gt;
//handler[] - Эта функция будет вызвана когда будет нажата клавиша в вашем меню.&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Мы добавили эту команду. Она начинает ваше голосование.&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_clcmd(&amp;quot;amx_startvote&amp;quot;,&amp;quot;startvote&amp;quot;,ADMIN_CFG,&amp;quot;Gaben&amp;quot;);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Это вызов функции. build_menu() функция создает ваше меню.&lt;br /&gt;
&amp;lt;pawn&amp;gt;build_menu();&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Создение меню ===&lt;br /&gt;
Конструирование заключается в добавлении пунктов в ваше меню. Прежде чем начали добавлять пункты, мы должны взглянуть на &lt;br /&gt;
menu_additem .&lt;br /&gt;
&amp;lt;pawn&amp;gt;menu_additem ( menu, const name[], const command[], paccess=0, callback=-1 )&amp;lt;/pawn&amp;gt;&lt;br /&gt;
* menu - указатель на меню. Это указывает menu_additem меню к которому нужно добавить пункты.&lt;br /&gt;
* const name[] - имя пункта меню. Это то что будет показано в меню.&lt;br /&gt;
* const command[] - информация пункта меню.&lt;br /&gt;
&lt;br /&gt;
Теперь давайте приступим к созданию нашего меню. Как уже говорилось, это простое голосование смены карты. Так что нам надо всего 2 пункта меню. А именно &amp;quot;Да&amp;quot; и &amp;quot;Нет&amp;quot;.&lt;br /&gt;
&amp;lt;pawn&amp;gt;build_menu()&lt;br /&gt;
{&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;Yes&amp;quot;, &amp;quot;1&amp;quot;);&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;No&amp;quot;, &amp;quot;2&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	menu_setprop(g_Menu, MPROP_PERPAGE, 0);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Примечание&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Как вы можете видеть вместо command[] я указал числа. Это необходимо для более простой идентификации пунктов меню.&lt;br /&gt;
** Я так-же добавил menu_setprop. Это говорит нашему меню что оно не имеет страниц. Для дополнительной информации смотрите в amxconst.inc&lt;br /&gt;
&lt;br /&gt;
=== Показывает меню голосования ===&lt;br /&gt;
Для того что-бы показать меню мы должны использовать menu_display.&lt;br /&gt;
&amp;lt;pawn&amp;gt;menu_display ( id, menu, page )&amp;lt;/pawn&amp;gt;&lt;br /&gt;
* id - id пользователя которому надо показать это меню.&lt;br /&gt;
* menu - тут указываем хэндл меню которое показываем пользователю.&lt;br /&gt;
* page - какая страница (номер страницы меню) с которой начинаем. Страницы меню начинаются с 0.&lt;br /&gt;
&lt;br /&gt;
Ok теперь посмотрим на наш код.&lt;br /&gt;
&amp;lt;pawn&amp;gt;public startvote(id)&lt;br /&gt;
{&lt;br /&gt;
	for(new i = 0; i &amp;lt; 33; i++)&lt;br /&gt;
	{&lt;br /&gt;
		if( is_user_alive(i) )&lt;br /&gt;
		{&lt;br /&gt;
			menu_display(i, g_Menu, 0);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Примечание:&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Используем цыкл для прохождения по всем игрокам и показываем меню тем кто живой.&lt;br /&gt;
&lt;br /&gt;
=== Обработка выборов меню ===&lt;br /&gt;
Последний этап заключается в обработке выбора меню. Это делается через функцию обработки.&lt;br /&gt;
Она вызывается каждый раз когда пользователь сделал выбор.&lt;br /&gt;
Вот  &amp;lt;b&amp;gt;3&amp;lt;/b&amp;gt; переменные которые передаются в функцию.&lt;br /&gt;
* id - id пользователя&lt;br /&gt;
* menu - открытое меню у пользователя&lt;br /&gt;
* item - тут выбор пункта меню пользователем&lt;br /&gt;
&lt;br /&gt;
Далее мы объявляем несколько специальных переменных таких как меню выхода.&lt;br /&gt;
&amp;lt;pawn&amp;gt;#define MENU_EXIT	-3&lt;br /&gt;
#define	MENU_BACK	-2&lt;br /&gt;
#define MENU_MORE	-1&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам надо проверить если пункт меню выбран и он не является специальной переменной&lt;br /&gt;
&amp;lt;pawn&amp;gt;if( item &amp;lt; 0 ) return PLUGIN_CONTINUE;&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующим шагом мы получаем информацию о выбранном пункте меню. Все что мы ищем это номер пункта меню. (Да = 1, Нет = 2).&lt;br /&gt;
Для этого надо использовать menu_item_getinfo.&lt;br /&gt;
&amp;lt;pawn&amp;gt;menu_item_getinfo ( menu, item, &amp;amp;access, command[], cmdlen, name[]=&amp;quot;&amp;quot;, namelen=0, &amp;amp;callback )&amp;lt;/pawn&amp;gt;&lt;br /&gt;
* menu - меню в котором находится пункт меню.&lt;br /&gt;
* item - the item itself&lt;br /&gt;
* &amp;amp;access - (edit)&lt;br /&gt;
* command[] - (edit)(это то где сохраняются идентификационные номера меню)&lt;br /&gt;
* cmdlen - размер command[]&lt;br /&gt;
* name[] - имя пункта меню&lt;br /&gt;
* namelen - размер name[]&lt;br /&gt;
* &amp;amp;callback - (edit)&lt;br /&gt;
&lt;br /&gt;
После того как мы получили информацию о пуектах меню, надо взять из command[] номера выбранных меню(это должно быть 1 или 2). &lt;br /&gt;
Теперь надо добавить в g_Votes теми голосами что были сделаны.&lt;br /&gt;
Вот как завершонная функция должна выглядеть:&lt;br /&gt;
&amp;lt;pawn&amp;gt;public menu_handle(id, menu, item)&lt;br /&gt;
{&lt;br /&gt;
	if( item &amp;lt; 0 ) return PLUGIN_CONTINUE;&lt;br /&gt;
	&lt;br /&gt;
	// Get item info&lt;br /&gt;
	new cmd[3];&lt;br /&gt;
	new access, callback;&lt;br /&gt;
	&lt;br /&gt;
	menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);&lt;br /&gt;
	&lt;br /&gt;
	new iChoice = str_to_num(cmd);&lt;br /&gt;
	&lt;br /&gt;
	g_Votes[iChoice]++;&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Завершение ===&lt;br /&gt;
Это конец. Вы завершили Урок по созданию меню. Используя новую систему меню можно создать более удобное управление.&lt;br /&gt;
В следующем уроке вы увидите более сложную систему меню которая будет использовать callbacks, уничтожение меню и создание.&lt;br /&gt;
Вот код который должен получится посли всех действий.&lt;br /&gt;
&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new g_Menu;	// Переменная обработки главного меню&lt;br /&gt;
new g_Votes[3];	// Сохраняем голосования Да как 1, No как 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	// Регистрируем ваш плагин&lt;br /&gt;
	register_plugin(&amp;quot;Vote Menu&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Freecode&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Регистрируем меню смены карты&lt;br /&gt;
	g_Menu = menu_create(&amp;quot;Change Level?&amp;quot;,&amp;quot;menu_handle&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	register_clcmd(&amp;quot;amx_startvote&amp;quot;,&amp;quot;startvote&amp;quot;,ADMIN_CFG,&amp;quot;Gaben&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Теперь нам надо создать наше меню&lt;br /&gt;
	build_menu();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
build_menu()&lt;br /&gt;
{&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;Yes&amp;quot;, &amp;quot;1&amp;quot;);&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;No&amp;quot;, &amp;quot;2&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	menu_setprop(g_Menu, MPROP_PERPAGE, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public startvote(id)&lt;br /&gt;
{&lt;br /&gt;
	for(new i = 0; i &amp;lt; 33; i++)&lt;br /&gt;
	{&lt;br /&gt;
		if( is_user_alive(i) )&lt;br /&gt;
		{&lt;br /&gt;
			menu_display(i, g_Menu, 0);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public menu_handle(id, menu, item)&lt;br /&gt;
{&lt;br /&gt;
	if( item &amp;lt; 0 ) return PLUGIN_CONTINUE;&lt;br /&gt;
	&lt;br /&gt;
	// Получаем информацию о пункте&lt;br /&gt;
	new cmd[3];&lt;br /&gt;
	new access, callback;&lt;br /&gt;
	&lt;br /&gt;
	menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);&lt;br /&gt;
	&lt;br /&gt;
	new iChoice = str_to_num(cmd);&lt;br /&gt;
	&lt;br /&gt;
	g_Votes[iChoice]++;&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Using_New_Menu_System&amp;diff=3865</id>
		<title>Ru Using New Menu System</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Using_New_Menu_System&amp;diff=3865"/>
		<updated>2007-01-23T12:34:00Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Введение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:Scripting (AMX Mod X)]]&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
Это статья поможет вам разобраться в новой системе меню.&lt;br /&gt;
&lt;br /&gt;
= Урок по созданию меню =&lt;br /&gt;
Давайте попробуем воспользоваться новой системмой меню. Мы пройдем через этоу простую инструкцию и создадим простое голосование смены карты.&lt;br /&gt;
&lt;br /&gt;
=== Заголовочные файлы ===&lt;br /&gt;
Как обычно мы начинаем с добавления необходимых заголовочных файлов&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Глобальные переменные ===&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
new g_Menu;	// Переменная обработки главного меню&lt;br /&gt;
new g_Votes[3];	// Сохраняем голосования Да как 1, No как 2&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь мы создали 2 глобальные переменные. Одна будет содержать указатель на ваше меню, другая будет хранить результаты голосования. Голоса 'За' будут сохранены в g_Votes[1], а 'Против' - в g_Votes[2]. g_Votes[0] - не используется(?).&lt;br /&gt;
&lt;br /&gt;
=== Регистрируем Плагин и Меню ===&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	// Регистрируем ваш плагин&lt;br /&gt;
	register_plugin(&amp;quot;Vote Menu&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Freecode&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Регистрируем меню смены карты&lt;br /&gt;
	g_Menu = menu_create(&amp;quot;Change Level?&amp;quot;,&amp;quot;menu_handle&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	register_clcmd(&amp;quot;amx_startvote&amp;quot;,&amp;quot;startvote&amp;quot;,ADMIN_CFG,&amp;quot;Gaben&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Теперь нам надо создать наше меню&lt;br /&gt;
	build_menu();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lets break this down. &lt;br /&gt;
&lt;br /&gt;
*Регистрирует ваш плагин&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_plugin(&amp;quot;Vote Menu&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Freecode&amp;quot;);&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*g_Menu - Указатель на ваше меню. Это будет установлено после вызова menu_create.&lt;br /&gt;
&amp;lt;pawn&amp;gt;g_Menu = menu_create(&amp;quot;Change Level?&amp;quot;,&amp;quot;menu_handle&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//menu_create ( title[], handler[], ml=0 )&lt;br /&gt;
//title[] - Заголовок меню&lt;br /&gt;
//handler[] - Эта функция будет вызвана когда будет нажата клавиша в вашем меню.&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Мы добавили эту команду. Она начинает ваше голосование.&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_clcmd(&amp;quot;amx_startvote&amp;quot;,&amp;quot;startvote&amp;quot;,ADMIN_CFG,&amp;quot;Gaben&amp;quot;);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Это вызов функции. build_menu() функция создает ваше меню.&lt;br /&gt;
&amp;lt;pawn&amp;gt;build_menu();&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Создение меню ===&lt;br /&gt;
Конструирование заключается в добавлении пунктов в ваше меню. Прежде чем начали добавлять пункты, мы должны взглянуть на &lt;br /&gt;
menu_additem .&lt;br /&gt;
&amp;lt;pawn&amp;gt;menu_additem ( menu, const name[], const command[], paccess=0, callback=-1 )&amp;lt;/pawn&amp;gt;&lt;br /&gt;
* menu - указатель на меню. Это указывает menu_additem меню к которому нужно добавить пункты.&lt;br /&gt;
* const name[] - имя пункта меню. Это то что будет показано в меню.&lt;br /&gt;
* const command[] - информация пункта меню.&lt;br /&gt;
&lt;br /&gt;
Теперь давайте приступим к созданию нашего меню. Как уже говорилось, это простое голосование смены карты. Так что нам надо всего 2 пункта меню. А именно &amp;quot;Да&amp;quot; и &amp;quot;Нет&amp;quot;.&lt;br /&gt;
&amp;lt;pawn&amp;gt;build_menu()&lt;br /&gt;
{&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;Yes&amp;quot;, &amp;quot;1&amp;quot;);&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;No&amp;quot;, &amp;quot;2&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	menu_setprop(g_Menu, MPROP_PERPAGE, 0);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Примечание&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Как вы можете видеть вместо command[] я указал числа. Это необходимо для более простой идентификации пунктов меню.&lt;br /&gt;
** Я так-же добавил menu_setprop. Это говорит нашему меню что оно не имеет страниц. Для дополнительной информации смотрите в amxconst.inc&lt;br /&gt;
&lt;br /&gt;
=== Показывает меню голосования ===&lt;br /&gt;
Для того что-бы показать меню мы должны использовать menu_display.&lt;br /&gt;
&amp;lt;pawn&amp;gt;menu_display ( id, menu, page )&amp;lt;/pawn&amp;gt;&lt;br /&gt;
* id - id пользователя которому надо показать это меню.&lt;br /&gt;
* menu - тут указываем хэндл меню которое показываем пользователю.&lt;br /&gt;
* page - какая страница (номер страницы меню) с которой начинаем. Страницы меню начинаются с 0.&lt;br /&gt;
&lt;br /&gt;
Ok теперь посмотрим на наш код.&lt;br /&gt;
&amp;lt;pawn&amp;gt;public startvote(id)&lt;br /&gt;
{&lt;br /&gt;
	for(new i = 0; i &amp;lt; 33; i++)&lt;br /&gt;
	{&lt;br /&gt;
		if( is_user_alive(i) )&lt;br /&gt;
		{&lt;br /&gt;
			menu_display(i, g_Menu, 0);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Примечание:&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Используем цыкл для прохождения по всем игрокам и показываем меню тем кто живой.&lt;br /&gt;
&lt;br /&gt;
=== Обработка выборов меню ===&lt;br /&gt;
Последний этап заключается в обработке выбора меню. Это делается через функцию обработки.&lt;br /&gt;
Она вызывается каждый раз когда пользователь сделал выбор.&lt;br /&gt;
Вот  &amp;lt;b&amp;gt;3&amp;lt;/b&amp;gt; переменные которые передаются в функцию.&lt;br /&gt;
* id - id пользователя&lt;br /&gt;
* menu - открытое меню у пользователя&lt;br /&gt;
* item - тут выбор пункта меню пользователем&lt;br /&gt;
&lt;br /&gt;
Далее мы объявляем несколько специальных переменных таких как меню выхода.&lt;br /&gt;
&amp;lt;pawn&amp;gt;#define MENU_EXIT	-3&lt;br /&gt;
#define	MENU_BACK	-2&lt;br /&gt;
#define MENU_MORE	-1&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам надо проверить если пункт меню выбран и он не является специальной переменной&lt;br /&gt;
&amp;lt;pawn&amp;gt;if( item &amp;lt; 0 ) return PLUGIN_CONTINUE;&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующим шагом мы получаем информацию о выбранном пункте меню. Все что мы ищем это номер пункта меню. (Да = 1, Нет = 2).&lt;br /&gt;
Для этого надо использовать menu_item_getinfo.&lt;br /&gt;
&amp;lt;pawn&amp;gt;menu_item_getinfo ( menu, item, &amp;amp;access, command[], cmdlen, name[]=&amp;quot;&amp;quot;, namelen=0, &amp;amp;callback )&amp;lt;/pawn&amp;gt;&lt;br /&gt;
* menu - меню в котором находится пункт меню.&lt;br /&gt;
* item - the item itself&lt;br /&gt;
* &amp;amp;access - (edit)&lt;br /&gt;
* command[] - (edit)(это то где сохраняются идентификационные номера меню)&lt;br /&gt;
* cmdlen - размер command[]&lt;br /&gt;
* name[] - имя пункта меню&lt;br /&gt;
* namelen - размер name[]&lt;br /&gt;
* &amp;amp;callback - (edit)&lt;br /&gt;
&lt;br /&gt;
После того как мы получили информацию о пуектах меню, надо взять из command[] номера выбранных меню(это должно быть 1 или 2). &lt;br /&gt;
Теперь надо добавить в g_Votes теми голосами что были сделаны.&lt;br /&gt;
Вот как завершонная функция должна выглядеть:&lt;br /&gt;
&amp;lt;pawn&amp;gt;public menu_handle(id, menu, item)&lt;br /&gt;
{&lt;br /&gt;
	if( item &amp;lt; 0 ) return PLUGIN_CONTINUE;&lt;br /&gt;
	&lt;br /&gt;
	// Get item info&lt;br /&gt;
	new cmd[3];&lt;br /&gt;
	new access, callback;&lt;br /&gt;
	&lt;br /&gt;
	menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);&lt;br /&gt;
	&lt;br /&gt;
	new iChoice = str_to_num(cmd);&lt;br /&gt;
	&lt;br /&gt;
	g_Votes[iChoice]++;&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Завершение ===&lt;br /&gt;
Это конец. Вы завершили Урок по созданию меню. Используя новую систему меню можно создать более удобное управление.&lt;br /&gt;
В следующем уроке вы увидите более сложную систему меню которая будет использовать callbacks, уничтожение меню и создание.&lt;br /&gt;
Вот код который должен получится посли всех действий.&lt;br /&gt;
&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new g_Menu;	// Переменная обработки главного меню&lt;br /&gt;
new g_Votes[3];	// Сохраняем голосования Да как 1, No как 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	// Регистрируем ваш плагин&lt;br /&gt;
	register_plugin(&amp;quot;Vote Menu&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Freecode&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Регистрируем меню смены карты&lt;br /&gt;
	g_Menu = menu_create(&amp;quot;Change Level?&amp;quot;,&amp;quot;menu_handle&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	register_clcmd(&amp;quot;amx_startvote&amp;quot;,&amp;quot;startvote&amp;quot;,ADMIN_CFG,&amp;quot;Gaben&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Теперь нам надо создать наше меню&lt;br /&gt;
	build_menu();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
build_menu()&lt;br /&gt;
{&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;Yes&amp;quot;, &amp;quot;1&amp;quot;);&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;No&amp;quot;, &amp;quot;2&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	menu_setprop(g_Menu, MPROP_PERPAGE, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public startvote(id)&lt;br /&gt;
{&lt;br /&gt;
	for(new i = 0; i &amp;lt; 33; i++)&lt;br /&gt;
	{&lt;br /&gt;
		if( is_user_alive(i) )&lt;br /&gt;
		{&lt;br /&gt;
			menu_display(i, g_Menu, 0);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public menu_handle(id, menu, item)&lt;br /&gt;
{&lt;br /&gt;
	if( item &amp;lt; 0 ) return PLUGIN_CONTINUE;&lt;br /&gt;
	&lt;br /&gt;
	// Получаем информацию о пункте&lt;br /&gt;
	new cmd[3];&lt;br /&gt;
	new access, callback;&lt;br /&gt;
	&lt;br /&gt;
	menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);&lt;br /&gt;
	&lt;br /&gt;
	new iChoice = str_to_num(cmd);&lt;br /&gt;
	&lt;br /&gt;
	g_Votes[iChoice]++;&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Using_New_Menu_System&amp;diff=3864</id>
		<title>Ru Using New Menu System</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Using_New_Menu_System&amp;diff=3864"/>
		<updated>2007-01-23T12:33:34Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Урок по созданию меню */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:Scripting (AMX Mod X)]]&lt;br /&gt;
&lt;br /&gt;
= Введение =&lt;br /&gt;
Это статья поможет вам разобраться в новой системе меню.&lt;br /&gt;
&lt;br /&gt;
= Урок по созданию меню =&lt;br /&gt;
Давайте попробуем воспользоваться новой системмой меню. Мы пройдем через этоу простую инструкцию и создадим простое голосование смены карты.&lt;br /&gt;
&lt;br /&gt;
=== Заголовочные файлы ===&lt;br /&gt;
Как обычно мы начинаем с добавления необходимых заголовочных файлов&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Глобальные переменные ===&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
new g_Menu;	// Переменная обработки главного меню&lt;br /&gt;
new g_Votes[3];	// Сохраняем голосования Да как 1, No как 2&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь мы создали 2 глобальные переменные. Одна будет содержать указатель на ваше меню, другая будет хранить результаты голосования. Голоса 'За' будут сохранены в g_Votes[1], а 'Против' - в g_Votes[2]. g_Votes[0] - не используется(?).&lt;br /&gt;
&lt;br /&gt;
=== Регистрируем Плагин и Меню ===&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	// Регистрируем ваш плагин&lt;br /&gt;
	register_plugin(&amp;quot;Vote Menu&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Freecode&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Регистрируем меню смены карты&lt;br /&gt;
	g_Menu = menu_create(&amp;quot;Change Level?&amp;quot;,&amp;quot;menu_handle&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	register_clcmd(&amp;quot;amx_startvote&amp;quot;,&amp;quot;startvote&amp;quot;,ADMIN_CFG,&amp;quot;Gaben&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Теперь нам надо создать наше меню&lt;br /&gt;
	build_menu();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lets break this down. &lt;br /&gt;
&lt;br /&gt;
*Регистрирует ваш плагин&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_plugin(&amp;quot;Vote Menu&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Freecode&amp;quot;);&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*g_Menu - Указатель на ваше меню. Это будет установлено после вызова menu_create.&lt;br /&gt;
&amp;lt;pawn&amp;gt;g_Menu = menu_create(&amp;quot;Change Level?&amp;quot;,&amp;quot;menu_handle&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//menu_create ( title[], handler[], ml=0 )&lt;br /&gt;
//title[] - Заголовок меню&lt;br /&gt;
//handler[] - Эта функция будет вызвана когда будет нажата клавиша в вашем меню.&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Мы добавили эту команду. Она начинает ваше голосование.&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_clcmd(&amp;quot;amx_startvote&amp;quot;,&amp;quot;startvote&amp;quot;,ADMIN_CFG,&amp;quot;Gaben&amp;quot;);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Это вызов функции. build_menu() функция создает ваше меню.&lt;br /&gt;
&amp;lt;pawn&amp;gt;build_menu();&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Создение меню ===&lt;br /&gt;
Конструирование заключается в добавлении пунктов в ваше меню. Прежде чем начали добавлять пункты, мы должны взглянуть на &lt;br /&gt;
menu_additem .&lt;br /&gt;
&amp;lt;pawn&amp;gt;menu_additem ( menu, const name[], const command[], paccess=0, callback=-1 )&amp;lt;/pawn&amp;gt;&lt;br /&gt;
* menu - указатель на меню. Это указывает menu_additem меню к которому нужно добавить пункты.&lt;br /&gt;
* const name[] - имя пункта меню. Это то что будет показано в меню.&lt;br /&gt;
* const command[] - информация пункта меню.&lt;br /&gt;
&lt;br /&gt;
Теперь давайте приступим к созданию нашего меню. Как уже говорилось, это простое голосование смены карты. Так что нам надо всего 2 пункта меню. А именно &amp;quot;Да&amp;quot; и &amp;quot;Нет&amp;quot;.&lt;br /&gt;
&amp;lt;pawn&amp;gt;build_menu()&lt;br /&gt;
{&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;Yes&amp;quot;, &amp;quot;1&amp;quot;);&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;No&amp;quot;, &amp;quot;2&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	menu_setprop(g_Menu, MPROP_PERPAGE, 0);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Примечание&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Как вы можете видеть вместо command[] я указал числа. Это необходимо для более простой идентификации пунктов меню.&lt;br /&gt;
** Я так-же добавил menu_setprop. Это говорит нашему меню что оно не имеет страниц. Для дополнительной информации смотрите в amxconst.inc&lt;br /&gt;
&lt;br /&gt;
=== Показывает меню голосования ===&lt;br /&gt;
Для того что-бы показать меню мы должны использовать menu_display.&lt;br /&gt;
&amp;lt;pawn&amp;gt;menu_display ( id, menu, page )&amp;lt;/pawn&amp;gt;&lt;br /&gt;
* id - id пользователя которому надо показать это меню.&lt;br /&gt;
* menu - тут указываем хэндл меню которое показываем пользователю.&lt;br /&gt;
* page - какая страница (номер страницы меню) с которой начинаем. Страницы меню начинаются с 0.&lt;br /&gt;
&lt;br /&gt;
Ok теперь посмотрим на наш код.&lt;br /&gt;
&amp;lt;pawn&amp;gt;public startvote(id)&lt;br /&gt;
{&lt;br /&gt;
	for(new i = 0; i &amp;lt; 33; i++)&lt;br /&gt;
	{&lt;br /&gt;
		if( is_user_alive(i) )&lt;br /&gt;
		{&lt;br /&gt;
			menu_display(i, g_Menu, 0);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Примечание:&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Используем цыкл для прохождения по всем игрокам и показываем меню тем кто живой.&lt;br /&gt;
&lt;br /&gt;
=== Обработка выборов меню ===&lt;br /&gt;
Последний этап заключается в обработке выбора меню. Это делается через функцию обработки.&lt;br /&gt;
Она вызывается каждый раз когда пользователь сделал выбор.&lt;br /&gt;
Вот  &amp;lt;b&amp;gt;3&amp;lt;/b&amp;gt; переменные которые передаются в функцию.&lt;br /&gt;
* id - id пользователя&lt;br /&gt;
* menu - открытое меню у пользователя&lt;br /&gt;
* item - тут выбор пункта меню пользователем&lt;br /&gt;
&lt;br /&gt;
Далее мы объявляем несколько специальных переменных таких как меню выхода.&lt;br /&gt;
&amp;lt;pawn&amp;gt;#define MENU_EXIT	-3&lt;br /&gt;
#define	MENU_BACK	-2&lt;br /&gt;
#define MENU_MORE	-1&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам надо проверить если пункт меню выбран и он не является специальной переменной&lt;br /&gt;
&amp;lt;pawn&amp;gt;if( item &amp;lt; 0 ) return PLUGIN_CONTINUE;&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующим шагом мы получаем информацию о выбранном пункте меню. Все что мы ищем это номер пункта меню. (Да = 1, Нет = 2).&lt;br /&gt;
Для этого надо использовать menu_item_getinfo.&lt;br /&gt;
&amp;lt;pawn&amp;gt;menu_item_getinfo ( menu, item, &amp;amp;access, command[], cmdlen, name[]=&amp;quot;&amp;quot;, namelen=0, &amp;amp;callback )&amp;lt;/pawn&amp;gt;&lt;br /&gt;
* menu - меню в котором находится пункт меню.&lt;br /&gt;
* item - the item itself&lt;br /&gt;
* &amp;amp;access - (edit)&lt;br /&gt;
* command[] - (edit)(это то где сохраняются идентификационные номера меню)&lt;br /&gt;
* cmdlen - размер command[]&lt;br /&gt;
* name[] - имя пункта меню&lt;br /&gt;
* namelen - размер name[]&lt;br /&gt;
* &amp;amp;callback - (edit)&lt;br /&gt;
&lt;br /&gt;
После того как мы получили информацию о пуектах меню, надо взять из command[] номера выбранных меню(это должно быть 1 или 2). &lt;br /&gt;
Теперь надо добавить в g_Votes теми голосами что были сделаны.&lt;br /&gt;
Вот как завершонная функция должна выглядеть:&lt;br /&gt;
&amp;lt;pawn&amp;gt;public menu_handle(id, menu, item)&lt;br /&gt;
{&lt;br /&gt;
	if( item &amp;lt; 0 ) return PLUGIN_CONTINUE;&lt;br /&gt;
	&lt;br /&gt;
	// Get item info&lt;br /&gt;
	new cmd[3];&lt;br /&gt;
	new access, callback;&lt;br /&gt;
	&lt;br /&gt;
	menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);&lt;br /&gt;
	&lt;br /&gt;
	new iChoice = str_to_num(cmd);&lt;br /&gt;
	&lt;br /&gt;
	g_Votes[iChoice]++;&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Завершение ===&lt;br /&gt;
Это конец. Вы завершили Урок по созданию меню. Используя новую систему меню можно создать более удобное управление.&lt;br /&gt;
В следующем уроке вы увидите более сложную систему меню которая будет использовать callbacks, уничтожение меню и создание.&lt;br /&gt;
Вот код который должен получится посли всех действий.&lt;br /&gt;
&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new g_Menu;	// Переменная обработки главного меню&lt;br /&gt;
new g_Votes[3];	// Сохраняем голосования Да как 1, No как 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	// Регистрируем ваш плагин&lt;br /&gt;
	register_plugin(&amp;quot;Vote Menu&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Freecode&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Регистрируем меню смены карты&lt;br /&gt;
	g_Menu = menu_create(&amp;quot;Change Level?&amp;quot;,&amp;quot;menu_handle&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	register_clcmd(&amp;quot;amx_startvote&amp;quot;,&amp;quot;startvote&amp;quot;,ADMIN_CFG,&amp;quot;Gaben&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Теперь нам надо создать наше меню&lt;br /&gt;
	build_menu();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
build_menu()&lt;br /&gt;
{&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;Yes&amp;quot;, &amp;quot;1&amp;quot;);&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;No&amp;quot;, &amp;quot;2&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	menu_setprop(g_Menu, MPROP_PERPAGE, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public startvote(id)&lt;br /&gt;
{&lt;br /&gt;
	for(new i = 0; i &amp;lt; 33; i++)&lt;br /&gt;
	{&lt;br /&gt;
		if( is_user_alive(i) )&lt;br /&gt;
		{&lt;br /&gt;
			menu_display(i, g_Menu, 0);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public menu_handle(id, menu, item)&lt;br /&gt;
{&lt;br /&gt;
	if( item &amp;lt; 0 ) return PLUGIN_CONTINUE;&lt;br /&gt;
	&lt;br /&gt;
	// Получаем информацию о пункте&lt;br /&gt;
	new cmd[3];&lt;br /&gt;
	new access, callback;&lt;br /&gt;
	&lt;br /&gt;
	menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);&lt;br /&gt;
	&lt;br /&gt;
	new iChoice = str_to_num(cmd);&lt;br /&gt;
	&lt;br /&gt;
	g_Votes[iChoice]++;&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Using_New_Menu_System&amp;diff=3863</id>
		<title>Ru Using New Menu System</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Using_New_Menu_System&amp;diff=3863"/>
		<updated>2007-01-23T12:31:51Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Глобальные переменные */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
[[Category:Ru:Scripting (AMX Mod X)]]&lt;br /&gt;
&lt;br /&gt;
= Введение =&lt;br /&gt;
Это статья поможет вам разобраться в новой системе меню.&lt;br /&gt;
&lt;br /&gt;
== Урок по созданию меню ==&lt;br /&gt;
Давайте попробуем воспользоваться новой системмой меню. Мы пройдем через этоу простую инструкцию и создадим простое голосование смены карты.&lt;br /&gt;
&lt;br /&gt;
=== Заголовочные файлы ===&lt;br /&gt;
Как обычно мы начинаем с добавления необходимых заголовочных файлов&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Глобальные переменные ===&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
new g_Menu;	// Переменная обработки главного меню&lt;br /&gt;
new g_Votes[3];	// Сохраняем голосования Да как 1, No как 2&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь мы создали 2 глобальные переменные. Одна будет содержать указатель на ваше меню, другая будет хранить результаты голосования. Голоса 'За' будут сохранены в g_Votes[1], а 'Против' - в g_Votes[2]. g_Votes[0] - не используется(?).&lt;br /&gt;
&lt;br /&gt;
=== Регистрируем Плагин и Меню ===&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	// Регистрируем ваш плагин&lt;br /&gt;
	register_plugin(&amp;quot;Vote Menu&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Freecode&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Регистрируем меню смены карты&lt;br /&gt;
	g_Menu = menu_create(&amp;quot;Change Level?&amp;quot;,&amp;quot;menu_handle&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	register_clcmd(&amp;quot;amx_startvote&amp;quot;,&amp;quot;startvote&amp;quot;,ADMIN_CFG,&amp;quot;Gaben&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Теперь нам надо создать наше меню&lt;br /&gt;
	build_menu();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lets break this down. &lt;br /&gt;
&lt;br /&gt;
*Регистрирует ваш плагин&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_plugin(&amp;quot;Vote Menu&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Freecode&amp;quot;);&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*g_Menu - Указатель на ваше меню. Это будет установлено после вызова menu_create.&lt;br /&gt;
&amp;lt;pawn&amp;gt;g_Menu = menu_create(&amp;quot;Change Level?&amp;quot;,&amp;quot;menu_handle&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//menu_create ( title[], handler[], ml=0 )&lt;br /&gt;
//title[] - Заголовок меню&lt;br /&gt;
//handler[] - Эта функция будет вызвана когда будет нажата клавиша в вашем меню.&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Мы добавили эту команду. Она начинает ваше голосование.&lt;br /&gt;
&amp;lt;pawn&amp;gt;register_clcmd(&amp;quot;amx_startvote&amp;quot;,&amp;quot;startvote&amp;quot;,ADMIN_CFG,&amp;quot;Gaben&amp;quot;);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Это вызов функции. build_menu() функция создает ваше меню.&lt;br /&gt;
&amp;lt;pawn&amp;gt;build_menu();&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Создение меню ===&lt;br /&gt;
Конструирование заключается в добавлении пунктов в ваше меню. Прежде чем начали добавлять пункты, мы должны взглянуть на &lt;br /&gt;
menu_additem .&lt;br /&gt;
&amp;lt;pawn&amp;gt;menu_additem ( menu, const name[], const command[], paccess=0, callback=-1 )&amp;lt;/pawn&amp;gt;&lt;br /&gt;
* menu - указатель на меню. Это указывает menu_additem меню к которому нужно добавить пункты.&lt;br /&gt;
* const name[] - имя пункта меню. Это то что будет показано в меню.&lt;br /&gt;
* const command[] - информация пункта меню.&lt;br /&gt;
&lt;br /&gt;
Теперь давайте приступим к созданию нашего меню. Как уже говорилось, это простое голосование смены карты. Так что нам надо всего 2 пункта меню. А именно &amp;quot;Да&amp;quot; и &amp;quot;Нет&amp;quot;.&lt;br /&gt;
&amp;lt;pawn&amp;gt;build_menu()&lt;br /&gt;
{&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;Yes&amp;quot;, &amp;quot;1&amp;quot;);&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;No&amp;quot;, &amp;quot;2&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	menu_setprop(g_Menu, MPROP_PERPAGE, 0);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Примечание&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Как вы можете видеть вместо command[] я указал числа. Это необходимо для более простой идентификации пунктов меню.&lt;br /&gt;
** Я так-же добавил menu_setprop. Это говорит нашему меню что оно не имеет страниц. Для дополнительной информации смотрите в amxconst.inc&lt;br /&gt;
&lt;br /&gt;
=== Показывает меню голосования ===&lt;br /&gt;
Для того что-бы показать меню мы должны использовать menu_display.&lt;br /&gt;
&amp;lt;pawn&amp;gt;menu_display ( id, menu, page )&amp;lt;/pawn&amp;gt;&lt;br /&gt;
* id - id пользователя которому надо показать это меню.&lt;br /&gt;
* menu - тут указываем хэндл меню которое показываем пользователю.&lt;br /&gt;
* page - какая страница (номер страницы меню) с которой начинаем. Страницы меню начинаются с 0.&lt;br /&gt;
&lt;br /&gt;
Ok теперь посмотрим на наш код.&lt;br /&gt;
&amp;lt;pawn&amp;gt;public startvote(id)&lt;br /&gt;
{&lt;br /&gt;
	for(new i = 0; i &amp;lt; 33; i++)&lt;br /&gt;
	{&lt;br /&gt;
		if( is_user_alive(i) )&lt;br /&gt;
		{&lt;br /&gt;
			menu_display(i, g_Menu, 0);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;Примечание:&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Используем цыкл для прохождения по всем игрокам и показываем меню тем кто живой.&lt;br /&gt;
&lt;br /&gt;
=== Обработка выборов меню ===&lt;br /&gt;
Последний этап заключается в обработке выбора меню. Это делается через функцию обработки.&lt;br /&gt;
Она вызывается каждый раз когда пользователь сделал выбор.&lt;br /&gt;
Вот  &amp;lt;b&amp;gt;3&amp;lt;/b&amp;gt; переменные которые передаются в функцию.&lt;br /&gt;
* id - id пользователя&lt;br /&gt;
* menu - открытое меню у пользователя&lt;br /&gt;
* item - тут выбор пункта меню пользователем&lt;br /&gt;
&lt;br /&gt;
Далее мы объявляем несколько специальных переменных таких как меню выхода.&lt;br /&gt;
&amp;lt;pawn&amp;gt;#define MENU_EXIT	-3&lt;br /&gt;
#define	MENU_BACK	-2&lt;br /&gt;
#define MENU_MORE	-1&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам надо проверить если пункт меню выбран и он не является специальной переменной&lt;br /&gt;
&amp;lt;pawn&amp;gt;if( item &amp;lt; 0 ) return PLUGIN_CONTINUE;&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующим шагом мы получаем информацию о выбранном пункте меню. Все что мы ищем это номер пункта меню. (Да = 1, Нет = 2).&lt;br /&gt;
Для этого надо использовать menu_item_getinfo.&lt;br /&gt;
&amp;lt;pawn&amp;gt;menu_item_getinfo ( menu, item, &amp;amp;access, command[], cmdlen, name[]=&amp;quot;&amp;quot;, namelen=0, &amp;amp;callback )&amp;lt;/pawn&amp;gt;&lt;br /&gt;
* menu - меню в котором находится пункт меню.&lt;br /&gt;
* item - the item itself&lt;br /&gt;
* &amp;amp;access - (edit)&lt;br /&gt;
* command[] - (edit)(это то где сохраняются идентификационные номера меню)&lt;br /&gt;
* cmdlen - размер command[]&lt;br /&gt;
* name[] - имя пункта меню&lt;br /&gt;
* namelen - размер name[]&lt;br /&gt;
* &amp;amp;callback - (edit)&lt;br /&gt;
&lt;br /&gt;
После того как мы получили информацию о пуектах меню, надо взять из command[] номера выбранных меню(это должно быть 1 или 2). &lt;br /&gt;
Теперь надо добавить в g_Votes теми голосами что были сделаны.&lt;br /&gt;
Вот как завершонная функция должна выглядеть:&lt;br /&gt;
&amp;lt;pawn&amp;gt;public menu_handle(id, menu, item)&lt;br /&gt;
{&lt;br /&gt;
	if( item &amp;lt; 0 ) return PLUGIN_CONTINUE;&lt;br /&gt;
	&lt;br /&gt;
	// Get item info&lt;br /&gt;
	new cmd[3];&lt;br /&gt;
	new access, callback;&lt;br /&gt;
	&lt;br /&gt;
	menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);&lt;br /&gt;
	&lt;br /&gt;
	new iChoice = str_to_num(cmd);&lt;br /&gt;
	&lt;br /&gt;
	g_Votes[iChoice]++;&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Завершение ===&lt;br /&gt;
Это конец. Вы завершили Урок по созданию меню. Используя новую систему меню можно создать более удобное управление.&lt;br /&gt;
В следующем уроке вы увидите более сложную систему меню которая будет использовать callbacks, уничтожение меню и создание.&lt;br /&gt;
Вот код который должен получится посли всех действий.&lt;br /&gt;
&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new g_Menu;	// Переменная обработки главного меню&lt;br /&gt;
new g_Votes[3];	// Сохраняем голосования Да как 1, No как 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	// Регистрируем ваш плагин&lt;br /&gt;
	register_plugin(&amp;quot;Vote Menu&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Freecode&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Регистрируем меню смены карты&lt;br /&gt;
	g_Menu = menu_create(&amp;quot;Change Level?&amp;quot;,&amp;quot;menu_handle&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	register_clcmd(&amp;quot;amx_startvote&amp;quot;,&amp;quot;startvote&amp;quot;,ADMIN_CFG,&amp;quot;Gaben&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Теперь нам надо создать наше меню&lt;br /&gt;
	build_menu();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
build_menu()&lt;br /&gt;
{&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;Yes&amp;quot;, &amp;quot;1&amp;quot;);&lt;br /&gt;
	menu_additem(g_Menu, &amp;quot;No&amp;quot;, &amp;quot;2&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	menu_setprop(g_Menu, MPROP_PERPAGE, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public startvote(id)&lt;br /&gt;
{&lt;br /&gt;
	for(new i = 0; i &amp;lt; 33; i++)&lt;br /&gt;
	{&lt;br /&gt;
		if( is_user_alive(i) )&lt;br /&gt;
		{&lt;br /&gt;
			menu_display(i, g_Menu, 0);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public menu_handle(id, menu, item)&lt;br /&gt;
{&lt;br /&gt;
	if( item &amp;lt; 0 ) return PLUGIN_CONTINUE;&lt;br /&gt;
	&lt;br /&gt;
	// Получаем информацию о пункте&lt;br /&gt;
	new cmd[3];&lt;br /&gt;
	new access, callback;&lt;br /&gt;
	&lt;br /&gt;
	menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);&lt;br /&gt;
	&lt;br /&gt;
	new iChoice = str_to_num(cmd);&lt;br /&gt;
	&lt;br /&gt;
	g_Votes[iChoice]++;&lt;br /&gt;
	&lt;br /&gt;
	return PLUGIN_HANDLED;&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Temp_Entity_Events_(Half-Life_1)&amp;diff=3771</id>
		<title>Ru Temp Entity Events (Half-Life 1)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Temp_Entity_Events_(Half-Life_1)&amp;diff=3771"/>
		<updated>2007-01-18T13:46:22Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Типы сообщений */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Half-Life 1]]&lt;br /&gt;
[[Category:Russian]]&lt;br /&gt;
[[Category:Scripting (AMX Mod X)]]&lt;br /&gt;
&lt;br /&gt;
Temp Entity - это временные объекты на стороне клиента, которые создаются при посылке специальных сообщений сервером. Например, с помощью таких рассылок можно формировать эффекты трассирующих пуль, вызрывы, вспышки, а также мертвые тела игроков и многое другое.&lt;br /&gt;
&lt;br /&gt;
=Типы сообщений=&lt;br /&gt;
&lt;br /&gt;
Типы сообщений определяют механизм рассылки сообщений клиентам, а также адресатов. Типы описываются макроопределениями MSG_?, которые можно найти в файле const.h [[Ru:HLSDK|HLSDK]], или message_const.inc AMX Mod X [[Ru:API|API]]. Типы используются в качестве значения аргумента ''dest'' функции [http://www.amxmodx.org/funcwiki.php?go=func&amp;amp;id=262 message_begin()]:&lt;br /&gt;
&amp;lt;pawn&amp;gt;#define MSG_BROADCAST		0	&lt;br /&gt;
	// сообщение может быть доставлено всем клиентам&lt;br /&gt;
#define MSG_ONE			1&lt;br /&gt;
	// сообщение будет доставлено только одному клиенту (msg_entity)&lt;br /&gt;
#define MSG_ALL			2&lt;br /&gt;
	// сообщение будет доставлено всем клиентам&lt;br /&gt;
#define MSG_INIT		3&lt;br /&gt;
	// write to the init string(?)&lt;br /&gt;
#define MSG_PVS			4&lt;br /&gt;
	// сообщение может быть доставлено клиентам, находящимся в&lt;br /&gt;
	// в области видимости точки с координатами org&lt;br /&gt;
#define MSG_PAS			5&lt;br /&gt;
	// сообщение может быть доставлено клиентам, находящимся в&lt;br /&gt;
	// зоне слышимости от точки org&lt;br /&gt;
#define MSG_PVS_R		6&lt;br /&gt;
	// аналогично MSG_PVS с гарантией доставки сообщений&lt;br /&gt;
#define MSG_PAS_R		7&lt;br /&gt;
	// аналогично MSG_PAS с гарантией доставки сообщений&lt;br /&gt;
#define MSG_ONE_UNRELIABLE	8&lt;br /&gt;
	// аналогично MSG_ONE, но доставка сообщения НЕ гарантируется&lt;br /&gt;
#define MSG_SPEC		9&lt;br /&gt;
	// отправлка сообщения всем прокси для зрителей (HLTV?)&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= События TempEnt =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 0: TE_BEAMPOINTS ==&lt;br /&gt;
&lt;br /&gt;
Создает луч между 2-мя точками.&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! Настройка || Диапазон || Настройки по-умолчанию || Описание&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Начало&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| X Y Z (координаты)&lt;br /&gt;
|Координата первого энтити или 0 0 0&lt;br /&gt;
|Начальная точка луча&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Конец&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| X Y Z (координаты)&lt;br /&gt;
|Координата второго энтити или 0 0 0&lt;br /&gt;
|Конечная точка луча&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Спрайт&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Путь к спрайту&lt;br /&gt;
|&amp;quot;sprites/laserbeam.spr&amp;quot;&lt;br /&gt;
|Собственно, луч&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Первый кадр&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|0&lt;br /&gt;
|Кадр, с которого будет проигрываться спрайт&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| FPS&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|0&lt;br /&gt;
|Частота кадров, в 0.1 (10 = 1 fps)&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;0&amp;quot;| Жизнь спрайта&lt;br /&gt;
|nowrap=&amp;quot;0&amp;quot;| 0-255&lt;br /&gt;
|50&lt;br /&gt;
|Промежуток времени, в течении которого видно спрайт, в 0.1 (50 = 5 секунд)&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Ширина&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|10&lt;br /&gt;
|Ширина луча в 0.1&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Искажение&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|10&lt;br /&gt;
|Амплитуда искажения, обозначает то, как сильно будет &amp;quot;ломаться&amp;quot; луч, снова в 0.1&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Цвет&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| R G B&lt;br /&gt;
|255 255 255&lt;br /&gt;
|Цвет луча в системе R G B&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Яркость&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|127&lt;br /&gt;
|Яркость луча&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;0&amp;quot;| Прокрутка&lt;br /&gt;
|nowrap=&amp;quot;0&amp;quot;| 0-255&lt;br /&gt;
|0&lt;br /&gt;
|Скорость прокрутки(?) луча в 0.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Формат:&lt;br /&gt;
&amp;lt;pawn&amp;gt;#define TE_BEAMPOINTS 0&lt;br /&gt;
	// Луч между 2 точками&lt;br /&gt;
&lt;br /&gt;
message_begin(MSG_? ,SVC_TEMPENTITY)&lt;br /&gt;
write_byte(TE_BEAMPOINTS)&lt;br /&gt;
write_coord()	// Начало луча: x&lt;br /&gt;
write_coord()	// y&lt;br /&gt;
write_coord()	// z&lt;br /&gt;
write_coord()	// Конец луча: x&lt;br /&gt;
write_coord()	// y&lt;br /&gt;
write_coord()	// z&lt;br /&gt;
write_short()	// Индекс спрайта&lt;br /&gt;
write_byte()	// Начальный кадр&lt;br /&gt;
write_byte()	// FPS в 0.1&lt;br /&gt;
write_byte()	// Время существования в 0.1&lt;br /&gt;
write_byte()	// Ширина в 0.1&lt;br /&gt;
write_byte()	// Искажение в 0.1&lt;br /&gt;
write_byte()	// Красный (R)&lt;br /&gt;
write_byte()	// Зеленый (G)&lt;br /&gt;
write_byte()	// Синий (B)&lt;br /&gt;
write_byte()	// Яркость&lt;br /&gt;
write_byte()	// Скорость прокрутки в 0.1&lt;br /&gt;
message_end()&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1: TE_BEAMENTPOINT ==&lt;br /&gt;
Создает луч между энтитей и точкой.&lt;br /&gt;
&lt;br /&gt;
Настройки:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! Настройка || Диапазон || Настройки по-умолчанию || Описание&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Начальное энтити&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| ID энтити&lt;br /&gt;
|Идентификатор первичного энтити&lt;br /&gt;
|Стартовая точка луча - центр (origin) энтити&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Конец&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| X Y Z (координаты)&lt;br /&gt;
|Координата второго энтити или 0 0 0&lt;br /&gt;
|Конечная точка луча&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Спрайт&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Путь к спрайту&lt;br /&gt;
|&amp;quot;sprites/laserbeam.spr&amp;quot;&lt;br /&gt;
|Собственно, луч&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Первый кадр&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|0&lt;br /&gt;
|Кадр, с которого будет проигрываться спрайт&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| FPS&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0&lt;br /&gt;
|Частота кадров, в 0.1 (10 = 1 fps)&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Жизнь спрайта&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|50&lt;br /&gt;
|Промежуток времени, в течении которого видно спрайт, в 0.1 (50 = 5 секунд)&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Ширина&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|10&lt;br /&gt;
|Ширина луча в 0.1&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Искажение&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|10&lt;br /&gt;
|Амплитуда искажения, обозначает то, как сильно будет &amp;quot;ломаться&amp;quot; луч, снова в 0.1&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Цвет&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| R G B&lt;br /&gt;
|255 255 255&lt;br /&gt;
|Цвет луча в системе R G B&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Яркость&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|127&lt;br /&gt;
|Яркость луча&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Прокрутка&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|0&lt;br /&gt;
|Скорость прокрутки(?) луча в 0.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Формат:&lt;br /&gt;
&amp;lt;pawn&amp;gt;#define TE_BEAMENTPOINT 1&lt;br /&gt;
	// Луч между энтитей и точкой&lt;br /&gt;
&lt;br /&gt;
message_begin(MSG_ ,SVC_TEMPENTITY)&lt;br /&gt;
write_byte(TE_BEAMENTPOINT)&lt;br /&gt;
write_short()	// Начальное энтити&lt;br /&gt;
write_coord()	// Конец луча&lt;br /&gt;
write_coord()&lt;br /&gt;
write_coord()&lt;br /&gt;
write_short()	// Индекс спрайта&lt;br /&gt;
write_byte()	// Начальный кадр&lt;br /&gt;
write_byte()	// FPS в 0.1&lt;br /&gt;
write_byte()	// Время существования в 0.1&lt;br /&gt;
write_byte()	// Ширина в 0.1&lt;br /&gt;
write_byte()	// Искажение в 0.1&lt;br /&gt;
write_byte()	// Красный (R)&lt;br /&gt;
write_byte()	// Зеленый (G)&lt;br /&gt;
write_byte()	// Синий (B)&lt;br /&gt;
write_byte()	// Яркость&lt;br /&gt;
write_byte()	// Скорость прокрутки в 0.1&lt;br /&gt;
message_end()&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2: TE_GUNSHOT ==&lt;br /&gt;
Создает частцы и звук рикошета.&lt;br /&gt;
&lt;br /&gt;
Настройки:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! Настройка || Диапазон || Настройки по-умолчанию || Описание&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Координата&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| X Y Z (координаты)&lt;br /&gt;
|Координата первого энтити или 0 0 0&lt;br /&gt;
|Точка для эффекта выстрела&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Формат:&lt;br /&gt;
&amp;lt;pawn&amp;gt;#define TE_GUNSHOT 2&lt;br /&gt;
	// Частцы и звук рикошета&lt;br /&gt;
&lt;br /&gt;
message_begin(MSG_ ,SVC_TEMPENTITY)&lt;br /&gt;
write_byte(TE_GUNSHOT)&lt;br /&gt;
write_coord()	// Координата: x&lt;br /&gt;
write_coord()	// y&lt;br /&gt;
write_coord()	// z&lt;br /&gt;
message_end()&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3: TE_EXPLOSION ==&lt;br /&gt;
&lt;br /&gt;
Creates an additive sprite, 2 dynamic lights, flickering particles, explosion sound, and moves the sprite vertically.&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! Option || Range || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Pos&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| X Y Z (coords)&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Origin of primary entity, or 0 0 0&lt;br /&gt;
|Position of the explosion effect&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Sprite&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| sprite path&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| &amp;quot;sprites/zerogxplode.spr&amp;quot;&lt;br /&gt;
|The additive sprite to use in the explosion&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Scale&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 1&lt;br /&gt;
|The scale of the sprite in the explosion, in 0.1s&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| FrameRate&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0&lt;br /&gt;
|The frame rate to show the sprite at, in 0.1s (10 = 1 fps)&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Flags&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-15&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0&lt;br /&gt;
|Sets flags for the explosion, you may also add these together:&lt;br /&gt;
*0: Default Half-Life explosion&lt;br /&gt;
*1: Sprite will be drawn opaque&lt;br /&gt;
*2: Do not render the dynamic lights&lt;br /&gt;
*4: Do not play the explosion sound&lt;br /&gt;
*8: Do not draw the particles&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Формат:&lt;br /&gt;
&amp;lt;pawn&amp;gt;#define TE_EXPLOSION 3&lt;br /&gt;
	// additive sprite, 2 dynamic lights, flickering particles, &lt;br /&gt;
	// explosion sound, move vertically 8 pps&lt;br /&gt;
&lt;br /&gt;
message_begin(MSG_ ,SVC_TEMPENTITY)&lt;br /&gt;
write_byte(TE_EXPLOSION)&lt;br /&gt;
write_coord()	// start position&lt;br /&gt;
write_coord()&lt;br /&gt;
write_coord()&lt;br /&gt;
write_short()	// sprite index&lt;br /&gt;
write_byte()	// scale in 0.1's&lt;br /&gt;
write_byte()	// framerate&lt;br /&gt;
write_byte()	// flags&lt;br /&gt;
message_end()&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4: TE_TAREXPLOSION ==&lt;br /&gt;
Creates the Quake 'tar' explosion.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! Option || Range || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Pos&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| X Y Z (coords)&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Origin of primary entity, or 0 0 0&lt;br /&gt;
|Position of the effect&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format:&lt;br /&gt;
&amp;lt;pawn&amp;gt;#define TE_TAREXPLOSION 4&lt;br /&gt;
	// Quake1 &amp;quot;tarbaby&amp;quot; explosion with sound&lt;br /&gt;
&lt;br /&gt;
message_begin(MSG_ ,SVC_TEMPENTITY)&lt;br /&gt;
write_byte(TE_TAREXPLOSION)&lt;br /&gt;
write_coord()	// start position&lt;br /&gt;
write_coord()&lt;br /&gt;
write_coord()&lt;br /&gt;
message_end()&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5: TE_SMOKE ==&lt;br /&gt;
Creates a rising alphablend sprite at 30 pps.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! Option || Range || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Pos&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| X Y Z (coords)&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Origin of primary entity, or 0 0 0&lt;br /&gt;
|Position of the smoke effect&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Sprite&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| sprite path&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| &amp;quot;sprites/steam1.spr&amp;quot;&lt;br /&gt;
|The alphablend sprite to use for smoke&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Scale&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 1&lt;br /&gt;
|The scale of the smoke, in 0.1s&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| FrameRate&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0&lt;br /&gt;
|The frame rate to show the sprite at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format:&lt;br /&gt;
&amp;lt;pawn&amp;gt;#define TE_SMOKE 5	&lt;br /&gt;
	// alphablend sprite, move vertically 30 pps&lt;br /&gt;
&lt;br /&gt;
message_begin(MSG_ ,SVC_TEMPENTITY)&lt;br /&gt;
write_byte(TE_SMOKE)&lt;br /&gt;
write_coord()	// start position&lt;br /&gt;
write_coord()&lt;br /&gt;
write_coord()&lt;br /&gt;
write_short()	// sprite index &lt;br /&gt;
write_byte()	// scale in 0.1's &lt;br /&gt;
write_byte()	// framerate &lt;br /&gt;
message_end()&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6: TE_TRACER ==&lt;br /&gt;
Создает эффект трассирующей пули из одной точки пространства в другую.&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! Option || Range || Значение по-умолчанию || Описание&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Pos&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| X Y Z (координаты)&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Origin of primary entity, or 0 0 0&lt;br /&gt;
|Начальная точка для эффекта&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| End&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| X Y Z (координаты)&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Origin of secondary entity, or 0 0 0&lt;br /&gt;
|Конечная точка для эффекта&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Формат:&lt;br /&gt;
&amp;lt;pawn&amp;gt;#define TE_TRACER 6&lt;br /&gt;
	// tracer effect from point to point&lt;br /&gt;
&lt;br /&gt;
message_begin(MSG_ ,SVC_TEMPENTITY)&lt;br /&gt;
write_byte(TE_TRACER)&lt;br /&gt;
write_coord()	// начальная позиция: x&lt;br /&gt;
write_coord()	// y&lt;br /&gt;
write_coord()	// z&lt;br /&gt;
write_coord()	// конечная позиция: x&lt;br /&gt;
write_coord()	// y&lt;br /&gt;
write_coord()	// z&lt;br /&gt;
message_end()&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7: TE_LIGHTNING ==&lt;br /&gt;
Simplified options for TE_BEAMPOINTS - Lightning effect.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! Option || Range || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Pos&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| X Y Z (coords)&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Origin of primary entity, or 0 0 0&lt;br /&gt;
|Starting point of the lightning&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| End&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| X Y Z (coords)&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Origin of secondary entity, or 0 0 0&lt;br /&gt;
|Ending point of the lightning&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Life&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 50&lt;br /&gt;
|The length of time the lightning shall remain, in 0.1s (50 = 5 seconds)&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Width&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 10&lt;br /&gt;
|The width of the lightning in 0.1s&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Noise&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 10&lt;br /&gt;
|The noise amplitude of the lightning, this controls how much it distorts, again in 0.1s&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Sprite&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| sprite path&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| &amp;quot;sprites/laserbeam.spr&amp;quot;&lt;br /&gt;
|The sprite to use in the lightning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Format:&lt;br /&gt;
&amp;lt;pawn&amp;gt;#define TE_LIGHTNING 7&lt;br /&gt;
	// TE_BEAMPOINTS with simplified parameters&lt;br /&gt;
&lt;br /&gt;
message_begin(MSG_ ,SVC_TEMPENTITY)&lt;br /&gt;
write_byte(TE_LIGHTNING)&lt;br /&gt;
write_coord()	// start position&lt;br /&gt;
write_coord()&lt;br /&gt;
write_coord()&lt;br /&gt;
write_coord()	// end position &lt;br /&gt;
write_coord()&lt;br /&gt;
write_coord()&lt;br /&gt;
write_byte()	// life in 0.1's &lt;br /&gt;
write_byte()	// width in 0.1's &lt;br /&gt;
write_byte()	// amplitude in 0.01's &lt;br /&gt;
write_short()	// sprite model index&lt;br /&gt;
message_end()&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8: TE_BEAMENTS ==&lt;br /&gt;
Creates a beam between the primary entity and another entity.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! Option || Range || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Start Entity&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| ID of Entity&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Primary entity id&lt;br /&gt;
|Starting point of the beam from the id's origin&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| End Entity&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| ID of Entity&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Secondary entity id&lt;br /&gt;
|Ending point of the beam to the id's origin&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Sprite&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| sprite path&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| &amp;quot;sprites/laserbeam.spr&amp;quot;&lt;br /&gt;
|The sprite to use in the beam&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| FrameStart&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0&lt;br /&gt;
|The frame to start with in the sprite&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| FrameRate&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0&lt;br /&gt;
|The frame rate to show the sprite at, in 0.1s (10 = 1 fps)&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Life&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 50&lt;br /&gt;
|The length of time the beam shall remain, in 0.1s (50 = 5 seconds)&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Width&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 10&lt;br /&gt;
|The width of the beam in 0.1s&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Noise&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 10&lt;br /&gt;
|The noise amplitude of the beam, this controls how much the beam distorts, again in 0.1s&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Color&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| R G B&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 255 255 255&lt;br /&gt;
|The color of the beam in the RBG triplet value&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Brightness&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 127&lt;br /&gt;
|The brightness of the beam&lt;br /&gt;
|-&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| Scroll&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0-255&lt;br /&gt;
|nowrap=&amp;quot;1&amp;quot;| 0&lt;br /&gt;
|The scroll speed of the beam, in 0.1s (??)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Format:&lt;br /&gt;
&amp;lt;pawn&amp;gt;#define TE_BEAMENTS 8&lt;br /&gt;
	// Create a beam between two entities&lt;br /&gt;
&lt;br /&gt;
message_begin(MSG_ ,SVC_TEMPENTITY)&lt;br /&gt;
write_byte(TE_BEAMENTS)&lt;br /&gt;
write_short()	// start entity&lt;br /&gt;
write_short()  // end entity&lt;br /&gt;
write_short()	// sprite index&lt;br /&gt;
write_byte()	// starting frame&lt;br /&gt;
write_byte()	// frame rate in 0.1's&lt;br /&gt;
write_byte()	// life in 0.1's&lt;br /&gt;
write_byte()	// line width in 0.1's&lt;br /&gt;
write_byte()	// noise amplitude in 0.01's&lt;br /&gt;
write_byte()	// red&lt;br /&gt;
write_byte()	// green&lt;br /&gt;
write_byte()	// blue&lt;br /&gt;
write_byte()	// brightness&lt;br /&gt;
write_byte()	// scroll speed in 0.1's&lt;br /&gt;
message_end()&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: add rest, I'll get this done eventually.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Talk:Ru_Alternative_Language&amp;diff=3770</id>
		<title>Talk:Ru Alternative Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Talk:Ru_Alternative_Language&amp;diff=3770"/>
		<updated>2007-01-18T13:45:26Z</updated>

		<summary type="html">&lt;p&gt;Slogic: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Slogic|Slogic]]: Если вставить шаблон на русской странце, то шаблон не понимает, что мы создали его на русской странице и не правильно создает ссылки: должен на английскую версию, а создает опять на русскую.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Half-Life_1_Game_Events&amp;diff=3767</id>
		<title>Half-Life 1 Game Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Half-Life_1_Game_Events&amp;diff=3767"/>
		<updated>2007-01-18T13:13:46Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* WeaponList */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Half-Life 1]]&lt;br /&gt;
[[Category:Scripting (AMX Mod X)]]&lt;br /&gt;
= Half-Life Events =&lt;br /&gt;
In [[Pawn]] you are able to hook in-game events with [http://www.amxmodx.org/funcwiki.php?go=func&amp;amp;id=26 register_event]. Here are the list of the standard Half-Life 1 and Counter-Strike events and their parameters which can be read with [http://www.amxmodx.org/funcwiki.php?go=func&amp;amp;id=132 read_data]&lt;br /&gt;
&lt;br /&gt;
See the [[Advanced Scripting (AMX Mod X)#Events.2FMessages|Advanced Scripting]] article for more on events and messages.&lt;br /&gt;
&lt;br /&gt;
== ADStop ==&lt;br /&gt;
{{qnotice|No Information available for this event}}&lt;br /&gt;
{{begin-hl1msg|ADStop}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== AllowSpec ==&lt;br /&gt;
Changes whether or not &amp;quot;SPECTATE&amp;quot; appears on the change team menu. Called whenever the allow_spectators cvar is changed, with its new value sent as the byte.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|This changes how the change team menu appears, but spectating functionality is based off of the actual cvar value.}}&lt;br /&gt;
{{begin-hl1msg|AllowSpec|byte}}&lt;br /&gt;
{{hl1msg|byte|Allowed}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== AmmoPickup ==&lt;br /&gt;
Temporarily draws [[HUD]] the ammo amount and ammo type [[HUD]] icon in the middle of the right side of the screen.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Draw time is dependent on the ''hud_drawhistory_time'' client CVAR value}}&lt;br /&gt;
{{begin-hl1msg|AmmoPickup|byte, byte}}&lt;br /&gt;
{{hl1msg|byte|AmmoID}}&lt;br /&gt;
{{hl1msg|byte|Ammount}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== AmmoX ==&lt;br /&gt;
Updates green bar indicator in the [[HUD]] weapons-list. Also updates [[HUD]] backpack ammo number in the lower right corner of the screen in case the given ammo type are compatible with the current weapon.&lt;br /&gt;
{{begin-hl1msg|AmmoX|byte, byte}}&lt;br /&gt;
{{hl1msg|byte|AmmoID}}&lt;br /&gt;
{{hl1msg|byte|Ammount}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BarTime ==&lt;br /&gt;
Draws a [[HUD]] progress bar which is filled from 0% to 100% for the time Duration seconds and then disappeared.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Set Duration to 0 to hide the bar.}}&lt;br /&gt;
{{begin-hl1msg|BarTime|short}}&lt;br /&gt;
{{hl1msg|short|Duration}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BarTime2 ==&lt;br /&gt;
The same as BarTime but StartPC is specify how many per cents of the bar are (already) filled.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Display time can be calculated with this formula: ''(1 - StartPC/100) / Duration''}}&lt;br /&gt;
{{begin-hl1msg|BarTime2|short, short}}&lt;br /&gt;
{{hl1msg|short|Duration}}&lt;br /&gt;
{{hl1msg|short|StartPC}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Battery ==&lt;br /&gt;
Updates the icon and number of the armor on the [[HUD]].&lt;br /&gt;
{{begin-hl1msg|Battery|short}}&lt;br /&gt;
{{hl1msg|short|Armor}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BlinkAcct ==&lt;br /&gt;
Makes a player's money display flash rapidly, until it flashes a total of BlinkAmt times.&lt;br /&gt;
{{begin-hl1msg|BlinkAcct|byte}}&lt;br /&gt;
{{hl1msg|byte|BlinkAmt}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BombDrop ==&lt;br /&gt;
The first three arguments are the origin of the dropped bomb. The last argument is set to 1 if the bomb has been planted. It is 0 if the bomb was dropped due to voluntary dropping or death/disconnect. Setting the last argument 1, will also trigger the round timer to hide. It also will show the dropped bomb on the Terrorist team's radar in the location specified by the first three arguments.&lt;br /&gt;
{{begin-hl1msg|BombDrop|coord, coord, coord, byte}}&lt;br /&gt;
{{hl1msg|coord|X}}&lt;br /&gt;
{{hl1msg|coord|Y}}&lt;br /&gt;
{{hl1msg|coord|Z}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BombPickup ==&lt;br /&gt;
This message just tells the game that the bomb has been picked up. It will cause the dropped/planted bomb to disappear from the Terrorist team's radar. &lt;br /&gt;
{{begin-hl1msg|BombPickup}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BotProgress ==&lt;br /&gt;
Used by CZ's bots when learning a new map. Displays a progress bar in the middle of the screen, with some header text. The bar doesn't move, and you can't do anything while the bar is displayed. This is a different style of progress bar than from the BarTime event. This really doesn't display well in CS.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Flag can be 0 (update bar), 1 (create new bar), or 2 (remove bar). When using flag 0, send all arguments. When using flag 1, send only Flag and Header. When using flag 2, send only Flag.}}&lt;br /&gt;
{{begin-hl1msg|BotProgress|byte, byte, string}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{hl1msg|byte|Progress}}&lt;br /&gt;
{{hl1msg|string|Header}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BotVoice ==&lt;br /&gt;
Displays (or hides) the voice icon above a user's head and the talking icon on the right side of the screen. This is called by CZ for bots; it's not called by regular players, although you &amp;lt;i&amp;gt;can&amp;lt;/i&amp;gt; specify a regular player (non-bot) for the playerIndex. Status is 1 for talking, or 0 for not talking.&lt;br /&gt;
{{begin-hl1msg|BotVoice|byte, byte}}&lt;br /&gt;
{{hl1msg|byte|Status}}&lt;br /&gt;
{{hl1msg|byte|playerIndex}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Brass ==&lt;br /&gt;
Creates a brass shell. Used, for example, by the AWP, after firing.&lt;br /&gt;
{{begin-hl1msg|Brass|byte, coord, coord, coord, coord, coord, coord, coord, coord, coord, angle, short, byte, byte, byte}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{hl1msg|coord|Start X}}&lt;br /&gt;
{{hl1msg|coord|Start Y}}&lt;br /&gt;
{{hl1msg|coord|Start Z}}&lt;br /&gt;
{{hl1msg|coord|Velocity X?}}&lt;br /&gt;
{{hl1msg|coord|Velocity Y?}}&lt;br /&gt;
{{hl1msg|coord|Velocity Z?}}&lt;br /&gt;
{{hl1msg|coord|Unknown X}}&lt;br /&gt;
{{hl1msg|coord|Unknown Y}}&lt;br /&gt;
{{hl1msg|coord|Unknown Z}}&lt;br /&gt;
{{hl1msg|angle|Life?}}&lt;br /&gt;
{{hl1msg|short|Model?}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BuyClose ==&lt;br /&gt;
Forces the buy menu to close. This is not called when the player closes the buy menu by himself; it's only called when the game forces him to do so (ie: he walks outside of the buy zone, gets killed, etcetera).&lt;br /&gt;
{{begin-hl1msg|BuyClose}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ClCorpse ==&lt;br /&gt;
Spawns a player's corpse. Model is the player's model, for example: &amp;quot;leet&amp;quot;. Delay is the delay before animation plaback, can be negative value.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|The Origin and Delay is in non-standard format.}}&lt;br /&gt;
{{begin-hl1msg|ClCorpse|string, long, long, long, coord, coord, coord, long, byte, byte, byte, byte}}&lt;br /&gt;
{{hl1msg|string|Model}}&lt;br /&gt;
{{hl1msg|long|OriginX}}&lt;br /&gt;
{{hl1msg|long|OriginY}}&lt;br /&gt;
{{hl1msg|long|OriginZ}}&lt;br /&gt;
{{hl1msg|coord|AngleX}}&lt;br /&gt;
{{hl1msg|coord|AngleY}}&lt;br /&gt;
{{hl1msg|coord|AngleZ}}&lt;br /&gt;
{{hl1msg|long|Delay}}&lt;br /&gt;
{{hl1msg|byte|Sequence}}&lt;br /&gt;
{{hl1msg|byte|unknown}}&lt;br /&gt;
{{hl1msg|byte|TeamID}}&lt;br /&gt;
{{hl1msg|byte|PlayerID}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Crosshair ==&lt;br /&gt;
Draws/removes the crosshair. If Flag is set to 1 the crosshair will be drawn.&lt;br /&gt;
{{begin-hl1msg|Crosshair|byte}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== CurWeapon ==&lt;br /&gt;
Updates the clip ammo number and weapon's corresponding ammo type icon on the [[HUD]].&lt;br /&gt;
{{begin-hl1msg|CurWeapon|byte, byte, byte}}&lt;br /&gt;
{{hl1msg|byte|isActive}}&lt;br /&gt;
{{hl1msg|byte|WeaponID}}&lt;br /&gt;
{{hl1msg|byte|ClipAmmo}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== CZCareer ==&lt;br /&gt;
Supplies certain updates to the player regarding Condition Zero singleplayer missions.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|See the [[CZCareer]] page for more information.}}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Using an invalid type has no repercussions whatsoever. Therefore, you can use this to make your own custom communications (you can send any number of arguments of any type after the first string).}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|The Type argument is case-sensitive.}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|This event does nothing in CS and CZ multiplayer.}}&lt;br /&gt;
{{begin-hl1msg|CZCareer|string,*}}&lt;br /&gt;
{{hl1msg|string|Type}}&lt;br /&gt;
{{hl1msg|*|Parameters}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== CZCareerHUD ==&lt;br /&gt;
Displays certain HUD elements regarding Condition Zero singleplayer missions.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|See the [[CZCareerHUD]] page for more information.}}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Using an invalid type has no repercussions whatsoever. Therefore, you can use this to make your own custom communications (you can send any number of arguments of any type after the first string).}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|The Type argument is case-sensitive.}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|This event has some limited functionality in CS and CZ multiplayer (albeit better in CZ).}}&lt;br /&gt;
{{begin-hl1msg|CZCareerHUD|string,*}}&lt;br /&gt;
{{hl1msg|string|Type}}&lt;br /&gt;
{{hl1msg|*|Parameters}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Damage == &lt;br /&gt;
Called when a player takes damage, to display the red locational indicators.&lt;br /&gt;
{{begin-hl1msg|Damage|byte, byte, long, coord, coord, coord}}&lt;br /&gt;
{{hl1msg|byte|Damage save (armor)}}&lt;br /&gt;
{{hl1msg|byte|Damage take (health)}}&lt;br /&gt;
{{hl1msg|long|Damage type}}&lt;br /&gt;
{{hl1msg|coord|X}}&lt;br /&gt;
{{hl1msg|coord|Y}}&lt;br /&gt;
{{hl1msg|coord|Z}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== DeathMsg ==&lt;br /&gt;
Fired to all players (MSG_ALL or MSG_BROADCAST) to notify them of a death. This generates the [[HUD]] message the client sees in the upper right corner of their screen.&amp;lt;br&amp;gt;&lt;br /&gt;
Also prints the console text message &amp;quot;KillerName killed VictimName with WeaponName&amp;quot; or &amp;quot;*** KillerName killed VictimName with a headshot from WeaponName ***&amp;quot;&lt;br /&gt;
{{begin-hl1msg|DeathMsg|byte, byte, byte, string}}&lt;br /&gt;
{{hl1msg|byte|KillerID}}&lt;br /&gt;
{{hl1msg|byte|VictimID}}&lt;br /&gt;
{{hl1msg|byte|isHeadshot}}&lt;br /&gt;
{{hl1msg|string|WeaponName}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== FlashBat ==&lt;br /&gt;
Updates the flashlight battery charge on the [[HUD]]. ChargePC is in per cents.&lt;br /&gt;
{{begin-hl1msg|FlashBat|byte}}&lt;br /&gt;
{{hl1msg|byte|ChargePC}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Flashlight ==&lt;br /&gt;
Updates the flashlight state and battery charge on the [[HUD]]. If Flag is set to 1 the flashlight [[HUD]] icon will be shown as active.&lt;br /&gt;
{{begin-hl1msg|Flashlight|byte, byte}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{hl1msg|byte|ChargePC}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Fog ==&lt;br /&gt;
{{qnotice|No Information available for this event}}&lt;br /&gt;
{{begin-hl1msg|Fog}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ForceCam ==&lt;br /&gt;
Called whenever mp_forcecam or mp_forcechasecam are changed, with their new values passed. There is assumedly a third cvar that this tracks, but it is yet unknown. Note that this message doesn't actually change any of the spectating rules for the client.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Even if mp_forcechasecam is set to 2, it is sent by this message as 1.}}&lt;br /&gt;
{{begin-hl1msg|ForceCam|byte,byte,byte}}&lt;br /&gt;
{{hl1msg|byte|forcecamValue}}&lt;br /&gt;
{{hl1msg|byte|forcechasecamValue}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== HostageK ==&lt;br /&gt;
Temporary draws a blinking red dot on the CT players' radar when hostage is killed.&lt;br /&gt;
{{begin-hl1msg|HostageK|byte}}&lt;br /&gt;
{{hl1msg|byte|HostageID}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== HostagePos ==&lt;br /&gt;
Draws/updates the blue mark on the CT players' radar which represents the corresponding hostage's position.&lt;br /&gt;
{{begin-hl1msg|HostagePos|byte, byte, coord, coord, coord}}&lt;br /&gt;
{{hl1msg|byte|unknown}}&lt;br /&gt;
{{hl1msg|byte|HostageID}}&lt;br /&gt;
{{hl1msg|coord|X}}&lt;br /&gt;
{{hl1msg|coord|Y}}&lt;br /&gt;
{{hl1msg|coord|Z}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Money ==&lt;br /&gt;
Updates the Amount of money on the [[HUD]]. If the Flag is 1, the additional new-old [[HUD]] money amount difference will be also displayed.&lt;br /&gt;
{{begin-hl1msg|Money|long, byte}}&lt;br /&gt;
{{hl1msg|long|Amount}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== NVGToggle ==&lt;br /&gt;
Toggles night vision mode. For Flag: 1 is on, 0 is off.&lt;br /&gt;
{{begin-hl1msg|NVGToggle|byte}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ResetHUD ==&lt;br /&gt;
Resets the [[HUD]].&lt;br /&gt;
{{begin-hl1msg|ResetHUD}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== RoundTime ==&lt;br /&gt;
Updates the round timer on the [[HUD]]. Time is in seconds.&lt;br /&gt;
{{begin-hl1msg|RoundTime|short}}&lt;br /&gt;
{{hl1msg|short|Time}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== SayText ==&lt;br /&gt;
Prints say [[HUD]] text. Second parameter can be a predefined string or a custom one. In the last case the last two parameters isn't required.&amp;lt;br&amp;gt;&lt;br /&gt;
Some values of the predifined string: #Cstrike_Chat_AllDead, #Cstrike_Chat_All&lt;br /&gt;
{{begin-hl1msg|SayText|byte, string, string, string}}&lt;br /&gt;
{{hl1msg|byte|SenderID}}&lt;br /&gt;
{{hl1msg|string|String}}&lt;br /&gt;
{{hl1msg|string|unknown}}&lt;br /&gt;
{{hl1msg|string|Text}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Scenario ==&lt;br /&gt;
If Active is 0, this display will be hidden. If Active is 1, displays Sprite (valid names listed in sprites/hud.txt) to the right of the round timer with an alpha value of Alpha (100-255). If flashRate is nonzero, then the sprite will flash from given the given alpha to an alpha of 100, at a rate of flashRate (measured in ???). This is used by CZ to display how many hostages remain unrescued, and also to display the ticking bomb when it is planted.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|If Active is 0, don't send any other arguments afterwards. Also, you don't need to send either short if flashRate is just going to be 0.}}&amp;lt;br&amp;gt;&lt;br /&gt;
[[image:Cs_scenario_msg.jpg|frame|right|Scenario message in CS, using the following parameters: 1, d_mp5navy, 150]]&lt;br /&gt;
{{qnotice|Works in both CS and CZ!}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|In CZ (and possibly CS), if someone respawns after the bomb has been planted, their Scenario event will not work at all until the next round.}}&lt;br /&gt;
{{begin-hl1msg|Scenario|byte,string,byte,short,short}}&lt;br /&gt;
{{hl1msg|byte|Active}}&lt;br /&gt;
{{hl1msg|string|Sprite}}&lt;br /&gt;
{{hl1msg|byte|Alpha}}&lt;br /&gt;
{{hl1msg|short|flashRate}}&lt;br /&gt;
{{hl1msg|short|Unknown}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ScoreAttrib ==&lt;br /&gt;
Updates the scoreboard's attribute for the specified player. For the 2nd argument, 0 is nothing, 1 is dead, 2 is bomb, 4 is VIP.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Flag is a bitwise value so if VIP player dying with the bomb the Flag will be 7}}&lt;br /&gt;
{{begin-hl1msg|ScoreAttrib|byte, byte}}&lt;br /&gt;
{{hl1msg|byte|PlayerID}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ShowMenu ==&lt;br /&gt;
Displays a &amp;quot;menu&amp;quot; to a player (text on the left side of the screen). Acts like AMXX's show_menu (in fact, this is how AMXX shows a menu).&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Multipart should be 1 if your menu takes up multiple messages (ie: string is too big to fit into one). On the final message, Multipart should be 0.}}&lt;br /&gt;
{{begin-hl1msg|ShowMenu|short,char,byte,string}}&lt;br /&gt;
{{hl1msg|short|Keys}}&lt;br /&gt;
{{hl1msg|char|Time}}&lt;br /&gt;
{{hl1msg|byte|Multipart}}&lt;br /&gt;
{{hl1msg|string|Text}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== StatusIcon ==&lt;br /&gt;
Draws/removes the specified status [[HUD]] icon. For Status, 0 is Hide Icon, 1 is Show Icon, 2 is Flash Icon. Red, Green and Blue arguments is optional and is specified only when Status are not 0.&lt;br /&gt;
{{begin-hl1msg|StatusIcon|byte, string, byte, byte, byte}}&lt;br /&gt;
{{hl1msg|byte|Status}}&lt;br /&gt;
{{hl1msg|string|SpriteName}}&lt;br /&gt;
{{hl1msg|byte|Red}}&lt;br /&gt;
{{hl1msg|byte|Green}}&lt;br /&gt;
{{hl1msg|byte|Blue}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== StatusText ==&lt;br /&gt;
Specifies the status text format.&lt;br /&gt;
{{begin-hl1msg|StatusText|byte, string}}&lt;br /&gt;
{{hl1msg|byte|unknown}}&lt;br /&gt;
{{hl1msg|string|Text}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== StatusValue ==&lt;br /&gt;
Sends/updates the status values. For the Flag 1 the Value is TeamRelation, for 2 is PlayerID, for 3 is Health. For TeamRelation, 1 is Teammate player, 2 is Non-Teammate player, 3 is Hostage. If TeamRelation is the Hostage, PlayerID will be always 0.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Usually is fired as a triple message, for example:&amp;lt;br&amp;gt;&lt;br /&gt;
  (1, 2) - non-teammate player&amp;lt;br&amp;gt;&lt;br /&gt;
  (2, 7) - player index is 7&amp;lt;br&amp;gt;&lt;br /&gt;
  (3, 59) - health is 59}}&lt;br /&gt;
{{begin-hl1msg|StatusValue|byte, short}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{hl1msg|short|Value}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TaskTime ==&lt;br /&gt;
Displays a secondary timer above the round timer. Used for Condition Zero singleplayer missions.&amp;lt;br&amp;gt;If Time is -1, timer dissappears. If Time is any other negative value, it is displayed as green instead of yellow, and considered positive.&amp;lt;br&amp;gt;If Active is true, timer counts down. Otherwise, it is paused.&amp;lt;br&amp;gt;If Fade is above zero, the timer will slowly fade out after that many seconds have passed (even if the timer is inactive).&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|This event can only be used on missions that have an objective requiring a secondary timer!}}&lt;br /&gt;
{{begin-hl1msg|TaskTime|short, byte, byte}}&lt;br /&gt;
{{hl1msg|short|Time}}&lt;br /&gt;
{{hl1msg|byte|Active}}&lt;br /&gt;
{{hl1msg|byte|Fade}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TeamInfo ==&lt;br /&gt;
TeamName is either &amp;quot;UNASSIGNED&amp;quot;, &amp;quot;TERRORIST&amp;quot; or &amp;quot;CT&amp;quot;.&lt;br /&gt;
{{begin-hl1msg|TeamInfo|byte, string}}&lt;br /&gt;
{{hl1msg|byte|ID}}&lt;br /&gt;
{{hl1msg|string|TeamName}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TeamScore ==&lt;br /&gt;
Updates the team score on the score board. TeamName is either &amp;quot;TERRORIST&amp;quot; or &amp;quot;CT&amp;quot;.&lt;br /&gt;
{{begin-hl1msg|TeamScore|string, short}}&lt;br /&gt;
{{hl1msg|string|TeamName}}&lt;br /&gt;
{{hl1msg|short|Score}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TextMsg ==&lt;br /&gt;
{{qnotice|There does not necessarily have to be a total of 6 arguments, there could be as little as 2. For example you can send a message with the following:&amp;lt;br&amp;gt;&lt;br /&gt;
Arg1: 1&amp;lt;br&amp;gt;&lt;br /&gt;
Arg2: #Game_join_ct&amp;lt;br&amp;gt;&lt;br /&gt;
Arg3: 4HM | Pimp Daddy&amp;lt;br&amp;gt;}}&lt;br /&gt;
{{begin-hl1msg|TextMsg|byte, string, string, string, string, string}}&lt;br /&gt;
{{hl1msg|byte|ID}}&lt;br /&gt;
{{hl1msg|string|Message}}&lt;br /&gt;
{{hl1msg|string|Submsg}}&lt;br /&gt;
{{hl1msg|string|Submsg}}&lt;br /&gt;
{{hl1msg|string|Submsg}}&lt;br /&gt;
{{hl1msg|string|Submsg}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Train ==&lt;br /&gt;
Displays the speed bar used for controlling a train.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Speed is as follows: 0 (disable display), 1 (reverse), 2 (neutral), 3 (slow speed), 4 (medium speed), 5 (maximum speed)}}&lt;br /&gt;
{{begin-hl1msg|Train}}&lt;br /&gt;
{{hl1msg|byte|Speed}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TutorClose ==&lt;br /&gt;
Closes all CZ-style tutor popups.&lt;br /&gt;
{{begin-hl1msg|TutorClose}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TutorLine ==&lt;br /&gt;
{{qnotice|No Information available for this event}}&lt;br /&gt;
{{begin-hl1msg|TutorLine}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TutorState ==&lt;br /&gt;
{{qnotice|No Information available for this event}}&lt;br /&gt;
{{begin-hl1msg|TutorState}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TutorText ==&lt;br /&gt;
Used to display a CZ-style tutor popup.&lt;br /&gt;
{{begin-hl1msg|TutorText|string,byte,short,short,short}}&lt;br /&gt;
{{hl1msg|string|Unknown}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{hl1msg|short|Unknown}}&lt;br /&gt;
{{hl1msg|short|Unknown}}&lt;br /&gt;
{{hl1msg|short|Unknown}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== VGUIMenu ==&lt;br /&gt;
Displays a predefined VGUI menu. Keys is a keys bit sum.&lt;br /&gt;
{{begin-hl1msg|VGUIMenu|byte, short, char, byte, string}}&lt;br /&gt;
{{hl1msg|byte|unknown}}&lt;br /&gt;
{{hl1msg|short|Keys}}&lt;br /&gt;
{{hl1msg|char|unknown}}&lt;br /&gt;
{{hl1msg|byte|unknown}}&lt;br /&gt;
{{hl1msg|string|unknown}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ViewMode ==&lt;br /&gt;
{{qnotice|No Information available for this event (HLSDK says this switches to first-person view, but it doesn't seem to function as so)}}&lt;br /&gt;
{{begin-hl1msg|ViewMode}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== VoiceMask ==&lt;br /&gt;
Used to tell a client who he can hear over the microphone.&lt;br /&gt;
{{begin-hl1msg|VoiceMask|long, long}}&lt;br /&gt;
{{hl1msg|long|AudiblePlayersIndexBitSum}}&lt;br /&gt;
{{hl1msg|long|ServerBannedPlayersIndexBitSum}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== WeapPickup ==&lt;br /&gt;
Fired right before weapon is picked up.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Notice: &amp;quot;right before&amp;quot;.}}&lt;br /&gt;
{{begin-hl1msg|WeapPickup|byte}}&lt;br /&gt;
{{hl1msg|byte|WeaponID}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== WeaponList ==&lt;br /&gt;
Fired on new weapon registration.&lt;br /&gt;
{{begin-hl1msg|WeaponList|byte}}&lt;br /&gt;
{{hl1msg|string|Weapon Name}}&lt;br /&gt;
{{hl1msg|byte|Ammo1 ID}}&lt;br /&gt;
{{hl1msg|byte|Ammo1 Max}}&lt;br /&gt;
{{hl1msg|byte|Ammo2 ID}}&lt;br /&gt;
{{hl1msg|byte|Ammo2 Max}}&lt;br /&gt;
{{hl1msg|byte|Slot ID}}&lt;br /&gt;
{{hl1msg|byte|Position on Slot}}&lt;br /&gt;
{{hl1msg|byte|Weapon ID}}&lt;br /&gt;
{{hl1msg|byte|Flags}}&lt;br /&gt;
{{end-hl1msg}}&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Half-Life_1_Game_Events&amp;diff=3751</id>
		<title>Half-Life 1 Game Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Half-Life_1_Game_Events&amp;diff=3751"/>
		<updated>2007-01-12T17:30:00Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* WeapPickup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Half-Life 1]]&lt;br /&gt;
[[Category:Scripting (AMX Mod X)]]&lt;br /&gt;
= Half-Life Events =&lt;br /&gt;
In [[Pawn]] you are able to hook in-game events with [http://www.amxmodx.org/funcwiki.php?go=func&amp;amp;id=26 register_event]. Here are the list of the standard Half-Life 1 and Counter-Strike events and their parameters which can be read with [http://www.amxmodx.org/funcwiki.php?go=func&amp;amp;id=132 read_data]&lt;br /&gt;
&lt;br /&gt;
See the [[Advanced Scripting (AMX Mod X)#Events.2FMessages|Advanced Scripting]] article for more on events and messages.&lt;br /&gt;
&lt;br /&gt;
== ADStop ==&lt;br /&gt;
{{qnotice|No Information available for this event}}&lt;br /&gt;
{{begin-hl1msg|ADStop}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== AllowSpec ==&lt;br /&gt;
Changes whether or not &amp;quot;SPECTATE&amp;quot; appears on the change team menu. Called whenever the allow_spectators cvar is changed, with its new value sent as the byte.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|This changes how the change team menu appears, but spectating functionality is based off of the actual cvar value.}}&lt;br /&gt;
{{begin-hl1msg|AllowSpec|byte}}&lt;br /&gt;
{{hl1msg|byte|Allowed}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== AmmoPickup ==&lt;br /&gt;
Temporarily draws [[HUD]] the ammo amount and ammo type [[HUD]] icon in the middle of the right side of the screen.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Draw time is dependent on the ''hud_drawhistory_time'' client CVAR value}}&lt;br /&gt;
{{begin-hl1msg|AmmoPickup|byte, byte}}&lt;br /&gt;
{{hl1msg|byte|AmmoID}}&lt;br /&gt;
{{hl1msg|byte|Ammount}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== AmmoX ==&lt;br /&gt;
Updates green bar indicator in the [[HUD]] weapons-list. Also updates [[HUD]] backpack ammo number in the lower right corner of the screen in case the given ammo type are compatible with the current weapon.&lt;br /&gt;
{{begin-hl1msg|AmmoX|byte, byte}}&lt;br /&gt;
{{hl1msg|byte|AmmoID}}&lt;br /&gt;
{{hl1msg|byte|Ammount}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BarTime ==&lt;br /&gt;
Draws a [[HUD]] progress bar which is filled from 0% to 100% for the time Duration seconds and then disappeared.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Set Duration to 0 to hide the bar.}}&lt;br /&gt;
{{begin-hl1msg|BarTime|short}}&lt;br /&gt;
{{hl1msg|short|Duration}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BarTime2 ==&lt;br /&gt;
The same as BarTime but StartPC is specify how many per cents of the bar are (already) filled.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Display time can be calculated with this formula: ''(1 - StartPC/100) / Duration''}}&lt;br /&gt;
{{begin-hl1msg|BarTime2|short, short}}&lt;br /&gt;
{{hl1msg|short|Duration}}&lt;br /&gt;
{{hl1msg|short|StartPC}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Battery ==&lt;br /&gt;
Updates the icon and number of the armor on the [[HUD]].&lt;br /&gt;
{{begin-hl1msg|Battery|short}}&lt;br /&gt;
{{hl1msg|short|Armor}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BlinkAcct ==&lt;br /&gt;
Makes a player's money display flash rapidly, until it flashes a total of BlinkAmt times.&lt;br /&gt;
{{begin-hl1msg|BlinkAcct|byte}}&lt;br /&gt;
{{hl1msg|byte|BlinkAmt}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BombDrop ==&lt;br /&gt;
The first three arguments are the origin of the dropped bomb. The last argument is set to 1 if the bomb has been planted. It is 0 if the bomb was dropped due to voluntary dropping or death/disconnect. Setting the last argument 1, will also trigger the round timer to hide. It also will show the dropped bomb on the Terrorist team's radar in the location specified by the first three arguments.&lt;br /&gt;
{{begin-hl1msg|BombDrop|coord, coord, coord, byte}}&lt;br /&gt;
{{hl1msg|coord|X}}&lt;br /&gt;
{{hl1msg|coord|Y}}&lt;br /&gt;
{{hl1msg|coord|Z}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BombPickup ==&lt;br /&gt;
This message just tells the game that the bomb has been picked up. It will cause the dropped/planted bomb to disappear from the Terrorist team's radar. &lt;br /&gt;
{{begin-hl1msg|BombPickup}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BotProgress ==&lt;br /&gt;
Used by CZ's bots when learning a new map. Displays a progress bar in the middle of the screen, with some header text. The bar doesn't move, and you can't do anything while the bar is displayed. This is a different style of progress bar than from the BarTime event. This really doesn't display well in CS.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Flag can be 0 (update bar), 1 (create new bar), or 2 (remove bar). When using flag 0, send all arguments. When using flag 1, send only Flag and Header. When using flag 2, send only Flag.}}&lt;br /&gt;
{{begin-hl1msg|BotProgress|byte, byte, string}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{hl1msg|byte|Progress}}&lt;br /&gt;
{{hl1msg|string|Header}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BotVoice ==&lt;br /&gt;
Displays (or hides) the voice icon above a user's head and the talking icon on the right side of the screen. This is called by CZ for bots; it's not called by regular players, although you &amp;lt;i&amp;gt;can&amp;lt;/i&amp;gt; specify a regular player (non-bot) for the playerIndex. Status is 1 for talking, or 0 for not talking.&lt;br /&gt;
{{begin-hl1msg|BotVoice|byte, byte}}&lt;br /&gt;
{{hl1msg|byte|Status}}&lt;br /&gt;
{{hl1msg|byte|playerIndex}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Brass ==&lt;br /&gt;
Creates a brass shell. Used, for example, by the AWP, after firing.&lt;br /&gt;
{{begin-hl1msg|Brass|byte, coord, coord, coord, coord, coord, coord, coord, coord, coord, angle, short, byte, byte, byte}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{hl1msg|coord|Start X}}&lt;br /&gt;
{{hl1msg|coord|Start Y}}&lt;br /&gt;
{{hl1msg|coord|Start Z}}&lt;br /&gt;
{{hl1msg|coord|Velocity X?}}&lt;br /&gt;
{{hl1msg|coord|Velocity Y?}}&lt;br /&gt;
{{hl1msg|coord|Velocity Z?}}&lt;br /&gt;
{{hl1msg|coord|Unknown X}}&lt;br /&gt;
{{hl1msg|coord|Unknown Y}}&lt;br /&gt;
{{hl1msg|coord|Unknown Z}}&lt;br /&gt;
{{hl1msg|angle|Life?}}&lt;br /&gt;
{{hl1msg|short|Model?}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BuyClose ==&lt;br /&gt;
Forces the buy menu to close. This is not called when the player closes the buy menu by himself; it's only called when the game forces him to do so (ie: he walks outside of the buy zone, gets killed, etcetera).&lt;br /&gt;
{{begin-hl1msg|BuyClose}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ClCorpse ==&lt;br /&gt;
Spawns a player's corpse. Model is the player's model, for example: &amp;quot;leet&amp;quot;. Delay is the delay before animation plaback, can be negative value.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|The Origin and Delay is in non-standard format.}}&lt;br /&gt;
{{begin-hl1msg|ClCorpse|string, long, long, long, coord, coord, coord, long, byte, byte, byte, byte}}&lt;br /&gt;
{{hl1msg|string|Model}}&lt;br /&gt;
{{hl1msg|long|OriginX}}&lt;br /&gt;
{{hl1msg|long|OriginY}}&lt;br /&gt;
{{hl1msg|long|OriginZ}}&lt;br /&gt;
{{hl1msg|coord|AngleX}}&lt;br /&gt;
{{hl1msg|coord|AngleY}}&lt;br /&gt;
{{hl1msg|coord|AngleZ}}&lt;br /&gt;
{{hl1msg|long|Delay}}&lt;br /&gt;
{{hl1msg|byte|Sequence}}&lt;br /&gt;
{{hl1msg|byte|unknown}}&lt;br /&gt;
{{hl1msg|byte|TeamID}}&lt;br /&gt;
{{hl1msg|byte|PlayerID}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Crosshair ==&lt;br /&gt;
Draws/removes the crosshair. If Flag is set to 1 the crosshair will be drawn.&lt;br /&gt;
{{begin-hl1msg|Crosshair|byte}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== CurWeapon ==&lt;br /&gt;
Updates the clip ammo number and weapon's corresponding ammo type icon on the [[HUD]].&lt;br /&gt;
{{begin-hl1msg|CurWeapon|byte, byte, byte}}&lt;br /&gt;
{{hl1msg|byte|isActive}}&lt;br /&gt;
{{hl1msg|byte|WeaponID}}&lt;br /&gt;
{{hl1msg|byte|ClipAmmo}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== CZCareer ==&lt;br /&gt;
Supplies certain updates to the player regarding Condition Zero singleplayer missions.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|See the [[CZCareer]] page for more information.}}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Using an invalid type has no repercussions whatsoever. Therefore, you can use this to make your own custom communications (you can send any number of arguments of any type after the first string).}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|The Type argument is case-sensitive.}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|This event does nothing in CS and CZ multiplayer.}}&lt;br /&gt;
{{begin-hl1msg|CZCareer|string,*}}&lt;br /&gt;
{{hl1msg|string|Type}}&lt;br /&gt;
{{hl1msg|*|Parameters}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== CZCareerHUD ==&lt;br /&gt;
Displays certain HUD elements regarding Condition Zero singleplayer missions.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|See the [[CZCareerHUD]] page for more information.}}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Using an invalid type has no repercussions whatsoever. Therefore, you can use this to make your own custom communications (you can send any number of arguments of any type after the first string).}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|The Type argument is case-sensitive.}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|This event has some limited functionality in CS and CZ multiplayer (albeit better in CZ).}}&lt;br /&gt;
{{begin-hl1msg|CZCareerHUD|string,*}}&lt;br /&gt;
{{hl1msg|string|Type}}&lt;br /&gt;
{{hl1msg|*|Parameters}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Damage == &lt;br /&gt;
Called when a player takes damage, to display the red locational indicators.&lt;br /&gt;
{{begin-hl1msg|Damage|byte, byte, long, coord, coord, coord}}&lt;br /&gt;
{{hl1msg|byte|Damage save (armor)}}&lt;br /&gt;
{{hl1msg|byte|Damage take (health)}}&lt;br /&gt;
{{hl1msg|long|Damage type}}&lt;br /&gt;
{{hl1msg|coord|X}}&lt;br /&gt;
{{hl1msg|coord|Y}}&lt;br /&gt;
{{hl1msg|coord|Z}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== DeathMsg ==&lt;br /&gt;
Fired to all players (MSG_ALL or MSG_BROADCAST) to notify them of a death. This generates the [[HUD]] message the client sees in the upper right corner of their screen.&amp;lt;br&amp;gt;&lt;br /&gt;
Also prints the console text message &amp;quot;KillerName killed VictimName with WeaponName&amp;quot; or &amp;quot;*** KillerName killed VictimName with a headshot from WeaponName ***&amp;quot;&lt;br /&gt;
{{begin-hl1msg|DeathMsg|byte, byte, byte, string}}&lt;br /&gt;
{{hl1msg|byte|KillerID}}&lt;br /&gt;
{{hl1msg|byte|VictimID}}&lt;br /&gt;
{{hl1msg|byte|isHeadshot}}&lt;br /&gt;
{{hl1msg|string|WeaponName}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== FlashBat ==&lt;br /&gt;
Updates the flashlight battery charge on the [[HUD]]. ChargePC is in per cents.&lt;br /&gt;
{{begin-hl1msg|FlashBat|byte}}&lt;br /&gt;
{{hl1msg|byte|ChargePC}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Flashlight ==&lt;br /&gt;
Updates the flashlight state and battery charge on the [[HUD]]. If Flag is set to 1 the flashlight [[HUD]] icon will be shown as active.&lt;br /&gt;
{{begin-hl1msg|Flashlight|byte, byte}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{hl1msg|byte|ChargePC}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Fog ==&lt;br /&gt;
{{qnotice|No Information available for this event}}&lt;br /&gt;
{{begin-hl1msg|Fog}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ForceCam ==&lt;br /&gt;
Called whenever mp_forcecam or mp_forcechasecam are changed, with their new values passed. There is assumedly a third cvar that this tracks, but it is yet unknown. Note that this message doesn't actually change any of the spectating rules for the client.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Even if mp_forcechasecam is set to 2, it is sent by this message as 1.}}&lt;br /&gt;
{{begin-hl1msg|ForceCam|byte,byte,byte}}&lt;br /&gt;
{{hl1msg|byte|forcecamValue}}&lt;br /&gt;
{{hl1msg|byte|forcechasecamValue}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== HostageK ==&lt;br /&gt;
Temporary draws a blinking red dot on the CT players' radar when hostage is killed.&lt;br /&gt;
{{begin-hl1msg|HostageK|byte}}&lt;br /&gt;
{{hl1msg|byte|HostageID}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== HostagePos ==&lt;br /&gt;
Draws/updates the blue mark on the CT players' radar which represents the corresponding hostage's position.&lt;br /&gt;
{{begin-hl1msg|HostagePos|byte, byte, coord, coord, coord}}&lt;br /&gt;
{{hl1msg|byte|unknown}}&lt;br /&gt;
{{hl1msg|byte|HostageID}}&lt;br /&gt;
{{hl1msg|coord|X}}&lt;br /&gt;
{{hl1msg|coord|Y}}&lt;br /&gt;
{{hl1msg|coord|Z}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Money ==&lt;br /&gt;
Updates the Amount of money on the [[HUD]]. If the Flag is 1, the additional new-old [[HUD]] money amount difference will be also displayed.&lt;br /&gt;
{{begin-hl1msg|Money|long, byte}}&lt;br /&gt;
{{hl1msg|long|Amount}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== NVGToggle ==&lt;br /&gt;
Toggles night vision mode. For Flag: 1 is on, 0 is off.&lt;br /&gt;
{{begin-hl1msg|NVGToggle|byte}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ResetHUD ==&lt;br /&gt;
Resets the [[HUD]].&lt;br /&gt;
{{begin-hl1msg|ResetHUD}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== RoundTime ==&lt;br /&gt;
Updates the round timer on the [[HUD]]. Time is in seconds.&lt;br /&gt;
{{begin-hl1msg|RoundTime|short}}&lt;br /&gt;
{{hl1msg|short|Time}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== SayText ==&lt;br /&gt;
Prints say [[HUD]] text. Second parameter can be a predefined string or a custom one. In the last case the last two parameters isn't required.&amp;lt;br&amp;gt;&lt;br /&gt;
Some values of the predifined string: #Cstrike_Chat_AllDead, #Cstrike_Chat_All&lt;br /&gt;
{{begin-hl1msg|SayText|byte, string, string, string}}&lt;br /&gt;
{{hl1msg|byte|SenderID}}&lt;br /&gt;
{{hl1msg|string|String}}&lt;br /&gt;
{{hl1msg|string|unknown}}&lt;br /&gt;
{{hl1msg|string|Text}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Scenario ==&lt;br /&gt;
If Active is 0, this display will be hidden. If Active is 1, displays Sprite (valid names listed in sprites/hud.txt) to the right of the round timer with an alpha value of Alpha (100-255). If flashRate is nonzero, then the sprite will flash from given the given alpha to an alpha of 100, at a rate of flashRate (measured in ???). This is used by CZ to display how many hostages remain unrescued, and also to display the ticking bomb when it is planted.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|If Active is 0, don't send any other arguments afterwards. Also, you don't need to send either short if flashRate is just going to be 0.}}&amp;lt;br&amp;gt;&lt;br /&gt;
[[image:Cs_scenario_msg.jpg|frame|right|Scenario message in CS, using the following parameters: 1, d_mp5navy, 150]]&lt;br /&gt;
{{qnotice|Works in both CS and CZ!}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|In CZ (and possibly CS), if someone respawns after the bomb has been planted, their Scenario event will not work at all until the next round.}}&lt;br /&gt;
{{begin-hl1msg|Scenario|byte,string,byte,short,short}}&lt;br /&gt;
{{hl1msg|byte|Active}}&lt;br /&gt;
{{hl1msg|string|Sprite}}&lt;br /&gt;
{{hl1msg|byte|Alpha}}&lt;br /&gt;
{{hl1msg|short|flashRate}}&lt;br /&gt;
{{hl1msg|short|Unknown}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ScoreAttrib ==&lt;br /&gt;
Updates the scoreboard's attribute for the specified player. For the 2nd argument, 0 is nothing, 1 is dead, 2 is bomb, 4 is VIP.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Flag is a bitwise value so if VIP player dying with the bomb the Flag will be 7}}&lt;br /&gt;
{{begin-hl1msg|ScoreAttrib|byte, byte}}&lt;br /&gt;
{{hl1msg|byte|PlayerID}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ShowMenu ==&lt;br /&gt;
Displays a &amp;quot;menu&amp;quot; to a player (text on the left side of the screen). Acts like AMXX's show_menu (in fact, this is how AMXX shows a menu).&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Multipart should be 1 if your menu takes up multiple messages (ie: string is too big to fit into one). On the final message, Multipart should be 0.}}&lt;br /&gt;
{{begin-hl1msg|ShowMenu|short,char,byte,string}}&lt;br /&gt;
{{hl1msg|short|Keys}}&lt;br /&gt;
{{hl1msg|char|Time}}&lt;br /&gt;
{{hl1msg|byte|Multipart}}&lt;br /&gt;
{{hl1msg|string|Text}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== StatusIcon ==&lt;br /&gt;
Draws/removes the specified status [[HUD]] icon. For Status, 0 is Hide Icon, 1 is Show Icon, 2 is Flash Icon. Red, Green and Blue arguments is optional and is specified only when Status are not 0.&lt;br /&gt;
{{begin-hl1msg|StatusIcon|byte, string, byte, byte, byte}}&lt;br /&gt;
{{hl1msg|byte|Status}}&lt;br /&gt;
{{hl1msg|string|SpriteName}}&lt;br /&gt;
{{hl1msg|byte|Red}}&lt;br /&gt;
{{hl1msg|byte|Green}}&lt;br /&gt;
{{hl1msg|byte|Blue}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== StatusText ==&lt;br /&gt;
Specifies the status text format.&lt;br /&gt;
{{begin-hl1msg|StatusText|byte, string}}&lt;br /&gt;
{{hl1msg|byte|unknown}}&lt;br /&gt;
{{hl1msg|string|Text}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== StatusValue ==&lt;br /&gt;
Sends/updates the status values. For the Flag 1 the Value is TeamRelation, for 2 is PlayerID, for 3 is Health. For TeamRelation, 1 is Teammate player, 2 is Non-Teammate player, 3 is Hostage. If TeamRelation is the Hostage, PlayerID will be always 0.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Usually is fired as a triple message, for example:&amp;lt;br&amp;gt;&lt;br /&gt;
  (1, 2) - non-teammate player&amp;lt;br&amp;gt;&lt;br /&gt;
  (2, 7) - player index is 7&amp;lt;br&amp;gt;&lt;br /&gt;
  (3, 59) - health is 59}}&lt;br /&gt;
{{begin-hl1msg|StatusValue|byte, short}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{hl1msg|short|Value}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TaskTime ==&lt;br /&gt;
Displays a secondary timer above the round timer. Used for Condition Zero singleplayer missions.&amp;lt;br&amp;gt;If Time is -1, timer dissappears. If Time is any other negative value, it is displayed as green instead of yellow, and considered positive.&amp;lt;br&amp;gt;If Active is true, timer counts down. Otherwise, it is paused.&amp;lt;br&amp;gt;If Fade is above zero, the timer will slowly fade out after that many seconds have passed (even if the timer is inactive).&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|This event can only be used on missions that have an objective requiring a secondary timer!}}&lt;br /&gt;
{{begin-hl1msg|TaskTime|short, byte, byte}}&lt;br /&gt;
{{hl1msg|short|Time}}&lt;br /&gt;
{{hl1msg|byte|Active}}&lt;br /&gt;
{{hl1msg|byte|Fade}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TeamInfo ==&lt;br /&gt;
TeamName is either &amp;quot;UNASSIGNED&amp;quot;, &amp;quot;TERRORIST&amp;quot; or &amp;quot;CT&amp;quot;.&lt;br /&gt;
{{begin-hl1msg|TeamInfo|byte, string}}&lt;br /&gt;
{{hl1msg|byte|ID}}&lt;br /&gt;
{{hl1msg|string|TeamName}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TeamScore ==&lt;br /&gt;
Updates the team score on the score board. TeamName is either &amp;quot;TERRORIST&amp;quot; or &amp;quot;CT&amp;quot;.&lt;br /&gt;
{{begin-hl1msg|TeamScore|string, short}}&lt;br /&gt;
{{hl1msg|string|TeamName}}&lt;br /&gt;
{{hl1msg|short|Score}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TextMsg ==&lt;br /&gt;
{{qnotice|There does not necessarily have to be a total of 6 arguments, there could be as little as 2. For example you can send a message with the following:&amp;lt;br&amp;gt;&lt;br /&gt;
Arg1: 1&amp;lt;br&amp;gt;&lt;br /&gt;
Arg2: #Game_join_ct&amp;lt;br&amp;gt;&lt;br /&gt;
Arg3: 4HM | Pimp Daddy&amp;lt;br&amp;gt;}}&lt;br /&gt;
{{begin-hl1msg|TextMsg|byte, string, string, string, string, string}}&lt;br /&gt;
{{hl1msg|byte|ID}}&lt;br /&gt;
{{hl1msg|string|Message}}&lt;br /&gt;
{{hl1msg|string|Submsg}}&lt;br /&gt;
{{hl1msg|string|Submsg}}&lt;br /&gt;
{{hl1msg|string|Submsg}}&lt;br /&gt;
{{hl1msg|string|Submsg}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Train ==&lt;br /&gt;
Displays the speed bar used for controlling a train.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Speed is as follows: 0 (disable display), 1 (reverse), 2 (neutral), 3 (slow speed), 4 (medium speed), 5 (maximum speed)}}&lt;br /&gt;
{{begin-hl1msg|Train}}&lt;br /&gt;
{{hl1msg|byte|Speed}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TutorClose ==&lt;br /&gt;
Closes all CZ-style tutor popups.&lt;br /&gt;
{{begin-hl1msg|TutorClose}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TutorLine ==&lt;br /&gt;
{{qnotice|No Information available for this event}}&lt;br /&gt;
{{begin-hl1msg|TutorLine}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TutorState ==&lt;br /&gt;
{{qnotice|No Information available for this event}}&lt;br /&gt;
{{begin-hl1msg|TutorState}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TutorText ==&lt;br /&gt;
Used to display a CZ-style tutor popup.&lt;br /&gt;
{{begin-hl1msg|TutorText|string,byte,short,short,short}}&lt;br /&gt;
{{hl1msg|string|Unknown}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{hl1msg|short|Unknown}}&lt;br /&gt;
{{hl1msg|short|Unknown}}&lt;br /&gt;
{{hl1msg|short|Unknown}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== VGUIMenu ==&lt;br /&gt;
Displays a predefined VGUI menu. Keys is a keys bit sum.&lt;br /&gt;
{{begin-hl1msg|VGUIMenu|byte, short, char, byte, string}}&lt;br /&gt;
{{hl1msg|byte|unknown}}&lt;br /&gt;
{{hl1msg|short|Keys}}&lt;br /&gt;
{{hl1msg|char|unknown}}&lt;br /&gt;
{{hl1msg|byte|unknown}}&lt;br /&gt;
{{hl1msg|string|unknown}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ViewMode ==&lt;br /&gt;
{{qnotice|No Information available for this event (HLSDK says this switches to first-person view, but it doesn't seem to function as so)}}&lt;br /&gt;
{{begin-hl1msg|ViewMode}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== VoiceMask ==&lt;br /&gt;
Used to tell a client who he can hear over the microphone.&lt;br /&gt;
{{begin-hl1msg|VoiceMask|long, long}}&lt;br /&gt;
{{hl1msg|long|AudiblePlayersIndexBitSum}}&lt;br /&gt;
{{hl1msg|long|ServerBannedPlayersIndexBitSum}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== WeapPickup ==&lt;br /&gt;
Fired right before weapon is picked up.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Notice: &amp;quot;right before&amp;quot;.}}&lt;br /&gt;
{{begin-hl1msg|WeapPickup|byte}}&lt;br /&gt;
{{hl1msg|byte|WeaponID}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== WeaponList ==&lt;br /&gt;
Fired on weapon select.(?)&lt;br /&gt;
{{begin-hl1msg|WeaponList|byte}}&lt;br /&gt;
{{hl1msg|string|Weapon Name}}&lt;br /&gt;
{{hl1msg|byte|Ammo1 ID}}&lt;br /&gt;
{{hl1msg|byte|Ammo1 Max}}&lt;br /&gt;
{{hl1msg|byte|Ammo2 ID}}&lt;br /&gt;
{{hl1msg|byte|Ammo2 Max}}&lt;br /&gt;
{{hl1msg|byte|Slot ID}}&lt;br /&gt;
{{hl1msg|byte|Position on Slot}}&lt;br /&gt;
{{hl1msg|byte|Weapon ID}}&lt;br /&gt;
{{hl1msg|byte|Flags}}&lt;br /&gt;
{{end-hl1msg}}&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Half-Life_1_Game_Events&amp;diff=3750</id>
		<title>Half-Life 1 Game Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Half-Life_1_Game_Events&amp;diff=3750"/>
		<updated>2007-01-12T17:28:51Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* WeapPickup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Half-Life 1]]&lt;br /&gt;
[[Category:Scripting (AMX Mod X)]]&lt;br /&gt;
= Half-Life Events =&lt;br /&gt;
In [[Pawn]] you are able to hook in-game events with [http://www.amxmodx.org/funcwiki.php?go=func&amp;amp;id=26 register_event]. Here are the list of the standard Half-Life 1 and Counter-Strike events and their parameters which can be read with [http://www.amxmodx.org/funcwiki.php?go=func&amp;amp;id=132 read_data]&lt;br /&gt;
&lt;br /&gt;
See the [[Advanced Scripting (AMX Mod X)#Events.2FMessages|Advanced Scripting]] article for more on events and messages.&lt;br /&gt;
&lt;br /&gt;
== ADStop ==&lt;br /&gt;
{{qnotice|No Information available for this event}}&lt;br /&gt;
{{begin-hl1msg|ADStop}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== AllowSpec ==&lt;br /&gt;
Changes whether or not &amp;quot;SPECTATE&amp;quot; appears on the change team menu. Called whenever the allow_spectators cvar is changed, with its new value sent as the byte.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|This changes how the change team menu appears, but spectating functionality is based off of the actual cvar value.}}&lt;br /&gt;
{{begin-hl1msg|AllowSpec|byte}}&lt;br /&gt;
{{hl1msg|byte|Allowed}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== AmmoPickup ==&lt;br /&gt;
Temporarily draws [[HUD]] the ammo amount and ammo type [[HUD]] icon in the middle of the right side of the screen.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Draw time is dependent on the ''hud_drawhistory_time'' client CVAR value}}&lt;br /&gt;
{{begin-hl1msg|AmmoPickup|byte, byte}}&lt;br /&gt;
{{hl1msg|byte|AmmoID}}&lt;br /&gt;
{{hl1msg|byte|Ammount}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== AmmoX ==&lt;br /&gt;
Updates green bar indicator in the [[HUD]] weapons-list. Also updates [[HUD]] backpack ammo number in the lower right corner of the screen in case the given ammo type are compatible with the current weapon.&lt;br /&gt;
{{begin-hl1msg|AmmoX|byte, byte}}&lt;br /&gt;
{{hl1msg|byte|AmmoID}}&lt;br /&gt;
{{hl1msg|byte|Ammount}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BarTime ==&lt;br /&gt;
Draws a [[HUD]] progress bar which is filled from 0% to 100% for the time Duration seconds and then disappeared.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Set Duration to 0 to hide the bar.}}&lt;br /&gt;
{{begin-hl1msg|BarTime|short}}&lt;br /&gt;
{{hl1msg|short|Duration}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BarTime2 ==&lt;br /&gt;
The same as BarTime but StartPC is specify how many per cents of the bar are (already) filled.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Display time can be calculated with this formula: ''(1 - StartPC/100) / Duration''}}&lt;br /&gt;
{{begin-hl1msg|BarTime2|short, short}}&lt;br /&gt;
{{hl1msg|short|Duration}}&lt;br /&gt;
{{hl1msg|short|StartPC}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Battery ==&lt;br /&gt;
Updates the icon and number of the armor on the [[HUD]].&lt;br /&gt;
{{begin-hl1msg|Battery|short}}&lt;br /&gt;
{{hl1msg|short|Armor}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BlinkAcct ==&lt;br /&gt;
Makes a player's money display flash rapidly, until it flashes a total of BlinkAmt times.&lt;br /&gt;
{{begin-hl1msg|BlinkAcct|byte}}&lt;br /&gt;
{{hl1msg|byte|BlinkAmt}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BombDrop ==&lt;br /&gt;
The first three arguments are the origin of the dropped bomb. The last argument is set to 1 if the bomb has been planted. It is 0 if the bomb was dropped due to voluntary dropping or death/disconnect. Setting the last argument 1, will also trigger the round timer to hide. It also will show the dropped bomb on the Terrorist team's radar in the location specified by the first three arguments.&lt;br /&gt;
{{begin-hl1msg|BombDrop|coord, coord, coord, byte}}&lt;br /&gt;
{{hl1msg|coord|X}}&lt;br /&gt;
{{hl1msg|coord|Y}}&lt;br /&gt;
{{hl1msg|coord|Z}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BombPickup ==&lt;br /&gt;
This message just tells the game that the bomb has been picked up. It will cause the dropped/planted bomb to disappear from the Terrorist team's radar. &lt;br /&gt;
{{begin-hl1msg|BombPickup}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BotProgress ==&lt;br /&gt;
Used by CZ's bots when learning a new map. Displays a progress bar in the middle of the screen, with some header text. The bar doesn't move, and you can't do anything while the bar is displayed. This is a different style of progress bar than from the BarTime event. This really doesn't display well in CS.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Flag can be 0 (update bar), 1 (create new bar), or 2 (remove bar). When using flag 0, send all arguments. When using flag 1, send only Flag and Header. When using flag 2, send only Flag.}}&lt;br /&gt;
{{begin-hl1msg|BotProgress|byte, byte, string}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{hl1msg|byte|Progress}}&lt;br /&gt;
{{hl1msg|string|Header}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BotVoice ==&lt;br /&gt;
Displays (or hides) the voice icon above a user's head and the talking icon on the right side of the screen. This is called by CZ for bots; it's not called by regular players, although you &amp;lt;i&amp;gt;can&amp;lt;/i&amp;gt; specify a regular player (non-bot) for the playerIndex. Status is 1 for talking, or 0 for not talking.&lt;br /&gt;
{{begin-hl1msg|BotVoice|byte, byte}}&lt;br /&gt;
{{hl1msg|byte|Status}}&lt;br /&gt;
{{hl1msg|byte|playerIndex}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Brass ==&lt;br /&gt;
Creates a brass shell. Used, for example, by the AWP, after firing.&lt;br /&gt;
{{begin-hl1msg|Brass|byte, coord, coord, coord, coord, coord, coord, coord, coord, coord, angle, short, byte, byte, byte}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{hl1msg|coord|Start X}}&lt;br /&gt;
{{hl1msg|coord|Start Y}}&lt;br /&gt;
{{hl1msg|coord|Start Z}}&lt;br /&gt;
{{hl1msg|coord|Velocity X?}}&lt;br /&gt;
{{hl1msg|coord|Velocity Y?}}&lt;br /&gt;
{{hl1msg|coord|Velocity Z?}}&lt;br /&gt;
{{hl1msg|coord|Unknown X}}&lt;br /&gt;
{{hl1msg|coord|Unknown Y}}&lt;br /&gt;
{{hl1msg|coord|Unknown Z}}&lt;br /&gt;
{{hl1msg|angle|Life?}}&lt;br /&gt;
{{hl1msg|short|Model?}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== BuyClose ==&lt;br /&gt;
Forces the buy menu to close. This is not called when the player closes the buy menu by himself; it's only called when the game forces him to do so (ie: he walks outside of the buy zone, gets killed, etcetera).&lt;br /&gt;
{{begin-hl1msg|BuyClose}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ClCorpse ==&lt;br /&gt;
Spawns a player's corpse. Model is the player's model, for example: &amp;quot;leet&amp;quot;. Delay is the delay before animation plaback, can be negative value.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|The Origin and Delay is in non-standard format.}}&lt;br /&gt;
{{begin-hl1msg|ClCorpse|string, long, long, long, coord, coord, coord, long, byte, byte, byte, byte}}&lt;br /&gt;
{{hl1msg|string|Model}}&lt;br /&gt;
{{hl1msg|long|OriginX}}&lt;br /&gt;
{{hl1msg|long|OriginY}}&lt;br /&gt;
{{hl1msg|long|OriginZ}}&lt;br /&gt;
{{hl1msg|coord|AngleX}}&lt;br /&gt;
{{hl1msg|coord|AngleY}}&lt;br /&gt;
{{hl1msg|coord|AngleZ}}&lt;br /&gt;
{{hl1msg|long|Delay}}&lt;br /&gt;
{{hl1msg|byte|Sequence}}&lt;br /&gt;
{{hl1msg|byte|unknown}}&lt;br /&gt;
{{hl1msg|byte|TeamID}}&lt;br /&gt;
{{hl1msg|byte|PlayerID}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Crosshair ==&lt;br /&gt;
Draws/removes the crosshair. If Flag is set to 1 the crosshair will be drawn.&lt;br /&gt;
{{begin-hl1msg|Crosshair|byte}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== CurWeapon ==&lt;br /&gt;
Updates the clip ammo number and weapon's corresponding ammo type icon on the [[HUD]].&lt;br /&gt;
{{begin-hl1msg|CurWeapon|byte, byte, byte}}&lt;br /&gt;
{{hl1msg|byte|isActive}}&lt;br /&gt;
{{hl1msg|byte|WeaponID}}&lt;br /&gt;
{{hl1msg|byte|ClipAmmo}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== CZCareer ==&lt;br /&gt;
Supplies certain updates to the player regarding Condition Zero singleplayer missions.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|See the [[CZCareer]] page for more information.}}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Using an invalid type has no repercussions whatsoever. Therefore, you can use this to make your own custom communications (you can send any number of arguments of any type after the first string).}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|The Type argument is case-sensitive.}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|This event does nothing in CS and CZ multiplayer.}}&lt;br /&gt;
{{begin-hl1msg|CZCareer|string,*}}&lt;br /&gt;
{{hl1msg|string|Type}}&lt;br /&gt;
{{hl1msg|*|Parameters}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== CZCareerHUD ==&lt;br /&gt;
Displays certain HUD elements regarding Condition Zero singleplayer missions.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|See the [[CZCareerHUD]] page for more information.}}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Using an invalid type has no repercussions whatsoever. Therefore, you can use this to make your own custom communications (you can send any number of arguments of any type after the first string).}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|The Type argument is case-sensitive.}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|This event has some limited functionality in CS and CZ multiplayer (albeit better in CZ).}}&lt;br /&gt;
{{begin-hl1msg|CZCareerHUD|string,*}}&lt;br /&gt;
{{hl1msg|string|Type}}&lt;br /&gt;
{{hl1msg|*|Parameters}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Damage == &lt;br /&gt;
Called when a player takes damage, to display the red locational indicators.&lt;br /&gt;
{{begin-hl1msg|Damage|byte, byte, long, coord, coord, coord}}&lt;br /&gt;
{{hl1msg|byte|Damage save (armor)}}&lt;br /&gt;
{{hl1msg|byte|Damage take (health)}}&lt;br /&gt;
{{hl1msg|long|Damage type}}&lt;br /&gt;
{{hl1msg|coord|X}}&lt;br /&gt;
{{hl1msg|coord|Y}}&lt;br /&gt;
{{hl1msg|coord|Z}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== DeathMsg ==&lt;br /&gt;
Fired to all players (MSG_ALL or MSG_BROADCAST) to notify them of a death. This generates the [[HUD]] message the client sees in the upper right corner of their screen.&amp;lt;br&amp;gt;&lt;br /&gt;
Also prints the console text message &amp;quot;KillerName killed VictimName with WeaponName&amp;quot; or &amp;quot;*** KillerName killed VictimName with a headshot from WeaponName ***&amp;quot;&lt;br /&gt;
{{begin-hl1msg|DeathMsg|byte, byte, byte, string}}&lt;br /&gt;
{{hl1msg|byte|KillerID}}&lt;br /&gt;
{{hl1msg|byte|VictimID}}&lt;br /&gt;
{{hl1msg|byte|isHeadshot}}&lt;br /&gt;
{{hl1msg|string|WeaponName}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== FlashBat ==&lt;br /&gt;
Updates the flashlight battery charge on the [[HUD]]. ChargePC is in per cents.&lt;br /&gt;
{{begin-hl1msg|FlashBat|byte}}&lt;br /&gt;
{{hl1msg|byte|ChargePC}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Flashlight ==&lt;br /&gt;
Updates the flashlight state and battery charge on the [[HUD]]. If Flag is set to 1 the flashlight [[HUD]] icon will be shown as active.&lt;br /&gt;
{{begin-hl1msg|Flashlight|byte, byte}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{hl1msg|byte|ChargePC}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Fog ==&lt;br /&gt;
{{qnotice|No Information available for this event}}&lt;br /&gt;
{{begin-hl1msg|Fog}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ForceCam ==&lt;br /&gt;
Called whenever mp_forcecam or mp_forcechasecam are changed, with their new values passed. There is assumedly a third cvar that this tracks, but it is yet unknown. Note that this message doesn't actually change any of the spectating rules for the client.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Even if mp_forcechasecam is set to 2, it is sent by this message as 1.}}&lt;br /&gt;
{{begin-hl1msg|ForceCam|byte,byte,byte}}&lt;br /&gt;
{{hl1msg|byte|forcecamValue}}&lt;br /&gt;
{{hl1msg|byte|forcechasecamValue}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== HostageK ==&lt;br /&gt;
Temporary draws a blinking red dot on the CT players' radar when hostage is killed.&lt;br /&gt;
{{begin-hl1msg|HostageK|byte}}&lt;br /&gt;
{{hl1msg|byte|HostageID}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== HostagePos ==&lt;br /&gt;
Draws/updates the blue mark on the CT players' radar which represents the corresponding hostage's position.&lt;br /&gt;
{{begin-hl1msg|HostagePos|byte, byte, coord, coord, coord}}&lt;br /&gt;
{{hl1msg|byte|unknown}}&lt;br /&gt;
{{hl1msg|byte|HostageID}}&lt;br /&gt;
{{hl1msg|coord|X}}&lt;br /&gt;
{{hl1msg|coord|Y}}&lt;br /&gt;
{{hl1msg|coord|Z}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Money ==&lt;br /&gt;
Updates the Amount of money on the [[HUD]]. If the Flag is 1, the additional new-old [[HUD]] money amount difference will be also displayed.&lt;br /&gt;
{{begin-hl1msg|Money|long, byte}}&lt;br /&gt;
{{hl1msg|long|Amount}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== NVGToggle ==&lt;br /&gt;
Toggles night vision mode. For Flag: 1 is on, 0 is off.&lt;br /&gt;
{{begin-hl1msg|NVGToggle|byte}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ResetHUD ==&lt;br /&gt;
Resets the [[HUD]].&lt;br /&gt;
{{begin-hl1msg|ResetHUD}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== RoundTime ==&lt;br /&gt;
Updates the round timer on the [[HUD]]. Time is in seconds.&lt;br /&gt;
{{begin-hl1msg|RoundTime|short}}&lt;br /&gt;
{{hl1msg|short|Time}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== SayText ==&lt;br /&gt;
Prints say [[HUD]] text. Second parameter can be a predefined string or a custom one. In the last case the last two parameters isn't required.&amp;lt;br&amp;gt;&lt;br /&gt;
Some values of the predifined string: #Cstrike_Chat_AllDead, #Cstrike_Chat_All&lt;br /&gt;
{{begin-hl1msg|SayText|byte, string, string, string}}&lt;br /&gt;
{{hl1msg|byte|SenderID}}&lt;br /&gt;
{{hl1msg|string|String}}&lt;br /&gt;
{{hl1msg|string|unknown}}&lt;br /&gt;
{{hl1msg|string|Text}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Scenario ==&lt;br /&gt;
If Active is 0, this display will be hidden. If Active is 1, displays Sprite (valid names listed in sprites/hud.txt) to the right of the round timer with an alpha value of Alpha (100-255). If flashRate is nonzero, then the sprite will flash from given the given alpha to an alpha of 100, at a rate of flashRate (measured in ???). This is used by CZ to display how many hostages remain unrescued, and also to display the ticking bomb when it is planted.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|If Active is 0, don't send any other arguments afterwards. Also, you don't need to send either short if flashRate is just going to be 0.}}&amp;lt;br&amp;gt;&lt;br /&gt;
[[image:Cs_scenario_msg.jpg|frame|right|Scenario message in CS, using the following parameters: 1, d_mp5navy, 150]]&lt;br /&gt;
{{qnotice|Works in both CS and CZ!}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|In CZ (and possibly CS), if someone respawns after the bomb has been planted, their Scenario event will not work at all until the next round.}}&lt;br /&gt;
{{begin-hl1msg|Scenario|byte,string,byte,short,short}}&lt;br /&gt;
{{hl1msg|byte|Active}}&lt;br /&gt;
{{hl1msg|string|Sprite}}&lt;br /&gt;
{{hl1msg|byte|Alpha}}&lt;br /&gt;
{{hl1msg|short|flashRate}}&lt;br /&gt;
{{hl1msg|short|Unknown}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ScoreAttrib ==&lt;br /&gt;
Updates the scoreboard's attribute for the specified player. For the 2nd argument, 0 is nothing, 1 is dead, 2 is bomb, 4 is VIP.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Flag is a bitwise value so if VIP player dying with the bomb the Flag will be 7}}&lt;br /&gt;
{{begin-hl1msg|ScoreAttrib|byte, byte}}&lt;br /&gt;
{{hl1msg|byte|PlayerID}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ShowMenu ==&lt;br /&gt;
Displays a &amp;quot;menu&amp;quot; to a player (text on the left side of the screen). Acts like AMXX's show_menu (in fact, this is how AMXX shows a menu).&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Multipart should be 1 if your menu takes up multiple messages (ie: string is too big to fit into one). On the final message, Multipart should be 0.}}&lt;br /&gt;
{{begin-hl1msg|ShowMenu|short,char,byte,string}}&lt;br /&gt;
{{hl1msg|short|Keys}}&lt;br /&gt;
{{hl1msg|char|Time}}&lt;br /&gt;
{{hl1msg|byte|Multipart}}&lt;br /&gt;
{{hl1msg|string|Text}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== StatusIcon ==&lt;br /&gt;
Draws/removes the specified status [[HUD]] icon. For Status, 0 is Hide Icon, 1 is Show Icon, 2 is Flash Icon. Red, Green and Blue arguments is optional and is specified only when Status are not 0.&lt;br /&gt;
{{begin-hl1msg|StatusIcon|byte, string, byte, byte, byte}}&lt;br /&gt;
{{hl1msg|byte|Status}}&lt;br /&gt;
{{hl1msg|string|SpriteName}}&lt;br /&gt;
{{hl1msg|byte|Red}}&lt;br /&gt;
{{hl1msg|byte|Green}}&lt;br /&gt;
{{hl1msg|byte|Blue}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== StatusText ==&lt;br /&gt;
Specifies the status text format.&lt;br /&gt;
{{begin-hl1msg|StatusText|byte, string}}&lt;br /&gt;
{{hl1msg|byte|unknown}}&lt;br /&gt;
{{hl1msg|string|Text}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== StatusValue ==&lt;br /&gt;
Sends/updates the status values. For the Flag 1 the Value is TeamRelation, for 2 is PlayerID, for 3 is Health. For TeamRelation, 1 is Teammate player, 2 is Non-Teammate player, 3 is Hostage. If TeamRelation is the Hostage, PlayerID will be always 0.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Usually is fired as a triple message, for example:&amp;lt;br&amp;gt;&lt;br /&gt;
  (1, 2) - non-teammate player&amp;lt;br&amp;gt;&lt;br /&gt;
  (2, 7) - player index is 7&amp;lt;br&amp;gt;&lt;br /&gt;
  (3, 59) - health is 59}}&lt;br /&gt;
{{begin-hl1msg|StatusValue|byte, short}}&lt;br /&gt;
{{hl1msg|byte|Flag}}&lt;br /&gt;
{{hl1msg|short|Value}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TaskTime ==&lt;br /&gt;
Displays a secondary timer above the round timer. Used for Condition Zero singleplayer missions.&amp;lt;br&amp;gt;If Time is -1, timer dissappears. If Time is any other negative value, it is displayed as green instead of yellow, and considered positive.&amp;lt;br&amp;gt;If Active is true, timer counts down. Otherwise, it is paused.&amp;lt;br&amp;gt;If Fade is above zero, the timer will slowly fade out after that many seconds have passed (even if the timer is inactive).&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|This event can only be used on missions that have an objective requiring a secondary timer!}}&lt;br /&gt;
{{begin-hl1msg|TaskTime|short, byte, byte}}&lt;br /&gt;
{{hl1msg|short|Time}}&lt;br /&gt;
{{hl1msg|byte|Active}}&lt;br /&gt;
{{hl1msg|byte|Fade}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TeamInfo ==&lt;br /&gt;
TeamName is either &amp;quot;UNASSIGNED&amp;quot;, &amp;quot;TERRORIST&amp;quot; or &amp;quot;CT&amp;quot;.&lt;br /&gt;
{{begin-hl1msg|TeamInfo|byte, string}}&lt;br /&gt;
{{hl1msg|byte|ID}}&lt;br /&gt;
{{hl1msg|string|TeamName}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TeamScore ==&lt;br /&gt;
Updates the team score on the score board. TeamName is either &amp;quot;TERRORIST&amp;quot; or &amp;quot;CT&amp;quot;.&lt;br /&gt;
{{begin-hl1msg|TeamScore|string, short}}&lt;br /&gt;
{{hl1msg|string|TeamName}}&lt;br /&gt;
{{hl1msg|short|Score}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TextMsg ==&lt;br /&gt;
{{qnotice|There does not necessarily have to be a total of 6 arguments, there could be as little as 2. For example you can send a message with the following:&amp;lt;br&amp;gt;&lt;br /&gt;
Arg1: 1&amp;lt;br&amp;gt;&lt;br /&gt;
Arg2: #Game_join_ct&amp;lt;br&amp;gt;&lt;br /&gt;
Arg3: 4HM | Pimp Daddy&amp;lt;br&amp;gt;}}&lt;br /&gt;
{{begin-hl1msg|TextMsg|byte, string, string, string, string, string}}&lt;br /&gt;
{{hl1msg|byte|ID}}&lt;br /&gt;
{{hl1msg|string|Message}}&lt;br /&gt;
{{hl1msg|string|Submsg}}&lt;br /&gt;
{{hl1msg|string|Submsg}}&lt;br /&gt;
{{hl1msg|string|Submsg}}&lt;br /&gt;
{{hl1msg|string|Submsg}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== Train ==&lt;br /&gt;
Displays the speed bar used for controlling a train.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Speed is as follows: 0 (disable display), 1 (reverse), 2 (neutral), 3 (slow speed), 4 (medium speed), 5 (maximum speed)}}&lt;br /&gt;
{{begin-hl1msg|Train}}&lt;br /&gt;
{{hl1msg|byte|Speed}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TutorClose ==&lt;br /&gt;
Closes all CZ-style tutor popups.&lt;br /&gt;
{{begin-hl1msg|TutorClose}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TutorLine ==&lt;br /&gt;
{{qnotice|No Information available for this event}}&lt;br /&gt;
{{begin-hl1msg|TutorLine}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TutorState ==&lt;br /&gt;
{{qnotice|No Information available for this event}}&lt;br /&gt;
{{begin-hl1msg|TutorState}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== TutorText ==&lt;br /&gt;
Used to display a CZ-style tutor popup.&lt;br /&gt;
{{begin-hl1msg|TutorText|string,byte,short,short,short}}&lt;br /&gt;
{{hl1msg|string|Unknown}}&lt;br /&gt;
{{hl1msg|byte|Unknown}}&lt;br /&gt;
{{hl1msg|short|Unknown}}&lt;br /&gt;
{{hl1msg|short|Unknown}}&lt;br /&gt;
{{hl1msg|short|Unknown}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== VGUIMenu ==&lt;br /&gt;
Displays a predefined VGUI menu. Keys is a keys bit sum.&lt;br /&gt;
{{begin-hl1msg|VGUIMenu|byte, short, char, byte, string}}&lt;br /&gt;
{{hl1msg|byte|unknown}}&lt;br /&gt;
{{hl1msg|short|Keys}}&lt;br /&gt;
{{hl1msg|char|unknown}}&lt;br /&gt;
{{hl1msg|byte|unknown}}&lt;br /&gt;
{{hl1msg|string|unknown}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== ViewMode ==&lt;br /&gt;
{{qnotice|No Information available for this event (HLSDK says this switches to first-person view, but it doesn't seem to function as so)}}&lt;br /&gt;
{{begin-hl1msg|ViewMode}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== VoiceMask ==&lt;br /&gt;
Used to tell a client who he can hear over the microphone.&lt;br /&gt;
{{begin-hl1msg|VoiceMask|long, long}}&lt;br /&gt;
{{hl1msg|long|AudiblePlayersIndexBitSum}}&lt;br /&gt;
{{hl1msg|long|ServerBannedPlayersIndexBitSum}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== WeapPickup ==&lt;br /&gt;
Fired right before weapon is picked up.&amp;lt;br&amp;gt;&lt;br /&gt;
{{qnotice|Notice: &amp;quot;right before&amp;quot;.}}&lt;br /&gt;
{{begin-hl1msg|WeapPickup|byte}}&lt;br /&gt;
{{hl1msg|byte|WeaponID}}&lt;br /&gt;
{{end-hl1msg}}&lt;br /&gt;
&lt;br /&gt;
== WeaponList ==&lt;br /&gt;
Fired on weapon select.(?)&lt;br /&gt;
{{begin-hl1msg|WeaponList|byte}}&lt;br /&gt;
{{hl1msg|byte|Ammo1 ID}}&lt;br /&gt;
{{hl1msg|byte|Ammo1 Max}}&lt;br /&gt;
{{hl1msg|byte|Ammo2 ID}}&lt;br /&gt;
{{hl1msg|byte|Ammo2 Max}}&lt;br /&gt;
{{hl1msg|byte|Slot ID}}&lt;br /&gt;
{{hl1msg|byte|Position on Slot}}&lt;br /&gt;
{{hl1msg|byte|Weapon ID}}&lt;br /&gt;
{{hl1msg|byte|Flags}}&lt;br /&gt;
{{end-hl1msg}}&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=AMX_Mod_X_1.75_Scripting_Changes&amp;diff=3643</id>
		<title>AMX Mod X 1.75 Scripting Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=AMX_Mod_X_1.75_Scripting_Changes&amp;diff=3643"/>
		<updated>2006-12-22T19:13:40Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Module Requirement Syusstem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The AMX Mod X 1.75 release made important changes.  While backwards compatibility was kept, intended functionality shifted in esoteric areas that will affect some plugins.  Reading this article is highly recommended.&lt;br /&gt;
&lt;br /&gt;
=Module Requirement System=&lt;br /&gt;
As part of the new Automatic Module Loading, the old &amp;lt;tt&amp;gt;#pragma library&amp;lt;/tt&amp;gt; has been deprecated.  You must now use:&lt;br /&gt;
&amp;lt;pawn&amp;gt;#pragma reqlib &amp;lt;library&amp;gt;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
This means &amp;quot;require library&amp;quot;.  Plugins still compiled with &amp;lt;tt&amp;gt;#pragma library&amp;lt;/tt&amp;gt; will still fail on load if the given module is not found.  However, core will try to load each module given the rules below under &amp;quot;Automatic Module Loading&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Auto Plugin Files=&lt;br /&gt;
With the introduction of callfunc and register_native, many people now distribute plugins in large sets.  To make this easier on users, you can now distribute an &amp;quot;extended plugin file.&amp;quot;  For example, say you have five plugins in a set.  Normally, you would have to ask the user to write each name into plugins.ini, like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 file1.amxx   ;file1&lt;br /&gt;
 file2.amxx   ;file2&lt;br /&gt;
 file3.amxx   ;file3&lt;br /&gt;
 file4.amxx   ;file4&lt;br /&gt;
 file5.amxx   ;file5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With AMX Mod X 1.75, any file in the configs folder which follows a certain name pattern will be auto-loaded as an additional plugins.ini file.  The pattern is: plugins-*.ini.  &lt;br /&gt;
&lt;br /&gt;
For example, you could distribute &amp;lt;tt&amp;gt;plugins-carmod.ini&amp;lt;/tt&amp;gt; as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;put a semi-colon to disable a plugin&lt;br /&gt;
cars_honda.amxx  &lt;br /&gt;
cars_toyota.amxx&lt;br /&gt;
cars_ford.amxx&lt;br /&gt;
cars_bmw.amxx&lt;br /&gt;
cars_gaben.amxx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This way, you can easily distribute an extractable install, rather than giving the user overcomplicated instructions.  Furthermore, the file is easily disabled by simply modifying the name (for example, &amp;quot;disabled-carmod.ini&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Automatic Module Loading=&lt;br /&gt;
==Overview==&lt;br /&gt;
As of AMX Mod X 1.75, there is a new, powerful automatic module loading system.  That means that &amp;lt;tt&amp;gt;modules.ini&amp;lt;/tt&amp;gt; is largely deprecated for general use.  Instead, modules are loaded as plugins need them.  This is done dynamically by core before plugins are even loaded, without the need to patch &amp;lt;tt&amp;gt;modules.ini&amp;lt;/tt&amp;gt; and then change the map.&lt;br /&gt;
&lt;br /&gt;
Modules can now define &amp;quot;Libraries&amp;quot; and &amp;quot;Library Classes&amp;quot;.  A library is a specific identifier that should match the filename of the module.  For example, Engine's defined library is &amp;quot;engine&amp;quot;.  FakeMeta's library is &amp;quot;fakemeta&amp;quot;, and so on.&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;library class&amp;quot; defines membership to a set of modules.  For example, CSX has the library name &amp;quot;csx&amp;quot;, but it is part of the library class &amp;quot;xstats&amp;quot;.  Library classes are also used for DBI and SQLX.  This is very useful for being able to require one module type of any implementation.&lt;br /&gt;
&lt;br /&gt;
==New API==&lt;br /&gt;
===Compiler Pragmas===&lt;br /&gt;
This is expanded with a number of new &amp;lt;tt&amp;gt;#pragma&amp;lt;/tt&amp;gt; directives:&lt;br /&gt;
*&amp;lt;tt&amp;gt;#pragma reqlib &amp;amp;lt;library&amp;gt;&amp;lt;/tt&amp;gt; - Requires that a given library must be loaded.&lt;br /&gt;
*&amp;lt;tt&amp;gt;#pragma reqclass &amp;amp;lt;libclass&amp;gt;&amp;lt;/tt&amp;gt; - Requires that a given library class must be loaded.&lt;br /&gt;
*&amp;lt;tt&amp;gt;#pragma loadlib &amp;amp;lt;library&amp;gt;&amp;lt;/tt&amp;gt; - Automatically attempts to load a given library (see more info below).&lt;br /&gt;
*&amp;lt;tt&amp;gt;#pragma expectlib &amp;amp;lt;library1&amp;gt; &amp;amp;lt;library2&amp;gt;&amp;lt;/tt&amp;gt; - If the first library is not loaded, the second one will be attempted to load (not very useful).&lt;br /&gt;
*&amp;lt;tt&amp;gt;#pragma expectclass &amp;amp;lt;class&amp;gt; &amp;amp;lt;library&amp;gt;&amp;lt;/tt&amp;gt; - If the expected class is not found, the given library will be attempted to load.  This is useful for defining a default module to be loaded with a given class of modules.&lt;br /&gt;
*&amp;lt;tt&amp;gt;#pragma defclasslib &amp;amp;lt;class&amp;gt; &amp;amp;lt;library&amp;gt;&amp;lt;/tt&amp;gt; - Same as &amp;lt;tt&amp;gt;expectclass&amp;lt;/tt&amp;gt;, however, &amp;lt;tt&amp;gt;defclasslib&amp;lt;/tt&amp;gt; waits until all expectations are resolved.  This lets plugins override defaults by adding their own expectations.&lt;br /&gt;
&lt;br /&gt;
===Module Filtering===&lt;br /&gt;
The module_filter prototype now includes a second parameter, which tells you whether the requirement is a class or library.&lt;br /&gt;
&lt;br /&gt;
Furthermore, module_exists has been deprecated for LibraryExists().&lt;br /&gt;
&lt;br /&gt;
==How it Works==&lt;br /&gt;
The precise order of events is as follows:&lt;br /&gt;
*When the first entity is spawned, AMX Mod X loads all unloaded modules in &amp;lt;tt&amp;gt;modules.ini&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*After &amp;lt;tt&amp;gt;modules.ini&amp;lt;/tt&amp;gt; is parsed, &amp;lt;tt&amp;gt;plugins.ini&amp;lt;/tt&amp;gt; is read.  Each file is mapped into a cache.&lt;br /&gt;
*The cache is previewed.&lt;br /&gt;
**First, the &amp;quot;library&amp;quot; table is read.  This table is read for backwards compatibility with AMX Mod X 1.71 and prior.  Each entry is read as a module file shortname, and the module is loaded if it exists.  &lt;br /&gt;
**Next, the &amp;quot;pubtags&amp;quot; table is read.  Each entry is decoded to one of the special #pragma commands.&lt;br /&gt;
***All loadlib commands are executed, and the modules loaded.&lt;br /&gt;
***All expect commands are executed.&lt;br /&gt;
***All defclasslib commands are executed.&lt;br /&gt;
*AMX Mod X then waits until ServerActivate is called.&lt;br /&gt;
*All plugins are loaded.  If the plugin is in the cache, the cache is read instead.  For each plugin...&lt;br /&gt;
**The library table is read.  For each library that is both nonexistant and unhandled by a module filter, the plugin fails to load.&lt;br /&gt;
**The pubtags table is read.  For each reqlib and reqclass entry that are both nonexistant and unhandled by a module filter, the plugin fails to load.&lt;br /&gt;
*The plugin cache is invalidated and the server is considered &amp;quot;loaded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=SQLX=&lt;br /&gt;
==Introduction==&lt;br /&gt;
SQLX is a new Database API that supercedes DBI.  Its main feature is that you can load two SQLX modules at once, whereas you cannot with DBI.  It also supports threaded queries, which let you process data without interrupting gameplay from a bad network connection.&lt;br /&gt;
&lt;br /&gt;
These additions come at a hefty price.  The SQLX API is significantly more complex than DBI.  Although some might find it easier to use due to its simpler error checking and iteration, it requires more manual memory management and has less simple abstraction.  Furthermore, taking advantage of the new &amp;lt;tt&amp;gt;SQL_ThreadQuery&amp;lt;/tt&amp;gt; native will require nothing short of a rewrite for most plugins, as it is ''asynchronous'' instead of ''synchronous''.  Because of this, the new SQLX modules also implement the old DBI functionality, for both backwards compatibility and for plugin developers familiar with the old API.  All three APIs - SQL-threaded, SQL-non-threaded, and DBI, are still fully supported.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Since SQLX is an expansive API, showing a single plugin of its usage would be difficult.  It is highly recommended that users interested in the new API look at the [http://svn.tcwonline.org/viewvc.cgi/trunk/plugins/testsuite/sqlxtest.sma?root=amxmodx SQLxTest] plugin, which compares two different DBI methods and both SQL methods of querying a database.  It is highly useful for both regression testing and for getting an idea of how the API works.&lt;br /&gt;
&lt;br /&gt;
The most important concept of SQLX is &amp;quot;Handles,&amp;quot; which are a precursor to a system planned for SourceMod.  Handles are datatypes that store internal information that you should not modify.  Whenever you create a handle, you must also free it, with &amp;lt;tt&amp;gt;SQL_FreeHandle&amp;lt;/tt&amp;gt;().&lt;br /&gt;
&lt;br /&gt;
==Native Overview==&lt;br /&gt;
The basic natives of SQLX are:&lt;br /&gt;
*&amp;lt;tt&amp;gt;SQL_MakeDbTuple&amp;lt;/tt&amp;gt; (or simple stock version, &amp;lt;tt&amp;gt;SQL_MakeStdTuple&amp;lt;/tt&amp;gt;) - This creates a variable that holds information about a database.  It does not connect to the database.  This is so you don't have to keep retrieving cvar info on every connection.  You do not have to free these handles, although it is a good idea if you create them dynamically.&lt;br /&gt;
*&amp;lt;tt&amp;gt;SQL_Connect&amp;lt;/tt&amp;gt; - Connects to a database and returns a new Handle, or &amp;lt;tt&amp;gt;Empty_Handle&amp;lt;/tt&amp;gt; on failure.&lt;br /&gt;
*&amp;lt;tt&amp;gt;SQL_PrepareQuery&amp;lt;/tt&amp;gt; - Prepares a query for execution, and returns a new Handle to the query.&lt;br /&gt;
*&amp;lt;tt&amp;gt;SQL_Execute&amp;lt;/tt&amp;gt; - Executes a prepared query, and returns 0 on failure (1 on success).&lt;br /&gt;
*&amp;lt;tt&amp;gt;SQL_MoreResults&amp;lt;/tt&amp;gt; - Returns 1 if there are more results in the query result queue, 0 if none.&lt;br /&gt;
*&amp;lt;tt&amp;gt;SQL_ReadResult&amp;lt;/tt&amp;gt; - Reads the current row result by the column's numerical index, similar to dbi_field/dbi_result.&lt;br /&gt;
*&amp;lt;tt&amp;gt;SQL_NextRow&amp;lt;/tt&amp;gt; - Advances to the next result row.  '''Compatibility Warning''': This does not need to be called first! Unlike &amp;lt;tt&amp;gt;dbi_nextrow&amp;lt;/tt&amp;gt;, the query is automatically at the first row.  If you call &amp;lt;tt&amp;gt;SQL_NextRow&amp;lt;/tt&amp;gt; before &amp;lt;tt&amp;gt;SQL_ReadResult&amp;lt;/tt&amp;gt;, your are actually skipping a row.&lt;br /&gt;
*&amp;lt;tt&amp;gt;SQL_FreeHandle&amp;lt;/tt&amp;gt; - Frees a Handle.  You must do this or else memory will leak.&lt;br /&gt;
*&amp;lt;tt&amp;gt;SQL_ThreadQuery&amp;lt;/tt&amp;gt; - Places a query and connection info into a threaded queue.  In another thread, the connection is established, the query is executed, and the connection is dropped.  The query results are then posted back into the main thread and given to the plugin on the next server-frame.  &lt;br /&gt;
**Note that while powerful, the mechanism is very simplistic.  Similar to &amp;lt;tt&amp;gt;set_task&amp;lt;/tt&amp;gt;, you must differentiate multiple queries having the same callback by packing binary data into an array.  Furthermore, you can only make one query at a time, since the queue is &amp;quot;push one, resolve one, pop one.&amp;quot;  If you plan on making five queries in a row in order to get aggregate information about a player, you must make each of these five queries in separate stages, and you must also take into account asynchronous factors such as the player dropping during the middle of a query.  (One way to do this is to pack the player's authid and client index into the callback data and verify it when the query finishes.)&lt;br /&gt;
**Note that you should currently not call this native during &amp;lt;tt&amp;gt;plugin_end&amp;lt;/tt&amp;gt;().  The backend threader freezes the query queue at this time and flushes all remaining queries back to the main thread.  It is likely your plugin will simply deadlock (freeze idly).  Even if this is corrected, there is no reason to use threaded queries in &amp;lt;tt&amp;gt;plugin_end&amp;lt;/tt&amp;gt;() anyway, because all remaining threaded queries are executed as non-threaded before the mapchanges.&lt;br /&gt;
&lt;br /&gt;
=New Natives / Native Changes=&lt;br /&gt;
==Register Message==&lt;br /&gt;
The &amp;lt;tt&amp;gt;register_message&amp;lt;/tt&amp;gt; set of natives, including &amp;lt;tt&amp;gt;get/set_msg_block&amp;lt;/tt&amp;gt;, has been moved to Core.  This is to facilitate users who prefer to use FakeMeta, and like the simplicity and speed of using Engine's message interception functions.  &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
This change is backwards compatible.&lt;br /&gt;
&lt;br /&gt;
==Argument Formatting==&lt;br /&gt;
The &amp;lt;tt&amp;gt;format_args&amp;lt;/tt&amp;gt; function is now replaced with a much faster, more compatible &amp;lt;tt&amp;gt;vformat&amp;lt;/tt&amp;gt; function.  Its usage is slightly different (read the include file, &amp;lt;tt&amp;gt;string.inc&amp;lt;/tt&amp;gt;), but it accepts %L, whereas format_args does not.  A quick example:&lt;br /&gt;
&amp;lt;pawn&amp;gt;debugprint(const fmt[], ...)&lt;br /&gt;
{&lt;br /&gt;
   static temp[2048]&lt;br /&gt;
   vformat(temp, sizeof(temp)-1, fmt, 2)&lt;br /&gt;
   log_message(&amp;quot;[DEBUG] %s&amp;quot;, temp)&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other Core Natives==&lt;br /&gt;
*&amp;lt;tt&amp;gt;register_plugin&amp;lt;/tt&amp;gt; - Now returns a plugin id.&lt;br /&gt;
*&amp;lt;tt&amp;gt;get_amxx_verstring&amp;lt;/tt&amp;gt; - Returns the AMX Mod X version string.&lt;br /&gt;
*&amp;lt;tt&amp;gt;get_weaponid&amp;lt;/tt&amp;gt; - Gets a weapon id from a weapon name.&lt;br /&gt;
&lt;br /&gt;
==FakeMeta==&lt;br /&gt;
===New Natives===&lt;br /&gt;
*&amp;lt;tt&amp;gt;get_orig_retval&amp;lt;/tt&amp;gt; - Gets the original return value of an engine or game DLL function.&lt;br /&gt;
*&amp;lt;tt&amp;gt;copy_infokey_buffer&amp;lt;/tt&amp;gt; - Copies the given infobuffer pointer into output buffer.&lt;br /&gt;
*&amp;lt;tt&amp;gt;get/set_cd&amp;lt;/tt&amp;gt; - Gets or sets members of a clientdata data structure (used with UpdateClientData).&lt;br /&gt;
*&amp;lt;tt&amp;gt;get/set_es&amp;lt;/tt&amp;gt; - Gets or sets members of an entity_state data structure (used with AddToFullPack).&lt;br /&gt;
*&amp;lt;tt&amp;gt;get/set_uc&amp;lt;/tt&amp;gt; - Gets or sets members of a usecmd data structure (used with CmdStart).&lt;br /&gt;
&lt;br /&gt;
===New Engine/GameDLL Functions===&lt;br /&gt;
The &amp;lt;tt&amp;gt;register_forward&amp;lt;/tt&amp;gt; native now allows for hooking a number of new functions from the engine or game DLL including:&lt;br /&gt;
*&amp;lt;tt&amp;gt;UpdateClientData&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;AddToFullPack&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;CmdStart&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;CmdEnd&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;CreateInstBaselines&amp;lt;/tt&amp;gt; - Game DLL function&lt;br /&gt;
*&amp;lt;tt&amp;gt;CreateInstBaseline&amp;lt;/tt&amp;gt; - Engine function&lt;br /&gt;
*&amp;lt;tt&amp;gt;CreateBaseline&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;GetInfoKeyBuffer&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;AlertMessage&amp;lt;/tt&amp;gt; - This now can be called via &amp;lt;tt&amp;gt;engfunc&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;ClientPrintf&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These functions can also be called via &amp;lt;tt&amp;gt;engfunc&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;dllfunc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Breaking Changes===&lt;br /&gt;
Using &amp;lt;tt&amp;gt;engfunc&amp;lt;/tt&amp;gt; in order to call &amp;lt;tt&amp;gt;EngFunc_InfoKeyValue&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;EngFunc_SetKeyValue&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;EngFunc_SetClientKeyValue&amp;lt;/tt&amp;gt; now requires passing an infobuffer pointer. An infobuffer pointer can be obtained by calling &amp;lt;tt&amp;gt;EngFunc_GetInfoKeyBuffer&amp;lt;/tt&amp;gt;. For example:&lt;br /&gt;
&amp;lt;pawn&amp;gt;some_function(id, name[])&lt;br /&gt;
{&lt;br /&gt;
   new infokey = engfunc(EngFunc_GetInfoKeyBuffer, id)&lt;br /&gt;
   engfunc(EngFunc_SetClientKeyValue, id, infokey, &amp;quot;model&amp;quot;, name)&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you hook ClientUserInfoChanged via Fakemeta, an infobuffer pointer is now also forwarded to your function in addition to the client id.&lt;br /&gt;
&lt;br /&gt;
==Cstrike==&lt;br /&gt;
*&amp;lt;tt&amp;gt;cs_get_user_mapzones&amp;lt;/tt&amp;gt; - Returns bitwise flags of where on the map a player is located such as buy zone, bomb site, hostage rescue zone, VIP safety zone, and escape zone.&lt;br /&gt;
*&amp;lt;tt&amp;gt;cs_set_user_vip&amp;lt;/tt&amp;gt; - Now takes two additional (but optional) parameters for determining whether or not the player model and scoreboard get updated.&lt;br /&gt;
*&amp;lt;tt&amp;gt;cs_set_user_zoom&amp;lt;/tt&amp;gt; - Sets a zooming type on a player for any weapon.&lt;br /&gt;
*&amp;lt;tt&amp;gt;cs_get_user_zoom&amp;lt;/tt&amp;gt; - Returns the zooming type of a player.&lt;br /&gt;
&lt;br /&gt;
==DoD==&lt;br /&gt;
===Forwards===&lt;br /&gt;
*&amp;lt;tt&amp;gt;dod_client_changeteam(id, team, oldteam)&amp;lt;/tt&amp;gt; - This Forward is called when a player changes team, it contains the player id, the new team they have joined and the old team they were on.&lt;br /&gt;
*&amp;lt;tt&amp;gt;dod_client_changeclass(id, class, oldclass)&amp;lt;/tt&amp;gt; - This Forward is called just after player spawns if a player changes class, it contains the player id, the new class number and the old class number.&lt;br /&gt;
*&amp;lt;tt&amp;gt;dod_client_spawn(id)&amp;lt;/tt&amp;gt; - This Forward is called when a player spawns, it contains the player id.&lt;br /&gt;
&lt;br /&gt;
===Stocks===&lt;br /&gt;
*&amp;lt;tt&amp;gt;dod_set_model(id, model[])&amp;lt;/tt&amp;gt; - Sets the model for a player, good for if you want to have special models.  The models used MUST be located in the following directory: dod/models/player/ And should look something like this: dod/models/player/models-name/model-name.mdl dod/models/player/models-name/model-nameT.mdl&lt;br /&gt;
*&amp;lt;tt&amp;gt;dod_set_body_number(id, bodynumber)&amp;lt;/tt&amp;gt; - Sets the model number for a players model&lt;br /&gt;
*&amp;lt;tt&amp;gt;dod_clear_model(id)&amp;lt;/tt&amp;gt; - Turns off the special model for a player&lt;br /&gt;
&lt;br /&gt;
==New Stocks==&lt;br /&gt;
===Engine===&lt;br /&gt;
*&amp;lt;tt&amp;gt;IsInWorld&amp;lt;/tt&amp;gt; - Checks if an entity is within the bounds of the world (from HLSDK).&lt;br /&gt;
&lt;br /&gt;
===FakeMeta===&lt;br /&gt;
*&amp;lt;tt&amp;gt;DF_UpdateClientData&amp;lt;/tt&amp;gt; - Calls UpdateClientData game DLL function.&lt;br /&gt;
*&amp;lt;tt&amp;gt;DF_AddToFullPack&amp;lt;/tt&amp;gt; - Calls AddToFullPack game DLL function.&lt;br /&gt;
*&amp;lt;tt&amp;gt;DF_CmdStart&amp;lt;/tt&amp;gt; - Calls CmdStart game DLL function.&lt;br /&gt;
*&amp;lt;tt&amp;gt;DF_CmdEnd&amp;lt;/tt&amp;gt; - Calls CmdEnd game DLL function.&lt;br /&gt;
*&amp;lt;tt&amp;gt;DF_CreateBaseline&amp;lt;/tt&amp;gt; - Calls CreateBaseline game DLL function.&lt;br /&gt;
*&amp;lt;tt&amp;gt;DF_CreateInstBaselines&amp;lt;/tt&amp;gt; - Calls CreateInstancedBaselines game DLL function.&lt;br /&gt;
*&amp;lt;tt&amp;gt;EF_CreateInstBaseline&amp;lt;/tt&amp;gt; - Calls CreateInstancedBaseline engine function.&lt;br /&gt;
*&amp;lt;tt&amp;gt;EF_GetInfoKeyBuffer&amp;lt;/tt&amp;gt; - Calls GetInfoKeyBuffer engine function.&lt;br /&gt;
*&amp;lt;tt&amp;gt;EF_ClientPrintf&amp;lt;/tt&amp;gt; - Calls ClientPrintf engine function.&lt;br /&gt;
&lt;br /&gt;
==New Constants==&lt;br /&gt;
Various sound constants (&amp;lt;tt&amp;gt;SND_SPAWNING&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;SND_STOP&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;SND_CHANGE_VOL&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;SND_CHANGE_PITCH&amp;lt;/tt&amp;gt;) from the HL SDK as well as a constant for pi were added to &amp;lt;tt&amp;gt;amxconst.inc&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;TE_*&amp;lt;/tt&amp;gt; (temp entity) message constants have also been added which will automatically be included with &amp;lt;tt&amp;gt;#include &amp;lt;amxmodx&amp;gt;&amp;lt;/tt&amp;gt;. And finally, a new &amp;lt;tt&amp;gt;hlsdk_const.inc&amp;lt;/tt&amp;gt; file has been added that contains many more constants from the SDK. This is automatically included with &amp;lt;tt&amp;gt;#include &amp;lt;engine&amp;gt;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;#include &amp;lt;fakemeta&amp;gt;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Module API=&lt;br /&gt;
The AMX Mod X module API received a small overhaul for 1.75.&lt;br /&gt;
&lt;br /&gt;
==Versioning/Interface Additions==&lt;br /&gt;
The internal module interface version is 4.  However, modules from M/SDK 3 will still load.  &lt;br /&gt;
&lt;br /&gt;
M/SDK Version 4 modules have two new members of public information: the library string, and the library class string.  These contain comma delimited names of whatever libraries or library classes the module would like to be registered.&lt;br /&gt;
&lt;br /&gt;
For backwards compatibility, M/SDK Version 4 modules have an automatically empty library class string, and a library string equal to the logtag string.&lt;br /&gt;
&lt;br /&gt;
==New Callbacks==&lt;br /&gt;
Modules can now be informed of when plugins are about to be unloaded, and when plugins have been fully unloaded.  This means that modules don't have to hook ServerActivate and ServerActivate_Post (implementation dependent), don't need to be loaded by Metamod, and don't need to detach simply to release resources.&lt;br /&gt;
&lt;br /&gt;
==New Functions==&lt;br /&gt;
*&amp;lt;tt&amp;gt;MF_GetLocalInfo&amp;lt;/tt&amp;gt; - Intended for modules using LOCALINFO, which required a Metamod attachment.  This is equal to AMX Mod X's core function &amp;lt;tt&amp;gt;get_localinfo&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*&amp;lt;tt&amp;gt;MF_OverrideNatives&amp;lt;/tt&amp;gt; - Given a native list, this specifies that any other module already providing these natives will no longer provide them.  This was added to force backwards compatibility between SQLITE and MySQLX.  Usage is not recommended.&lt;br /&gt;
*&amp;lt;tt&amp;gt;MF_FindLibrary&amp;lt;/tt&amp;gt; - Essentially the same function as LibraryExists() for plugins.&lt;br /&gt;
*&amp;lt;tt&amp;gt;MF_AddLibraries&amp;lt;/tt&amp;gt; - Adds a comma delimited list of libraries or library classes.  You must specify a &amp;quot;parent&amp;quot; pointer that identifies the module.  This is easily accomplished by taking the address of any static variable.&lt;br /&gt;
*&amp;lt;tt&amp;gt;MF_RemoveLibraries&amp;lt;/tt&amp;gt; - Removes all library entries with the given parent pointer.  This is useful if your module adds custom entries not in its defined list.  &lt;br /&gt;
&lt;br /&gt;
==MSVC8 Compatibility==&lt;br /&gt;
M/SDK Version 4 now contains preprocessor definitions for compatibility with Microsoft's Visual Studio 2005/8.0 (provided by [[User:Damaged Soul|Damaged Soul]]).  These macros can be turned off in the &amp;lt;tt&amp;gt;moduleconfig.h&amp;lt;/tt&amp;gt; file by uncommenting the definition of &amp;lt;tt&amp;gt;NO_MSVC8_AUTO_COMPAT&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Minor Changes=&lt;br /&gt;
==Compiler Defines==&lt;br /&gt;
Since &amp;lt;tt&amp;gt;__DATE__&amp;lt;/tt&amp;gt; was fixed in 1.75, the macro &amp;lt;tt&amp;gt;__TIME__&amp;lt;/tt&amp;gt; was also added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Full Changelog=&lt;br /&gt;
This changelog is tentative.  Developers will be editing it as things are changed.&lt;br /&gt;
&lt;br /&gt;
* Core Changes&lt;br /&gt;
** Modules are now automatically loaded by detecting plugin usage.&lt;br /&gt;
*** modules.ini is now primarily deprecated, except for SQL and unsupported libraries.&lt;br /&gt;
** Rewrote SQLX modules (again).  You can now load multiple SQL modules and toggle them per-plugin.&lt;br /&gt;
*** Added new SQL API called SQLX.  DBI was kept backwards-compatible.&lt;br /&gt;
*** Added new function to thread SQL queries (which prevents lag from a bad connection).&lt;br /&gt;
** Fixed some very small memory leaks.&lt;br /&gt;
** Fixed binary logging building wrong on Linux.&lt;br /&gt;
** Fixed some debugging crashes.&lt;br /&gt;
** Fixed serious bug when creating plugin_pause/plugin_unpause forwards.&lt;br /&gt;
** Fixed serious crash bug involving set_hudmessage and plugins using high hudchannels.&lt;br /&gt;
** Any file in the configs folder starting with &amp;quot;plugins-&amp;quot; and ending in &amp;quot;.ini&amp;quot; will now be treated as an extended plugins file.  This is useful for distributing sets of plugins separately, and easily disabling them with a name change.&lt;br /&gt;
&lt;br /&gt;
* Fakemeta Changes&lt;br /&gt;
** Added new hookable/callable functions:&lt;br /&gt;
*** AddToFullPack&lt;br /&gt;
*** AlertMessage&lt;br /&gt;
*** ClientPrintf&lt;br /&gt;
*** ClientUserInfoChanged&lt;br /&gt;
*** CmdEnd&lt;br /&gt;
*** CmdStart&lt;br /&gt;
*** CreateBaseline&lt;br /&gt;
*** CreateInstancedBaseline&lt;br /&gt;
*** GetInfoKeyBuffer&lt;br /&gt;
*** InfoKeyValue&lt;br /&gt;
*** UpdateClientData&lt;br /&gt;
*** SetClientKeyValue&lt;br /&gt;
*** SetKeyValue&lt;br /&gt;
** Added new natives:&lt;br /&gt;
*** copy_infokey_buffer&lt;br /&gt;
*** get_orig_retval&lt;br /&gt;
** Fixed various trace bugs in FakeMeta with certain natives.&lt;br /&gt;
** Fixed some unhooking on server-deactivate problems in FakeMeta.&lt;br /&gt;
&lt;br /&gt;
* Scripting Changes:&lt;br /&gt;
** Added __DATE__ and __TIME__ auto-macros to the compiler.&lt;br /&gt;
** Added many HLSDK constants and improved include organization.&lt;br /&gt;
** Added new compiler #pragma directives for using the module autoloading system.&lt;br /&gt;
** Added cs_get_user_mapzones (thanks VEN!).&lt;br /&gt;
** Added cs_set_user_zoom.&lt;br /&gt;
** Added cs_get_user_zoom.&lt;br /&gt;
** Added IsInWorld() stock (thanks Twilight Suzuka!).&lt;br /&gt;
** Added nvault_remove().&lt;br /&gt;
** Added emessage_begin()...emessage_end() natives for advanced messaging capabilities.&lt;br /&gt;
** Moved various natives from Engine and into Core:&lt;br /&gt;
*** register_message&lt;br /&gt;
*** get_msg_args&lt;br /&gt;
*** get/set_msg_arg_type&lt;br /&gt;
*** get/set_msg_arg_int&lt;br /&gt;
*** get/set_msg_arg_float&lt;br /&gt;
*** get/set_msg_arg_string&lt;br /&gt;
*** get_msg_origin&lt;br /&gt;
*** get/set_msg_block&lt;br /&gt;
*** velocity_by_aim&lt;br /&gt;
*** vector_to_angle&lt;br /&gt;
*** angle_vector&lt;br /&gt;
*** vector_length&lt;br /&gt;
*** vector_distance&lt;br /&gt;
*** precache_generic&lt;br /&gt;
** Dynamic natives that are paused now also pause parent plugins (with an error).&lt;br /&gt;
** register_plugin() now returns the plugin ID.&lt;br /&gt;
** Fixed a corruption bug in strip_user_weapons().&lt;br /&gt;
** Fixed a bug in set_view() (thanks jtp10181!).&lt;br /&gt;
** Fixed is_in_viewcone() always returning 0.&lt;br /&gt;
** Fixed is_visible causing a crash, improved accuracy.&lt;br /&gt;
** Fixed a crash bug in get_tr2() (thanks Orangutanz!).&lt;br /&gt;
** Fixed cs_get_user_buyzone() returning existence in other areas.&lt;br /&gt;
** Fixed a rare floatround() bug where values ending strictly in .5 were IEEE rounded.&lt;br /&gt;
** Fixed a bug where removing the current parent task could damage the task queue.&lt;br /&gt;
** Fixed a bug in get_entity_visibility (thanks VEN!).&lt;br /&gt;
** Fixed some menu item calculation bugs on single paged menus.&lt;br /&gt;
** Fixed CreateOneForward() not working as intended.&lt;br /&gt;
** Removed non-existant take_damage() entry.&lt;br /&gt;
** Expanded XS Stock Library with addition of xs_vec_make2d.&lt;br /&gt;
** Expanded usage of cs_set_user_vip().&lt;br /&gt;
** Improved get_brush_entity_origin() and ViewContents (thanks Orangutanz!).&lt;br /&gt;
** Added core natives:&lt;br /&gt;
*** fputs()&lt;br /&gt;
*** get_weaponid()&lt;br /&gt;
*** rename_file()&lt;br /&gt;
*** vformat()&lt;br /&gt;
&lt;br /&gt;
* DoD Changes:&lt;br /&gt;
** Added forwards:&lt;br /&gt;
*** dod_client_changeteam&lt;br /&gt;
*** dod_client_changeclass&lt;br /&gt;
*** dod_client_spawn&lt;br /&gt;
** Added stocks:&lt;br /&gt;
*** dod_set_model&lt;br /&gt;
*** dod_set_body_number&lt;br /&gt;
*** dod_clear_model&lt;br /&gt;
&lt;br /&gt;
* Plugin Changes:&lt;br /&gt;
** Added amx_showrcon command to show rcon results in admincmd.sma.&lt;br /&gt;
** Added weapon restriction compatibility for bots in CS (KWo).&lt;br /&gt;
** Added admin identifier (asterisk which is red if colors are available) to all menus with a user list.&lt;br /&gt;
** Upgraded admin.sma to the new SQLX API.&lt;br /&gt;
** Fixed a bug in amx_reloadadmins not giving admins new access.&lt;br /&gt;
** Fixed a weapon restriction exploit in restmenu.sma.&lt;br /&gt;
** Fixed an HTML exploit in /top15 displaying player names.&lt;br /&gt;
** Fixed various and plentiful amx_addadmin bugs.&lt;br /&gt;
** Fixed telemenu.sma not letting you teleport yourself (thanks jtp10181!).&lt;br /&gt;
** Fixed a bug with adminslots.sma lowering the slots by 1.&lt;br /&gt;
** Fixed overlapping hud messages with miscstats.&lt;br /&gt;
&lt;br /&gt;
* Module API Changes:&lt;br /&gt;
** Added and fixed module API for inter-module communication.&lt;br /&gt;
** Added native overriding and replacing to module API.&lt;br /&gt;
** Added plugin unloading/unloaded callbacks to module API.&lt;br /&gt;
** Added MSVC8 project files to most CVS projects.&lt;br /&gt;
&lt;br /&gt;
* Configuration Changes:&lt;br /&gt;
** Added amx_sql_type cvar to sql.cfg.&lt;br /&gt;
** Re-organized and simplified modules.ini.&lt;br /&gt;
** Error logging can now be redirected to separate logs.&lt;br /&gt;
** Fixed modules.ini parsing bugs and simplified parsing.&lt;br /&gt;
** Fixed a double entry in cvars.ini.&lt;br /&gt;
&lt;br /&gt;
* Other Changes:&lt;br /&gt;
** Added a Bulgarian translation (thanks lubb!).&lt;br /&gt;
** Added a leetspeak translation (thanks, I think, Twilight Suzuka!).&lt;br /&gt;
** Improved FTP option of the graphical installer.&lt;br /&gt;
** Updated the GeoIP library to June.&lt;br /&gt;
** Updated PCRE from v6.1 to v6.4.&lt;br /&gt;
** Updated sqLite from 3.3.4 to 3.3.5.&lt;br /&gt;
** Fixed a steam account path bug in the installer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting (AMX Mod X)]]&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=User:Freecode&amp;diff=3605</id>
		<title>User:Freecode</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=User:Freecode&amp;diff=3605"/>
		<updated>2006-12-14T18:41:44Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* About Me */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:FAM.jpg|thumb|actual size|Current Avatar]]&lt;br /&gt;
&lt;br /&gt;
== About Me ==&lt;br /&gt;
Lets see. I have lived in U.S for about 7 years now. I own 7 gabens and 7 pies.&lt;br /&gt;
I have a lower UserID on AMXX forums than BAILOPAN :D. Did i mention my 7 gabens and 7 pies?&lt;br /&gt;
&lt;br /&gt;
== Current Projects ==&lt;br /&gt;
* [http://shero.rocks-hideout.com/ SuperHero Mod] w/ [[User:AssKicR|AssKicR]], [[User:Vittu|Vittu]], [[User:jtp10181|JTP10181]].&lt;br /&gt;
*[http://www.tcwonline.org/~dvander/csdm/ Counter-Strike: Deathmatch 2.0+] w/ [[User:BAILOPAN|BAILOPAN]]&lt;br /&gt;
&lt;br /&gt;
== Old Projects ==&lt;br /&gt;
* [http://soccermod.calzinger.net/ Soccer Mod] w/ [[User:AssKicR|AssKicR]], T[+]rget, [[User:Bludy|Bludy]]&lt;br /&gt;
*FakeFull&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And now for my newest artwork piece&lt;br /&gt;
&lt;br /&gt;
[[Image:Freecode-graffiti.jpg]]&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=AMX_Mod_X_1.70_Scripting_Changes&amp;diff=3599</id>
		<title>AMX Mod X 1.70 Scripting Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=AMX_Mod_X_1.70_Scripting_Changes&amp;diff=3599"/>
		<updated>2006-12-13T17:51:18Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* HUD Text Channels */ #include &amp;lt;amxmodx&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article goes over the new scripting changes available in [[AMX Mod X]] version 1.70.&lt;br /&gt;
&lt;br /&gt;
=New Systems=&lt;br /&gt;
These are entirely new categories of functions added to [[AMX Mod X]] in 1.70.&lt;br /&gt;
&lt;br /&gt;
===CVAR Pointers===&lt;br /&gt;
CVAR pointers are a new method of getting/retrieving CVAR values.  It is a much faster method than using the get/set_cvar functions.  The difference is instead of passing a &amp;quot;cvar name&amp;quot;, you pass the &amp;quot;cvar pointer&amp;quot;, which is a direct memory access rather than a string lookup.  In order to easily accomodate this, &amp;lt;tt&amp;gt;register_cvar&amp;lt;/tt&amp;gt; now returns a CVAR pointer from the CVAR you created.  You can also use &amp;lt;tt&amp;gt;get_cvar_pointer&amp;lt;/tt&amp;gt;.  Usage is mapped as such:&lt;br /&gt;
*&amp;lt;tt&amp;gt;get_cvar_flags&amp;lt;/tt&amp;gt; -&amp;gt; &amp;lt;tt&amp;gt;get_pcvar_flags&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;set_cvar_flags&amp;lt;/tt&amp;gt; -&amp;gt; &amp;lt;tt&amp;gt;set_pcvar_flags&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;get_cvar_string&amp;lt;/tt&amp;gt; -&amp;gt; &amp;lt;tt&amp;gt;get_pcvar_string&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;set_cvar_string&amp;lt;/tt&amp;gt; -&amp;gt; &amp;lt;b&amp;gt;NONE&amp;lt;/b&amp;gt; (not implemented)&lt;br /&gt;
*&amp;lt;tt&amp;gt;get_cvar_num&amp;lt;/tt&amp;gt; -&amp;gt; &amp;lt;tt&amp;gt;get_pcvar_num&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;set_cvar_num&amp;lt;/tt&amp;gt; -&amp;gt; &amp;lt;tt&amp;gt;set_pcvar_num&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;get_cvar_float&amp;lt;/tt&amp;gt; -&amp;gt; &amp;lt;tt&amp;gt;get_pcvar_float&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;set_cvar_float&amp;lt;/tt&amp;gt; -&amp;gt; &amp;lt;tt&amp;gt;set_pcvar_float&amp;lt;/tt&amp;gt;&lt;br /&gt;
An example of old code might be:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
   register_cvar(&amp;quot;csdm_active&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public pfn_touch()&lt;br /&gt;
{&lt;br /&gt;
   if (!get_cvar_num(&amp;quot;csdm_active&amp;quot;))&lt;br /&gt;
      return PLUGIN_CONTINUE&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To use CVAR pointers and optimize your code:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new g_csdm_active&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
   g_csdm_active = register_cvar(&amp;quot;csdm_active&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public pfn_touch()&lt;br /&gt;
{&lt;br /&gt;
   if (!get_pcvar_num(g_csdm_active))&lt;br /&gt;
      return PLUGIN_CONTINUE&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Event Forwarding===&lt;br /&gt;
One of AMX Mod X's first advanced API additions was &amp;quot;callfunc&amp;quot;, which let plugins intercommunicate.  This expanded with the &amp;quot;module forward API&amp;quot;, then to &amp;quot;dynamic natives&amp;quot;.  Now, AMX Mod X has a &amp;quot;plugin forward API&amp;quot;.  This lets you call a public function in all plugins at once, which is very useful for global event/messaging creation.  The new natives are:&lt;br /&gt;
*&amp;lt;tt&amp;gt;CreateMultiForward&amp;lt;/tt&amp;gt; - Creates a global forward to a public function in all plugins.&lt;br /&gt;
*&amp;lt;tt&amp;gt;CreateOneForward&amp;lt;/tt&amp;gt; - Creates a single, per-plugin forward to a public function.&lt;br /&gt;
*&amp;lt;tt&amp;gt;PrepareArray&amp;lt;/tt&amp;gt; - Prepares an array to be passed into a forward.&lt;br /&gt;
*&amp;lt;tt&amp;gt;ExecuteForward&amp;lt;/tt&amp;gt; - Executes a forward, calling all the public functions it contains.&lt;br /&gt;
*&amp;lt;tt&amp;gt;DestroyForward&amp;lt;/tt&amp;gt; - Removes a forward from memory.&lt;br /&gt;
&lt;br /&gt;
An example of creating a forward is below.  This plugin creates the forward, and fires it when the command is typed.&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new g_fwd_what&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
    register_plugin(&amp;quot;forward test&amp;quot;, &amp;quot;1.0&amp;quot;, &amp;quot;BAILOPAN&amp;quot;)&lt;br /&gt;
    register_srvcmd(&amp;quot;fwd_test&amp;quot;, &amp;quot;Command_FwdTest&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    g_fwd_what = CreateMultiForward(&amp;quot;Event_What&amp;quot;, ET_STOP, FP_STRING, FP_CELL, FP_ARRAY)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public Event_What(str[], d, arr[])&lt;br /&gt;
{&lt;br /&gt;
    server_print(&amp;quot;Event what called with (%s) num = %d|%d (should be 5|37)&amp;quot;, str, d, arr[d])&lt;br /&gt;
    &lt;br /&gt;
    return PLUGIN_CONTINUE&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public Command_FwdTest()&lt;br /&gt;
{&lt;br /&gt;
    new array[6], ret&lt;br /&gt;
    array[5] = 37&lt;br /&gt;
    &lt;br /&gt;
    new pArray = PrepareArray(array, 6)&lt;br /&gt;
    if (!ExecuteForward(g_fwd_what, ret, &amp;quot;gaben&amp;quot;, 5, pArray))&lt;br /&gt;
    {&lt;br /&gt;
        server_print(&amp;quot;FAILED!&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Fast File Natives===&lt;br /&gt;
One of the biggest flaws in the original AMX Mod core is the tendency to replace direct access handles with bad abstraction layers.  Write_file and read_file are examples of this.  To read or write line N to a file, they must open the file, seek to line N, then close it.  For reading sequentially, this is an O(n^2) operation -- very slow!&lt;br /&gt;
&lt;br /&gt;
These have been made obsolete with:&lt;br /&gt;
*&amp;lt;tt&amp;gt;fopen&amp;lt;/tt&amp;gt; - Opens and returns a file handle on success.&lt;br /&gt;
*&amp;lt;tt&amp;gt;fclose&amp;lt;/tt&amp;gt; - Closes a file handle.&lt;br /&gt;
*&amp;lt;tt&amp;gt;feof&amp;lt;/tt&amp;gt; - Checks for end of file.&lt;br /&gt;
*&amp;lt;tt&amp;gt;fprintf&amp;lt;/tt&amp;gt; - Writes to a file.&lt;br /&gt;
*&amp;lt;tt&amp;gt;fgets&amp;lt;/tt&amp;gt; - Reads text from a file.&lt;br /&gt;
*&amp;lt;tt&amp;gt;fseek&amp;lt;/tt&amp;gt; - Seek to a position in a file.&lt;br /&gt;
*&amp;lt;tt&amp;gt;ftell&amp;lt;/tt&amp;gt; - Get the current position of a file.&lt;br /&gt;
*&amp;lt;tt&amp;gt;fread/fread_blocks/fread_raw&amp;lt;/tt&amp;gt; - Read binary data from a file.&lt;br /&gt;
*&amp;lt;tt&amp;gt;fwrite/fwrite_blocks/fwrite_raw&amp;lt;/tt&amp;gt; - Write binary data to a file.&lt;br /&gt;
&lt;br /&gt;
An example of reading a file with the new system:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
#include &amp;lt;file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
stock CopyTextFile(const infile[], const outfile[])&lt;br /&gt;
{&lt;br /&gt;
   new infp = fopen(infile, &amp;quot;rt&amp;quot;)    //read text&lt;br /&gt;
   new outfp = fopen(outfile, &amp;quot;wt&amp;quot;)  //write text&lt;br /&gt;
   &lt;br /&gt;
   if (!infp || !outfp)&lt;br /&gt;
      return 0&lt;br /&gt;
&lt;br /&gt;
   new buffer[2048]&lt;br /&gt;
   while (!feof(infp))&lt;br /&gt;
   {&lt;br /&gt;
      fgets(infp, buffer, 2047)&lt;br /&gt;
      fprintf(outfp, &amp;quot;%s&amp;quot;, buffer)&lt;br /&gt;
   }&lt;br /&gt;
   fclose(infp)&lt;br /&gt;
   fclose(outfp)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;tt&amp;gt;fgets&amp;lt;/tt&amp;gt; includes a newline if one is reached.  A quick way to strip newlines is:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
new len = strlen(string)&lt;br /&gt;
if (string[len-1] == '^n')&lt;br /&gt;
   string[--len] = 0&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Upgraded Systems=&lt;br /&gt;
&lt;br /&gt;
A few systems in [[AMX Mod X]] 1.70 were either slightly or completely overhauled.&lt;br /&gt;
&lt;br /&gt;
===New Menus===&lt;br /&gt;
The major changes included in the &amp;quot;new newmenu&amp;quot; system:&lt;br /&gt;
*&amp;lt;tt&amp;gt;menu_setprop&amp;lt;/tt&amp;gt; - You can now set per-menu properties.&lt;br /&gt;
**&amp;lt;tt&amp;gt;MPROP_PERPAGE&amp;lt;/tt&amp;gt; - Sets the level of pagination.&lt;br /&gt;
**&amp;lt;tt&amp;gt;MPROP_BACKNAME&amp;lt;/tt&amp;gt; - Sets the text for the &amp;quot;Back&amp;quot; button.&lt;br /&gt;
**&amp;lt;tt&amp;gt;MPROP_NEXTNAME&amp;lt;/tt&amp;gt; - Sets the text for the &amp;quot;More&amp;quot; button.&lt;br /&gt;
**&amp;lt;tt&amp;gt;MPROP_EXITNAME&amp;lt;/tt&amp;gt; - Sets the text for the &amp;quot;Exit&amp;quot; button.&lt;br /&gt;
**&amp;lt;tt&amp;gt;MPROP_TITLE&amp;lt;/tt&amp;gt; - Sets the menu title.&lt;br /&gt;
**&amp;lt;tt&amp;gt;MPROP_EXIT&amp;lt;/tt&amp;gt; - Controls how &amp;quot;Exit&amp;quot; buttons are displayed.&lt;br /&gt;
**&amp;lt;tt&amp;gt;MPROP_ORDER&amp;lt;/tt&amp;gt; - Sets menu item order.&lt;br /&gt;
**&amp;lt;tt&amp;gt;MPROP_NOCOLORS&amp;lt;/tt&amp;gt; - Forces no colors.&lt;br /&gt;
**&amp;lt;tt&amp;gt;MPROP_PADMENU&amp;lt;/tt&amp;gt; - Sets how items/spaces are padded.&lt;br /&gt;
*&amp;lt;tt&amp;gt;menu_destroy&amp;lt;/tt&amp;gt; - Menus are now destroyable.&lt;br /&gt;
*Menus calculate items correctly.&lt;br /&gt;
*Menu callbacks no longer send MENU_BACK or MENU_MORE, it is handled internally.&lt;br /&gt;
*Menu callbacks will received MENU_EXIT if the player disconnects or is sent another menu.&lt;br /&gt;
*Menu callbacks are guaranteed to be called in any situation (so you can destroy them).&lt;br /&gt;
*&amp;lt;tt&amp;gt;menu_addblank&amp;lt;/tt&amp;gt; - Menus can have blank entries.&lt;br /&gt;
*&amp;lt;tt&amp;gt;player_menu_info&amp;lt;/tt&amp;gt; - Newmenu synchronization.&lt;br /&gt;
&lt;br /&gt;
An example of using destroyable, per-player newmenus is below:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
    register_plugin(&amp;quot;forward test&amp;quot;, &amp;quot;1.0&amp;quot;, &amp;quot;BAILOPAN&amp;quot;); &lt;br /&gt;
    register_clcmd(&amp;quot;menu_test&amp;quot;, &amp;quot;Command_MenuTest&amp;quot;);  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public gaben_handler(id, menu, item)&lt;br /&gt;
{&lt;br /&gt;
    client_print(0, print_chat, &amp;quot;Player %d selected menu %d item %d&amp;quot;, id, menu, item);&lt;br /&gt;
    if (item == MENU_EXIT)&lt;br /&gt;
    {&lt;br /&gt;
        //Note that you must remember to destroy the menu here, since &lt;br /&gt;
        // you won't hit the one below.&lt;br /&gt;
        menu_destroy(menu);&lt;br /&gt;
        return PLUGIN_HANDLED;&lt;br /&gt;
    }&lt;br /&gt;
        &lt;br /&gt;
    new cmd[6], iName[64];&lt;br /&gt;
    new access, callback;&lt;br /&gt;
    &lt;br /&gt;
    menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback);&lt;br /&gt;
    &lt;br /&gt;
    client_print(0, print_chat, &amp;quot; ---&amp;gt; Evaluated to: %s[%s]&amp;quot;, iName, cmd);&lt;br /&gt;
    &lt;br /&gt;
    menu_destroy(menu);&lt;br /&gt;
        &lt;br /&gt;
    return PLUGIN_HANDLED;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public Command_MenuTest(id)&lt;br /&gt;
{&lt;br /&gt;
    new menu = menu_create(&amp;quot;Gaben?&amp;quot;, &amp;quot;gaben_handler&amp;quot;);&lt;br /&gt;
    menu_additem(menu, &amp;quot;1&amp;quot;, &amp;quot;1&amp;quot;, 0);&lt;br /&gt;
    menu_addblank(menu);&lt;br /&gt;
    menu_additem(menu, &amp;quot;&amp;quot;, &amp;quot;2&amp;quot;, 0);&lt;br /&gt;
    menu_additem(menu, &amp;quot;3&amp;quot;, &amp;quot;3&amp;quot;, 0);&lt;br /&gt;
    menu_additem(menu, &amp;quot;4&amp;quot;, &amp;quot;4&amp;quot;, 0);&lt;br /&gt;
    menu_additem(menu, &amp;quot;6&amp;quot;, &amp;quot;6&amp;quot;, 0);&lt;br /&gt;
    menu_additem(menu, &amp;quot;7&amp;quot;, &amp;quot;7&amp;quot;, 0);&lt;br /&gt;
    menu_additem(menu, &amp;quot;8&amp;quot;, &amp;quot;8&amp;quot;, 0);&lt;br /&gt;
    menu_additem(menu, &amp;quot;9&amp;quot;, &amp;quot;9&amp;quot;, 0);&lt;br /&gt;
    menu_setprop(menu, MPROP_PERPAGE, 3);&lt;br /&gt;
    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);&lt;br /&gt;
    menu_setprop(menu, MPROP_NEXTNAME, &amp;quot;Next&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    menu_display(id, menu, 0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===HUD Text Channels===&lt;br /&gt;
[[AMX Mod X]] 1.70 features automated channeling of HUD messages and HUD synchronization.  This was created to solve the problem of a big plugin, like StatsX, uses all four HUD channels in a hardcoded manner.&lt;br /&gt;
&lt;br /&gt;
To use this API, you can pass &amp;quot;-1&amp;quot; as the channel to set_hudmessage.  Or, if you need to cache the automatically chosen HUD channel for future use, you can use &amp;lt;tt&amp;gt;next_hudchannel(player)&amp;lt;/tt&amp;gt;, which will return a given player's next available HUD channel.  The selection algorithm is &amp;quot;least recently used&amp;quot; (LRU).&lt;br /&gt;
&lt;br /&gt;
However, another problem emerges with this.  Imagine the situation where:&lt;br /&gt;
*Plugin A uses the new auto-channeling system.  It places a message in the top-left corner on channel X.&lt;br /&gt;
*Plugin B uses hardcoded channels.  It places a message on the bottom corner on channel X.&lt;br /&gt;
*Plugin A wants to display a new message on the same coordinates as the last one.  It must first clear channel X or risk having messages that overlap.  Plugin A has two choices:&lt;br /&gt;
**Ignore them problem and just let them potentially overlap.&lt;br /&gt;
**Clear channel X, and risk overwriting a valid message that is no longer overlapping.&lt;br /&gt;
&lt;br /&gt;
In order to solve this weird race condition, &amp;quot;HUD Sync Objects&amp;quot; were created.  These will automatically use the auto-channeling system and take care of clearing potentially colliding areas for.  The rule of thumb is  to check how many overlapping areas of the screen you have.  For example, if you have three messages which display in the top, and four which display in the bottom, you should use two HUD Sync Objects to make sure that when one message is displayed, you don't overwrite an invalid one or clear a valid one.&lt;br /&gt;
&lt;br /&gt;
An example of this is below:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new g_MyMsgSync&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
    register_clcmd(&amp;quot;/show&amp;quot;, &amp;quot;showMsg&amp;quot;)&lt;br /&gt;
    register_clcmd(&amp;quot;/what&amp;quot;, &amp;quot;whatMsg&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    g_MyMsgSync = CreateHudSyncObj()&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public showMsg(id)&lt;br /&gt;
{&lt;br /&gt;
    //last parameter is not needed&lt;br /&gt;
    set_hudmessage(0, 255, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15)&lt;br /&gt;
    //use this instead of show_hudmessage&lt;br /&gt;
    ShowSyncHudMsg(id, g_MyMsgSync, &amp;quot;You have been shown a message!&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public whatMsg(id)&lt;br /&gt;
{&lt;br /&gt;
    set_hudmessage(0, 255, 255, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15)&lt;br /&gt;
    ShowSyncHudMsg(id, g_MyMsgSync, &amp;quot;what....&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The player can type these two commands and the messages, which would normally overlap without messy synchronization, are automatically cleared for you as necessary.&lt;br /&gt;
&lt;br /&gt;
=New Natives / Native Changes=&lt;br /&gt;
===format/formatex===&lt;br /&gt;
Format() and formatex() are now completely rewritten for speed.  The important difference between the two functions lies within how things are copied for efficiency.  The first parameter to &amp;quot;format&amp;quot; is the &amp;quot;output buffer&amp;quot;.  All other parameters are &amp;quot;source inputs&amp;quot;.  &lt;br /&gt;
*If format() detects that any single source input lies within the same memory as the destination output, it will revert to a slower, &amp;quot;copy-back&amp;quot; version.&lt;br /&gt;
*If format() detects that no source inputs collide with the output buffer, it will call formatex() instead, which is faster.&lt;br /&gt;
*formatex() eliminates the check of format() for a tiny bit of extra speed.  It is recommended to use this if you know your copying is safe.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
new buffer[255]&lt;br /&gt;
new output[255]&lt;br /&gt;
new num = 7&lt;br /&gt;
&lt;br /&gt;
//Fast format&lt;br /&gt;
format(buffer, 254, &amp;quot;This is a fast format %%d %d&amp;quot;, 7)&lt;br /&gt;
//Slower format - buffer is the same as buffer&lt;br /&gt;
format(buffer, 254, buffer, 7)&lt;br /&gt;
//Slower format - buffer[4] lies within buffer&lt;br /&gt;
format(buffer, 254, &amp;quot;%s&amp;quot;, buffer[4])&lt;br /&gt;
&lt;br /&gt;
//Fastest format&lt;br /&gt;
formatex(buffer, 254, &amp;quot;This is a valid format: %d&amp;quot;, 7)&lt;br /&gt;
//Invalid format - garbage string, since boundary collision is unchecked&lt;br /&gt;
formatex(buffer, 254, &amp;quot;%s&amp;quot;, buffer)&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Other Core Natives===&lt;br /&gt;
*&amp;lt;tt&amp;gt;set_fail_state&amp;lt;/tt&amp;gt; - &amp;quot;Unload&amp;quot; your plugin forcibly and irreversibly.&lt;br /&gt;
&lt;br /&gt;
===Fun===&lt;br /&gt;
*&amp;lt;tt&amp;gt;get_user_footsteps&amp;lt;/tt&amp;gt; - Complements set_user_footsteps.&lt;br /&gt;
&lt;br /&gt;
===Natural Selection===&lt;br /&gt;
*&amp;lt;tt&amp;gt;ns_get_hive_ability&amp;lt;/tt&amp;gt; - Gets hive abilities.&lt;br /&gt;
&lt;br /&gt;
===MySQL/DBI===&lt;br /&gt;
*&amp;lt;tt&amp;gt;dbi_query2&amp;lt;/tt&amp;gt; - Returns the number of rows affected, if any.&lt;br /&gt;
&lt;br /&gt;
===Fakemeta===&lt;br /&gt;
*&amp;lt;tt&amp;gt;unregister_forward&amp;lt;/tt&amp;gt; - Unregisters a forward so plugins can unhook hot/expensive events.&lt;br /&gt;
*&amp;lt;tt&amp;gt;pev_valid&amp;lt;/tt&amp;gt; - Complements &amp;lt;tt&amp;gt;is_valid_ent&amp;lt;/tt&amp;gt;() from Engine.&lt;br /&gt;
&lt;br /&gt;
===Sockets===&lt;br /&gt;
*&amp;lt;tt&amp;gt;socket_send2&amp;lt;/tt&amp;gt; - Sends binary data, rather than stopping at a NULL byte.&lt;br /&gt;
&lt;br /&gt;
==New Stocks==&lt;br /&gt;
&lt;br /&gt;
===Core===&lt;br /&gt;
*&amp;lt;tt&amp;gt;get_time_length&amp;lt;/tt&amp;gt; - Returns an intelligent, multi-lingual, stringized difference of two times.  (Brad)&lt;br /&gt;
*&amp;lt;tt&amp;gt;replace_all&amp;lt;/tt&amp;gt; - Replaces all occurences of one string inside another. (jtp10181)&lt;br /&gt;
*&amp;lt;tt&amp;gt;split&amp;lt;/tt&amp;gt; - Like &amp;lt;tt&amp;gt;strbreak&amp;lt;/tt&amp;gt; except for matching multiple tokens.  (Suicid3)&lt;br /&gt;
*&amp;lt;tt&amp;gt;remove_filepath&amp;lt;/tt&amp;gt; - Strips a file of its hard path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Module API=&lt;br /&gt;
&lt;br /&gt;
===Player Properties===&lt;br /&gt;
Because modules often change things that Core doesn't know about, it became necessary to abstract Core's internal variable states for players.  &amp;lt;tt&amp;gt;MF_GetPlayerPropAddr&amp;lt;/tt&amp;gt;() takes in a player index and a property, and returns an address to that property.  It should be noted that these addresses are raw, and when modified, must correspond exactly to the same data type that Core expects.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_Name&amp;lt;/tt&amp;gt; (String, CString.h) - Player's name.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_Ip&amp;lt;/tt&amp;gt; (String, CString.h) - Player's IP address.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_Team&amp;lt;/tt&amp;gt; (String, Cstring.h) - Player's Team Name.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_Ingame&amp;lt;/tt&amp;gt; (bool) - Whether a player is ingame.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_Authorized&amp;lt;/tt&amp;gt; (bool) - Whether a player is authorized.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_Vgui&amp;lt;/tt&amp;gt; (bool) - Whether a player has a VGUI menu.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_Time&amp;lt;/tt&amp;gt; (float) - Connected time.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_Playtime&amp;lt;/tt&amp;gt; (float) - In-game time.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_MenuExpire&amp;lt;/tt&amp;gt; (float) - Time when menu expires.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_Weapons&amp;lt;/tt&amp;gt; (struct{int,int}[32]) - Weapon id -&amp;gt; ammo,clip mappings.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_CurrentWeapon&amp;lt;/tt&amp;gt; (int) - Current weapon id.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_TeamID&amp;lt;/tt&amp;gt; (int) - Team ID.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_Deaths&amp;lt;/tt&amp;gt; (int) - Death count.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_Aiming&amp;lt;/tt&amp;gt; (int) - Aim target.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_Menu&amp;lt;/tt&amp;gt; (int) - Old menu index.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_Keys&amp;lt;/tt&amp;gt; (int) - Pressed menu keys.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_Flags&amp;lt;/tt&amp;gt; (int[32]) - Array of flags.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_Newmenu&amp;lt;/tt&amp;gt; (int) - New menu index.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Player_NewmenuPage&amp;lt;/tt&amp;gt; (int) - New menu page number.&lt;br /&gt;
&lt;br /&gt;
A short example:&lt;br /&gt;
&amp;lt;cpp&amp;gt;&lt;br /&gt;
int *deaths = static_cast&amp;lt;int *&amp;gt;(MF_GetPlayerPropAddr(id, Player_Deaths));&lt;br /&gt;
*deaths = 0;&lt;br /&gt;
&amp;lt;/cpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Authorization Callbacks===&lt;br /&gt;
You can also hook &amp;quot;Client_Authorized&amp;quot;, a custom and often redundantly coded event provided by the AMX Mod X core.  This was not available to modules before 1.70.  Example:&lt;br /&gt;
&amp;lt;cpp&amp;gt;&lt;br /&gt;
void OnPlayerAuthorized(int player, const char *authid)&lt;br /&gt;
{&lt;br /&gt;
   ///CODE HERE&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void OnAmxxAttach()&lt;br /&gt;
{&lt;br /&gt;
   MF_RegAuthFunc(OnPlayerAuthorized);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void OnAmxxDetach()&lt;br /&gt;
{&lt;br /&gt;
   MF_UnregAuthFunc(OnPlayerAuthorized);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/cpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The unregister version is provided for plugins which are not Metamod enabled, and thus can be removed at mapchange.  The callbacks will otherwise be called whenever a player or bot is deemed to have a valid SteamID.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Compiler Changes=&lt;br /&gt;
*You can no longer pass the wrong number of arguments to a function and have it pass off as a warning.&lt;br /&gt;
*&amp;lt;strike&amp;gt;Scripters can now use the &amp;lt;tt&amp;gt;__DATE__&amp;lt;/tt&amp;gt; macro to insert a string of the date at compile time.&amp;lt;/strike&amp;gt; this didn't make it into the final correctly -- [[User:BAILOPAN|BAILOPAN]] 19:26, 4 March 2006 (EST)&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting (AMX Mod X)]]&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Commands_(AMX_Mod_X)&amp;diff=3597</id>
		<title>Ru Commands (AMX Mod X)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Commands_(AMX_Mod_X)&amp;diff=3597"/>
		<updated>2006-12-13T11:35:37Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Команды RCON */ уточнение&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Ru:Documentation (AMX Mod X)]]&lt;br /&gt;
&lt;br /&gt;
= Выбор языка =&lt;br /&gt;
&lt;br /&gt;
Смотреть эту страницу на:&lt;br /&gt;
&lt;br /&gt;
* [[Commands_%28AMX_Mod_X%29|English]]&lt;br /&gt;
* [[ru:Commands_%28AMX_Mod_X%29|Russian]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Введение=&lt;br /&gt;
Консольные команды вводятся в консоли как:&lt;br /&gt;
&amp;lt;pre&amp;gt;amx_&amp;lt;command&amp;gt; &amp;lt;option1&amp;gt; &amp;lt;option2&amp;gt; [option3]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Обязательные оции показаны с &amp;lt;&amp;gt;, не обязательные параметры показаны с []. Символы &amp;lt;&amp;gt; и [] в действительности вводить не нужно.&lt;br /&gt;
&lt;br /&gt;
Чтобы увидеть справку во время игры, введите в консоли следующее:&lt;br /&gt;
&amp;lt;pre&amp;gt;amx_help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Команды админа=&lt;br /&gt;
:{|&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Команда&lt;br /&gt;
| Формат&lt;br /&gt;
| Доступ&lt;br /&gt;
| Описание&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_kick&lt;br /&gt;
| &amp;lt;name или #userid&amp;gt; [причина]A&lt;br /&gt;
| ADMIN_KICK&lt;br /&gt;
| Кикнуть игрока.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_ban&lt;br /&gt;
| &amp;lt;name или #userid&amp;gt; &amp;lt;время&amp;gt; [причина]&lt;br /&gt;
| ADMIN_BAN&lt;br /&gt;
| Забанить игрока.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_banip&lt;br /&gt;
| &amp;lt;authid или ip&amp;gt; &amp;lt;минуты&amp;gt; [причина]&lt;br /&gt;
| ADMIN_BAN&lt;br /&gt;
| Забанить игрока по IP.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_addban&lt;br /&gt;
| &amp;lt;authid или ip&amp;gt; &amp;lt;минуты&amp;gt; [причина]&lt;br /&gt;
| ADMIN_BAN&lt;br /&gt;
| Добавить бан в бансписок.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_unban&lt;br /&gt;
| &amp;lt;authid или ip&amp;gt;&lt;br /&gt;
| ADMIN_BAN&lt;br /&gt;
| Разбанить игрока.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_slay&lt;br /&gt;
| &amp;lt;name или #userid&amp;gt;&lt;br /&gt;
| ADMIN_SLAY&lt;br /&gt;
| Убивает игрока.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_slap&lt;br /&gt;
| &amp;lt;name или #userid&amp;gt; [повреждение]&lt;br /&gt;
| ADMIN_SLAY&lt;br /&gt;
| Бьет игрока с силой указанной в переменной.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_leave&lt;br /&gt;
| &amp;lt;tag&amp;gt; [тег1] [тег2] [тег3]&lt;br /&gt;
| ADMIN_KICK&lt;br /&gt;
| Кикать всех игроков которые не имеют один из тегов.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_pause&lt;br /&gt;
| &lt;br /&gt;
| ADMIN_CVAR&lt;br /&gt;
| Устанавливает паузу в игре или снимает её.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_who&lt;br /&gt;
| &lt;br /&gt;
| ADMIN_ADMIN&lt;br /&gt;
| Выводит список текущих клиентов сервера, с указанием различных деталей, таких как уровень доступа и др.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_cvar&lt;br /&gt;
| &amp;lt;cvar&amp;gt; [value]&lt;br /&gt;
| ADMIN_CVAR&lt;br /&gt;
| Устанавливает или показывает cvar переменную.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_map&lt;br /&gt;
| &amp;lt;имя карты&amp;gt;&lt;br /&gt;
| ADMIN_MAP&lt;br /&gt;
| Меняет карту.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_nick&lt;br /&gt;
| &amp;lt;name or #userid&amp;gt; &amp;lt;новое имя&amp;gt;&lt;br /&gt;
| ADMIN_LEVEL_A&lt;br /&gt;
| Меняет имя пользователя (на самом деле запускает команду name удаленно на консоли пользователя - не работает если у пользователя прописано alias name)&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_cfg&lt;br /&gt;
| &amp;lt;имя файла&amp;gt;&lt;br /&gt;
| ADMIN_CFG&lt;br /&gt;
| Загружает на стороне сервера конфигурационный файл.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_rcon&lt;br /&gt;
| &amp;lt;командная строка&amp;gt;&lt;br /&gt;
| ADMIN_RCON&lt;br /&gt;
| Запускает консольную команду на стороне сервера.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_showrcon&lt;br /&gt;
| &amp;lt;командная строка&amp;gt;&lt;br /&gt;
| ADMIN_RCON&lt;br /&gt;
| Запускает консольную команду на стороне сервера с возвратом ответа от сервера.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_plugins&lt;br /&gt;
| &lt;br /&gt;
| ADMIN_ADMIN&lt;br /&gt;
| Список всех загруженых плагинов.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_modules&lt;br /&gt;
| &lt;br /&gt;
| ADMIN_ADMIN&lt;br /&gt;
| Список всех загруженых модулей.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Команды чата=&lt;br /&gt;
:{|&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Команда&lt;br /&gt;
| Формат&lt;br /&gt;
| Доступ&lt;br /&gt;
| Описание&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_say&lt;br /&gt;
| &amp;lt;сообщение&amp;gt;&lt;br /&gt;
| ADMIN_CHAT&lt;br /&gt;
| Посылает сообщение всем игрокам через обычный чат.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_chat&lt;br /&gt;
| &amp;lt;сообщение&amp;gt;&lt;br /&gt;
| ADMIN_CHAT&lt;br /&gt;
| Посылает сообщение всем администраторам через обычный чат.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_psay&lt;br /&gt;
| &amp;lt;name или #userid&amp;gt; &amp;lt;сообщение&amp;gt;&lt;br /&gt;
| ADMIN_CHAT&lt;br /&gt;
| Послать личное сообщение игроку.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_tsay&lt;br /&gt;
| &amp;lt;цвет&amp;gt; &amp;lt;сообщение&amp;gt;&lt;br /&gt;
| ADMIN_CHAT&lt;br /&gt;
| Посылает сообщение всем игрокам. Сообщение показывается слевой стороны в игре.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_csay&lt;br /&gt;
| &amp;lt;цвет&amp;gt; &amp;lt;сообщение&amp;gt;&lt;br /&gt;
| ADMIN_CHAT&lt;br /&gt;
| Посылает сообщение всем игрокам. Сообщение показывается в центре экрана.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Команды голосования=&lt;br /&gt;
:{|&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Команда&lt;br /&gt;
| Формат&lt;br /&gt;
| Доступ&lt;br /&gt;
| Описание&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_votemap&lt;br /&gt;
| &amp;lt;карта&amp;gt; [карта] [карта] [карта]&lt;br /&gt;
| ADMIN_VOTE&lt;br /&gt;
| Начинает голосование за карту.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_votekick&lt;br /&gt;
| &amp;lt;name или #userid&amp;gt;&lt;br /&gt;
| ADMIN_VOTE&lt;br /&gt;
| Начинает голосование за то чтобы кикнуть игрока.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_voteban&lt;br /&gt;
| &amp;lt;name или #userid&amp;gt;&lt;br /&gt;
| ADMIN_VOTE&lt;br /&gt;
| Начинает голосование за то чтобы забанить игрока.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_vote&lt;br /&gt;
| &amp;lt;Вопрос&amp;gt; &amp;lt;ответ1&amp;gt; &amp;lt;ответ2&amp;gt;&lt;br /&gt;
| ADMIN_VOTE&lt;br /&gt;
| Начинает произвольное голосование.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_cancelvote  	 &lt;br /&gt;
| &lt;br /&gt;
| ADMIN_VOTE&lt;br /&gt;
| Отменяет последнее голосование которое находится в прогрессе.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Команды статистики=&lt;br /&gt;
:{|&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Команда&lt;br /&gt;
| Описание&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| say /hp&lt;br /&gt;
| Показывает информацию о вашем убийце.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| say /statsme&lt;br /&gt;
| Показывает вашу статистику.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| say /stats&lt;br /&gt;
| Показывает статистику других игроков.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| say /top15&lt;br /&gt;
| Показывает рейтинг лучших 15 игроков.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| say /rank&lt;br /&gt;
| Показывает ваш рейтинг на сервере.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Команды чата=&lt;br /&gt;
:{|&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Команда&lt;br /&gt;
| Описание&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| say nextmap&lt;br /&gt;
| Показывает следующую карту в mapcycle.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| say timeleft&lt;br /&gt;
| Показывает сколько времени осталось до смены карты.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| say thetime&lt;br /&gt;
| Показывает текущее время.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Команды меню=&lt;br /&gt;
{{qnotice|ACCESS_LEVEL_A не является &amp;quot;a&amp;quot;, это &amp;quot;m&amp;quot;.  Смотрите [[Adding Admins (AMX Mod X)#Access Levels|Уровни доступа]].}}&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Команда&lt;br /&gt;
| Доступ&lt;br /&gt;
| Описание&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amxmodmenu&lt;br /&gt;
| ADMIN_MENU&lt;br /&gt;
| Показывает главное AMX Mod X меню.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_cvarmenu&lt;br /&gt;
| ADMIN_CVAR&lt;br /&gt;
| Показывает CVAR меню.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_mapmenu&lt;br /&gt;
| ADMIN_MAP&lt;br /&gt;
| Показывает меню смены карт.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_votemapmenu&lt;br /&gt;
| ADMIN_MAP&lt;br /&gt;
| Показывает меню голосований.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_kickmenu&lt;br /&gt;
| ADMIN_KICK&lt;br /&gt;
| Показывает kick меню.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_banmenu&lt;br /&gt;
| ADMIN_BAN&lt;br /&gt;
| Показывает ban меню.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_slapmenu&lt;br /&gt;
| ADMIN_SLAY&lt;br /&gt;
| Показывает slap/slay меню.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_teammenu&lt;br /&gt;
| ADMIN_LEVEL_A&lt;br /&gt;
| Показывает меню смены команд.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_clcmdmenu&lt;br /&gt;
| ADMIN_LEVEL_A&lt;br /&gt;
| Показывает меню клиентских команд.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_restmenu&lt;br /&gt;
| ADMIN_CFG&lt;br /&gt;
| Показывает меню оружейного огранчения.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_teleportmenu&lt;br /&gt;
| ADMIN_CFG&lt;br /&gt;
| Показывает меню телепорта.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_pausecfgmenu&lt;br /&gt;
| ADMIN_CFG&lt;br /&gt;
| Меню установки плагинов в паузу или снятие паузы.&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| amx_statscfgmenu&lt;br /&gt;
| ADMIN_CFG&lt;br /&gt;
| Показывает меню настроек статистики.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Команда Конфига=&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;t2th&amp;quot; | Команда:&lt;br /&gt;
| class=&amp;quot;t2td&amp;quot; | amx_pausecfg&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;t2th&amp;quot; | Формат: &lt;br /&gt;
| class=&amp;quot;t2td&amp;quot; | &amp;lt;команда&amp;gt; [имя]&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;t2th&amp;quot; | Доступ:&lt;br /&gt;
| class=&amp;quot;t2td&amp;quot; | ADMIN_CFG&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;t2th&amp;quot; | Описание:&lt;br /&gt;
| class=&amp;quot;t2td&amp;quot; | Установить в паузу плагин.&amp;lt;br /&amp;gt;&lt;br /&gt;
Список команд:&amp;lt;br /&amp;gt;&lt;br /&gt;
*off - Установить паузу на всех плагинах которые не в списке.&lt;br /&gt;
*on - Снять паузу со всех плагинов.&lt;br /&gt;
*stop &amp;lt;файл&amp;gt; - Остановить плагин.&lt;br /&gt;
*pause &amp;lt;файл&amp;gt; - Установть в паузу плагин.&lt;br /&gt;
*enable &amp;lt;файл&amp;gt; - Включить плагин.&lt;br /&gt;
*save - Сохранить список остановленных плагинов.&lt;br /&gt;
*clear - Очистить список остановленных плагинов.&lt;br /&gt;
*list [id] - Список плагинов.&lt;br /&gt;
*add &amp;lt;заголовок&amp;gt; - Пометить плагин как не устанавливаемый в паузу.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;t2th&amp;quot; | Команда&lt;br /&gt;
| class=&amp;quot;t2td&amp;quot; | amx_statscfg&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;t2th&amp;quot; | Формат: &lt;br /&gt;
| class=&amp;quot;t2td&amp;quot; | &amp;lt;команда&amp;gt; [параметры]&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;t2th&amp;quot; | Доступ:&lt;br /&gt;
| class=&amp;quot;t2td&amp;quot; | ADMIN_CFG&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;t2th&amp;quot; | Описание:&lt;br /&gt;
| class=&amp;quot;t2td&amp;quot; | Изменение настроек статистики.&amp;lt;br /&amp;gt;&lt;br /&gt;
Список команд:&amp;lt;br /&amp;gt;&lt;br /&gt;
*on &amp;lt;переменная&amp;gt; - Включить выбранную опцию.&lt;br /&gt;
*off &amp;lt;переменная&amp;gt; - Выключить выбранную опцию.&lt;br /&gt;
*save - Сохранить конфигурацию статистики.&lt;br /&gt;
*load - Загрузить конфигурацию статистики.&lt;br /&gt;
*list [id] - Список статусов статистики.&lt;br /&gt;
*add &amp;lt;имя&amp;gt; &amp;lt;переменная&amp;gt; - Добавить переменную статистики в список.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Команды RCON=&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;t2th&amp;quot; | Команда:&lt;br /&gt;
| class=&amp;quot;t2td&amp;quot; | amxx&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;t2th&amp;quot; | Формат: &lt;br /&gt;
| class=&amp;quot;t2td&amp;quot; | &amp;lt;команда&amp;gt; [параметры]&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;t2th&amp;quot; | Доступ:&lt;br /&gt;
| class=&amp;quot;t2td&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;t2th&amp;quot; | Описание:&lt;br /&gt;
| class=&amp;quot;t2td&amp;quot; | Список доступных команд:&amp;lt;br /&amp;gt;&lt;br /&gt;
*amxx version - Показать версию AMX Mod X;&lt;br /&gt;
*amxx modules - Показать список модулей;&lt;br /&gt;
*amxx plugins - Показать список плагинов;&lt;br /&gt;
*amxx gpl - Показать GNU General Public Лицензию;&lt;br /&gt;
*amxx cvars - Показать AMX Mod X зарегистрированные CVARs;&lt;br /&gt;
*amxx cmds - Показать AMX Mod X зарегистрированные команды;&lt;br /&gt;
*amxx pause &amp;lt;plugin&amp;gt; - Приостановить плагин;&lt;br /&gt;
*amxx unpause &amp;lt;plugin&amp;gt; - Возобновить работу приостановленного плагина.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Scripting_(AMX_Mod_X)&amp;diff=3590</id>
		<title>Ru Scripting (AMX Mod X)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Scripting_(AMX_Mod_X)&amp;diff=3590"/>
		<updated>2006-12-11T19:10:06Z</updated>

		<summary type="html">&lt;p&gt;Slogic: more literary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]] &lt;br /&gt;
[[AMX Mod X]] позволяет расширить функциональность игры с помощью плагинов. Перейдите в категорию [http://wiki.amxmodx.org/index.php/Category:Ru:Scripting_%28AMX_Mod_X%29 Ru:Scripting (AMX Mod X)], чтобы просмотреть список некторых статей, которые помогут вам разработать свои (или доработать чужие) плагины, используя язык [[Pawn]] (известный ранее как [[Small]]).&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Button_constants_(AMX_Mod_X)&amp;diff=3589</id>
		<title>Ru Button constants (AMX Mod X)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Button_constants_(AMX_Mod_X)&amp;diff=3589"/>
		<updated>2006-12-11T19:06:15Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Замечания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Ru:Scripting (AMX Mod X)]]&lt;br /&gt;
=Кнопочные константы=&lt;br /&gt;
&lt;br /&gt;
Просмотреть оригинал статьи (англ.): [[Button constants (AMX Mod X)]]&lt;br /&gt;
&lt;br /&gt;
=Использование=&lt;br /&gt;
&lt;br /&gt;
Кнопочные константы обычно используются для того, чтобы &amp;quot;поймать&amp;quot; момент, когда игрок пытается совершить какое-либо действие, нажимая на кнопки, &amp;quot;привязанные&amp;quot; к таким командам, как +attack, +use и так далее. Метод используется потому, что HL &amp;quot;движок&amp;quot;  не может &amp;quot;поймать&amp;quot; +/-команды стандартным регистрированием, если их реализация выполнена в самом движке.&lt;br /&gt;
&lt;br /&gt;
Например, это будет работать:&amp;lt;pawn&amp;gt;register_concmd(&amp;quot;+explode&amp;quot;,&amp;quot;explode&amp;quot;);&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А это - нет:&amp;lt;pawn&amp;gt;register_concmd(&amp;quot;+attack&amp;quot;,&amp;quot;hook_attack&amp;quot;);&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Константы=&lt;br /&gt;
&lt;br /&gt;
Полный список всех констант вы можете найти [http://amxmodx.org/funcwiki.php?go=module&amp;amp;id=3#const_buttons здесь].&lt;br /&gt;
&lt;br /&gt;
=Реализация=&lt;br /&gt;
&lt;br /&gt;
Вот, например, один из вариантов, как оперделить, нажимает ли игрок кнопку атаки или нет:&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
#include &amp;lt;engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	register_plugin(&amp;quot;Attack Test&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Hawk552&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public client_PreThink(id)&lt;br /&gt;
{&lt;br /&gt;
	if(entity_get_int(id, EV_INT_BUTTON) &amp;amp; IN_ATTACK)&lt;br /&gt;
	{&lt;br /&gt;
		// do something&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что используется битовый оператор &amp;amp;, в отличии от логического оператора &amp;amp;&amp;amp;. Оператор &amp;amp; проверяет, содержится ли бит после оператора в бите до него, т.е. в данном случае проверяется, есть ли среди нажатых кнопок игрока кнопка IN_ATTACK.&lt;br /&gt;
&lt;br /&gt;
Чтобы заставить игрока эмулировать нажатие кнопки, можно поступить следующим образом:&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
#include &amp;lt;engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	register_plugin(&amp;quot;Attack Test&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Hawk552&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public client_PreThink(id)&lt;br /&gt;
{&lt;br /&gt;
	entity_set_int(id,EV_INT_button,entity_get_int(id,EV_INT_button) | IN_ATTACK);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этот пример будет выставлять флаг кнопки &amp;quot;атака&amp;quot; в положение &amp;quot;ВКЛ&amp;quot; каждый раз, когда рендерится entity игрока. Т.е. мы получаем все кнопки, нажатые в данный момент, и как бы прибавляем кнопку атаки.&lt;br /&gt;
&lt;br /&gt;
Чтобы &amp;quot;поймать&amp;quot; кнопки игрока, а потом &amp;quot;вычесть&amp;quot; какую либо кнопку, можно использовать следующий метод:&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
#include &amp;lt;engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	register_plugin(&amp;quot;Attack Test&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Hawk552&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public client_PreThink(id)&lt;br /&gt;
{&lt;br /&gt;
	entity_set_int(id,EV_INT_button,entity_get_int(id,EV_INT_button) &amp;amp; ~IN_ATTACK);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например, клиент прыгает (IN_JUMP) и атакует (IN_ATTACK) одновременно, функция entity_get_int(id,EV_INT_button) будет возвращать бит сумму IN_ATTACK и IN_JUMP. Используя конструкцию &amp;amp; ~БИТ мы как бы удаляем конкретное значение бита, в данном случае IN_ATTACK. Таким образом, в итоге получим только IN_JUMP.&lt;br /&gt;
&lt;br /&gt;
=Замечания=&lt;br /&gt;
&lt;br /&gt;
Важно понимать, что нажатие какой-либо кнопки не всегда означает, что в это время происходит конкретное действие. Например, если выстрелить из пистолета и не отпускать кнопку атаки - пуля вылетит, атака закончится и не возобновится, т.к. пистолет не является автоматическим оружием, но, т.к. кнопка все еще будет нажата, то, используя вышеприведенный метод, мы получим активное состояние кнопки IN_ATTACK, хотя атаки как таковой в данный момент не осуществляется.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Более наглядный пример с прыжком. Представьте, что вы прыгнули и, не отпуская кнопки прыжка, опустились на землю. Второго прыжка не произойдет, т.к. для этого нужно отпустить кнопку и нажать ее снова. Таким образом, нажатая кнопка прыжка не говорит о том, что в данный момент вы находитесь в состоянии прыжка. Как уже было отмечено, это относится и к другим кнопкам. Поэтому, в подавляющем большинстве случаев вы не должны делать проверку на наличие нажатой кнопки, если хотите определить, совершает ли игрок соответствующее действие или нет, для этого существуют другие методы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
По большому счету метод, описанный в данной статье, может быть эффективен только для блокировки или эмуляции атаки, хотя для этого есть еще более эффективные методы. Описанный метод не может быть применим к блокировке подавляющего большинства кнопок: для этого существуют другие методы ''(TODO: указать здесь ссылку на эти методы)''.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Button_constants_(AMX_Mod_X)&amp;diff=3588</id>
		<title>Ru Button constants (AMX Mod X)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Button_constants_(AMX_Mod_X)&amp;diff=3588"/>
		<updated>2006-12-11T19:04:51Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Замечание */ fxied sense, punctuaction, ideas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Ru:Scripting (AMX Mod X)]]&lt;br /&gt;
=Кнопочные константы=&lt;br /&gt;
&lt;br /&gt;
Просмотреть оригинал статьи (англ.): [[Button constants (AMX Mod X)]]&lt;br /&gt;
&lt;br /&gt;
=Использование=&lt;br /&gt;
&lt;br /&gt;
Кнопочные константы обычно используются для того, чтобы &amp;quot;поймать&amp;quot; момент, когда игрок пытается совершить какое-либо действие, нажимая на кнопки, &amp;quot;привязанные&amp;quot; к таким командам, как +attack, +use и так далее. Метод используется потому, что HL &amp;quot;движок&amp;quot;  не может &amp;quot;поймать&amp;quot; +/-команды стандартным регистрированием, если их реализация выполнена в самом движке.&lt;br /&gt;
&lt;br /&gt;
Например, это будет работать:&amp;lt;pawn&amp;gt;register_concmd(&amp;quot;+explode&amp;quot;,&amp;quot;explode&amp;quot;);&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А это - нет:&amp;lt;pawn&amp;gt;register_concmd(&amp;quot;+attack&amp;quot;,&amp;quot;hook_attack&amp;quot;);&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Константы=&lt;br /&gt;
&lt;br /&gt;
Полный список всех констант вы можете найти [http://amxmodx.org/funcwiki.php?go=module&amp;amp;id=3#const_buttons здесь].&lt;br /&gt;
&lt;br /&gt;
=Реализация=&lt;br /&gt;
&lt;br /&gt;
Вот, например, один из вариантов, как оперделить, нажимает ли игрок кнопку атаки или нет:&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
#include &amp;lt;engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	register_plugin(&amp;quot;Attack Test&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Hawk552&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public client_PreThink(id)&lt;br /&gt;
{&lt;br /&gt;
	if(entity_get_int(id, EV_INT_BUTTON) &amp;amp; IN_ATTACK)&lt;br /&gt;
	{&lt;br /&gt;
		// do something&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что используется битовый оператор &amp;amp;, в отличии от логического оператора &amp;amp;&amp;amp;. Оператор &amp;amp; проверяет, содержится ли бит после оператора в бите до него, т.е. в данном случае проверяется, есть ли среди нажатых кнопок игрока кнопка IN_ATTACK.&lt;br /&gt;
&lt;br /&gt;
Чтобы заставить игрока эмулировать нажатие кнопки, можно поступить следующим образом:&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
#include &amp;lt;engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	register_plugin(&amp;quot;Attack Test&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Hawk552&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public client_PreThink(id)&lt;br /&gt;
{&lt;br /&gt;
	entity_set_int(id,EV_INT_button,entity_get_int(id,EV_INT_button) | IN_ATTACK);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этот пример будет выставлять флаг кнопки &amp;quot;атака&amp;quot; в положение &amp;quot;ВКЛ&amp;quot; каждый раз, когда рендерится entity игрока. Т.е. мы получаем все кнопки, нажатые в данный момент, и как бы прибавляем кнопку атаки.&lt;br /&gt;
&lt;br /&gt;
Чтобы &amp;quot;поймать&amp;quot; кнопки игрока, а потом &amp;quot;вычесть&amp;quot; какую либо кнопку, можно использовать следующий метод:&amp;lt;pawn&amp;gt;#include &amp;lt;amxmodx&amp;gt;&lt;br /&gt;
#include &amp;lt;engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public plugin_init()&lt;br /&gt;
{&lt;br /&gt;
	register_plugin(&amp;quot;Attack Test&amp;quot;,&amp;quot;1.0&amp;quot;,&amp;quot;Hawk552&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public client_PreThink(id)&lt;br /&gt;
{&lt;br /&gt;
	entity_set_int(id,EV_INT_button,entity_get_int(id,EV_INT_button) &amp;amp; ~IN_ATTACK);&lt;br /&gt;
}&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например, клиент прыгает (IN_JUMP) и атакует (IN_ATTACK) одновременно, функция entity_get_int(id,EV_INT_button) будет возвращать бит сумму IN_ATTACK и IN_JUMP. Используя конструкцию &amp;amp; ~БИТ мы как бы удаляем конкретное значение бита, в данном случае IN_ATTACK. Таким образом, в итоге получим только IN_JUMP.&lt;br /&gt;
&lt;br /&gt;
=Замечания=&lt;br /&gt;
&lt;br /&gt;
Важно понимать, что нажатие какой-либо кнопки не всегда означает, что в это время происходит конкретное действие. Например, если выстрелить из пистолета и не отпускать кнопку атаки - пуля вылетит, атака закончится и не возобновится, т.к. пистолет не является автоматическим оружим, но, т.к. кнопка все еще будет нажата, то, используя вышеприведенный метод, мы получим активное состояние кнопки IN_ATTACK, хотя атаки как таковой в данный момент не осуществляется.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Более наглядный пример с прыжком. Представьте, что вы прыгнули и, не отпуская кнопки прыжка, опустились на землю. Второго прыжка не произойдет, т.к. для этого нужно отпустить кнопку и нажать ее снова. Таким образом, нажатая кнопка прыжка не говорит о том, что в данный момент вы находитесь в состоянии прыжка. Как уже было отмечено, это относится и к другим кнопкам. Поэтому, в подавляющем большинстве случаев вы не должны делать проверку на наличие нажатой кнопки, если хотите определить, совершает ли игрок соответствующее действие или нет, для этого существуют другие методы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
По большому счету метод, описанный в данной статье, может быть эффективен только для блокировки или эмуляции атаки, хотя для этого есть еще более эффективные методы. Описанный метод не может быть применим к блокировке подавляющего большинства кнопок: для этого существуют другие методы ''(TODO: указать здесь ссылку на эти методы)''.&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Talk:Ru_Button_constants_(AMX_Mod_X)&amp;diff=3587</id>
		<title>Talk:Ru Button constants (AMX Mod X)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Talk:Ru_Button_constants_(AMX_Mod_X)&amp;diff=3587"/>
		<updated>2006-12-11T18:58:13Z</updated>

		<summary type="html">&lt;p&gt;Slogic: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Slogic|Slogic]]: Теперь понятно, почему я +use не мог поймать =)&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Main_Page&amp;diff=3586</id>
		<title>Ru Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Main_Page&amp;diff=3586"/>
		<updated>2006-12-11T18:21:18Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Изменения в скриптах AMX Mod X 1.70 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Добро пожаловать в AMWiki, объединенный и совместный проект документации проектов [[AMX Mod X]], [[Metamod:Source]], и [[SourceMod]].&lt;br /&gt;
&lt;br /&gt;
С чего вам начать? Проверьте [[AMWiki:Community Portal|Страницу проекта]], чтобы увидеть краткий обзор.  Прочитайте [[Help:Contents|Помощь]] для понимания основных принципов и правил wiki.  Или если вы что-то ищите, можете воспользоваться поиском с левой стороны!&lt;br /&gt;
&lt;br /&gt;
=Основные статьи=&lt;br /&gt;
&lt;br /&gt;
==Оптимизация Плагинов==&lt;br /&gt;
[[Optimizing Plugins|Данная статья]] описывает много важных моментов, трюков и советов, а также рассказывает о том, как сделать ваши плагины более быстрыми. Пользователи, следующие этим инструкциям, получат существенный прирост производительности в своих плагинах. Для продолжения чтения статьи нажмите [[Optimizing Plugins|здесь]].&lt;br /&gt;
&lt;br /&gt;
==Изменения в скриптах AMX Mod X 1.70==&lt;br /&gt;
В [[AMX Mod X]] 1.70 были сделаны важные изменения. Авторам серьезных плагинов рекомендуется как можно быстрее ознакомиться с изменениями и новыми возможностями: [[AMX Mod X 1.70 Scripting Changes]].&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border:0px; margin-right:10%;&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
=Проекты=&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| '''AMX Mod X'''&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
|[[Image:Amxxsmall.gif|left]] [[AMX Mod X]], мощный и расширяемый скриптами движок для [[Half-Life 1]].&lt;br /&gt;
* [[:Category:Documentation (AMX Mod X)|Документация]]&lt;br /&gt;
* [[:Category:Scripting (AMX Mod X)|Скрипты]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| '''Metamod:Source'''&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
|[[Image:Mms.jpg|left]][[Metamod:Source]], мощный plugin API для [[Half-Life 2]], функции перехвата интерфейсов и универсальный plugin API.&lt;br /&gt;
* [[:Category:Documentation (SourceMM)|Документация]]&lt;br /&gt;
* [[Introduction_to_SourceMM_Coding|Разработка]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
=Новости=&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| AMX Mod X 1.70&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-03-04'': Новая версия [[AMX Mod X]] выпущена в свет. Список изменений смотрите на [http://www.amxmodx.org/ домашней странице].  Разработчикам стоит взглянуть на новые темы, [[Optimizing Plugins|статью]] по оптимизации плагинов и [[AMX Mod X 1.70 Scripting Changes|изменения]] в AMX Mod X 1.70.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Metamod:Source 1.2.1&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-02-15'': Выпущена новая версия [[Metamod:Source|SourceMM]]. Список изменений смотрите на [http://www.sourcemm.net/ домашней странице].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Wiki Запущен!&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-01-17'': Запущен AMWiki проект! Пожалуйста, пишите любые предложения в разделе обсуждений [[Talk:Main_Page|Main Page]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Main_Page&amp;diff=3585</id>
		<title>Ru Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Main_Page&amp;diff=3585"/>
		<updated>2006-12-11T18:20:28Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Добро пожаловать в AMWiki, объединенный и совместный проект документации проектов [[AMX Mod X]], [[Metamod:Source]], и [[SourceMod]].&lt;br /&gt;
&lt;br /&gt;
С чего вам начать? Проверьте [[AMWiki:Community Portal|Страницу проекта]], чтобы увидеть краткий обзор.  Прочитайте [[Help:Contents|Помощь]] для понимания основных принципов и правил wiki.  Или если вы что-то ищите, можете воспользоваться поиском с левой стороны!&lt;br /&gt;
&lt;br /&gt;
=Основные статьи=&lt;br /&gt;
&lt;br /&gt;
==Оптимизация Плагинов==&lt;br /&gt;
[[Optimizing Plugins|Данная статья]] описывает много важных моментов, трюков и советов, а также рассказывает о том, как сделать ваши плагины более быстрыми. Пользователи, следующие этим инструкциям, получат существенный прирост производительности в своих плагинах. Для продолжения чтения статьи нажмите [[Optimizing Plugins|здесь]].&lt;br /&gt;
&lt;br /&gt;
==Изменения в скриптах AMX Mod X 1.70==&lt;br /&gt;
В [[AMX Mod X]] 1.70 были сделаны важные изменения в скриптах. Авторам серьезных плагинов рекомендуется как можно быстрее ознакомиться с изменениями и новыми возможностями: [[AMX Mod X 1.70 Scripting Changes]].&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border:0px; margin-right:10%;&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
=Проекты=&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| '''AMX Mod X'''&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
|[[Image:Amxxsmall.gif|left]] [[AMX Mod X]], мощный и расширяемый скриптами движок для [[Half-Life 1]].&lt;br /&gt;
* [[:Category:Documentation (AMX Mod X)|Документация]]&lt;br /&gt;
* [[:Category:Scripting (AMX Mod X)|Скрипты]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| '''Metamod:Source'''&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
|[[Image:Mms.jpg|left]][[Metamod:Source]], мощный plugin API для [[Half-Life 2]], функции перехвата интерфейсов и универсальный plugin API.&lt;br /&gt;
* [[:Category:Documentation (SourceMM)|Документация]]&lt;br /&gt;
* [[Introduction_to_SourceMM_Coding|Разработка]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
=Новости=&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| AMX Mod X 1.70&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-03-04'': Новая версия [[AMX Mod X]] выпущена в свет. Список изменений смотрите на [http://www.amxmodx.org/ домашней странице].  Разработчикам стоит взглянуть на новые темы, [[Optimizing Plugins|статью]] по оптимизации плагинов и [[AMX Mod X 1.70 Scripting Changes|изменения]] в AMX Mod X 1.70.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Metamod:Source 1.2.1&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-02-15'': Выпущена новая версия [[Metamod:Source|SourceMM]]. Список изменений смотрите на [http://www.sourcemm.net/ домашней странице].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Wiki Запущен!&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-01-17'': Запущен AMWiki проект! Пожалуйста, пишите любые предложения в разделе обсуждений [[Talk:Main_Page|Main Page]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Main_Page&amp;diff=3584</id>
		<title>Ru Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Main_Page&amp;diff=3584"/>
		<updated>2006-12-11T18:20:13Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Featured Articles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Добро пожаловать в AMWiki, объединенный и совместный проект документации проектов [[AMX Mod X]], [[Metamod:Source]], и [[SourceMod]].&lt;br /&gt;
&lt;br /&gt;
С чего вам начать? Проверьте [[AMWiki:Community Portal|Страницу проекта]], чтобы увидеть краткий обзор.  Прочитайте [[Help:Contents|Помощь]] для понимания основных принципов и правил wiki.  Или если вы что-то ищите, можете воспользоваться поиском с левой стороны!&lt;br /&gt;
&lt;br /&gt;
=Основные статьи=&lt;br /&gt;
&lt;br /&gt;
==Оптимизация Плагинов==&lt;br /&gt;
[[Optimizing Plugins|Данная статья]] описывает много важных моментов, трюков и советов, а также рассказывает о том, как сделать ваши плагины более быстрыми. Пользователи, следующие этим инструкциям, получат существенный прирост производительности в своих плагинах. Для продолжения чтения статьи нажмите [[Optimizing Plugins|здесь]].&lt;br /&gt;
&lt;br /&gt;
==Изменения в скриптах AMX Mod X 1.70==&lt;br /&gt;
В [[AMX Mod X]] 1.70 были сделаны важные изменения в скриптах. Авторам серьезных плагинов рекомендуется как можно быстрее ознакомиться с изменениями и новыми возможностями: [[AMX Mod X 1.70 Scripting Changes]].&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border:0px; margin-right:10%;&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
=Projects=&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| '''AMX Mod X'''&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
|[[Image:Amxxsmall.gif|left]] [[AMX Mod X]], мощный и расширяемый скриптами движок для [[Half-Life 1]].&lt;br /&gt;
* [[:Category:Documentation (AMX Mod X)|Документация]]&lt;br /&gt;
* [[:Category:Scripting (AMX Mod X)|Скрипты]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| '''Metamod:Source'''&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
|[[Image:Mms.jpg|left]][[Metamod:Source]], мощный plugin API для [[Half-Life 2]], функции перехвата интерфейсов и универсальный plugin API.&lt;br /&gt;
* [[:Category:Documentation (SourceMM)|Документация]]&lt;br /&gt;
* [[Introduction_to_SourceMM_Coding|Разработка]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
=Новости=&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| AMX Mod X 1.70&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-03-04'': Новая версия [[AMX Mod X]] выпущена в свет. Список изменений смотрите на [http://www.amxmodx.org/ домашней странице].  Разработчикам стоит взглянуть на новые темы, [[Optimizing Plugins|статью]] по оптимизации плагинов и [[AMX Mod X 1.70 Scripting Changes|изменения]] в AMX Mod X 1.70.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Metamod:Source 1.2.1&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-02-15'': Выпущена новая версия [[Metamod:Source|SourceMM]]. Список изменений смотрите на [http://www.sourcemm.net/ домашней странице].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Wiki Запущен!&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-01-17'': Запущен AMWiki проект! Пожалуйста, пишите любые предложения в разделе обсуждений [[Talk:Main_Page|Main Page]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Main_Page&amp;diff=3583</id>
		<title>Ru Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Main_Page&amp;diff=3583"/>
		<updated>2006-12-11T18:01:53Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Новости */ fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Добро пожаловать в AMWiki, объединенный и совместный проект документации проектов [[AMX Mod X]], [[Metamod:Source]], и [[SourceMod]].&lt;br /&gt;
&lt;br /&gt;
С чего вам начать? Проверьте [[AMWiki:Community Portal|Страницу проекта]], чтобы увидеть краткий обзор.  Прочитайте [[Help:Contents|Помощь]] для понимания основных принципов и правил wiki.  Или если вы что-то ищите, можете воспользоваться поиском с левой стороны!&lt;br /&gt;
&lt;br /&gt;
=Featured Articles=&lt;br /&gt;
&lt;br /&gt;
==Оптимизация Плагинов==&lt;br /&gt;
[[Optimizing Plugins|Данная статья]] описывает много важных моментов, трюков и советов, а также рассказывает о том, как сделать ваши плагины более быстрыми. Пользователи, следующие этим инструкциям, получат существенный прирост производительности в своих плагинах. Для продолжения чтения статьи нажмите [[Optimizing Plugins|здесь]].&lt;br /&gt;
&lt;br /&gt;
==Изменения в скриптах AMX Mod X 1.70==&lt;br /&gt;
В [[AMX Mod X]] 1.70 были сделаны важные изменения в скриптах. Авторам серьезных плагинов рекомендуется как можно быстрее ознакомиться с изменениями и новыми возможностями: [[AMX Mod X 1.70 Scripting Changes]].&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border:0px; margin-right:10%;&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
=Projects=&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| '''AMX Mod X'''&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
|[[Image:Amxxsmall.gif|left]] [[AMX Mod X]], мощный и расширяемый скриптами движок для [[Half-Life 1]].&lt;br /&gt;
* [[:Category:Documentation (AMX Mod X)|Документация]]&lt;br /&gt;
* [[:Category:Scripting (AMX Mod X)|Скрипты]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| '''Metamod:Source'''&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
|[[Image:Mms.jpg|left]][[Metamod:Source]], мощный plugin API для [[Half-Life 2]], функции перехвата интерфейсов и универсальный plugin API.&lt;br /&gt;
* [[:Category:Documentation (SourceMM)|Документация]]&lt;br /&gt;
* [[Introduction_to_SourceMM_Coding|Разработка]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
=Новости=&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| AMX Mod X 1.70&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-03-04'': Новая версия [[AMX Mod X]] выпущена в свет. Список изменений смотрите на [http://www.amxmodx.org/ домашней странице].  Разработчикам стоит взглянуть на новые темы, [[Optimizing Plugins|статью]] по оптимизации плагинов и [[AMX Mod X 1.70 Scripting Changes|изменения]] в AMX Mod X 1.70.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Metamod:Source 1.2.1&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-02-15'': Выпущена новая версия [[Metamod:Source|SourceMM]]. Список изменений смотрите на [http://www.sourcemm.net/ домашней странице].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Wiki Запущен!&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-01-17'': Запущен AMWiki проект! Пожалуйста, пишите любые предложения в разделе обсуждений [[Talk:Main_Page|Main Page]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Main_Page&amp;diff=3582</id>
		<title>Ru Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Main_Page&amp;diff=3582"/>
		<updated>2006-12-11T17:56:23Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Изменения в скриптах AMX Mod X 1.70 */ fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Добро пожаловать в AMWiki, объединенный и совместный проект документации проектов [[AMX Mod X]], [[Metamod:Source]], и [[SourceMod]].&lt;br /&gt;
&lt;br /&gt;
С чего вам начать? Проверьте [[AMWiki:Community Portal|Страницу проекта]], чтобы увидеть краткий обзор.  Прочитайте [[Help:Contents|Помощь]] для понимания основных принципов и правил wiki.  Или если вы что-то ищите, можете воспользоваться поиском с левой стороны!&lt;br /&gt;
&lt;br /&gt;
=Featured Articles=&lt;br /&gt;
&lt;br /&gt;
==Оптимизация Плагинов==&lt;br /&gt;
[[Optimizing Plugins|Данная статья]] описывает много важных моментов, трюков и советов, а также рассказывает о том, как сделать ваши плагины более быстрыми. Пользователи, следующие этим инструкциям, получат существенный прирост производительности в своих плагинах. Для продолжения чтения статьи нажмите [[Optimizing Plugins|здесь]].&lt;br /&gt;
&lt;br /&gt;
==Изменения в скриптах AMX Mod X 1.70==&lt;br /&gt;
В [[AMX Mod X]] 1.70 были сделаны важные изменения в скриптах. Авторам серьезных плагинов рекомендуется как можно быстрее ознакомиться с изменениями и новыми возможностями: [[AMX Mod X 1.70 Scripting Changes]].&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border:0px; margin-right:10%;&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
=Projects=&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| '''AMX Mod X'''&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
|[[Image:Amxxsmall.gif|left]] [[AMX Mod X]], мощный и расширяемый скриптами движок для [[Half-Life 1]].&lt;br /&gt;
* [[:Category:Documentation (AMX Mod X)|Документация]]&lt;br /&gt;
* [[:Category:Scripting (AMX Mod X)|Скрипты]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| '''Metamod:Source'''&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
|[[Image:Mms.jpg|left]][[Metamod:Source]], мощный plugin API для [[Half-Life 2]], функции перехвата интерфейсов и универсальный plugin API.&lt;br /&gt;
* [[:Category:Documentation (SourceMM)|Документация]]&lt;br /&gt;
* [[Introduction_to_SourceMM_Coding|Разработка]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
=Новости=&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| AMX Mod X 1.70&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-03-04'': Новая версия [[AMX Mod X]] выпущена в свет. Список изменений смотрите на [http://www.amxmodx.org/ домашней странице].  Разработчикам стоит взглянуть на новые темы, [[Optimizing Plugins]] и [[AMX Mod X 1.70 Scripting Changes]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Metamod:Source 1.2.1&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-02-15'': Новая версия [[Metamod:Source|SourceMM]] выпущена. Список изменений смотрите на [http://www.sourcemm.net/ домашней странице].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Wiki Запущен!&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-01-17'': Wiki запущен! Пожалуйста, пишите любые ваши предложения в разделе обсуждений [[Talk:Main_Page|Main Page]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Ru_Main_Page&amp;diff=3581</id>
		<title>Ru Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Ru_Main_Page&amp;diff=3581"/>
		<updated>2006-12-11T17:54:41Z</updated>

		<summary type="html">&lt;p&gt;Slogic: /* Оптимизация Плагинов */ fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Russian]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Добро пожаловать в AMWiki, объединенный и совместный проект документации проектов [[AMX Mod X]], [[Metamod:Source]], и [[SourceMod]].&lt;br /&gt;
&lt;br /&gt;
С чего вам начать? Проверьте [[AMWiki:Community Portal|Страницу проекта]], чтобы увидеть краткий обзор.  Прочитайте [[Help:Contents|Помощь]] для понимания основных принципов и правил wiki.  Или если вы что-то ищите, можете воспользоваться поиском с левой стороны!&lt;br /&gt;
&lt;br /&gt;
=Featured Articles=&lt;br /&gt;
&lt;br /&gt;
==Оптимизация Плагинов==&lt;br /&gt;
[[Optimizing Plugins|Данная статья]] описывает много важных моментов, трюков и советов, а также рассказывает о том, как сделать ваши плагины более быстрыми. Пользователи, следующие этим инструкциям, получат существенный прирост производительности в своих плагинах. Для продолжения чтения статьи нажмите [[Optimizing Plugins|здесь]].&lt;br /&gt;
&lt;br /&gt;
==Изменения в скриптах AMX Mod X 1.70==&lt;br /&gt;
В [[AMX Mod X]] 1.70 были сделаны важные изменения в скриптах. Авторам серьёзных плагинов, рекомендуется как можно скорее ознакомиться с новыми возможностями и изменениями: [[AMX Mod X 1.70 Scripting Changes]].&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border:0px; margin-right:10%;&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
=Projects=&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| '''AMX Mod X'''&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
|[[Image:Amxxsmall.gif|left]] [[AMX Mod X]], мощный и расширяемый скриптами движок для [[Half-Life 1]].&lt;br /&gt;
* [[:Category:Documentation (AMX Mod X)|Документация]]&lt;br /&gt;
* [[:Category:Scripting (AMX Mod X)|Скрипты]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| '''Metamod:Source'''&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
|[[Image:Mms.jpg|left]][[Metamod:Source]], мощный plugin API для [[Half-Life 2]], функции перехвата интерфейсов и универсальный plugin API.&lt;br /&gt;
* [[:Category:Documentation (SourceMM)|Документация]]&lt;br /&gt;
* [[Introduction_to_SourceMM_Coding|Разработка]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
=Новости=&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| AMX Mod X 1.70&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-03-04'': Новая версия [[AMX Mod X]] выпущена в свет. Список изменений смотрите на [http://www.amxmodx.org/ домашней странице].  Разработчикам стоит взглянуть на новые темы, [[Optimizing Plugins]] и [[AMX Mod X 1.70 Scripting Changes]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Metamod:Source 1.2.1&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-02-15'': Новая версия [[Metamod:Source|SourceMM]] выпущена. Список изменений смотрите на [http://www.sourcemm.net/ домашней странице].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
|- class=&amp;quot;t2th&amp;quot;&lt;br /&gt;
| Wiki Запущен!&lt;br /&gt;
|- class=&amp;quot;t2td&amp;quot;&lt;br /&gt;
| ''2006-01-17'': Wiki запущен! Пожалуйста, пишите любые ваши предложения в разделе обсуждений [[Talk:Main_Page|Main Page]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Help_talk:Editing&amp;diff=3521</id>
		<title>Help talk:Editing</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Help_talk:Editing&amp;diff=3521"/>
		<updated>2006-12-08T19:51:45Z</updated>

		<summary type="html">&lt;p&gt;Slogic: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Slogic|Slogic]] 13:51, 8 December 2006 (CST): smth wrong with template?&lt;/div&gt;</summary>
		<author><name>Slogic</name></author>
		
	</entry>
</feed>