Used in circumstances where you must monitor a client-side hook and send the data server-side. This allows you to increase the progress on a group of achievements that all do the same thing with different numbers.
If the hook can be ran server-side, then there's no reason to use this feature. Hook will execute and count all achievements of the same type together.
// server scope functionXTASK.onServer = function( id,id_hook,path )local network_id =sf( 'xtask_cl_sv_ach_%s', id ) util.AddNetworkString( network_id ) net.Receive( network_id, function( len,pl )local ach_id = net.ReadString( )local val = net.ReadUInt( 32 )local family = mod:GetFamily( XTASK.family )if XTASK.family andistable( family ) thenfor k, v inpairs( family ) do pl:ach_execute( mod:GetByID( v.id ), val )endelse pl:ach_execute( mod:GetByID( ach_id ), val )endend )end// client scope functionXTASK.onClient = function( id,id_hook,path )local network_id =sf( 'xtask_cl_sv_ach_%s', id )/* count SpawnMenu toggles */local count =0localfunctionspawnmenu_onOpen( ply,mdl,ent ) count = count +1end hook.Add( 'SpawnMenuOpen', id_hook, spawnmenu_onOpen )/* network */local timer_id =sf( 'xtask_cl_ach_%s', id_hook ) timex.create( timer_id, 15, 0, function( )ifnotisstring( id ) thenreturnend count =isnumber( count ) and count or0 net.Start( network_id ) net.WriteString( id ) net.WriteUInt( count, 32 ) net.SendToServer( ) count =0end )end