Dependency Constants and Compiler Directives¶
Compiler Directives¶
Compiler directives are a way to compile code only if a specific condition is met. To
use this you have the #if
, #endif
, #else
and #elseif
keyword.
Contditons you can check for are
SERVER
Checks if the code is compiled on the server VM.CLIENT
Checks if the code is compiled on the client VM.UI
Checks if the code is compiled on the UI VM.MP
Checks if the code is compiled in a multiplayer match.SP
Checks if the code is compiled in a singeplayer match.DEV
Checks if the code is compiled with the-dev
keyword in the startup arguments.
These conditions can also be combined with the regular squirrel boolean expressions
#if SERVER
Chat_ServerBroadcast("Message from the server VM")
#endif
#if (CLIENT && MP) || DEV
...
#elseif SP
...
#endif
Dependency Constants¶
Dependency constants are used to only compile code if a dependency your mod requires is loaded, these use the Compiler directives syntax.
Inside your mod.json
define a constant as:
{
// mod.json stuff
"Dependencies": {
// sets the constant to 0 or 1, depending if the mod with the name "Mod Name" exists and is enabled
"CONSTANT_NAME": "Mod Name"
}
}
For Example:
"PLAYER_HAS_ROGUELIKE_MOD": "TF|Roguelike"
Will define a constant PLAYER_HAS_ROGUELIKE_MOD
that is set to 0
or 1
depending if the mod is enabled. It then can be used as a constant/compiler flag.
#if PLAYER_HAS_ROGUELIKE_MOD
print("player has roguelike mod")
Roguelike_Function();
#else
print("Can't use the function because the mod is off :'(")
#endif