Message 0x4C

0x4C Structure

Type Description Offset
uint32_t type 0
uint16_t sub-type 4
uint16_t property 6
uint16_t acknowledge 8
uint16_t unknown 10 See Note
VentriloNetString value 12

The unknown value appears to be a random uint16_t as the transaction identifier. It is set by the client on the first packet of send or retrieve transactions, and all packets where not explicitly noted as 0x00 in the flow explanations below use the same value for unknown as the very first packet used, until the end of the transaction. The next transaction uses a new seemingly random value.

Subtypes

Sub-Type Description
0x00 Retrieving Setting
0x01 Sending Setting
0x02 Set Client Setting
0x03 Send Complete
0x04 All Done

Settings and Values

SettingName SizeValuesValue Special Notes
0x01 Retrieving See Notes (1)
0x02 Chat Filter 0x01 "0" or "1" 0=Global Chat 1=Channel Sent to all clients at join, or after updating, via subtype 0x02
0x03 Channel Order 0x01 "0" or "1" 0=Alphabetic 1=Manual Sent to all clients at join, or after updating, via subtype 0x02
0x05 MOTD Display 0x01 "0" or "1" 0=Skippable 1=Always Show Sent to all clients at join, or after updating, via subtype 0x02
0x07 Chat Spam Filter Variable X,Y,Z See Notes (2) Spam Filter Group
0x08 Comment Spam Filter Variable X,Y,Z See Notes (2) Spam Filter Group
0x09 Wave Spam Filter Variable X,Y,Z See Notes (2) Spam Filter Group
0x0A TTS Spam Filter Variable X,Y,Z See Notes (2) Spam Filter Group
0x0B User Inactivity Timeout Variable number Number in minutes, 0=None Inactivity Group
0x0C Inactivity Action 0x01 "0" or "1" 0=Disconnect 1=Move Channel Inactivity Group
0x0D Inactive Channel Variable path Name of channel to move to Inactivity Group - Path/To/Channel (does not include lobby)
0x0E Remote Server Comment 0x01 "0" or "1" checkbox false/true Remote Status Returns Group
0x0F Remote Channel Names 0x01 "0" or "1" checkbox false/true Remote Status Returns Group - False disables channel comments check
0x10 Remote Channel Comments 0x01 "0" or "1" checkbox false/true Remote Status Returns Group - Returns active state, disabled or not
0x11 Remote User Names 0x01 "0" or "1" checkbox false/true Remote Status Returns Group - False disables user comments check
0x12 Remote User Comments 0x01 "0" "1" checkbox false/true Remote Status Returns Group - Returns active state, disabled or not
0x13 Check point? 0x00 Size is 0, and value isn't sent, regardless of settings
0x14 Wave Bind Filter 0x01 "0" or "1" checkbox false/true Bind Filter Group
0x15 TTS Bind Filter 0x01 "0" or "1" checkbox false/true Bind Filter Group
0x16 Channel Spam Filter Variable X,Y,Z See Notes (2) Spam Filter Group
0x18 Remote Show Login Names 0x01 "0" or "1" checkbox false/true Remote Status Requires Group
0x19 Maximum Guest Logins Variable number Number of allowed guests Guest Logins Group
0x1A Autokick for X minutes Variable number Autokick duration Guest Logins Group
0x1B Autoban for X minutes Variable number Autoban duration Guest Logins Group
0x1C Retrieval done Sent as final packet of retrieval process only

Notes:

1 : Setting 0x01 is ONLY sent when starting a retrieval transaction. It is never sent with the other setting when sending changes.

2 : The 3 numbers in X,Y,Z are limited to choices from drop downs in a dialog in the Ventrilo Client
X = Action: 0 = Do Nothing, 1 = Kick, 2 = Ban
Y = Interval: 500, 750, 1000, 1500, 2000, 5000, 10000, 15000, 30000, 45000, 60000
Z = Times: 1, 2, 3, 4

Packet flow for Retrieving

-Transaction Begins-
Client Sends:
Type 0x4C - Subtype 0x00 - Setting 0x00 - Acknowledge 0x00 - Unknown
Server Responds:
Type 0x4C - Subtype 0x00 - Setting 0x00 - Acknowledge 0x01 - Unknown
Client Sends:
Type 0x4C - Subtype 0x00 - Setting 0x01 - Acknowledge 0x00 - Unknown
Server Responds:
Type 0x4C - Subtype 0x00 - Setting 0x01 - Acknowledge 0x01 - Unknown

Client Sends:
Type 0x4C - Subtype 0x00 - Setting 0x02 - Acknowledge 0x00 - Unknown
Server Responds:
Type 0x4C - Subtype 0x00 - Setting 0x02 - Acknowledge 0x00 - Unknown - Value

..repeat through settings 0x03 to 0x1B, changing only Setting number, then...

Client Sends
Type 0x4C - Subtype 0x00 - Setting 0x1C - Acknowledge 0x00 - Unknown 0x00
Server Responds
Type 0x4C - Subtype 0x00 - Setting 0x1C - Acknowledge 0x00 - Unknown 0x00

-Transaction Complete-

Packet flow for Sending

-Transaction Begins-
Client Sends:
Type 0x4C - Subtype 0x01 - Setting 0x02 - Acknowledge 0x00 - Unknown - Value
Server Responds:
Type 0x4C - Subtype 0x01 - Setting 0x02 - Acknowledge 0x00 - Unknown

..repeat through settings 0x03 to 0x1B, changing only Setting number, then...

Client Sends
Type 0x4C - Subtype 0x03 - Setting 0x00 - Acknowledge 0x00 - Unknown 0x00
Server Responds
Type 0x4C - Subtype 0x03 - Setting 0x00 - Acknowledge 0x00 - Unknown 0x00

Server Sends (to all users online)
Type 0x4C - Subtype 0x02 - Setting 0x02 - Acknowledge 0x00 - Unknown 0x00 - Value
Type 0x4C - Subtype 0x02 - Setting 0x03 - Acknowledge 0x00 - Unknown 0x00 - Value
Type 0x4C - Subtype 0x02 - Setting 0x05 - Acknowledge 0x00 - Unknown 0x00 - Value

Client Replies
Type 0x4C - Subtype 0x04 - Setting 0x00 - Acknowledge 0x00 - Unknown 0x00
-Transaction Complete-

Packet flow for Joining / Other users on server when they are updated

Type 0x4C - Subtype 0x02 - Setting 0x02 - Acknowledge 0x00 - Unknown 0x00 - Value
Type 0x4C - Subtype 0x02 - Setting 0x03 - Acknowledge 0x00 - Unknown 0x00 - Value
Type 0x4C - Subtype 0x02 - Setting 0x05 - Acknowledge 0x00 - Unknown 0x00 - Value