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 compressionSend 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)