Модпаки загружаются компилятором сразу после всего остального кода и после карты, что позволяет делать оверрайды, безболезненно добавлять предметы, пользуясь дефайнами из core code и много много всего.
Инициализируются же модпаки на этапе INIT_ORDER_MODPACKS сразу после INIT_ORDER_INPUT с вызовом соответствующего прока у датума.
Подробнее можно почитать в [mods/_modpack.dm ]
Зачем?
- Чтобы не изменять core code, а оверрайдить здесь
- Удобный ввод новых предметов
- Сохранять ивентовые паки для последующего возможного использования в других ивентах
Создание модпака
Любой модпак состоит из:
Быстро создать модпак можно с помощью скрипта modular_ss220/create_modpack.bat .
Структура модпака
Если мы условимся, что наш пак будет называется hello_world , то это будет выглядеть так:
modular_ss220/hello_world
|- _hello_world.dm
|- _hello_world.dme
|- any_file.dm
|- ...
\- some_file.dm
А теперь каждый файл по отдельности:
modular_ss220/hello_world/_hello_world.dme
#include "_hello_world.dm"
#include "any_file.dm"
// ...
#include "some_file.dm"
Здесь подключаются все необходимые файлы, включая файл с датумом модпака. Ничего особенного.
Стоит лишь учитывать, что пути локальные, а не глобальные.
modular_ss220/hello_world/_hello_world.dm
/datum/modpack/hello_world
name = "Hello world"
desc = "Описание модпака"
author = "SuhEugene" // Хороший мужик, систему модапаков у него 'позаимствована'.
name - Имя пака. Необязательно такое же, как в коде, но желательно.
desc - Очевидно, описание пака. Хотелось бы, чтобы оно было достаточно подробным, чтобы можно было понять что содержит пак, но не сильно замудрённым, чтобы любой игрок осилил буквы.
author - Никнейм на гитхабе, тег дискорда или даже несколько таких. Просто чтобы обозначить автора(ов) в простейшей форме.
modular_ss220/hello_world/any_file.dm
Это просто любой файл. Как в названии и написано. И название необязательно такое. Просто какой-либо угодно файл с dm кодом.
Ассеты
Этим обобщающим словом обычно называют картинки и звуки. Их я попрошу оставлять в папке modular_ss220/hello_world/icons/ и в modular_ss220/hello_world/sound/ соответственно.
Лучше всего, если модпак будет использовать собственные ассеты и не обращаться к пакам или же другим модпакам. |