Nope
It does that with default BIS soldiers as well... Only vehicles return 0 altitude on surface...
And:
Spaces between variables and operators are not so important, just do not write functions and/or variables together or they won't work
for example
?_playerheight>=1:goto "blah" works just fine...
in
this setPos [(getpos that select 0),(getpos that select 1),5]
you dont need those brackets ()...
Only when you + or - something from them you need the brackets, like:
this setPos [(getPos that select 0)+_someVarib,getPos this select 1,5]
But this is off the point...
To the original question; try this:
_playerheight = (getpos player) select 2
?_playerheight>=2:goto "collect"
Somethings require some bracket usage...
Of course not certain it will work but I'm quite sure that's the problem...
Otherwise this would be too odd