Curator – Arma 3
mNo edit summary |
mNo edit summary |
||
Line 31: | Line 31: | ||
* Output: <code>[array1, array2, array3, ... arrayN]</code> | * Output: <code>[array1, array2, array3, ... arrayN]</code> | ||
'''Example''': | '''Example''': | ||
* Input (3 classes): <code>[" | * Input (3 classes): <code>["B_Soldier_F", "B_MRAP_01_F", "ModuleLightning_F"]</code> | ||
* Output (3 arrays with settings): <code>[[true,0.1], [true,0.5,0.6], [false,0,0]]</code> | * Output (3 arrays with settings): <code>[[true,<span style="color:green">0.1</span>], [true,0.5,0.6], [false,0,0]]</code> | ||
Line 63: | Line 63: | ||
Once you assigned cost to every object, you can now use it for every action curator can perform. | Once you assigned cost to every object, you can now use it for every action curator can perform. | ||
myCurator [[setCuratorCoef]] ["place",<span style="color:darkorange">-0.2</span>]; | |||
If some object, for example BLUFOR soldier "B_Soldier_F" from the previous example, will have assigned cost <span style="color:green">0.1</span>, cost for placing will be: | |||
:<big>''<span style="color:green">0.1</span> * <span style="color:darkorange">-0.2</span> = -0.02''</big> | |||
If curator have full points (value is 1), it means he can build 50 BLUFOR soldiers. While individual object costs cannot be changed on the fly, coefficient can be easily used to tweak all costs. | |||
Available actions are: | |||
* "place" | |||
* "edit" | |||
* "delete" | |||
* "destroy" | |||
* "group" | |||
* "synchronize" | |||
Additionally, while action can be disabled by assigning large negative coefficient, e.g., -10000. Trying to perform the action will then result in onscreen warning for curator. | |||
Revision as of 09:54, 18 February 2014
Curator is a technical name for Arma 3 Zeus game master system. Every involved scripting command, event handler or class name contains the name. The reason for it is to have a generic name which can be passed from project to project without any associations.
Setup
The central piece of every curator is Game Master module, otherwise referred to as Curator Logic. It stores every setting, like editing areas, available objects or their costs.
You can find the module in Modules (F7) > Zeus > Game Master
In module arguments, can set the curator unit (either specific unit, player with given UID or server admin) and that's all you need to add game master to your mission. Without any further settings, all objects will be available for free and whole map will be editable.
In every examples on this page, we'll call the module myCurator.
Costs
Mission designer can assign cost to every object curator can interact with. The cost is applied when performing actions like placing, editing or deleting. It affects curator's resources - points - which are in range from 0 (no points) to 1 (full points; can't be larger than this value). The cost can be both negative and positive, so some actions can actually add points (e.g., deleting).
Manual Assigning
You can assign individual cost for every object in the game using CuratorObjectRegistered event handler. It's executed when player enters curator interface, so individual values cannot be changed on the fly. However, you can still tweak costs using action coefficients and available objects by unlocking addons.
myCurator addEventHandler ["CuratorObjectRegistered",{...code here, see below...}];
Arguments passed into the handler are:
Expected returned value is an Array of Arrays of the same size as the input array, with each item belonging to a class with the same array index. Missing or incorrect values will be replaced by default [true,0,0].
- Input:
[string1, string2, string3, ... classN]
- Output:
[array1, array2, array3, ... arrayN]
Example:
- Input (3 classes):
["B_Soldier_F", "B_MRAP_01_F", "ModuleLightning_F"]
- Output (3 arrays with settings):
[[true,0.1], [true,0.5,0.6], [false,0,0]]
Every item in the array is in the following format:
[show, cost, (costWithCrew)]
- show: Boolean - true to let the object appear in the CREATE list, false to hide it (costs will still be accepted if an object of the type is already present in the mission and made editable)
- cost: Number - cost of the object
- costWithCrew (Optional): Number - cost of the object with crew in it (affects only vehicles). When undefined, normal cost is used.
Example of the whole event handler:
myCurator addEventHandler [ "CuratorObjectRegistered", { _classes = _this select 1; _costs = []; { _cost = if (_x isKindOf "Man") then {[true,0.1]} else {[false,0]}; // Show only objects of type "Man", hide everything else _costs = _costs + [_cost]; } forEach _classes; // Go through all classes and assign cost for each of them _costs } ];
Automated Assigning
Alternatively, you can use scripting functions which will simplify cost settings:
- Set cost of specific objects by BIS_fnc_curatorObjectRegistered, with crew costs calculated automatically based on vehicle cost + cost of all crew members.
- Export object list to a spreadsheet using BIS_fnc_exportCuratorCostTable, set values there and use them in the game again using BIS_fnc_curatorObjectRegisteredTable
Action Coefficients
Once you assigned cost to every object, you can now use it for every action curator can perform.
myCurator setCuratorCoef ["place",-0.2];
If some object, for example BLUFOR soldier "B_Soldier_F" from the previous example, will have assigned cost 0.1, cost for placing will be:
- 0.1 * -0.2 = -0.02
If curator have full points (value is 1), it means he can build 50 BLUFOR soldiers. While individual object costs cannot be changed on the fly, coefficient can be easily used to tweak all costs.
Available actions are:
- "place"
- "edit"
- "delete"
- "destroy"
- "group"
- "synchronize"
Additionally, while action can be disabled by assigning large negative coefficient, e.g., -10000. Trying to perform the action will then result in onscreen warning for curator.