DayZ
26 ratings
Как сделать пользовательские слоты
By zilon
Инструкция к моду - Usefull Vanila Tents чтобы свои слоты можно было добавить по желанию :)
   
Award
Favorite
Favorited
Unfavorite
Введение
Инструменты Dayz Tools есть, а инструкций как ими пользоваться, не много, хотя навыки использования Dayz Tools, судя по библиотеке Стима – у людей имеются ;) и я не понимал, почему инструкций нет по созданию модов Dayz SA, пока сам не cел, эту инструкцию писать для паблика, а не в стол, как обычно, для себя xD инструкция для мода Usefull Vanila Tents.

Эта инструкция не для новичков, сначала рекомендую просто почитать целиком, оценить так сказать, масштабы бедствия, особенно пункт 3. Минимум который нужен, настроенный Dayz Tools. Об этом много информации есть в публичном доступе, тут о главном – как костюмные иконки сделать.

1. Найти иконки для слотов и обработать их.
2. Конвертация иконок для Dayz SA.
3. Создать конфиг.
3.1. Прописать слоты в конфиг.
3.2. Прописать attachments в конфиг.
3.3. Прописать inventorySlot в конфиг.
4. Проверить в игре, чтобы работало.
Иконки
Иконки я беру на этом сайте https://www.flaticon.com/ru/ обязательно выбери Чёрный с Заполнением – это очень важно! Нашёл и сохраняй и ссылку на автора не забывай. Если зарегистрируешься, то по 100 иконок в день, и будешь знать какие скачал. Все иконки можно собрать в один файл, для удобства. Например, так:



Для удобства сетка включается Ctrl + H а линейка Ctrl + R. Это очень важно так как придётся подгонять изображения по одному формату и возвращаться довольно часто придётся к этому файлу.
Размер «сетки», которая включается через Ctrl + H, в которую помещается одна иконка, у разработчиков 170 на 170 пикселей. (Они прописаны в этом файле P:\gui\imagesets\dayz_inventory.edds он создаётся через WorkBeckh открывается через Notpad++ про него во втором пункте, мы свой сделаем.)



Размер сетки регулируется тут, двойной клик на линейку, потом «Направляющие сетка и фрагменты» линия через каждые *** пикселей.
Я делаю одну иконку размером 178 на 178 пикселей, чтобы был запас 2 пикселя с 4-х сторон и рамки друг на друга не наезжали. Желательно, чтобы каждая картинка была на новом слое. Если 6 иконок нужно добавить, в фотошколе то создаю новый файл 178 пикселей высота и 178*6 длинна. Также если 8 иконок, то файл 178 пикселей высота и длинна 178*8. Обязательно осмысленное название и прозрачный фон! Все названия файлов будут в конфиге!
Когда всё готово, нужно объединить все слои и сделать инверсию цвета Ctrl + I на клавиатуре и сохранить в формат PNG. Потом Ctrl + Z два раза, отменить инверсию цвета и объединение слоёв.

По итогу должно получится изображение PNG формата, с прозрачным фоном и белыми иконками типа такого:



В следующем пункте будем конвертировать это изображение, для отображения в Dayz SA.


Конвертация
Тут нужны инструменты Dayz Tool’s, а конкретно WorchBench (далее WB). В общем, монтируешь диск P, создаёшь папку с названием мода в корне диска P у меня это CSlot и в ней папку addons она пустая должна быть, пригодится ;)

Если хочешь по красоте сделать - то в папке с именем мода, создаёшь папки gui\imagesets и в папке imagesets можешь вложенную папку сделать с названием категории и в неё закинуть все исходники, исходники не попадут в публичный доступ, при создании PBO для заливки в стим - они в не используются. У меня так путь выглядит P:\CSlot\gui\imagesets\board




Теперь запускаешь WB! Теперь самое сложное на этом этапе:

2.1. Нужно создать файл с расширением .edds из PNG
2.2. Потом пустой файл c расширением .imageset
2.3. В .imageset импортировать изображение .edds
2.4. Далее создать рамки и подгонять иконки в них.
2.1. Находим изображение png, кликаем правой кнопкой по нему из выпадающего списка выбираем Register resource and import. После этого появится файл с расширением .edds




2.2. Кликаем правой кнопкой рядом c папкой и выбираем New –> Atlas file of GUI images. (.imageset)




2.3. Теперь как в .imageset импортировать изображение из .edds ? Вот так
Выбираем файл .imageset, меняем название, нажимаем Add и выбираем файл .edds.
Если папки с файлами в окне Set image нет, то нужно WB перезапустить.




После добавления должна появится похожая строчка. Чтобы отобразились картинки, потыкать куда не будь нужно, они сразу могут не отображаться.




После добавления должна появится похожая строчка. Чтобы отобразились картинки, потыкать куда не будь нужно, они сразу могут не отображаться.




Теперь пункт 2.4. надо создать рамки и подогнать иконки в них. На вкладке Quads создать группу и добавить сразу 9 ячеек и потом лишние удалить и одинаковый размер оставшимся задать.




Выделить сразу все ячеки можно нажав на имя группы, W – ширина H – высота. Названия тоже нужно дать осмысленные, это важно! Когда всё готово нужно сохранить изменения Ctrl + Shift + S (если в блокноте открыт файл edds который редактируется в WB, то при сохранении WB покажет ошибку и выйдет без сохранения).
Конфиг
Объяснить, что тут делать – сложно, а понять вообще невозможно, так как, я не знаю ни одного языка программирования объектно-ориентированного – чтобы дичь втирать, тем не менее, я постараюсь, что не будь объяснить, а ты постарайся, что не будь понять, а то так и будут наши коллеги – всё ништяки, на западе делать, а мы, у них, это копировать будем и переводить на современный русский язык: тренинги, музыку, научные статьи и всё, что можем, а сами при этом – ни черта, не сможем сделать, чтобы у нас копировали, а не наоборот… но это всё лирика – теперь по делу :P

Чтобы этот мод сделать, нужно понимать, что такое переменная (как в алгебре 5 класс), массив (несколько переменных), класс, наследование и вложенность (в объектно-ориентированном программировании), и синтаксис языка Enforce Script (правописание, кавычки нет там, где нужно или запятая там, где не нужно – и всё хана).
Вот тут можно почитать, там много интересного и полезного:

Основы модинга Dayz SA[community.bistudio.com]
Структура мода[community.bistudio.com]
Синтаксис[community.bistudio.com]

Файл config.cpp который подгружается модом, обновляет – переменные загруженные до него. Я имею ввиду, что можно сделать патч для старого мода или перевод мода на русский язык отдельным модом и в лаучере подгружать сначала мод, а потом патч на этот мод и старый мод будет работать и перевод мода тоже будет работать. Тоже с файлами Dayz SA – чтобы этот мож сделать, мы просто найдём в конфигах нужную нам часть кода, потом Ctrl + C и Ctrl +V в наш модовый конфиг, кое-что добавим/удалим и в целом – нам этого хватит, чтобы сделать этот простой мод. Хотя он не простой. Чтобы понять, что скопировать и вставить, и чтобы ещё и работало – придётся постараться. Это не сунул-вынул и убежал, это серьёзное дело xD

У всех конфигов которые, я видел в Dayz SA, общий шаблон, общая структура. Нам для этого мода нужно 4 класса, ниже ссылки на файлы с описание хоть каким-то:

class CfgPatches – содержимое будем копировать из конфигов которые найдём, даже менять не нужно. (https://community.bistudio.com/wiki/CfgPatches)

class CfgMods – класс мода, один раз сделаем и менять не будем. (https://community.bistudio.com/wiki/CfgPatches)
class CfgSlots – класс для создания слотов, всё слоты тут - P:\scripts\config.cpp (код файла https://community.bistudio.com/wiki/CfgPatches)
class CfgVehicles – основной класс. (код файла https://community.bistudio.com/wiki/CfgPatches)

Лютые дела да? Это лучше понять – если один, целый, Осетинский пирог с сыром, разрезать на 3 одинаковых куска. Пирог целый, а состоит из трёх частей – так и тут пункт 3, состоит из 3-х подпунктов, вот тебе пример вложенности или наследования. Зацени кстати песню Ступы – Секрет, из альбома Ремесло или фильм документальный 2016 года про уязвимость нулевого или, отвлекись уже от этой статьи.

3.1. Пропишем слоты в конфиг. Всё слоты тут - P:\scripts\config.cpp

Все слоты игры, находятся в классе class CfgSlots а сам файл, с этим классом(конфиг) находятся тут P:\scripts\config.cpp, мы сделаем свой файл, с таким же классом функцией, который будет добавлять новые иконки:

class CfgSlots { class Slot_Instrumentus { name="Instrumentus"; displayName="Instrumentus"; ghostIcon = "set:table image:Instrumentus"; }; class Slot_Malleo { name="Malleo"; displayName="Malleo"; ghostIcon = "set:table image:Malleo"; }; class Slot_Frag { name="Frag"; displayName="Frag"; ghostIcon = "set:table image:Frag"; }; class Slot_Pala { name="Pala"; displayName="Pala"; ghostIcon = "set:table image:Pala"; }; class Slot_Sledge { name="Sledge"; displayName="Sledge"; ghostIcon = "set:table image:Sledge"; }; };

Здесь можно и нужно заменять, чтобы работало, имя класса и оно должно быть уникально, а рамках всех конфигов Dayz SA. Если будет два одинаковых имени класса, то будут проблемы.

Лайфхак – как искать в файлах Dayz SA, строчку (имя класса в данном случаи)



1. Ctrl + Sfift + F, в рамках окна, с именем «Найти в файлах», вкладка - «Найти в файлах»
2.3.4. Там, нужно написать, что и где искать. Ищет внутри файлов все совпадения, в обычном режиме, и обрати внимание, что не находит при этом Slot_Instrumentus и Instrumentus.txt в папке P:\CSlot в «обычном» режиме (Обычный – выбран в Рамке – с названием, Режим поиска, а режим поиска вложен, в вкладку, «Найти в файлах», в окне - «Найти в файлах» это пример наследования классов).



Без этого лайфхака, можно очень много времени в унитаз спустить, как в андедоте про Петьку, Василия и нюанс. xD




У меня имя класса в конфиге (P:\CSlot\config.cpp), имя файла с иконкой в папке (P:\CSlot\gui\imagesets\board\Instrumentus.png), имя слоя, с иконкой в файле в PSD (P:\CSlot\gui\imagesets\board\table.psd) и имя в WB, когда открыт файл table.imageset Quads -> Quad Properties (P:\CSlot\gui\imagesets\board\table.imageset) и в файле stringtable.csv (stringtable.csv – перевод на все доступные языки, P:\CSlot\stringtable.csv)

P.S. В файлах игры Dayz SA названия (имена объектов, в файле types.xml – на латинском языке. Про латинский язык, тут очень талантливые лекции: https://youtu.be/PjA6Axz_5Xc. У меня тоже латинские имена используются – в этом моде CSlot - Instrumentus, Malleo, Frag, Pala, Sledge; и в моде, к которому инструкция относится - UsefullVanilaTents

3.2. Прописать attachments в конфиг.

Attachments – куда крепится, inventorySlot – что крепится. Если Attachment и inventorySlot – одинаковые, то будет предмет с inventorySlot крепится в Attachments. В общем



В общем на скриншоте 1 пунктом class GUIInventoryAttachmentsProps который раскрывается. Вторым пунктом Instrumentus название – иконки. 3 пунктом stringtable.csv – там название предметов на всех языках.

В целом класс class GUIInventoryAttachmentsProps { ... }; можно полностью удалить за не надобностью, он в принципе не нужен.

3.3. Прописать inventorySlot в конфиг.
Там просто нужно найти config.cpp в файлах DZ там прописать inventorySlot что там нужно как-то так, то есть Shovel – лопата, вставляется в слоты, Shoulder, Melee, Pala.

class Shovel: Inventory_Base { inventorySlot[]= { "Shoulder", "Melee", "Pala" }; };

В общем id предметов – тут https://community.bistudio.com/wiki/CfgPatches

Папки с конфигами этих объектов тут P:\DZ
Проверка
Я через омегу менеджер тестирую моды. Омегу установить нужно, сервер добавить. Установить минимум одну админку, на выбор мне очень нравится связка CF + VPP.
Мод нужно подписать и залить в стим, как публичный и перейти в стим и там сверху нажать кнопку ПОДЕЛИТСЯ ссылку скопировать https://steamcommunity.com/sharedfiles/filedetails/?id=2856232293 и взять из от туда и id и сделать доступ по ссылке



В омега менеджере конфиг есть у каждого сервера, как на скриншоте, @CSlot – название мода, file_id – 2856232293
Как на скриншоте omega.cfg добавить свой мод, и если это последний мод то на 4 пункте запятую убрать перед фигурной скобкой }




Он появился на вкладке ЛВС – локальный (или личный) выделенный сервер.



И всё. Фомка, лопата и кувалда – не вешаются. Баг такой, - вот тикет кстати.

4 Comments
NaShE_4ygo Aug 1, 2024 @ 6:57pm 
не одно, а два высших. одно причем инженера- конструктора)0))
YUKI May 5, 2024 @ 4:37am 
тут высшее образования надо))
157 Nov 13, 2023 @ 4:28pm 
Нечего не понятно , но очень интересно , продолжай :steamthumbsup:
Bandit Sep 7, 2023 @ 7:58am 
что-то на умном,чел молодец:steamthumbsup: