I think your right unitcapture is only OA so your stuck with the second method.
If you want to try it it would go like this.
Place your player on the map and in his init put store = [];what = player addaction ["Store", "Store.sqf"];
save as Store.sqf
while {true} do {
waituntil {(speed player != 0)};// wait until player is moving
store = store + [getpos player];// store player pos it store arrray
copyToClipboard (str store);// copy the array to the clip board so you can paste it later
sleep 1; // deleay to reduce the amount of data
hint format ["%1",store];// will display the x,y,z to the screen
};
To Play back the waypoints and set up a second unit as player and leave the original unit in position and change it's init line to null=[this] execvm "play.sqf";
You will need to paste the data from your clipboard and past it directly into the playback = line it should look like this but with more data points.
_playback = [[3552.26,3605.09,0.00143814],[3575.24,3606.41,0.00143814]];
save as play.sqf
_playback = // copy the data from clipboard to this position
_unit = _this select 0;
_countwaypoints = count _playback;
while {count _playback > 0} do {
_WP = group _unit addWaypoint [_playback select 0, 0];
_WP SetWaypointType "MOVE";
_playback set [0,-1];
_playback = _playback - [-1] ;
sleep 0.1;
};
The second script creates multiple waypoints using the data captured in Store, the usefulness could be extended I guess by adding more data to capture such as speed , behaviour direction ect.