UOX Protocol
Prepared by Damian
These are the post compression, post encryption protocol codes used by UO client rev33. This document is based off of analysis of UOX source code, published by Cironian, and various message board postings and other sources.
UOX Implemented Codes
Client-Server Commands
Disconnect Request:
0x12 0x34 0x56 0x78
Login Functions
First Login
\x80
Server Select
\xA0
Character Select
\x5D
Second Login
\x91
Character Maintenance
Character Delete
\x83
Character Create
\x00
Play Functions
Walk
\x02
Keep alive
\x73
Resync Request
\x22
Talk
\x03
Dclick
\x06
Sclick
\x09
Target
\x6C
Equip Item
\x13
Get Item
\x07
Drop Item
\x08
Pack Item
\x40
Else drop
Combat Mode
\x72
Extended Command
x12
Action
\xC7 (Subsequent buffer bytes contain strings "Bow" and "Salute" for those two respective
actions.
Use Skill
\x24
GM Page
\x9B
Choice
\x7D
Color Select
\x95
Status Request
\x34
Rename Char
\x75
Read Book
\x66
Get Tip
\xA7
Spy
\xA4
Attack
\x05
Server-Client Commands
It has been reported that all server to client command sets include a 3-part message consisting of "pause", "game-command", and "resume" segments, instructing the client to wait until it has processed the command before sending any more commands to the server. Each game command is then followed by either a variable or static number of game command modifiers that provide further information about the message.
Control Commands
Pause Command:
/x33/x01
Resume Command:
/x33/x00
Game-Commands
Weather
Code Modifier Bytes
/x65 3
Modifier 1: Weather Type, Values: /x00 Clear Skies
/x01 Rain
/x02 Snow
Modifier 2: Direction? Force?
Packet Specifications
0x00 Packet
Last modified on Wednesday, 06-May-1998 23:30:36 EDT
Create Character (100 bytes)
- BYTE cmd
- BYTE[4] pattern1 (0xedededed)
- BYTE[4] pattern2 (0xffffffff)
- BYTE pattern3 (0x00)
- BYTE[30] char name
- BYTE[30] char password
- BYTE sex
- BYTE str
- BYTE dex
- BYTE int
- BYTE skill1
- BYTE skill1value
- BYTE skill2
- BYTE skill2value
- BYTE skill3
- BYTE skill3value
- BYTE[2] skinColor
- BYTE[2] hairStyle
- BYTE[2] hairColor
- BYTE[2] facial hair
- BYTE[2] facial hair color
- BYTE[2] location # from starting list
- BYTE[4] unknown1
- BYTE[4] clientIP
0x02 Packet
Last Modified on Sunday, 19-Apr-1998 14:42:51 EDT
Move Request (3 bytes)
- BYTE cmd
- BYTE direction
- 00 = north
- 01 = northeast
- 02 = east
- 03 = southeast
- 04 = south
- 05 = southwest
- 06 = west
- 07 = northwest
- BYTE sequence number
NOTE: If (direction & 0x80) --> running
0x03 Packet
Last Modified on Saturday, 18-Apr-1998 17:49:23 EDT
Talk Request (Variable # of bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE Type
- 0x00 - Regular
- 0x02 - Emote (adds *'s as part of text)
- 0x08 - Whisper
- 0x09 - Yell
- BYTE[2] Color
- BYTE unknown (0x00)
- BYTE[2] Font
- 0x00 - Bold Text
- 0x01 - Text with shadow
- 0x02 - Bold+Shadow
- 0x03 - Normal
- 0x04 - Gothic
- 0x05 - Italic Script
- 0x06 - Small Dark Letters
- 0x07 - Colorful Font (Buggy?)
- 0x08 - Rune font (Only use capital letters with this!)
- 0x09 - Small Light Letters
- BYTE[?] msg - Null Terminated (blockSize - 8)
0x05 Packet
Last Modified on Thursday, 16-Apr-1998 19:51:56 EDT
Attack Request (5 bytes)
- BYTE cmd
- BYTE[4] CharID to be attacked
0x06 Packet
Last Modified on Monday, 13-Apr-1998 17:05:50 EDT
Double click (5 bytes)
- BYTE cmd
- BYTE[4] item/char id
0x80000000 is set if the player hits the Open Paperdoll macro key
0x07 Packet
Last Modified on Tuesday, 14-Apr-1998 20:53:26 EDT
Pick Up Item(s) (7 bytes)
- BYTE cmd
- BYTE[4] item id
- BYTE[2] # of items in stack
0x08 Packet
Last Modified on Tuesday, 14-Apr-1998 20:53:27 EDT
Drop Item(s) (14 bytes)
- BYTE cmd
- BYTE[4] item id
- BYTE[2] # of items in stack
- BYTE[2] xLoc
- BYTE[2] yLoc
- BYTE zLoc
- BYTE[4] Move Into (FF FF FF FF if normal world)
0x09 Packet
Last Modified on Monday, 13-Apr-1998 17:05:52 EDT
Single click (5 bytes)
- BYTE cmd
- BYTE[4] item/char id
0x11 Packet
Last Modified on Wednesday, 06-May-1998 23:30:36 EDT
Stat window info (66 bytes)
- BYTE cmd
- BYTE[2] packet length (0x0042)
- BYTE[4] player id
- BYTE[30] playerName
- BYTE[2] currentHitpoints
- BYTE[2] maxHitpoints
- BYTE[2] flag
- 0x0000 - consider stats invalid
- 0x0001 - consider stats valid
- BYTE sex
- BYTE[2] str
- BYTE[2] dex
- BYTE[2] int
- BYTE[2] currentStamina
- BYTE[2] maxStamina
- BYTE[2] currentMana
- BYTE[2] maxMana
- BYTE[4] gold
- BYTE[2] armor class
- BYTE[2] weight
0x12 Packet
Last Modified on Sunday, 17-May-1998 15:27:53 EDT
Request Skill/Action/Magic Usage (Variable # of bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE type
- 0x24 ($) - skill
- BYTE[blockSize-4] skill (null terminated strings)
- "1 0" - anatomy
- "2 0" - animal lore
- "3 0" - item identification
- "4 0" - arms lore
- "6 0" - begging
- "9 0" - peacemaking
- "12 0" - cartography
- "14 0" - detect hidden
- "15 0" - entice
- "16 0" - evaluate intelligence
- "19 0" - forensic evaluation
- "21 0" - hiding
- "22 0" - provocation
- "23 0" - inscription
- "30 0" - poisoning
- "32 0" - spirit speak
- "33 0" - stealing
- "35 0" - taming
- "36 0" - taste identification
- "38 0" - tracking
- 0x56 (V) - Macro'd Spell
- BYTE[blockSize-4] Spell (null terminated strings)
- "2" - Create Food
- "3" - Feeblemind
- "4" - Heal
- "5" - Magic Arrow
- "6" - Night Sight
- "7" - Reactive Armor
- "8" - Weaken
- "9" - Agility
- "10" - Cunning
- "11" - Cure
- "12" - Harm
- "13" - Magic Trap
- "14" - Magic Untrap
- "15" - Protection
- "16" - Strength
- "17" - Bless
- "18" - Fireball
- "19" - Magic Lock
- "20" - Poison
- "21" - Telekenisis
- "22" - Teleport
- "23" - Unlock
- "24" - Wall of Stone
- "25" - Arch Cure
- "26" - Arch Protection
- "27" - Curse
- "28" - Fire Field
- "29" - Greater Heal
- "30" - Lightning
- "31" - Mana Drain
- "32" - Recall
- "33" - Blade Spirit
- "34" - Dispel Field
- "35" - Incognito
- "36" - Reflection
- "37" - Mind Blast
- "38" - Paralyze
- "39" - Poison Field
- "40" - Summon Creature
- "41" - Dispel
- "42" - Energy Bolt
- "43" - Explosion
- "44" - Invisibility
- "45" - Mark
- "46" - Mass Curse
- "47" - Paralyze Field
- "48" - Reveal
- "49" - Chain Lightning
- "50" - Energy Field
- "51" - Flame Strike
- "52" - Gate
- "53" - Mana Vampire
- "54" - Mass Dispel
- "55" - Meteor Shower
- "56" - Polymorph
- "57" - Earthquake
- "58" - Energy Vortex
- "59" - Ressurection
- "60" - Summon Air Elemental
- "61" - Summon Daemon
- "62" - Summon Earth Elemental
- "63" - Summon Fire Elemental
- "64" - Summon Water Elemental
- 0x58 (X) - Open Door
- BYTE null termination (0x00)
- 0xc7 - action
- BYTE[blockSize-4] Action (null terminated strings)
0x13 Packet
Last Modified on Wednesday, 06-May-1998 23:44:02 EDT
Remove Worn Item (10 bytes)
- BYTE cmd
- BYTE[4] itemid
- BYTE location
- 0x01 = weilding hand
- 0x02 = shield hand
- 0x03 = feet
- 0x04 = legs
- 0x05 = chest1 (regular shirt)
- 0x0B = head/hair
- 0x15 = backpack id
- 0x19 = horse
- BYTE[4] playerID
0x1A Packet
Last Modified on Sunday, 17-May-1998 13:33:54 EDT
Draw Object (Variable # of bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE[4] itemID
- BYTE[2] model #
- if (itemID & 0x80000000)
- BYTE[2] item count (or model # for corpses)
- if (model & 0x8000)
- BYTE Incr Counter (increment model by this #)
- BYTE[2] xLoc (only use lowest significant 15 bits)
- BYTE[2] yLoc
- if (xLoc & 0x8000)
- BYTE zLoc
- if (yLoc & 0x8000)
- if (yLoc & 0x4000)
- BYTE flag(s)
- 0x20 = Movable (used to make non-movable items movable)
- 0x80 = Hidden
All those conditional x, y things could be in different orders
0x1B Packet
Last Modified on Tuesday, 21-Apr-1998 23:03:23 EDT
Char Location and body type (37 bytes)
- BYTE cmd
- BYTE[4] player id
- BYTE[4] unknown1
- BYTE[2] bodyType
- BYTE[2] xLoc
- BYTE[2] yLoc
- BYTE[2] zLoc
- BYTE direction
- BYTE[2] unknown2
- BYTE[4] unknown3 (usually has FF somewhere in it)
- BYTE[4] unknown4
- BYTE mode (see packets 77 and 78)
- 0x00 - Normal
- 0x40 - Attack Mode
- 0x80 - Hidden
- BYTE unknown4 (*not* notoriety)
- BYTE[7] unknown5
0x1C Packet
Last Modified on Tuesday, 14-Apr-1998 20:53:31 EDT
Send Speech (Variable # of bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE[4] itemID (FF FF FF FF = system)
- BYTE[2] model (item hex # - FF FF = system)
- BYTE Type
- 0x00 - Regular
- 0x02 - Emote
- 0x06 - System
- 0x09 - Yell
- BYTE[2] Text Color
- BYTE unknown (0x00?)
- BYTE Font
- 0x00 - Bold Text
- 0x01 - Text with shadow
- 0x02 - Bold+Shadow
- 0x03 - Normal
- 0x04 - Gothic
- 0x05 - Italic Script
- 0x06 - Small Dark Letters
- 0x07 - Colorful Font (Buggy?)
- 0x08 - Rune font (Only use capital letters with this!)
- 0x09 - Small Light Letters
- BYTE[30] Name
- BYTE[?] Null-Terminated Message (? = blockSize - 44)
0x1D Packet
Last Modified on Monday, 13-Apr-1998 17:06:02 EDT
Delete object (5 bytes)
- BYTE cmd
- BYTE[4] item/char id
0x20 Packet
Last Modified on Tuesday, 21-Apr-1998 23:03:29 EDT
Draw creature (19 bytes)
- BYTE cmd
- BYTE[4] creature id
- BYTE[2] bodyType
- BYTE unknown1
- BYTE[2] skin color / hue
- BYTE mode
- 0x00 - Normal
- 0x40 - Attack
- 0x80 - Hidden
- BYTE[2] xLoc
- BYTE[2] yLoc
- BYTE[2] unknown2
- BYTE direction
- BYTE zLoc
0x21 Packet
Last Modified on Wednesday, 06-May-1998 23:30:37 EDT
Character Move Reject (8 bytes)
- BYTE cmd
- BYTE sequence #
- BYTE[2] xLoc
- BYTE[2] yLoc
- BYTE direction
- BYTE zLoc
0x22 Packet
Last Modified on Wednesday, 06-May-1998 23:30:41 EDT
Character Move ACK (3 bytes)
- BYTE cmd
- BYTE index (matches move index sent)
- BYTE (0x00)
0x23 Packet
Last Modified on Sunday, 17-May-1998 13:33:54 EDT
Dragging of Items (26 bytes)
- BYTE cmd
- BYTE[2] model #
- BYTE[3] unknown1
- BYTE[2] stack count
- BYTE[4] Source ID
- BYTE[2] Source xLoc
- BYTE[2] Source yLoc
- BYTE Source zLoc
- BYTE[4] Target id
- BYTE[2] Target xLoc
- BYTE[2] Target yLoc
- BYTE Target zLoc
0x24 Packet
Last Modified on Tuesday, 14-Apr-1998 20:53:33 EDT
Draw Container (7 bytes)
- BYTE cmd
- BYTE[4] item id
- BYTE[2] gump numbermodel
0x25 Packet
Last Modified on Saturday, 02-May-1998 16:05:35 EDT
Add Item to Container (20 bytes)
- BYTE cmd
- BYTE[4] item id to add
- BYTE[2] model
- BYTE unknown1
- BYTE[2] # of items
- BYTE[2] xLoc in container
- BYTE[2] yLoc in container
- BYTE[4] itemID of container
- BYTE[2] color
0x26 Packet
Last Modified on Saturday, 23-May-1998 17:08:06 EDT
Kick Player (5 bytes)
- BYTE cmd
- BYTE[4] ID of GM who issued kick?
0x27 Packet
Last Modified on Sunday, 17-May-1998 13:33:55 EDT
Reject Request to Move Items (2 bytes)
- BYTE cmd
- BYTE unknown1 (0x00)
0x28 Packet
Last Modified on Tuesday, 21-Apr-1998 20:45:16 EDT
Clear Square (5 bytes)
- BYTE cmd
- BYTE[2] xLoc
- BYTE[2] yLoc
0x2C Packet
Last Modified on Tuesday, 21-Apr-1998 20:45:18 EDT
Shift Body Type (2 bytes)
- BYTE cmd
- BYTE amount to subtract from current body type
0x2E Packet
Last Modified on Wednesday, 06-May-1998 23:44:03 EDT
Worn Items (15 bytes)
- BYTE cmd
- BYTE[4] itemid (always starts 0x40 in my data)
- BYTE[2] model (item hex #)
- BYTE (0x00)
- BYTE location
- 0x01 = weilding hand
- 0x02 = shield hand
- 0x03 = feet
- 0x04 = legs
- 0x05 = chest1 (regular shirt)
- 0x0B = head/hair
- 0x15 = backpack id
- 0x19 = a horse
- BYTE[4] playerID
- BYTE[2] color/hue
0x2F Packet
Last Modified on Thursday, 16-Apr-1998 19:51:59 EDT
Fight Occuring (10 bytes)
- BYTE cmd
- BYTE unknown1
- BYTE[4] ID of attacker
- BYTE[4] ID of attacked
This packet is sent when there is a fight going on somewhere on screen.
0x33 Packet
Last Modified on Monday, 13-Apr-1998 17:06:12 EDT
Start = 0x33 0x01
End = 0x33 0x00
0x34 Packet
Last modified on Thursday, 16-Apr-1998 19:52:01 EDT
Get Player Status (10 bytes)
- BYTE cmd
- BYTE[4] pattern (0xedededed)
- BYTE getType
- 0x04 - Basic Stats (Packet 0x11 Response)
- 0x05 = Request Skills (Packet 0x3A Response)
- ?? - ??
- BYTE[4] playerID
0x3A Packet
Last modified on Thursday, 16-Apr-1998 19:52:02 EDT
Send Skills (Variable/190 bytes)
- BYTE cmd
- BYTE[2] blockSize (currently 0x00BE)
- BYTE unknown1 (0x00)
- Repeat next until done - 46 skills
- BYTE[2] id # of skill (0x01 - 0x2e)
- BYTE[2] skill Value * 10
0x3B Packet
Last Modified on Wednesday, 06-May-1998 23:30:41 EDT
Buy Item(s) (Variable # of bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE[4] vendorID
- BYTE flag
- 0x00 - no items following
- 0x02 - items following
- For each item
- BYTE (0x1A)
- BYTE[4] itemID (from 3C packet)
- BYTE[2] # bought
0x3C Packet
Last Modified on Saturday, 02-May-1998 16:05:37 EDT
Items in Container (Variable # of bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE[2] # of Item segments
- Item Segments:
- BYTE[4] itemID
- BYTE[2] model
- BYTE unknown1 (0x00)
- BYTE[2] # of items in stack
- BYTE[2] xLoc
- BYTE[2] yLoc
- BYTE[4] Container ItemID
- BYTE[2] color
0x4E Packet
Last Modified on Sunday, 17-May-1998 13:33:55 EDT
Personal Light Level (6 bytes)
- BYTE cmd
- BYTE[4] creature id
- BYTE level
0x4F Packet
Last Modified on Sunday, 19-Apr-1998 14:42:53 EDT
Overall Light Level (2 bytes)
- BYTE cmd
- BYTE level
- 0x00 - day
- 0x09 - night
- Max val = 0x0F
0x54 Packet
Last Modified on Sunday, 17-May-1998 13:33:59 EDT
Sound Effect (12 bytes)
- BYTE cmd
- BYTE unknown1 (0x01)
- BYTE[2] unknown2 (sound model?)
- BYTE[2] unknown3 (speed/volume modifier?)
- BYTE[2] xLoc
- BYTE[2] yLoc
- BYTE unknown4 (0x00)
- BYTE zLoc
0x5B Packet
Last Modified on Saturday, 18-Apr-1998 17:49:28 EDT
Time (4 bytes)
- BYTE cmd
- BYTE hour
- BYTE minute
- BYTE second
0x5D Packet
Last Modified on Monday, 13-Apr-1998 17:06:26 EDT
Create Character (73 bytes)
- BYTE cmd
- BYTE[4] pattern1 (0xedededed)
- BYTE[30] char name
- BYTE[30] char password
- BYTE[4] slot choosen (0-based)
- BYTE[4] clientIP
0x65 Packet
Last Modified on Wednesday, 22-Apr-1998 17:58:20 EDT
Change Weather (4 bytes)
- BYTE cmd
- BYTE type
- 00 - dry
- 01 - rain
- 02 - snow
- BYTE[2] amount
0x66 Packet
Last Modified on Wednesday, 06-May-1998 23:44:04 EDT
Books - Page (Variable # of bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE[4] bookID
- BYTE[2] # of pages in this packet (when requesting always requests 1)
- For each page:
- BYTE[2] page #
- BYTE[2] # of lines on page
- Server -> (-1 = no lines)
- Client -> (-1 = request page)
- Client -> (> 0 = write page)
- Repeated for each line:
- BYTE[var] null terminated line
NOTE: # of lines on page is always -1 for page requests
0x69 Packet
Last Modified on Thursday, 23-Apr-1998 19:26:05 EDT
Change Text/Emote Color (5 bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE[2] unknown1
The client sends two of these independant of the color choosen. It sends two of them in quick succession as part of the "same" packet. The unkonwn1 is 0x00 0x01 in the first and 0x00 0x02 in the second.
0x6C Packet
Last Modified on Friday, 01-May-1998 17:57:31 EDT
Clicking Commands (19 bytes)
- BYTE cmd
- BYTE type
- 0x00 = server set cursor to pointer
- 0x01 = client return pointer position
- BYTE[4] charID
- BYTE Cursor Type
- 0x00 - Select Object
- 0x01 - Choose x, y, z
- The following are always sent but are only valid if sent by client
- BYTE[4] Clicked On ID
- BYTE[2] click xLoc
- BYTE[2] click yLoc
- BYTE unknown2 (0x00)
- BYTE click zLoc
- BYTE[2] clicked on model #
0x6D Packet
Last Modified on Sunday, 17-May-1998 13:33:59 EDT
Play Music (3 bytes)
0x6E Packet
Last Modified on Tuesday, 21-Apr-1998 20:45:22 EDT
Combat Related / Animation? (14 bytes)
- BYTE cmd
- BYTE[4] item/char ID
- BYTE[2] movement model
- 0x00 = walk
- 0x01 = walk faster
- 0x02 = run
- 0x03 = run (faster?)
- 0x04 = nothing
- 0x05 = shift shoulders
- 0x06 = hands on hips
- 0x07 = attack stance (short)
- 0x08 = attack stance (longer)
- 0x09 = swing (attack with knife)
- 0x0a = stab (underhanded)
- 0x0b = swing (attack overhand with sword)
- 0x0c = swing (attack with sword over and side)
- 0x0d = swing (attack with sword side)
- 0x0e = stab with point of sword
- 0x0f = ready stance
- 0x10 = magic (butter churn!)
- 0x11 = hands over head (balerina)
- 0x12 = bow shot
- 0x13 = crossbow
- 0x14 = get hit
- 0x15 = fall down and die (backwards)
- 0x16 = fall down and die (forwards)
- 0x17 = ride horse (long)
- 0x18 = ride horse (medium)
- 0x19 = ride horse (short)
- 0x1a = swing sword from horse
- 0x1b = normal bow shot on horse
- 0x1c = crossbow shot
- 0x1d = block #2 on horse with shield
- 0x1e = block on ground with shield
- 0x1f = swing, and get hit in middle
- 0x20 = bow (deep)
- 0x21 = salute
- 0x22 = scratch head
- 0x23 = 1 foot forward for 2 secs
- 0x24 = same
- BYTE unknown1 (0x00)
- BYTE direction
- BYTE[2] repeat (1 = once / 2 = twice / 0 = repeat forever)
- BYTE uknown2 (0x00)
- BYTE repeat Flag (0 - Don't repeat / 1 repeat)
- BYTE frame Delay (0x00 - fastest / 0xFF - Too slow to watch)
0x70 Packet
Last Modified on Tuesday, 21-Apr-1998 20:45:27 EDT
Graphical Effect (28 bytes)
- BYTE cmd
- BYTE direction type
- 00 = go from source to dest
- 01 = lightning strike at source
- 02 = stay at current x,y,z
- 03 = stay with current source character id
- ?? = ?
- BYTE[4] character id
- BYTE[4] unknown2 (0x00 00 00 00 - target of spell?)
- BYTE[2] unknown2 (0x37 35 here)
- BYTE[2] xLoc
- BYTE[2] yLoc
- BYTE zLoc
- BYTE[2] xLoc of target
- BYTE[2] yLoc of target
- BYTE zLoc of target
- BYTE[6] unknown3 (0x06 1e 00 00 01 00 in this one)
0x72 Packet
Last Modified on Sunday, 17-May-1998 13:34:00 EDT
Request Mode Change (5 bytes)
- BYTE cmd
- BYTE flag
- 0x00 - Normal
- 0x01 - Fighting
- BYTE[3] unknown1 (always 00 32 00 in testing)
Server replies with 0x77 packet
0x74 Packet
Last Modified on Sunday, 03-May-1998 22:52:07 EDT
Open Buy Window (Variable # of bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE[4] (vendorID | 0x40000000)
- BYTE # of items
- # of items worth of item segments
- BYTE[4] price
- BYTE length of text description
- BYTE[text length] item description
NOTE: This packet is always preceeded by a describe contents packet (0x3c) with the container id as the (vendorID | 0x40000000) and then an open container packet (0x24?) with the vendorID only and a model number of 0x0030 (probably the model # for the buy screen)
0x75 Packet
Last Modified on Saturday, 23-May-1998 17:08:06 EDT
Rename NPC (35 bytes)
- BYTE cmd
- BYTE[4] npcID
- BYTE[30] new name
0x77 Packet
Last Modified on Tuesday, 21-Apr-1998 21:47:57 EDT
Send Player (17 bytes)
- BYTE cmd
- BYTE[4] player id
- BYTE[2] model (item hex # - 0x0190 for human male)
- BYTE[2] xLoc
- BYTE[2] yLoc
- BYTE zLoc
- BYTE direction
- BYTE[2] hue/skin color
- BYTE mode (bit field)
- 0x00 - normal
- 0x40 - attack mode
- 0x80 - hidden?
- BYTE notoriety (signed 2's compliment)
NOTE: If (direction & 0x80) --> running
0x78 Packet
Last Modified on Sunday, 17-May-1998 13:34:01 EDT
Draw object (Variable # of bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE[4] itemID/playerID
- BYTE[2] model (item hex #)
- if (itemID & 0x80000000)
- BYTE[2] xLoc (only 15 lsb)
- BYTE[2] yLoc
- if (xLoc & 0x8000)
- BYTE zLoc
- BYTE direction
- BYTE[2] dye/skin color
- BYTE flag
- 0x00 - Normal
- 0x40 - Attack Mode
- 0x80 - Hidden?
- BYTE notoriety (2's complement signed)
- if (BYTE[4] == 0x00 0x00 0x00 0x00)
- else
- BYTE[4] itemID
- BYTE[2] model (item hex # - only 15 lsb)
- BYTE position
- 0x01 = weilding hand
- 0x02 = shield arm
- 0x03 = feet (shoes)
- 0x04 = head (hair)
- 0x15 = back (backpack)
- if (model & 0x8000)
NOTE: If (direction & 0x80) --> running
0x7C Packet
Last Modified on Sunday, 03-May-1998 22:52:13 EDT
Open Dialog Box (Variable # of bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE[4] dialogID (echo'd back to the server in 7d)
- If dialogID == playerID then it's a grey menu choice box
- BYTE[2] unknown1 (echo'd back to server in 7d)
- BYTE length of question
- BYTE[length of question] question text
- BYTE # of responses
- Then for each response:
- BYTE[2] model id # of shown item (if grey menu -- then always 0x00 as msb)
- BYTE[2] unknown2 (00 00 check or not?)
- BYTE response text length
- BYTE[response text length] response text
0x7D Packet
Last Modified on Sunday, 03-May-1998 22:52:18 EDT
Client Response To Dialog (13 bytes)
- BYTE cmd
- BYTE[4] dialogID (echo'd back from 7c packet)
- BYTE[2] unknown1 (echo'd back from 7c packet)
- BYTE[2] 1-based index of choice
- BYTE[2] model # of choice
- BYTE[2] unknown1 (00 00)
0x80 Packet
Last Modified on Monday, 13-Apr-1998 17:06:30 EDT
Login Request (62 bytes)
- BYTE cmd
- BYTE[30] sid
- BYTE[30] password
- BYTE unknown1 (not 0x00 - so not NULL)
0x82 Packet
Last Modified on Monday, 13-Apr-1998 17:06:32 EDT
Login Denied (2 bytes)
- BYTE cmd
- BYTE why
- 0x00 = unknown user
- 0x01 = account already in use
- 0x02 = account disabled
- 0x03 = password bad
- 0x04 and higher = communications failed
0x83 Packet
Last Modified on Wednesday, 06-May-1998 23:30:42 EDT
Delete Character (39 bytes)
- BYTE cmd
- BYTE[30] password
- BYTE[4] charIndex
- BYTE[4] clientIP
0x86 Packet
Last Modified on Saturday, 18-Apr-1998 17:49:37 EDT
Resend Characters After Delete (304 bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE # of characters
- Following repeated 5 times
- BYTE[30] character name
- BYTE[30] character password
0x88 Packet
Last Modified on Saturday, 18-Apr-1998 17:49:39 EDT
Open Paperdoll (66 bytes)
- BYTE cmd
- BYTE[4] charid
- BYTE[60] text
- BYTE flag
- 0x00 - Regular
- 0x40 - Attack Mode
(actually, anything other than 0x00 seems to mean attack mode)
0x89 Packet
Last Modified on Saturday, 23-May-1998 17:08:06 EDT
Corpse Clothing (?? bytes)
- BYTE cmd
- BYTE[??] unknown1
0x8C Packet
Last Modified on Monday, 13-Apr-1998 17:06:42 EDT
Connect to Game Server (11 bytes)
- BYTE cmd
- BYTE[4] gameServer IP
- BYTE[2] gameServer port
- BYTE[4] new key
0x91 Packet
Last Modified on Monday, 13-Apr-1998 17:06:45 EDT
Game Server Login (65 bytes)
- BYTE cmd
- BYTE[4] key used
- BYTE[30] sid
- BYTE[30] password
0x93 Packet
Last Modified on Wednesday, 06-May-1998 23:30:43 EDT
Books - Title Page (88 bytes)
- BYTE cmd
- BYTE[4] bookID
- BYTE[3] write flag
- 0x00 - non-writable
- 0x01 - writable
- BYTE[2] # of pages
- BYTE[50] title
- BYTE[30] author
0x95 Packet
Last Modified on Thursday, 30-Apr-1998 18:34:08 EDT
Dye Window (9 bytes)
- BYTE cmd
- BYTE[4] itemID of dyes
- BYTE[2] unknown1
- BYTE[2] color (default on server send is 0x0FAB)
NOTE: This packet is sent by both the server and client
0x99 Packet
Last Modified on Sunday, 17-May-1998 14:44:20 EDT
Bring Up House/Boat Placement View (26 bytes)
- BYTE cmd
- BYTE unknown1 (0x01 here -- possibly house type?)
- BYTE[4] ID of deed
- BYTE[20] unknown2
- 00 00 00 00 00 00 00 00 00 00 00 00 00 6c 00 00 00 04 00 00
0x9B Packet
Last Modified on Wednesday, 06-May-1998 23:30:45 EDT
Request Help (258 bytes)
- BYTE cmd
- BYTE[257] (0x00)
0xA0 Packet
Last Modified on Monday, 13-Apr-1998 17:06:46 EDT
Select Server (3 bytes)
- BYTE cmd
- BYTE[2] server # chosen
0xA1 Packet
Last Modified on Tuesday, 21-Apr-1998 20:45:29 EDT
Update Current Hitpoints (9 bytes)
- BYTE cmd
- BYTE[4] playerID
- BYTE[2] maxHP
- BYTE[2] currentHP
0xA2 Packet
Last Modified on Tuesday, 21-Apr-1998 20:45:30 EDT
Update Current Mana (9 bytes)
- BYTE cmd
- BYTE[4] playerID
- BYTE[2] maxMana
- BYTE[2] currentMana
0xA3 Packet
Last Modified on Tuesday, 21-Apr-1998 20:45:32 EDT
Update Current Stamina (9 bytes)
- BYTE cmd
- BYTE[4] playerID
- BYTE[2] maxStamina
- BYTE[2] currentStamina
0xA5 Packet
Last Modified on Wednesday, 06-May-1998 23:30:48 EDT
Open Web Browser (Variable # of bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE[blockSize-3] null terminated full web address
0xA6 Packet
Last Modified on Wednesday, 06-May-1998 23:30:49 EDT
Tips/Notice window (Variable # of bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE flag
- 0x00 - tips window
- 0x01 - notice window
- BYTE[2] unknown1
- BYTE[2] tip #
- BYTE[2] msgSize
- BYTE[?] message (? = blockSize - 10)
0xA7 Packet
Last Modified on Wednesday, 06-May-1998 23:30:53 EDT
Request Tips/Notice (4 bytes)
- BYTE cmd
- BYTE[2] last tip #
- BYTE flag
- 0x00 - tips window
- 0x01 - notice window
0xA8 Packet
Last Modified on Monday, 13-Apr-1998 17:06:50 EDT
Game Server List (Variable # of bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE System Info Flag
- 0xCC - Don't send
- 0x64 - Send Video card
- ?? -
- BYTE[2] # of servers
- Then each server --
- BYTE[2] serverIndex (0-based)
- BYTE[32] serverName
- BYTE percentFull
- BYTE timezone
- BYTE[4] pingIP
0xA9 Packet
Last Modified on Monday, 13-Apr-1998 17:07:00 EDT
Characters / Starting Locations (Variable # of bytes)
- BYTE cmd
- BYTE[2] blockSize
- BYTE # of characters
- Following repeated 5 times
- BYTE[30] character name
- BYTE[30] character password
- BYTE number of starting locations
- Following for as many locations as you have
- BYTE locationIndex (0-based)
- BYTE[31] town (general name)
- BYTE[31] exact name
0xAA Packet
Last Modified on Thursday, 16-Apr-1998 19:52:14 EDT
OK / Not OK To Attack (5 bytes)
- BYTE cmd
- BYTE[4] CharID being attacked
ID is set to 00 00 00 00 when attack is refused.