Module Framework – Arma 3
Jump to navigation
Jump to search
(Created page with "Category:Arma_3:_Editing Arma 3 introduces a module framework, which lets designer to simplify the configuration and chose how the module function will be executed (e.g., gl...") |
mNo edit summary |
||
Line 122: | Line 122: | ||
<li><big>'''Configure module function'''</big></li> | <li><big>'''Configure a module function'''</big></li> | ||
* Place '' class CfgFunctions'' to ''config.cpp''. See [[Functions Library (Arma 3)]] for more info about functions configuration. | * Place '' class CfgFunctions'' to ''config.cpp''. See [[Functions Library (Arma 3)]] for more info about functions configuration. | ||
class CfgFunctions | class CfgFunctions | ||
Line 141: | Line 141: | ||
* 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, | _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))}} | ||
_units = [_this,1,[],[[]]] call | _units = [_this,1,[],[[]]] call BIS_fnc_param; | ||
{{codecomment|// True when the module was activated, false when it's deactivated (i.e., synced triggers are no longer active)}} | {{codecomment|// True when the module was activated, false when it's deactivated (i.e., synced triggers are no longer active)}} | ||
_activated = [_this,2,true,[true]] call | _activated = [_this,2,true,[true]] call BIS_fnc_param; | ||
{{codecomment|// Module specific behavior. Function can extract arguments from logic and use them.}} | {{codecomment|// Module specific behavior. Function can extract arguments from logic and use them.}} | ||
Line 157: | Line 157: | ||
<li><big>'''Create module | <li><big>'''Create a module icon</big></li> | ||
<div style="background-color:grey; width:64px; height:64px; float:left; margin-right:30px;"> | <div style="background-color:grey; width:64px; height:64px; float:left; margin-right:30px;"> | ||
[[File:IconModule_ca.png]]</div> | [[File:IconModule_ca.png]]</div> |
Revision as of 16:03, 17 July 2013
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
- 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
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.