11// [] call compileScript ["\z\ace\addons\scopes\dev\checkScopes.sqf"];
22
33
4+ private _uniqueOptics = createHashMap;
45private _optics = " getNumber (_x >> 'scope') > 0" configClasses (configFile >> " CfgWeapons" );
56_optics = _optics select {(getNumber (_x >> ' ItemInfo' >> ' type' )) == 201 };
7+ _optics = _optics select {
8+ private _model = getText (_x >> " model" );
9+ private _configOffset = getNumber (_x >> " ACE_ScopeHeightAboveRail" );
10+ ! (_uniqueOptics set [[toLower _model , _configOffset ], true ])
11+ };
612diag_log text format [" ** Checking %1 scopes **" , count _optics ];
713
814private _fnc_checkConfig = {
@@ -33,17 +39,23 @@ private _fnc_checkConfig = {
3339 private _configOffset = getNumber (_config >> " ACE_ScopeHeightAboveRail" );
3440
3541 if ((abs (_actualOffset - _configOffset )) > 0.1 ) then {
36- diag_log text format [" Mismatch %1 - Actual %2 vs Config %3" , configName _config , _actualOffset , _configOffset ];
42+ private _parent = configName inheritsFrom _config ;
43+ diag_log text format [" Mismatch %1:%2 - Actual %3 vs Config %4" , configName _config , _parent , _actualOffset , _configOffset ];
3744 [_config , true ] call _fnc_checkConfig ;
3845 };
3946} forEach _optics ;
4047
4148
4249
4350
51+ private _uniqueRifles = createHashMap;
4452private _rifles = " getNumber (_x >> 'scope') > 0" configClasses (configFile >> " CfgWeapons" );
4553_rifles = _rifles select {(getNumber (_x >> ' type' )) == 1 };
46- _rifles = _rifles select {(configName _x ) == (getText (_x >> ' baseWeapon' ))};
54+ _rifles = _rifles select {
55+ private _model = getText (_x >> " model" );
56+ private _configOffset = getNumber (_x >> " ACE_RailHeightAboveBore" );
57+ ! (_uniqueRifles set [[toLower _model , _configOffset ], true ])
58+ };
4759diag_log text format [" ** Checking %1 weapons **" , count _rifles ];
4860
4961private _fnc_checkConfig = {
@@ -64,15 +76,27 @@ private _fnc_checkConfig = {
6476 deleteVehicle _weaponObj ;
6577 _xOffset
6678};
79+
6780{
6881 private _config = _x ;
69- if ((compatibleItems [configName _config , " CowsSlot" ]) isEqualTo []) then { continue }; // e.g. arifle_SDAR_F has no scopes
82+ private _slots = configProperties [_config >> " WeaponSlotsInfo" , " isClass _x" ];
83+ private _opticSlot = " CowsSlot" ;
84+ {
85+ if (getText (_x >> " linkProxy" ) == " \a3\data_f\proxies\weapon_slots\TOP" ) then {
86+ _opticSlot = configName _x ;
87+ };
88+ } forEach _slots ;
89+ if ((compatibleItems [configName _config , _opticSlot ]) isEqualTo []) then {
90+ diag_log text format [" note: %1 has no compatible items for %2" , configName _config , _opticSlot ];
91+ continue // e.g. arifle_SDAR_F has no scopes
92+ };
7093 private _actualOffset = [_config , false ] call _fnc_checkConfig ;
7194 if (_actualOffset == - 999 ) then { continue };
7295 private _configOffset = getNumber (_config >> " ACE_RailHeightAboveBore" );
7396
7497 if ((abs (_actualOffset - _configOffset )) > 0.1 ) then {
75- diag_log text format [" Mismatch %1 - Actual %2 vs Config %3" , configName _config , _actualOffset , _configOffset ];
98+ private _parent = configName inheritsFrom _config ;
99+ diag_log text format [" Mismatch %1:%2 - Actual %3 vs Config %4" , configName _config , _parent , _actualOffset , _configOffset ];
76100 [_config , true ] call _fnc_checkConfig ;
77101 };
78102} forEach _rifles ;
0 commit comments