User:Monster Iestyn/SRB2 Network Documentation
Jump to navigation
Jump to search
![]() |
This article or section is incomplete. It doesn't have all of the necessary core information on this topic. Please help the SRB2 Wiki by finishing this article. |
Stuff possibly to go in SRB2 network documentation and pages related.
Packet types & info
PT_SERVERCFG
Data name | Data type | Description | Sample data | Sample meaning |
---|---|---|---|---|
(header) | 8 bytes | The required header for all SRB2 packets. | No example | |
version
|
Unsigned 8-bit Integer | The VERSION of SRB2 the game is running. This usually corresponds to the first two digits of the version string.
|
210 (0xD2 )
|
Corresponds to the 2.1 in version 2.1.20. |
subversion
|
Unsigned 8-bit Integer | The SUBVERSION of SRB2 the game is running. This usually corresponds to the last digit(s) of the version string.
|
20 (0x14 )
|
Corresponds to the 20 in version 2.1.20. |
serverplayer
|
Unsigned 8-bit Integer | The number of the server player's node on the server. This is usually the first node, node 0. (?) | 0 (0x00 )
|
The server player is using node 0. |
totalslotnum
|
Unsigned 8-bit Integer | The number of node slots used in the server currently (?); this is the highest player number in use plus one. | 2 (0x00 )
|
There are two node slots in use in the server. The highest player number in use is currently 1. |
gametic
|
Unsigned 32-bit Integer | The game tic currently being run. This is not the level time in tics, but a separate variable related to ticcmds (?). | ||
clientnode
|
Unsigned 8-bit Integer | The number of the node the client recieving the PT_SERVERCFG packet will use when joining the server. This is determined by the server on receiving a PT_CLIENTJOIN packet from the client beforehand, getting the first node that is free (i.e. not used in-game). | 1 (0x01 )
|
The client will be using node 1 in the server. |
gamestate
|
Unsigned 8-bit Integer | The number of the current game state; e.g.: 1 indicates a level is being played, 2 indicates the server is currently at an intermission screen. A list of all game states can be found here; the numbers are not given but can be deduced from the order of the named constants. | 1 (0x01 )
|
A level is currently being played. |
playerskins
|
32-byte array of 8-bit Integers | An array containing the skins that all 32 nodes in the server are using, in numeric form. A value of 255 indicates a node is not used. | No example | |
playercolors
|
32-byte array of 8-bit Integers | An array containing the skin colors that all 32 nodes in the server are using, in numeric form. A value of 255 indicates a node is not used. | No example | |
gametype
|
Unsigned 8-bit Integer | The current gametype. A list of gametype numbers can be found here. | 3 (0x03 )
|
The server is playing Match. |
modifiedgame
|
Unsigned 8-bit Integer | Is the game modified or not? Set to 1 if the game is modified, 0 if not. | 0 (0x00 )
|
The game is not modified. |
adminplayers
|
32-byte array of signed 8-bit Integers | An array containing the player numbers of up to 32 promoted or logged-in admins on the server. A value of -1 indicates the admin slot is not used. | No example | |
server_context
|
8-byte String | The unique context string for the server. This is randomly generated by the server, containing a mix of uppercase and uppercase letters. | No example | |
varlengthinputs
|
Header for variable length input | From this point onwards, player names and netvars (console variables with the CV_NETVAR flag) are saved into the packet.
|
No example |
PT_CLIENTCMD/PT_CLIENTMIS
Data name | Data type | Description | Sample data | Sample meaning |
---|---|---|---|---|
(header) | 8 bytes | The required header for all SRB2 packets. | No example | |
client_tic
|
Unsigned 8-bit Integer | |||
resendfrom
|
Unsigned 8-bit Integer | |||
consistancy
|
Signed 16-bit Integer | |||
cmd
|
8-byte ticcmd_t structure
|
No example |
PT_CLIENT2CMD/PT_CLIENT2MIS
Data name | Data type | Description | Sample data | Sample meaning |
---|---|---|---|---|
(header) | 8 bytes | The required header for all SRB2 packets. | No example | |
client_tic
|
Unsigned 8-bit Integer | |||
resendfrom
|
Unsigned 8-bit Integer | |||
consistancy
|
Signed 16-bit Integer | |||
cmd
|
8-byte ticcmd_t structure
|
No example | ||
cmd2
|
8-byte ticcmd_t structure
|
No example |
PT_NODEKEEPALIVE/PT_NODEKEEPALIVEMIS
Data name | Data type | Description | Sample data | Sample meaning |
---|---|---|---|---|
(header) | 8 bytes | The required header for all SRB2 packets. | No example | |
client_tic
|
Unsigned 8-bit Integer | |||
resendfrom
|
Unsigned 8-bit Integer |
PT_SERVERTICS
Data name | Data type | Description | Sample data | Sample meaning |
---|---|---|---|---|
(header) | 8 bytes | The required header for all SRB2 packets. | No example | |
starttic
|
Unsigned 8-bit Integer | |||
numtics
|
Unsigned 8-bit Integer | |||
numslots
|
Unsigned 8-bit Integer | |||
cmds
|
Variable length array of 8-byte ticcmd_t structures
|
The number of ticcmd_t structures sent is numtics × numslots .
|
No example | |
textcmds | Variable amount of extra data | The list of net commands sent by each player currently in-game, for each tic sent. | No example |
PT_SERVERREFUSE
Data name | Data type | Description | Sample data | Sample meaning |
---|---|---|---|---|
(header) | 8 bytes | The required header for all SRB2 packets. | No example | |
reason
|
Variable length String | The message giving the reason for the client being refused to join. Length is the length of the message plus one byte for the null terminator – maximum is 255 bytes. | "You have been banned\nfrom the server" | The client is banned from the server. |
PT_SERVERSHUTDOWN/PT_CLIENTQUIT
Data name | Data type | Description | Sample data | Sample meaning |
---|---|---|---|---|
(header) | 8 bytes | The required header for all SRB2 packets. | No example |
PT_ASKINFOVIAMS
Data name | Data type | Description | Sample data | Sample meaning |
---|---|---|---|---|
(header) | 8 bytes | The required header for all SRB2 packets. | No example | |
clientaddr
|
22-byte String | The IP address to send PT_SERVERINFO/PT_PLAYERINFO packets back to. | ||
time
|
Unsigned 32-bit Integer | Whatever information is put here will be returned in the time section of the PT_SERVERINFO reply. This can be used to check for validity, and check pings.
|
99035 (0x000182DB )
|
An example of a timestamp that the Master Server Analyzer uses. |
PT_RESYNCHEND
Data name | Data type | Description | Sample data | Sample meaning |
---|---|---|---|---|
(header) | 8 bytes | The required header for all SRB2 packets. | No example | |
randomseed
|
Unsigned 32-bit Integer | |||
flagplayer
|
2-byte array of 8-bit Integers | |||
flagloose
|
2-byte array of 32-bit Integers | |||
flagflags
|
2-byte array of 32-bit Integers | |||
flagx
|
2-byte array of 32-bit Integers | |||
flagy
|
2-byte array of 32-bit Integers | |||
flagz
|
2-byte array of 32-bit Integers | |||
ingame
|
Unsigned 32-bit Integer | |||
ctfteam
|
32-byte array of 32-bit Integers | |||
score
|
32-byte array of 32-bit Integers | |||
numboxes
|
32-byte array of 16-bit Integers | |||
totalring
|
32-byte array of 16-bit Integers | |||
realtime
|
32-byte array of 32-bit Integers | |||
laps
|
32-byte array of 8-bit Integers |
PT_RESYNCHGET
Data name | Data type | Description | Sample data | Sample meaning |
---|---|---|---|---|
(header) | 8 bytes | The required header for all SRB2 packets. | No example | |
playernum
|
Unsigned 8-bit Integer |
PT_FILEFRAGMENT
Data name | Data type | Description | Sample data | Sample meaning |
---|---|---|---|---|
(header) | 8 bytes | The required header for all SRB2 packets. | No example | |
fileid
|
Unsigned 8-bit integer | |||
position
|
Unsigned 32-bit integer | The first 31 bits indicate the position of the file fragment in the full file.
The 32nd bit ( |
||
size
|
Unsigned 16-bit integer | The size of the file fragment sent, in bytes. | ||
data
|
Header for variable length input | No example |
PT_TEXTCMD/PT_TEXTCMD2
Data name | Data type | Description | Sample data | Sample meaning |
---|---|---|---|---|
(header) | 8 bytes | The required header for all SRB2 packets. | No example | |
size | Unsigned 8-bit Integer | The amount of extra data to be sent, in bytes. | ||
extra data | Variable amount of extra data | A list of net commands to be sent. See below for more info. | No example |
extra data structure
Data name | Data type | Description | Sample data | Sample meaning |
---|---|---|---|---|
id | Unsigned 8-bit Integer | The type of the net command sent (see Net commands > List of net commands) | 1 (0x01 )
|
The extra data sent is for a XD_NAMEANDCOLOR net command.
|
params | Variable amount of raw data | The net command's parameters buffer, written to an 8-bit integer array. The contents of this vary depending on the type of net command being sent. | No example |
PT_CLIENTJOIN
Data name | Data type | Description | Sample data | Sample meaning |
---|---|---|---|---|
(header) | 8 bytes | The required header for all SRB2 packets. | No example | |
version
|
Unsigned 8-bit Integer | The VERSION of SRB2 the game is running. This usually corresponds to the first two digits of the version string.
|
210 (0xD2 )
|
Corresponds to the 2.1 in version 2.1.20. |
subversion
|
Unsigned 8-bit Integer | The SUBVERSION of SRB2 the game is running. This usually corresponds to the last digit(s) of the version string.
|
20 (0x13 )
|
Corresponds to the 20 in version 2.1.20. |
localplayers
|
Unsigned 8-bit Integer | The number of local players requesting to join. If playing with splitscreen mode or with a bot, this is set to 2. Otherwise, this is set to 1. Note: it is not possible for two players to join a netgame through the same client, so in this context only 1 is valid. |
1 (0x01 )
|
One local player is requesting to join. |
mode
|
Unsigned 8-bit Integer | Unused (?) | No example |
PT_RESYNCHING
Data name | Data type | Description | Sample data | Sample meaning |
---|---|---|---|---|
(header) | 8 bytes | The required header for all SRB2 packets. | No example | |
playernum
|
Unsigned 8-bit Integer | |||
playerstate
|
Unsigned 8-bit Integer | |||
pflags
|
Unsigned 32-bit Integer | |||
panim
|
Unsigned 8-bit Integer | |||
aiming
|
Unsigned 32-bit Integer | |||
currentweapon
|
Signed 32-bit Integer | |||
ringweapons
|
Signed 32-bit Integer | |||
powers
|
23-byte array of 16-bit Integers | |||
health
|
Signed 32-bit Integer | |||
lives
|
Signed 8-bit Integer | |||
continues
|
Signed 8-bit Integer | |||
scoreadd
|
Unsigned 8-bit Integer | |||
xtralife
|
Signed 8-bit Integer | |||
pity
|
Signed 8-bit Integer | |||
skincolor
|
Unsigned 8-bit Integer | |||
skin
|
Signed 32-bit Integer | |||
normalspeed
|
Signed 32-bit Integer | |||
runspeed
|
Signed 32-bit Integer | |||
thrustfactor
|
Unsigned 8-bit Integer | |||
accelstart
|
Unsigned 8-bit Integer | |||
acceleration
|
Unsigned 8-bit Integer | |||
charability
|
Unsigned 8-bit Integer | |||
charability2
|
Unsigned 8-bit Integer | |||
charflags
|
Unsigned 32-bit Integer | |||
thokitem
|
Unsigned 32-bit Integer | |||
spinitem
|
Unsigned 32-bit Integer | |||
revitem
|
Unsigned 32-bit Integer | |||
actionspd
|
Signed 32-bit Integer | |||
mindash
|
Signed 32-bit Integer | |||
maxdash
|
Signed 32-bit Integer | |||
jumpfactor
|
Signed 32-bit Integer | |||
speed
|
Signed 32-bit Integer | |||
jumping
|
Unsigned 8-bit Integer | |||
secondjump
|
Unsigned 8-bit Integer | |||
fly1
|
Unsigned 8-bit Integer | |||
glidetime
|
Unsigned 32-bit Integer | |||
climbing
|
Unsigned 8-bit Integer | |||
deadtimer
|
Signed 32-bit Integer | |||
exiting
|
Unsigned 32-bit Integer | |||
homing
|
Unsigned 8-bit Integer | |||
skidtime
|
Unsigned 32-bit Integer | |||
cmomx
|
Signed 32-bit Integer | |||
cmomy
|
Signed 32-bit Integer | |||
rmomx
|
Signed 32-bit Integer | |||
rmomy
|
Signed 32-bit Integer | |||
weapondelay
|
Signed 32-bit Integer | |||
tossdelay
|
Signed 32-bit Integer | |||
starpostx
|
Signed 16-bit Integer | |||
starposty
|
Signed 16-bit Integer | |||
starpostz
|
Signed 16-bit Integer | |||
starpostnum
|
Signed 32-bit Integer | |||
starposttime
|
Unsigned 32-bit Integer | |||
starpostangle
|
Unsigned 32-bit Integer | |||
maxlink
|
Signed 32-bit Integer | |||
dashspeed
|
Signed 32-bit Integer | |||
dashtime
|
Signed 32-bit Integer | |||
angle_pos
|
Unsigned 32-bit Integer | |||
old_angle_pos
|
Unsigned 32-bit Integer | |||
bumpertime
|
Unsigned 32-bit Integer | |||
flyangle
|
Signed 32-bit Integer | |||
drilltimer
|
Unsigned 32-bit Integer | |||
linkcount
|
Signed 32-bit Integer | |||
linktimer
|
Unsigned 32-bit Integer | |||
anotherflyangle
|
Signed 32-bit Integer | |||
nightstime
|
Unsigned 32-bit Integer | |||
drillmeter
|
Signed 32-bit Integer | |||
drilldelay
|
Unsigned 8-bit Integer | |||
bonustime
|
Unsigned 8-bit Integer | |||
mare
|
Unsigned 8-bit Integer | |||
lastsidehit
|
Signed 16-bit Integer | |||
lastlinehit
|
Signed 16-bit Integer | |||
losstime
|
Unsigned 32-bit Integer | |||
timeshit
|
Unsigned 8-bit Integer | |||
onconveyor
|
Signed 32-bit Integer | |||
hasmo
|
Unsigned 8-bit Integer | Does the player currently have a body? Set to 1 if the player's object currently exists in-game, 0 if not. Note: if the player's object does not exist, the remainder of this structure after this setting should be ignored. |
||
angle
|
Unsigned 32-bit Integer | |||
x
|
Signed 32-bit Integer | |||
y
|
Signed 32-bit Integer | |||
z
|
Signed 32-bit Integer | |||
momx
|
Signed 32-bit Integer | |||
momy
|
Signed 32-bit Integer | |||
momz
|
Signed 32-bit Integer | |||
friction
|
Signed 32-bit Integer | |||
movefactor
|
Signed 32-bit Integer | |||
tics
|
Signed 32-bit Integer | |||
statenum
|
Unsigned 32-bit Integer | |||
flags
|
Unsigned 32-bit Integer | |||
flags2
|
Unsigned 32-bit Integer | |||
eflags
|
Unsigned 16-bit Integer | |||
radius
|
Signed 32-bit Integer | |||
height
|
Signed 32-bit Integer | |||
scale
|
Signed 32-bit Integer | |||
destscale
|
Signed 32-bit Integer | |||
scalespeed
|
Signed 32-bit Integer |
PT_PING
Data name | Data type | Description |
---|---|---|
(header) | 8 bytes | The required header for all SRB2 packets. |
pingtable 0
|
Unsigned 32-bit Integer | Player 0's ping |
pingtable 1
|
Unsigned 32-bit Integer | Player 1's ping |
pingtable 2
|
Unsigned 32-bit Integer | Player 2's ping |
pingtable 3
|
Unsigned 32-bit Integer | Player 3's ping |
pingtable 4
|
Unsigned 32-bit Integer | Player 4's ping |
pingtable 5
|
Unsigned 32-bit Integer | Player 5's ping |
pingtable 6
|
Unsigned 32-bit Integer | Player 6's ping |
pingtable 7
|
Unsigned 32-bit Integer | Player 7's ping |
pingtable 8
|
Unsigned 32-bit Integer | Player 8's ping |
pingtable 9
|
Unsigned 32-bit Integer | Player 9's ping |
pingtable 10
|
Unsigned 32-bit Integer | Player 10's ping |
pingtable 11
|
Unsigned 32-bit Integer | Player 11's ping |
pingtable 12
|
Unsigned 32-bit Integer | Player 12's ping |
pingtable 13
|
Unsigned 32-bit Integer | Player 13's ping |
pingtable 14
|
Unsigned 32-bit Integer | Player 14's ping |
pingtable 15
|
Unsigned 32-bit Integer | Player 15's ping |
pingtable 16
|
Unsigned 32-bit Integer | Player 16's ping |
pingtable 17
|
Unsigned 32-bit Integer | Player 17's ping |
pingtable 18
|
Unsigned 32-bit Integer | Player 18's ping |
pingtable 19
|
Unsigned 32-bit Integer | Player 19's ping |
pingtable 20
|
Unsigned 32-bit Integer | Player 20's ping |
pingtable 21
|
Unsigned 32-bit Integer | Player 21's ping |
pingtable 22
|
Unsigned 32-bit Integer | Player 22's ping |
pingtable 23
|
Unsigned 32-bit Integer | Player 23's ping |
pingtable 24
|
Unsigned 32-bit Integer | Player 24's ping |
pingtable 25
|
Unsigned 32-bit Integer | Player 25's ping |
pingtable 26
|
Unsigned 32-bit Integer | Player 26's ping |
pingtable 27
|
Unsigned 32-bit Integer | Player 27's ping |
pingtable 28
|
Unsigned 32-bit Integer | Player 28's ping |
pingtable 29
|
Unsigned 32-bit Integer | Player 29's ping |
pingtable 30
|
Unsigned 32-bit Integer | Player 30's ping |
pingtable 31
|
Unsigned 32-bit Integer | Player 31's ping |