mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
7ea2aab2c9
* Update PBO checking * Added kicking of clients without ACE loaded * Update fnc_errorMessage.sqf * Update fnc_checkVersionNumber.sqf * More compatibility for #9568 * Cleanup * Minor cleanup + added server source * update outdated/not present error message * check version number fixes * Update fnc_errorMessage.sqf * Changed error names Server is always right, client has either older or newer versions, or missing or additional addons * Improved ACE detection method * Tweaks and fixes * Try another approach * Update events-framework.md * Update XEH_postInit.sqf * Update fnc_checkVersionNumber.sqf * Removed check for non-ACE clients * Update XEH_postInit.sqf * Cleanup * Remove rogue change * Improved message display in systemChat * Update fnc_checkPBOs.sqf * Removed loop variable initialisers * Fixed header * Updated headers --------- Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com> Co-authored-by: LinkIsGrim <salluci.lovi@gmail.com>
75 lines
2.1 KiB
Plaintext
75 lines
2.1 KiB
Plaintext
#include "..\script_component.hpp"
|
|
/*
|
|
* Author: PabstMirror
|
|
* Diagnoses ACE install problems, this will only be called if there is a known problem.
|
|
*
|
|
* Arguments:
|
|
* None
|
|
*
|
|
* Return Value:
|
|
* ACE addons' WS IDs <HASHMAP>
|
|
*
|
|
* Example:
|
|
* [] call ace_common_fnc_checkFiles_diagnoseACE
|
|
*
|
|
* Public: No
|
|
*/
|
|
|
|
// Only run once
|
|
if (missionNameSpace getVariable [QGVAR(checkFiles_diagnoseACE), false]) exitWith {
|
|
createHashMap // return
|
|
};
|
|
|
|
GVAR(checkFiles_diagnoseACE) = true;
|
|
|
|
private _addons = CBA_common_addons select {(_x select [0, 4]) == "ace_"};
|
|
private _cfgPatches = configFile >> "CfgPatches";
|
|
private _allMods = createHashMap;
|
|
private _getLoadedModsInfo = getLoadedModsInfo;
|
|
|
|
// Check if ACE_ADDONs are in expected mod DIR
|
|
{
|
|
private _cfg = _cfgPatches >> _x;
|
|
private _actualModDir = configSourceMod _cfg;
|
|
private _expectedModDir = getText (_cfg >> "ACE_expectedModDir");
|
|
|
|
if (_expectedModDir == "") then {
|
|
_expectedModDir = "@ace";
|
|
};
|
|
|
|
private _expectedSteamID = getText (_cfg >> "ACE_expectedSteamID");
|
|
|
|
if (_expectedSteamID == "") then {
|
|
_expectedSteamID = "463939057"
|
|
};
|
|
|
|
(_allMods getOrDefault [_actualModDir, [], true]) pushBackUnique _expectedSteamID;
|
|
|
|
if (_actualModDir != _expectedModDir) then {
|
|
private _errorMsg = format ["%1 loading from unexpected modDir [%2]", _x, _actualModDir];
|
|
systemChat _errorMsg;
|
|
WARNING_1("%1",_errorMsg);
|
|
};
|
|
} forEach _addons;
|
|
|
|
// Check if all ACE ModDirs have expected steam WS ID
|
|
{
|
|
private _modDir = _x;
|
|
|
|
if (count _y != 1) then {
|
|
ERROR_2("Unexpected multiple steamIDs %1 - %2",_modDir,_y);
|
|
};
|
|
|
|
private _expectedSteamID = _y select 0;
|
|
private _index = _getLoadedModsInfo findIf {_x select 1 == _modDir};
|
|
(_getLoadedModsInfo param [_index, []]) params [["_modName", "$Error$"], "", "", "", "", "", "", ["_actualID", ""]];
|
|
|
|
if (_actualID != _expectedSteamID) then {
|
|
private _errorMsg = format ["%1 [%2] unexpected workshopID [%3]", _modDir, _modName, _actualID];
|
|
systemChat _errorMsg;
|
|
WARNING_1("%1",_errorMsg);
|
|
};
|
|
} forEach _allMods;
|
|
|
|
_allMods // return
|