Sending Messages

Networking Updated: Dec 10, 2025

Sending Network Messages

Registration (Server Only)

Network strings must be registered on the server before use.

-- Single message
cLib.Net.Register("MyMessage")

-- Multiple at once
cLib.Net.RegisterMultiple({
    "SyncInventory",
    "UpdateStats",
    "ChatMessage",
    "PurchaseItem"
})

Server → Client Methods

Send to One Player

cLib.Net.Send(name, data, player)
cLib.Net.SendCompressed(name, data, player)  -- Force compression

Send to Multiple Players

local players = {ply1, ply2, ply3}
cLib.Net.SendMultiple(name, data, players)
cLib.Net.SendMultipleCompressed(name, data, players)

Broadcast to All

cLib.Net.Broadcast(name, data)
cLib.Net.BroadcastCompressed(name, data)

Other Methods

-- Send to all except one player
cLib.Net.SendExcept(name, data, excludePlayer)

-- Send to specific team
cLib.Net.SendTeam(name, data, TEAM_BLUE)

-- Send to players in PVS (can see position)
cLib.Net.SendPVS(name, data, position)

-- Send with RecipientFilter
local filter = RecipientFilter()
filter:AddAllPlayers()
cLib.Net.SendFilter(name, data, filter)

Client → Server Methods

-- Standard send
cLib.Net.SendToServer(name, data)
cLib.Net.Send(name, data)  -- Alias on client

-- Force compression
cLib.Net.SendToServerCompressed(name, data)

Complete Example

-- SERVER (sv_network.lua)
cLib.Net.SetPrefix("Shop.")
cLib.Net.RegisterMultiple({
    "SyncInventory",
    "Purchase",
    "PurchaseResult"
})

-- Send inventory on spawn
hook.Add("PlayerInitialSpawn", "Shop.Sync", function(ply)
    timer.Simple(1, function()
        if IsValid(ply) then
            local inventory = GetPlayerInventory(ply)
            cLib.Net.SendCompressed("SyncInventory", {
                items = inventory,
                money = ply:GetMoney()
            }, ply)
        end
    end)
end)

-- Handle purchase request
cLib.Net.Receive("Purchase", function(data, ply)
    local success = ProcessPurchase(ply, data.itemID)
    
    cLib.Net.Send("PurchaseResult", {
        success = success,
        itemID = data.itemID
    }, ply)
end)