Препроцессоры
LuxelSetManager добавляет собственные препроцессоры, чтобы другие моды могли безопасно проверять наличие клиентской и серверной части мода ещё на этапе компиляции скриптов.
Какие препроцессоры есть
LUXELSETMANAGER
#define LUXELSETMANAGERОпределяется клиентской частью мода:
LuxelSetManager.pbo#ifdef LUXELSETMANAGER
// SERVER-SIDE & CLIENT-SIDE CODE
#endifLUXELSETMANAGER_SERVER
#define LUXELSETMANAGER_SERVERОпределяется серверной частью мода:
LuxelSetManager_Server.pbo#ifdef LUXELSETMANAGER_SERVER
// SERVER-SIDE CODE
#endifПример: выдача награды через ServerOpenAPI
void GiveSetManagerReward(PlayerBase Player)
{
if (!Player || !Player.GetIdentity())
{
return;
}
string PlayerSteamID = Player.GetIdentity().GetPlainId();
#ifdef LUXELSETMANAGER_SERVER
LXSM_GetServerOpenAPI().GiveWeapon(PlayerSteamID, "AKM", 7);
#endif
}Пример: подписка на события ServerOpenAPI
#ifdef LUXELSETMANAGER_SERVER
modded class LXSM_ServerOpenAPI
{
override void OnPlayerRespawned(PlayerBase Player, string UsedSpawnPointPresetID, vector SpawnPosition, string UsedSurvivorClassname)
{
super.OnPlayerRespawned(Player, UsedSpawnPointPresetID, SpawnPosition, UsedSurvivorClassname);
if (!Player || !Player.GetIdentity())
{
return;
}
Print("[MY MOD] PLAYER RESPAWNED WITH LUXELSETMANAGER: " + Player.GetIdentity().GetPlainId());
}
}
#endifЖёсткая и мягкая зависимость
Если Ваш мод не должен работать без LuxelSetManager, можно сделать его обязательной зависимостью в requiredAddons[]. Для этого добавьте туда:
LuxelSetManager_Mod— для клиентской частиclass CfgPatches { class YourClientModCfg { units[] = {}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = { "DZ_Scripts", "DZ_Data", "LuxelSetManager_Mod" }; }; };LuxelSetManager_Server_Mod— для клиентской частиclass CfgPatches { class YourServerModCfg { units[] = {}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = { "DZ_Scripts", "DZ_Data", "LuxelSetManager_Server_Mod" }; }; };
Если LuxelSetManager должен быть опциональным, используйте препроцессоры.
Мягкая совместимость выглядит так:
#ifdef LUXELSETMANAGER
// SERVER-SIDE & CLIENT-SIDE CODE
#endif
#ifdef LUXELSETMANAGER_SERVER
// SERVER-SIDE CODE
#endifЖёсткая зависимость обычно означает, что мод без LuxelSetManager запускаться не должен.