Project Dollhouse Protocol

From Niotso Wiki
Jump to: navigation, search

THIS PAGE IS OUTDATED AND DOES NOT REFLECT THE CURRENT STATE OF FREESO OR PROJECT DOLLHOUSE IN ANY WAY - IT WILL BE UPDATED IN DUE COURSE.

Due to Project Dollhouse's rapid development, this article is subject to change and may not always be up to date.

This page presents a dissection of the current Project Dollhouse protocol.

If you're having trouble, check out the Project Dollhouse forum for more help.

Field names have not yet been added (this is intentional) and will be added in due course.

Packet format[edit]

Each individual packet may have a different packet format to the last. Therefore, the only similarity is the "0x-" which the packet will always begin with. Packets may be compressed or uncompressed; if the latter is the case, the packet header will be "3" but if the former is true then the packet header will be "5". There can be no mixture of uncompressed and compressed data in the packet. Some of the packets may also use additional functions specified in the GonzoNet files (specifically PacketStream.cs, PacketHandlers.cs, PacketHandler.cs).

Packets[edit]

Here you will find all of the current packets for Project Dollhouse.

Login Packets[edit]

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x00 LOGIN_REQUEST Server / Client Version1 Byte Encrypted.
Version2 Byte
Version3 Byte
Version4 Byte
Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x01 LOGIN_NOTIFY Server / Client  ??  ?? None.
Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x02 LOGIN_FAILURE Client Error Type Byte Only used by the client. Unknown byte is 0x01 is bad accountname, 0x02 if bad password, 0x03 if bad challenge response
Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x03 CHALLENGE_RESPONSE Server Length Byte Client sent a response to the challenge. Possible that not all fields are listed, use with caution.
AccountName String
PasswordHash String Array
Packet ID Packet Name Bound To / Sent To Notes
0x04 LOGIN_SUCCESS Server Sent by the server to tell the client that logging in was a success.

Invalid version error[edit]

Sent when the client has a different version to the login server.

Packet ID Packet Name Bound To / Sent To Notes
0x05 INVALID_VERSION Client / Server Sent by the server and client to notify the client of an invalid version.

City server packets[edit]

This could be "CityInfoRequest" as specified here.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x07 CITY_LIST Client / Server Unknown Byte Like the character list, but sends city list with it somewhat. Unknown Byte is always 0x00 (dummy).


This is sent when a new city server came online.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x08 NEW_CITY_SERVER Client / Server Name String None.
Description String
IP String
Port Int32
Status Byte
Thumbnail UInt64
UUID String
Map UInt64
Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x09 CITY_SERVER_OFFLINE Client / Server  ??  ?? None.
Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x67 CHARACTER_CREATE_CITY Client / Server  ??  ?? None.
Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x68 CHARACTER_CREATE_CITY_FAILED Client / Server  ??  ?? None.
Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x63 LOGIN_REQUEST_CITY City Server PublicKey Byte LOGIN_NOTIFY_CITY must be sent IMMEDIATELY after recieving.
NOnce Byte

Sent when entering the city was a success.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x64 LOGIN_SUCCESS_CITY Client Unknown Byte Encrypted. Unknown Byte is always 0x01.
Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x65 LOGIN_NOTIFY_CITY Client / Server ServerPublicKey Byte Does not have to have the fields. Encrypted.
EncryptedData Byte

Sent when entering the city failed.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x66 LOGIN_FAILURE_CITY Client / Server Header Unknown Uses WriteHeader function. Packet header is either 3 or 5. Unknown Byte is always 0x01.
Packet Header UInt16
Unknown Byte
Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x69 REQUEST_CITY_TOKEN Client / Server  ??  ?? None.
Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x70 CITY_TOKEN Client / Server Status Byte All of "LotTileEntries" used in the same array.
NumHouses UInt16
LotTileEntry Int32
LotTileEntry String
LotTileEntry UInt16
LotTileEntry UInt16
LotTileEntry Byte
LotTileEntry Int32

Character packets[edit]

This could be CharacterInfoRequest as specified here.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x06 CHARACTER_LIST Client / Server  ??  ?? Sends character list with it somewhat. Could be "CharacterInfoRequest"

Sent when a character is created with information about the character.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x010 CHARACTER_CREATE Client / Server AccountStrLength Byte None.
Token String
Timestamp String
Name String
Sex String
Description String
HeadOutfitID UInt64
BodyOutfitID UInt64
Appearance Byte
Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x011 CHARACTER_CREATION_STATUS Client / Server  ??  ?? None.

Presumably sent by the client when a character is retired.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x012 RETIRE_CHARACTER Client / Server GUID String None.

This is the start of many packets which does not follow the same "0x0--" pattern as before.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x13 RETIRE_CHARACTER_STATUS Client / Server  ??  ?? No idea why it doesn't follow the same 0x0-- pattern as before.

Session packets[edit]

Sent when a player joined a session (game) in progress.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x71 PLAYER_JOINED_SESSION Client / Server Avatar String None.
Name String
Sex String
Description String
HeadOutfitID UInt64
BodyOutfitID UInt64
Appearance Int32
Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x72 PLAYER_LEFT_SESSION Client / Server  ??  ?? None.

Message / letter packets[edit]

This is sent by the client to the server and then turned into PLAYER_RECV_LETTER to be sent to the user with the GUID specified,

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x73 PLAYER_SENT_LETTER Client / Server GUID String None.
Subject String
Message String
Packet ID Packet Name Bound To / Sent To Notes
0x74 PLAYER_RECV_LETTER Client / Server None. Likely has no fields.

This packet will be sent by the client and then sent to all connected clients.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x75 PLAYER_BROADCAST_LETTER Client / Server Subject String Possibly sent by an admin.
Message String

The server will return this packet if the player is already online.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x76 PLAYER_ALREADY_ONLINE Client Dummy Byte Sent by the login server. Dummy is always 0x00.

Time packet[edit]

The time packet sends the client the time when it has been changed.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x77 TIME_OF_DAY Client / Server Time Int32 Sent by the server and client with time.
Time Int32
Time Int32 Could define if AM or PM, unsure.

Lot packets[edit]

Sent by the client to buy a lot.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x78 LOT_PURCHASE_REQUEST Client / Server X UInt16
Y UInt16

Sent when a lot purchase was successful.

Packet ID Packet Name Bound To / Sent To Notes
0x79 LOT_PURCHASE_SUCCESSFUL Client / Server None. Likely no fields.

Sent when a lot is already occupied.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x78 LOT_PURCHASE_OCCUPIED Client / Server Is Buildable Byte "Is Buildable" is always 0x00 because the lot is occupied.

Sent when a lot can't be built on.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x81 LOT_UNBUILDABLE Client / Server Is Buildable Byte "Is Buildable" is always 0x00 because the lot is not buildable...

Sent with the cost, position, lot ID, and lot name.

Packet ID Packet Name Bound To / Sent To Field Name Field Type Notes
0x82 LOT_COST Client / Server X UInt16 Sent by the server and client, presumably with the lot cost in Simoleons. Encrypted. When lot is occupied, locked, or spotlight, returns 0 as lot cost.
Y UInt16
LotID Int32
LotName String
Flags Byte
Lot cost Int32

Where do the packets go to?[edit]

Login Server[edit]

LoginPacketHandlers.cs[edit]

Recieves:

Packet Name
LOGIN_REQUEST
CHALLENGE_RESPONSE
CHARACTER_LIST
CITY_LIST
CHARACTER_CREATE
REQUEST_CITY_TOKEN
RETIRE_CHARACTER

Sends:

Packet Name
INVALID_VERSION
LOGIN_NOTIFY
LOGIN_FAILURE
LOGIN_SUCCESS
CHARACTER_LIST
0x05 (INVALID_VERSION)
CITY_LIST
CHARACTER_CREATION_STATUS
0x01 (LOGIN_NOTIFY)
0x02 (LOGIN_FAILURE)
RETIRE_CHARACTER_STATUS


CityServerPacketHandlers.cs[edit]

Receives:

Packet Name
CityServerLoggedIn (NEW_CITY_SERVER)?
PlayerOnline (PLAYER_JOINED_SESSION)?

Sends:

Packet Name
NEW_CITY_SERVER
REQUEST_CITY_TOKEN
PLAYER_ALREADY_ONLINE

City Server[edit]

LoginPacketHandlers.cs[edit]

Receives:

Packet Name
REQUEST_CITY_TOKEN or CITY_TOKEN (unknown, possibly not implemented yet)
RETIRE_CHARACTER

Sends:

Packet Name
0x67 (CHARACTER_CREATE_CITY)
CITY_TOKEN

ClientPacketHandlers.cs[edit]

Receives:

Packet Name
InitialClientConnect (Unknown packet)
CHALLENGE_RESPONSE
CHARACTER_CREATE
CITY_TOKEN
PLAYER_SENT_LETTER
PLAYER_BROADCAST_LETTER
LOT_COST
LOT_PURCHASE_REQUEST

Sends:

Packet Name
LOGIN_NOTIFY_CITY
LOGIN_SUCCESS_CITY
LOGIN_FAILURE_CITY
CHARACTER_CREATE_CITY
CHARACTER_CREATE_CITY_FAILED
CITY_TOKEN
LOT_PURCHASE_OCCUPIED
LOT_UNBUILDABLE