The second EnumBalls parameter is not used. “Order” was supposed to give script developers the ability to define the desired order, but no one was interested in using it.
xBAM.ball will always point to ball in last event. So, any hit event will change it. If in same physics frame 2 hits occured, for two _hit procedures it will be different ball.
In v382 this is also updated on ball creation.
So, if in script you use "xBAM.Ball" it is valid for short time, but if you store that value in global variable, that variable will be valid always (until you change it) or ball will be destroyed.