Edit on GitHub

GameService Server Room Census

Summary

This packet maintains the list of all users in the currently joined room.

This is a response to any user sending:

Structure

gameservice_server_0048_room_census

Name Type Summary
list_type u1
unknown_a s2 All examples show -1 (0xFFFF).
list switch(list_type)
case list_initial census_initial Case when list_type == list_initial
case list_additions census_addition Case when list_type == list_additions
case list_removals census_removal Case when list_type == list_removals
case list_modifications census_modification Case when list_type == list_modifications
case list_lounge_initial census_lounge_initial Case when list_type == list_lounge_initial

Subtypes

census_initial

Name Type Summary
user_count u1
users_initial user[user_count]
user_additional_initial user_character_data Is either 1 byte (0x00) or 513 bytes long.

census_addition

Name Type Summary
user_addition user
user_additional_addition user_character_data Is either 0 bytes or 513 bytes long.

census_removal

Name Type Summary
connection_id_removal u4 Connection ID of the user to remove.

census_modification

Name Type Summary
connection_id_modification u4 Connection ID of the user to modify. Note - not an error, it does appear twice in a row.
user_modification user

census_lounge_initial

Unlike type 0x00 census_initial, a type 0x07 is sent for each user in a lounge, with only their record contained therein.

Name Type Summary
user_count_lounge u1 As all type 0x07s are individual records, this value is trivial, not structural.
user_lounge user
user_additional_lounge user_character_data Is always present at 513 bytes.

user

Name Type Summary
connection_id u4 Connection ID of the relevant user.
user_nickname strz[22] Nickname of the relevant user.
guild_name strz[21] Guild name to which the relevant user belongs.
room_user_slot u1 Every user in the room has a unique slot number, from 1 to the user_max.
unknown_c bytes[4] All 0x00.
item_id_title u4 From pangya_xx.iff/Skin.iff. ID of the custom title badge.
item_id_character u4 From pangya_xx.iff/Character.iff. ID of the character used.
item_id_portrait_background u4 From pangya_xx.iff/Skin.iff. ID of the portrait background. 0 if unused.
item_id_portrait_frame u4 From pangya_xx.iff/Skin.iff. ID of the portrait frame. 0 if unused.
item_id_portrait_sticker u4 From pangya_xx.iff/Skin.iff. ID of the portrait sticker. 0 if unused.
item_id_portrait_slot u4 From pangya_xx.iff/Skin.iff. ID of the portrait slot. 0 if unused.
unknown_d bytes[4] All 0x00.
item_id_title_b u4 Duplicate of item_id_title
unknown_e bytes[2]
user_rank u1 Unconfirmed. From 0x00 ('Rookie F') through 0x46 ('Infinity Legend I').
unknown_f u1 All examples either 0 (0x00) or 40 (0x28).
unknown_g u1 All examples 10 (0x0A).
unknown_h bytes[4]
guild_emblem_id strz[12] If missing, 'guildmark'.
unknown_k u1
user_id u4
unknown_l bytes[4] All 0x00.
unknown_m bytes[2] Always C7,0A.
unknown_n u4 All examples either 0 (0x00000000) or 1 (0x00000001).
unknown_o f4
unknown_p f4
unknown_q f4
unknown_z u4 Seen 0-2.
garbage_r bytes[64] Likely garbage data; contains local user's data.
item_id_mascot u4 From pangya_xx.iff/Mascot.iff. ID for user's mascot.
username_atnt strz[128]
unknown_s bytes[4]
unknown_t u4 All examples 66 (0x00000042).

Enums

list_type

Key Value
list_type::list_initial 0
list_type::list_additions 1
list_type::list_removals 2
list_type::list_modifications 3
list_type::list_lounge_initial 7

Definition

meta:
  id: gameservice_server_0048_room_census
  title: GameService Server Room Census
  encoding: ASCII
  endian: le
  imports:
    - ../../common/id_bank
    - ../../common/pstring
    - ../../common/user_character_data
seq:
  - id: list_type
    type: u1
    enum: list_type
  - id: unknown_a
    type: s2
  - id: list
    type:
      switch-on: list_type
      cases:
        list_type::list_initial: census_initial
        list_type::list_additions: census_addition
        list_type::list_removals: census_removal
        list_type::list_modifications: census_modification
        list_type::list_lounge_initial: census_lounge_initial
types:
  census_initial:
    seq:
      - id: user_count
        type: u1
      - id: users_initial
        type: user
        repeat: expr
        repeat-expr: user_count
      - id: user_additional_initial
        type: user_character_data
  census_addition:
    seq:
      - id: user_addition
        type: user
      - id: user_additional_addition
        type: user_character_data
  census_removal:
    seq:
      - id: connection_id_removal
        type: u4
  census_modification:
    seq:
      - id: connection_id_modification
        type: u4
      - id: user_modification
        type: user
  census_lounge_initial:
    seq:
      - id: user_count_lounge
        type: u1
      - id: user_lounge
        type: user
      - id: user_additional_lounge
        type: user_character_data
  user:
    seq:
      - id: connection_id
        type: u4
      - id: user_nickname
        type: strz
        size: 22
      - id: guild_name
        type: strz
        size: 21
      - id: room_user_slot
        type: u1
      - id: unknown_c
        size: 4
      - id: item_id_title
        type: u4
      - id: item_id_character
        type: u4
      - id: item_id_portrait_background
        type: u4
      - id: item_id_portrait_frame
        type: u4
      - id: item_id_portrait_sticker
        type: u4
      - id: item_id_portrait_slot
        type: u4
      - id: unknown_d
        size: 4
      - id: item_id_title_b
        type: u4
      - id: unknown_e
        size: 2
      - id: user_rank
        type: u1
        enum: id_bank::rank
      - id: unknown_f
        type: u1
      - id: unknown_g
        type: u1
      - id: unknown_h
        size: 4
      - id: guild_emblem_id
        type: strz
        size: 12
      - id: unknown_k
        type: u1
      - id: user_id
        type: u4
      - id: unknown_l
        size: 4
      - id: unknown_m
        size: 2
      - id: unknown_n
        type: u4
      - id: unknown_o
        type: f4
      - id: unknown_p
        type: f4
      - id: unknown_q
        type: f4
      - id: unknown_z
        type: u4
      - id: garbage_r
        size: 64
      - id: item_id_mascot
        type: u4
        enum: id_bank::item_id_mascot
      - id: username_atnt
        type: strz
        size: 128
      - id: unknown_s
        size: 4
      - id: unknown_t
        type: u4
enums:
  list_type:
    0: list_initial
    1: list_additions
    2: list_removals
    3: list_modifications
    7: list_lounge_initial

Examples

No examples available. Contribute one?