************************************ Создание и редактирование графов ************************************ .. include:: .fontstyles.rst Краткая информация ========================== Узлы, что это такое? -------------------------- В отличие от людей, боты не могут видеть карту и анализировать то, что они видят. Если вы видите здание с дверью, вы можете подойти прямо к двери, открыть её и войти в здание. Боты не могут сделать это без посторонней помощи! Они могут видеть врагов и сражаться с ними или реагировать, если на них нападают. Эти способы поведения работают без какой-либо внешней помощи. Но для того, чтобы ориентироваться на карте и безопасно перемещаться по всем путям и переходам, им действительно нужна помощь. Им нужно что-то, что говорило бы им, куда они могут пойти, а куда нет. Им нужно что-то, что показывает им, где находится лестница или где цель миссии (зона побега/заложники/место закладки бомбы). Это делается с помощью узлов. Вы можете представить себе узлы, похожие на флаги на лыжной трассе. Каждый узел отмечает точку, куда могут идти боты. Если два из них связаны друг с другом, бот может переходить из одной точки в другую и обратно. Итак, что вы делаете, когда вы расставляете узлы по карте, в основном размещаете целую сеть точек на карте и соединяете их таким образом, чтобы боты могли перемещаться из одной точки в другую. Все точки должны быть размещены в областях, доступных для игроков, и если вы хотите, чтобы ваши боты перемещались плавно и безопасно, вы также должны следить за соединениями. Если соединения проходят сквозь стены или над глубоким оврагом, ваши боты натыкаются на стены или падают насмерть. Есть несколько типов узлов, которые можно использовать для обозначения целей на карте, зон спасения, хороших мест для кемпинга, лестниц и т. д. Существуют также различные типы соединений, односторонние или двусторонние, а также прыговые соединения, которые заставляют бота прыгнуть с точки А до точки Б вместо того, чтобы идти или бежать туда. Мы вернемся к этому позже. Кроме того, вам не нужно беспокоиться о каждой мелочи. Редактор, поставляемый с этой версией бота, сделает за вас большую часть работы, кроме того, он графический и простой в использовании (без навыков программирования/кодинга или чего-либо ещё). Вы можете обнаружить, что создание узлов может быть очень увлекательным занятием, особенно когда увидите, как боты без проблем перемещаются по всей карте - и вы сделали это возможным! .. Note:: Начиная с версии YaPB 2.10, был добавлен новый формат вэйпоинтов названный **Graph**. Благодаря этому, ограничение точек было повышено до 2048 (в более поздних сборках, когда была введена функция автоанализа графов, ограничение на количество точек было снова увеличено), направления кемперских точек теперь могут настраиваться по вертикали, а не только по горизонтали и понижен размер файлов графов. YaPB также продолжает поддерживать старый **PWF** формат. Вы можете сохранять графы в pwf формат, но они автоматически сконвертируются в graph формат когда будут загружены. Вэйпоинты (разноцветные полосы) теперь называются **Узлы** начиная с версии YaPB 4.x. Редактор вэйпоинтов также был переименован в редактор графов. Как выглядят узлы в игре? ---------------------------------------- Когда вы играете в обычную игру на карте с узлами, узлы, конечно, будут невидимы, чтобы они никоим образом не отвлекали и не раздражали вас. Когда редактирование графов активировано (см .: Как я могу получить доступ к редактору графов? Инструкции о том, как это сделать ниже), вы увидите узлы в виде вертикальных полос примерно на высоте стоящего игрока. Цвет обычных узлов зелёный, но вы также можете видеть белые, фиолетовые, красные, синие и голубые узлы. Эти цвета указывают на особые узлы, некоторые из которых уже упоминались в последнем абзаце. Если вы видите узлы, которые намного меньше других, это узлы для приседания. Они заставят ботов приседать при приближении к ним. Такие узлы необходимы, чтобы вести ботов через вентиляцию или любые другие низкие и узкие проходы. Соединения между узлами отмечены горизонтальными линиями, ведущими от центра одного узла к другому. Они тоже существуют в разных цветах. Вы можете увидеть желтые, белые, красные и бирюзовые линии. Не волнуйтесь, если все эти разные цвета сейчас вас сбивают с толку - на самом деле это очень просто, это очень помогает, если вы видите несколько узлов на экране. Теперь вы знаете, что такое узлы и соединения, для чего они нужны и как они выглядят, вы можете войти в режим редактирования и убедиться в этом сами. Как я могу получить доступ к редактору графов? ---------------------------------------------------- Редактор графов это не отдельная программа, он включён в dll бота (или .so, если вы используете Linux). Чтобы открыть его, создайте игру в LAN/Listen Server, выберите карту для которой вы хотите создать граф и запустите игру как обычно. Как только вы окажетесь на карте, вы можете активировать режим редактирования с консоли, набрав ``yb graphmenu``, или, если вы связали для него клавишу, просто нажмите на эту клавишу. Сводка консольных graph команд ------------------------------------ Доступны следующие Graph команды: +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g on`` | Включает отображение точек. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g off`` | Выключает отображение точек. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g on auto`` | Включает автоматическую расстановку точек (см. ниже). | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g off auto`` | Выключает автоматическую расстановку точек (см. ниже). | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g on models`` | Включает отображение моделей игроков на точках спавна. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g off models`` | Выключает отображение моделей игроков на точках спавна. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g on noclip`` | Включает редактирование точек с noclip читом. Это позволяет вам лететь и не соприкосаться со стенами. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g off noclip`` | Выключает редактирование точек с noclip читом. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g add`` | Добавляет точку в текущем местоположении игрока. Появится меню, в котором вы должны выбрать разные типы точек. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g addbasic`` | Добавляет основные точки на карте, такие как точки спавна, цели и лестницы. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g cache`` | Запоминает ближайшую к игроку точку. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g clean`` | Очищает бесполезные путевые соединения со всех или с одной точки. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g delete`` | Удаляет ближайшую к игроку точку (см. ниже). | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g erase`` | Удаляет файлы опыта ботов и графов с жёсткого диска. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g flags`` | Позволяет вам вручную добавлять/удалять флаги на точке. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g setradius x`` | Вручную настраивает радиус путевой зоны для этой точки на значение x. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g teleport x`` | Телепортирует игрока к указанной в значении x точке. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g stats`` | Показывает количество различных точек которые вы уже поставили. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g fileinfo`` | Показывает базовую информацию о graph файле. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g adjust_height`` | Изменяет высоту (z-компонент) всех точек с указанным смещением. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g check`` | Проверяет правильность всех путевых соединений. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g load`` | Загружает точки из graph файла (см. ниже). | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g save`` | Сохраняет текущие точки в файл (см. ниже). | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g save nocheck`` | Сохраняет текущие точки в файл без проверки. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g upload`` | Загружает созданный graph файл в базу данных графов. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g menu`` | Показывает меню редактора графов. Также доступно через алиас ``yb graphmenu`` | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g path_set_autopath``| Открывает меню для настройки максимальной дистанции автопути. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g path_create`` | Открывает меню создания путей. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g path_delete`` | Удаляет путь от указанной (или кэшированной) до ближайшей точки. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g path_create_in`` | Создание входящего путевого соединения от указанной (или кэшированной) до ближайшей точки. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g path_create_out`` | Создание исходящего путевого соединения от ближайшей до указанной (или кэшированной) точки. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g path_create_both`` | Создание двухстороннего путевого соединения между указанной (или кэшированной) и ближайшей точкой. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g path_create_jump`` | Создание исходящего прыгового путевого соединения от ближайшей до указанной (или кэшированной) точки. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g path_clean`` | Очищает соединения всех типов с точки. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g iterate_camp`` | Позволяет переходить по всем кемперским точкам на карте. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g acquire_editor`` | Получает права на редактирование графов на выделенном сервере. (см. ниже) | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | ``yb g release_editor`` | Снимает права на редактирование графов. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------+ Чтобы использовать graph команды, вы должны использовать консоль. Нажмите клавишу ``~`` чтобы открыть консоль. Вводите консольные команды которые пожелаете, затем снова нажмите клавишу ``~`` чтобы вернуться в игру. Использование graph команд ================================ Использование ``yb g delete`` удалит узел ближайший к игроку. Узел ДОЛЖЕН быть в пределах 50 юнитов от игрока (примерно 1/2 роста игрока), чтобы его можно было удалить. Вам нужно будет встать достаточно близко к узлу, чтобы его можно было удалить. Это предотвратит случайное удаление узла на другой стороне комнаты. При удалении узла вы услышите звук, указывающий на то, что узел был удалён (тот же звук, который издает мина, когда ставится на стену). Использование ``yb g save`` сохранит данные узлов в граф файл. Graph файл будет иметь то же имя, что и текущая карта, с расширением ``.graph``. Файл будет сохранен в папке ``cstrike/addons/yapb/data/graph``. Ваше текущее имя игрока будет сохранено как имя автора graph файла. Вы также можете сохранить граф в ``.pwf`` формате для старых версий YaPB или PODBot написав в консоли ``yb g save old``. Обратите внимание, что вы можете сохранить граф в этом формате только тогда, когда количество узлов не превышает 1024. Использование ``yb g load`` удалит все узлы на текущей карте и загрузит их из graph файла в папке graph. Это хороший способ "отменить" несколько узлов, которые вы создали, но не хотите сохранять. Невозможно ``отменить`` один узел. Вам нужно будет использовать команду ``yb g delete`` для удаления узлов один за другим. Команда ``yb g on auto`` позволяет вам автоматически добавлять узлы когда вы бегаете по карте. Когда вы бегаете вокруг карты, узлы будут автоматически расставляться на каждые 200 юнитов. Узел не будет ставиться если уже есть другой узел в пределах 200 юнитов от вашей текущей позиции. Поэтому, если вы хотите разместить множество узлов достаточно близко друг к другу, возможно, вам придется вручную разместить некоторые узлы используя команду ``yb g add``. Автоматическая расстановка узлов отслеживает куда был поставлен последний узел (вручную или с помощью авторасстановки узлов) и разместит другой узел, когда вы находитесь на расстоянии 200 юнитов от последнего узла. Если вам не нравится куда авторасстановка поставила узел и хотите его немного переместить, вы можете удалить его используя ``yb g delete`` (но вам нужно будет выключить авторасстановку узлов заранее, так как в ином случае он поставит узел на том же месте). При использовании авторасстановки узлов старайтесь оставаться в центре узких проёмов и всегда размещайте узлы с ОБЕИХ сторон двери. Возможно, вам придётся разместить некоторые из этих узлов вручную, используя ``yb g add``, поскольку такие места, как узкие переулки, дверные входы и выходы обычно не попадают точно в то место, где авторасстановка хотела бы разместить узел. Каждый раз, когда вы приближаетесь к узлу, желтые или зелёные линии будут нарисованы ко всем другим узлам, которые бот будет считать "достижимыми". Если соединение является двухсторонним, линия отображается желтым цветом, а односторонние соединения отображаются зелёным цветом. Эти "достижимые" узлы будут узлами, которые чётко видны из текущего местоположения. Определённые узлы не будут считаться как достижимые по той или иной причине. Например, узлы, висящие в воздухе над ботом, не будут считаться достижимыми, поскольку бот не может прыгнуть достаточно высоко, чтобы добраться до них. Также не будут считаться достижимыми узлы, расположенные слишком далеко от текущего местоположения. У вас могут быть узлы, расположенные достаточно близко друг к другу, но с широким промежутком, который будет слишком широк для прыжка. Если дальний узел находится достаточно близко и чётко виден, он всё равно будет отображаться как "достижимый", поскольку в настоящее время у нас нет метода, чтобы определить, может ли бот добраться до этого узла или нет. Боты будут переходить от одного узла к другому ТОЛЬКО, если между ними есть путь. Заведите привычку проверять, существуют ли ДВУХСТОРОННИЕ ПУТИ между узлами. Тот факт, что путь отрисован из точки A в точку B, не означает, что путь существует из точки B в точку A. Команда ``yb g path_create`` позволяет вам вручную назначить путь между двумя узлами. Это необходимо в некоторых случаях, когда узлы заблокированы (дверными проёмами или другими объектами), и вы хотите создать путь между этими узлами. Подойдите ближе к узлу, к какому хотите, и используйте меню, чтобы добавить путь. Действительный номер узла, на котором вы стоите, будет показан в верхнем углу вашего HUD. Например, чтобы вручную назначить путь между узлами #250 и 251, вы сначала должны встать рядом с узлом #250 и использовать ``yb g cache`` для кэширования этого узла, затем подойти к узлу #251 и ввести ``yb g path_create``, чтобы открыть меню и создать необходимое путевое соединение (одностороннее или двухстороннее). Вы также можете сделать это, посмотрев на нужный узел вместо его кеширования. Команда ``yb g path_delete`` аналогична команде "create", за исключением того, что она удаляет путь (соединение) от начального узла до конечного узла. Это необходимо в некоторых случаях, когда у вас может быть дверь, которая открывается с одной стороны и позволяет вам пройти, но как только дверь закрывается, вы не можете вернуться через другую сторону. Использование команды ``yb g path_clean`` удалит все соединения любого типа с ближайшего узла, если в качестве аргумента не указан номер индекса узла. Команда ``yb g acquire_editor`` позволяет вам редактировать graph файл на выделенном сервере. Перед тем, как вы сможете использовать это, на сервере должны быть настроены квары ``yb_password`` и ``yb_password_key``. Установка графов ========================= По умолчанию, если YaPB находит граф в официальной базе для вашей карты, он автоматически скачает его в папку ``addons/yapb/data/graph``. Если вы хотите установить граф вручную, положите его в папку ``*gamedir*/addons/yapb/data/graph``. Или если вы хотите установить вэйпоинт старого формата (pwf) вручную, положите его в папку ``*gamedir*/addons/yapb/data/pwf``. Также вы можете установить E-BOT (ewp) вэйпоинты в папку ``*gamedir*/addons/yapb/data/ewp``. Где ``*gamedir*`` это путь до папки с игрой, например: - ``D:\Steam\steamapps\common\Half-Life\cstrike`` это папка Counter-Strike 1.6. - ``D:\Steam\steamapps\common\Half-Life\czero`` это папка Counter-Strike Condition Zero. Обзор редактора графов ============================= Редактор графов показывает полезную информацию о данных графов и практики, такие как свойства текущей/выделенной/кэшированной точки, данные практики точки, название карты и ваше текущее время. Данные графов хранятся в ``.graph`` файле в ``addons/yapb/data/graph`` или ``.pwf`` файле в ``addons/yapb/data/pwf`` если вы используете/сохраняете их в старый формат вэйпоинтов PODBot. Данные практики хранятся в ``.prc`` файле в папке ``addons/yapb/data/train``. Информация об текущей/выделенной/кэшированной точке показывает номер этой точки, общее количество точек, радиус, уровень освещённости, флаги и координаты. Если вы не кэшировали никакую точку или не смотрите ни на какую точку вообще, тогда будут отображаться только данные о ближайшей точке. Данные практики точки показывают номер точки с количеством полученного урона от неё как для T (Террористов) так и CT (Контр-Террористов). Вы можете также видеть стрелочки указывающие на эти точки (красные для Террористов, синие для Контр-Террористов). Белые стрелочки указывают на выделенную вами точку (на которую указывает ваш прицел). Жёлтые стрелочки указывают на кэшированную вами точку. .. figure:: images/graph_editor_overview.png :align: center Окно просмотра редактора графов. Добавление узлов ========================= Добавить узел очень просто. Просто подойдите к месту, куда вы хотите поставить узел, затем откройте меню редактирования графов: .. figure:: images/waypoint_menu_page1.png :align: center Меню редактирования графов (Страница 1). Чтобы добавить узел, просто выберите ``5. Добавить узел``. Должно появиться новое меню, под названием "\ :green:`Тип узла`\ ". Все типы узлов описаны ниже которые могут быть добавлены через это меню. .. figure:: images/waypoint_type_menu.png :align: center Меню типа узла. После того, как вы выбрали тип узла в меню "Типы узла", вы услышите звук, и выбранный узел появится на карте в том месте, где вы стояли, когда нажали кнопку. .. Note:: Если вы стоите при выборе узла, будет поставлен стоячий узел. Все боты будут бежать или идти к этому узлу как обычно. Если вы хотите, чтобы боты приседали при приближении к определенной позиции, присядьте во время установки узла. Вы заметите, что только что добавленный узел примерно вдвое ниже, чем обычно. Когда вы поставите его, сидевши на корточках, на нём автоматически отобразится флаг "\ :pink:`Crouch`\ \" (см. Типы узлов). Боты теперь будут автоматически приседать при попытке достичь этого узла. Теперь, когда вы знаете основной способ, используемый для добавления узла, давайте более подробно рассмотрим существующие типы узлов. Типы узлов ======================= Обычные узлы --------------------- :green:`Обычные` узлы - это точки, которые вам нужны, чтобы заставить ботов перемещаться по карте. Они используются только для навигации и не вызывают какой-либо особый тип поведения. Вы можете добавить :green:`Обычный` узел, выбрав ``1. Обычный`` в меню "\ :green:`Тип узла`\ ". :green:`Обычные узлы имеют зелёный цвет`, как вы можете видеть на картинке ниже. .. figure:: images/normal_point.png :align: center Обычный узел. Узлы, важные для террористов --------------------------------- Этот тип узлов может использоваться всеми ботами так же, как и :green:`обычный` узел, но имеет одну дополнительную функцию. Он отмечает стратегически важные точки для террористов. Добавление :red:`важной для террористов` точки в комнате будет указывать ботам-террористам, чтобы они заходили в комнату и часто её проверяли. Вы можете добавить этот тип узла, выбрав ``2. Важный для террористов`` в меню "\ :green:`Тип узла`\ ". :red:`Цвет узлов важных для террористов зелёный с красной головкой`, как вы можете видеть на картинке ниже. .. figure:: images/terrorist_important_point.png :align: center Узел важный для террористов. .. important:: Использование точек :red:`важных для террористов` зависит от типа карты! Везде, где команда террористов является "обороняющейся" (например, на картах типа As_ Cs_), :red:`важные для террористов` точки должны быть размещены на ключевых позициях вокруг зоны заложников или зоны побега VIP. Например, если заложники находятся внутри здания, за каждым входом в здание следует добавлять :red:`важные для террористов` точки. Это заставит террористов часто проверять все входы и охранять их. Не размещайте :red:`важные для террористов` точки далеко на другой стороне карты. В конце концов, вы же не хотите, чтобы террористы бросили заложников и бесцельно мчались по карте, не так ли? С зоной побега VIP применяется та же стратегия: заставить террористов охранять ключевые маршруты к зоне побега, используя :red:`важные для террористов` точки. Вам :redbold:`НЕ` нужно ставить :red:`важные для террористов` точки прямо на заложников. В любом случае террористы будут проверять заложников. На картах, где команда террористов является "наступательной" (например, карты типа De_ и Es_), не следует злоупотреблять :red:`важными для террористов` узлами. "Наступательная" команда в любом случае попытается достичь целевого узла на карте. Единственная полезная функция, для которой вы можете использовать важные узлы, это сделать определённые маршруты более привлекательными для ботов. Например, если существует более длинный и более сложный, но более безопасный и более неожиданный маршрут к цели на карте, боты могут его немного недооценивать. В таких случаях может помочь размещение одного или двух :red:`важных для террористов` узлов на этом маршруте. Узлы, важные для контр-террористов ---------------------------------------- Функция этого типа узла точно такая же, как и у :red:`важного для террористов` узла, описанного выше. Единственное отличие состоит в том, что :blue:`важный для контр-террористов` узел отмечает стратегически важные места для команды :blue:`Контр-Террористов (CT)`. Вы можете добавить этот тип узла, выбрав ``3. Важный для Контр-Террористов`` в меню "\ :green:`Тип узла`\ ". :blue:`Важные для контр-террористов узлы имеют зелёный цвет с синей головкой`, как вы можете видеть на картинке ниже. .. figure:: images/counter_terrorist_important_point.png :align: center Узел важный для контр-террористов. .. important:: Как и в случае с другими узлами для конкретной команды, :blue:`важные для контр-террористов` узлы также должны быть размещены в соответствии с типом карты. На картах, где команда контр-террористов вынуждена пойти и достичь определённой цели - либо заложников которых нужно спасти, либо зоны побега VIP чтобы добраться до неё безопасно. :blue:`Важные для контр-террористов` точки могут быть полезны для того, чтобы сделать конкретный маршрут более привлекательным. Вам :redbold:`НЕ` нужно размещать :blue:`важные для контр-террористов` точки возле цели на карте (заложники на картах CS_, VIP-зона (зоны) побега на картах As_), туда всё равно пойдут боты контр-террористы. Для них это самые важные точки, и добавление нескольких других важных узлов рядом с ними не принесёт никакой пользы. На картах где команда контр-террористов играет оборонительную роль (например на картах De_ и Es_), поместите :blue:`важные для контр-террористов` точки на ключевых позициях вокруг места закладки бомбы/зоны побега чтобы заставить ботов контр-террористов защищать все возможные пути к цели для террористов. Лестничные узлы ------------------------ :chocolate:`Лестничные` узлы используются только для лестниц, как вы возможно догадались. Чтобы позволить вашим ботам использовать лестницу, просто подойдите к лестнице, пока вы не зацепитесь за неё (вы увидите как ваш прицел становится шире когда вы поднимаетесь по лестнице). Теперь поместите один :chocolate:`лестничный` узел внизу лестницы. Затем поднимайтесь по лестнице, пока почти полностью не дойдёте до края. Разместите здесь второй узел и убедитесь, что два лестничных узла соединены (это должно было произойти автоматически, если :chocolate:`лестничные` узлы не слишком далеко друг от друга, в противном случае вы можете создать соединение вручную), Вот и всё! Вы можете добавить этот тип узла, выбрав ``1. Обычный`` в меню "\ :green:`Тип узла`\ ", он автоматически превратится в лестничный узел, если вы стоите на лестнице. Или выберите ``4. Лестница / Блокировать с заложником`` в меню "\ :green:`Тип узла`\ ", если это карта сценария спасения заложников (CS_), чтобы боты не потеряли заложников, поднимаясь по лестнице. :chocolate:`Цвет лестничных узлов коричневый`, как вы можете видеть на картинке ниже. .. figure:: images/ladder_point.png :align: center Лестничный узел Несколько общих советов и примечаний относительно лестничных узлов: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #. Ставьте узлы на лестницы только ПОСЛЕ того, как вы поставили узлы над и под ними! Если вы сначала ставите узлы на лестницы, все узлы в пределах досягаемости лестничного узла будут соединены с ним, а их радиус автоматически уменьшится до нуля! Неважно, разместите ли вы сначала верхний или нижний :chocolate:`лестничный` узел. #. Если лестница очень длинная, вы можете разместить дополнительные :chocolate:`лестничные` узлы между нижним и верхним концом. #. Нижний узел будет автоматически соединён с ближайшим узлом, независимо от текущих настроек максимального расстояния автопути. #. Верхний узел обычно соединяется с нижним автоматически, но вам придётся добавить соединение, ведущее от него вручную. #. У :chocolate:`лестничных` узлов всегда будет нулевой радиус, и его не следует менять! Узлы точек спасения ---------------------------- **Спасательные** узлы необходимы только на картах типа Cs_ (сценарий спасения заложников). Они помечают зону куда команда контр-террористов должна вести заложников, называемую зоной спасения. Поставьте один из этих узлов внутри каждой зоны спасения. Если есть только одна, вам понадобится только один **спасательный** узел. Расстановка большего количества точек в одной зоне спасения - ненужная масса и скорее вызовет проблемы, чем улучшит что-либо. Бот контр-террорист которому удалось взять заложников, определит положение ближайшей точки спасения и приведет заложников туда. Когда бот достиг точки спасения, он проверяет действительно ли заложники спасены, и по прошествии максимального времени около 5 секунд поворачивается назад, чтобы вернуться в бой. Неправильно расположенные точки спасения могут привести к тому, что боты развернутся раньше чем заложники действительно достигнут зоны спасения. Как следствие, заложники останутся в нескольких сантиметрах от зоны спасения, в то время как бот считает свою миссию выполненной и возвращается в бой, игнорируя брошенных заложников. Вот почему рекомендуется размещать точки спасения внутри зоны спасения, а не по её краям! В редакторе, точки спасения будут отображаться ярко-белым цветом (см. ниже). Их радиус по умолчанию равен нулю и не должен изменяться. Все боты также могут использовать этот тип узла для :green:`обычной` навигации. Вы можете добавить этот тип узла, выбрав ``5. Зона спасения`` в меню "\ :green:`Тип узла`\ ". **Цвет спасательных узлов белый**, как вы можете видеть на картинке ниже. .. figure:: images/hostage_rescue_point.png :align: center Узел зоны спасения заложников Кемперские узлы ------------------------ Как следует из названия, кемперские узлы используются для обозначения хороших снайперских точек. По ним могут перемещаться все боты. Однако может ли бот кемперить там или нет, определяется флагом который вы можете добавить к кемперскому узлу. Вы можете сделать кемперские узлы важными для конкретной команды или оставить их "открытыми" для любой команды. Цвет обычных кемперских узлов голубой. Кемперские узлы для террористов имеют коралловый цвет, а для контр-террористов они василькового цвета, как вы можете видеть на картинке ниже. .. figure:: images/camp_points.png :align: center Слева направо. Снайперский, Важный для Контр-Террористов, Обычный и Важный для Террористов кемперские узлы. Хоть в меню "\ :green:`Тип узла`\ " есть две записи ("\ :green:`Кемперский`\ " и "\ :green:`Конец кемперского`\ "), :cyan:`кемперский` узел на самом деле всего один. Тем не менее, на нём есть два "маркера", которые сообщают кемперскому боту куда смотреть во время кемпинга. Когда вы кемперите сами, вы будете следить за определённой областью. Если вы хотите определить эту область, вы можете описать её как угол. Этот угол будет определяться двумя линиями, выходящими из вашего положения: одна отмечает левый край, а другая - правый край. Контролируемая зона будет между этими двумя линиями. Упомянутые "маркеры" выполняют именно эту функцию. Они отображаются в виде горизонтальных линий, выходящих из верхней части :cyan:`кемперского` узла. :red:`Цвет кемперских маркеров красный`, как вы можете видеть на картинке ниже. .. figure:: images/camp_directions.png :align: center Обычный кемперский узел с приседанием и с маркерами начала и конца просматриваемой зоны (направления) Когда бот приближается к изображённому :cyan:`кемперскому` узлу, он сначала поворачивается лицом к начальному маркеру. Затем он просмотрит область между этим маркером и конечным маркером, меняя каждые несколько секунд направление с одного на другое. Враг, выходящий за пределы двух маркеров, может ускользнуть от внимания бота, если только он не услышит приближение врага. На рисунке выше оба маркера указывают на одинаковую высоту. Однако вы также можете указать разную высоту для каждого маркера. Это очень полезно, если боты следят за подъёмом, уклоном, лестницей или другими неровными поверхностями. Все идёт нормально. Но как установить рабочий кемперский узел? Следуйте этим шагам: #. Подойдите к тому месту, где вы хотите чтобы боты кемперили (конечно, тёмный угол или подобные места лучше всего подходят для кемпинга, хотя кому я говорю?) #. Если вы хотите, чтобы боты стояли во время кемпинга, продолжайте стоять прямо. Если вы хотите, чтобы они приседали во время кемпинга (более точное прицеливание!), Присядьте, добавляя точку. #. Наведите прицел в том направлении и на той высоте, куда вы хотите чтобы ваши боты начали смотреть. #. Вызовите меню "\ :green:`Тип узла`\ " и выберите ``6. Кемперский``. :cyan:`Кемперский` узел теперь будет размещён в вашем текущем положении, и вы увидите две выходящие линии из него. Начальный кемперский маркер уже будет направлен в указанном вами направлении, а конечный кемперский маркер будет нуждаться в некоторой корректировке. #. Теперь наведите прицел в том направлении и на той высоте, где вы хотите чтобы ваши боты заканчивали наблюдение. #. Ещё раз откройте меню "\ :green:`Тип узла`\ ", но теперь выберите ``7. Конец кемперского``. Вы увидите, что конечный кемперский маркер теперь будет направлен в указанном вами направлении. Это всё! Если вы не хотите сделать ваш :cyan:`кемперский` узел важным для определённой команды или добавить ещё один флаг (см. раздел: Флаги узлов), всё готово! На самом деле это звучит намного сложнее, чем есть на самом деле. Небольшие заметки и подсказки о кемперских узлах: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #. Вы можете изменять начальные и конечные кемперские маркеры ровно столько, сколько вы захотите. Как только вы приблизитесь к существующему :cyan:`кемперскому` узлу (т.е. как только отобразится статистика этого узла в верхнем левом углу вашего HUD), откройте меню "\ :green:`Тип узла`\ " и выбрав ``6. Кемперский`` или ``7. Конец кемперского`` :redbold:`НЕ` добавит новый узел. Вместо этого он изменит положение начального и/или конечного кемперского маркера на ближайшем :cyan:`кемперском` узле в указанном вами новом направлении. #. Таким образом, если вы хотите разместить два :cyan:`кемперских` узла близко друг к другу, убедитесь, что статистика первого узла исчезла из вашего HUD, прежде чем устанавливать второй. Если статистика первого узла все ещё видна, вы можете случайно изменить начальный или конечный кемперский маркер этого узла вместо того, чтобы поставить новую точку. #. Не размещайте :cyan:`кемперские` узлы в неважных стратегически областях, иначе вы увидите, как боты находятся в совершенно бесполезных областях, в то время как их товарищи по команде подвергаются сильной атаке. #. Обеспечьте "оборонительную" команду несколькими хорошими снайперскими точками рядом с целью на карте! В общем, если вы создаете командные :cyan:`кемперские` узлы, вы добиваетесь больше для оборонительной команды, чем для атакующей команды. Целевые узлы --------------------- Очевидно, что этот тип узла указывает на :purple:`цель карты`. На As_ картах, :purple:`целевой` узел сообщает ботам, где находится зона побега VIP. Убедитесь что в вашем HUD отображается символ зоны побега когда вы ставите туда целевой узел. Иначе, VIP может закончить тем, что достигнет точки и снова убежит, как вы бы сделали со **спасательными** узлами. На Cs_ картах, :purple:`целевой` узел отмечает местоположение заложников. Вам :redbold:`НЕ` следует размещать по одному :purple:`целевому` узлу на каждого заложника. Если заложники не стоят очень далеко друг от друга, одна точка на группу заложников вполне подойдет. На De_ картах, :purple:`целевой` узел отмечает места закладки бомб. Он должен быть размещён где-то внутри зоны закладки бомбы, то есть значок бомбы должен мигать на вашем HUD, когда вы размещаете такой узел. В отличие от карт Cs_, на картах De_ имеет смысл устанавливать несколько целевых узлов в одной зоне закладки бомбы. Это позволит ботам выбирать из нескольких мест для установки бомбы и сделает их менее предсказуемыми. .. note:: На Es_ картах, :purple:`целевые` узлы отмечают зону побега для Террористов. Вы можете следовать тем же правилам что и для As_ карт. Теперь вы можете задаться вопросом, как определить точную функцию :purple:`целевого` узла? Не волнуйтесь, это полностью зависит от карты, вам не нужно ничего с этим делать. Все боты обеих участвующих команд автоматически знают, какая :purple:`цель карты` на данный момент, им нужна только точка которая направляет их туда. Вы можете добавить этот тип узла, выбрав ``8. Целевой`` в меню "\ :green:`Тип узла`\ ". :purple:`Цвет целевых узлов фиолетовый`, как вы можете видеть на картинках ниже. Примеры целевых вэйпоинтов ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. figure:: images/hostage_goal_point.png :align: center Целевой вэйпоинт заложников (карта cs_assault) .. figure:: images/vip_goal_point.png :align: center Целевой вэйпоинт побега VIP (карта as_oilrig) .. figure:: images/bombplace_goal_point.png :align: center Целевой вэйпоинт места закладки бомбы (карта de_dust2) .. figure:: images/terrorists_escape_goal_point.png :align: center Целевой вэйпоинт побега террористов (карта es_trinity) Прыговые соединения ----------------------- :red:`Прыговые` узлы на самом деле не узлы, а соединения между ними. (см .: Соединения узлов) Итак, теперь мы увидели какие типы узлов используют боты, мы можем видеть как мы можем связать эти узлы вместе чтобы создать гигантскую сеть, покрывающую карту. Радиус =============== :blue:`Радиус` узла обозначается синим многоугольником, который расходится во всех направлениях от положения узла. Фото ниже было сделано сверху, где мы смотрим на узел, и вы можете увидеть что :blue:`цвет радиуса синий`, как вы можете видеть на картинке ниже. .. figure:: images/wayzone_radius.png :align: center Радиус узла Индикатор :blue:`радиуса` отличное средство для того чтобы увидеть, насколько велик радиус узла на самом деле, он заканчивается там, где заканчиваются углы. Что на самом деле делает :blue:`радиус`? Он сообщает ботам, как именно они должны перемещаться вокруг по рассматриваемому узлу. Если бот проходит мимо ряда узлов с большими радиусами, он будет знать, что сверхточная навигация не требуется. Если радиусы маленькие, бот будет строго придерживаться узлов. Таким образом, на открытых участках большой радиус помогает сделать навигацию бота естественной - вы же не хотели бы видеть, как бот бежит по широкому двору, как если бы он следовал невероятно тонкой прямой линии, нарисованной на земле, не так ли? Это выглядит намного естественнее, если бот использует пространство вокруг себя. Однако в узких коридорах и дверных проемах или на мостах ситуация иная: слишком большой радиус сделает ботов слишком неаккуратными, они будут врезаться в стены или даже падать с моста, потому что они думают, что могут ходить где угодно в пределах этого большого радиуса! Вот почему так важен выбор подходящего радиуса узла. Как правило, на открытых участках радиус должен быть большим, а в узких проходах - маленьким. Прочтите следующий раздел, чтобы узнать подробнее: Настройка или изменение радиуса: ---------------------------------- Сначала хорошие новости: Вам не нужно настраивать каждый :blue:`радиус` вручную, редактор сделает большую часть работы за вас! Он автоматически вычислит :blue:`радиус` узла в зависимости от области вокруг него. Если редактор обнаруживает более высокие (~больше чем высота колена) препятствия, такие как стены поблизости, он автоматически отрегулирует :blue:`радиус` чтобы он не выходил за стену. Однако, максимальный :blue:`радиус` ограничен 128 юнитами. Это означает что даже на полностью открытой местности, где ближайшее препятствие находится на расстоянии сотен юнитов, :blue:`радиус` не превышает 128. Теперь вы можете спросить "Ну, если редактор делает всё это за меня, зачем мне менять радиусы вручную?" Ответ прост, редактор помогает, но он не идеален, он не может обнаруживать всевозможные препятствия (я не могу здесь вдаваться в подробности, потому что всё это в значительной степени связано с картой). В любом случае вы увидите места, где радиус врезается в препятствие - это может быть очень тонкий столб, забор или даже солидный автомобиль припаркованный на улице... как я уже сказал, это зависит от того, как маппер построил эти элементы. Другая проблема связана не со стенами, а с отверстиями и скалами. Если нет высоких препятствий, редактор будет считать область чистой и установит большой радиус, ему всё равно есть ли рядом с узлом огромная пропасть где боты могут упасть насмерть! Поэтому, в этих областях вам нужно будет внимательно следить за своими радиусами и при необходимости, изменять их вручную. В узких коридорах и особенно вокруг узких дверных проёмов, вы увидите что даже небольшой радиус рассчитанный редактором не позволяет ботам перемещаться достаточно точно. В таких местах настоятельно рекомендую снизить радиус до нуля. Чтобы изменить радиус узла, откройте меню редактора графов и выберите "\ :green:`8. Установить радиус`\ ". Появится следующее меню: .. figure:: images/setradius_menu.png :align: center Меню радиуса вэйпоинта Просто выберите параметр, нажав соответствующую кнопку и радиус текущего вэйпоинта будет изменён на выбранное значение. Вы быстро почувствуете эти числа, если немного поиграете с ними. Вэйпоинты с фиксированным радиусом ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Некоторые типы узлов всегда имеют и требуют нулевой радиус. Радиусы этих типов узлов :redbold:`НЕ следует изменять!` Типы узлов с фиксированными радиусами: :chocolate:`Лестничные`, Спасательные, :cyan:`Кемперские` (независимо от того, являются ли они важными для конкретной команды или нет) и :purple:`Целевые`. Соединения узлов ======================= Одних узлов недостаточно чтобы заставить ботов двигаться так, как вы хотите. Они должны быть соединены с другими узлами чтобы позволить ботам достичь своей цели. По умолчанию соединения на определенном расстоянии будут создаваться автоматически. Вы можете выбрать расстояние автоматических соединений (максимальное расстояние автопути, APMD), открыв меню редактора графов и выбрав ``7. Установить дистанцию автопути``. Появится следующее подменю: .. figure:: images/autopath_distance_menu.png :align: center Меню дистанции автопути Выберите желаемое расстояние из этого меню. После выбора расстояния, соединения на этом расстоянии будут отображаться автоматически, конечно, вы также можете добавлять и удалять соединения вручную. Однако, для этого нужно немного больше объяснений, и лучше объяснить знаете ли вы различные типы соединений. Итак, давайте сначала посмотрим на них - потом вы можете прочитать, как добавлять и удалять такие соединения вручную. Двухсторонние (двунаправленные) соединения ---------------------------------------------- Подавляющее большинство всех соединений в наборе узлов будет :gold:`двунаправленным`. Очевидно, что эти соединения позволяют ботам перемещаться как из точки A в точку B, так и обратно из точки B в точку A. :gold:`Цвет двунаправленных путей желтый`, как вы можете видеть на картинке ниже. .. figure:: images/bidirectional_path.png :align: center Двухстороннее соединение между двумя изображёнными узлами. Односторонние соединения --------------------------- Односторонние соединения позволяют ботам перемещаться из точки A в точку B, но не наоборот. Они могут быть полезны чтобы заставить ботов упасть со стены или высокого ящика, но не дать им попытаться подняться. Конечно, может быть больше мест в которых может иметь смысл одностороннее соединение, но это зависит от карты. В игре односторонние соединения будут видны с 2-ух узлов, начального и конечного. Чтобы показать вам направление одностороннего соединения, оно будет отображаться разными цветами в зависимости от того, с какой точки вы его просматриваете. Допустим, у вас есть одностороннее соединение из точки 1 в точку 2. В этом случае, когда вы стоите в точке 1, вы увидите исходящее одностороннее соединение отображённое белым цветом, как вы можете видеть на картинке ниже. .. figure:: images/outgoing_path.png :align: center Исходящее одностороннее соединение от правого к левому узлу. На рисунке ниже показаны те же два узла с входящим соединением (от левого к правому узлу), :teal:`Входящее одностороннее соединение отображается бирюзовым`, как вы можете видеть на картинке ниже. .. figure:: images/incoming_path.png :align: center Входящее одностороннее соединение от левого к правому узлу. .. note:: Если вы создали исходящее путевое соединение от узла A к узлу B, оно будет отображаться белым. А когда вы подойдёте к узлу B, путевое соединение станет бирюзовым как входящее путевое соединение. Тот факт, что одностороннее соединение показано с обеих задействованных точек является отличным средством. Это упрощает обнаружение ошибок и избавляет вас от необходимости бегать, чтобы проверить есть ли связь с точкой где вы стоите. Прыговые соединения ---------------------- :red:`Прыговые` соединения немного особенные, поскольку их нельзя создать как любое другое соединение. Но это ещё не всё, кроме этого, :red:`прыговые` соединения также могут быть :redbold:`односторонними или двухсторонними`. Чтобы ещё больше усложнить ситуацию, их двусторонняя версия может быть двух видов: "чистое" двухстороннее прыговое соединение, т. е. :red:`прыговое` соединение от A до B и ещё одно :red:`прыговое` соединение назад от B к A или "смешанное" двустороннее соединение, с :red:`прыговым` соединением ведущим от A к B, и обычным односторонним соединением от B к A. Последняя версия будет очень редкой, хотя... Опять же, это звучит более сложно, чем есть на самом деле. :red:`Прыговое соединение отображено красной горизонтальной линией(Исходящее прыговое соединение)`, просматривается на узлах где боты начнут прыжок, это может быть видно на картинке ниже. .. figure:: images/jump_connection.png :align: center Исходящее прыговое соединение Добавление/Удаление соединений вручную ============================================ Теперь вы знаете самое важное о соединениях в целом и о различных типах соединений. Вы также знаете, как настроить длину автоматических соединений и как вручную добавить прыговое соединение. Но как вручную добавить или удалить соединение? Вы просто нацеливаетесь на желаемый узел и выбираете действие в наэкранном меню! Вот как это работает (посмотрите на скриншот ниже), давайте представим, что мы хотим удалить соединение с узла на котором мы стоим до левого узла у стены, нацелимся на узел своим прицелом. Как только узел будет выбран, он станет больше и перед ним появятся маленькие стрелки. .. note:: Это работает только если вы стоите возле одного узла и целитесь на другой! Если вы стоите в зоне без узлов, вы не сможете использовать эту функцию, потому что для этого нужны два выбранных узла (тот, на котором вы стоите и тот, в который вы целитесь). .. figure:: images/selected_point.png :align: center Левый выбранный узел Удаление путевых соединений ------------------------------ Чтобы удалить путевое соединение, вы должны открыть меню редактора графов и выбрать ``4. Удалить путь``. После удаления путевого соединения, вы можете заметить что исходящее путевое соединение было удалено (от узла на котором вы стоите до выбранного вами узла) как вы можете видеть на картинке ниже: .. figure:: images/deleted_outgoing_path.png :align: center Удалено исходящее путевое соединение, осталось только :teal:`входящее путевое соединение` (от выбранного узла до узла на котором вы стоите) Снова выберите ``4. Удалить путь`` чтобы удалить входящее путевое соединение. .. figure:: images/fully_deleted_path.png :align: center Полностью удалённое путевое соединение Как вы уже заметили, все путевые соединения были удалены с узла на котором вы стоите до выбранного узла. Добавление путевых соединений -------------------------------- Чтобы добавить путевое соединение, вы должны открыть меню редактора графов и выбрать ``3. Создать путь``. Затем появится меню как показано на картинке ниже. .. figure:: images/path_directions_menu.png :align: center Меню путевых соединений #. Выберите ``1. Исходящий путь`` чтобы создать исходящее путевое соединение от ближайшей до указанной (или кэшированной) точки. #. Выберите ``2. Входящий путь`` чтобы создать входящее путевое соединение от указанной (или кэшированной) до ближайшей точки. #. Выберите ``3. Двунаправленный (Оба пути)`` чтобы создать двунаправленное (двухстороннее) путевое соединение между ближайшей и указанной (или кэшированной) точкой. #. Выберите ``4. Прыговой путь`` чтобы создать исходящее прыговое путевое соединение от ближайшей до указанной (или кэшированной) точки. Флаги узлов ========================= YaPB имеет 9 флагов для узлов, которые из них: #. Блокировка с заложником - флаг, который запрещает Контр-Террористам ведущих заложников идти через определённые узлы помеченные этими флагами. :redbold:`Важно: вы обязательно должны ставить эти флаги на путях где контр-террористы могут потерять заложников!` #. Только для Террористов - делает узел важным для Террористов #. Только для Контр-Террористов - делает узел важным для Контр-Террористов #. Использовать лифт - флаг для узла который заставляет ботов ждать пока они поднимутся на лифте (вы должны поставить этот флаг в начале и конце пути лифта) #. Снайперский - флаг, который делает кемперскую точку как снайперскую. #. Цель карты - флаг, который превращает обычный узел в целевой. #. Зона спасения - флаг, который указывает узел как точку спасения заложников. #. Присесть - флаг, который заставляет ботов приседать при достижении этого узла. #. Кемперская точка - флаг, который делает узел как кемперскую точку. При добавлении этого флага, открывается меню выбора начального и конечного направления обзора бота, когда он кемперит. .. figure:: images/waypoint_flags_menu.png :align: center Меню флагов узлов Меню "Отладка цели" ========================= Чтобы проверить проходимость ботов до указанной точки, вам нужно открыть вторую страницу меню "Редактор графов", и выбрать ``1. Отладка цели``. Затем, должно появиться меню, как показано на картинке ниже. .. figure:: images/debug_goal_menu.png :align: center Меню "Отладка цели" #. Выберите ``1. Отладить ближайший узел`` чтобы указать ближайший узел как цель, которую боту нужно достичь. #. Выберите ``2. Отладить указанный узел`` чтобы указать узел, на который наведён ваш прицел, как цель, которую боту нужно достичь. #. Выберите ``3. Прекратить отладку`` чтобы отключить функционирование "Отладки цели".