diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 04dedda..fa96331 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -13,6 +13,12 @@
"isBuildCommand": true,
"args": [ "-Build"]
},
+ {
+ "suppressTaskName": true,
+ "taskName": "Build All, Install and Run",
+ "isBuildCommand": true,
+ "args": [ "-Build", "-Install", "-Run"]
+ },
{
"suppressTaskName": true,
"taskName": "Install and Run Client (Arma 3)",
diff --git a/@AdminToolkit/addons/admintoolkit.pbo b/@AdminToolkit/addons/admintoolkit.pbo
index c682c2f..b2887a3 100644
Binary files a/@AdminToolkit/addons/admintoolkit.pbo and b/@AdminToolkit/addons/admintoolkit.pbo differ
diff --git a/@AdminToolkit/addons/admintoolkit.pbo.admintoolkit.bisign b/@AdminToolkit/addons/admintoolkit.pbo.admintoolkit.bisign
index 4ab1caf..5b75db6 100644
Binary files a/@AdminToolkit/addons/admintoolkit.pbo.admintoolkit.bisign and b/@AdminToolkit/addons/admintoolkit.pbo.admintoolkit.bisign differ
diff --git a/@AdminToolkitServer/addons/admintoolkit_server.pbo b/@AdminToolkitServer/addons/admintoolkit_server.pbo
index 26ec3cc..f7614f5 100644
Binary files a/@AdminToolkitServer/addons/admintoolkit_server.pbo and b/@AdminToolkitServer/addons/admintoolkit_server.pbo differ
diff --git a/@AdminToolkitServer/addons/admintoolkit_servercfg.pbo b/@AdminToolkitServer/addons/admintoolkit_servercfg.pbo
index b041595..8fc5458 100644
Binary files a/@AdminToolkitServer/addons/admintoolkit_servercfg.pbo and b/@AdminToolkitServer/addons/admintoolkit_servercfg.pbo differ
diff --git a/@MissionFile/Exile.Tanoa.pbo b/@MissionFile/Exile.Tanoa.pbo
index 106cde7..c2c3fa9 100644
Binary files a/@MissionFile/Exile.Tanoa.pbo and b/@MissionFile/Exile.Tanoa.pbo differ
diff --git a/README.MissionFile.md b/README.MissionFile.md
index fd62eab..7dfca09 100644
--- a/README.MissionFile.md
+++ b/README.MissionFile.md
@@ -81,45 +81,6 @@ Extensions[] = {
- Once the menu is selected, it searches for the sqf file "MyExtension.sqf" in `atk\extension\MyExtension.sqf`. So, lets create this now:
-```
-// atk\extension\MyExtension.sqf (located in MissionFile)
-private['_result'];
-disableSerialization;
-
-// add action command 'myext_hellotomyself' with the title 'Hello To Myself'
-// the third parameter "false" skips the permission check - so admin AND moderator is allowed to execute
-// NOTE: every action will be passed to the server with the command as unique identifier
-['Hello To Myself', 'myext_hellotomyself', false] call AdminToolkit_addAction;
-
-// add action to send something to server (REQUIRES SERVER SQF - Read more below!!! )
-['Hello Server', 'myext_helloserver', false] call AdminToolkit_addAction;
-
-
-// the callback, when "Run action" has been pressed
-MyExtensionCallback = {
- // AdminToolkit_Action is the current selected action
- // AdminToolkit_Selection is the current selection from the list (either "Item 1" or "Item 2" - defined below)
- // AdminToolkit_Params is the textbox where admin/moderator can enter addtional "parameters"
-
- if(AdminToolkit_Action == "myext_hellotomyself") then {
- // when myext_hellotomyself is the action, show a message to myself
- [format["Hello %1", name player]] call AdminToolkit_showMessage;
- };
-
- if(AdminToolkit_Action == "myext_helloserver") then {
- // REQUIRES SERVER SQF - Read more below!!!
- ['myext_helloserver', 'some secret text to the server'] call AdminToolkit_doAction;
- };
-};
-
-// when admin/moderator pressed the "Run action" button call the "MyExtensionCallback" code
-["MyExtensionCallback"] call AdminToolkit_onExecute;
-
-// show two list items when menu is selected
-_result = ["Item 1", "Item 2"];
-_result;
-```
-
As you can see, we have added to actions- The first (myext_hellotomyself) is a local call to showMessage only.
The second (and more interesting) action is passed to the server.
diff --git a/README.md b/README.md
index 5374407..71083fd 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
## AdminToolkit for Arma 3
-[](https://github.com/ole1986/a3-admintoolkit/releases)
+[](https://github.com/ole1986/a3-admintoolkit/releases)
[](https://github.com/ole1986)
[](http://www.exilemod.com/devblog/103-update-lemon-r34/)
[](https://dev.arma3.com/post/sitrep-00203)
diff --git a/setup.ps1 b/setup.ps1
index eba8ac6..624cda3 100644
--- a/setup.ps1
+++ b/setup.ps1
@@ -136,7 +136,8 @@ if($Install) {
Write-Host -ForegroundColor Green "DONE"
if($Run) {
Write-Host -NoNewline "Running Arma 3..."
- & "$GameFolder/arma3battleye.exe" 2 1 0 -exe arma3_x64.exe -nosplash -world=empty -skipIntro
+ Start-Process "$GameFolder/arma3battleye.exe" -ArgumentList '2','1','0','-exe arma3_x64.exe', '-mod="@Exile;@AdminToolkit"', '-nosplash', '-world empty', '-skipIntro'
+ #& "$GameFolder/arma3battleye.exe" 2 1 0 -exe arma3_x64.exe -mod="@Exile;@AdminToolkit" -nosplash -world=empty -skipIntro
Write-Host -ForegroundColor Green "DONE"
}
}
diff --git a/source/admintoolkit/bootstrap/fn_postInit.sqf b/source/admintoolkit/bootstrap/fn_postInit.sqf
index 767d68c..99303d5 100644
--- a/source/admintoolkit/bootstrap/fn_postInit.sqf
+++ b/source/admintoolkit/bootstrap/fn_postInit.sqf
@@ -7,17 +7,15 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_name'];
-
-missionNamespace setVariable ['AdminToolkit_MainMenu', ['Players', 'Vehicles', 'Weapons', 'Buildings', 'Other', 'Items']];
+missionNamespace setVariable ['AdminToolkit_MainMenu', ['Players', 'Weapons', 'Vehicles', 'Buildings', 'Items']];
// The current Menu selection
missionNamespace setVariable ['AdminToolkit_MenuIndex', nil];
-// take the selection from list
-missionNamespace setVariable ['AdminToolkit_Selection', nil];
// The current selected action
missionNamespace setVariable ['AdminToolkit_Action', nil];
+// The current detail view
+missionNamespace setVariable ['AdminToolkit_Detail', nil];
// the current parameters being executed (dependent on the action)
-missionNamespace setVariable ['AdminToolkit_Params', nil];
+missionNamespace setVariable ['AdminToolkit_Params', []];
// The current selected player (also used in spectator mode)
missionNamespace setVariable ['AdminToolkit_Player', nil];
// all player netIds received from server
@@ -34,7 +32,7 @@ missionNamespace setVariable ['AdminToolkit_permissionSet', []];
{
// make all IDC number easily accessible
// example "RscAdminToolkitTitle_IDC" returns the IDC of the Title of the dialog (which is 1900)
- _name = format["%1_IDC", configName _x];
+ private _name = format["%1_IDC", configName _x];
missionNamespace setVariable [_name , getNumber(_x >> "IDC")];
} forEach ("true" configClasses (configFile >> "AdminToolkitMenu"));
@@ -51,7 +49,7 @@ missionNamespace setVariable ['AdminToolkit_permissionSet', []];
(findDisplay 46) displayAddEventHandler ["KeyDown","call AdminToolkit_bindKeyEvents;"];
systemChat "Logging into AdminToolkit...";
- ['login'] call AdminToolkit_doAction;
+ ['login', "someRandomStuff1231"] call AdminToolkit_doAction;
};
diag_log "AdminToolkit postInit";
diff --git a/source/admintoolkit/bootstrap/fn_preInit.sqf b/source/admintoolkit/bootstrap/fn_preInit.sqf
index 768d91d..bb11973 100644
--- a/source/admintoolkit/bootstrap/fn_preInit.sqf
+++ b/source/admintoolkit/bootstrap/fn_preInit.sqf
@@ -7,12 +7,10 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private ['_code', '_function', '_file'];
-
{
- _code = '';
- _function = _x select 0;
- _file = _x select 1;
+ private _code = '';
+ private _function = _x select 0;
+ private _file = _x select 1;
_code = compileFinal preprocessFileLineNumbers _file;
@@ -26,8 +24,10 @@ forEach
['AdminToolkit_loadActions', 'admintoolkit\code\AdminToolkit_loadActions.sqf'],
['AdminToolkit_loadDetails', 'admintoolkit\code\AdminToolkit_loadDetails.sqf'],
['AdminToolkit_addMenu', 'admintoolkit\code\AdminToolkit_addMenu.sqf'],
+ ['AdminToolkit_addParam', 'admintoolkit\code\AdminToolkit_addParam.sqf'],
['AdminToolkit_doAction', 'admintoolkit\code\AdminToolkit_doAction.sqf'],
['AdminToolkit_onActionChanged', 'admintoolkit\code\AdminToolkit_onActionChanged.sqf'],
+ ['AdminToolkit_onDetailChanged', 'admintoolkit\code\AdminToolkit_onDetailChanged.sqf'],
['AdminToolkit_uiList', 'admintoolkit\code\AdminToolkit_uiList.sqf'],
['AdminToolkit_addAction', 'admintoolkit\code\AdminToolkit_addAction.sqf'],
['AdminToolkit_hasPermission', 'admintoolkit\code\AdminToolkit_hasPermission.sqf'],
diff --git a/source/admintoolkit/code/AdminToolkit_addAction.sqf b/source/admintoolkit/code/AdminToolkit_addAction.sqf
index 41c0fbb..c0faca4 100644
--- a/source/admintoolkit/code/AdminToolkit_addAction.sqf
+++ b/source/admintoolkit/code/AdminToolkit_addAction.sqf
@@ -7,12 +7,11 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_title', '_command', '_check', '_hasPerm', '_index'];
+params['_title', '_command', '_check'];
disableSerialization;
-_title = _this select 0;
-_command = _this select 1;
-_check = _this select 2;
+private _hasPerm = false;
+private _index = 0;
if(!(isNil "_check")) then {
// skip the permission check
diff --git a/source/admintoolkit/code/AdminToolkit_addMenu.sqf b/source/admintoolkit/code/AdminToolkit_addMenu.sqf
index f9a56bb..e60478e 100644
--- a/source/admintoolkit/code/AdminToolkit_addMenu.sqf
+++ b/source/admintoolkit/code/AdminToolkit_addMenu.sqf
@@ -7,10 +7,11 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_title', '_ext', '_index', '_code', '_size'];
+params['_title', '_ext'];
disableSerialization;
-_title = _this select 0;
+private _index = 0;
+private _code = {};
_index = lbAdd [RscAdminToolkitMainMenu_IDC, _title];
// if extension parameter is set, load the file!
diff --git a/source/admintoolkit/code/AdminToolkit_addParam.sqf b/source/admintoolkit/code/AdminToolkit_addParam.sqf
new file mode 100644
index 0000000..31eef6c
--- /dev/null
+++ b/source/admintoolkit/code/AdminToolkit_addParam.sqf
@@ -0,0 +1,20 @@
+params ['_value', '_pos'];
+
+if(!isNil "_pos") then {
+ _pos = parseNumber (_pos);
+};
+
+if(typeName AdminToolkit_Params != "ARRAY") then {
+ AdminToolkit_Params = [];
+};
+
+_size = (count AdminToolkit_Params);
+
+if(_size > 0 && !isNil "_pos") then {
+ if((_pos + 1) <= _size) then {
+ AdminToolkit_Params set [_pos, _value];
+ };
+} else {
+ AdminToolkit_Params pushBack _value;
+};
+
diff --git a/source/admintoolkit/code/AdminToolkit_bindKeyEvents.sqf b/source/admintoolkit/code/AdminToolkit_bindKeyEvents.sqf
index ab77d3c..55c6703 100644
--- a/source/admintoolkit/code/AdminToolkit_bindKeyEvents.sqf
+++ b/source/admintoolkit/code/AdminToolkit_bindKeyEvents.sqf
@@ -6,11 +6,12 @@
*
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-
-private['_handled'];
-_handled = false;
-switch (_this select 1) do
+params['_control','_keydown'];
+
+private _handled = false;
+
+switch (_keydown) do
{
// Function Key 2 (F2)
case 0x3C:
diff --git a/source/admintoolkit/code/AdminToolkit_doAction.sqf b/source/admintoolkit/code/AdminToolkit_doAction.sqf
index 11cd270..16e39bd 100644
--- a/source/admintoolkit/code/AdminToolkit_doAction.sqf
+++ b/source/admintoolkit/code/AdminToolkit_doAction.sqf
@@ -7,100 +7,53 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_action', '_selection', '_tmp', '_tmp2', '_IDC'];
+ /**
+ * _action STRING what action
+ * _params ARRAY array of parameters for the action
+ *
+ */
+params['_action', '_params'];
+
+private _tmp = '';
try {
- if(count _this > 0) then {
- _action = _this select 0;
- } else {
- _action = AdminToolkit_Action;
+ if(count _this < 1) then {
+ throw 'AdminToolkit_doAction requires at least one parameter';
};
-
- if(isNil "_action") throw "NO ACTION SELECTED";
- _IDC = RscAdminToolkitDetailList_IDC;
-
- if((count _this) > 1) then {
- _selection = _this select 1;
- } else {
- switch (_action) do
- {
- case 'login':
- {
- _selection = '';
- };
- case 'message':
- {
- _tmp = lbData [_IDC, lbCurSel _IDC];
- _selection = [_tmp, AdminToolkit_Params];
- };
- case 'messageall': {
- _selection = AdminToolkit_Params;
- };
- case 'givevehicle':
- {
- if(isNil "AdminToolkit_Player") then { throw "No player selected"; };
-
- _selection = [lbData [_IDC, lbCurSel _IDC], netId AdminToolkit_Player];
- };
- case 'removevehicle': {
- _selection = [lbData [_IDC, lbCurSel _IDC]];
- };
- case 'getweapon': {
- _tmp = lbData [_IDC, lbCurSel _IDC];
- _tmp2 = [_tmp] call AdminToolkit_weaponMagazine;
-
- // parameter 1: weapon class name or empty when already in inventory
- // parameter 2: compatible magazine
- _selection = [_tmp, _tmp2];
- };
- case 'getammo': {
- _tmp = lbData [_IDC, lbCurSel _IDC];
- _tmp2 = [_tmp] call AdminToolkit_weaponMagazine;
-
- // parameter 1: compatible magazine
- _selection = [_tmp2];
- };
- case 'giveammo': {
- _tmp = lbData [_IDC, lbCurSel _IDC];
+ switch(_action) do {
+ case 'message': {
+ _tmp = ctrlText RscAdminToolkitParam_IDC;
+ _params pushBack _tmp;
+ };
+ case 'messageall': {
+ _tmp = ctrlText RscAdminToolkitParam_IDC;
+ _params pushBack _tmp;
+ };
+ case 'spawn': {
+ _tmp = player modelToWorld [0,2, (position player) select 2];
+ _params pushBack _tmp;
+ };
+ case 'getweapon': {
+ _tmp = _params select 0;
+ _tmp = [_tmp] call AdminToolkit_weaponMagazine;
+
+ _params pushBack _tmp;
+ };
+ case 'getammo': {
+ _tmp = _params select 0;
+ _tmp = [_tmp] call AdminToolkit_weaponMagazine;
- systemChat format["Giving ammo to %1", _tmp];
- _selection = _tmp;
- };
- case 'spawn': {
- _tmp = lbData [_IDC, lbCurSel _IDC];
- _tmp2 = player modelToWorld [0,2, (position player) select 2];
-
- systemChat format["spawn: %1 %2", _tmp, str _tmp2];
- _selection = [_tmp, _tmp2];
- };
- case 'build': {
- _selection = lbData [_IDC, lbCurSel _IDC];
- };
- case 'buildpers': {
- AdminToolkitIsBuildingPersistent = true;
- _selection = lbData [_IDC, lbCurSel _IDC];
- };
- case 'buildremove': {
- _tmp = cursorObject;
- if !(isNull _tmp) then {
- _selection = [netId _tmp, getPosASL _tmp];
- } else {
- systemChat "No building found";
- _selection = nil;
- };
- };
- default
- {
- _selection = lbData [_IDC, lbCurSel _IDC];
- };
- };
+ _params = [_tmp];
+ };
};
- if !(isNil "_selection") then {
- [player, _action, _selection] remoteExecCall ['AdminToolkit_network_receiveRequest', 2];
+ if (!isNil "_params") then {
+ [player, _action, _params] remoteExecCall ['AdminToolkit_network_receiveRequest', 2];
systemChat format["Command '%1' executed", _action];
- AdminToolkit_LastAction = [_action, _selection];
+ AdminToolkit_LastAction = [_action, _params];
+ } else {
+ systemChat format["ERROR: No parameters for '%1'", _action];
};
} catch {
systemChat format['EXCEPTION: %1', _exception];
diff --git a/source/admintoolkit/code/AdminToolkit_hasPermission.sqf b/source/admintoolkit/code/AdminToolkit_hasPermission.sqf
index 76378a3..0e9f957 100644
--- a/source/admintoolkit/code/AdminToolkit_hasPermission.sqf
+++ b/source/admintoolkit/code/AdminToolkit_hasPermission.sqf
@@ -7,11 +7,10 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_action', '_permissionSet', '_result'];
-_action = _this select 0;
+params['_action'];
-_result = true;
-_permissionSet = missionNamespace getVariable ['AdminToolkit_permissionSet', []];
+private _result = true;
+private _permissionSet = missionNamespace getVariable ['AdminToolkit_permissionSet', []];
if((count _permissionSet > 0) && !(_action in _permissionSet)) then {
_result = false;
diff --git a/source/admintoolkit/code/AdminToolkit_initMenu.sqf b/source/admintoolkit/code/AdminToolkit_initMenu.sqf
index b0e4a9c..664e2c5 100644
--- a/source/admintoolkit/code/AdminToolkit_initMenu.sqf
+++ b/source/admintoolkit/code/AdminToolkit_initMenu.sqf
@@ -7,15 +7,13 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_display', '_extensions', '_IDC', '_i'];
disableSerialization;
-_display = findDisplay 40000;
+private _display = findDisplay 40000;
+private _extensions = getArray(missionConfigFile >> 'CfgAdminToolkitCustomMod' >> 'ExcludeMenu');
// show the title of its tool
(_display displayCtrl RscAdminToolkitTitle_IDC) ctrlSetStructuredText parseText "AdminToolkit Main Menu";
-_extensions = getArray(missionConfigFile >> 'CfgAdminToolkitCustomMod' >> 'ExcludeMenu');
-
// load the default menu into main menu combo box
{
if (_extensions find _x == -1) then {
@@ -35,10 +33,10 @@ if(isClass(missionConfigFile >> 'CfgAdminToolkitCustomMod')) then {
// quick access buttons QUICK 1 - 4 ( RscAdminToolkitQuickX_IDC )
if(isArray(missionConfigFile >> 'CfgAdminToolkitCustomMod' >> 'QuickButtons')) then {
- _i = 1;
+ private _i = 1;
_extensions = getArray(missionConfigFile >> 'CfgAdminToolkitCustomMod' >> 'QuickButtons');
{
- _IDC = missionNamespace getVariable format["RscAdminToolkitQuick%1_IDC", _i];
+ private _IDC = missionNamespace getVariable format["RscAdminToolkitQuick%1_IDC", _i];
ctrlSetText [_IDC, _x select 0];
buttonSetAction [_IDC, _x select 1];
_i = _i + 1;
@@ -51,9 +49,6 @@ if(!isNil "AdminToolkit_MenuIndex") then {
call AdminToolkit_loadActions;
};
-AdminToolkit_Selection = nil;
-AdminToolkit_Player = nil;
-
// hide the second list initially
false call AdminToolkit_toggleDetail;
@@ -67,6 +62,12 @@ if(!(isDamageAllowed player)) then {
(_display displayCtrl RscAdminToolkitActionLabel_IDC) ctrlSetStructuredText parseText "Pick an entry from Main Menu to display the actions";
};
+// Requesting players list
+[] spawn {
+ systemChat "Loading players...";
+ [player, 'getplayers'] remoteExecCall ['AdminToolkit_network_receiveRequest', 2];
+};
+
// hide the parameters edit field by default
(_display displayCtrl RscAdminToolkitParam_IDC) ctrlShow false;
@@ -77,8 +78,10 @@ if(!(isDamageAllowed player)) then {
(_display displayCtrl RscAdminToolkitEditAction_IDC) ctrlSetEventHandler ["KeyDown", "if ((_this select 1) == 0x1C or (_this select 1) == 0x9C) then { call AdminToolkit_loadActions };"];
// setup the event onLbSelChanged for the centered listbox
-//(_display displayCtrl RscAdminToolkitDetailList_IDC) ctrlSetEventHandler ['LBSelChanged', "call AdminToolkit_onListboxChanged"];
+(_display displayCtrl RscAdminToolkitDetailList_IDC) ctrlSetEventHandler ['LBSelChanged', "call AdminToolkit_onDetailChanged"];
(_display displayCtrl RscAdminToolkitEditDetail_IDC) ctrlSetEventHandler ["KeyDown", "if ((_this select 1) == 0x1C or (_this select 1) == 0x9C) then { call AdminToolkit_loadDetails };"];
(_display displayCtrl RscAdminToolkitParamLabel_IDC) ctrlSetStructuredText parseText "";
-(_display displayCtrl RscAdminToolkitParam_IDC) ctrlSetEventHandler ['KillFocus', "AdminToolkit_Params = ctrlText RscAdminToolkitParam_IDC"];
+
+// define the AdminToolkit_OnExecute event used by the Run button - overwritable by extensions
+buttonSetAction [RscAdminToolkitRun_IDC, 'call AdminToolkit_OnExecute'];
\ No newline at end of file
diff --git a/source/admintoolkit/code/AdminToolkit_loadActions.sqf b/source/admintoolkit/code/AdminToolkit_loadActions.sqf
index 1697c57..6390450 100644
--- a/source/admintoolkit/code/AdminToolkit_loadActions.sqf
+++ b/source/admintoolkit/code/AdminToolkit_loadActions.sqf
@@ -7,19 +7,21 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_filter','_display','_menuIndex', '_menuName', '_menuData', '_list', '_displayName'];
disableSerialization;
-_display = findDisplay 40000;
+
+private _display = findDisplay 40000;
+private _list = [];
+private _displayName = '(unknown)';
// receive the selected index and name from the Main Menu combobox
-_menuIndex = lbCurSel RscAdminToolkitMainMenu_IDC;
-_menuName = lbText [RscAdminToolkitMainMenu_IDC, _menuIndex];
-_menuData = lbData [RscAdminToolkitMainMenu_IDC, _menuIndex];
+private _menuIndex = lbCurSel RscAdminToolkitMainMenu_IDC;
+private _menuName = lbText [RscAdminToolkitMainMenu_IDC, _menuIndex];
+private _menuData = lbData [RscAdminToolkitMainMenu_IDC, _menuIndex];
AdminToolkit_MenuIndex = _menuIndex;
// ### Search filter
-_filter = ctrlText RscAdminToolkitEditAction_IDC;
+private _filter = ctrlText RscAdminToolkitEditAction_IDC;
if(_filter != "") then {
// search filter is set, so reset the textbox
ctrlSetText [RscAdminToolkitEditAction_IDC, ""];
@@ -35,15 +37,13 @@ lbSetCurSel [RscAdminToolkitActionList_IDC, -1];
false call AdminToolkit_toggleDetail;
-missionNamespace setVariable ['AdminToolkit_OnExecute', {AdminToolkit_Params = ctrlText RscAdminToolkitParam_IDC; [] call AdminToolkit_doAction;}];
+// Prepare the execution event used by the Run button event - overwritable by extensions
+missionNamespace setVariable ['AdminToolkit_OnExecute', { [AdminToolkit_Action, AdminToolkit_Params] call AdminToolkit_doAction; }];
_menuName = toLower _menuName;
switch (_menuName) do {
case "players": {
- // get player list from server while doing a receiveRequest
- [player, 'getplayers'] remoteExecCall ['AdminToolkit_network_receiveRequest', 2];
-
_list = [
["Send Message", "message"],
["Send Message to ALL", "messageall"],
@@ -74,20 +74,16 @@ switch (_menuName) do {
_list = [
["Build (temporary)", 'build'],
["Build (persistent)", 'buildpers'],
- ["Remove", "buildremove"],
+ ["Remove (nearby)", "buildremove"],
["Status", 'buildinfopersistent'],
["Save Persistent", 'savepersistent'],
["Clear Persistent", 'clearpersistent']
];
};
- case "other": {
- _list = [
- ["Spawn", 'spawn']
- ];
- };
case "items": {
_list = [
- ["Get Item", 'getitem']
+ ["Get Item", 'getitem'],
+ ["Spawn", 'spawn']
];
};
default {
@@ -111,7 +107,4 @@ switch (_menuName) do {
};
} forEach _list;
-// set execute button to di the action
-buttonSetAction [RscAdminToolkitRun_IDC, '[] call AdminToolkit_OnExecute'];
-
true;
\ No newline at end of file
diff --git a/source/admintoolkit/code/AdminToolkit_loadDetails.sqf b/source/admintoolkit/code/AdminToolkit_loadDetails.sqf
index b945f83..d751836 100644
--- a/source/admintoolkit/code/AdminToolkit_loadDetails.sqf
+++ b/source/admintoolkit/code/AdminToolkit_loadDetails.sqf
@@ -7,14 +7,16 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_filter','_display', '_list', '_tmp', '_tmp2', '_show', '_menuData', '_extCode'];
disableSerialization;
-_display = findDisplay 40000;
-_show = false;
+private _display = findDisplay 40000;
+private _show = false;
+private _list = [];
+private _tmp = '';
+private _tmp2 = '';
// ### Search filter
-_filter = ctrlText RscAdminToolkitEditDetail_IDC;
+private _filter = ctrlText RscAdminToolkitEditDetail_IDC;
if(_filter != "") then {
// search filter is set, so reset the textbox
ctrlSetText [RscAdminToolkitEditDetail_IDC, ""];
@@ -24,8 +26,10 @@ if(_filter != "") then {
// clear details list
lbClear RscAdminToolkitDetailList_IDC;
+lbSetCurSel [RscAdminToolkitDetailList_IDC, -1];
-switch (AdminToolkit_Action) do {
+switch (AdminToolkit_Detail) do {
+ case "_players";
case "message";
case "tp2player";
case "tpplayer";
@@ -41,6 +45,7 @@ switch (AdminToolkit_Action) do {
} forEach AdminToolkit_Players;
_show = true;
};
+ case "givevehicle";
case "getvehicle": {
_list = "((getText(_x >> 'VehicleClass') in ['Car', 'Armored', 'Air']) and (getNumber(_x >> 'scope') == 2))" configClasses (configFile >> "CfgVehicles");
[RscAdminToolkitDetailList_IDC, _list, _filter] call AdminToolkit_uiList;
@@ -63,6 +68,11 @@ switch (AdminToolkit_Action) do {
[RscAdminToolkitDetailList_IDC, _list, _filter] call AdminToolkit_uiList;
_show = true;
};
+ case "buildremove": {
+ _list = nearestObjects [player, ["House", "Building"], 50];
+ [RscAdminToolkitDetailList_IDC, _list, _filter] call AdminToolkit_uiList;
+ _show = true;
+ };
case "spawn": {
_list ="((configName _x isKindOf 'ReammoBox') and (getNumber(_x >> 'scope') == 2))" configClasses (configFile >> "CfgVehicles");
[RscAdminToolkitDetailList_IDC, _list, _filter] call AdminToolkit_uiList;
@@ -75,7 +85,6 @@ switch (AdminToolkit_Action) do {
};
case "messageall";
case "godmodeoff";
- case "givevehicle";
case "buildremove";
case "buildinfopersistent";
case "savepersistent";
@@ -85,8 +94,8 @@ switch (AdminToolkit_Action) do {
/* manage all non extension actions not listed above */
};
default {
- _menuData = lbData [RscAdminToolkitMainMenu_IDC, AdminToolkit_MenuIndex];
- _extCode = missionNamespace getVariable [format["%1_loadDetails", _menuData], ""];
+ private _menuData = lbData [RscAdminToolkitMainMenu_IDC, AdminToolkit_MenuIndex];
+ private _extCode = missionNamespace getVariable [format["%1_loadDetails", _menuData], ""];
if(typeName _extCode == "CODE") then {
systemChat format["Calling %1 action %2", _menuData, _value];
_show = [_filter] call _extCode;
diff --git a/source/admintoolkit/code/AdminToolkit_moveStart.sqf b/source/admintoolkit/code/AdminToolkit_moveStart.sqf
index 05060a3..5dd595a 100644
--- a/source/admintoolkit/code/AdminToolkit_moveStart.sqf
+++ b/source/admintoolkit/code/AdminToolkit_moveStart.sqf
@@ -6,12 +6,14 @@
*
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-
-private['_position', '_objectDistance', '_playerDir'];
+/**
+ * _netId STRING the netId of an object to be moved
+ */
+params['_netId'];
try {
// gather the object created from server through the netId
- AdminToolkitBuildingObject = objectFromNetId (_this select 0);
+ AdminToolkitBuildingObject = objectFromNetId _netId;
// if the object is null throw an exception before starting build progress
if (isNull AdminToolkitBuildingObject) then { throw "No object received from server"; };
diff --git a/source/admintoolkit/code/AdminToolkit_moveStop.sqf b/source/admintoolkit/code/AdminToolkit_moveStop.sqf
index b802960..e8ed555 100644
--- a/source/admintoolkit/code/AdminToolkit_moveStop.sqf
+++ b/source/admintoolkit/code/AdminToolkit_moveStop.sqf
@@ -7,9 +7,7 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_canceled'];
-
-_canceled = _this select 0;
+params['_canceled'];
if !(isNil "_canceled") then {
AdminToolkitIsBuilding = -1;
diff --git a/source/admintoolkit/code/AdminToolkit_moveThread.sqf b/source/admintoolkit/code/AdminToolkit_moveThread.sqf
index fc0731c..4674567 100644
--- a/source/admintoolkit/code/AdminToolkit_moveThread.sqf
+++ b/source/admintoolkit/code/AdminToolkit_moveThread.sqf
@@ -6,11 +6,10 @@
*
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-
-private['_position', '_vectorUp', '_rotation', '_vectorDirection'];
-
-_position = [0, 0, 0];
-_vectorUp = [0, 0, 1];
+private _position = [0, 0, 0];
+private _vectorUp = [0, 0, 1];
+private _rotation = 0;
+private _vectorDirection = [0,0,0];
while {AdminToolkitIsBuilding isEqualTo 1} do
{
@@ -27,10 +26,10 @@ while {AdminToolkitIsBuilding isEqualTo 1} do
// destroy the object when AdminToolkitBuildingObject is set to -1
if(AdminToolkitIsBuilding isEqualTo -1) then {
hint parseText "Construction aborted";
- [player, "buildabort", netId AdminToolkitBuildingObject] remoteExecCall ['AdminToolkit_network_receiveRequest', 2];
+ ['buildabort', [netId AdminToolkitBuildingObject]] call AdminToolkit_doAction;
} else {
- if (AdminToolkitIsBuildingPersistent) then {
- [player, "buildpersistent", [typeOf AdminToolkitBuildingObject, getPosASL AdminToolkitBuildingObject, getDir AdminToolkitBuildingObject]] remoteExecCall ['AdminToolkit_network_receiveRequest', 2];
+ if (!isNil "AdminToolkitIsBuildingPersistent") then {
+ ['buildpersistent', [netId AdminToolkitBuildingObject, _position, getDir AdminToolkitBuildingObject]] call AdminToolkit_doAction;
AdminToolkitIsBuildingPersistent = nil;
};
hint parseText "Construction placed";
diff --git a/source/admintoolkit/code/AdminToolkit_network_receiveResponse.sqf b/source/admintoolkit/code/AdminToolkit_network_receiveResponse.sqf
index 54e7afe..836ac26 100644
--- a/source/admintoolkit/code/AdminToolkit_network_receiveResponse.sqf
+++ b/source/admintoolkit/code/AdminToolkit_network_receiveResponse.sqf
@@ -7,14 +7,13 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private["_request", "_params", '_tmp', '_tmp2'];
+params["_request", "_params"];
+
+private _tmp = '';
+private _tmp2 = '';
+
try
-{
- _request = _this select 0; // what to do
- _params = _this select 1; // mixed value
-
- //systemChat format["[ADMINTOOLKIT]: networkResponse: %1", _request];
-
+{
switch(_request) do {
//system
case 'loginok': {
@@ -27,6 +26,7 @@ try
//player
case 'getplayers': {
missionNamespace setVariable ['AdminToolkit_Players', _params];
+ systemChat "Players loaded!";
};
case 'message': {
_params call AdminToolkit_showMessage;
@@ -38,18 +38,27 @@ try
[_params] call AdminToolkit_spectatePlayer;
};
//Building
- case 'buildpers';
+ case 'buildpers': {
+ AdminToolkitIsBuildingPersistent = true;
+ // the netId of its vehicle created from the server
+ [_params] call AdminToolkit_moveStart;
+ };
case 'build': {
// the netId of its vehicle created from the server
[_params] call AdminToolkit_moveStart;
};
case 'buildinfopersistent': {
- _tmp = _params select 1;
- if (isNil "_tmp") then {
- hint parseText "AdminToolkit
NOT SAVED YET";
- } else {
- hint parseText format["AdminToolkit
%1 persistent objects stored in serverProfile", str (_params select 0)];
+ _tmp = _params select 0;
+ _tmp2 = _params select 1;
+
+ private _text = "AdminToolkit
";
+
+ _text = _text + format["%1 persistent buildings stored on server", str _tmp];
+ if (!_tmp2) then {
+ _text = _text + "
NOT SAVED YET";
};
+
+ hint parseText _text;
};
case 'clearpersistent': {
hint parseText format["AdminToolkit
Persistent objects cleared
Buildings will be removed after server restart", str _params];
diff --git a/source/admintoolkit/code/AdminToolkit_onActionChanged.sqf b/source/admintoolkit/code/AdminToolkit_onActionChanged.sqf
index ed142d9..ca52954 100644
--- a/source/admintoolkit/code/AdminToolkit_onActionChanged.sqf
+++ b/source/admintoolkit/code/AdminToolkit_onActionChanged.sqf
@@ -7,17 +7,25 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_display','_index','_text', '_value'];
-_display = findDisplay 40000;
+/**
+ * _control CONTROL the listbox
+ * _index NUMBER the current selected index of the listbox
+ */
+params['_control', '_index'];
+private _display = findDisplay 40000;
+
+private _text = lbText [RscAdminToolkitActionList_IDC, _index];
+private _value = lbData [RscAdminToolkitActionList_IDC, _index];
-_index = lbCurSel RscAdminToolkitActionList_IDC;
-_text = lbText [RscAdminToolkitActionList_IDC, _index];
-_value = lbData [RscAdminToolkitActionList_IDC, _index];
+if(_index < 0) exitWith {};
AdminToolkit_Action = _value;
+AdminToolkit_Detail = _value;
+AdminToolkit_Params = [];
// hide the parameters edit field by default
(_display displayCtrl RscAdminToolkitParam_IDC) ctrlShow false;
+(_display displayCtrl RscAdminToolkitParam_IDC) ctrlSetText "";
(_display displayCtrl RscAdminToolkitRun_IDC) ctrlShow true;
(_display displayCtrl RscAdminToolkitRepeat_IDC) ctrlShow true;
@@ -55,12 +63,30 @@ switch (_value) do {
case 'godmodeoff': {
(_display displayCtrl RscAdminToolkitParamLabel_IDC) ctrlSetStructuredText parseText "IMPORTANT: Godmode works only for you";
};
- case 'buildremove';
case 'givevehicle': {
- (_display displayCtrl RscAdminToolkitParamLabel_IDC) ctrlSetStructuredText parseText "Temporary offline";
- (_display displayCtrl RscAdminToolkitRun_IDC) ctrlShow false;
- (_display displayCtrl RscAdminToolkitRepeat_IDC) ctrlShow false;
- };
+ (_display displayCtrl RscAdminToolkitDetailLabel_IDC) ctrlSetStructuredText parseText "Step 1: Select vehicle";
+ };
+ case 'build': {
+ (_display displayCtrl RscAdminToolkitDetailLabel_IDC) ctrlSetStructuredText parseText "Select a building";
+ (_display displayCtrl RscAdminToolkitParamLabel_IDC) ctrlSetStructuredText parseText "Tempoary buildings are gone after server restart";
+ };
+ case 'buildpers': {
+ (_display displayCtrl RscAdminToolkitDetailLabel_IDC) ctrlSetStructuredText parseText "Select a building";
+ (_display displayCtrl RscAdminToolkitParamLabel_IDC) ctrlSetStructuredText parseText "These buildings are stored in serverProfie";
+ };
+ case 'buildremove': {
+ (_display displayCtrl RscAdminToolkitDetailLabel_IDC) ctrlSetStructuredText parseText "Select a nearby building";
+ (_display displayCtrl RscAdminToolkitParamLabel_IDC) ctrlSetStructuredText parseText "PLEASE NOTE: Map related objects cannot be removed";
+ };
+ case 'buildinfopersistent': {
+ (_display displayCtrl RscAdminToolkitParamLabel_IDC) ctrlSetStructuredText parseText "Show information about persistent buildings";
+ };
+ case 'savepersistent': {
+ (_display displayCtrl RscAdminToolkitParamLabel_IDC) ctrlSetStructuredText parseText "Stores the buildings to keep after server restart";
+ };
+ case 'clearpersistent': {
+ (_display displayCtrl RscAdminToolkitParamLabel_IDC) ctrlSetStructuredText parseText "THIS WILL REMOVE ALL PERSISTENT BUILDINGS FROM ATK";
+ };
};
call AdminToolkit_loadDetails;
\ No newline at end of file
diff --git a/source/admintoolkit/code/AdminToolkit_onDetailChanged.sqf b/source/admintoolkit/code/AdminToolkit_onDetailChanged.sqf
new file mode 100644
index 0000000..d9bf5ed
--- /dev/null
+++ b/source/admintoolkit/code/AdminToolkit_onDetailChanged.sqf
@@ -0,0 +1,39 @@
+/**
+ * AdminToolkit
+ *
+ * Author: ole1986
+ * Website: https://github.com/ole1986/a3-admintoolkit
+ *
+ * This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
+ */
+
+/**
+ * _control CONTROL the listbox
+ * _index NUMBER the current selected index of the listbox
+ */
+params['_control', '_index'];
+
+private _display = findDisplay 40000;
+
+private _text = lbText [RscAdminToolkitDetailList_IDC, _index];
+private _value = lbData [RscAdminToolkitDetailList_IDC, _index];
+
+if(_index < 0) exitWith {};
+
+switch (AdminToolkit_Action) do {
+ case "givevehicle": {
+ if(count AdminToolkit_Params < 1) then {
+ [_value] call AdminToolkit_addParam;
+ AdminToolkit_Detail = '_players';
+ call AdminToolkit_loadDetails;
+ (_display displayCtrl RscAdminToolkitDetailLabel_IDC) ctrlSetStructuredText parseText "Step 2: Select player";
+ } else {
+ [_value] call AdminToolkit_addParam;
+ (_display displayCtrl RscAdminToolkitParamLabel_IDC) ctrlSetStructuredText parseText "Step 3: Press Run";
+ };
+ };
+ default {
+ AdminToolkit_Params = [];
+ [_value] call AdminToolkit_addParam;
+ };
+};
\ No newline at end of file
diff --git a/source/admintoolkit/code/AdminToolkit_spectatePlayer.sqf b/source/admintoolkit/code/AdminToolkit_spectatePlayer.sqf
index cc8c2a4..eb645b2 100644
--- a/source/admintoolkit/code/AdminToolkit_spectatePlayer.sqf
+++ b/source/admintoolkit/code/AdminToolkit_spectatePlayer.sqf
@@ -7,7 +7,7 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_player', '_info'];
+params['_player'];
if (!isNil "AdminToolkit_camera") then {
(findDisplay 46) displayRemoveEventHandler ["KeyDown", AdminToolkit_cameraKeyDownId];
@@ -19,10 +19,10 @@ if (!isNil "AdminToolkit_camera") then {
systemChat "Spectating stopped";
} else {
- AdminToolkit_Player = vehicle (_this select 0);
+ AdminToolkit_Player = vehicle _player;
// show user friendly message
- _info = "The following keyboard keys can be used
Q/E = first/3rd person, W/A/S/D = Change camera perspective, ESC = Stop spectating";
+ private _info = "The following keyboard keys can be used
Q/E = first/3rd person, W/A/S/D = Change camera perspective, ESC = Stop spectating";
[format["Spectating %1", name AdminToolkit_Player], _info] call AdminToolkit_showMessage;
systemChat format["Spectating %1", name AdminToolkit_Player];
diff --git a/source/admintoolkit/code/AdminToolkit_toggleDetail.sqf b/source/admintoolkit/code/AdminToolkit_toggleDetail.sqf
index 30acdf6..dfd49aa 100644
--- a/source/admintoolkit/code/AdminToolkit_toggleDetail.sqf
+++ b/source/admintoolkit/code/AdminToolkit_toggleDetail.sqf
@@ -1,7 +1,6 @@
-private ['_toggle', '_display'];
disableSerialization;
-_toggle = _this;
-_display = findDisplay 40000;
+private _toggle = _this;
+private _display = findDisplay 40000;
(_display displayCtrl RscAdminToolkitDetailList_IDC) ctrlShow _toggle;
(_display displayCtrl RscAdminToolkitEditDetail_IDC) ctrlShow _toggle;
diff --git a/source/admintoolkit/code/AdminToolkit_uiList.sqf b/source/admintoolkit/code/AdminToolkit_uiList.sqf
index 81d60c1..a57b886 100644
--- a/source/admintoolkit/code/AdminToolkit_uiList.sqf
+++ b/source/admintoolkit/code/AdminToolkit_uiList.sqf
@@ -7,17 +7,17 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_listboxId','_list', '_filter','_index', '_className', '_displayName', '_picture'];
+params['_listboxId','_list', '_filter'];
disableSerialization;
-// listbox IDC
-_listboxId = _this select 0;
-// array of config classes
-_list = _this select 1;
// string filter expression
-_filter = toLower (_this select 2);
-_picture = "";
+_filter = toLower _filter;
+
+private _index = nil;
+private _className = '';
+private _displayName = '';
+private _picture = '';
+
{
- _index = nil;
// get the weapon, vehicle, item CLASS name, like "B_Heli_Light_01_F"
if(typeName _x == "CONFIG") then {
_className = configName _x;
diff --git a/source/admintoolkit/code/AdminToolkit_weaponMagazine.sqf b/source/admintoolkit/code/AdminToolkit_weaponMagazine.sqf
index 303f47e..54b820d 100644
--- a/source/admintoolkit/code/AdminToolkit_weaponMagazine.sqf
+++ b/source/admintoolkit/code/AdminToolkit_weaponMagazine.sqf
@@ -7,10 +7,8 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_weaponClass', '_result'];
-_weaponClass = _this select 0;
-_result = '';
+params['_weaponClass'];
+private _result = '';
_result = getArray (configFile >> "CfgWeapons" >> _weaponClass >> "magazines");
-_result = _result select 0;
-_result;
\ No newline at end of file
+_result select 0;
\ No newline at end of file
diff --git a/source/admintoolkit_server/bootstrap/fn_preInit.sqf b/source/admintoolkit_server/bootstrap/fn_preInit.sqf
index dc74e33..b89ab9b 100644
--- a/source/admintoolkit_server/bootstrap/fn_preInit.sqf
+++ b/source/admintoolkit_server/bootstrap/fn_preInit.sqf
@@ -6,13 +6,12 @@
*
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-
-private ['_code', '_function', '_file'];
+
+private _code = '';
{
- _code = '';
- _function = _x select 0;
- _file = _x select 1;
+ private _function = _x select 0;
+ private _file = _x select 1;
_code = compileFinal (preprocessFileLineNumbers _file);
diff --git a/source/admintoolkit_server/code/AdminToolkit_loadProfile.sqf b/source/admintoolkit_server/code/AdminToolkit_loadProfile.sqf
index 72bc880..800dd3d 100644
--- a/source/admintoolkit_server/code/AdminToolkit_loadProfile.sqf
+++ b/source/admintoolkit_server/code/AdminToolkit_loadProfile.sqf
@@ -6,26 +6,25 @@
*
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-
-private['_section', '_create', '_result', '_name', '_pos', '_rot', '_obj', "_tmp"];
-_section = _this select 0;
-_create = _this select 1;
-_result = profileNamespace getVariable [format["ATK_PERSISTENT_%1", _section], []];
+params['_section', '_create'];
+
+private _result = profileNamespace getVariable [format["ATK_PERSISTENT_%1", _section], []];
if(_create) then {
switch (_section) do {
case "BUILDINGS": {
{
- _name = _x select 0;
- _pos = _x select 1;
- _rot = _x select 2;
+ private _name = _x select 0;
+ private _pos = _x select 1;
+ private _rot = _x select 2;
diag_log format["[ADMINTOOLKIT] createVehicle '%1' at pos '%2'", _name, str _pos];
- _obj = createVehicle [_name, _pos, [], 0, "CAN_COLLIDE"];
+ private _obj = createVehicle [_name, _pos, [], 0, "CAN_COLLIDE"];
+ _obj setVariable ["ATK_IsPersistent", true];
_obj setVariable ["BIS_enableRandomization", false];
- _obj setPosASL _pos;
_obj setDir _rot;
+ _obj setPosATL _pos;
} forEach _result;
};
default { };
diff --git a/source/admintoolkit_server/code/AdminToolkit_network_fetchPlayer.sqf b/source/admintoolkit_server/code/AdminToolkit_network_fetchPlayer.sqf
index adb9fed..e06ca0a 100644
--- a/source/admintoolkit_server/code/AdminToolkit_network_fetchPlayer.sqf
+++ b/source/admintoolkit_server/code/AdminToolkit_network_fetchPlayer.sqf
@@ -15,10 +15,10 @@
* Usage: [nil, true] call admintoolkit_fetchPlayer; // returns the player name only matching "playername" or nil
* Usage: call admintoolkit_fetchPlayer; // returns the array of all player units or nil if no player is available
*/
-private['_match', '_nameOnly', '_result'];
-_nameOnly = false;
-_match = '';
-_result = [];
+private _nameOnly = false;
+private _match = '';
+private _result = [];
+
if(typeName _this == "ARRAY") then {
_match = _this select 0;
if(count _this > 1) then { _nameOnly = _this select 1; };
diff --git a/source/admintoolkit_server/code/AdminToolkit_network_receiveRequest.sqf b/source/admintoolkit_server/code/AdminToolkit_network_receiveRequest.sqf
index 9c20070..f675546 100644
--- a/source/admintoolkit_server/code/AdminToolkit_network_receiveRequest.sqf
+++ b/source/admintoolkit_server/code/AdminToolkit_network_receiveRequest.sqf
@@ -6,25 +6,30 @@
*
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-
-private["_safepos","_payload","_adminList", "_moderatorList", "_moderatorCmds","_player","_request", "_params","_result", "_tmp", "_mod"];
-_payload = _this;
-_adminList = getArray(configFile >> "CfgSettings" >> "AdminToolkit" >> "AdminList");
-_moderatorList = getArray(configFile >> "CfgSettings" >> "AdminToolkit" >> "ModeratorList");
-_moderatorCmds = [];
-_result = true;
+
+/**
+ * _player OBJECT player
+ * _request STRING request
+ * _params ARRAY additional parameters
+ */
+params['_player', '_request', '_params'];
+
+private _adminList = getArray(configFile >> "CfgSettings" >> "AdminToolkit" >> "AdminList");
+private _moderatorList = getArray(configFile >> "CfgSettings" >> "AdminToolkit" >> "ModeratorList");
+private _moderatorCmds = [];
+private _result = true;
+private _tmp = '';
+private _mod = '';
+
try
{
- _player = _payload select 0;
- _request = _payload select 1; // what to do
- _params = _payload select 2; // an array of parameters
if !( getPlayerUID _player in (_adminList + _moderatorList) ) then {
['loginfailed', ''] remoteExecCall ['AdminToolkit_network_receiveResponse', owner _player];
throw format ["Player %1 with UID %2 does not have access", name _player, getPlayerUID _player];
};
- diag_log format ["[ADMINTOOLKIT] Calling %1 from player %2", _request, name _player];
+ diag_log format ["[ADMINTOOLKIT] Calling %1 from player %2, params: %3", _request, name _player, str _params];
// if its a moderator, check if commands is allowed
if ( getPlayerUID _player in _moderatorList ) then {
@@ -53,7 +58,7 @@ try
// initialize the spectator mode (client callback required)
// Example: [player, 'specplayer', netId]
case "specplayer": {
- _tmp = objectFromNetId _params;
+ _tmp = objectFromNetId (_params select 0);
if(!(isNil "_tmp") && (typeName _tmp == "OBJECT")) then {
[_request, netId _tmp] remoteExecCall ['AdminToolkit_network_receiveResponse', owner _player];
};
@@ -63,12 +68,11 @@ try
['message', [_params select 1, format["Sender: %1", name _player]]] remoteExecCall ['AdminToolkit_network_receiveResponse', owner _tmp];
};
case 'messageall': {
- diag_log format ["[ADMINTOOLKIT] messageall params: %1 ", _params];
- ['message', [_params, format["Sender: %1", name _player]]] remoteExecCall ['AdminToolkit_network_receiveResponse', -2];
+ ['message', [(_params select 0), format["Sender: %1", name _player]]] remoteExecCall ['AdminToolkit_network_receiveResponse', -2];
};
// Give ammo to selected player
case 'giveammo': {
- _tmp = objectFromNetId _params;
+ _tmp = objectFromNetId (_params select 0);
if (!(isNil "_tmp") && (typeName _tmp == "OBJECT")) then {
diag_log format ["[ADMINTOOLKIT] Giving ammo to %1", name _tmp];
_tmp addMagazines [(getArray (configFile >> 'CfgWeapons' >> primaryWeapon _tmp >> 'magazines') select 0), 1];
@@ -82,7 +86,7 @@ try
{
_tmp = getText(configFile >> "CfgSettings" >> "AdminToolkit" >> "ServerCommandPassword");
if(_tmp != "") then {
- _tmp serverCommand format["#kick %1", name (objectFromNetId _params)];
+ _tmp serverCommand format["#kick %1", name (objectFromNetId (_params select 0))];
};
};
// Ban player from server
@@ -91,14 +95,14 @@ try
{
_tmp = getText(configFile >> "CfgSettings" >> "AdminToolkit" >> "ServerCommandPassword");
if(_tmp != "") then {
- _tmp serverCommand format["#ban %1", name (objectFromNetId _params)];
+ _tmp serverCommand format["#ban %1", name (objectFromNetId (_params select 0))];
};
};
// Teleport the player defined in parameter 0 to players position defined in parameter 2
// Example: [player, 'tp2player', ]
case "tp2player":
{
- _tmp = objectFromNetId _params;
+ _tmp = objectFromNetId (_params select 0);
if(!isNil "_tmp") then {
_player setPosATL (getPosATL _tmp);
};
@@ -107,7 +111,7 @@ try
// Example: [player, 'tpplayer', ]
case "tpplayer":
{
- _tmp = objectFromNetId _params;
+ _tmp = objectFromNetId (_params select 0);
if(!isNil "_tmp") then {
_tmp setPosATL (position _player);
};
@@ -119,8 +123,8 @@ try
//search safe Position for Vehicle Teleport
if (vehicle _player != _player) then
{
- _safepos = [_params, 1, 20, 5, 1, 0, 0] call BIS_fnc_findSafePos;
- vehicle _player setPos _safepos;
+ _tmp = [_params, 1, 20, 5, 1, 0, 0] call BIS_fnc_findSafePos;
+ vehicle _player setPos _tmp;
} else {
_player setPos _params;
};
@@ -144,18 +148,18 @@ try
// Example: [player, 'getvehicle', ]
case "getvehicle": {
//find save position for the vehicle
- _safepos = [position _player, 1, 20, 5, 1, 0, 0] call BIS_fnc_findSafePos;
- _result = _params createVehicle _safepos;
+ _tmp = [position _player, 1, 20, 5, 1, 0, 0] call BIS_fnc_findSafePos;
+ _result = (_params select 0) createVehicle _tmp;
};
// spawn a vehicle at the position of another player
- // Example: [player, 'givevehicle', [, ]]
+ // Example: [player, 'givevehicle', [, ]]
case "givevehicle": {
_tmp = objectFromNetId (_params select 1);
if(!(isNil "_tmp")) then {
diag_log format ["[ADMINTOOLKIT] Giving vehicle %1 to %2 ", (_params select 0), name _tmp];
//find save position for the vehicle
- _safepos = [_tmp, 1, 50, 5, 1, 0, 0] call BIS_fnc_findSafePos;
- (_params select 0) createVehicle _safepos;
+ _mod = [_tmp, 1, 50, 5, 1, 0, 0] call BIS_fnc_findSafePos;
+ (_params select 0) createVehicle _mod;
};
};
// remove a vehicle using its netId as parameter
@@ -186,7 +190,8 @@ try
// add an item to admins inventory
// Example: [player, 'getitem', ]
case "getitem": {
- if (_params != "") then { _player addItem _params; };
+ _tmp = _params select 0;
+ if (typeName _tmp == "STRING") then { _player addItem _tmp; };
};
// spawn an object at a position defined in parameter 2
// Example: [player, 'spawn', [, ]]
@@ -200,15 +205,14 @@ try
// Example: [player, 'build', ]
case "buildpers";
case "build": {
- _tmp = createVehicle [_params, [0,0,1000], [], 0, "CAN_COLLIDE"];
+ _tmp = createVehicle [(_params select 0), [0,0,1000], [], 0, "CAN_COLLIDE"];
_tmp setVariable ["BIS_enableRandomization", false];
_tmp enableSimulationGlobal false;
_tmp allowDamage false;
+
_tmp removeAllEventHandlers "HandleDamage";
[_tmp, owner _player] spawn {
- private['_vehicle', '_owner'];
- _vehicle = _this select 0;
- _owner = _this select 1;
+ params['_vehicle', '_owner'];
_vehicle setOwner _owner;
diag_log format["[ADMINTOOLKIT] Setting owner %1 on vehicle %2", str _owner, str _vehicle];
};
@@ -217,17 +221,26 @@ try
};
// remoe building which is in player cursor position
case "buildremove": {
- _tmp = objectFromNetId _params;
- if !(isNull _tmp) then {
- ['BUILDINGS', (_params select 1)] call AdminToolkit_removePersistent;
- deleteVehicle _tmp;
- AdminToolkit_IsPersistentSaved = nil;
+ _tmp = objectFromNetId (_params select 0);
+ _mod = _tmp getVariable ["ATK_IsPersistent", false];
+
+ if (_mod) then {
+ ['BUILDINGS', (getPosATL _tmp)] call AdminToolkit_removePersistent;
+ AdminToolkit_IsPersistentSaved = false;
};
+
+ deleteVehicle _tmp;
};
-
case "buildpersistent": {
- ['BUILDINGS', _params] call AdminToolkit_savePersistent;
- AdminToolkit_IsPersistentSaved = nil;
+ _mod = objectFromNetId (_params select 0);
+ _mod setDir (_params select 2);
+ _mod setVectorUp [0,0,1];
+ _mod setPosATL (_params select 1);
+ _mod setVariable ["ATK_IsPersistent", true, true];
+ _mod setOwner 2;
+
+ ['BUILDINGS', [typeOf _mod, (_params select 1), (_params select 2)] ] call AdminToolkit_savePersistent;
+ AdminToolkit_IsPersistentSaved = false;
};
case "buildinfopersistent": {
[_request, [count AdminToolkit_Buildings, AdminToolkit_IsPersistentSaved]] remoteExecCall ['AdminToolkit_network_receiveResponse', owner _player];
@@ -249,7 +262,7 @@ try
};
// abort the build progress by deleting the vehicle just created
case "buildabort": {
- _tmp = objectFromNetId _params;
+ _tmp = objectFromNetId (_params select 0);
if !(isNull _tmp) then { deleteVehicle _tmp; };
};
// used for extensions
diff --git a/source/admintoolkit_server/code/AdminToolkit_removePersistent.sqf b/source/admintoolkit_server/code/AdminToolkit_removePersistent.sqf
index bc5dc4e..5cc414f 100644
--- a/source/admintoolkit_server/code/AdminToolkit_removePersistent.sqf
+++ b/source/admintoolkit_server/code/AdminToolkit_removePersistent.sqf
@@ -7,9 +7,9 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_section','_objectPos', '_pos', '_vectorDiff', '_index'];
-_section = _this select 0;
-_objectPos = _this select 1;
+params['_section','_objectPos'];
+
+private _index = 0;
switch (_section) do {
case "BUILDINGS": {
@@ -18,12 +18,12 @@ switch (_section) do {
} else {
_index = 0;
{
- _pos = _x select 1;
- _vectorDiff = _pos vectorDistance _objectPos;
+ private _pos = _x select 1;
+ private _vectorDiff = _pos vectorDistance _objectPos;
if(_vectorDiff < 0.3) exitWith {
// remove object where difference is less than 0.3
- diag_log format["[ADMINTOOLKIT]: '%1' removed from persistence", _x select 0];
+ diag_log format["[ADMINTOOLKIT]: Removed '%1' removed from persistence", str _x];
AdminToolkit_Buildings deleteAt _index;
};
diff --git a/source/admintoolkit_server/code/AdminToolkit_savePersistent.sqf b/source/admintoolkit_server/code/AdminToolkit_savePersistent.sqf
index c152564..7d48191 100644
--- a/source/admintoolkit_server/code/AdminToolkit_savePersistent.sqf
+++ b/source/admintoolkit_server/code/AdminToolkit_savePersistent.sqf
@@ -7,14 +7,12 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_section', '_value', '_pos', '_result'];
-_section = _this select 0;
-_value = _this select 1;
+params ['_section', '_value'];
switch (_section) do {
case "BUILDINGS": {
- if ((typeName _value == "ARRAY") and (count _value == 3) ) then {
- diag_log format["[ADMINTOOLKIT] Saving '%1' into '%2' ", str _value, _section];
+ if (typeName _value == "ARRAY" ) then {
+ diag_log format["[ADMINTOOLKIT] Saving '%1' to '%2'",str _value];
AdminToolkit_Buildings pushBackUnique _value;
}
};
diff --git a/source/admintoolkit_server/code/AdminToolkit_saveProfile.sqf b/source/admintoolkit_server/code/AdminToolkit_saveProfile.sqf
index ebfa91b..ace88e5 100644
--- a/source/admintoolkit_server/code/AdminToolkit_saveProfile.sqf
+++ b/source/admintoolkit_server/code/AdminToolkit_saveProfile.sqf
@@ -7,9 +7,6 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_result'];
-
-// save buildings into server profile
diag_log format["[ADMINTOOLKIT-DEBUG] : Storing %1 buildings...", count AdminToolkit_Buildings];
profileNamespace setVariable [format["ATK_PERSISTENT_%1", 'BUILDINGS'], AdminToolkit_Buildings];
diff --git a/source/admintoolkit_servercfg/extension/ExileMod.sqf b/source/admintoolkit_servercfg/extension/ExileMod.sqf
index 7794f3d..54bcbfe 100644
--- a/source/admintoolkit_servercfg/extension/ExileMod.sqf
+++ b/source/admintoolkit_servercfg/extension/ExileMod.sqf
@@ -7,13 +7,15 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_playerObject','_request', '_params', '_position', '_tmp', '_tmp2', '_object'];
-_playerObject = _this select 0;
-_request = _this select 1;
-_params = _this select 2;
+params['_playerObject','_request', '_params'];
-_result = true;
-try
+private _result = true;
+private _position = [];
+private _tmp = '';
+private _tmp2 = '';
+private _object = objNull;
+
+try
{
switch (_request) do {
case 'exile_getvehicle':
@@ -40,14 +42,12 @@ try
[_playerObject, "dynamicTextRequest", [format ["UNLOCK PIN: %1", _tmp2], 0, 2, "#ffffff"]] call ExileServer_system_network_send_to;
};
case 'exile_setvehiclepin': {
- _tmp = _params select 1;
_object = objectFromNetId (_params select 0);
- _object setVariable ["ExileAccessCode", _tmp];
- _object call ExileServer_object_vehicle_database_update;
-
- _tmp2 = typeof _object;
-
- [_playerObject, "toastRequest", ["SuccessTitleOnly", [format["PIN %1 set to %2", _tmp, _tmp2] ]]] call ExileServer_system_network_send_to;
+ _tmp = _params select 1;
+
+ _object setVariable ["ExileAccessCode",_tmp];
+ [_playerObject, "resetCodeResponse", [["SuccessTitleOnly", ["PIN changed successfully!"]], netId _object,_tmp]] call ExileServer_system_network_send_to;
+ [_object,_tmp] call ExileServer_object_vehicle_database_resetCode;
};
case 'exile_repvehicle':
{
diff --git a/source/admintoolkit_servercfg/extension/Furniture.sqf b/source/admintoolkit_servercfg/extension/Furniture.sqf
index 9e6a42a..93f5823 100644
--- a/source/admintoolkit_servercfg/extension/Furniture.sqf
+++ b/source/admintoolkit_servercfg/extension/Furniture.sqf
@@ -6,8 +6,4 @@
*
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_playerObject','_request', '_params'];
-_playerObject = _this select 0;
-_request = _this select 1;
-_params = _this select 2;
-
+params['_playerObject','_request', '_params'];
diff --git a/source/admintoolkit_servercfg/extension/VanillaAI.sqf b/source/admintoolkit_servercfg/extension/VanillaAI.sqf
index 8623b39..c2e29ff 100644
--- a/source/admintoolkit_servercfg/extension/VanillaAI.sqf
+++ b/source/admintoolkit_servercfg/extension/VanillaAI.sqf
@@ -7,14 +7,14 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_playerObject','_request', '_params', '_object', '_tmp'];
-_playerObject = _this select 0;
-_request = _this select 1;
-_params = _this select 2;
+params['_playerObject','_request', '_params'];
+
+private _object = objNull;
+private _tmp = '';
+private _result = true;
if(isNil "VanillaAI_Units") then { missionNamespace setVariable["VanillaAI_Units", []] };
-_result = true;
try
{
switch (_request) do {
diff --git a/source/mission_file/atk/extension/ExileMod.sqf b/source/mission_file/atk/extension/ExileMod.sqf
index 991000d..03b81dd 100644
--- a/source/mission_file/atk/extension/ExileMod.sqf
+++ b/source/mission_file/atk/extension/ExileMod.sqf
@@ -1,13 +1,10 @@
-private['_result'];
disableSerialization;
// overwrite the OnExecute code from AdminToolkit_OnExecute
AdminToolkit_OnExecute = {
- private ["_data"];
-
- AdminToolkit_Params = ctrlText RscAdminToolkitParam_IDC;
-
- _data = lbData [RscAdminToolkitDetailList_IDC, lbCurSel RscAdminToolkitDetailList_IDC];
+ private _object = objNull;
+ private _data = lbData [RscAdminToolkitDetailList_IDC, lbCurSel RscAdminToolkitDetailList_IDC];
+ private _userInput = ctrlText RscAdminToolkitParam_IDC;
switch (AdminToolkit_Action) do {
case "exile_repvehicle";
@@ -16,20 +13,20 @@ AdminToolkit_OnExecute = {
[AdminToolkit_Action, _data] call AdminToolkit_doAction;
};
case "exile_setvehiclepin": {
- [AdminToolkit_Action, [_data, AdminToolkit_Params]] call AdminToolkit_doAction;
+ [AdminToolkit_Action, [_data, _userInput]] call AdminToolkit_doAction;
};
case "exile_getvehicle": {
- [AdminToolkit_Action] call AdminToolkit_doAction;
+ [AdminToolkit_Action, _data] call AdminToolkit_doAction;
};
case 'exile_sendmoney';
case 'exile_sendscore': {
- [AdminToolkit_Action, [_data, parseNumber AdminToolkit_Params]] call AdminToolkit_doAction;
+ [AdminToolkit_Action, [_data, parseNumber _userInput]] call AdminToolkit_doAction;
};
case "exile_getmoney": {
- ['exile_getmoney', parseNumber AdminToolkit_Params] call AdminToolkit_doAction;
+ ['exile_getmoney', parseNumber _userInput] call AdminToolkit_doAction;
};
case "exile_getscore": {
- ['exile_getscore', parseNumber AdminToolkit_Params] call AdminToolkit_doAction;
+ ['exile_getscore', parseNumber _userInput] call AdminToolkit_doAction;
};
case "exile_getheal": {
['exile_getheal', ""] call AdminToolkit_doAction;
@@ -41,10 +38,11 @@ AdminToolkit_OnExecute = {
};
AdminToolkit_ExileMod_loadDetails = {
- private ["_filter","_list", "_show", '_tmp'];
+ params["_filter"];
- _filter = _this select 0;
- _show = false;
+ private _show = false;
+ private _list = [];
+ private _player = objNull;
switch (AdminToolkit_Action) do {
case "exile_destvehicle";
@@ -101,7 +99,7 @@ AdminToolkit_ExileMod_loadDetails = {
_show;
};
-_result = [
+[
['Repair (nearby)', 'exile_repvehicle'],
['Destroy (nearby)', 'exile_destvehicle'],
['Remove (nearby)', 'exile_delvehicle'],
@@ -112,6 +110,4 @@ _result = [
['Send Money to Player', 'exile_sendmoney'],
['Send Respect to Player', 'exile_sendscore'],
['Heal Me', 'exile_getheal']
-];
-
-_result;
\ No newline at end of file
+];
\ No newline at end of file
diff --git a/source/mission_file/atk/extension/Furniture.sqf b/source/mission_file/atk/extension/Furniture.sqf
index 9529f9a..2fb3137 100644
--- a/source/mission_file/atk/extension/Furniture.sqf
+++ b/source/mission_file/atk/extension/Furniture.sqf
@@ -5,33 +5,30 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_result'];
disableSerialization;
// overwrite the OnExecute code from AdminToolkit_OnExecute
-AdminToolkit_OnExecute = {
- private ["_data"];
-
- _data = lbData [RscAdminToolkitDetailList_IDC, lbCurSel RscAdminToolkitDetailList_IDC];
+AdminToolkit_OnExecute = {
+ private _data = lbData [RscAdminToolkitDetailList_IDC, lbCurSel RscAdminToolkitDetailList_IDC];
switch (AdminToolkit_Action) do {
case "fu_build": {
- ['build', _data] call AdminToolkit_doAction;
+ ['build', [_data]] call AdminToolkit_doAction;
};
case "fu_buildpers": {
- ['buildpers', _data] call AdminToolkit_doAction;
+ ['buildpers', [_data]] call AdminToolkit_doAction;
};
default {
- [AdminToolkit_Action] call AdminToolkit_doAction;
+ [AdminToolkit_Action, AdminToolkit_Params] call AdminToolkit_doAction;
};
};
};
AdminToolkit_Furniture_loadDetails = {
- private ["_filter","_list", "_show"];
+ params["_filter"];
- _filter = _this select 0;
- _show = false;
+ private _show = false;
+ private _list = [];
switch (AdminToolkit_Action) do {
case "fu_build";
@@ -44,13 +41,11 @@ AdminToolkit_Furniture_loadDetails = {
_show;
};
-_result = [
+[
["Build (temporary)", 'fu_build'],
["Build (persistent)", 'fu_buildpers'],
- ["Remove (Target)", "buildremove"],
+ ["Remove (nearby)", "buildremove"],
["Status", 'buildinfopersistent'],
["Save Persistent", 'savepersistent'],
["Clear Persistent", 'clearpersistent']
-];
-
-_result;
\ No newline at end of file
+];
\ No newline at end of file
diff --git a/source/mission_file/atk/extension/VanillaAI.sqf b/source/mission_file/atk/extension/VanillaAI.sqf
index 784968d..d605238 100644
--- a/source/mission_file/atk/extension/VanillaAI.sqf
+++ b/source/mission_file/atk/extension/VanillaAI.sqf
@@ -1,8 +1,9 @@
-private['_result', '_object', '_tmp'];
disableSerialization;
// overwrite the OnExecute code from AdminToolkit_OnExecute
AdminToolkit_OnExecute = {
+ private _object = objNull;
+
switch (AdminToolkit_Action) do {
case "vai_enemy": {
['vai_enemy', ""] call AdminToolkit_doAction;
@@ -25,10 +26,10 @@ AdminToolkit_OnExecute = {
};
AdminToolkit_VanillaAI_loadDetails = {
- private ["_filter","_list", "_show"];
+ params['_filter'];
- _filter = _this select 0;
- _show = false;
+ private _show = false;
+ private _list = [];
(_display displayCtrl RscAdminToolkitParamLabel_IDC) ctrlSetStructuredText parseText "Sorry, not fully implemented yet:";
@@ -37,27 +38,30 @@ AdminToolkit_VanillaAI_loadDetails = {
VanillaAI_UnitList = {
- private['_names', '_object'];
- _names = [];
+ params['_units'];
+
+ private _object = objNull;
+ private _names = [];
+
{
_object = objectFromNetId _x;
_names pushBack [name _object, _x];
- } forEach (_this select 0);
+ } forEach (_units);
_names;
};
"VanillaAI_Units" addPublicVariableEventHandler {
- private['_names'];
- _names = [_this select 1] call VanillaAI_UnitList;
+ params['_id','_unit'];
+
+ private _names = [_unit] call VanillaAI_UnitList;
lbClear RscAdminToolkitList_IDC;
[RscAdminToolkitList_IDC, _names, ""] call AdminToolkit_uiList;
};
-_result = [
+[
['New Enemy AI', 'vai_enemy'],
['New Friendly AI', 'vai_friend'],
['Attack Target', 'vai_attack'],
['Delete selected AI', 'vai_delete']
];
-_result;
\ No newline at end of file
diff --git a/source/mission_file/atk/system/AdminToolkit_receiveResponse.sqf b/source/mission_file/atk/system/AdminToolkit_receiveResponse.sqf
index 0d3f3e9..cd954f7 100644
--- a/source/mission_file/atk/system/AdminToolkit_receiveResponse.sqf
+++ b/source/mission_file/atk/system/AdminToolkit_receiveResponse.sqf
@@ -1,9 +1,6 @@
-private["_request", "_params", '_tmp'];
+params["_request", "_params"];
try
-{
- _request = _this select 0; // what to do
- _params = _this select 1; // mixed value
-
+{
switch(_request) do {
case 'message': {
_params call AdminToolkit_showMessage;
diff --git a/source/mission_file/atk/system/AdminToolkit_showMessage.sqf b/source/mission_file/atk/system/AdminToolkit_showMessage.sqf
index d30cec1..7a8af1d 100644
--- a/source/mission_file/atk/system/AdminToolkit_showMessage.sqf
+++ b/source/mission_file/atk/system/AdminToolkit_showMessage.sqf
@@ -7,20 +7,17 @@
* This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
*/
-private['_title', '_message', '_interval', '_display', '_control'];
+params['_title', '_message'];
disableSerialization;
-_display = findDisplay 46;
-_title = _this select 0;
-_message = _this select 1;
+private _display = findDisplay 46;
+private _interval = 10;
+private _control = (_display displayCtrl RscAdminToolkitMessage_IDC);
-_interval = 10;
if(count _this > 2) then {
_interval = _this select 2;
};
-_control = (_display displayCtrl RscAdminToolkitMessage_IDC);
-
_title = format["%1", _title];
_control ctrlSetStructuredText parseText format["%1
%2", _title, _message];
diff --git a/source/mission_file/atk/system/init.sqf b/source/mission_file/atk/system/init.sqf
index e39fa0b..cead586 100644
--- a/source/mission_file/atk/system/init.sqf
+++ b/source/mission_file/atk/system/init.sqf
@@ -5,9 +5,9 @@
// wait until main display has been loaded
[] spawn {
- private['_control', '_controlIDC', '_code'];
-
- _code = compileFinal preprocessFileLineNumbers 'atk\system\AdminToolkit_showMessage.sqf';
+ private _controlIDC = 1999;
+ private _code = compileFinal preprocessFileLineNumbers 'atk\system\AdminToolkit_showMessage.sqf';
+
missionNamespace setVariable ['AdminToolkit_showMessage', _code];
if(isNil "AdminToolkit_network_receiveResponse") then {
@@ -18,9 +18,7 @@
disableSerialization;
waitUntil {!isNull (findDisplay 46)};
- // create a structured text control
- _controlIDC = 1901;
- _control = (finddisplay 46) ctrlCreate ["RscStructuredText", _controlIDC];
+ private _control = (finddisplay 46) ctrlCreate ["RscStructuredText", _controlIDC];
_control ctrlSetPosition [0,0, 1,1];
_control ctrlCommit 0;
missionNamespace setVariable ['RscAdminToolkitMessage_IDC', _controlIDC];