using an @ isn't the same as using a ?
The ? is determined instantaneously (or pretty close) and is either true or false. Either way the script carries on with what it should be doing. A question also needs an outcome that will depend on whether the expression is true or false.
An @ forces the script to halt until the condition becomes true. Only then will the script continue. You don't need to define true/false outcomes since the script will not continue unless the expression is true. Therefore if you look at your command you should see the problem -
@(truck distance _RandomLogic) < 10
: Goto "GetAnotherPosition"[/i]
The last bit is totally redundant. What you should have is:
@(truck distance _RandomLogic) < 10
Goto "GetAnotherPosition"
I hope that makes some sort of sense.