Module Framework – Arma 3
Jump to navigation
Jump to search
mNo edit summary |
No edit summary |
||
Line 194: | Line 194: | ||
* Create the ''functions'' folder within the addon folder and place *.sqf or *.fsm files there. | * Create the ''functions'' folder within the addon folder and place *.sqf or *.fsm files there. | ||
* Example: ''\<span style="color:indigo">myTag</span>_addonName\functions\fn_<span style="color:green">module</span><span style="color:orangered;">Nuke</span>.sqf'' | * Example: ''\<span style="color:indigo">myTag</span>_addonName\functions\fn_<span style="color:green">module</span><span style="color:orangered;">Nuke</span>.sqf'' | ||
{{codecomment|// Argument 0 is module logic}} | {{codecomment|// Argument 0 is module logic.}} | ||
_logic = [_this,0,objNull,[objNull]] call [[BIS_fnc_param]]; | _logic = [_this,0,objNull,[objNull]] call [[BIS_fnc_param]]; | ||
{{codecomment|// Argument 1 is list of affected units (affected by value selected in the 'class Units' argument))}} | {{codecomment|// Argument 1 is list of affected units (affected by value selected in the 'class Units' argument))}} | ||
Line 204: | Line 204: | ||
if (_activated) then { | if (_activated) then { | ||
{{codecomment|// ... Splendid code here ...}} | {{codecomment|// ... Splendid code here ...}} | ||
{{codecomment|// If you'd like to access customly defined arguments' values as entered in the editor, }} | |||
{{codecomment|// you'll need to use "getVariable" from _logic, example:}} | |||
_bombYield = _logic getVariable "Yield"; {{codecomment|//(as per the previous example, but you can define your own.) }} | |||
hint format ["Bomb yield is: %1", _bombYield ]; {{codecomment|// will display the bomb yield in once the game is started }} | |||
}; | }; | ||
Revision as of 19:25, 24 April 2015
Arma 3 introduces a module framework, which lets designer to simplify the configuration and chose how the module function will be executed (e.g., globally and for every player who joins later).
How to Create a Module
When creating a new module, follow these steps:
- Create a module addon.
- Make a folder named myTag_addonName a create a config.cpp file in it.
- Inside, declare a CfgPatches class with your addon and its modules (in the units array). Without this, the game wouldn't recognize the addon.
- Make sure the addon and all objects start with your tag, e.g. myTag
- Select a module category
- Modules are placed into basic categories which makes finding a desired module easier for an user. Use can use on of the existing categories:
- Create config for module logic
- All in-game objects (soldiers, vehicles, buildings, logics, modules, ...) are defined in CfgVehicles class.
- All modules must inherit from Module_F parent class, either directly or through some additional sub-parent. While modules inherting from some other class will be still displayed in the Modules menu (F7), they won't be using the module framework and all benefits tied to it.
- Pre-defined sync preview entities are:
- Anything - Any object - persons, vehicles, static objects, etc.
- AnyPerson - Any person. Not vehicles or static objects.
- AnyVehicle - Any vehicle. No persons or static objects.
- AnyStaticObject - Any static object. Not persons or vehicles.
- AnyBrain - Any AI or player. Not empty objects
- AnyAI - Any AI unit. Not players or empty objects
- AnyPlayer - Any player. Not AI units or empty objects
- EmptyDetector - Any trigger
- Configure a module function
- Place class CfgFunctions to config.cpp. See Functions Library (Arma 3) for more info about functions configuration.
- Write the module function
- Create the functions folder within the addon folder and place *.sqf or *.fsm files there.
- Example: \myTag_addonName\functions\fn_moduleNuke.sqf
- Create a module icon
- Right click on the image on left and Save Image As' to get the default module icon.
- Create a simple icon presenting the module in the circle. Avoid using too much detail, as the icon may downsized in the game.
- Save the image to \myTag_addonName\data\iconNuke_ca.paa
class | displayName |
---|---|
Effects | Effects |
Events | Events |
Modes | Gameplay Modes |
GroupModifiers | Group Modifiers |
Intel | Intel |
NO_CATEGORY | Misc |
Multiplayer | Multiplayer |
ObjectModifiers | Object Modifiers |
Sites | Sites |
StrategicMap | Strategic |
Supports | Supports |
Alternatively, you can create your own one:
class CfgFactionClasses { class NO_CATEGORY; class myTag_explosions: NO_CATEGORY { displayName = "Explosions"; }; };
If you cannot or don't want to create a custom image, avoid using icon entry in the module config. The default icon will then be inherited from Module_F base class.