<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Мир Файлов Counter Strike 1.6</title>
		<link>https://steep.at.ua/</link>
		<description>Форум</description>
		<lastBuildDate>Tue, 01 Mar 2022 10:14:05 GMT</lastBuildDate>
		<generator>uCoz Web-Service</generator>
		<atom:link href="https://steep.at.ua/forum/rss" rel="self" type="application/rss+xml" />
		
		<item>
			<title>Урок №1 - Настройка программы</title>
			<link>https://steep.at.ua/forum/19-31-1</link>
			<pubDate>Tue, 01 Mar 2022 10:14:05 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://steep.at.ua/forum/19&quot;&gt;Маппинг&lt;/a&gt;&lt;br /&gt;Описание темы: Урок №1 - Настраиваем программу для работы&lt;br /&gt;Автор темы: 6u3oH&lt;br /&gt;Автор последнего сообщения: MTY&lt;br /&gt;Количество ответов: 5</description>
			<content:encoded>﻿&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://steep.at.ua/steep/mapp.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/div&gt;﻿﻿﻿Автор статьи - &lt;span style=&quot;color:#ff0000&quot;&gt;BiZoN&lt;/span&gt;&lt;br /&gt;Приветствую вас, пользователи &lt;span style=&quot;color:#ff0000&quot;&gt;Steep.at.ua&lt;/span&gt;&lt;br /&gt;Приступим.&lt;br /&gt;Тема: &lt;span style=&quot;color:#ff0000&quot;&gt;Настройка программы&lt;/span&gt;.&lt;br /&gt;Ну что ж, давайте начнем!&lt;br /&gt;Чтобы создавать карты, вам нужны будут программы и дополнения. Для начала определимся с основным составляющим:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;Valve Hammer Editorт&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;ZHLT&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;FGD&lt;/span&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Valve Hammer Editor - сама программа, которая вам нужна для строения карт. Скачать её можно здесь&gt;&gt; &lt;a class=&quot;link&quot; href=&quot;http://steep.at.ua/load/drugoe/valve_hammer_editor_unofficial_3_5_2/12-1-0-159&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;Valve Hammer Editor&lt;/u&gt;&lt;/a&gt; &lt;&lt;&lt;br /&gt;Скачиваем, устанавливаем, запускаем. Далее вылезает окно. Нам нужно настроить конфигурации. То есть все то, что нужно нам будет в процессе работы в программе.&lt;br /&gt;&lt;br /&gt;﻿&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://steep.at.ua/steep/mapconf.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/div&gt;&lt;br /&gt;Далее нажимаем &quot;Да&quot;. После этого открываются настройки, в которых есть множество окон. Переходим к окну &quot;Game Configurations&quot;.&lt;br /&gt;Видим следующее:&lt;br /&gt;&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://steep.at.ua/steep/mapconf2.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/div&gt;﻿&lt;br /&gt;В поле &quot;Configurations&quot; нажимаем на &quot;Edit&quot;. Далее откроется еще одно небольшое окно. Жмем на &quot;Add&quot;, вводим любое произвольное название на английском. К примеру: &quot;CS&quot;, потом жмем на &quot;OK&quot;.&lt;br /&gt;Далее переходим к полю &quot;Game Date Files&quot;. Нажимаем на &quot;Add&quot;. Далее качаем *.fgd-файлы, которые нам нужны для работы программы. Они содержат информацию об энтити-файлах. &lt;a class=&quot;link&quot; href=&quot;http://steep.at.ua/fgd-files.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;Скачать *.fgd-файлы&lt;/u&gt;&lt;/a&gt;.&lt;br /&gt;Закиньте их к себе в программу. Или в любое другое место, но помните главное: пути, по которым будут находиться файлы, не должны содержать русских сиволов, иначе будут ошибки при компиляции! Пример:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;C:&amp;#92;Program Files&amp;#92;Valve Hammer Editor Unofficial 3.5.2&amp;#92;fgd&amp;#92;cs-single_player.fgd&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;C:&amp;#92;Program Files&amp;#92;Valve Hammer Editor Unofficial 3.5.2&amp;#92;fgd&amp;#92;halflife.fgd&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;C:&amp;#92;Program Files&amp;#92;Valve Hammer Editor Unofficial 3.5.2&amp;#92;fgd&amp;#92;halflife-cs.fgd&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;C:&amp;#92;Program Files&amp;#92;Valve Hammer Editor Unofficial 3.5.2&amp;#92;fgd&amp;#92;halflife-cs_expert.fgd&lt;/span&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Ниже находятся два поля: &quot;Texture Format&quot; и &quot;Map Type&quot;. Их мы не трогаем. В них вы ничего выбрать не сможете. Это стандартный формат текстур и тип карт. Других не предусмотрено в CS, поэтому ничего другого выбрать и не можем.&lt;br /&gt;Ниже находятся еще два поля: &quot;Default PointEntity CLass&quot; и &quot;Default SolidEntity Class&quot;.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;Default PointEntity CLass - здесь выбираем из списка &quot;info_player_start&quot;. Info_player_start - это будет энтити-объект, который будет выбираться по дефолту, когда мы будем создавать энтити-объект на карте.&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;Default SolidEntity Class - здесь выбираем из списка &quot;func_wall&quot;. Func_wall - это будет энтити-объект, который будет выбираться по дефолту, когда мы будем превращать обычный браш в энтити-объект на карте.&lt;/span&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;По сути, здесь не столь важно, какой именно мы выберем энтити-объект, так как мы в любой момент можем выбрать другой.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;Следующее поле: &quot;Game Executable Directory&quot; - здесь нам нужно указать директорию с вашей CS 1.6.&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;Следующее поле: &quot;Mod Directory&quot; - здесь нам нужно указать директорию с вашей CS 1.6 с последующей папкой cstrike.&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;Следующее поле: &quot;Game Directory&quot; - здесь нам нужно указать директорию с вашей CS 1.6 с последующей папкой valve.&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;Следующее поле: &quot;RMF Directory&quot; - здесь нам нужно указать папку, в которой вы хотите хранить ваши карты. Это, пожалуй, единственное из полей, в котором можно указывать русские пути.&lt;/span&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Пример указывания:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;&quot;Game Executable Directory&quot; - C:&amp;#92;Games&amp;#92;Counter-Strike 1.6&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;&quot;Mod Directory&quot; - C:&amp;#92;Games&amp;#92;Counter-Strike 1.6&amp;#92;cstrike&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;&quot;Game Directory&quot; - C:&amp;#92;Games&amp;#92;Counter-Strike 1.6&amp;#92;valve&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;&quot;RMF Directory&quot; - C:&amp;#92;Program Files&amp;#92;Valve Hammer Editor Unofficial 3.5.2&amp;#92;maps&lt;/span&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;﻿Ниже скриншот, как примерно должно все выглядеть.﻿&lt;br /&gt;&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://steep.at.ua/steep/mapconf3.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/div&gt;﻿&lt;br /&gt;﻿Далее переходим к вкладке &quot;Build Programs&quot;﻿ и к его составляющим, то бишь полям. Поле &quot;Game Executable&quot; - это запускной файл нашей игры. Далее нам нужно подключить компиляторы, которые будут компилировать нашу карту. Из формата *.rmf или *.map в *.bsp.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;Поле &quot;CSG Executable&quot; - это один из составляющих компилятора, а именно CSG, который просчитывает основную геометрию уровня и создает четыре hull-файла для их дальнейшей обработки следующим компилятором HLBSP.&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;Поле &quot;BSP Executable&quot; - это один из составляющих компилятора, а именно BSP, который создает основу уровня и работоспособный BSP-файл.&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;Поле &quot;VIS Executable&quot; - это один из составляющих компилятора, а именно VIS, который делает визуальную часть и оптимизирует уровень для более быстрой отрисовки в игре.&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;Поле &quot;RAD Executable&quot; - это один из составляющих компилятора, а именно RAD, который обрабатывает просчёт освещения уровня.&lt;/span&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Пример:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;CSG Executable - C:&amp;#92;Program Files&amp;#92;Valve Hammer Editor Unofficial 3.5.2&amp;#92;zhlt&amp;#92;hlcsg.exe&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;BSP Executable - C:&amp;#92;Program Files&amp;#92;Valve Hammer Editor Unofficial 3.5.2&amp;#92;zhlt&amp;#92;hlbsp.exe&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;VIS Executable - C:&amp;#92;Program Files&amp;#92;Valve Hammer Editor Unofficial 3.5.2&amp;#92;zhlt&amp;#92;hlvis.exe&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;RAD Executable - C:&amp;#92;Program Files&amp;#92;Valve Hammer Editor Unofficial 3.5.2&amp;#92;zhlt&amp;#92;hlrad.exe&lt;/span&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Найти эти четыре составляющих компилятора вы можете в самой программе. Скачав программу с нашего сайта, вы их найдете по таким же адресам, которые я указал в примере.&lt;br /&gt;Ну и последнее поле: &quot;Place compiled maps maps in the directory before running the game&quot;, в котором нужно указать вашу папку с игрой плюс папку хранения карт. То есть сюда будут класться скомпилированные карты после компиляции и перед запуском игры. Пример:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;Place compiled maps maps in the directory before running the game - C:&amp;#92;Games&amp;#92;Counter-Strike 1.6&amp;#92;cstrike&amp;#92;maps&lt;/span&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Ну и ниже скриншот с примерными настройками.&lt;br /&gt;﻿&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://steep.at.ua/steep/mapconf4.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/div&gt;&lt;br /&gt;Ну и последний шаг: вкладка &quot;Textures&quot;. Здесь, пожалуй, ничего сложного. Нужно лишь указать некоторые *.wad-файлы, с которыми мы будем работать, то бишь с текстурами. Ниже список текстур, которые лучше выбрать, так как в других содержится не особо нужное. Найти текстуры можно в папке cstrike или в папке valve.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;valve/decals.wad&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;valve/halflife.wad&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;valve/liquids.wad&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;cstrike/chateau.wad&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;cstrike/cs_bdog.wad&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;cstrike/cs_havana.wad&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;cstrike/cstrike.wad&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;cstrike/de_piranesi.wad&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-size:8pt;&quot;&gt;cstrike/torntextures.wad&lt;/span&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;hr /&gt;Теперь мы настроили нашу программу к работе. А теперь ждем следующих уроков &lt;img rel=&quot;usm&quot; src=&quot;https://steep.at.ua/smlxa/25.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;25&quot; /&gt;</content:encoded>
			<category>Маппинг</category>
			<dc:creator>6u3oH</dc:creator>
			<guid>https://steep.at.ua/forum/19-31-1</guid>
		</item>
		<item>
			<title>Помогите</title>
			<link>https://steep.at.ua/forum/3-49-1</link>
			<pubDate>Mon, 23 Oct 2017 19:56:45 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://steep.at.ua/forum/3&quot;&gt;Флудилка&lt;/a&gt;&lt;br /&gt;Автор темы: poofikpp&lt;br /&gt;Автор последнего сообщения: LuxeHD&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Скачал сборку  серф рпг с данного сайта но не понял как прописать себе уровень поможет кто?</content:encoded>
			<category>Флудилка</category>
			<dc:creator>poofikpp</dc:creator>
			<guid>https://steep.at.ua/forum/3-49-1</guid>
		</item>
		<item>
			<title>4. Типы функций</title>
			<link>https://steep.at.ua/forum/11-48-1</link>
			<pubDate>Thu, 17 Aug 2017 19:51:09 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://steep.at.ua/forum/11&quot;&gt;Скриптинг&lt;/a&gt;&lt;br /&gt;Описание темы: Типы функций (какие бывают виды функций)&lt;br /&gt;Автор темы: 6u3oH&lt;br /&gt;Автор последнего сообщения: 6u3oH&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Ну что ж, пришло время приступить к серьезным делам. Работа с функциями - неотъемлемая часть любого кодера. Именно сейчас я и расскажу вам об этом.&lt;br /&gt;Что такое функция? Это часть кода, заключенная в блок (&lt;span style=&quot;color:#ff0000&quot;&gt;{&lt;/span&gt; и &lt;span style=&quot;color:#ff0000&quot;&gt;}&lt;/span&gt;), которая, при обращении к ней, выполняет определенные действия. Какие действия она выполняет? Это решать вам, ведь вы пишите этот код. То есть по сути работа плагина заключена в том, что мы обращаемся к определенным функциям, которые выполняют определенные действия, в этом и заключена суть работы плагина.&lt;br /&gt;&lt;br /&gt;Итак, во-первых, функции делятся на несколько видов:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Public&lt;br /&gt;&lt;li&gt;Stock&lt;br /&gt;&lt;li&gt;Forward&lt;br /&gt;&lt;li&gt;Native&lt;br /&gt;&lt;li&gt;Regular&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div align=&quot;center&quot;&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;Функция &lt;span style=&quot;color:red&quot;&gt;Public&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Функция public или публичная функция - основная функция, использование которой в плагине обязательно (иначе можно будет получить ошибку при компиляции).&lt;br /&gt;Для примера мы зарегистрируем консольную команду, через которую вызовем нашу функцию:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;#include &lt;amxmodx&gt; // Подключаем инклюд&lt;br /&gt;&lt;br /&gt;public plugin_init(&amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;register_clcmd(&quot;test&quot;, &quot;Test_Function&quot;&amp;#41;; // Регистрируем консольную команду&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public Test_Function(id&amp;#41; // Вызов нашей функции&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;client_print(id, print_chat, &quot;Функция public работает!&quot;&amp;#41;; // Выводим сообщение в чат&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Теперь если вы установите данный плагин к себе на сервер и введёте в консоль команду test, то в чате увидите сообщение, которое мы через эту функцию вывели.&lt;br /&gt;Объяснять пока каким образом мы регистрируем команду и каким образом и что выводим я пока не буду, об этом поговорим в следующих уроках.&lt;br /&gt;Если вы были наблюдательны, то заметили, что в данном примере у нас две функции public, но одна из них хоть и используется в роли публичной функции, но является функцией типа forward, об этом ниже.&lt;br /&gt;&lt;div align=&quot;center&quot;&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;Функция &lt;span style=&quot;color:red&quot;&gt;Stock&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;﻿Функция stock является похожей на функцию public, но всё же используется для других целей. Данная функция включается в плагин только в том случае, если она используется. То есть если она ни разу в плагине не была использована, то при компиляции она будет попросту проигнорирована.&lt;br /&gt;Используется она в основном для объединения уже некоторых функций. Например, в ней осуществляют подсчёт админов на сервере, кол-во дверей, количество игроков, имеющих меньше 10 хп и так далее - для чего угодно, но обращаются к ней зачастую именно через публичную функцию.&lt;br /&gt;&lt;br /&gt;В пример возьмем всем известный плагин, который выводит кол-во админов онлайн. В нашем случае будет так: мы вводим в консоль команду say /admin и получаем в чат количество админов онлайн.&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;#include &lt;amxmodx&gt; // Подключаем инклюд&lt;br /&gt;&lt;br /&gt;public plugin_init(&amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;register_clcmd(&quot;say /admin&quot;, &quot;ShowAdmins&quot;&amp;#41;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public ShowAdmins(id&amp;#41; // Регистрируем консольную команду&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new iCount = get_admin_count(&amp;#41;; // Создаем переменную и присваиваем ей значение, обращаясь к stock-функции&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;client_print(id, print_chat, &quot;Админов в сети: %i&quot;, iCount&amp;#41;; // Выводим через указатель значение переменной&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;stock get_admin_count(&amp;#41; // Наша функция, к которой мы обратились&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new iCount; // Объявляем переменную, которая будет хранить кол-во админов онлайн&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(new id = 1; id &lt;= get_maxplayers(&amp;#41;; id++&amp;#41; // Проходим циклом по всем игрокам&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(is_user_connected(id&amp;#41;&amp;#41; // Исключаем все лишние объекты, кроме игрока&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(get_user_flags(id&amp;#41; &amp; ADMIN_BAN&amp;#41; // Проверяем, имеет ли игрок флаг &apos;d&apos; (users.ini&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iCount++; // Прибавляем к переменной значение +1, (++ называется итерацией, к числу прибавляется +1&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return iCount; // Возвращаем кол-во админов&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Теперь вы можете попробовать данный плагин в действии, если поставите его к себе на сервер. Наберите чат-команду: say /admin и в чат выведется количество админов, присутствующих на сервере.&lt;br /&gt;&lt;div align=&quot;center&quot;&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;Функция &lt;span style=&quot;color:red&quot;&gt;Forward&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Функция forward имеет все те же особенности, что и функция public, но имеет одно отличие: она может быть вызвана из другого плагина, в отличие от некоторых других функций. То есть данную функцию можно использовать как связь между плагинами.&lt;br /&gt;Например, функция plugin_init(), без которой практически не обходится ни один плагин. Она вызывается в момент старта/рестарта сервера. Именно в данной функции регистрируются консольные команды, разные игровые события и производятся некоторые действия, которые необходимо сделать всего лишь один раз. Данная функция является стандартной, но есть возможность создавать и свою forward-функцию - своё событие. Об этом всём мы поговорим в следующих уроках, которые будут уделены именно этим аспектам.&lt;br /&gt;&lt;br /&gt;В каком-то особом примере функция forward не нуждается, потому как в примерах для функций выше уже используется данный тип функций, покажу лишь небольшой пример.&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;#include &lt;amxmodx&gt; // Подключаем инклюд&lt;br /&gt;&lt;br /&gt;public plugin_init(&amp;#41; // Событие инициализации плагина&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;server_print(&quot;The plugin_init event was called successfully!&quot;&amp;#41;; // Выводим сообщение в консоль сервера&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Если вы поставите данный плагин себе на сервер, то при запуске сервера увидите это сообщение в консоли сервера, которое гласит, что событие plugin_init было успешно вызвано.&lt;br /&gt;&lt;div align=&quot;center&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Функция &lt;span style=&quot;color:red&quot;&gt;Native&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;﻿&lt;br /&gt;Функция native является одной из составляющих основу написания плагина. Без данной функции вы не сможете узнать сколько у игрока денег, не сможет узнать его ник, не сможете выдать ему оружия, не сможете вывести в чат сообщение. Именно эта функция выполняет все подобные действия. Она похожа на функцию forward, но используется для других целей, хоть и может быть создана самим кодером лично и может быть использована в разных плагинах (то есть есть возможность связывать ею плагины). В пример мы возьмем функцию выдачи оружия.&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;#include &lt;amxmodx&gt; // Подключаем инклюд (модуль&amp;#41;&lt;br /&gt;#include &lt;fun&gt; // Подключаем еще один модуль&lt;br /&gt;&lt;br /&gt;public plugin_init(&amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;register_clcmd(&quot;say /deagle&quot;, &quot;Give_Deagle&quot;&amp;#41;; // Регистрируем консольную команду&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public Give_Deagle(id&amp;#41; // Работае с нашеё функцию&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;give_item(id, &quot;weapon_deagle&quot;&amp;#41;; // Выдаем игроку дигл&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Используя этот плагин, вы можете набрать чат-команду say /deagle и получить дигл. Особо любопытные могли заметить, что в данном случае мы подключаем еще один инклюд. На вопрос &quot;Зачем?&quot; я отвечу: данный модуль предоставляет возможность использовать native-функцию give_item, которая в свою очередь позволяет выдать игроку пистолет deagle.&lt;br /&gt;&lt;div align=&quot;center&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Функция &lt;span style=&quot;color:red&quot;&gt;Regular&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Функция Regular ничем практически не отличается от функции public, единственное отличие состоит в том, что описывается она без суффиксальных элементов и не воспринимается некоторыми модулями, поэтому я советую воздержаться от её использования. Простой пример.&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;#include &lt;amxmodx&gt; // Подключаем инклюд&lt;br /&gt;&lt;br /&gt;public plugin_init(&amp;#41; //Событие инициализации плагина&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Init_Call(&amp;#41;; // Вызываем нашу функцию&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Init_Call(&amp;#41; // Наша функция&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;server_print(&quot;The &apos;Init_Call&apos; event was called successfully!&quot;&amp;#41;; // Выводим сообщение в консоль сервера&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Ничего особенного нет. Из события инициализации плагина мы вызываем эту функцию, в которой присутствует код для выведения информации в консоль сервера.&lt;br /&gt;&lt;br /&gt;На этом всё. Надеюсь, этот урок вы дочитали до конца, бОльшую часть информации поняли. А те, кто уже практически всё это знал, но получил для себя немного полезной информации или ответ на томящий вопрос, молодцы.</content:encoded>
			<category>Скриптинг</category>
			<dc:creator>6u3oH</dc:creator>
			<guid>https://steep.at.ua/forum/11-48-1</guid>
		</item>
		<item>
			<title>3. Типы данных</title>
			<link>https://steep.at.ua/forum/11-47-1</link>
			<pubDate>Wed, 12 Jul 2017 13:14:05 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://steep.at.ua/forum/11&quot;&gt;Скриптинг&lt;/a&gt;&lt;br /&gt;Описание темы: Типы данных (переменные)&lt;br /&gt;Автор темы: 6u3oH&lt;br /&gt;Автор последнего сообщения: 6u3oH&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>У многих, может быть, возникает вполне логический вопрос. А для чего нам нужны все эти переменные с этими типами данных? Ответ прост: для работы (с условиями, функциями или еще чем-то - не важно).&lt;br /&gt;&lt;br /&gt;Для начала самое главное: чтобы наша переменная была доступна для использования - её нужно объявить. Как это сделать? Ответ будет ниже.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Немного информации на будущее:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;При объявлении переменной ей автоматически присваивается значение 0.&lt;br /&gt;&lt;li&gt;Компилятор не воспринимает строку, в которой написана любая информация после двух слэшей (&quot;//&quot;), поэтому таким образом мы можем писать комментарии.&lt;br /&gt;&lt;li&gt;Название переменной может быть любым, но должно состоять из английских букв, цифр или &quot;нижнего тире: _&quot;.&lt;br /&gt;&lt;li&gt;Имена переменных не должны повторяться или пересекаться с названиями функций!&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;В языке Pawn существуют всего четыре вида данных:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;color:#ff0000&quot;&gt;Целочисленные&lt;/span&gt; - целые числа (integer).&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;color:#ff0000&quot;&gt;Дробные&lt;/span&gt; - числа с плавающей запятой (Float).&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;color:#ff0000&quot;&gt;Булевые&lt;/span&gt; - логические (bool),&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;color:#ff0000&quot;&gt;Строковые&lt;/span&gt; (string).&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Рассмотрим каждый тип данных по отдельности.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Целочисленные - целые числа (integer).&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;color:#ff0000&quot;&gt;Числа&lt;/span&gt; в языке программирования &quot;Pawn&quot; при объявлении &lt;span style=&quot;color:#ff0000&quot;&gt;автоматически становятся целыми&lt;/span&gt; (&lt;span style=&quot;color:#ff0000&quot;&gt;получают тип &lt;u&gt;Integer&lt;/u&gt;&lt;/span&gt;, если не указывать это в объявлении к переменной).&lt;br /&gt;&lt;span style=&quot;color:#ff0000&quot;&gt;Объявляются переменные&lt;/span&gt; в AMXX как и во многих языках программированию &lt;span style=&quot;color:#ff0000&quot;&gt;с помощью оператора&lt;/span&gt; &lt;span style=&quot;color:#ff0000&quot;&gt;&lt;u&gt;new&lt;/u&gt;&lt;/span&gt; или &lt;span style=&quot;color:#ff0000&quot;&gt;&lt;u&gt;static&lt;/u&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Пример:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;new Chislo; // Оператор new&lt;br /&gt;static Chislo; // Оператор static&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Чем отличаются операторы new и static? (спойлер):&lt;br /&gt;&lt;br /&gt;&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoileriuwWYI&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoileriuwWYI&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoileriuwWYI&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoileriuwWYI&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoileriuwWYI&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Спойлер&apos;);$(&apos;#uSpoileriuwWYI&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoileriuwWYI&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoileriuwWYI&apos;)).val(&apos;[+] Спойлер&apos;);$(&apos;#uSpoileriuwWYI&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;Внимание, этот материал не обязателен для ознакомления, поэтому если вы не хотите грузить себя лишней информацией, то не читайте.&lt;br /&gt;&lt;br /&gt;Оператор &quot;new&quot; создает новую переменную, то есть указывает на то, что нужно создать переменную и выделить на неё определенное кол-во памяти. И даже если эта переменная уже объявлена, то она всё равно вновь &quot;переобъявляется&quot; и перезаписывается.&lt;br /&gt;Оператор &quot;static&quot; создает статическую переменную (то есть только 1 раз). И если она уже объявлена, то она не перезаписывается, а используется в том виде и с тем значением, которые были заданы изначально.&lt;br /&gt;&lt;br /&gt;Но это не касается глобальных переменных. Забегая вперед скажу, что все переменные, которые объявлены вне функции - глобальные. Они объявляются только один раз. А это значит, что нет смысла при объявлении глобальной переменной использовать оператор static. То есть глобальная переменная создается только один раз, статическая переменная работает по такому же принципу, но внутри функций. Статическая переменная нужна для оптимизации. Об этом и о многом другом мы поговорим в других уроках&lt;!--/ust--&gt;&lt;!--usn(=Спойлер)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;&lt;br /&gt;Оператор &lt;span style=&quot;color:#ff0000&quot;&gt;new&lt;/span&gt; и &lt;span style=&quot;color:#ff0000&quot;&gt;static&lt;/span&gt; печатаются только в виде латиницы (английских символов) нижним регистром (маленькими буквами) и без пробелов.&lt;br /&gt;&lt;br /&gt;Также мы можем этой переменной присвоить любое целочисленное значение.&lt;br /&gt;Примеры с оператором new:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;new Chislo = 150;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;Или же можно и так:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;new Chislo;&lt;br /&gt;Chislo = 150;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;А вот с оператором &lt;span style=&quot;color:#ff0000&quot;&gt;static&lt;/span&gt; можно работать только одним способом (не в одну строчку):&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;static Chislo;&lt;br /&gt;Chislo = 150;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Так как это статическая переменная (см. &quot;Чем отличаются операторы new и static?&quot;).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Дробные - числа с плавающей запятой (Float).&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;color:#ff0000&quot;&gt;Дробные&lt;/span&gt; (или вещественные) &lt;span style=&quot;color:#ff0000&quot;&gt;числа объявляются&lt;/span&gt; почти как и обычные целочисленные переменные, но &lt;span style=&quot;color:#ff0000&quot;&gt;с единственным отличием - к оператору &lt;u&gt;new&lt;/u&gt;/&lt;u&gt;static&lt;/u&gt; добавляется приставочный оператор &lt;u&gt;Float&lt;/u&gt;:&lt;/span&gt;.&lt;br /&gt;Обратите внимание, что &lt;span style=&quot;color:#ff0000&quot;&gt;Float:&lt;/span&gt; пишется с большой буквы и с двоеточием на конце.&lt;br /&gt;&lt;br /&gt;Пример:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;new Float: Chislo = 5.53;&lt;br /&gt;static Float: Chislo;&lt;br /&gt;Chislo = 1512.61&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Вы уже должны сами видеть где оператор &quot;new&quot;, а где &quot;static&quot;, почему с оператором &quot;new&quot; можно работать в одну строчку, а с оператором &quot;static&quot; нельзя.&lt;br /&gt;А также вы должны уже различать целочисленные (целые) значения от вещественных (дробных).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Булевые - логические (bool).&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;color:#ff0000&quot;&gt;Булевые&lt;/span&gt; или логические &lt;span style=&quot;color:#ff0000&quot;&gt;переменные&lt;/span&gt; - это переменные, которые &lt;span style=&quot;color:#ff0000&quot;&gt;принимают значение&lt;/span&gt; &lt;span style=&quot;color:#ff0000&quot;&gt;true = истина = 1&lt;/span&gt; или &lt;span style=&quot;color:#ff0000&quot;&gt;false = ложь = 0&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Используются они в основном для каких-либо ограничений в функциях. Об этом мы поговорим чуть позже в других уроках.&lt;br /&gt;&lt;br /&gt;Объявляются булевые переменные также очень просто. К оператору &lt;span style=&quot;color:#ff0000&quot;&gt;new&lt;/span&gt;/&lt;span style=&quot;color:#ff0000&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color:#ff0000&quot;&gt;добавляется приставочный оператор &lt;u&gt;bool:&lt;/u&gt;&lt;/span&gt;. Обратите внимание, что данный оператор состоит из нижнего регистра (маленьких букв), а на конце обязательно должно стоять двоеточие.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Пример:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;new bool: Peremennaya = true;&lt;br /&gt;static bool: Peremennaya;&lt;br /&gt;Peremennaya = true;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;В данном примере мы объявляем переменную и присваиваем ей значение &quot;true (истина, т. е. это 1)&quot;.&lt;br /&gt;&lt;br /&gt;﻿&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerDnl2Pr&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerDnl2Pr&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerDnl2Pr&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerDnl2Pr&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerDnl2Pr&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Немного инфы на будущее&apos;);$(&apos;#uSpoilerDnl2Pr&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerDnl2Pr&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerDnl2Pr&apos;)).val(&apos;[+] Немного инфы на будущее&apos;);$(&apos;#uSpoilerDnl2Pr&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Немного инфы на будущее&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;Как уже было сказано выше - при объявлении любой переменной ей автоматически присваивается значение 0:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Целые числа: 0&lt;br /&gt;&lt;li&gt;дробные: 0.0&lt;br /&gt;&lt;li&gt;логические: false (то есть 0)&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;А это значит что следующая запись:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;new bool: Peremennaya;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Будет равна записи:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;new bool: Peremennaya = false;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Это вам так, на заметку и на будущее.&lt;!--/ust--&gt;&lt;!--usn(=Немного инфы на будущее)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;&lt;br /&gt;&lt;b&gt;4. Строковые (string).&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;color:#ff0000&quot;&gt;Строковые переменные&lt;/span&gt; - это переменные, которые &lt;span style=&quot;color:#ff0000&quot;&gt;содержат в себе символьную информацию&lt;/span&gt; (то есть &lt;span style=&quot;color:#ff0000&quot;&gt;состоят из символов&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Объявляются они без различных приставочных операторов. Просто после названия переменной в квадратных скобках нужно указать максимально допустимый размер для нашей переменной. То есть если у нас переменная будет содержать какое-то предложение из слов, а длина строки (кол-во букв, пробелы и знаки препинания), например, будет равна 15, то нам в квадратных скобках нужно будет указать [15]. Но это не обязательно, можно указывать и с запасом: хоть [16], хоть [200], хоть [512] и так далее.&lt;br /&gt;&lt;br /&gt;Пример:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;new Stroka&amp;#91;3] = &quot;Ура&quot;; // размер на 3 символа, слово состоит из 3 символов.&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Также считается необязательным указание размера строки, то есть можно писать таким образом:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;new Stroka&amp;#91;] = &quot;Ура&quot;; // Пустые квадратные скобки&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;В этом случае максимальный размер строки будет равен длине строки (автоматически определится за вас).&lt;br /&gt;&lt;br /&gt;Обратите внимание, что символьные данные должны быть указаны в кавычках, иначе запись&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;new Stroka&amp;#91;3] = Ура;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Будет являться массивом, к тому же неверным, вместо &quot;Ура&quot; должно быть указано целочисленное, вещественное или логическое значение (плюсом при объявлении массива ему нельзя сразу присвоить значение). Но о массивах мы поговорим уже позже.&lt;br /&gt;&lt;br /&gt;Не удивляйтесь, если у вас после всего этого каша в голове. Со временем (если захотите и не бросите изучение AMXX) вы всё поймете. Всё приходит со временем.</content:encoded>
			<category>Скриптинг</category>
			<dc:creator>6u3oH</dc:creator>
			<guid>https://steep.at.ua/forum/11-47-1</guid>
		</item>
		<item>
			<title>2. Написание плагинов</title>
			<link>https://steep.at.ua/forum/11-46-1</link>
			<pubDate>Wed, 12 Jul 2017 13:06:14 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://steep.at.ua/forum/11&quot;&gt;Скриптинг&lt;/a&gt;&lt;br /&gt;Описание темы: Написание плагинов (алгоритмизация)&lt;br /&gt;Автор темы: 6u3oH&lt;br /&gt;Автор последнего сообщения: 6u3oH&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Первое, что должны уметь новички - алгоритмизировать. То есть чётко уметь представлять себе алгоритм действий для выполнения задачи. Обычно это умение (у новичков) приходит как раз во время изучения языка программирования &quot;Pawn&quot; посредством изучения каких-либо функций.&lt;br /&gt;&lt;br /&gt;То есть можно подразделить потребности умений на две ветви:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Умение алгоритмизировать (составлять логику кода)&lt;br /&gt;&lt;li&gt;Знание синтаксиса языка (знание функций и составляющих языка)&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Но главное всё-таки то, что будущий программист на amxmodx должен уметь алгоритмизировать, синтаксис языка первое время придется подглядывать.&lt;br /&gt;&lt;br /&gt;Что же такое алгоритмизация? Алгоритмизация - это просчёт выполняемых действий (цепочка действий), которые влекут за собой успешно написанный плагин.&lt;br /&gt;&lt;br /&gt;Окунемся в мир Counter-Strike 1.6 и представим себе простую ситуацию: нам нужно написать плагин, в котором мы бы считали сколько раз умер игрок.&lt;br /&gt;Тут вы (как сказано было выше) должны представить себе чёткий алгоритм. Не читайте ниже описанный алгоритм (для удобности он спрятан под спойлер), а попытайтесь для начала представить себе, как бы вы это реализовали.&lt;br /&gt;&lt;br /&gt;&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilertJ_QL6&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilertJ_QL6&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilertJ_QL6&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilertJ_QL6&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilertJ_QL6&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Алгоритм:&apos;);$(&apos;#uSpoilertJ_QL6&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilertJ_QL6&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilertJ_QL6&apos;)).val(&apos;[+] Алгоритм:&apos;);$(&apos;#uSpoilertJ_QL6&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Алгоритм:&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;1. ﻿Поймать необходимое событие (в данном случае это смерть игрока).&lt;br /&gt;2. Сделать счётчик, с помощью которого можно будет считать кол-во смертей (для этого нужны переменные, о которых пойдет речь в следующем уроке)&lt;br /&gt;3. Вывести это значение (в чат, в консоль - куда угодно), просто чтобы убедиться, что плагин работоспособен.&lt;!--/ust--&gt;&lt;!--usn(=Алгоритм:)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;&lt;br /&gt;Если у вас ничего не получилось придумать, то не расстраивайтесь, больше практикуйтесь, изучайте различные функции, поставьте перед собой какую-нибудь задачу и пытайтесь её решить (имея знания о языке программирования, конечно).&lt;br /&gt;Если у вас что-то похожее возникло в мыслях, то вам всего лишь нужно &quot;добить&quot; этот момент, применив совет, написанный выше.</content:encoded>
			<category>Скриптинг</category>
			<dc:creator>6u3oH</dc:creator>
			<guid>https://steep.at.ua/forum/11-46-1</guid>
		</item>
		<item>
			<title>1. Знакомство с AMXX</title>
			<link>https://steep.at.ua/forum/11-45-1</link>
			<pubDate>Wed, 12 Jul 2017 13:00:42 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://steep.at.ua/forum/11&quot;&gt;Скриптинг&lt;/a&gt;&lt;br /&gt;Описание темы: Знакомство с AMXX (что из себя представляет язык Pawn?)&lt;br /&gt;Автор темы: 6u3oH&lt;br /&gt;Автор последнего сообщения: 6u3oH&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;b&gt;Pawn&lt;/b&gt; — простой, не типизированный 32-битный скриптовый язык программирования с синтаксисом, подобным языку Си.&lt;br /&gt;Основой для Pawn был взят язык Си. Целью разработчиков было упростить и изменить язык Си таким образом, чтобы синтаксис языка позволял избегать или обходить те ошибки, которые допускают неопытные программисты.&lt;br /&gt;&lt;br /&gt;Аббревиатура AMX Mod X (AMXX) — это Metamod-дополнение, которое позволяет создавать новые модификации для Half-Life на языке Pawn.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Особенности языка:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pawn - скриптовый язык.&lt;br /&gt;&lt;li&gt;Полностью зависит от подключаемых модулей (include).&lt;br /&gt;&lt;li&gt;Не сложный, понятный и легко доступный для понимания.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Поддерживаемые кодировки:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;UTF-8 - не поддерживаются русские символы.&lt;br /&gt;&lt;li&gt;UTF-8 without bom (в рус.: UTF-8 без БОМ) - поддерживаются русские символы.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Расширения файлов:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;*.sma - исходный файл - &quot;исходник&quot;.&lt;br /&gt;&lt;li&gt;*.amxx - скомпилированный исходный файл - плагин.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Применение языка:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Язык Pawn используется в написании плагинов для модулей AmxModX, которые позволяют выполнять сценарии на серверах игр Half-Life и его модов, в особенности используется для игры Counter-Strike.&lt;br /&gt;&lt;br /&gt;Все плагины на amxmodx пишутся без исключения на языке программирования Pawn.</content:encoded>
			<category>Скриптинг</category>
			<dc:creator>6u3oH</dc:creator>
			<guid>https://steep.at.ua/forum/11-45-1</guid>
		</item>
		<item>
			<title>Ошибка при компиляции!</title>
			<link>https://steep.at.ua/forum/3-43-1</link>
			<pubDate>Wed, 12 Jul 2017 07:32:26 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://steep.at.ua/forum/3&quot;&gt;Флудилка&lt;/a&gt;&lt;br /&gt;Описание темы: Помогите с ошибкой при компиляции!&lt;br /&gt;Автор темы: Gordel&lt;br /&gt;Автор последнего сообщения: 6u3oH&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>﻿Вот код:&lt;br /&gt;&lt;br /&gt;﻿&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;#include &lt;amxmodx&gt;&lt;br /&gt;#include &lt;amxmisc&gt;&lt;br /&gt;#include &lt;cstrike&gt;&lt;br /&gt;#include &lt;fun&gt;&lt;br /&gt;#include &lt;colorchat&gt;&lt;br /&gt;&lt;br /&gt;#define PLUGIN &quot;Weapon Menu&quot;&lt;br /&gt;#define VERSION &quot;0.1&quot;&lt;br /&gt;#define AUTHOR &quot;Subb98&quot;&lt;br /&gt;&lt;br /&gt;new g_iKey&amp;#91;33]&lt;br /&gt;new g_iMenuPosition&amp;#91;33]&lt;br /&gt;new g_iMenuPlayers&amp;#91;33]&amp;#91;32]&lt;br /&gt;new g_iRoundCounter&lt;br /&gt;new g_pChatInfo&lt;br /&gt;new cmdWeaponMenu&lt;br /&gt;&lt;br /&gt;public plugin_init(&amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;register_plugin(PLUGIN, VERSION, AUTHOR&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;register_event(&quot;TextMsg&quot;, &quot;eventTextMsg&quot;, &quot;a&quot;, &quot;2=#Game_will_restart_in&quot;, &quot;2=#Game_Commencing&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;register_event(&quot;HLTV&quot;, &quot;eventHLTV&quot;, &quot;a&quot;, &quot;1=0&quot;, &quot;2=0&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;register_clcmd(&quot;weaponmenu&quot;, &quot;cmdWeaponMenu&quot;, ADMIN_MENU, &quot;- show weapon menu&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;register_clcmd(&quot;say /weapon&quot;, &quot;cmdWeaponMenu&quot;, ADMIN_MENU, &quot;- show weapon menu&quot;&amp;#41;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;register_clcmd(&quot;say_team /weapon&quot;, &quot;cmdWeaponMenu&quot;, ADMIN_MENU, &quot;- show weapon menu&quot;&amp;#41;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;register_menucmd(register_menuid(&quot;Weapon Menu&quot;&amp;#41;, 1023, &quot;handleWeaponMenu&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;register_menucmd(register_menuid(&quot;Player Menu&quot;&amp;#41;, 1023, &quot;handlePlayerMenu&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;g_pChatInfo = register_cvar(&quot;wm_chatinfo&quot;, &quot;1&quot;&amp;#41;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public eventTextMsg(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;g_iRoundCounter = 0&lt;br /&gt;&lt;br /&gt;public eventHLTV(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;g_iRoundCounter++&lt;br /&gt;&lt;br /&gt;public cmdWeaponMenu(id, level, cid&amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(cmd_access(id, level, cid, 0&amp;#41;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(g_iRoundCounter &gt;= 3&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;showWeaponMenu(id&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ColorChat(id, NORMAL, &quot;^1&amp;#91;^4WeaponMenu^1] Извините, но эта команда доступна с^3 3-го ^1раунда.&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;showWeaponMenu(id&amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;new szMenu&amp;#91;512], iKeys = (1&lt;&lt;0|1&lt;&lt;1|1&lt;&lt;2|1&lt;&lt;3|1&lt;&lt;4|1&lt;&lt;5|1&lt;&lt;6|1&lt;&lt;7|1&lt;&lt;8|1&lt;&lt;9&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;formatex(szMenu, 511, &quot;&amp;#92;rОружейная&amp;#92;w^n^n&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;add(szMenu, 511, &quot;&amp;#92;r1. &amp;#92;wAK47^n&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;add(szMenu, 511, &quot;&amp;#92;r2. &amp;#92;wM4A1^n&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;add(szMenu, 511, &quot;&amp;#92;r3. &amp;#92;wFamas^n&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;add(szMenu, 511, &quot;&amp;#92;r4. &amp;#92;wScout^n&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;add(szMenu, 511, &quot;&amp;#92;r5. &amp;#92;wAWP^n&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;add(szMenu, 511, &quot;&amp;#92;r6. &amp;#92;wDeagle^n^n&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;add(szMenu, 511, &quot;&amp;#92;r7. &amp;#92;wВсе гранаты^n&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;add(szMenu, 511, &quot;&amp;#92;r8. &amp;#92;wБроня и шлем^n&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;add(szMenu, 511, &quot;&amp;#92;r9. &amp;#92;wНабор сапера^n^n&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;add(szMenu, 511, &quot;&amp;#92;r0. &amp;#92;wВыход&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;show_menu(id, iKeys, szMenu, -1, &quot;Weapon Menu&quot;&amp;#41;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public handleWeaponMenu(id, iKey&amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(iKey == 9&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;g_iKey &amp;#91;id]= iKey&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;showPlayerMenu(id, g_iMenuPosition &amp;#91;id]= 0&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;showPlayerMenu(id, iPos&amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(iPos &lt; 0&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;new iTotalPlayersNum&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;get_players(g_iMenuPlayers&amp;#91;id], iTotalPlayersNum&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;new szMenu&amp;#91;512], szName&amp;#91;32]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;new i, b = 0, iStart = iPos * 7&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(iStart &gt;= iTotalPlayersNum&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iStart = iPos = g_iMenuPosition &amp;#91;id]= 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;new iLen = formatex(szMenu, 511, &quot;&amp;#92;rВыберите игрока &amp;#92;w&amp;#91;%d/%d]:&amp;#92;w^n^n&quot;, iPos + 1, (iTotalPlayersNum / 7 + ((iTotalPlayersNum % 7&amp;#41; ? 1 : 0&amp;#41;&amp;#41;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;new iEnd = iStart + 7, iKeys = MENU_KEY_0|MENU_KEY_8&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(iEnd &gt; iTotalPlayersNum&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iEnd = iTotalPlayersNum&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(new a = iStart; a &lt; iEnd; ++a&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i = g_iMenuPlayers&amp;#91;id]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#91;a]get_user_name(i, szName, 31&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iKeys |= (1&lt;&lt;b&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(i == id&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iLen += formatex(szMenu&amp;#91;iLen], 511 - iLen, &quot;&amp;#92;r%d. &amp;#92;y%s^n&quot;, ++b, szName&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iLen += formatex(szMenu&amp;#91;iLen], 511 - iLen, &quot;&amp;#92;r%d. &amp;#92;w%s^n&quot;, ++b, szName&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(iEnd != iTotalPlayersNum&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;formatex(szMenu&amp;#91;iLen], 511 - iLen, &quot;^n&amp;#92;r9. &amp;#92;wДалее^n&amp;#92;r0. &amp;#92;wНазад&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iKeys |= MENU_KEY_9&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;formatex(szMenu&amp;#91;iLen], 511 - iLen, &quot;^n&amp;#92;r0. &amp;#92;wНазад&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;show_menu(id, iKeys, szMenu, -1, &quot;Player Menu&quot;&amp;#41;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public handlePlayerMenu(id, iKey&amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;switch(iKey&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 8: showPlayerMenu(id, ++g_iMenuPosition&amp;#91;id]&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 9:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(g_iMenuPosition&amp;#91;id]&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;showPlayerMenu(id, --g_iMenuPosition&amp;#91;id]&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;showWeaponMenu(id&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new g_iPlayer = g_iMenuPlayers&amp;#91;id]&amp;#91;g_iMenuPosition &amp;#91;id]* 7 + iKey]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;giveItem(id, g_iPlayer&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;showPlayerMenu(id, g_iMenuPosition&amp;#91;id]&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;giveItem(id, g_iPlayer&amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;new szAdmName&amp;#91;32], szUsrName&amp;#91;32]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;get_user_name(id, szAdmName, 31&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;get_user_name(g_iPlayer, szUsrName, 31&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;new iChatInfo = get_pcvar_num(g_pChatInfo&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;switch(g_iKey&amp;#91;id]&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 0:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;give_item(g_iPlayer, &quot;weapon_ak47&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cs_set_user_bpammo(g_iPlayer, CSW_AK47, 90&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(iChatInfo&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ColorChat(0, NORMAL, &quot;^1&amp;#91;^4WeaponMenu^1] Админ ^3%s ^1выдал ^4AK47 ^1игроку ^3%s^1.&quot;, szAdmName, szUsrName&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 1:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;give_item(g_iPlayer, &quot;weapon_m4a1&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cs_set_user_bpammo(g_iPlayer, CSW_M4A1, 90&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(iChatInfo&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ColorChat(0, NORMAL, &quot;^1&amp;#91;^4WeaponMenu^1] Админ ^3%s ^1выдал ^4M4A1 ^1игроку ^3%s^1.&quot;, szAdmName, szUsrName&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 2:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;give_item(g_iPlayer, &quot;weapon_famas&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cs_set_user_bpammo(g_iPlayer, CSW_FAMAS, 90&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(iChatInfo&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ColorChat(0, NORMAL, &quot;^1&amp;#91;^4WeaponMenu^1] Админ ^3%s ^1выдал ^4Famas ^1игроку ^3%s^1.&quot;, szAdmName, szUsrName&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 3:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;give_item(g_iPlayer, &quot;weapon_scout&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cs_set_user_bpammo(g_iPlayer, CSW_SCOUT, 90&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(iChatInfo&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ColorChat(0, NORMAL, &quot;^1&amp;#91;^4WeaponMenu^1] Админ ^3%s ^1выдал ^4Scout ^1игроку ^3%s^1.&quot;, szAdmName, szUsrName&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 4:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;give_item(g_iPlayer, &quot;weapon_awp&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cs_set_user_bpammo(g_iPlayer, CSW_AWP, 30&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(iChatInfo&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ColorChat(0, NORMAL, &quot;^1&amp;#91;^4WeaponMenu^1] Админ ^3%s ^1выдал ^4AWP ^1игроку ^3%s^1.&quot;, szAdmName, szUsrName&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 5:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;give_item(g_iPlayer, &quot;weapon_deagle&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cs_set_user_bpammo(g_iPlayer, CSW_DEAGLE, 35&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(iChatInfo&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ColorChat(0, NORMAL, &quot;^1&amp;#91;^4WeaponMenu^1] Админ ^3%s ^1выдал ^4Deagle ^1игроку ^3%s^1.&quot;, szAdmName, szUsrName&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 6:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;give_item(g_iPlayer, &quot;weapon_hegrenade&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;give_item(g_iPlayer, &quot;weapon_flashbang&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;give_item(g_iPlayer, &quot;weapon_smokegrenade&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cs_set_user_bpammo(g_iPlayer, CSW_FLASHBANG, 2&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(iChatInfo&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ColorChat(0, NORMAL, &quot;^1&amp;#91;^4WeaponMenu^1] Админ ^3%s ^1выдал ^4набор гранат ^1игроку ^3%s^1.&quot;, szAdmName, szUsrName&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 7:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cs_set_user_armor(g_iPlayer, 100, CS_ARMOR_VESTHELM&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(iChatInfo&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ColorChat(0, NORMAL, &quot;^1&amp;#91;^4WeaponMenu^1] Админ ^3%s ^1выдал ^4броню и шлем ^1игроку ^3%s^1.&quot;, szAdmName, szUsrName&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 8:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(get_user_team(g_iPlayer&amp;#41; == 2&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cs_set_user_defuse(g_iPlayer, 1&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(iChatInfo&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ColorChat(0, NORMAL, &quot;^1&amp;#91;^4WeaponMenu^1] Админ ^3%s ^1выдал ^4набор сапера ^1игроку ^3%s^1.&quot;, szAdmName, szUsrName&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ColorChat(id, NORMAL, &quot;^1&amp;#91;^4WeaponMenu^1] Извините, но набор сапера доступен только команде ^3Counter-Terrorist^1.&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;А ошибка такая: &quot;Error: Symbol already defined: &quot;cmdWeaponMenu&quot; on line 41&quot;</content:encoded>
			<category>Флудилка</category>
			<dc:creator>Gordel</dc:creator>
			<guid>https://steep.at.ua/forum/3-43-1</guid>
		</item>
		<item>
			<title>AMXX Curl</title>
			<link>https://steep.at.ua/forum/9-38-1</link>
			<pubDate>Tue, 16 Jun 2015 16:54:51 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://steep.at.ua/forum/9&quot;&gt;Файлы и модули&lt;/a&gt;&lt;br /&gt;Описание темы: [Модуль AMXX] Curl&lt;br /&gt;Автор темы: 6u3oH&lt;br /&gt;Автор последнего сообщения: BiZoN&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Автор: Morning Rainbow &lt;br /&gt; Версия: 0.2.1b (beta) &lt;br /&gt; Описание: &lt;br /&gt; Модуль является обёрткой над библиотекой libcurl, которая предназначена для того, чтобы взаимодействовать с различными серверами по множеству различных протоколов с синтаксисом URL. &lt;br /&gt; Поддерживаемые протоколы: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, POP3, IMAP и SMTP. &lt;br /&gt;&lt;br /&gt; Слинкованные библиотеки (win): &lt;br /&gt;&lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoileryBjUGj&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoileryBjUGj&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoileryBjUGj&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoileryBjUGj&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoileryBjUGj&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoileryBjUGj&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoileryBjUGj&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoileryBjUGj&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoileryBjUGj&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;libcurl/7.37.1 &lt;br /&gt; OpenSSL/1.0.1h &lt;br /&gt; zlib/1.2.8 &lt;br /&gt; WinIDN &lt;br /&gt; libssh2/1.4.3&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt;&lt;br /&gt; История изменений: &lt;br /&gt;&lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoiler3hawrW&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoiler3hawrW&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler3hawrW&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler3hawrW&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoiler3hawrW&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoiler3hawrW&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler3hawrW&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoiler3hawrW&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoiler3hawrW&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;0.1b - Первая версия &lt;br /&gt; 0.2b &lt;br /&gt; 1) Изменён прототип функции колбэка, которая указывается в curl_easy_perform, теперь он такой &lt;br /&gt; complite(CURLcode:code, CURL:curl, data[], data_size); &lt;br /&gt; 2) Фикс функции curl_slist_append и curl_slist_free_all; &lt;br /&gt; 3) curl_easy_cleanup теперь можно вызывать в колбэке для curl_easy_perform &lt;br /&gt; 4) Модуль теперь сам НЕ очищает curl дескрипторы при смене карты! Вы должны сами следить за тем чтобы всё дескрипторы были освобождены; &lt;br /&gt; 5) Установка колбэка для curl_easy_perform является обязательным условием. &lt;br /&gt; 0.2.1b &lt;br /&gt; 1) Фикс неверных размеров массивов передаваемых в качестве параметров некоторым колбэкам.&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt;&lt;br /&gt; Функции: &lt;br /&gt; curl_easy_escape(CURL:handle, url[], escapedUrl[], len) &lt;br /&gt; Кодирует для URL выбранную строку. &lt;br /&gt; Функция немного отличается от оригинальной. handle - curl дескриптор, url - строка для кодирования, escapedUrl - закодированная строка, len - размер escapedUrl. Возвращает реальный размер закодированной строки. &lt;br /&gt; Примечание: Вам не нужно вызывать curl_free, как указано в документации. Это делает модуль. &lt;br /&gt;&lt;br /&gt; curl_easy_init() &lt;br /&gt; Начинает новую easy-сессию libcurl. &lt;br /&gt; Возвращает дескриптор curl. &lt;br /&gt;&lt;br /&gt; curl_easy_cleanup(CURL:handle) &lt;br /&gt; Завершает libcurl easy сессию. &lt;br /&gt;&lt;br /&gt; CURLcode:curl_easy_getinfo(CURL:handle, CURLINFO:info, ...) &lt;br /&gt; Получает информацию для указанного curl дескриптора. Информация записывается в переменную указанную 3-им аргументом. &lt;br /&gt; handle - curl дескриптор, info - значение определяет какую информацию нужно получить, 3 аргумент - массив-строка (в этом случае 4-ым аргументом указывается размер), либо числовая переменная, либо переменная типа Float, либо числовая переменная с тэгом curl_slist (ставить тэг не обязательно, но вам будет проще ориентироваться в коде, тэг curl_slist означает, что в переменной содержится указатель на структуру curl_slist) &lt;br /&gt;&lt;br /&gt; CURLcode:curl_easy_pause(CURL:handle, bitmask) &lt;br /&gt; Приостанавливает или возобновляет передачу данных. &lt;br /&gt; handle - curl дескриптор, bitmask - указывает новое состояние соединения. &lt;br /&gt;&lt;br /&gt; curl_easy_perform(CURL:handle, callbackComplite[], data[] = {}, data_len = 0) &lt;br /&gt; Начинает передачу данных. &lt;br /&gt; Имеет отличие от оригинальной функции. Так во 2-ом параметре нужно указать имя функции, которая вызовется по завершении передачи, в 3-ем параметре можно указать массив, который будет передан в функцию колбэк (в этом случае необходимо указать 4-ый параметр - размер массива). &lt;br /&gt; Прототип функции колбэка: public CurlCallback(CURLcode:code, CURL:curl, data[], data_size) &lt;br /&gt; Примечание: Вызов функции не блокирует сервер, выполнение передачи идёт в отдельном потоке. &lt;br /&gt;&lt;br /&gt; CURLcode:curl_easy_recv(CURL:handle, buffer[], len, &amp;n) &lt;br /&gt; Получает &quot;сырые&quot; (raw) данные. &lt;br /&gt; buffer[] - здесь будут содержаться принятые данные, len - размер буфера, n - здесь будет содержаться реальное количество принятых байт. &lt;br /&gt; Примечание: Эта функция уже работает в блокирующем режиме. &lt;br /&gt;&lt;br /&gt; curl_easy_reset(CURL:handle) &lt;br /&gt; Сбрасывает все параметры сессии. &lt;br /&gt; CURLcode:curl_easy_send(CURL:handle, buffer[], len, &amp;n) &lt;br /&gt; Передаёт &quot;сырые&quot; (raw) данные. &lt;br /&gt; buffer[] - буфер с данными, которые необходимо отправить, len - размер буфера (укажите меньше, если требуется), n - будет содержать реальное количество отправленных байт. &lt;br /&gt; Примечание: Функция работает в блокирующем режиме. &lt;br /&gt;&lt;br /&gt; CURLcode:curl_easy_setopt(CURL:handle, CURLoption:option, ...) &lt;br /&gt; Смотрите в описании на сайте. Примечания под спойлером. &lt;br /&gt;&lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerVGypdo&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerVGypdo&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerVGypdo&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerVGypdo&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerVGypdo&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerVGypdo&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerVGypdo&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerVGypdo&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerVGypdo&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;Неподдерживаемые опции: &lt;br /&gt; CURLOPT_CONV_TO_NETWORK_FUNCTION &lt;br /&gt; CURLOPT_CONV_FROM_NETWORK_FUNCTION &lt;br /&gt; CURLOPT_CONV_FROM_UTF8_FUNCTION &lt;br /&gt; CURLOPT_ERRORBUFFER (используйте CURLOPT_VERBOSE и CURLOPT_DEBUGFUNCTION) &lt;br /&gt; CURLOPT_STDERR (используйте CURLOPT_DEBUGFUNCTION) &lt;br /&gt; CURLOPT_POSTFIELDS (используйте CURLOPT_COPYPOSTFIELDS) &lt;br /&gt; CURLOPT_RESUME_FROM_LARGE &lt;br /&gt; CURLOPT_INFILESIZE_LARGE &lt;br /&gt; CURLOPT_MAXFILESIZE_LARGE &lt;br /&gt; CURLOPT_MAX_SEND_SPEED_LARGE &lt;br /&gt; CURLOPT_MAX_RECV_SPEED_LARGE &lt;br /&gt; CURLOPT_SSH_KEYFUNCTION &lt;br /&gt; CURLOPT_SSH_KEYDATA &lt;br /&gt; CURLOPT_SHARE &lt;br /&gt; Поддержка опций с постфиксом _LARGE будет добавлена позднее, когда сделаю поддержку типа curl_off_t (8 байтовые целые). &lt;br /&gt; CURLOPT_SSH_KEYFUNCTION - Этот колбэк скорее всего добавлю позднее. &lt;br /&gt; У функции колбэка для опции CURLOPT_XFERINFOFUNCTION в параметрах аргументы типа curl_off_t, это значит значения не всегда будут корректными. &lt;br /&gt; В качестве параметра т.н. датаопции (например CURLOPT_WRITEDATA) можно указать только число (например дескриптор файла).&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt;&lt;br /&gt; curl_easy_strerror(CURLcode:code, errorBuf[], len) &lt;br /&gt; Возвращает строку, которая описывает код ошибки. &lt;br /&gt; Отличается от оригинальной функции, 2-ым параметром укажите буфер, куда будет записано описание ошибки, параметр len - размер буфера. &lt;br /&gt;&lt;br /&gt; curl_easy_unescape(CURL:handle, url[], unescapedUrl[], len) &lt;br /&gt; Возвращает декодированную строку URL-кодированной строки. :) &lt;br /&gt; Немного отличается от оригинальной функции. url - строка для декодирования, unescapedUrl - здесь укажите буфер, куда будет записана декодированная строка, len - размер unescapedUrl. &lt;br /&gt; Возвращает реальный размер декодированной строки. &lt;br /&gt; Примечание: Вам не нужно вызывать curl_free, как указано в документации. Это делает модуль. &lt;br /&gt;&lt;br /&gt; CURLFORMcode:curl_formadd(&amp;curl_httppost:first, &amp;curl_httppost:last, ...) &lt;br /&gt; Добавляет раздел в multipart/formdata HTTP POST. &lt;br /&gt; Подробное описание смотрите на сайте. Примечания под спойлером. &lt;br /&gt;&lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerja08b5&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerja08b5&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerja08b5&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerja08b5&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerja08b5&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerja08b5&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerja08b5&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerja08b5&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerja08b5&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;Неподдерживаемые опции: &lt;br /&gt; CURLFORM_PTRNAME (используйте CURLFORM_COPYNAME) &lt;br /&gt; CURLFORM_PTRCONTENTS (используйте CURLFORM_COPYCONTENTS) &lt;br /&gt; CURLFORM_BUFFER (используйте CURLFORM_STREAM) &lt;br /&gt; CURLFORM_BUFFERPTR (см выше) &lt;br /&gt; CURLFORM_ARRAY &lt;br /&gt; Поддержка CURLFORM_ARRAY будет добавлена позднее. &lt;br /&gt; Так же из-за некоторых ограничений (не более 32 параметров для функции) вы не сможете передать более 14 опций. &lt;br /&gt; Вы должны обязательно вызвать curl_formfree для первого curl_httppost, как и написано в документации. В будущем возможно сделаю чтобы после смены карты все чистилось, на случай если забудете. &lt;br /&gt; &lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt;&lt;br /&gt; curl_formfree(&amp;curl_httppost:first) &lt;br /&gt; Освобождает память, выделенную под список multipart/formdata HTTP POST параметров. &lt;br /&gt;&lt;br /&gt; curl_slist:curl_slist_append(curl_slist:list, buffer[]) &lt;br /&gt; Добавляет строку в конец связного списка curl_slist. &lt;br /&gt; list - указатель на последний элемент списка, buffer - строка для добавления. &lt;br /&gt; Возвращает указатель на новый последний элемент списка. &lt;br /&gt; Вы должны обязательно вызвать curl_slist_free_all, после того как curl завершит работу со структурой. &lt;br /&gt;&lt;br /&gt; curl_slist_free_all(curl_slist:list) &lt;br /&gt; Освобождает весь список curl_slist. &lt;br /&gt;&lt;br /&gt; curl_version(buf[], len) &lt;br /&gt; Возвращает версию curl, включенные библиотеки и их версии. &lt;br /&gt; buf - буфер, куда положить информацию о версиях, len - размер буфера. &lt;br /&gt;&lt;br /&gt; Общие примечания: &lt;br /&gt; 0) Модуль сам НЕ очищает curl дескрипторы, вы должны сами контролировать очистку (вызов curl_easy_cleanup для каждого открытого дескриптора), все курлы должны быть очищены к моменту смены карты. Так же, если есть активные передачи к моменту смены карты, то модуль попытается сгенерировать ошибку передачи чтобы как можно скорее завершить поток в котором выполняется передача и вызвать колбэк curl_easy_perform (вызовется после plugin_end()). &lt;br /&gt; Проще всего проводить очистку в колбэке curl_easy_perform. &lt;br /&gt; 1) Вы НЕ должны вызывать curl_easy_cleanup и другие функции очистки пока передача не завершилась! &lt;br /&gt; 2) Пока нет возможности реально установить/получить значение переменной типа curl_off_t, сейчас происходит преобразование типа к cell (обычная ячейка amxx), но это не очень правильно. Значения зачастую будут некорректными. &lt;br /&gt; 3) Всегда определяйте опцию CURLOPT_BUFFERSIZE, если используете колбэк WRITEFUNCTION укажите в качестве параметра размер буфера не более 1024, иначе рискуете получить ошибки stack error, возможно даже повесить сервер. Если вы получаете ошибки stack error при использовании других колбэков, то можно определить в плагине #pragma dynamic 30000. &lt;br /&gt; 4) Не забывайте, что вам необходимо очищать память по указателям для curl_slist и curl_httppost с помощью функций curl_slist_free_all и curl_formfree соответственно. &lt;br /&gt; 5) Если будет что-то не так с опциями CURLAUTH_*, то сообщайте :) &lt;br /&gt;&lt;br /&gt; Рекомендации: &lt;br /&gt; 1) Если планируется &quot;долгосрочная&quot; передача, то можно временно убрать лимит игры на карте, когда передача завершится восстановить; &lt;br /&gt; 2) Вы можете использовать 1 дескриптор curl несколько раз для одного url, однако при текущей реализации логики модуля будет сложнее очистить дескриптор в месте отличном от колбэка curl_easy_perform; &lt;br /&gt; 3) Используйте curl_easy_setopt(curl, CURLOPT_VERBOSE, 1) для отладки плагина, если затрудняетесь определить причину неполадки в плагине. (По-умолчания вывод дебаг информации будет осуществляться в консоль сервера, вы можете определить колбэк CURLOPT_DEBUGFUNCTION для изменения вывода) &lt;br /&gt;&lt;br /&gt; Примеры кода: &lt;br /&gt; 1) Отправка email через SMTP-сервер; &lt;br /&gt; 2) Простейший пример отправки GET запроса через HTTP; &lt;br /&gt; 3) Плагин для отправки сообщения Вконтакте. &lt;br /&gt;&lt;br /&gt; Для компиляции под linux нужно написать Makefile, в архиве с исходным кодом уже есть статическая библиотека libcurl и по идее код должен компилироваться под linux без допилов. &lt;br /&gt;&lt;br /&gt; Windows версия не будет работать на Windows Server 2003 и Windows XP. &lt;br /&gt;&lt;br /&gt; Более подробную информацию, многие ссылки и сам модуль можете скачать в &lt;a class=&quot;link&quot; href=&quot;http://u.to/1iOmCw&quot; title=&quot;http://amx-x.ru/viewtopic.php?f=21&amp;t=31672&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;источнике&lt;/u&gt;&lt;/a&gt;.</content:encoded>
			<category>Файлы и модули</category>
			<dc:creator>6u3oH</dc:creator>
			<guid>https://steep.at.ua/forum/9-38-1</guid>
		</item>
		<item>
			<title>Half Life BSP Texture Tools</title>
			<link>https://steep.at.ua/forum/9-37-1</link>
			<pubDate>Tue, 16 Jun 2015 16:48:19 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://steep.at.ua/forum/9&quot;&gt;Файлы и модули&lt;/a&gt;&lt;br /&gt;Описание темы: Half Life BSP Texture Tools v1.0 Beta&lt;br /&gt;Автор темы: 6u3oH&lt;br /&gt;Автор последнего сообщения: BiZoN&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;span style=&quot;color:#ff0000&quot;&gt;Half Life BSP Texture Tools&lt;/span&gt; - это программа для мапперов, позволяющая просматривать и экспортировать текстуры, &quot;вшитые&quot; в карту при компиляции. &lt;br /&gt;&lt;br /&gt; &lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://steep.at.ua/other/hlfprg1051.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/div&gt; &lt;br /&gt;&lt;br /&gt; Экспортировать можно в отдельный WAD файл, или в набор отдельных картинок (Поддерживаемые форматы: .bmp, .png, .jpg, .gif, .tif). &lt;br /&gt;&lt;br /&gt; &lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://steep.at.ua/other/hlfprg1052.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/div&gt; &lt;br /&gt;&lt;br /&gt; Также можно отдельно сохранить выбранный мип. (Нужны программному (Software) рендеру, Opengl использует только первый, тот что самый большой) &lt;br /&gt;&lt;br /&gt; &lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://steep.at.ua/other/hlfprg1053.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/div&gt; &lt;br /&gt;&lt;br /&gt; Если при экспорте в набор картинок (File &gt; Export to images...) отметить флажок &quot;Export mips&quot;, мипы сохранятся в подпапках mip1, mip2 и mip3, в порядке убывания размера. &lt;br /&gt;&lt;br /&gt; &lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://steep.at.ua/other/hlfprg1054.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/div&gt; &lt;br /&gt;&lt;br /&gt; В следующей версии планируется не только просмотр и экспорт, но и возможность редактирования вшитых текстур путем импорта из вадов. &lt;br /&gt;&lt;br /&gt; Внимание! Это бета версия программы. Просьба сразу же проинформировать меня в комментариях о найденных багах и недочетах, если таковые найдутся. &lt;br /&gt;&lt;br /&gt; P.S. Отдельное спасибо Дяде Мише за Xash3D с исходным кодом. &lt;br /&gt;&lt;br /&gt; Автор: SovietCoder</content:encoded>
			<category>Файлы и модули</category>
			<dc:creator>6u3oH</dc:creator>
			<guid>https://steep.at.ua/forum/9-37-1</guid>
		</item>
		<item>
			<title>Создание WAD-Файла</title>
			<link>https://steep.at.ua/forum/19-35-1</link>
			<pubDate>Mon, 15 Jun 2015 21:51:45 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://steep.at.ua/forum/19&quot;&gt;Маппинг&lt;/a&gt;&lt;br /&gt;Описание темы: Создаем свой WAD-Файл&lt;br /&gt;Автор темы: 6u3oH&lt;br /&gt;Автор последнего сообщения: BiZoN&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://steep.at.ua/steep/mapp.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/div&gt; &lt;br /&gt;&lt;br /&gt; Автор статьи - &lt;span style=&quot;color:#ff0000&quot;&gt;BiZoN&lt;/span&gt; &lt;br /&gt; Приветствую вас, пользователи &lt;span style=&quot;color:#ff0000&quot;&gt;Steep.at.ua&lt;/span&gt; &lt;br /&gt; Приступим. &lt;br /&gt;&lt;br /&gt; Тема: &lt;span style=&quot;color:#ff0000&quot;&gt;Создание своего WAD-Файла&lt;/span&gt;. &lt;br /&gt; Ну что ж, давайте начнем! &lt;br /&gt;&lt;br /&gt; Для создания WAD-Файла нам нужна программа &lt;span style=&quot;color:#ff0000&quot;&gt;Wally&lt;/span&gt;. Скачать вы её можете здесь: &lt;a class=&quot;link&quot; href=&quot;http://steep.at.ua/load/drugoe/wally/12-1-0-222&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color:#ff0000&quot;&gt;&lt;u&gt;Программа Wally&lt;/u&gt;&lt;/span&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt; Для начала нам нужна картинка. Чтобы программа восприняла нашу картинку, нам нужно перевести картинку в режим &quot;Индексированные цвета&quot;. Также нам нужно, чтобы размер картинки сочетал в себе пропорции. Например: 512x512, 256x256, 128x128, 64x64, 32x32; 512x256, 256x128, 512x16. И так далее. Главное, чтобы вы поняли, что здесь значит слово &quot;пропорция&quot;. &lt;br /&gt;&lt;br /&gt; Сделать всё это можно с помощью программы &quot;Adobe Photoshop&quot;. Открываем программу, на панели инструментов выбираем раздел &quot;Изображение&quot;, далее в контекстном меню выбираем &quot;Размер Изображения&quot;. Выбираем нужный нам. Далее в этом же разделе заходим в ответвление &quot;Режим&quot; и далее выбираем &quot;Индексированные Цвета&quot;. далее сохраняем нашу картинку. Желательно, в формате *.bmp с пропорциональностью 8 бит. &lt;br /&gt;&lt;br /&gt; Далее открываем программу Wally. На панели инструментов выбираем раздел &quot;File&quot;, далее &quot;New&quot;. Вылезает небольшое подменю. Имя не трогаем, как и размер (к тому же, их изменить нельзя). А вот мимо типа текстур мимо не проходим. Из предлагаемого списка выбираем &quot;Half-Life Package [wad3] (.wad)&quot;. Это обязательно, иначе редактор не примет ваш вадник. &lt;br /&gt;&lt;br /&gt; Видим, перед нами открылись два окна. Первое окно: список текстур, второе: просмотр текстур. Переносим нашу картинку на окно со списком текстур. И всё. Сохраняем в формате *.wad. Готово. &lt;br /&gt;&lt;br /&gt; Далее наш WAD-Файл суем в редактор и спокойно его используем. На этом статья окончена. Спасибо за просмотр. &lt;br /&gt;&lt;br /&gt; Дополнительно видео: &lt;br /&gt;&lt;br /&gt; &lt;div align=&quot;center&quot;&gt;&lt;!--BBvideo--&gt;&lt;span id=&quot;scr07D51z8Rop&quot;&gt;&lt;/span&gt;&lt;script type=&quot;text/javascript&quot;&gt;_uVideoPlayer({&apos;url&apos;:&apos;http://www.youtube.com/watch?v=aL39E0u1tqs&apos;,&apos;width&apos;:&apos;425&apos;,&apos;height&apos;:&apos;355&apos;},&apos;scr07D51z8Rop&apos;);&lt;/script&gt;&lt;!--/BBvideo--&gt;&lt;/div&gt;</content:encoded>
			<category>Маппинг</category>
			<dc:creator>6u3oH</dc:creator>
			<guid>https://steep.at.ua/forum/19-35-1</guid>
		</item>
	</channel>
</rss>