Thanks for all the replies. I've gotten it to work with the following code:
emitBeacon = function(args)
local unitName = args[1]
local frequency = args[2]
local modulation = args[3]
local unit = Unit.getByName(unitName)
if unit then
local unitPosition = Unit.getPosition(unit).p
trigger.action.radioTransmission('l10n/DEFAULT/beacon.ogg', unitPosition, modulation, false, frequency, 1000)
timer.scheduleFunction(emitBeacon,{unitName,frequency,modulation},timer.getTime()+31)
end
end
timer.scheduleFunction(emitBeacon,{unitName,value.frequency,value.modulation},timer.getTime()+1)
beacon.ogg is the 30s long beacon audio file used by CTLD. The script sets up a radiotransmission at the unit's location. The position will be updated every 30 seconds. This works also in MP, but unfortunately often the audio file cannot be heard, but the homing still works.