Skip to content

Instantly share code, notes, and snippets.

@Andoryuuta
Last active October 7, 2019 23:59
Show Gist options
  • Save Andoryuuta/220a6dc159c0c39386900c5f4596393b to your computer and use it in GitHub Desktop.
Save Andoryuuta/220a6dc159c0c39386900c5f4596393b to your computer and use it in GitHub Desktop.
Client Receive opcodes:
0x0 -- Invitation
uint32 opcode;
uint32 version; // 91005 for 0.9.1-5
0x2 -- Server is closing connection.
uint32 opcode;
<No data>
0x3 -- Creature Update:
uint32 opcode;
uint32 compressed_data_size;
byte compressed_data[size];
zlib.decompress(compressed_data)
uint64 GUID
bitmasked_creature_update
0x4 -- DoSomethingToCreaturesMapWithJustGUID:
// I think this actually sets the local player's
// GUID in the creatures map.
uint32 opcode;
uint64 guid;
0x6 -- Unk:
uint32 opcode
<_Maybe_ more data????>
0x7 -- ServerUpdate
// Big ol function with a bunch of cube changes,
// player hits, particles, etc.
uint32 opcode;
uint32 compressed_data_size;
byte compressed_data[size];
zlib.decompress(compressed_data)
read_list(cubechange_list)
uint32 count;
byte data[count * 0x20];
read_list(hitpacket_list)
uint32 count;
byte data[count * 0x48];
read_list(packet_list_2)
uint32 count;
byte data[count * 0x48];
read_list(packet_list_1)
uint32 count;
byte data[count * 0x30];
read_list(packet_list_4)
uint32 count;
byte data[count * 0x80];
read_list(packet_list_6)
uint32 count;
byte data[count * 0x18];
read_list(packet_list_5)
uint32 count;
byte data[count * 0x8];
read_list(packet_list_7)
uint32 count;
byte data[count * 0x8];
read_list(packet_list_8)
uint32 count;
byte data[count * 0xD0];
read_list(packet_list_9)
uint32 count;
byte data[count * 0x10];
read_list(packet_list_10)
uint32 count;
byte data[count * 0x28];
read_list(packet_list_11)
uint32 count;
byte data[count * 0x18];
read_list(packet_list_12)
uint32 count;
byte data[count * 0x30];
read_list(packet_list_13)
uint32 count;
byte data[count * 0x4];
read_list(packet_list_14)
uint32 count;
byte data[count * 0x8];
0x8 -- SetTime
uint32 opcode;
uint32 day;
uint32 time; // NOT FLOAT!
0xE -- ChatMessage
uint32 opcode;
uint64 guid;
uint32 string_size;
if string_size > 0:
wchar_t string[string_size];
Server recieve opcodes:
0x1 -- Client join.
uint32 opcode;
<No data>
0x2 -- Client is closing connection.
uint32 opcode;
<No data>
0x3 -- Creature Update:
uint32 opcode;
uint32 size;
byte data[size];
zlib.decompress(data)
uint64 GUID
bitmasked_creature_update
0x9 -- Unk:
uint32 opcode;
<No data>
0x0A -- Unk:
uint32 opcode;
byte unk[0x48];
0x0B -- Unk:
uint32 opcode;
byte unk[0x30];
0x0C -- Unk:
uint32 opcode;
byte unk[0x30];
0x0D -- Unk
uint32 opcode;
byte unk[0x80];
0xE -- Chat message:
uint32 opcode;
uint32 string_size;
wchar_t string[string_size];
0x18 -- Version mismatch:
uint32 opcode;
uint32 version; // 91005 for 0.9.1-5
bitmasked_creature_update:
uint64 bitfield;
if bitfield & (1<<0):
vector3_uint64 position;
if bitfield & (1<<1):
vector3_float32 rotation;
if bitfield & (1<<2):
vector3_float32 velocity;
if bitfield & (1<<3):
vector3_float32 accel;
if bitfield & (1<<4):
vector3_float32 retreat;
if bitfield & (1<<5):
float32 head_rotation;
if bitfield & (1<<6):
uint32 physics_flags;
if bitfield & (1<<7):
bool hostility_or_ai_type;
if bitfield & (1<<8):
uint32 race;
if bitfield & (1<<9):
uint8 action_id; // The current skill or action.
if bitfield & (1<<10):
float32 action_timer
if bitfield & (1<<11):
uint32 combo_hits;
if bitfield & (1<<12):
float32 time_since_last_combo_hit;
if bitfield & (1<<13):
EntityData::Appearance appearance; // byte[176]
if bitfield & (1<<14):
uint16 binary_toggles;
if bitfield & (1<<15):
float32 roll_time;
if bitfield & (1<<16):
float32 stun_time;
if bitfield & (1<<17):
float32 some_animation_time; // Character pulls back, but can still move around.
if bitfield & (1<<18):
float32 speed_slowed_time;
if bitfield & (1<<19):
float32 speed_boosted_time;
if bitfield & (1<<20):
float32 unk_float_0;
if bitfield & (1<<21):
int32 level;
if bitfield & (1<<22):
int32 exp; // Thanks EndOfFile.
if bitfield & (1<<23):
uint8 class;
if bitfield & (1<<24):
uint8 specialization;
if bitfield & (1<<25):
float32 some_float_0_to_1_mp_cost_pink_bar_background_fill; // Related to MP and stamina, controls a pink bg fill in the MP bar.
if bitfield & (1<<26):
vector3_float32 unk_vector3_float_0;
if bitfield & (1<<27):
vector3_float32 unk_vector3_float_1;
if bitfield & (1<<28):
vector3_float32 camera_looking_at_block_offset;
if bitfield & (1<<29):
float32 hp;
if bitfield & (1<<30):
float32 mp;
if bitfield & (1<<31):
float32 stealth; // Thanks EndOfFile.
if bitfield & (1<<32):
float32 unk_float_1;
if bitfield & (1<<33):
float32 current_movement_type_speed; // Thanks EndOfFile.
if bitfield & (1<<34):
float32 light_diameter;
if bitfield & (1<<35):
uint8 unk_byte_0_for_campfire_particles; // If your race is a campfire, and this is 0, then flames come out of you.
if bitfield & (1<<36):
uint8 unk_byte_1;
if bitfield & (1<<37):
uint64 unk_uint64_0;
if bitfield & (1<<38):
uint64 unk_uint64_1;
if bitfield & (1<<39):
vector2_int32 eagle_flying_to_zone_pos;
if bitfield & (1<<40):
vector2_int32 some_zone_pos; // Maybe spawn zone?
if bitfield & (1<<41):
vector3_int64 eagle_flying_from_coords;
if bitfield & (1<<42):
cube::Item unk_item; // cube::Creature+0x1C8 | Size:0xA0
if bitfield & (1<<43):
cube::WornEquipment worn_equipment; // cube::Item[11]
if bitfield & (1<<44):
char[16] name;
if bitfield & (1<<45):
uint64 client_steam_id;
if bitfield & (1<<46):
uint8 unk_byte_2;
if bitfield & (1<<47):
int32 unk_int32_0;
if bitfield & (1<<48):
uint64 unk_uint64_2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment