LuxelSetManager

Просмотры: 56
  • ŔØ₲ŲĒᏃ᙭Ċ 🌌™ 🅳🆅🆁🅺 Разработчик

Препроцессоры

LuxelSetManager добавляет собственные препроцессоры, чтобы другие моды могли безопасно проверять наличие клиентской и серверной части мода ещё на этапе компиляции скриптов.

Какие препроцессоры есть

LUXELSETMANAGER

#define LUXELSETMANAGER

Определяется клиентской частью мода:

LuxelSetManager.pbo
#ifdef LUXELSETMANAGER
// SERVER-SIDE & CLIENT-SIDE CODE
#endif

LUXELSETMANAGER_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 запускаться не должен.