VERGELua API

BitBuffer

Read and write binary buffers — the payload of user messages.

bb:GetDataBitsLength():number

Length of the buffer in bits.

bb:GetDataBytesLength():number

Length of the buffer in bytes.

bb:Reset()

Reset the read and write positions.

bb:ReadByte():number, number

Read one byte; returns (value, current bit).

bb:ReadBit():number, number

Read one bit; returns (value, current bit).

bb:ReadFloat(bits?:number):number, number

Read a float; returns (value, current bit).

bb:ReadInt(bits?:number):number, number

Read an int; returns (value, current bit).

bb:ReadString(maxLen:number):string, number

Read a string; returns (value, current bit).

bb:GetCurBit():number

Current read position in bits.

bb:SetCurBit(bit:number)

Seek to a bit position.

bb:WriteBit(bit:number)

Write one bit.

bb:WriteByte(value:number)

Write one byte.

bb:WriteString(value:string)

Write a length-prefixed string.

bb:WriteInt(value:number, bits?:number)

Write an int with an optional bit count.

bb:WriteFloat(value:number, bits?:number)

Write a float; optional bit length defaults to 32.

bb:Delete()

Release the buffer's underlying data.

Examples

Read SayText2 chat

Parses the text of a SayText2 chat message (user message 4) out of its bit buffer.

callbacks.Register("DispatchUserMessage", function(um)
    if um:GetID() ~= E_UserMessage.SayText2 then return end

    local buf = um:GetBitBuffer()
    buf:ReadByte()          -- client index
    buf:ReadByte()          -- sender index
    local text = buf:ReadString(256)
    print("chat:", text)
end)