diff --git a/addons/common/functions/fnc_numberToDigits.sqf b/addons/common/functions/fnc_numberToDigits.sqf index 465955b455..fe62ab626b 100644 --- a/addons/common/functions/fnc_numberToDigits.sqf +++ b/addons/common/functions/fnc_numberToDigits.sqf @@ -12,33 +12,29 @@ */ #include "script_component.hpp" -private ["_number", "_minLength", "_length", "_digits", "_index", "_count"]; +private ["_number", "_minLength", "_length", "_digits"]; _number = _this select 0; _minLength = _this select 1; _number = _number min 999999; -_length = floor (log _number + 1); -if !(isNil "_minLength") then {_length = (_length max _minLength) min 6}; +_number = str _number; + +_length = count _number; + +if (isNil "_minLength") then {_minLength = _length}; + +_minLength = _minLength min 6; + +while {_length < _minLength} do { + _number = "0" + _number; + _length = _length + 1; +}; _digits = []; - -if (_number < 1) exitWith { - for "_index" from 0 to (_length - 1) do { - _digits set [_index, 0]; - }; - _digits +for "_x" from 0 to (_length - 1) do { + _digits pushBack parseNumber (_number select [_x, 1]); }; -while { - _count = count _digits; - _count < _length -} do { - _digit = floor (_number / (10 ^ (_length - _count - 1))); - { - _digit = _digit - _x * (10 ^ (_count - _forEachIndex)); - } forEach _digits; - _digits set [_count, _digit]; -}; _digits diff --git a/addons/common/functions/fnc_numberToDigitsString.sqf b/addons/common/functions/fnc_numberToDigitsString.sqf index db4e33e6cb..24b3791d68 100644 --- a/addons/common/functions/fnc_numberToDigitsString.sqf +++ b/addons/common/functions/fnc_numberToDigitsString.sqf @@ -12,14 +12,24 @@ */ #include "script_component.hpp" -private ["_digits", "_count", "_string", "_index"]; +private ["_number", "_minLength", "_length"]; -_digits = _this call FUNC(numberToDigits); +_number = _this select 0; +_minLength = _this select 1; -_count = count _digits; +_number = _number min 999999; -_string = ""; -for "_index" from 0 to (_count - 1) do { - _string = _string + str (_digits select _index); +_number = str _number; + +_length = count _number; + +if (isNil "_minLength") then {_minLength = _length}; + +_minLength = _minLength min 6; + +while {_length < _minLength} do { + _number = "0" + _number; + _length = _length + 1; }; -_string + +_number