Snap Items
This page describes the snap items structure, all kinds of snap items, and their purpose.
2 - NETOBJTYPE_PROJECTILE
This item represents a projectile entity (bullet, grenade, or shotgun pellet) in the game world. Structure:
| Field | Type | Description |
|---|---|---|
| X | Integer | Projectile X position in the world. |
| Y | Integer | Projectile Y position in the world. |
| VelocityX | Integer | Horizontal velocity of the projectile, scaled by 100. |
| VelocityY | Integer | Vertical velocity of the projectile, scaled by 100. |
| Type | Integer | Weapon type that fired this projectile: 1 = gun, 2 = shotgun, 3 = grenade. |
| StartTick | Integer | Game tick at which the projectile was created. Used by the client to compute its current position using physics formulas. |
3 - NETOBJTYPE_LASER
This item represents a laser beam in the game world. Structure:
| Field | Type | Description |
|---|---|---|
| X | Integer | Laser endpoint X position. |
| Y | Integer | Laser endpoint Y position. |
| FromX | Integer | Laser origin X position (where the tee fired from). |
| FromY | Integer | Laser origin Y position (where the tee fired from). |
| StartTick | Integer | Game tick at which the laser was fired. Used by the client to render the laser beam correctly over time. |
4 - NETOBJTYPE_PICKUP
This item represents a pickup (health, armor, or weapon) in the game world. Structure:
| Field | Type | Description |
|---|---|---|
| X | Integer | Pickup X position in the world. |
| Y | Integer | Pickup Y position in the world. |
| Type | Integer | Pickup type: 0 = health, 1 = armor, 2 = grenade, 3 = shotgun, 4 = laser, 5 = ninja, 6 = gun, 7 = hammer. |
5 - NETOBJTYPE_FLAG
This item represents a CTF flag in the game world. Structure:
| Field | Type | Description |
|---|---|---|
| X | Integer | Flag X position in the world. |
| Y | Integer | Flag Y position in the world. |
| Team | Integer | Flag team: 0 = red team flag, 1 = blue team flag. |
6 - NETOBJTYPE_GAMEINFO
This item contains game information about team scores and flag carriers for CTF mode. Structure:
| Field | Type | Description |
|---|---|---|
| TeamScoreRed | Integer | Current score of the red team. |
| TeamScoreBlue | Integer | Current score of the blue team. |
| FlagCarrierRed | Integer | Client ID of the red flag carrier, or -3 if lost, -2 if at base, -1 if taken. |
| FlagCarrierBlue | Integer | Client ID of the blue flag carrier, or -3 if lost, -2 if at base, -1 if taken. |
7 - NETOBJTYPE_GAMEDATA
This item contains global game state data. Structure:
| Field | Type | Description |
|---|---|---|
| GameFlags | Integer | Game mode flags (bitmask): 1 = teams mode, 2 = CTF flags enabled, 4 = survival mode, 8 = race mode. |
| GameStateFlags | Integer | Game state flags (bitmask): 1 = warmup, 2 = sudden death, 4 = round over, 8 = game over, 16 = paused, 32 = start countdown. |
| RoundStartTick | Integer | Game tick when the current round started. |
| WarmupTimer | Integer | Remaining warmup time, or a special value indicating the game state. |
| ScoreLimit | Integer | Score limit for the current match. |
| TimeLimit | Integer | Time limit for the current match. |
| RoundNum | Integer | Total number of rounds in the match. |
| RoundCurrent | Integer | Current round number (1 based). |
9 - NETOBJTYPE_CHARACTER
This item represents a character (tee) in the game world, including its core physics and state. Structure:
| Field | Type | Description |
|---|---|---|
| Core -> Tick | Integer | The game tick at which the core data was recorded, for dead reckoning purposes. |
| Core -> X | Integer | Core X position in the world. |
| Core -> Y | Integer | Core Y position in the world. |
| Core -> VelX | Integer | Core horizontal velocity. |
| Core -> VelY | Integer | Core vertical velocity. |
| Core -> Angle | Integer | Core rotation angle, used for character rendering and aiming. |
| Core -> Direction | Integer | Core movement direction: -1 = left, 0 = neutral, 1 = right. |
| Core -> Jumped | Integer | Core jump counter: 0 = grounded, 1 = ground jumped, 2 = air jumped, 3 = both used. |
| Core -> HookedPlayer | Integer | Client ID of the player this tee is hooking, or -1 if not hooking a player. |
| Core -> HookState | Integer | Hook state: -1 = idle, 0 = flying, 1 = attached to a non-hookable tile, 2-5 = attached to a hookable tile direction. |
| Core -> HookTick | Integer | Game tick at which the hook state last changed. |
| Core -> HookX | Integer | Hook collision X position. |
| Core -> HookY | Integer | Hook collision Y position. |
| Core -> HookDx | Integer | Hook collision delta X. |
| Core -> HookDy | Integer | Hook collision delta Y. |
| Health | Integer | Current health of the character (0-10). Only visible to the owning player and spectators of the owning player. |
| Armor | Integer | Current armor of the character (0-10). Only visible to the owning player and spectators of the owning player. |
| AmmoCount | Integer | Ammunition count for the active weapon. For ninja: remaining ninja duration. Visible only to the owning player and spectators of the owning player. |
| Weapon | Integer | Currently active weapon: 0 = hammer, 1 = gun, 2 = shotgun, 3 = grenade, 4 = laser, 5 = ninja. |
| Emote | Integer | Current emote: 0 = normal, 1 = pain, 2 = happy, 3 = surprise, 4 = angry, 5 = blink. |
| AttackTick | Integer | Game tick of the last attack, used by the client for attack prediction. |
| PlayerFlags | Integer | Player state flags (bitmask): 1 = admin, 2 = chatting, 4 = scoreboard open, 8 = ready, 16 = dead, 32 = watching. |
| TriggeredEvents | Integer | Events triggered during this tick (bitmask): 1 = ground jump, 2 = air jump, 4 = hook attached to player, 8 = hook attached to ground, 16 = hook hit non-hookable. Cleared each tick after snap. |
10 - NETOBJTYPE_PLAYERINFO
This item contains information about a player's score and latency. Structure:
| Field | Type | Description |
|---|---|---|
| Local | Integer | Whether this player is the local client (1 for the client itself, 0 for other players). |
| ClientID | Integer | Client ID of this player. |
| Team | Integer | Team the player is on: -1 = spectators, 0 = red team, 1 = blue team. |
| Score | Integer | Player's current score. |
| Latency | Integer | Player's current latency/ping in milliseconds. |
11 - NETOBJTYPE_CLIENTINFO
This item contains identity and skin information about a client. Structure:
| Field | Type | Description |
|---|---|---|
| Name | String[16] | Player name (packed as integers for snap items). |
| Clan | String[12] | Player clan (packed as integers for snap items). |
| Country | Integer | Country code for the player. |
| Skin | String[20] | Skin name (packed as integers for snap items). |
| Use Custom Color | Integer | Whether the player uses custom skin colors. |
| Color Body | Integer | Body color value. |
| Color Feet | Integer | Feet color value. |
INFO
Check the String Packing To Snap Items section for more information about the string packing for snap items.
12 - NETOBJTYPE_SPECTATORINFO
This item contains the spectator state of a player. It is only sent to the local spectator (the snapping client itself) when their team is TEAM_SPECTATORS.
Structure:
| Field | Type | Description |
|---|---|---|
| SpectatorID | Integer | Client ID being spectated, or -1 (SPEC_FREEVIEW) when in free view mode. |
| X | Integer | Spectator camera X position in the world. |
| Y | Integer | Spectator camera Y position in the world. |
14 - NETEVENTTYPE_EXPLOSION
This event creates an explosion effect at the given position. It is a transient event that does not persist across snapshots. Structure:
| Field | Type | Description |
|---|---|---|
| X | Integer | X position of the explosion center in the world. |
| Y | Integer | Y position of the explosion center in the world. |
15 - NETEVENTTYPE_SPAWN
This event creates a spawn effect at the given position when a player respawns. Structure:
| Field | Type | Description |
|---|---|---|
| X | Integer | X position of the spawn effect in the world. |
| Y | Integer | Y position of the spawn effect in the world. |
16 - NETEVENTTYPE_HAMMERHIT
This event creates a hammer hit effect at the given position. Structure:
| Field | Type | Description |
|---|---|---|
| X | Integer | X position of the hammer hit effect in the world. |
| Y | Integer | Y position of the hammer hit effect in the world. |
17 - NETEVENTTYPE_DEATH
This event signals a player death at the given position. Structure:
| Field | Type | Description |
|---|---|---|
| X | Integer | X position of the death event in the world. |
| Y | Integer | Y position of the death event in the world. |
| ClientID | Integer | Client ID of the player that died. |
18 - NETEVENTTYPE_SOUNDGLOBAL
This event triggers a global sound (not tied to a world position). Structure:
| Field | Type | Description |
|---|---|---|
| SoundID | Integer | Sound ID to play globally. |
19 - NETEVENTTYPE_SOUNDWORLD
This event triggers a world sound at the given position. Structure:
| Field | Type | Description |
|---|---|---|
| X | Integer | X position of the sound source in the world. |
| Y | Integer | Y position of the sound source in the world. |
| SoundID | Integer | Sound ID to play at this position. |
20 - NETEVENTTYPE_DAMAGEIND
This event creates a damage indicator at the given position, showing damage direction and amount. Structure:
| Field | Type | Description |
|---|---|---|
| X | Integer | X position of the damage effect in the world. |
| Y | Integer | Y position of the damage effect in the world. |
| Angle | Integer | Angle of the damage source, used to orient the damage indicator. |