getPos – Talk
Hello. There is one command missing in the list shown here and in other sites:
getVel
I have NO idea which version this came out from, but I've seen it thanks to one boy -I really can't recall where I got his script- who has done a personal bombing script. I've then tried myself to change some stuff of his and noticed this command that isn't listed in major sites! It works just like getPos; I myself still have to learn it properly, and am still far away from being good in scripts.
If anyone has more info 'bout this, PLEASE post what you know! Thanks.
- Oh... I'm sorry, my bad; I'll try that out! Thanks a lot for answering Mr. Spanel. --Deusrexmachina 18:12, 17 August 2006 (CEST)
Arma 3
Altis
If I use getpos (ex. getpos player) the X and Y only has 1 digit behind the dot. If I examine the mission.sqm file, there are up to 4 digits after the dot.
Stratis
If I use getpos (ex. getpos player) the X and Y only has 2 digit behind the dot. If I examine the mission.sqm file, there are up to 4 digits after the dot.
This is very inaccurate
Anyone else has the same behaviour? If there are more with the same behaviour, I would go and open a issue @feedback.
--HeliJunkie 20:51, 10 December 2013 (CET)
This has something to do with the number format in Arma. You can only have 6 digits doesn't matter integer or float. For example 999999 is the biggest number you can have before it starts to get rounded, and -999999 is the smallest. If you go float then the smaller the number the better precision: 9.99999, 99.9999, 999.999, 9999.99, 99999.9. The unfortunate thing about this number handling is that the further away you are from the origin of the map [0,0,0] the worse the position precision.
--Killzone_Kid 13 December 2013
Hey, thanks for that hint! It has to do with formating a number to a string (not (only) with the internaly number format).
Try this code:
_num = 123456.123456789; _num2 = 0; if (_num >= 0) then { // strip "0." after modulo (_num % 1 => 0.125) _num2 = [str(_num % 1), 2] call BIS_fnc_trimString; } else { // strip "-0." after modulo (for negative numbers) _num2 = [str(_num % 1), 3] call BIS_fnc_trimString; }; _numString = format["%1.%2",(round _num), _num2]; hint format["Default: %1\nNumString: %2",_num, _numString];
Result should be:
Default: 123456 NumString: 123456.125
This is a little bit closer to the real number
More examples:
12345.123456789 => 12345.123047 1234.123456789 => 1234.123413 123.123456789 => 123.123459 12.123456789 => 12.123457
So of course there is already the limit of 6 digits while formating the number after the dot.
--HeliJunkie 22:19, 13 December 2013 (CET)
Good one! I went in a slightly different way, completely forgot about % and as a result managed to achieve even better precision
2518.51 default number to string 2518.512695 using modulo 2518.51268555 using my method
The only thing is it is easier to store this precision as 2 strings rather than 1. Going to put this method on my blog tomo if you are interested.
--Killzone_Kid 13 December 2013