Пользовательские прицелы — различия между версиями

Материал из War Thunder Wiki
Перейти к: навигация, поиск
м (Создание пользовательской прицельной сетки)
м (Редактирование .blk-файла прицельной сетки)
Строка 65: Строка 65:
  
 
=== Редактирование .blk-файла прицельной сетки ===
 
=== Редактирование .blk-файла прицельной сетки ===
'''Внимание!''' Файл данных с расширением blk имеет вид:
+
Содержимое файла сетки имеет вид:
 
   block_name {
 
   block_name {
 
     param_name:type = value
 
     param_name:type = value

Версия 09:26, 22 июня 2020

Стандартную прицельную сетку наземной техники в War Thunder можно заменить пользовательской, например, воссоздающей исторический вид прицела.

Пользовательские прицелы создаются посредством изменения настроек в файле прицела, а не в графическом редакторе.

Msg-important.png Помните, что пользовательский прицел не гарантирует корректного наведения, если создан автором без учёта всех рекомендаций статьи.

Возможность создания пользовательских прицелов была добавлена в обновлении 1.73 «Vive la France».

Установка пользовательской прицельной сетки

  • Разместите в ангаре наземную технику, в которой хотите заменить прицельную сетку (это важно!)
  • Откройте Настройки игры → Основные параметры → Общие боевые настройки и в пункте «Использовать альтернативную сетку прицела» выберите «Добавить прицельную сетку»
  • В папке UserSights, находящейся в директории игры, будет создано две папки:
    • папка с названием выбранной машины и .blk файлом sight_1 — это шаблон стандартного прицела
    • папка с названием all_tanks
  • Не закрывая клиент скопируйте пользовательскую прицельную сетку в созданную папку с названием машины, если хотите применить новую сетку только для неё. Или, если прицел подходят для нескольких машин, скопируйте его файл в папку all_tanks
  • Вернитесь в игру, нажмите Alt+F9 для обновления игровых данных и выберите загруженную прицельную сетку.

Количество различных прицельных сеток к одной машине не ограничено. Таким образом, вы можете создать в одной папке коллекцию из различных сеток, чтобы иметь возможность переключаться между ними.

Создание пользовательской прицельной сетки

Прицельная сетка представляет собой блок настроек её элементов — шкал, линий, подвижных деталей и текста. Настройки задаются в виде .blk файла, который можно редактировать с помощью текстового редактора.

Создание шаблона прицельной сетки для одной машины

  • Разместите в ангаре технику, в которой хотите заменить прицельную сетку
  • Откройте Настройки игры → Основные параметры → Общие боевые настройки и в пункте «Использовать альтернативную сетку прицела» выберите «Добавить прицельную сетку»
  • В папке UserSights, находящейся в директории игры, будет создано две папки:
    • папка с названием выбраной машины и .blk файлом sight_1 — это необходимый вам шаблон стандартного прицела
    • папка с названием all_tanks
  • Приступайте к редактированию конкретно этого .blk файла в любом текстовом редакторе. Результат можно наблюдать в реальном времени, выйдя на технике в пробный выезд и нажимая Alt+F9 для обновления игровых данных.

Создание шаблона прицельной сетки для нескольких машин

Выполните 3 шага, описанные в инструкции по созданию шаблона прицельной сетки для одной машины. Затем скопируйте файл sight_1 в папку all_tanks. Останется указать, для каких машин будет доступен ваш прицел.

Откройте .blk файл прицельной сетки в текстовом редакторе и добавьте в него блок:

matchExpClass {
}

Внутри данного блока задаются классы техники для которых прицел разрешен, или их конкретный список.

Игровые классы:

  • exp_tank — легкие и средние танки
  • exp_heavy_tank — тяжелые танки
  • exp_tank_destroyer — САУ, носители ПТУР
  • exp_SPAA — ЗСУ и ЗРК

Внутри блока можно задать несколько классов и даже совместить их с конкретными машинами. Например:

matchExpClass {
exp_heavy_tank:b = yes
ussr_object_120:b = yes
}

Такой прицел будет доступен для всех тяжёлых танков и одной САУ Объект 120.

ID конкретного танка можно узнать нажав “править код” в его статье на Wiki. ID находится внутри блока {{ТТХ-Карточка|code=ussr_pr_206}}. Также ID указывается в названии каталога, который создается при создании пользовательского прицела.

Msg-important.png Для поддержания полного функционала универсального прицела для классов техники не рекомендуется использовать привязку к конкретным орудиям и боеприпасам. Их баллистическая сетка просто не будет отображаться, если техника не обладает указанными в блоке ballistics снарядами.

При создании исторических прицелов лучше использовать указание ID конкретных машин, для которых он подходит.

Редактирование .blk-файла прицельной сетки

Содержимое файла сетки имеет вид:

 block_name {
   param_name:type = value
  
   block_name {
     param_name:type = value
   }
 }

где:

  • block_name — название блока, должно начинаться с латинской буквы или подчеркивания и состоять из латинских букв, цифр или подчеркиваний
  • param_name — название параметра, должно начинаться с латинской буквы или подчеркивания и состоять из латинских букв, цифр или подчеркиваний
  • type — тип параметра, должен быть обязательно, может быть одним из:
    • t — текст (значение параметра необходимо заключать в кавычки " ")
    • r — число
    • i — целое число
    • b — булевское значение в виде yes/no on/off true/false или 1/0
    • p2 — диапазон данных из 2х значений (p3 из трех, p4 из четырех)

В случае указания неверного типа переменной например вместо целочисленного textAlign:i = 1, вы укажете textAlign:i = 1,5 игра не сможет прочитать такой файл и вы не увидите указанных вами изменений.

Для редактирования таких файлов удобнее пользоваться разными программами редакторами, например бесплатный Visual Studio Code для которого уже существуют расширения которые знакомы с синтаксисом файлов blk (Blk и BlkTool их можно найти в панели расширений программы поиском blk).

Параметры, доступные для изменения

На данный момент в коде можно изменить следующие параметры:

Основные параметры

Выбор типа тысячной для всего прицела: thousandth:t = "ussr";
Возможные значения "ussr" (1/6000), "nato" (1/6400), "real" (1/6283)

crosshairHorVertSize:p2 = 4, 2 — размер рисок на горизонтальной шкале поправок направления, первое число — размер рисок с обозначением тысячных, второе без обозначения (промежуточных);

rangefinderProgressBarColor1:c = 0, 255, 0, 64 — цвета шкалы прогрессбара дальномера в формате RGB + альфа-канал;
rangefinderProgressBarColor2:c = 255, 255, 255, 64 — цвет фона шкалы прогрессбара дальномера;
rangefinderTextScale:r = 0.7 — масштабирование размера текста дальномера;

rangefinderVerticalOffset:r = 15 — вертикальное смещение поля дальномера относительно центра экрана (+ вверх, - вниз);
rangefinderHorizontalOffset:r = 5 — горизонтальное смещение поля дальномера относительно центра экрана (+ вправо, - влево);

fontSizeMult:r = 1 — масштабирование текста и цифр;
lineSizeMult:r = 1 — масштабирование толщины всех линий;

drawCentralLineVert:b = yes — отображать вертикальную линию прицела (да/нет);
drawCentralLineHorz:b = yes — отображать горизонтальную линию прицела (да/нет);

Два последних параметра нужны, если вы хотите скрыть сплошные линии перекрестья, расположенные по центру экрана, и на их месте нарисовать новые, например, прерывающиеся, или же другие элементы (треугольники, риски, галки и т.п., подробнее об этом далее)


crosshairDistHorSizeMain:p2 = 0.03, 0.02 — множители размера рисок поправок по дальности, расположенных слева от центральной линии (в случае, если мы не используем отдельные шкалы баллистик для разных снарядов, об этом далее) первое число для риски с числовым значением, второе - без числового значения;
сrosshairDistHorSizeAdditional:p2 = 0.005, 0.003 — множители рисок поправок по дальности на самой центральной линии, аналогично, как на боковой шкале;

distanceCorrectionPos:p2 = -0.1, -0.05 — смещение поля значения введённой поправки по дальности, первое число — смещение по горизонтали (+вправо от центра, - влево от центра), второе число — смещение по вертикали (+ вниз от центра, - вверх от центра);
drawDistanceCorrection:b = yes — рисовать или нет текст введённой поправки по дальности;

Параметры для управления радиальным движением линий, текстов, окружностей: radialCenter:p2 = 0.0, 0.0; // Точка, относительно которой происходит вращение
radialAngle:r = 180.0 // Начальное угловое смещение от нуля в градусах
radialMoveSpeed:r = 6.04; // Множитель скорости вращения (в паре с radialStretch позволяет объектам вращаться с той же скоростью, что и растянутая шкала)
moveRadial:b = yes; // Разрешение углового движения


Кроме этих настроек, стандартная сетка содержит блоки crosshair_distances, который определяет то, как часто (какие дистанции подлежат нанесению на шкале) будут расположены риски поправки дальности.

 crosshair_distances {
   distance:p3 = 200, 0, 0
   distance:p3 = 400, 4, 0
   distance:p3 = 600, 0, 0
   distance:p3 = 800, 8, 0
   distance:p3 = 1000, 0, 0
   distance:p3 = 1200, 12, 0
   distance:p3 = 1400, 0, 0
   distance:p3 = 1600, 16, 0
   distance:p3 = 1800, 0, 0
   distance:p3 = 2000, 20, 0
   distance:p3 = 2200, 0, 0
   distance:p3 = 2400, 24, 0
   distance:p3 = 2600, 0, 0
   distance:p3 = 2800, 28, 0
 }

crosshair_distances можно задать 3-мя способами (важно: способы нельзя смешивать):

  1. distance:p2 = 2800, 28; где 2800 — дистанция до цели, на которой рисовать риску; 28 — какой текст выводить возле риски (0 — ничего не выводить);
  2. distance:p3 = 2800, 28, 0.01; где 0.01 — насколько увеличить длину риски слева (-0.01 — справа);
  3. distance { textPos:p2 = 0.042, 0; distance:p3 = 1000, 10, 0.01; }; где textPos — дополнительное смещение текста риски (textPos:p2 = 0, 0 по умолчанию);


distance:p3 = 200, 0, 0 — где первое число это значение поправки по дальности, для которой рисуется риска, второе число — символ, который будет обозначать эту риску, для значения 0 рисуется только риска без цифры, третье число — центрирование риски и её размер, риску можно сделать разной длины и развернуть к центру или от центра прицела.


Аналогично работает шкала поправок по направлению.

 crosshair_hor_ranges {
   range:p2 = -32, 32
   range:p2 = -28, 0
   range:p2 = -24, 24
   range:p2 = -20, 0
   range:p2 = -16, 16
   range:p2 = -12, 0
   range:p2 = -8, 8
   range:p2 = -4, 0
   range:p2 = 4, 0
   range:p2 = 8, 8
   range:p2 = 12, 0
   range:p2 = 16, 16
   range:p2 = 20, 0
   range:p2 = 24, 24
   range:p2 = 28, 0
   range:p2 = 32, 32
 }

Это были параметры стандартных сеток прицелов. Кроме этих элементов, прицельная сетка также может содержать ещё несколько блоков, которые дают новые возможности.


Блок баллистики снарядов

Стандартный прицел автоматически рисует прицельную сетку на основании данных о баллистике выбранного типа снаряда. Однако с помощью этого блока можно создать прицел, на котором постоянно будет отображаться несколько шкал для разных типов снарядов, при этом их баллистика будет соответствовать игровым значениям.

Чтобы отобразить такие шкалы, необходимо добавить блок ballistics, включающий в себя необходимое количество блоков bullet, каждый из которых имеет свои настройки, отвечающие за отрисовку и положение шкалы. Данные о баллистике снаряда, которые игра автоматически пересчитает в расстояние между рисками шкалы, задаются параметрами:

bulletType:t = "apcbc_tank" — ID типа боеприпаса, для которого нужно создать новую шкалу (см. таблицу соответствия типов снарядов игровой локализации)
speed:r = 624.0 — начальная скорость снаряда, которую наравне с названием типа снаряда можно посмотреть в его карточке

Важно! Шкалы не связаны с загрузкой боекомплекта. Если в боекомплекте танка нет определённого типа снарядов, то шкала для данного типа может быть отображена.


Пример блока баллистики для танка Т-55А и 3х снарядов ПОБС 3БМ25, КС - 3БК17 и бронебойного каморного БР-412Д:

 ballistics {
   bullet {
     bulletType:t = "apds_fs_tungsten_small_core_tank"
     speed:r = 1430.0
 
     drawAdditionalLines:b = no
     drawDistanceCorrection:b = yes
     distanceCorrectionPos:p2 = -0.15, -0.15
     drawUpward:b = yes // возможность рисовать шкалу отраженной вверх как на советских прицелах например ТШ2Б-41
     distancePos:p2 = 0.03, 0.0 // смещение шкалы относительно центра
     textAlign:i = 1
     textPos:p2 = -0.012, 0.0
     textShift:r = 0.0 
     crosshairDistHorSizeMain:p2 = 0.0075, 0.0075
     crosshairDistHorSizeAdditional:p2 = 0.005, 0.003
 
     crosshair_distances {
       distance:p3 = 200, 0, 0 // + и - риски
       distance:p3 = 400, 0, 0
       distance:p3 = 600, 0, 0
       distance:p3 = 800, 0, 0
       distance:p3 = 1000, 10, 0.01
       distance:p3 = 1200, 0, 0
       distance:p3 = 1400, 0, 0
       distance:p3 = 1600, 0, 0
       distance:p3 = 1800, 0, 0
       distance:p3 = 2000, 20, 0.01
     }
   }
  
   bullet {
     bulletType:t = "heat_fs_tank"
     speed:r = 1085.0
 
     drawAdditionalLines:b = no // рисовать риски на центральной линии
 
     drawDistanceCorrection:b = no
     distanceCorrectionPos:p2 = -0.09, -0.05
 
     distancePos:p2 = -0.02, 0.0 //смещение шкалы
     textPos:p2 = 0.02, 0.0
     textShift:r = 0.0 //смещение текста
     textAlign:i = 2 //положение текста относительно рисок
     crosshairDistHorSizeMain:p2 = 0.0075, 0.0075
     crosshairDistHorSizeAdditional:p2 = 0.005, 0.003
 
     crosshair_distances {
       distance:p3 = 200, 0, 0
       distance:p3 = 300, 0, 0
       distance:p3 = 400, 0, 0
       distance:p3 = 500, 5, -0.01
       distance:p3 = 600, 0, 0
       distance:p3 = 700, 0, 0
       distance:p3 = 800, 0, 0
       distance:p3 = 900, 0, 0
       distance:p3 = 1000, 10, -0.01
       distance:p3 = 1100, 0, 0
       distance:p3 = 1200, 0, 0
       distance:p3 = 1300, 0, 0
       distance:p3 = 1400, 0, 0
       distance:p3 = 1500, 15, -0.01
       distance:p3 = 1600, 0, 0
       distance:p3 = 1700, 0, 0
       distance:p3 = 1800, 0, 0
       distance:p3 = 1900, 0, 0
       distance:p3 = 2000, 20, 0
     }
   }
 
   bullet {
     bulletType:t = "apcbc_tank"
     speed:r = 887.0
 
     drawAdditionalLines:b = no // рисовать риски на центральной линии
 
     drawDistanceCorrection:b = no
     distanceCorrectionPos:p2 = -0.09, -0.05
 
     distancePos:p2 = -0.07, 0.0 //смещение шкалы
     textPos:p2 = 0.02, 0.0
     textShift:r = 0.0 //смещение текста
     textAlign:i = 2 //положение текста относительно рисок
     crosshairDistHorSizeMain:p2 = 0.0075, 0.0075
     crosshairDistHorSizeAdditional:p2 = 0.005, 0.003
 
     crosshair_distances {
       distance:p3 = 200, 0, 0
       distance:p3 = 300, 0, 0
       distance:p3 = 400, 0, 0
       distance:p3 = 500, 5, -0.01
       distance:p3 = 600, 0, 0
       distance:p3 = 700, 0, 0
       distance:p3 = 800, 0, 0
       distance:p3 = 900, 0, 0
       distance:p3 = 1000, 10, -0.01
       distance:p3 = 1100, 0, 0
       distance:p3 = 1200, 0, 0
       distance:p3 = 1300, 0, 0
       distance:p3 = 1400, 0, 0
       distance:p3 = 1500, 15, -0.01
       distance:p3 = 1600, 0, 0
       distance:p3 = 1700, 0, 0
       distance:p3 = 1800, 0, 0
       distance:p3 = 1900, 0, 0
       distance:p3 = 2000, 20, 0
     }
   }
 }


Параметры внутри блока bullet:
bullet {
bulletType:t = "apds_fs_tungsten_small_core_tank" — тип снаряда;
speed:r = 1430.0 — начальная скорость;

В блоке bullet также можно указать создание шкалы спаренного пулемёта, для этого нужно добавить следующие параметры:
triggerGroup:t = "coaxial" (использовать обязательно)
speed:r = 815.0

drawAdditionalLines:b = no — нужно ли дублировать шкалу данного снаряда на центральной вертикальной линии (да/нет);
drawDistanceCorrection:b = yes — нужно ли отображать поле, в котором выводится численное значение введённой поправки по дальности (да/нет);
distanceCorrectionPos:p2 = -0.15, -0.15 — смешение поля введённой поправки по дальности;

distancePos:p2 = 0.03, 0.0 — смещение шкалы относительно центра;
textAlign:i = 1 — смещение значений численных отметок шкалы относительно рисок (-1, 0 или 1);
textPos:p2 = -0.012, 0.0 — смещение текста поправок относительно рисок;
textShift:r = 0.0 — смещение текста поправок и уменьшение рисок шкалы;

crosshairDistHorSizeMain:p2 = 0.0075, 0.0075 — размер и положение рисок;
crosshairDistHorSizeAdditional:p2 = 0.005, 0.003 — размер и положение дополнительных рисок (на вертикальной оси прицела);

crosshair_distances {
distance:p3 = 200, 0, 0 // дальность — цифра — размер риски
distance:p3 = 400, 0, 0
distance:p3 = 600, 0, 0
distance:p3 = 800, 0, 0
distance:p3 = 1000, 10, 0.01
distance:p3 = 1200, 0, 0
distance:p3 = 1400, 0, 0
distance:p3 = 1600, 0, 0
distance:p3 = 1800, 0, 0
distance:p3 = 2000, 20, 0.01
}
}


ID типов снарядов и их локализация в игре

Пушки

"apcr_tank" "Бронебойный подкалиберный снаряд"
"apds_tank" "Бронебойный подкалиберный снаряд с отделяющимся поддоном"
"apds_fs_long_tank" "Оперённый бронебойный подкалиберный снаряд с отделяющимся поддоном"
"apds_fs_full_body_steel_tank" "Оперённый бронебойный подкалиберный снаряд с отделяющимся поддоном"
"apds_fs_tungsten_small_core_tank" "Оперённый бронебойный подкалиберный снаряд с отделяющимся поддоном (cтальной)"
"apds_fs_tungsten_l10_l15_tank" "Оперённый бронебойный подкалиберный снаряд с отделяющимся поддоном"
"apbc_tank" "Бронебойный тупоголовый снаряд"
"apc_tank" "Бронебойный остроголовый снаряд (с бронебойным наконечником)"
"aphe_tank" "Бронебойный остроголовый каморный снаряд"
"aphebc_tank" "Бронебойный тупоголовый каморный снаряд"
"apcbc_tank" "Бронебойный снаряд с бронебойным наконечником и баллистическим колпачком"
"ap_tank" "Бронебойный остроголовый сплошной снаряд"
"heat_tank" "Кумулятивный снаряд"
"heat_grenade_tank" "Противотанковая граната"
"heat_fs_tank" "Кумулятивный невращающийся снаряд"
"hesh_tank" "Бронебойно-фугасный снаряд"
"he_grenade_tank" "Осколочно-фугасная граната"
"he_frag_tank" "Осколочно-фугасный снаряд"
"he_frag_fs_tank" "Осколочно-фугасный снаряд"
"shrapnel_tank" "Шрапнель"
"atgm_tank" "Противотанковая управляемая ракета"
"rocket_tank" "Неуправляемая ракета"
"smoke_tank" "Дымовой снаряд"

Пулемёты

Пулемёт Начальная скорость Тип пули
7_7mm_Type_97_user_machinegun 730 ap_ball
7_7mm_Vikkers_user_machinegun 920 i_t_ball
7_62mm_DT_user_machinegun 815 ap_i_ball
7_62mm_M37_user_machinegun 853 ap_ball
7_62mm_M73_user_machinegun 853 ap_ball
7_62mm_M1919A4_user_machinegun 853 ap_ball
7_62mm_PKT_user_machinegun 815 ap_i_ball
7_62mm_SGMT_user_machinegun 815 ap_i_ball
7_62mm_Type74_user_machinegun 853 ap_ball
7_92mm_BESA_user_machinegun 880 ap_i_ball
7_92mm_MG3_user_machinegun 853 ap_ball
7_92mm_MG34_user_machinegun 880 ap_i_ball
7_92mm_MG42_user_machinegun 880 ap_i_ball
8mm_Breda_Mod38_user_machinegun 790 ap_i_t_ball
12_7mm_M2_HB_user_machinegun 887 ap_i_t_ball_M20
14_5mm_KPVT_user_machinegun 1000 ap_i_t_ball


Радиальные шкалы и элементы (блок ballistics/bullet): radial:b = no // Выбор типа шкалы
circleMode:b = no // Рисовать круги вместо линий на шкале (как на немецких прицелах Tzf9)
move:b = yes // Двигать или нет с вводом поправки
radialStretch:r = 1.0; // Множитель растяжения радиальной шкалы (Если точки слишком близко)
radialAngle:r = 0.0; // Начальное угловое смещение шкалы в градусах
radialRadius:p2 = 0, 0; // Радиус. x - радиус; y - 0 или 1, где 1 значит, то радиус в тысячных

В случае с радиальной шкалой параметр crosshairDistHorSizeMain имеет следующий смысл:
x - толщина линии окружности
y - радиус окружности

В случае с радиальной шкалой параметр crosshair_distances/distance.z означает радиус окружности.

drawUpward меняет отображения шкалы на зеркальное.


И для максимальной кастомизации прицела возможно использование блока drawLines и drawTexts, с помощью которого можно рисовать элементы из отрезков и текста, указывая их координаты:

drawLines {
  line { line:p4 = 0, -1.0, 0, -0.018; move:b = false; }
  line { line:p4 = -50, 30, -50, 40; thousandth:b = true; }
}

Для отрисовки одной линии необходимо указать 4 координаты — X, Y, X, Y; в долях экрана её начала и конца.

line { line:p4 = 0.25, -0.25, 0, -0.0; move:b = false; } — данный блок рисует одну линию, которая начинается в верхней правой четверти экрана и заканчивается в центре экрана, при этом она статична и не двигается при вводе дальности. 0.0 означает расположение координаты на нулевой линии, проходящей через центр экрана. Х,Y - координата справа внизу, -X,Y - координата слева внизу, -X,-Y - координата слева верху, X,-Y - координата справа верху.


Для удобства создания исторических сеток, на которых обычно отмечены угловые величины в тысячных, можно указать смещение координат начала и конца линии также в тысячных, используя строку
thousandth:b = true (можно вместо "true" писать "yes"); например так:

line { line:p4 = -32, -32, 0, 0; thousandth:b = true; }

результат:

drawTexts {
  text {
    text:t = "X" — желаемый символ
    align:i = 0 — смещение относительно его указанной позиции
    pos:p2 = 32, 0 — коордианты позиции сиимвола  Х и У в долях экрана
    move:b = no — будет ли текст двигаться при вводе дальности
    thousandth:b = yes // или в тысячных
    size:r = 1.7 — размер текста
    highlight:b = yes  - будет ли подсвечен этот элемент текста при включении подсветки прицела.
}

Рисование окружностей:

drawCircles {
  circle {
    segment:p2 = 0.0, 360.0; // Сектор окружности
    pos:p2 = 0.0, 90.0; // Позиция
    diameter:r = 3.0; // Диаметр. Если thousandth=yes, то в тысячных
    size:r = 2.0; // Толщина линии
    move:b = no;
    thousandth:b = yes;
  }
}

Рисование закрашенных фигур на базе четырехугольника. С его помощью можно нарисовать разные типы фигур у которых есть 4 вершины, а также их вырожденные варианты с 3-мя (треугольник) или 2-мя (линия) вершинами:

drawQuads {
  quad {  // Простой неподвижный четырёхугольник
    tl:p2 = -10, -10; // Вершина  верхняя левая
    tr:p2 = 10, -10; // Вершина  верхняя правая
    br:p2 = 10, 10; // Вершина  нижняя правая
    bl:p2 = -10, 10; // Вершина  нижняя левая

    thousandth:b = true;
  }

  quad {  // Объект который можно перемещать по радиусу
    tl:p2 = -10, -140;
    tr:p2 = 10, -140;
    br:p2 = 0, -96;
    bl:p2 = 0, -96;

    center:p2 = 0, -90; // Центр фигуры, нужен для корректного вращения. По умолчанию геометрический центр фигуры.

    radialCenter:p2 = 0.0, 0.0;
    radialAngle:r = 0;
    radialMoveSpeed:r = 6.04;

    moveRadial:b = yes;
    thousandth:b = true;
  }
}

Пример реализации исторической прицельной сетки

Используя весь спектр возможностей для создания пользовательских прицельных сеток, можно создавать прицельные сетки, которые будут максимально приближены к реальным.

Для примера мы приводим внешний вид прицела итальянского танка Р40:

Блок настроек, с помощью которых можно создать данный прицел:

 it_san_giorgio_x4 {
   crosshairHorVertSize:p2 = 0, 0
   rangefinderProgressBarColor1:c = 0, 255, 0, 64
   rangefinderProgressBarColor2:c = 255, 255, 255, 64
   rangefinderTextScale:r = 0.7
   rangefinderVerticalOffset:r = 15
   rangefinderHorizontalOffset:r = 5
   fontSizeMult:r = 1.25
   lineSizeMult:r = 1.5
   drawCentralLineVert:b = no
   drawCentralLineHorz:b = no
   crosshairDistHorSizeMain:p2 = 0.03, 0.02
   crosshairDistHorSizeAdditional:p2 = 0.005, 0.003
   distanceCorrectionPos:p2 = -0.2, -0.05
   drawDistanceCorrection:b = yes
 
 
   ballistics {
     bullet {
       bulletType:t = "apcbc_tank"
       speed:r = 624.0
 
       drawAdditionalLines:b = no
       drawDistanceCorrection:b = yes
       distanceCorrectionPos:p2 = -0.15, -0.15
 
       distancePos:p2 = 0.03, 0.0 // смещение шкалы относительно центра
       textAlign:i = 1
       textPos:p2 = -0.012, 0.0
       textShift:r = 0.0 
       crosshairDistHorSizeMain:p2 = 0.0075, 0.0075
       crosshairDistHorSizeAdditional:p2 = 0.005, 0.003
 
       crosshair_distances {
         distance:p3 = 200, 0, 0 // + и - риски
         distance:p3 = 400, 0, 0
         distance:p3 = 600, 0, 0
         distance:p3 = 800, 0, 0
         distance:p3 = 1000, 10, 0.01
         distance:p3 = 1200, 0, 0
         distance:p3 = 1400, 0, 0
         distance:p3 = 1600, 0, 0
         distance:p3 = 1800, 0, 0
         distance:p3 = 2000, 20, 0.01
       }
     }
 
     bullet {
       bulletType:t = "he_frag_tank"
       speed:r = 552.0
 
       drawAdditionalLines:b = no // рисовать риски на центральной линии
 
       drawDistanceCorrection:b = no
       distanceCorrectionPos:p2 = -0.09, -0.05
 
       distancePos:p2 = -0.02, 0.0 //смещение шкалы
       textPos:p2 = 0.02, 0.0
       textShift:r = 0.0 //смещение текста
       textAlign:i = 2 //положение текста относительно рисок
       crosshairDistHorSizeMain:p2 = 0.0075, 0.0075
       crosshairDistHorSizeAdditional:p2 = 0.005, 0.003
 
       crosshair_distances {
         distance:p3 = 200, 0, 0
         distance:p3 = 300, 0, 0
         distance:p3 = 400, 0, 0
         distance:p3 = 500, 5, -0.01
         distance:p3 = 600, 0, 0
         distance:p3 = 700, 0, 0
         distance:p3 = 800, 0, 0
         distance:p3 = 900, 0, 0
         distance:p3 = 1000, 10, -0.01
         distance:p3 = 1100, 0, 0
         distance:p3 = 1200, 0, 0
         distance:p3 = 1300, 0, 0
         distance:p3 = 1400, 0, 0
         distance:p3 = 1500, 15, -0.01
         distance:p3 = 1600, 0, 0
         distance:p3 = 1700, 0, 0
         distance:p3 = 1800, 0, 0
         distance:p3 = 1900, 0, 0
         distance:p3 = 2000, 20, 0
       }
     }
   }
 
   crosshair_hor_ranges {
     range:p2 = -60, 60
     range:p2 = -50, 0
     range:p2 = -40, 40
     range:p2 = -30, 0
     range:p2 = -20, 20
     range:p2 = 20, 20
     range:p2 = 30, 0
     range:p2 = 40, 40
     range:p2 = 50, 0
     range:p2 = 60, 60
   }
 
   drawLines {
     // Vertical lines
     line { line:p4 = 0, -1.0, 0, -0.018; move:b = false; }
     line { line:p4 = 0, 0.018, 0,   1.0; move:b = false; }
 
     // Horizontal lines
     line { line:p4 = -1.0, 0, -0.02, 0; }
     line { line:p4 = 0.02, 0,  1.0, 0; }
 
     // 
     line { line:p4 = -0.002, 0, -0.01, 0.00; move:b = false; }
     line { line:p4 = 0.002, 0,  0.01, 0.00; move:b = false; }
 
     line { line:p4 = 0.0, 0.002, 0.0, 0.01; move:b = false; }
     line { line:p4 = 0.0, -0.002, 0.0, -0.01; move:b = false; }
 
     line { line:p4 = -30, 30, -30, 40; thousandth:b = true; }
     line { line:p4 = -40, 30, -40, 40; thousandth:b = true; }
     line { line:p4 = -50, 30, -50, 40; thousandth:b = true; }
 
     line { line:p4 = 30, 30, 30, 40; thousandth:b = true; }
     line { line:p4 = 40, 30, 40, 40; thousandth:b = true; }
     line { line:p4 = 50, 30, 50, 40; thousandth:b = true; }
 
     line { line:p4 = -30, 0, -30, 10; thousandth:b = true; }
     line { line:p4 = -40, 0, -40, 10; thousandth:b = true; }
     line { line:p4 = -50, 0, -50, 10; thousandth:b = true; }
 
     line { line:p4 = 30, 0, 30, 10; thousandth:b = true; }
     line { line:p4 = 40, 0, 40, 10; thousandth:b = true; }
     line { line:p4 = 50, 0, 50, 10; thousandth:b = true; }
  
     line { line:p4 = 20, 0, 20, 3,5; thousandth:b = true; }
     line { line:p4 = -20, 0, -20, 3,5; thousandth:b = true; }
     line { line:p4 = 60, 0, 60, 5; thousandth:b = true; }
     line { line:p4 = -60, 0, -60, 5; thousandth:b = true; }
 
     line { line:p4 = 70, 0, 70, 5; thousandth:b = true; }
     line { line:p4 = -70, 0, -70, 5; thousandth:b = true; }
   }
 }

Файлы