• Страница 1 из 1
  • 1
Форум » Мастерская » В помощь картоделу » Скрипты » FaceControl
FaceControl
Difo
Суббота, 09.05.2020, 15:49
Пост №: 1
Актуальная версия: v0.3A (23.12.2020) Ссылка на загрузку

Зачем?
Если картодел считает, что негры в армии РФ/белые пираты Сомали/тактические наушники во Вьетнаме нарушают атмосферу на его миссии, то он может воспользоваться этим скриптом и проконтролировать используемые игроками лица и маски.

Как использовать?
Перенести папку "functions" из архива в миссию, затем создать в корне файл "initPlayerLocal.sqf", и написать в него следующую строку:
Код
[] call compile preprocessFileLineNumbers "functions\FaceControl\FC_settings.sqf";

Далее идем в папку со скриптом и видим там 4 файла:
FC_faces.sqf
FC_goggles.sqf
FC_functions.sqf
FC_settings.sqf


Необходимо заполнить файлы FC_faces.sqf и FC_goggles.sqf.
В первом файле перечисляются списки лиц и он уже готов к использованию, так как все имеющиеся в ванильной игре лица сгруппированы, и картоделу нет острой необходимости делать собственные.
Во втором содержатся списки доступных очков и заполняется аналогично первому, исходя из личных требований картодела.

Для примера заполню его таким образом:
Код
goggles_vanilla_blufor_list = [
   "G_Lowprofile",
   "G_Combat",
   "G_Combat_Goggles_tna_F"
];
goggles_vanilla_opfor_list = [
   "G_Balaclava_combat",
   "G_Balaclava_oli",
   "G_Balaclava_lowprofile",
   "G_Balaclava_blk",
   "G_Bandanna_tan",
   "G_Bandanna_khk",
   "G_Bandanna_aviator",
   "G_Bandanna_beast",
   "G_Bandanna_tan",
   "G_Bandanna_oli",
   "G_Bandanna_shades",
   "G_Bandanna_blk",
   "G_Bandanna_sport"
];
goggles_vanilla_additional_list = [
   "G_Aviator",
   "G_Spectacles",
   "G_Spectacles_Tinted",
   "G_Shades_Black",
   "G_Shades_Red",
   "G_Shades_Blue"
];
goggles_vanilla_blufor_list - защитные очки
goggles_vanilla_opfor_list - банданы и балаклавы
goggles_vanilla_additional_list - очки

Далее открываем FC_settings.sqf и находим там такие строки:
Код
case west: {
    _available_faces = [];
    _available_goggles = [];
    _default_goggles = [];
};
case east: {
    _available_faces= [];
    _available_goggles = [];
    _default_goggles = [];
};
case resistance: {
    _available_faces = [];
    _available_goggles = [];
    _default_goggles = [];
};
case civilian: {
    _available_faces = [];
    _available_goggles = [];
    _default_goggles = [];
};
Здесь можно настроить списки для каждой из сторон. Чуть подробнее:
_available_faces - здесь перечисляются все списки с разрешенными к использованию лицами для каждой стороны. Если лицо не соответствует указанному фильтру, то оно случайным образом заменяется на любое другое, указанное в привязанных списках.
_available_goggles - здесь перечисляются все списки с разрешенными к использованию очками для каждой стороны. Если очки не соответствует указанному фильтру, то в зависимости от значения в _default_goggles будут удалены или заменены на разрешенные.
_default_goggles - здесь перечисляются все списки или класс-неймы очков, которые будут выданы игроку, если выбранные им в настройке профиля не соответствуют фильтру.

Теперь для примера:
Код
case west: {
    _available_faces = faces_american;
    _available_goggles = goggles_vanilla_blufor_list;
    _default_goggles = ["G_Lowprofile"];
};
case east: {
    _available_faces = faces_white_general;
    _available_goggles = [""] + goggles_vanilla_opfor_list + goggles_vanilla_additional_list;
    _default_goggles = [""] + goggles_vanilla_opfor_list;
};
case resistance: {
    _available_faces = faces_general + faces_general_camo;
    _available_goggles = goggles_vanilla_blufor_list + goggles_vanilla_opfor_list + goggles_vanilla_additional_list;
    _default_goggles = [];
};
case civilian: {
    _available_faces = [];
    _available_goggles = [""];
    _default_goggles = [];
};
_available_faces
У синей и красной стороны все достаточно просто.
У зеленой стороны похожая ситуация, но с комбинированием двух списков. faces_general комбинирует все доступные лица в один список, и может использоваться для того чтобы не ограничивать игроков в самовыражении, но ограничить использование скрытых лиц, установленных с помощью редактирование конфига(например лицо Миллера из компании, которое некорректно отображается со шлемами).
Пустые квадратные скобки у гражданских означают, что для этой стороны никаких проверок не выполняется и эта сторона может использовать любые лица.
_available_goggles
Синей стороне задан опять один список. В этом случае, если у игрока очки на соответствуют фильтру или у него их вообще нет, то в зависимости от значений в _default_goggles, они будут удалены или заменены на другие.
Игрокам красной стороны разрешено носить очки из двух списков, пустые скобки ([""]) означают, что если игрок не выбрал в настройках профиля никаких очков, то и на миссии он так же может быть без них.
У зеленой стороны скомбинировано несколько списков, механика остается та же что у синей стороны.
Гражданским запрещено носить какие либо очки или маски.
Если указать какой-то стороне пустые квадратные скобки, то как и в случае с лицами, никаких проверок проводится не будет.
_default_goggles
Если очки бойца синей стороны не соответствуют фильтру, то ему будут выданы строго указанные в квадратных скобках. При необходимости можно указать несколько через запятую:
Код
_default_goggles_west = ["G_Combat", "G_Combat_Goggles_tna_F"];
Красная сторона имеет схожий с фильтром список, но без использования goggles_vanilla_additional_list. Если пролистать вверх, то видно, что в этом списке перечислены очки, имеющие цветовой фильтр. Игрок вряд ли обрадуется такому визуальному эффекту и просто выбросит такие очки. Поэтому если он сам решил поставить себе такие очки в профиле, то мы его осуждать за это не будем, но другим игрокам их выдавать тоже не станем.
Пустые скобки для зеленой стороны означают, что все очки, не соответствующие фильтру, будут просто удаляться.
Если при отключенной проверке в _available_goggles указать очки в _default_goggles, то очки из последнего будут выданы, если у игрока ничего не выбрано в настройках профиля.

ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ

Скрипт так же позволяет задавать индивидуальные списки для отделений и юнитов. Например сделать всему отделению СпН камуфляжные лица или выбрать конкретное лицо и очки для ВИПа. Делается это установкой значений переменных FC_face и FC_goggles при помощи команды setVariable в поле инициализации юнита или группы (ПКМ по объекту в редакторе -> Атрибуты -> Инициализация).

Класснеймы лиц и очков указываются как массив через запятую и в квадратных скобках ([...]).
Имена существующих списков из файлов FC_faces.sqf и FC_goggles.sqf указываются как строка, то есть в кавычках ("...").

Пример с использованием списка из файла FC_faces.sqf для отделения СпН:
Код
this setVariable ["FC_face", "faces_white_general_camo", true];

Пример с использованием класснеймов, для ВИПа:
Код
this setVariable ["FC_face", ["Miller"], true];
this setVariable ["FC_goggles", ["G_Aviator"], true];

Пример с комбинированием двух списков, как это делалось для зеленной стороны в файле FC_settings.sqf:
Код
this setVariable ["FC_face", "faces_general + faces_general_camo", true];

Автор темы
 
Difo
Среда, 23.12.2020, 16:15
Пост №: 2
Обновлено до версии v0.3A
- Изменена общая структура. Возможно неподготовленному человеку станет понятнее что и куда нужно писать.
- Добавлена возможность задавать индивидуальные списки не только для отдельных юнитов, но и для групп.
- Добавлена возможность использовать свои списки из файлов FC_faces.sqf и FC_goggles.sqf для отдельных юнитов и групп. Те картоделы, которые использовали этот функционал ранее, должны внести изменения в команду setVariable, теперь строкой указываются имена списков из файлов, а класснеймы указываются только как массив в квадратных скобках.
- Изменились имена переменных для setVariable, теперь необходимо указывать префикс FC_....

P.S. Я очень люблю где то накосячить, если столкнулись с какими либо ошибками или результат не соответствует описанию в этой теме, то пишите мне в Дискорд.

Автор темы
 
Форум » Мастерская » В помощь картоделу » Скрипты » FaceControl
  • Страница 1 из 1
  • 1
Поиск: