Препроцессоры и подключение API
Для подключения совместимости с LuxelPartyMod используются следующие определения:
| Определение | Доступность |
|---|---|
LUXELPARTYMOD |
Доступно на клиенте и на сервере при установленной клиентской части |
LUXELPARTYMOD_SERVER |
Доступно на сервере при установленной серверной части |
Проверка через #ifdef позволяет компилировать код совместимости только при наличии соответствующей части мода.
LUXELPARTYMOD
Определяется клиентской частью LuxelPartyMod.pbo. Клиентский мод-пак загружается и на сервере, поэтому это определение доступно на обеих сторонах при установленной основной части мода.
#ifdef LUXELPARTYMOD
// CODE THAT REQUIRES THE MAIN PARTY MOD.
#endif
Для вызовов серверного LXPM_PublicAPI требуется LUXELPARTYMOD_SERVER.
LUXELPARTYMOD_SERVER
Определяется серверной частью LuxelPartyMod_Server.pbo. Для работы с LXPM_PublicAPI используйте его в серверном коде модулей 4_World или 5_Mission.
#ifdef SERVER
#ifdef LUXELPARTYMOD_SERVER
class MyPartyIntegration
{
static bool IsFriend(string FirstSteamID, string SecondSteamID)
{
return LXPM_GetPublicAPI().IsFriends(FirstSteamID, SecondSteamID);
}
}
#endif
#endif
Обязательная зависимость
Если Ваш серверный мод не должен работать без пати-мода, добавьте серверный addon в requiredAddons[] своей записи CfgPatches:
requiredAddons[] = {"LuxelPartyMod_Server_Mod"};
Для кода, которому нужна только основная клиентская часть:
requiredAddons[] = {"LuxelPartyMod_Mod"};
Это фрагменты config.cpp. Добавьте зависимость к уже существующим, не удаляя остальные. Здесь используются имена addon-классов из CfgPatches, а не имена PBO-файлов.
Серверную зависимость не нужно добавлять в конфиг мода, который устанавливается игрокам.
Необязательная совместимость
Если Ваш мод должен запускаться и без LuxelPartyMod, не добавляйте его как обязательную зависимость в общий PBO. Код интеграции закройте соответствующим #ifdef либо вынесите в отдельный PBO совместимости с явной зависимостью.
Внутри условия должны находиться не только вызовы, но и объявления переменных, параметры, наследование и modded class, использующие типы пати-мода. Иначе без установленного пати компилятор всё равно встретит неизвестный тип.
Определения LUXELPARTYMOD и LUXELPARTYMOD_SERVER предоставляются соответствующими частями LuxelPartyMod. Не объявляйте их вручную в своём моде.
Препроцессор также не означает, что обработчик уже загрузился. Для подключения к его жизненному циклу используйте OnLoaded() и OnDestroyed() из публичного API.