There's no need for the "(Connections[GetConnIdx(Players[GetPlyIdx(AXO.PLID)].UniqueID)].UniqueID)" part btw, it's the same story as with MSO.UCID vs. Connections[GetConnIdx(MSO.UCID)].UniqueID.
"Players[GetPlyIdx(AXO.PLID)].UniqueID" would be all you need to return the UCID, the rest is just pointless CPU cycles. It mightn't make much of a difference here, but if you were to put something similar in an MCI function on a busy server, that's up to 1,024 wasted CPU cycles every 500ms, just to find one ID. That could mean 32,768 wasted cycles to ID each player on the server, just for a single function. Sorry if it seems I'm nitpicking, but it all adds up...
But that isn't causing the issue. If InSim sniffer isn't finding any AXO packets, your program isn't at fault. It might be a setting in LFS, I'm not sure. See if you're getting 2 second penalties for hitting the objects. If not, then LFS wouldn't send an AXO. It might be that LFS doesn't count it as a "true" autocross layout, and doesn't count hitting an object as a fault.