/* * Author: VKing, PabstMirror * Gets a 10-digit map grid for the given world position * * Arguments: * 0: Position (2D Position) * 1: Return type; false for array of easting and northing, true for single string (default: false) * * Return Value: * 0: Easting * 1: Northing * * Example: * [getPos player] call ace_common_fnc_getMapGridFromPos * * Public: Yes */ #include "script_component.hpp" params ["_pos", ["_returnSingleString", false]]; private ["_nativeGrid", "_count", "_easting", "_northing"]; //Fallback, when map data is weird (letters) if (GVAR(mapGridData) isEqualTo []) exitWith { _nativeGrid = mapGridPosition _pos; if (_returnSingleString) then { _nativeGrid } else { _count = floor ((count _nativeGrid) / 2); [_nativeGrid select [0, _count], _nativeGrid select [_count, _count]] }; }; GVAR(mapGridData) params ["_offsetX", "_realOffsetY", "_stepXat5", "_stepYat5"]; _easting = floor (((_pos select 0) - _offsetX) / _stepXat5); _northing = floor (((_pos select 1) - _realOffsetY) / _stepYat5); //Attempt to handle negative east/north (e.g.: moving west of map bounds) if (_easting > 0) then { _easting = str _easting; while {count _easting < 5} do {_easting = "0" + _easting}; } else { _easting = str abs _easting; while {count _easting < 4} do {_easting = "0" + _easting}; _easting = "-" + _easting; }; if (_northing > 0) then { _northing = str _northing; while {count _northing < 5} do {_northing = "0" + _northing}; } else { _northing = str abs _northing; while {count _northing < 4} do {_northing = "0" + _northing}; _northing = "-" + _northing; }; if (_returnSingleString) then { _easting + _northing } else { [_easting, _northing] }; // return