Jerrith’s UO Packets Guide
Note: This is still an early version of this document, which I am currently planning to revise significantly. I’m letting people have this version now due to popular demand. Items that I have not touched from the original can be noted by their further back modification date, and the fact that the modification date contains a time, which I have dropped.
This guide is based on the UOPackets.doc document “UOX Protocol” prepared by Damian. The information contained within come from the UOX source code, the FUSE source code, various message board postings, various programs I’ve written, and other sources, including information from Fallo & FUSE source, and Uziel and Rhad from NWO.
For simplicity, bytes are used, throughout this document. If the size of a piece of data is larger than a byte, the size will be written afterwards, enclosed in []’s. In the case of variable length data, attempts will be made to supply formulas to determine the width of pieces of data.
Also, seeing as how the number of “hack” programs available for UO has grown as of late, notes have been attached regarding checks to perform regarding the data, to insure it is unaltered.
Finally, before the specifications, just under this, you’ll find a list of some common variables, and what they represent.
Layers:
0x01 - One handed weapon
0x02 - Two handed weapon, shield, or misc.
0x03 - Shoes
0x04 - Pants
0x05 - Shirt
0x06 - Helm/Hat
0x07 - Gloves
0x08 - Ring
0x09 - Unused
0x0A - Neck
0x0B - Hair
0x0C - Waist (half apron)
0x0D - Torso
(inner) (chest armor)
0x0E - Bracelet
0x0F - Unused (backpack, but backpacks go to 0x15)
0x10 - Facial Hair
0x11 - Torso (middle) (sircoat, tunic, full apron, sash)
0x12 - Earrings
0x13 - Arms
0x14 - Back (cloak)
0x15 - Backpack
0x16 - Torso (outer) (robe)
0x17 - Legs (outer) (skirt/kilt)
0x18 - Legs
(inner) (leg armor)
0x19 - Mount
(horse, ostard, etc)
0x1A - NPC Buy Restock container
0x1B - NPC Buy no restock container
0x1C - NPC Sell container
0x1D - PC Bank Box
Direction:
0x00 - North
0x01 - Northeast
0x02 - East
0x03 - Southeast
0x04 - South
0x05 - Southwest
0x06 - West
0x07 - Northwest
If running, dir = dir|0x80 (so dirs become 0x80, 0x81, etc…)
Speech
Types:
0x00 - Regular
0x01 - Broadcast
0x02 - Emote (adds *'s as part of text)
0x06 - System
0x08 - Whisper
0x09 - Yell
Speech
Fonts:
0x0000 - Bold Text
0x0001 - Text with shadow
0x0002 - Bold+Shadow
0x0003 -
0x0004 - Gothic
0x0005 - Italic Script
0x0006 - Small Dark Letters
0x0007 - Colorful Font (Buggy?)
0x0008 - Rune font (Only use capital letters with this!)
0x0009 - Small Light Letters
Flag
Byte:
0x04 - Poisoned
0x20 - Movable if normally not
0x40 - War mode
0x80 - Hidden
Skill
List:
(1 indexed version. Some messages use it 0 indexed)
1 – Alchemy
2 – Anatomy
3 – Animal Lore
4 – Item ID (Appraise)
5 – Arms Lore
6 – Parrying (
7 – Begging
8 – Blacksmithing
9 – Bowcraft
10 – Peacemaking (Calming)
11 – Camping
12 – Carpentry
13 – Cartography
14 – Cooking
15 – Detect Hidden
16 – Enticement
17 – Evaluate Intelligence
18 – Healing
19 – Fishing
20 – Forensic Evaluation
21 – Herding
22 – Hiding
23 – Provocation
24 – Inscription
25 – Lockpicking
26 – Magery
27 – Magic Resistance
28 – Tactics
29 – Snooping
30 – Musicianship
31 – Poisoning
32 – Archery
33 – Spirit Speak
34 – Stealing
35 – Tailoring
36 – Animal Taming (Taming)
37 – Taste Identification
38 – Tinkering
39 – Tracking
40 – Veterinary
41 – Swordsmanship
42 – Mace Fighting
43 – Fencing
44 – Wrestling
45 – Lumberjacking
46 – Mining
47 – Meditation
48 – Stealth
49 – Remove Trap
50 – Necromancy
Packet Specifications
0x00 Packet
Last modified on Friday, 19-May-2000
Create Character (104 bytes)
Note: Client Message
Notes:
Str, dex and int should always sum to 65.
Str, dex and int should always be between 10 and 45, inclusive.
Skill1, skill2, and skill3 should never be the same value.
Skill1, skill2, and skill3 should always be between 0 and 45, inclusive.
Skill1value, skill2value, and skill3value should always sum to 100.
Skill1value, skill2value, and skill3value should always be between 0 and 50, inclusive.
SkinColor should always be between 0x3EA and 0x422, exclusive.
HairColor and facialHairColor should always be between 0x44E and 0x4AD, exclusive.
HairStyle should be between 0x203B and 0x204A, exclusive, and it should also exclude 0x203D to 0x2044, exclusive.
FacialHairStyle should be between 0x203E and 0x204D
Shirt color and Pants color need bounds checking too.
0x01 Packet
Last Modified on Friday, 19-May-2000
Disconnect Notification (5 bytes)
Note: Client message
Note: Sent when the user chooses to return to the main menu from the character select menu.
Note: Since the character select menu no longer has a main menu button, this message is no longer sent.
0x02 Packet
Last Modified on Friday, 19-May-2000
Move Request (7 bytes)
Note: Client Message
Note: sequence number starts at 0, after a reset. However, if 255 is reached, the next seq # is 1, not 0.
0x03 Packet
Last Modified on Friday, 20-Nov-1998
Talk Request (Variable # of bytes)
Note: Client Message
0x04 Packet
Last Modified on Friday, 19-May-2000
Request (2 bytes)
Note: Client Message
0x05 Packet
Last Modified on Friday, 19-May-2000
Attack Request (5 bytes)
Note: Client Message
0x06 Packet
Last Modified on Friday, 19-May-2000
Double click (5 bytes)
Note: Client Message
0x07 Packet
Last Modified on Friday, 19-May-2000
Pick Up Item(s) (7 bytes)
Note: Client Message
0x08 Packet
Last Modified on Friday, 19-May-2000
Drop Item(s) (14 bytes)
Note: Client Message
0x09 Packet
Last Modified on Friday, 19-May-2000
Single click (5 bytes)
Note: Client Message
0x11 Packet
Last Modified on Friday, 19-May-2000
Stat window info (66 bytes)
Note: Server Message
Note: For characters other than the player, currentHitpoints and maxHitpoints are not the actual values. MaxHitpoints is a fixed value, and currentHitpoints works like a percentage.
0x12 Packet
Last Modified on Sunday, 17-May-1998 15:27:53 EDT
Request Skill/Action/Magic Usage (Variable # of bytes)
· 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)
· "bow"
· "salute"
0x13 Packet
Last Modified on Thursday, 19-Nov-1998
Drop->Wear Item (10 bytes)
Note: The layer byte should not be trusted.
0x1A Packet
Last Modified on Saturday, 13-Apr-1999
Object Information (Variable # of bytes)
· BYTE[2] item count (or model # for corpses)
· BYTE Incr Counter (increment model by this #)
· BYTE direction
· BYTE[2] dye
· BYTE flag byte (See top)
0x1B Packet
Last Modified on Friday, 20-Nov-1998
Char Location and body type (37 bytes)
0x1C Packet
Last Modified on Friday, 20-Apr-1998
Send Speech (Variable # of bytes)
0x1D Packet
Last Modified on Monday, 13-Apr-1998 17:06:02 EDT
Delete object (5 bytes)
0x20 Packet
Last Modified on Thursday, 19-Nov-1998
Draw Game Player (19 bytes)
Note: Only used with the character being played by the client.
0x21 Packet
Last Modified on Wednesday, 06-May-1998 23:30:37 EDT
Character Move Reject (8 bytes)
0x22 Packet
Last Modified on Wednesday, 11-Nov-1998
Character Move ACK/ Resync Request(3 bytes)
0x23 Packet
Last Modified on Sunday, 17-May-1998 13:33:54 EDT
Dragging of Items (26 bytes)
0x24 Packet
Last Modified on Tuesday, 14-Apr-1998 20:53:33 EDT
Draw Container (7 bytes)
· 0x003c = backpack
0x25 Packet
Last Modified on Saturday, 02-May-1998 16:05:35 EDT
Add Item to Container (20 bytes)
0x26 Packet
Last Modified on Friday, 19-May-2000
Kick Player (5 bytes)
Note: Server Message
0x27 Packet
Last Modified on Friday, 19-May-2000
Reject Request to Move Items (2 bytes)
Note: Server Message
0x28 Packet
Last Modified on Friday, 19-May-2000
Clear Square (5 bytes)
Note: Server Message
0x29 Packet
Last Modified on Friday, 19-May-2000
Paperdoll Clothing Added(1 bytes)
Note: Server Message
0x2C Packet
Last Modified on Friday, 19-May-2000
Resurrection Menu Choice (2 bytes)
Note: Client and Server Message
Note: Resurrection menu has been removed from UO.
0x2E Packet
Last Modified on Thursday, 19-Nov-1998
Worn Item (15 bytes)
0x2F Packet
Last Modified on Saturday, 1-May-1999
Fight Occurring (10 bytes)
This packet is sent when there is a fight going on somewhere on screen.
0x33 Packet
Last Modified on Thursday, 19-Nov-1998
Pause/Resume Client (2 bytes)
0x34 Packet
Last modified on Thursday, 19-Nov-1998
Get Player Status (10 bytes)
· 0x04 - Basic Stats (Packet 0x11 Response)
· 0x05 = Request Skills (Packet 0x3A Response)
0x3A Packet
Last modified on Sunday, 30-Jan-2000
Server Version - Send Skills (Variable)
· BYTE[2] id # of skill (0x01 - 0x2e)
· BYTE[2] skill Value * 10
· BYTE[2] Unmodified Value * 10
· BYTE skillLock (0=up, 1=down, 2=locked)
Note: Can also send just one skill, to update that skill.
Client Version – Set Skill Lock (Variable # of bytes)
0x3B Packet
Last Modified on Wednesday, 06-May-1998 23:30:41 EDT
Buy Item(s) (Variable # of bytes)
· 0x00 - no items following
· 0x02 - items following
· 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[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)
0x4F Packet
Last Modified on Saturday, 14-Nov-1998
Overall Light Level (2 bytes)
· 0x00 - day
· 0x09 - OSI night
· 0x1F - Black
· Max normal val = 0x1F
0x53 Packet
Last Modified on Sunday, 13-Feb-2000
Idle Warning(2 bytes)
“Another character from this account is currently online in this world. You must either log in as that character or wait for it to time out.”
0x54 Packet
Last Modified on Sunday, 13-Feb-2000
Play Sound Effect (12 bytes)
0x55 Packet
Last Modified on Monday, 26-Oct-1998
Login Complete, Start Game (1 byte)
0x56 Packet
Last Modified on Sunday, 2-May-1999
Map Related(11 bytes)
0x5B Packet
Last Modified on Saturday, 18-Apr-1998 17:49:28 EDT
Time (4 bytes)
0x5D Packet
Last Modified on Monday, 13-Apr-1998 17:06:26 EDT
Login Character (73 bytes)
0x65 Packet
Last Modified on Wednesday, 24-May-2000
Set Weather (4 bytes)
Note: Server Message
Note: Temperature has no effect at present.
Note: maximum number of weather effects on screen is 70.
Note: If it is raining, you can add snow by setting the num to the num of rain currently going, plus the number of snow you want.
Note: Weather messages are only displayed when weather starts.
Note: Weather will end automatically after 6 minutes without any weather change packets.
Note: You can totally end weather (to display a new message) by teleporting. I think it’s either the 0x78 or 0x20 messages that reset it, though I haven’t checked to be sure (other possibilities, 0x4F or 0x4E)
0x66 Packet
Last Modified on Wednesday, 2-Feb-2000
Books - Page (Variable # of bytes)
· BYTE[2] page #
· BYTE[2] # of lines on page
· Server -> (-1 = no lines)
· Client -> (-1 = request page) (No longer used)
· 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)
The client sends two of these independent of the color chosen. It sends two of them in quick succession as part of the "same" packet. The unknown1 is 0x00 0x01 in the first and 0x00 0x02 in the second.
Note, this message has been removed. It is no longer used.
0x6C Packet
Last Modified on Sunday, 13-Feb-2000
Targeting Cursor Commands (19 bytes)
· 0x00 = Select Object
· 0x01 = Select X, Y, Z
· Always 0 now
· BYTE[4] Clicked On ID
· BYTE[2] click xLoc
·
BYTE[2] click yLoc
· BYTE unknown (0x00)
· BYTE click zLoc
· BYTE[2] model # (if a static tile, 0 if a map/landscape tile)
Note: the model # shouldn’t be trusted.
0x6D Packet
Last Modified on Sunday, 17-May-1998 13:33:59 EDT
Play Midi Music (3 bytes)
0x6E Packet
Last Modified on Monday, 19-Apr-1999
Character Animation (14 bytes)
· 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
0x6F Packet
Last Modified on Friday, 20-Nov-1998
Secure Trading (Variable # of bytes)
If (nameFollowing = 1)
0x70 Packet
Last Modified on Friday, 20-Nov-1998
Graphical Effect (28 bytes)
· 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
0x71 Packet
Last Modified on Wednesday, 24-May-2000
Bulletin Board Message (Variable # of bytes)
Submessage 0 – Display Bulletin Board
Note: Server Message
Submessage 1 – Message Summary
Note: Server Message
Submessage 2 – Message
For each line:
· BYTE linelen
· BYTE[linelen] body (null terminated)
Note: Server Message
Submessage 3 – Request Message
Note: Client Message
Submessage 4 – Request Message Summary
Note: Client Message
Submessage 5 – Post a message
For each line:
· BYTE linelen
· BYTE[linelen] body (null terminated)
Note: Client Message
Submessage 6 – Remove Posted Message
Note: Client Message
0x72 Packet
Last Modified on Saturday, 14-Nov-1998
Request War Mode Change/Send War Mode status (5 bytes)
·
0x00 -
· 0x01 - Fighting
Server replies with 0x77 packet
0x73 Packet
Last Modified on Friday, 20-Nov-1998
0x74 Packet
Last Modified on Sunday, 03-May-1998 22:52:07 EDT
Open Buy Window (Variable # of bytes)
· BYTE[4] price
· BYTE length of text description
· BYTE[text length] item description
NOTE: This packet is always preceded 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 Sunday, 13-Feb-2000
Rename Character (35 bytes)
0x76 Packet
Last Modified on Sunday, 2-May-1999
New Subserver (16 bytes)
0x77 Packet
Last Modified on Sunday, 13-Feb-2000
Update Player (17 bytes)
0x78 Packet
Last Modified on Tuesday, 13-April-1999
Draw object (Variable # of bytes)
· BYTE[2] amount/Corpse Model Num
· BYTE direction
· DONE
· BYTE[4] itemID
· BYTE[2] model (item hex # - only 15 lsb)
· BYTE layer
· if (model & 0x8000)
· BYTE[2] hue
0x7C Packet
Last Modified on Thursday, 06-May-1999
Open Dialog Box (Variable # of bytes)
·
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 Thursday, 06-May-1999
Client Response To Dialog (13 bytes)
0x80 Packet
Last Modified on Monday, 13-Apr-1998 17:06:30 EDT
Login Request (62 bytes)
0x82 Packet
Last Modified on Monday, 13-Apr-1998 17:06:32 EDT
Login Denied (2 bytes)
· 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)
0x86 Packet
Last Modified on Saturday, 18-Apr-1998 17:49:37 EDT
Resend Characters After Delete (304 bytes)
· 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)
0x89 Packet
Last Modified on Saturday, 14-Nov-1998
Corpse Clothing (Variable # of bytes)
· BYTE itemLayer
· BYTE[4] itemID
Followed by a 0x3C message with the contents.
0x8C Packet
Last Modified on Monday, 13-Apr-1998 17:06:42 EDT
Connect to Game Server (11 bytes)
0x90 Packet
Last Modified on Sunday, 2-May-1999
Map message(19 bytes)
0x91 Packet
Last Modified on Monday, 13-Apr-1998 17:06:45 EDT
Game Server Login (65 bytes)
0x93 Packet
Last Modified on Wednesday, 2-Feb-2000
Books - Title Page (99 bytes)
· 0x00 - non-writable
· 0x01 - writable
Client sends a 0x93 message on book close… Look into this. J
Client Ver:
Books – Update Title Page (99
bytes)
0x95 Packet
Last Modified on Thursday, 30-Apr-1998 18:34:08 EDT
Dye Window (9 bytes)
NOTE: This packet is sent by both the server and client
0x99 Packet
Last Modified on Friday, 20-Nov-1998
Bring Up House/Boat Placement View (26 bytes)
0x9A Packet
Last Modified on Sunday, 15-Nov-1998
Console Entry Prompt(16 bytes)
0x9B Packet
Last Modified on Wednesday, 06-May-1998 23:30:45 EDT
Request Help (258 bytes)
0x9E Packet
Last Modified on Sunday, 15-May-1998
Sell List (Variable # of bytes)
For each item, a structure containing:
· BYTE[4] itemID
· BYTE[2] itemModel
· BYTE[2] itemHue/Color
· BYTE[2] itemAmount
· BYTE[2] value
· BYTE[2] nameLength
· BYTE[?] name
0x9F Packet
Last Modified on Friday, 28-May-1999
Sell Reply (Variable # of bytes)
For each item, a structure containing:
· BYTE[4] itemID
· BYTE[2] quantity
0xA0 Packet
Last Modified on Monday, 13-Apr-1998 17:06:46 EDT
Select Server (3 bytes)
0xA1 Packet
Last Modified on Tuesday, 20-Apr-1999
Update Current Health (9 bytes)
0xA2 Packet
Last Modified on Tuesday, 21-Apr-1998 20:45:30 EDT
Update Current Mana (9 bytes)
0xA3 Packet
Last Modified on Tuesday, 21-Apr-1998 20:45:32 EDT
Update Current Stamina (9 bytes)
0xA4 Packet
Last Modified on Friday, 15-May-2000
Spy on Client (149 bytes)
0xA5 Packet
Last Modified on Wednesday, 06-May-1998 23:30:48 EDT
Open Web Browser (Variable # of bytes)
0xA6 Packet
Last Modified on Wednesday, 06-May-1998 23:30:49 EDT
Tips/Notice window (Variable # of bytes)
· 0x00 - tips window
· 0x01 - notice window
*Null terminated I think (Gimli)
0xA7 Packet
Last Modified on Wednesday, 06-May-1998 23:30:53 EDT
Request Tips/Notice (4 bytes)
· 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)
· 0xCC - Don't send
· 0x64 - Send Video card
· ?? -
· 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[30] character name
· BYTE[30] character password
· 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)
ID is set to 00 00 00 00 when attack is refused.
0xAB Packet
Last Modified on Friday, 20-Nov-1998
Gump Text Entry Dialog (Variable # of bytes)
0xAC Packet
Last Modified on Saturday, 19-Feb-2000
Gump Text Entry Dialog Reply (Variable # of bytes)
0xAD Packet
Last Modified on Friday, 20-Nov-1998
Unicode speech request (Variable # of bytes)
· “enu “ - United States English
0xAE Packet
Last Modified on Wednesday, 11-Nov-1998
Unicode Speech message(Variable # of bytes)
0xAF Packet
Last Modified on Tuesday, 20-Apr-1999
Display Death Action (13 bytes)
0xB0 Packet
Last Modified on Tuesday, 20-Apr-1999
Send Gump Menu Dialog (Variable # of bytes)
· BYTE[2] text length (in unicode (2 byte) characters.)
· BYTE[?] text (in unicode)
0xB1 Packet
Last Modified on Sunday, 27-Feb-2000
Gump Menu Selection (Variable # of bytes)
0xB2 Packet
Last Modified on Friday, 10-Oct-1998 18:42:09 EDT
Chat Message (Variable # of bytes)
If message type==0x03EB (Display Enter Username window)
If message type==0x03ED (Username accepted, display window)
· BYTE[4] unknown (all 0’s)
· BYTE[?][2] unicode username
· BYTE[4] unknown (all 0’s)
If message type==0x03E8
· BYTE[4] unknown (all 0’s)
· BYTE[?][2] unicode channel name
· BYTE[2] unknown (0x0000)
· BYTE[2] unknown (0x0030)
· BYTE[2] unknown (0x0000)
0xB5 Packet
Last Modified on Friday, 10-Oct-1998 18:42:09 EDT
Open Chat window (64 bytes)
This message is very incomplete. From the server, just know that it is 0xB5 len len, and pass the data through as is appropriate.
0xB6 Packet
Last Modified on Thursday, 12-Nov-1998
Send Help/Tip Request (9 bytes)
0xB7 Packet
Last Modified on Thursday, 19-Nov-1998
Help/Tip Data (Variable # of bytes)
0xB8 Packet
Last Modified on Monday, 19-Apr-1999
Request Char Profile (Variable # of bytes)
If request, ends here.
If Update request
Else If from server
· BYTE[?] character name (not unicode, null terminated.)
· BYTE[2] (0x0000) (a non-unicode title string?)
· BYTE[?][2] profile (in unicode, ? can be 0)
· BYTE[2] (0x0000)
· BYTE[2] terminator (0x3300)
0xB9 Packet
Last Modified on Monday, 26-Oct-1998
Enable Chat Button (3 bytes)
Server Message
0xBA Packet
Last Modified on Sunday, 13-Feb-2000
Quest Arrow (6 bytes)
Server Message
0xBB Packet
Last Modified on Sunday, 30-Jan-2000
Ultima Messenger (9 bytes)
Note: This is both a client and server message.
0xBC Packet
Last Modified on Friday, 19-May-2000
Seasonal Information(3 bytes)
Note: Server message
Note: if id2 = 1, then this is a season change.
Note: if season change, then id1 = (0=spring, 1=summer, 2=fall, 3=winter, 4 = desolation)
0xBD Packet
Last Modified on Sunday, 30-Jan-2000
Client Version Message (Variable # of bytes)
Note: Client Message
0xBF Packet
Last Modified on Friday, 19-May-2000
The 0xBF packet starts off with a cmd byte, followed by two bytes for the length. After that is a two byte value which is a subcmd, and the message varies after that.
General Info (5 bytes, plus specific message)
Note: Client & Server message
Subcommand 1: Initialize Fast Walk Prevention (24 bytes (for 29 total))
Note: Server Message
Note: This sets up stack on the client and whenever it moves, it takes the top value from this stack and uses it. (key1 starts at the top, key6 at the bottom).
Subcommand 2: Add key to Fast Walk Stack (4 bytes (for 9 total))
Note: Server Message
Note: This key is added to the top of the stack. In other words, it’s the one that will be used next. Basically, the other 5 only get used when the client is sending moves faster than the server is responding.
Subcommand 5: Unknown (8 bytes (for 13 total))
Note: Client Message
Subcommand 6: Party System (YES! Subsubcommands)
Subsubcommand 1: Add a party member (4 bytes)
Note: Client Message
Subsubcommand 1: Add party member(s) (1+ numMembers*4)
Then, for each member in numMembers:
Note: Server Message
Subsubcommand 2: Remove a party member (4 bytes)
Note: Client message
Subsubcommand 2: Remove a party member (? Bytes)
Then, for each member in numMembers:
Note: Server message
Subsubcommand 3: Tell party member a message (Variable # of bytes)
Note: Client & Server Message
Subsubcommand 4: Tell full party a message (Variable # of bytes)
Note: Client Message.
Subsubcommand 4: Tell full party a message (Variable # of bytes)
Note: Server Message
Subsubcommand 6: Party Can Loot Me? (1 byte)
Note: Client message
Subsubcommand 8: Accept join party invitation (4 bytes)
Note: Client message
Subsubcommand 9: Decline join party invitation (4 bytes)
Note: Client message
Subcommand 8: Set cursor hue (1 byte (for 6 total))
Note: Server Message
Subcommand 11: Client Language (3 bytes (for 8 total)) //0x08
Note: Client Message
Subcommand 12: Closed Status Gump (4 bytes (for 8 total))
Note: Server Message
0xC1 Packet
Last Modified on Sunday, 30-Jan-2000
Predefined Message (Variable # of bytes (always 0x32 at present))
· 0xA12D – “You cannot use skills.”
· 0xA2E2 – “But that’s not dead!”
· 0xA5F3 – “Help request aborted.”
· 0xA5F0 – “Please enter a brief description (up to 40 characters) of your problem:”
Server message
Note, type could be part of message number…