doc: Add the documentation for most of the commands reviewed so far.

This commit is contained in:
Loïc Hoguin 2010-10-23 04:02:15 +02:00
parent 814d4348f5
commit 71d2c22028
86 changed files with 2359 additions and 0 deletions

1
doc/protocol/README Normal file
View File

@ -0,0 +1 @@
All the files in this folder are research released in the public domain.

418
doc/protocol/commands.txt Normal file
View File

@ -0,0 +1,418 @@
[ Research Status / Importance / Occurences / Command / Channels / Description ]
Characters
!* C 6 0101 B--
WIP C 7 0102 BCS animation state change (movement, sit, stand up, trigger unicube, talk to npc...)
!* C 6 0104 B-- sit position change (floor and chairs); goggle position change
WIP A 7 0105 -CS weapon/armor equip, item use/drop and more; request/reply
? 6 0106 -CS
!* C 4 0107 B-- sit on chair, get on vehicle
? 6 0108 --S
! ? 4 0109 -C- weapon/item palette change
WIP B 5 010a -CS shop listing request/reply
OK ? 5 010b -C- player enter area (probably broadcast spawn here)
WIP A 6 010d --S character details (excluding location); similar to 0201
!* C 7 010f B-- talk to npc; set trap, boom trap
WIP A 5 0110 -C- triggered event (death, type change, online status change...)
OK A 6 0111 --S trigger event
C 3 0112 --S
!* B 4 0113 --S types capabilities list
OK A 7 0115 --S update EXP/money...
OK A 5 0117 --S revive
? 5 0119 -CS (probably make the RCSM shoot)
System
OK A 5 0200 --S zone init
WIP A 6 0201 --S character details (including location); similar to 010d
OK A 5 0202 --S hello
OK A 5 0203 --S spawn character
OK B 5 0204 --S unspawn character
OK A 6 0205 --S load map (related to 0806)
OK A 5 0208 --S end of loading (related to 0808)
OK A 4 020b -C- character selection: select slot
OK ? 5 020c -C- (despite the channel, sent by the server; channel 2)
OK A 4 020d -C- game auth: token authentication request
OK A 5 020e --S quest file transfer
OK A 5 020f --S zone file transfer
OK C 5 0210 --S current unix time
OK C 5 0215 --S
OK A 5 0216 --S login: forward to game server
OK A 5 0217 -C- login: game server address request
OK ? 5 0219 -C- login: password authentication request
OK A 5 021b --S (character selection: end)
OK ? 5 021c -C- (character selection: end) reply
OK A 4 021d -C- uni cube request
OK A 4 021e --S uni cube reply
OK A 4 021f -C- uni cube selection
! ? 4 0220 -C- (uni cube related, sent by the client? thought it was sent by the server)
OK A 5 0222 --S current uni details
OK ? 5 0223 --S login: password authentication success
! ? 3 0224 --S disconnect user, reason given
OK ? 5 0225 --S login: motd reply
OK A 5 0226 -C- login: motd request (jp only): same as 023f (apparently uses channel 3)
OK ? 5 0227 -C- login: whether the motd (TOS on official) was accepted
OK ? 3 0228 --S display a notice: global message; rare mission get message
!* ? 5 022c --S (probably related to parties or NPCs)
-- - - 022d --S gameguard ping
-- - - 022e -C- gameguard pong
OK ? 4 0230 --S (universe change related, including room doors)
OK A 2 0231 --S send user to website (used on wrong password)
WIP A 5 0233 --S list of other characters in zone/lobby/area, whichever
! ? 3 0234 -C- (probably related to 0235; probably partner card related)
? 3 0235 --S (probably related to 0234; probably partner card related; sends 1 GID and 4 card-like character infos)
OK A 5 0236 --S start zone handler (load objects and enable them)
? 4 0237 -C-
? 4 0238 --S (probably related to 0237)
OK A 5 023f -C- login: motd request (us only): same as 0226
? 3 0245 --S
! ? 5 0246 --S add or replace text strings
? 5 024b -C-
? ? 024f -C- (gam/gas dialog request; jp only)
? ? 0250 --S (gam/gas dialog reply; jp only)
? ? 025e --S (lumilass-related; jp only)
Chat
! B 2 0302 -C- shortcuts change
! B 5 0303 --S shortcuts list
OK A 6 0304 -CS message
! C 4 0305 --S sound
Missions
!* C 7 0402 -C- enemy event (safely ignored?)
!* C 6 0404 -C- object event
Movements
!** A 8 0503 B-S position change
!* C 7 050f B-- camera change
!* C 7 0514 B-- stay still
Area/State change
OK ? 5 0806 -C- (related to 0808)
OK A 5 0807 -C- area change
OK ? 5 0808 -C- (related to 0806)
WIP ? 4 080c -C- npc force invite-- NO, more like invite npc specific for this quest (in the file), probably kills NPC on zone change too (but not map change apparently)
OK ? 5 080d -C- (area change successful notice?)
OK C 5 080e -C- client/platform/chosen entrance info
OK ? 4 080f -C- (npc related or story related)
OK A 4 0811 -C- enter counter
OK A 4 0812 -C- leave counter
OK A 3 0813 -C- npc invite
OK ? 4 0814 -C- (mission area change successful notice?)
OK ? 5 0815 -C- (non-mission area change successful notice?)
OK C 4 0818 -C- cpu/gpu info
Items
? 5 0a01 --S
? 5 0a02 --S
? 3 0a03 --S
* A 4 0a04 --S npc inventory
OK A 5 0a05 --S (player inventory related; the LID is changed right before this command, or right before the previous 0215 command in the case of missions)
OK A 5 0a06 --S player inventory: list of unique items id
? 4 0a07 -CS (view stats/equip)
? 3 0a08 --S
** C 5 0a09 -CS (probably: receive item)
!* A 5 0a0a --S player inventory
? 2 0a0b --S
? 4 0a0e --S
? 4 0a0f --S
OK C 5 0a10 -C- item description request
OK C 5 0a11 --S item description reply
Packet fragments
OK A 6 0b03 --- fragment (no channel)
OK A 6 0b05 --- reception confirmed (no channel)
Quests
OK A 5 0c00 --S quest init
OK A 4 0c01 -C- mission start request
!* A 4 0c02 --S mission start reply (no 1020 or 1015 when rejected)
OK A 4 0c05 -C- counter quest files pack request
OK A 4 0c06 --S counter quest files pack transfer
OK A 3 0c07 -C- lobby transport request
OK A 3 0c08 --S lobby transport reply
* A 4 0c09 --S trial start, end
? 5 0c0a --S
? 4 0c0b --S
? 4 0c0c --S
OK ? 4 0c0d -C- (mission start and mission area change related)
OK A 3 0c0e -C- mission abort
OK A 4 0c0f -C- counter options request
OK A 4 0c10 --S counter options reply
!* ? 3 0c11 -C- (story mission related; probably related to 0c12)
!* ? 3 0c12 --S (probably related to 0c11)
? 3 0c13 -C- (probably related to 0c14)
? 3 0c14 -C- (probably related to 0c13)
Account/Flags
WIP A 5 0d01 --S character selection: selected character details
OK A 2 0d02 -C- character selection: create character
!* A 4 0d03 --S character selection: character list reply
!** C 5 0d04 -CS set flag
OK C 4 0d05 --S system flags list
OK A 4 0d06 -C- character selection: character list request
OK A 3 0d07 -C- options change
! ? 1 0d08 -C- (gbr info request, 1 per dialog)
? 1 0d09 --S (gbr info reply 2, 4, 5; during GBR only)
! ? 1 0d0a --S (gbr info reply 1, 3; many GBR 0d04 sent by the server before that; also sent when not in GBR)
Hits
WIP A 6 0e00 -C- hit
! ? 3 0e01 -C-
* A 7 0e07 --S hit reply
? 4 0e08 --S
Zones
!* C 2 0f00 -C- vehicle init
!* C 2 0f02 -C- enter vehicle
? 4 0f03 -C- (vehicle move?)
! ? 1 0f04 -C-
! ? 1 0f05 -C- (vehicle related)
(0f06 vehicle related?)
!* C 2 0f07 -C- (enter vehicle related)
! ? 2 0f09 -C- (vehicle related)
WIP A 6 0f0a -C- object event
Parties
! ? 3 1002 -C- (leave party request)
? 3 1003 --S
* A 4 1004 --S join event (add character info to the left of the screen)
!* ? 5 1005 --S
OK A 5 1006 --S trigger party event
OK ? 4 1007 -C- remove member request
? 3 100a -CS (invite other player to party; received invite)
? 3 100c -CS
OK A 5 100e --S character location
* ? 4 100f --S
? 4 1011 --S
? 2 1013 -C-
!* A 4 1015 --S mission start: quest file transfer (for mission details window)
* ? 4 1016 -CS (probably related to NPCs)
? 6 1017 -CS (related to NPC removal from party in story mission)
* ? 6 1019 -CS
* ? 3 101a --S
? 3 101b -C-
? 3 101c --- (channel 5; accept party invite)
C 1 101d -C- (set invite block)
? 3 101e --S
? 6 101f --S character level and hp update (on the left of the screen); sometimes sent in other places
OK A 4 1020 --S (mission start related)
OK ? 6 1022 --S character hp update (on the left of the screen)
Bosses
! ? 4 1101 -C-
? 3 1102 -C-
? 4 1103 -C-
? 4 1104 --S
? 3 1105 -C-
* ? 3 1106 -C-
? 3 1107 -C-
? 3 1108 --S
? 3 1109 --S
? 2 110a --S
? 2 110b --S
? 4 110c --S
? 3 110d --S
* ? 4 110e --S
? 4 110f --S
? 4 1110 --S
? 4 1111 --S
* ? 3 1112 -C- (probably related to 1113)
* ? 3 1113 --S (probably related to 1112)
? 3 1114 --S
? 2 1116 --S
? 1 1117 --S
? 2 1118 --S
? 4 1119 --S
? 3 111b --S
? 3 111c --S
? 2 111d --S
? 2 111e --S
? 3 111f --S
? 4 1120 --S
? 4 1121 --S
? 4 1122 --S
? 4 1123 -C-
? 2 1124 --S
Instances state
? 7 1201 --S
* A 6 1202 --S
OK A 5 1204 --S
* A 6 1205 --S block/map event
* A 5 1206 --S
* A 4 1207 --S
* C 3 1208 --S (vehicle init related)
* C 3 120a --S (enter vehicle related)
? 5 120b --S
? 1 120c --S
* C 3 120f --S (enter vehicle related; reply for 0f07)
? 1 1210 --S
* A 6 1211 --S (object event related)
* A 5 1212 --S
* A 6 1213 --S object state on/off
* A 3 1215 --S (boss gate related)
** C 3 1216 --- (airboard rally race start; channel 0)
Player rooms
C 4 1304 -C-
C 2 1305 -C-
* C 4 1309 --S
C 4 130a --S
C 2 130b -C-
C 2 130c --S
C 6 130d -C-
C 6 130e --S
C 5 130f -C-
C 3 1310 --S
C 3 1312 --S
C 3 1313 -C-
C 3 1314 --S
C 2 1316 --S
C 5 1318 --S
C 2 1319 -C-
C 2 131a -C-
C 6 131b --S
C 3 131c --S
C 5 131e --S
C 3 131f --S
C 3 1320 --S
C 2 1321 --S
C 4 1323 --S
C 5 1324 --S
C 3 1325 --S
C 3 1326 --S
C 5 1327 --S
C 4 1328 -C-
C 3 1329 --S
C 2 132a -C-
C 4 132b --S
C 3 132c --S
C 4 132d -C-
C 3 132e --S (probably related to 132f)
C 3 132f -C- (probably related to 132e)
C 4 1330 -C-
C 2 1331 --S
* C 4 1332 --S
C 3 1333 --S
C 4 1334 -C-
C 4 1335 --S
C 4 1336 --S
C 4 1337 -C- (probably related to 1338)
C 4 1338 --S (probably related to 1337)
C 3 1339 --S
???
? 3 1402 -C- (occurs in 1025012, Sakura Blast A 2nd route)
? 2 1403 -C-
? 3 1410 --S
Partner cards/Simple mail
OK A 5 1500 --S player's own partner card
!* B 5 1501 --S partner cards list
! ? 3 1503 --S (card received)
! ? 3 1504 -C- (card accepted)
! C 4 1506 -C- (partner cards online status request)
! C 4 1507 --S (partner cards online status reply; whether cards are online or offline)
! ? 3 1508 -C- (edit partner card; self only?)
! ? 3 1509 --S (add card to the list)
! ? 4 150b -C- send simple mail
! ? 4 150d -C- (mark simple mail as read?)
! ? 4 150f --S receive simple mail
!* B 5 1512 --S blacklist cards list
! ? 2 1513 -C- (add to blacklist)
! ? 3 1514 -C- (send partner card)
! ? 4 1515 -C- (probably related to 1516)
? 4 1516 --S (probably related to 1515)
NPC characters
* A 4 1601 --S (probably npc AI parameters)
!* A 5 1602 --S player's available NPC and PM info
! ? 3 1603 -C- (receive npc card related; see tutorial)
! ? 2 1604 -C- (sort priority related)
! ? 3 1605 -C- (receive npc card related; see tutorial; sort priority related)
Counters
WIP ? 4 1701 -CS parties list request/reply
? 3 1702 -CS (probably join party request/reply)
OK B 4 1705 -C- party info recap request
!* B 4 1706 -CS party info recap change(C) reply(S)
OK C 4 1707 -C- menu event; select mission
OK B 4 1709 -C- party settings request
!* B 4 170a -CS party settings change(C) reply(S)
OK C 4 170b -C- counter background location points request
WIP C 4 170c --S counter background location points reply (9 of them total)
! ? 3 170d -C- (probably related to 170e)
? 3 170e --S (probably related to 170d)
? 4 170f --S (probably reply to 1707, but not all the time?)
OK C 4 1710 -C- counter background request
OK C 4 1711 --S counter background reply
???
! ? 2 1803 -C- (occurs in the AOTI story mission 1231022)
Trade
? 3 1901 -CS (trade request)
? 3 1902 --S
? 3 1903 -C-
? 3 1904 --S
Dialogs
OK A 5 1a01 -C- dialog request
OK B 4 1a02 --S dialog reply: standard
OK B 3 1a03 --S dialog reply: lumilass options
!* A 4 1a04 --S dialog reply: pp cube
! ? 3 1a05 -C- (lumilass: bought something)
OK B 4 1a07 --S dialog reply: types
? 3 1a08 -C- (shop delivery request)
? 3 1a09 --S (shop delivery reply)
Casino/Temple
! C 4 1d01 -C- (casino shop/coins request)
! C 3 1d04 --S
! C 3 1d05 --S
! C 4 1d06 -C- (casino roulette bet request)
! C 5 1d07 --S
! C 2 1d08 -C- (luck lady request)
! C 2 1d09 --S (luck lady reply)
! C 3 1d0a -C- (probably related to 1d0b; offering box)
! C 3 1d0b --S (probably related to 1d0a)
! C 3 1d0c -C- (casino enter; slot machine request)
! C 3 1d0d -C-
! C 4 1d0e -C-
! C 3 1d0f --S
C 4 1d10 --S
C 3 1d11 --S
C 4 1d12 --S
C 3 1d13 --S
C 3 1d16 --S
C 3 1d17 --S
C 3 1d18 --S
13 WIP 85 OK 336 Total
! means the command has already been analyzed, at least partially
* means the command is already found somewhere in the server but needs to be reviewed

View File

@ -0,0 +1,30 @@
010b
Size:32
Command:16 Channel:8 Garbage:8
FromLID:16 0:16
0:32
FromGID:32
0:32
0:32
0:32
0:32
0:32
0:32
FromGID:32
PartyPosOrLID:32
0:16 IntDir:16
PosX:32
PosY:32
PosZ:32
0:32
0:32
QuestID:32
ZoneID:32
MapID:32
EntryID:32
Size: 0x5c
Channel: 2
FromGID: should be the same in both the header and the body (even for NPC characters)
IntDir: character direction as a float converted to int:16

View File

@ -0,0 +1,32 @@
0111
Size:32
Command:16 Channel:8 Garbage:8
DestLID:16 Garbage:16
0:32
TargetGID:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
TargetGID:32
TargetLID:32
EventID:32
Param:32
Size: 60
Channel: 3
TargetGID: player or npc
DestTypeID: 00011300
EventID: 2 3 4 5 6 7
Param: only for EventID 3 and 7
Events:
2: ? ; Param=0
3: red screen of death; Param: whether to ask if the player wants to go back to lobby, 0 or 1
4: healing pad aura + sound; Param=0
5: ? ; Param=0
6: ? ; Param=0 ; sent for lobby area change just before 010d
7: EXP FULL message; Param is the enemy TargetID that triggered this

View File

@ -0,0 +1,40 @@
0115
Size:32
Command:16 Channel:8 Garbage:8
DestLID:16 Garbage:16
0:32
TargetGID:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
TargetGID:32
TargetLID:32
EnemyTargetID:32
Level:32
BlastBar:16 Luck:8 _UnknownJ:8
0:32
EXP:32
0:32
Money:32
PlayTime:32
for npc characters:
01000000:32 01000000:32 01000000:32 01000000:32 01000000:32 01000000:32 01000000:32 01000000:32
01000000:32 01000000:32 01000000:32 01000000:32 01000000:32 01000000:32 01000000:32 01000000:32
4e4f4630:32 08000000:32 00000000:32 00000000:32 4e454e44:32
for player characters:
_UnknownK:32 _UnknownL:32 0:32 0:32 0:32
ClassLevelAndEXP:32 ClassLevelAndEXP:32 ClassLevelAndEXP:32 ClassLevelAndEXP:32
ClassLevelAndEXP:32 ClassLevelAndEXP:32 ClassLevelAndEXP:32 ClassLevelAndEXP:32
ClassLevelAndEXP:32 ClassLevelAndEXP:32 ClassLevelAndEXP:32 ClassLevelAndEXP:32
ClassLevelAndEXP:32 ClassLevelAndEXP:32 ClassLevelAndEXP:32 ClassLevelAndEXP:32
Size: 168
Channel: 3
DestTypeID: 00011300
TargetGID: either player or npc
EnemyTargetID: presumably the TargetID of the enemy that got you leveled
Level and following: seems to take the same format as 0201, refer there for details

View File

@ -0,0 +1,26 @@
0117
Size:32
Command:16 Channel:8 Garbage:8
DestLID:16 Garbage:16
0:32
TargetGID:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
TargetGID:32
TargetLID:32
SE1:32 SE2:32
HP:32
0:32
Size: 68
Channel: 3
TargetGID: either player or npc
DestTypeID: 00011300
SE1: 00000000 or 00000200(stay down) or 00001000(no idea); SE part 1
SE2: various; SE part 2
HP: how many HP to revive the player with

View File

@ -0,0 +1,26 @@
0200
Size:32
Command:16 Channel:8 Garbage:8
LID:16 Garbage:16
0:32
0:32
0:32
0:32
TypeID:32
GID:32
0:32
0:32
LID:16 ZoneID:16
NbPlayers:32
Var:320
Size: always 5c
TypeID: always 00011300
LID: same as in both places; probably the player's new LID after entering this zone
ZoneID: 0 1 2 3 4 5 6 7 8 9 10 11 32; I now have doubt over whether this is a ZoneID
NbPlayers: many values from 0 to more than 255; number of players in this zone, starts at 1 (self) - LID is supposed to stay below that
Var: either of
ffffffff 00040000 00000000 00000000 00000000 00000000 00000000 00140000 ffffffff ffffffff
ffffffff 06000000 02000000 00000000 00000000 40000000 00010000 00010000 ffffffff ffffffff
ffffffff 06000500 01000000 00000000 00000000 00040000 00010000 00140000 ffffffff ffffffff

View File

@ -0,0 +1,25 @@
0202
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
SessionID:32
0:1024
Size: 0xb0
Channel: 3
SessionID: like GID except typically only temporary; apparently official use the same counter for NPCs and for these SessionID
0:1024: can also contain an error message, though details are limited on that; it's similar to 0223 though
The following format will display an error:
0:32, 3:32/little, 0:48, Len:16/little, Error/binary, 0:Padding
The server should disconnect the client right after sending that command if an error has been sent.

View File

@ -0,0 +1,19 @@
0203
Size:32
Command:16 Channel:8 0:8
DestLID:16 0:16
0:32
0:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
TargetGID:32
TargetLID:32
Size: 52
Channel: 3
DestTypeID: 00011300

View File

@ -0,0 +1,23 @@
0204
Size:32
Command:16 Channel:8 Garbage:8
DestLID:16 Garbage:16
CharTypeID:32
CharGID:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
CharGID:32
CharLID:32
_UnknownC:32
Size: 0x38
Channel: 3
CharTypeID: 00001200 for players, 00001d00 for NPCs
CharGID: both NPC and players
DestTypeID: 00011300
_UnknownC: seems to be an LID that isn't either of DestLID or CharLID; should be the total number of players in the zone after the removal

View File

@ -0,0 +1,30 @@
0205
Size:32
Command:16 Channel:8 Garbage:8
LID:16 Garbage:16
0:32
0:32
0:32
0:32
TypeID:32
GID:32
0:32
0:32
ffffffff:32
ZoneID:32
MapID:32
EntryID:32
AreaNb:32
PlayerLID:16 _UnknownF:8 IsSeasonal:8
TypeID: always 00011300
ZoneID: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 20
MapID: 313 of them
EntryID: 0 1 2 3 4 5 6 7 8 10 11 12 13 14 20 21 22 23 32767
AreaNb: odd value, starts at 1, incremented after sending this command; replied by 0806
PlayerLID: LID of the related player
_UnknownF: sometimes 1
IsSeasonal: 0 otherwise
not sure how AreaNb works when 0205 is sent for spawning other players

View File

@ -0,0 +1,19 @@
0208
Size:32
Command:16 Channel:8 Garbage:8
DestLID:16 Garbage:16
0:32
0:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
AreaNb:32
Size: 48
Channel: 3
DestTypeID: 00011300
AreaNb: even value, starts at 2 following the first 0205 sent, incremented after sending this command; replied by 0808

View File

@ -0,0 +1,20 @@
020b
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Slot:32
0:8 BackToPreviousField:8 0:16
Size: 52
Channel: 2
Slot: character save slot
BackToPreviousField: if any, whether to go back to the previous field the character was in

View File

@ -0,0 +1,16 @@
020c
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 Garbage:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Size: 0x2c
Channel: 2, despite being sent by the server

View File

@ -0,0 +1,20 @@
020d
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
AuthGID:32
AuthKey:32
0:32
0:32
Size: 60
Channel: 2

View File

@ -0,0 +1,21 @@
020e
Size:32
Command:16 Channel:8 0:8
ffff:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
FileSize:32
_UnknownA:32
File/binary
0:32
Size: variable, depends on File
Channel: 3
_UnknownA: odd value but always in the same region; maybe the addition of all values in the file or something?

View File

@ -0,0 +1,20 @@
020f
Size:32
Command:16 Channel:8 0:8
ffff:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
SetID:8 SeasonID:8 0:16
FileSize:32
File:N
Size: depends on FileSize
SetID: which set file to open (0 to N - 1)
SeasonID: what season to load, if any; 255 otherwise

View File

@ -0,0 +1,19 @@
0210
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 Garbage:16
0:32
0:32
0:32
0:32
TypeID:32
GID:32
0:32
0:32
0:32
UnixTime:32
Size: 52
TypeID: 00011300
UnixTime: current unix time

View File

@ -0,0 +1,19 @@
0215
Size:32
Command:16 Channel:8 Garbage:8
LID:16 Garbage:16
0:32
0:32
0:32
0:32
TypeID:32
GID:32
0:32
0:32
_UnknownC:32
Size: 0x30
Channel: 3
TypeID: always 00011300
_UnknownC: 0 1 2 3 4 5 ffffffff (PartyPos? Leader's PartyPos?)

View File

@ -0,0 +1,22 @@
0216
Size:32
Command:16 Channel:8 0:8
ffff:16 0:16
0:32
0:32
0:32
0:32
TypeID:32
GID:32
0:32
0:32
IP:32
Port:16 0:16
Size: 52
Channel: 3
TypeID: 00000f00
GID: the temporary SessionID
IP: standard binary format, as four 8 bit integers
Port: standard binary format

View File

@ -0,0 +1,16 @@
0217
Size:32
Command:16 Channel:8 0:8
ffff:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Size: 44
Channel: 2

View File

@ -0,0 +1,21 @@
0219
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Username:192
Password:192
_UnknownC:64
Size: 100
Channel: 2
Username, Password: ASCII
_UnknownC: always 29525a52 7510439e?

View File

@ -0,0 +1,17 @@
021b
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 Garbage:16
0:32
0:32
0:32
0:32
TypeID:32
GID:32
0:32
0:32
Size: 44
Channel: 3
TypeID: 00011300

View File

@ -0,0 +1,17 @@
021c
Size:32
Command:16 Channel:8 Garbage:8
FromLID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Size: 0x2c
Channel: 2
FromLID: ffff or LID

View File

@ -0,0 +1,18 @@
021d
Size:32
Command:16 Channel:8 Garbage:8
FromLID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
EntryID:32
Size: 0x30
Channel: 2
EntryID: where to spawn if using it; 0 1 2 4 5 6 7 10 11 12 20 21 22 23

View File

@ -0,0 +1,28 @@
021e
Size:32
Command:16 Channel:8 0:8
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
NbUnis:32
Unis:N
per uni:
UniID:32
NbPlayers:16 Style:16
StrName:256 (padded with 0s)
StrPopulation:96 (padded with 0s)
Size: 0x2c6
Channel: 3
NbUnis: 11 on official
UniID: ffffffff for myroom; 1a 1c 1e 20 22 24 26 28 2a 2c for unis on official
NbPlayers: 0 for myroom
Style: 0 for centered (myroom), 0x0283 for left aligned + population count on the right (normal unis)

View File

@ -0,0 +1,20 @@
021f
Size:32
Command:16 Channel:8 Garbage:8
FromLID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
UniID:32
EntryID:32
Size: 0x34
Channel: 2
UniID: as sent in 021e, on official either 00 (cancel), 1a 1c 1e 20 22 24 26 28 2a 2c, or ffffffff (myroom)
EntryID: where to spawn, 0 1 2 4 5 6 7 10 11 12 20 21 22 23

View File

@ -0,0 +1,27 @@
0222
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 Garbage:16
TargetTypeID:32
TargetGID:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
UniID:32
NbPlayers:16 MaxPlayers:16
Name:352
LevelMax:32
Size: always 100
Channel: 3
TargetTypeID: 00001200
TargetGID: same as DestGID
DestTypeID: 00011300
UniID: on official: 0x15 0x1a 0x1c 0x1e 0x20 0x22 0x24 0x26 0x28 0x2a 0x2c; that means MyRoom has an UniID, 0x15
NbPlayers: from 1 to 0x19f on official; number of players in this universe (all rooms count as one universe)
MaxPlayers: 5000 for MyRoom, 670 for normal unis on official; 630 for normal unis on JP
LevelMax: 170 on official; 180 on JP

View File

@ -0,0 +1,33 @@
0223
Size:32
Command:16 Channel:8 0:8
0:32
0:32
0:32
0:32
0:32
TypeID:32
GID:32
0:32
0:32
AuthGID:32
AuthKey:32
(following is an optional part when a message must be shown)
_UnknownA:32
0:32
0:16 Length:16
Message:N
Size: 52
Channel: 3
TypeID: 00000f00
GID: the temporary one
AuthGID: the real account GID; 0 if something went wrong
AuthKey: random
(then the optional part)
_UnknownA: seems to be 3 for errors, but 0 is also found when the supplemental asks about free course
Length: Size / 2 + 2; to include the \0 at the end
Message: variable size
0:16 before Length is probably the same thing as MOTD: pages.

View File

@ -0,0 +1,23 @@
0225
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
NbPages:8 CurrentPage:8 Length:16
MOTD:N
Size: variable
Channel: 3
LID: ffff
NbPages: number of pages - 1
Page: starts at 0
Length: Size / 2 + 2; to include the \0 at the end
MOTD: variable size

View File

@ -0,0 +1,19 @@
0226
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
PageNumber:8 Language:8 0:16
Size: 48
Channel: 3
Page: starting from 0
Language: see 080e

View File

@ -0,0 +1,18 @@
0227
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
AcceptMOTD:32
Size: 48
Channel: 2
AcceptMOTD: 1 if accepted, 0 otherwise

View File

@ -0,0 +1,24 @@
0228
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 Garbage:16
FromTypeID:32
FromGID:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
MsgType:32
Duration:32
Message:N 0:16
Size: depends on Message
FromTypeID: 0 if sent from the server itself, 00011500 if sent from a GM account
FromGID: 0 if sent from the server itself, GID of the GM account otherwise
DestTypeID: 00011300
MsgType: 0 dialog in the middle of the screen; 1 scrolling message on top; 2 scrolling message on the right; 3 dialog in the middle for a specified Duration
Duration: in seconds, only for MsgType 3; value of 2 otherwise
Message: up to 511 unicode characters + ending \0\0

View File

@ -0,0 +1,15 @@
0230
Size:32
Command:16 Channel:8 0:8
ffff:16 0:16
TypeID:32
GID:32
0:64
TypeID:32
GID:32
0:64
Size: 0x2c
Channel: 3
TypeID: 00011300

View File

@ -0,0 +1,21 @@
0231
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
TypeID:32
GID:32
0:32
0:32
TypeID:32
GID:32
0:32
0:32
URLLength:32
URL:16384
Size: 560
Channel: 3
TypeID: always 00000f00
URLLength: length(URL) + 1; the + 1 is because it includes the ending \0
URL: as ASCII, padded with \0s

View File

@ -0,0 +1,17 @@
0236
Size:32
Command:16 Channel:8 0:8
DestLID:16 0:16
0:32
0:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
Size: 44
Channel: 3
DestTypeID: 00011300

View File

@ -0,0 +1,3 @@
023f
same as 0226 except on Channel 2

View File

@ -0,0 +1,49 @@
0304
Size:32
Command:16 Channel:8 Garbage:8
DestLID:16 0:16
FromTypeID:32
FromGID:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
SourceTypeID:32
SourceGID:32
0:32
0:32
ChatType:8 ChatCutIn:8 ChatCutInAngle:8 ChatMessageLength:8
ChatChannel:8 ChatCharacterType:8 0:8 _UnknownH:8
FromName:512
ChatMessage:N
Size: depends on ChatMessage
Channel: 2, 3
DestLID: sometimes ffff guessing in counters
FromTypeID: 0 on channel 2; 00011300 on channel 3, this is the one for the player source, or leader if an NPC
FromGID: 0 on channel 2; GID of the player source, or leader if an NPC on channel 3
DestTypeID: 0 on channel 2; 00011300 on channel 3
DestGID: 0 on channel 2; GID on channel 3
channel 2:
SourceTypeID: 00000000 (? found twice in the logs) or 00001200 (player) or 00001d00 (npc)
SourceGID: can be 00000000 too? found twice in the logs too; otherwise player or npc GID
channel 3:
SourceTypeID: 00001200 (player) or 00001d00 (npc); never 00000000 like on channel 2
SourceGID: player or npc GID; never 00000000 like on channel 2
ChatType: 0=normal 1=shout 2=whisper
ChatCutIn: 0=none 1=laugh 2=smile 3=wry_smile 4=surprised 5=confused 6=disappointed 7=deep_in_thought 8=sneer 9=dissatisfied 10=angry
ChatCutInAngle: 0=default 1=(down 1 time) 2=(down 2 times) 3=(down 3 times)
ChatMessageLength: a rounding happens, probably a good idea to check its validity
a 2 (D = len of a + 1)
hi 4 (D = len of hi + 2)
lol 4 (D = len of lol + 1)
lolo 6 (D = len of lolo + 2)
So probably string + \0\0 rounded below at a number multiple of 2.
ChatChannel: 0=public 1=private
ChatCharacterType: 0 2; probably 0 for a normal player, 2 for an NPC
_UnknownH: from 0 to 255
FromName: not available in v2.0
ChatMessage: variable length, finishes by a double \0

View File

@ -0,0 +1,20 @@
0806
Size:32
Command:16 Channel:8 Garbage:8
FromLID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
AreaNb:32
Size: 0x30
Channel: 2
AreaNb: value from 0205 replied as-is
not sure if the value is replied when 0205 is used for spawning other players

View File

@ -0,0 +1,25 @@
0807
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
QuestID:32
ZoneID:16 MapID:16
EntryID:16 AreaChangeNb:16
TargetPartyPosOrLID:32
Size: 0x3c
Channel: 2
ZoneID: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 20 ffff; ffff on a mission start
MapID: map number or ffff; ffff on a mission start
EntryID: 0 1 2 3 4 5 6 7 8 11 12 13 14 20 21 22 23 ff7f ffff; ffff on a mission start; ff7f probably when using the mission crystal
AreaChangeNb: number of times the player changed area
TargetPartyPosOrLID: ffffffff for self, otherwise the party pos of the NPC to move with the player (used in story missions)

View File

@ -0,0 +1,18 @@
0808
Size:32
Command:16 Channel:8 Garbage:8
FromLID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
AreaNb:32
Size: 0x30
Channel: 2
AreaNb: value from 0208 replied as-is

View File

@ -0,0 +1,17 @@
080d
Size:32
Command:16 Channel:8 Garbage:8
FromLID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Size: 0x2c
Channel: 2
FromLID: ffff or LID

View File

@ -0,0 +1,34 @@
080e
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
_UnknownB:8 Language:8 _UnknownC:8 Entrance:8
Platform:8 0:24
Version:32 -> Revision:8, Minor:4, _UnknownE:12, Major:4, _UnknownF:4
0:32
0:32
0:32
Size: 68
Channel: 2
Language:
0 Japanese
1 English
3 French
4 German
_UnknownB: always 0?
_UnknownC: always 1?
Entrance: 1 or 2
Platform:
0 PS2
1 PC
Version: the detail shown but as an unsigned int

View File

@ -0,0 +1,17 @@
080f
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
PartyPosOrLID:32
Size: always 48
Channel: 2

View File

@ -0,0 +1,23 @@
0811
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
CounterType:8 _UnknownC:8 FromZoneID:16
FromMapID:16 FromEntryID:16
CounterID:32
ffffffff:32
Size: 0x3c
Channel: 2
CounterType: apparently 1 for mission counters, 2 for others (shops, etc.)
_UnknownC: either 0 0x29 0x32 or 0xff, 0x29 only when _UnknownB is 2; 0x29 most often
CounterID: ffffffff used for shops etc., otherwise from 0 to 255 (a few unused values on official apparently)

View File

@ -0,0 +1,17 @@
0812
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Size: 0x2c
Channel: 2
LID: 0 1 2 3 4 5 so presumably the LID in counters (like in missions) is party-only

View File

@ -0,0 +1,19 @@
0813
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
ffffffff:32
NPCid:32
Size: 0x34
Channel: 2
NPCid: on official, 1 2 3 4 5 6 7 9 10 12 13 15 16 17 25 32 40 42 (and more?)

View File

@ -0,0 +1,16 @@
0814
Size:32
Command:16 Channel:8 Garbage:8
FromLID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Size: 0x2c
Channel: 2

View File

@ -0,0 +1,16 @@
0815
Size:32
Command:16 Channel:8 Garbage:8
FromLID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Size: 0x2c
Channel: 2

View File

@ -0,0 +1,22 @@
0818
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
GPU:512
CPU:384
_UnknownB:32
Size: 160
Channel: 2
GPU: ascii string
CPU: ascii string
_UnknownB: various values

View File

@ -0,0 +1,17 @@
0a05
Size:32
Command:16 Channel:8 Garbage:8
LID:16 Garbage:16
0:32
0:32
0:32
0:32
TypeID:32
GID:32
0:32
0:32
Size: 0x2c
Channel: 3
TypeID: always 00011300

View File

@ -0,0 +1,21 @@
0a06
Size:32
Command:16 Channel:8 0:8
LID:16 0:16
0:32
DestGID:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
ItemUUID00:32 ItemUUID01:32 ItemUUID02:32 ItemUUID03:32
...
ItemUUID56:32 ItemUUID57:32 ItemUUID58:32 ItemUUID59:32
Size: 284
Channel: 3
DestTypeID: 00011300
ItemUUID**: an unique identifier for the item

View File

@ -0,0 +1,17 @@
0a10
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
ItemID:32
Size: 0x2c
Channel: 2

View File

@ -0,0 +1,22 @@
0a11
Size:32
Command:16 Channel:8 Garbage:8
DestLID:16 Garbage:16
0:32
0:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
ItemID:32
Length:32
ItemDesc/binary 0:16
Size: depends on Length
Channel: 3
DestTypeID: 00011300
Length: in characters, not in bytes
ItemDesc: in UCS2, ending with 0:16

View File

@ -0,0 +1,28 @@
0c00
Size:32
Command:16 Channel:8 Garbage:8
LID:16 Garbage:16
0:32
0:32
0:32
0:32
TypeID:32
GID:32
0:32
0:32
QuestID:32
ffffffff:32 ffffffff:32 ffffffff:32 ffffffff:32
ffffffff:32 ffffffff:32 ffffffff:32 ffffffff:32
ffffffff:32 ffffffff:32 ffffffff:32 ffffffff:32
ffffffff:32 ffffffff:32 ffffffff:32 ffffffff:32
ffffffff:32 ffffffff:32 ffffffff:32 ffffffff:32
ffffffff:32 ffffffff:32 ffffffff:32 ffffffff:32
ffffffff:32 ffffffff:32 ffffffff:32 ffffffff:32
ffffffff:32 ffffffff:32 ffffffff:32 ffffffff:32
Size: b0
Channel: 3
LID: sometimes ffff in lobbies (probably when first joining, but not necessarily)
TypeID: 00011300
QuestID: is ffffff7f for counters

View File

@ -0,0 +1,18 @@
0c01
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
QuestID:32
Size: 0x30
Channel: 2
LID: the one for missions (0 1 2 3 4 5)

View File

@ -0,0 +1,18 @@
0c05
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
CounterID:32
Size: 0x30
Channel: 2
LID: the one for missions (0 1 2 3 4 5)

View File

@ -0,0 +1,23 @@
0c06
Size:32
Command:16 Channel:8 0:8
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
1:32
PositionList:4096
SizeList:4096
NbFiles:32
Files:N
Size: variable, generally big
PositionList: list of Position:32, starting from Files
SizeList: list of Size:32 for each files
Files: concatened list of files

View File

@ -0,0 +1,20 @@
0c07
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
QuestID:32
Rate:32
Size: 0x30
Channel: 2
QuestID: more than expected; 02421100 98d41000 a8fb1000 a9fb1000 abfb1000 b0d01000 c8cc1000 e0c81000
Rate: 0 1 2 3 4 on official, price = 200 x Rate

View File

@ -0,0 +1,19 @@
0c08
Size:32
Command:16 Channel:8 0:8
ffff:16 0:16
0:32
0:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
Reply:32
Size: 0x30
Channel: 3
DestTypeID: 00011300
Reply: 0 if allowed, 1 if refused

View File

@ -0,0 +1,17 @@
0c0d
Size:32
Command:16 Channel:8 Garbage:8
FromLID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Size: 0x2c
Channel: 2
FromLID: mission LID

View File

@ -0,0 +1,16 @@
0c0e
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Size: 0x2c
Channel: 2

View File

@ -0,0 +1,18 @@
0c0f
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
CounterID:32
Size: 0x30
Channel: 2
LID: 0 1 2 3 4 5

View File

@ -0,0 +1,26 @@
0c10
Size:32
Command:16 Channel:8 Garbage:8
DestLID:16 Garbage:16
Garbage:32
Garbage:32
Garbage:32
Garbage:32
DestTypeID:32
DestGID:32
0:32
0:32
1:8 Garbage:8 OptionsSize:16
Options:(OptionsSize * 8)
Size: variable
Channel: 3
DestTypeID: 00011300
OptionsSize: size of the list of per-mission options following this value
Options: a list of bytes with 1 byte per option
An option can be one of at least three values: 0 hidden; 2 visible but grayed; 3 visible and selectable.
A counter defines categories and missions inside them.
The list of options start with categories and then continue with missions directly.

View File

@ -0,0 +1,19 @@
0d02
Size:32
Command:16 Channel:8 0:8
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Slot:32
NameAndAppearance
Size: 324
Channel: 2
Slot: 0 1 2 3

View File

@ -0,0 +1,22 @@
0d05
Size:32
Command:16 Channel:8 0:8
0:32
TypeID:32
GID:32
0:32
0:32
TypeID:32
GID:32
0:32
0:32
Flags
Size: always 0x4e88
Channel: 3
TypeID, GID: same in both places
Flags: to be studied further, though it's the same flags list for everyone so no hurry there
There's apparently 3 categories of flags, which more than likely function differently.
The command 0d04 is used to set or retrieve flags information.

View File

@ -0,0 +1,16 @@
0d06
Size:32
Command:16 Channel:8 0:8
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Size: 44
Channel: 2

View File

@ -0,0 +1,22 @@
0d07
Size:32
Command:16 Channel:8 0:8
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
TextDisplaySpeed:8 Sound:8 MusicVolume:8 SoundEffectVolume:8
Vibration:8 RadarMapDisplay:8 CutInDisplay:8 MainMenuCursorPosition:8
0:8 Camera3rdY:8 Camera3rdX:8 Camera1stY:8
Camera1stX:8 Controller:8 WeaponSwap:8 LockOn:8
Brightness:8 FunctionKeySetting:8 _UnknownA:8 ButtonDetailDisplay:8
Size: 0x44
Channel: 2
_UnknownA: 0 1 2 3 4

View File

@ -0,0 +1,37 @@
1006
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 Garbage:16
0:32
0:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
EventID:8 PartyPos:8 0:16
Size: 48
Channel: 3
TypeID: 00011300
EventID: 2 3 4 5 6 7 8 9 10 11 12 13 15 16 on official
PartyPos: optional, depends on EventID
EventID:
2: removes party people
3: you have been removed by the party leader message + remove party info
4 + PartyPos: X has left the party message
5 + PartyPos: X party leader change on the left
6 + PartyPos: ?
7 + PartyPos: X is the new party leader message
8 + PartyPos: X has been removed from the party + remove party info
9 + PartyPos: ?
10: Mission "%s" end message
11: The party leader has cancelled the mission message
12: ?
13 + PartyPos: X has been removed from the party + remove SOME party info
14 + PartyPos: X has joined the party message
15 + PartyPos: ?
16 + PartyPos: X has left the party message + remove party info (NPC only?)

View File

@ -0,0 +1,18 @@
1007
Size:32
Command:16 Channel:8 Garbage:8
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
PartyPosOrLID:32
Name:512
Size: always 112
Channel: 2

View File

@ -0,0 +1,32 @@
100e
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 Garbage:16
0:32
0:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
1:8 PartyPos:8 ZoneID:16
MapID:16 EntryID:16
QuestID:32
LocationName:512
TargetLID:32
CounterID:32
CounterType:32
Size: 132
Channel: 3
DestTypeID: 00011300
PartyPos: 0 1 2 3 4 5; for the given character
ZoneID: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 20
MapID: many values
EntryID: 0 1 2 3 4 5 6 7 8 10 11 12 13 14 20 21 22 23 7fff
QuestID: many values; 7fffffff for counters
LocationName: UCS2; can contain color codes, finished by \0\0
CounterID: ffffffff when not a counter
CounterType: 0 when not a counter; 1 when in a mission counter; 2 when in a shop/clothes change counter

View File

@ -0,0 +1,17 @@
1020
Size:32
Command:16 Channel:8 0:8
ffff:16 0:16
0:32
0:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
Size: 44
Channel: 3
DestTypeID: 00011300

View File

@ -0,0 +1,19 @@
1022
Size:32
Command:16 Channel:8 Garbage:8
ffff:16 Garbage:16
0:32
0:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
HP:32
PartyPos:32
Size: 52
Channel: 3
DestTypeID: 00011300

View File

@ -0,0 +1,27 @@
1204
Size:32
Command:16 Channel:8 Garbage:8
DestLID:16 Garbage:16
0:32
0:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
0:32
20000000:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Size: 84
Channel: 3
DestTypeID: 00011300

View File

@ -0,0 +1,27 @@
1500
Size:32
Command:16 Channel:8 Garbage:8
DestLID:16 Garbage:16
0:32
0:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
Name:512
Race:8 Gender:8 Class:8 VoiceType:8
VoicePitch:8 0:24
CardGID:32
0:224
Comment:2816
1:8 4:8 1:8 CharacterSlot:8
0:64
Size: 0x200
Channel: 3
DestLID: 0 1 2 3 4 5 7 13 ffff (probably has a LID only when card is sent back after being edited)
DestTypeID: 00011300
CharacterSlot: 0 1 2 3

View File

@ -0,0 +1,17 @@
1705
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Size: 0x2c
Channel: 2
LID: 0 1 2 3 4 5

View File

@ -0,0 +1,18 @@
1707
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
QuestID:32
Size: 0x30
Channel: 2
QuestID: currently selected quest in the counter

View File

@ -0,0 +1,17 @@
1709
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Size: 0x2c
Channel: 2
LID: 0 1 2 3 4 5

View File

@ -0,0 +1,17 @@
170b
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
Size: 0x2c
Channel: 2
LID: 0 1 2 3 4 5

View File

@ -0,0 +1,18 @@
1710
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
CounterID:32
Size: 0x30
Channel: 2
LID: 0 1 2 3 4 5

View File

@ -0,0 +1,30 @@
1711
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
TypeID:32
GID:32
0:32
0:32
Background:8 Garbage:24
Size: 0x30
Channel: 3
TypeID: always 00011300
Background: 4 5 6 7 ff on official
The background is always ff on official except for the following counters:
8 5 GRM
112 5 Parum Cafe
114 6 Moatoob Pub
115 4 GUARDIANS HQ
116 5 Parum GUARDIANS
117 7 Neudaiz GUARDIANS
118 6 Moatoob GUARDIANS
170 4 (probably Program DF' counter)
177 4 Colony R&D

View File

@ -0,0 +1,52 @@
1a01
Size:32
Command:16 Channel:8 Garbage:8
LID:16 0:16
0:32
0:32
0:32
0:32
0:32
0:32
0:32
0:32
LID:32
ShopID:32
EventID:32
_UnknownB:32
_UnknownC:32
Size: 0x40
Channel: 2
LID: same in header and body
EventID:
0: npc talk
ShopID defined; _UnknownB 0; _UnknownC many values
send_1a02
2: lumilass
ShopID always 0; _UnknownB 0 or 1 but mostly 0; _UnknownC gets many values
send_1a03
3: pp cube request
ShopID, _UnknownB always 0; _UnknownC gets many values
send_1a04
4: pp cube recharge all
ShopID always 0
5: pp cube recharge one
ShopID always 0
6: put on clothes/parts
ShopID, _UnknownB always 0
7: remove clothes/parts
ShopID always 0
9: types menu (also type select counter); whether types are enabled + a few other values
ShopID, _UnknownB, _UnknownC always 0
send_1a07
apparently replies using 1a02 are dependent on the shopid? but the game doesn't seem to care
but there's only a few of them after the first unknown value:
80 -> send_1a02(0, 17, 17, 3, 9); %% lumilass
90 -> send_1a02(0, 5, 1, 4, 5); %% parum weapon grinding
91 -> send_1a02(0, 5, 5, 4, 7); %% tenora weapon grinding
92 -> send_1a02(0, 5, 0, 4, 0); %% yohmei weapon grinding
93 -> send_1a02(0, 5, 18, 4, 0); %% kubara weapon grinding
_ -> send_1a02(0, 0, 1, 0, 0)

View File

@ -0,0 +1,30 @@
1a02
Size:32
Command:16 Channel:8 Garbage:8
DestLID:16 Garbage:16
0:32
0:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
_UnknownC:32
_UnknownD:16 _UnknownE:16
_UnknownF:16 _UnknownG:16
Size: always 56
Channel: 3
DestTypeID: 00011300
_UnknownC: from around 00000009 to around 0000000e
_UnknownD to _UnknownG: 6 types of values
00000100 00000000: any other shop
05000100 04000500: parum weapon grinding
05000500 04000700: tenora weapon grinding
05000800 04000000: yohmei weapon grinding
05001200 04000000: kubara weapon grinding
11001100 03000900: lumilass only
see 1a01

View File

@ -0,0 +1,26 @@
1a03
Size:32
Command:16 Channel:8 Garbage:8
DestLID:16 Garbage:16
0:32
0:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
_UnknownC:32
NbHairstyles:32
NbHeadtypes:32
0:416
Hairstyles:Rest
0:32
Size: 1708; padded with 0s at the end so the size probably doesn't really matter, to be sure finish the packet with 0:32 though
Channel: 3
DestTypeID: 00011300
NbHairstyles: number of hairstyles, not a size
NbHeadtypes: number of headtypes, or 0 for fleshies; Headtypes list isn't sent though
Hairstyles: list of 4 bytes appearance codes

View File

@ -0,0 +1,25 @@
1a07
Size:32
Command:16 Channel:8 Garbage:8
DestLID:16 Garbage:16
0:32
0:32
0:32
0:32
DestTypeID:32
DestGID:32
0:32
0:32
_UnknownC:32
_UnknownD:16 0:16
0:32
HunterEnabled:8 RangerEnabled:8 ForceEnabled:8 FighgunnerEnabled:8
GuntecherEnabled:8 WartecherEnabled:8 FortefighterEnabled:8 FortegunnerEnabled:8
FortetecherEnabled:8 ProtranserEnabled:8 AcrofighterEnabled:8 AcrotecherEnabled:8
FighmasterEnabled:8 GunmasterEnabled:8 MasterforceEnabled:8 AcromasterEnabled:8
Size: 72
Channel: 3
DestTypeID: 00011300
*Enabled: 0 no 1 yes

97
doc/protocol/glossary.txt Normal file
View File

@ -0,0 +1,97 @@
AreaNb:
This number is associated with the player's session. It starts at 1 and is
increased with each 0205 and 0208 calls for this player. It is not sure how
0205 for spawning other players affects this value.
Channel:
Commands are sent over three channels: broadcast, client and server.
Broadcast packets are received from the client and directly broadcast to
all the other players in the same area with little modifications. Client
commands are instructions from the client to the server and server commands
are their opposite. Sometimes a command will use a wrong channel or a
different channel entirely. Broadcast is channel 1, client is channel 2
and server is channel 3.
Command:
The command is represented by a 16-bit integer value. It is more or less
ordered by categories although it is not clear how some commands relate
to others from the same category. See commands.txt for more details.
Counter:
A counter is a special area where players can start missions. It generally
features a 2D background and menus on the left. As such it is also used for
special shops like Lumilass or the clothes shops, along with special rooms
where players can change their clothes.
Mission counters all have a CounterID and a counter file with their
settings. This file is sent alongside all the quests available from this
counter. Counter files are server-side.
CounterID:
The CounterID is a 8-bit integer value going from 0 to 255 that represents
a mission counter.
EntryID:
The EntryID is a 16-bit integer value and is the entrance identifier for
a map. It is probably found as a parameter to entrance objects in the zone
file.
GID:
GUARDIANS ID, the unique player identifier.
LID:
LID is a misnomer for what is essentially a temporary player identifier
for the current zone he's in. Each zones maintain their lists of players
and NPCs inside it and they are identified using this unique identifier.
The LID is in fact a TargetID.
Map:
A map is an area where players can be, like Clyez City 1st Floor for
example. Map files are client-side.
A map is uniquely identified by a MapID and an area identifier.
MapID:
A MapID is a map identifier which represents a map file when associated
with an area identifier.
Quest:
A quest is a set of zones with a few related settings. Quests can be
lobbies, rooms or missions. Quests handle the area names and the list
of entrance and exit values to other areas. Quest files are server-side.
A quest is uniquely identified by a QuestID.
QuestID:
A QuestID is a quest identifier which represents a quest file.
TargetID:
A TargetID is an identifier for a target in a zone. A target can be a
player, an enemy, an NPC, an object or a vehicle. Not all objects have
a TargetID though. All TargetID are unique per zone.
Players and NPCs have a TargetID starting from 0 up to 1023.
From 1024 to 3823 the TargetID are for the various objects and enemies.
3824 and above are for vehicles.
Zone:
A zone is a set of maps along with the objects available to each maps,
a script, enemy parameters if any and any other file related to the zone.
Zones can be used for lobbies, rooms or missions. They contain one or more
maps. Zone files are server-side.
A zone is uniquely identified by the combination of a QuestID and a ZoneID.
ZoneID:
A ZoneID is a zone identifier which represents a zone file when associated
with a QuestID.