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
Flags:
0x0* -
Unicode
0xc* -
Ascii
Speech
Fonts:
0x0000 - Bold Text
0x0001 - Text with shadow
0x0002 - Bold+Shadow
0x0003 - Normal
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
Speech Trigger
Words:
0x0000 *withdrawal *
0x0001 *balance*
0x0001 *statement*
0x0002 *bank*
0x0003 *check *
0x0004 *join*
0x0004
*member*
0x0005
*quit*
0x0005 *resign*
0x0006 *guild*
0x0006 *guilds*
0x0007 *guard*
0x0008 *stable*
0x0009 *claim*
0x000a *job*
0x000b *dock*
0x000c *servant*
0x000c *serve*
0x000c *slave*
0x000d *agreed*
0x000e *quest*
0x000f *tracking*
0x000f *track*
0x000f *hunt*
0x0010
*dragon*
0x0011
*no*
0x0011
*nope*
0x0011 *nay*
0x0012 *yes*
0x0012 *yup*
0x0012 *aye*
0x0012 *yea*
0x0013 *slay*
0x0014 *hammer*
0x0015 *sword*
0x0015 *longsword*
0x0016 *help*
0x0016 *assistance*
0x0017 *glass*
0x0017 *enchanted*
0x0018 make *
0x0019 addtime *
0x001a gettime *
0x001b *hint*
0x001c *test*
0x001d *destination*
0x001e *i will take thee*
0x001f *disguise*
0x0020 *virtue guard*
0x0021 *order shield*
0x0022 *chaos shield*
0x0023 *i wish to lock this down*
0x0024 *i wish to release this*
0x0025 *i wish to secure this*
0x0026 *i wish to unsecure this*
0x0027 *i wish to place a strongbox*
0x0028 *i wish to place a trash barrel*
0x0029 *showthelist*
0x002a *i resign from my guild*
0x002b set *
0x002c raise *
0x002d drop
*
0x002e
*abracadabra*
0x002f *shazam*
0x0030 *news*
0x0031 *i honor thee*
0x0032 *i must consider my sins*
0x0033 *remove thyself*
0x0034 *i ban thee*
0x0035 i renounce my young player status*
0x0036 stop
0x0037 resetme
0x0038 *appraise*
0x0039 reset
0x003a hint
0x003b greetings
0x003b hello
0x003b yo
0x003b hey
0x003b hail
0x003c vendor buy
0x003c vendor purchase
0x003d vendor browse
0x003d vendor view
0x003d vendor look
0x003e vendor
collect
0x003e vendor
gold
0x003e vendor get
0x003f vendor status
0x003f vendor
info
0x0040 vendor
dismiss
0x0040 vendor replace
0x0041 vendor cycle
0x0042 set name *
0x0043 remove name
0x0044 name
0x0045 forward
0x0046 backward
0x0046 backwards
0x0046 back
0x0047 left
0x0047 drift left
0x0048 right
0x0048 drift right
0x0049 starboard
0x004a port
0x004b forward left
0x004c forward right
0x004d back left
0x004d backward left
0x004d backwards left
0x004e back right
0x004e backward right
0x004e backwards right
0x004f stop
0x0050 slow left
0x0051 slow right
0x0052 slow forward
0x0053 slow back
0x0053 slow backward
0x0053 slow backwards
0x0054 slow forward left
0x0055 slow forward right
0x0056 slow back right
0x0056 slow backward right
0x0056 slow backwards right
0x0057 slow back left
0x0057 slow backward left
0x0057 slow backwards left
0x0058 one left
0x0058 left one
0x0059 one right
0x0059 right one
0x005a one forward
0x005a forward one
0x005b one back
0x005b back one
0x005b one backward
0x005b backward one
0x005b one backwards
0x005b backwards one
0x005c one forward left
0x005c forward left one
0x005d one forward right
0x005d forward right one
0x005e one back right
0x005e back right one
0x005e one backward right
0x005e backward right one
0x005e one backwards right
0x005e backwards right one
0x005f one back left
0x005f back left one
0x005f one backward left
0x005f backward left one
0x005f one backwards left
0x005f backwards left one
0x0060 nav
0x0061 start
0x0062
continue
0x0063 goto
*
0x0064 single *
0x0065 turn right
0x0066 turn left
0x0067 turn around
0x0067 come about
0x0068 unfurl sail
0x0069 furl sail
0x006a drop anchor
0x006a lower anchor
0x006b raise anchor
0x006b lift anchor
0x006b hoist anchor
0x006c
*train
0x006d *train
parrying
0x006d *train
parry
0x006d *train
battle
0x006d *train
defense
0x006e *train
first
0x006e *train
aid
0x006e *train
heal
0x006e *train
healing
0x006e *train medicine
0x006f *train hide
0x006f *train hiding
0x0070 *train
steal
0x0070 *train
stealing
0x0071 *train
alchemy
0x0072 *train
animal
0x0072 *train
lore
0x0073 *train
appraising
0x0073 *train
identifying
0x0073 *train
appraise
0x0073 *train
item
0x0073 *train
identification
0x0073 *train
identify
0x0074 *train
armslore
0x0074 *train
arms
0x0075 *train
beg
0x0075 *train begging
0x0076 *train blacksmith
0x0076 *train smith
0x0076 *train blacksmithy
0x0076 *train smithing
0x0076 *train blacksmithing
0x0077 *train
bower
0x0077 *train
bow
0x0077 *train
arrow
0x0077 *train
fletcher
0x0077 *train
bowcraft
0x0077 *train
fletching
0x0078 *train
calm
0x0078 *train
peace
0x0078 *train peacemaking
0x0079 *train camp
0x0079 *train
camping
0x007a *train
carpentry
0x007a *train woodwork
0x007a *train woodworking
0x007b *train
cartography
0x007b *train
map
0x007b *train mapmaking
0x007c *train cooking
0x007c *train cook
0x007d *train detect
0x007d *train detecting
0x007d *train hidden
0x007e *train
entice
0x007e *train
enticement
0x007e *train
enticing
0x007f *train
evaluate
0x007f *train
intelligence
0x007f *train
evaluating
0x0080 *train
fish
0x0080 *train
fishing
0x0081 *train
incite
0x0081 *train
provoke
0x0081 *train
provoking
0x0081 *train
provocation
0x0082 *train lockpicking
0x0082 *train lock
0x0082 *train pick
0x0082 *train picking
0x0082 *train
locks
0x0083 *train
magic
0x0083 *train
magery
0x0083 *train
sorcery
0x0083 *train
wizardry
0x0083 *train
mage
0x0083 *train
wizard
0x0084 *train
resist
0x0084 *train
resisting
0x0084 *train
spells
0x0085 *train
battle
0x0085 *train
tactic
0x0085 *train
tactics
0x0085 *train
fight
0x0085 *train
fighting
0x0086 *train
peek
0x0086 *train
peeking
0x0086 *train
snoop
0x0086 *train
snooping
0x0087 *train
disarm
0x0087 *train
disarming
0x0087 *train
remove
0x0087 *train
removing
0x0088 *train
play
0x0088 *train
instrument
0x0088 *train
playing
0x0088 *train
music
0x0088 *train
musician
0x0088 *train musicianship
0x0089 *train poisoning
0x0089 *train
poison
0x008a *train
ranged
0x008a *train
missile
0x008a *train
missiles
0x008a *train shoot
0x008a *train shooting
0x008a *train
archery
0x008a *train
archer
0x008b *train
spirit
0x008b *train
ghost
0x008b *train
seance
0x008b *train
spiritualism
0x008c *train
tailoring
0x008c *train
tailor
0x008c *train
clothier
0x008d *train
tame
0x008d *train
taming
0x008e *train
taste
0x008e *train
tasting
0x008f *train tinker
0x008f *train tinkering
0x0090 *train
vet
0x0090 *train
veterinarian
0x0090 *train veterinary
0x0091 *train forensic
0x0091 *train
forensics
0x0092 *train
herd
0x0092 *train herding
0x0093 *train tracking
0x0093 *train track
0x0093 *train hunt
0x0093 *train hunting
0x0094 *train stealth
0x0095 *train
inscribe
0x0095 *train
scroll
0x0095 *train
inscribing
0x0095 *train
inscription
0x0096 *train
sword
0x0096 *train
swords
0x0096 *train
blade
0x0096 *train
blades
0x0096 *train swordsman
0x0096 *train swordsmanship
0x0097 *train
club
0x0097 *train
clubs
0x0097 *train
mace
0x0097 *train
maces
0x0098 *train
dagger
0x0098 *train
daggers
0x0098 *train
fence
0x0098 *train fencing
0x0098 *train spear
0x0099 *train hand
0x0099 *train wrestle
0x0099 *train wrestling
0x009a *train lumberjack
0x009a *train lumberjacking
0x009a *train woodcutting
0x009b *train
mining
0x009b *train
mine
0x009b *train smelt
0x009c *train meditation
0x009c *train meditate
0x009d *move*
0x009e *time*
0x009f *where is the shrine*
0x00a0 *where is abbey*
0x00a0 *where is empath*
0x00a1 *where is britain*
0x00a2 *where is buccaneer*
0x00a2 *where is den*
0x00a3 *where is jhelom*
0x00a4 *where is magincia*
0x00a5 *where is vesper*
0x00a6 *where is minoc*
0x00a7 *where is moonglow*
0x00a8 *where is nujel*
0x00a9 *where is ocllo*
0x00aa *where is serpent*
0x00ab *where is skara*
0x00ac *where is trinsic*
0x00ad *where is yew*
0x00ae *where is cove*
0x00af *where is the woodworker*
0x00b0 *where is the alchemist*
0x00b1 *where is the animal*
0x00b2 *where is the armorer*
0x00b3 *where is the artisan*
0x00b4 *where is the baker*
0x00b5 *where is the bank*
0x00b6 *where is the bard*
0x00b7 *where is the bath*
0x00b8 *where is the beekeeper*
0x00b9 *where is the smith*
0x00ba *where is the blackthorn*
0x00bb *where is the bowyer*
0x00bc *where is the butcher*
0x00bd *where is the carpenter*
0x00be *where is the casino*
0x00bf *where is the cemetery*
0x00c0 *where is the clothier*
0x00c1 *where is the cobbler*
0x00c2 *where is the court*
0x00c3 *where is the customs*
0x00c4 *where is the dock*
0x00c5 *where is the duel*
0x00c6 *where is the farm*
0x00c7 *where is the fish*
0x00c8 *where is the glassblower*
0x00c9 *where is the gypsy*
0x00ca *where is the healer*
0x00cb *where is the herbalist*
0x00cc *where is the inn*
0x00cc *where is the hostel*
0x00cd *where is the jail*
0x00ce *where is the jeweler*
0x00cf *where is the castle*
0x00d0 *where is the library*
0x00d1 *where is the lighthouse*
0x00d2 *where is the mage*
0x00d3 *where is the magic*
0x00d4 *where is the merchant*
0x00d5 *where is the mill*
0x00d6 *where is the observatory*
0x00d7 *where is the painter*
0x00d8 *where is the paladin*
0x00d9 *where is the provisioner*
0x00d9 *where is the shop*
0x00da *where is the ship*
0x00db *where is the stable*
0x00dc *where is the tanner*
0x00dd *where is the tavern*
0x00dd *where is the bard*
0x00dd *where is the pub*
0x00de *where is the temple*
0x00df *where is the theater*
0x00e0 *where is the tinker*
0x00e1 *where is the vet*
0x00e1 *where is the veterinarian*
0x00e2 *where is the weapon*
0x00e3 *where is the *trainer*
0x00e4 *i wish to access the city treasury*
0x00e5 *i wish to resign as finance minister*
0x00e6
*orders*
0x00e7
*patrol*
0x00e8 *follow*
0x00e9 *what is my faction term status*
0x00ea *message
faction*
0x00eb *message all*
0x00ec *showscore*
0x00ed i am sheriff*
0x00ee *i wish to resign as sheriff*
0x00ef *you are fired*
0x00f0 *need help*
0x00f1 *hiring*
0x00f2 *hire me*
0x00f3 *a job*
0x00f4 *i resign from my quest*
0x00f5 *enter
tutorial*
0x00f6 *enter haven*
0x00f7 *skill*
0x00f8 *job*
0x00f8 *what do you do*
0x00f8
*profession*
0x00f8
*occupation*
0x00f9 *trainer*
0x00fa *bye*
0x00fa *farewell*
0x00fa *see ya*
0x00fb *you need*
0x00fb *you want*
0x00fb *you require*
0x00fb *thou need*
0x00fb *thou want*
0x00fb *thou needs*
0x00fc *how are you*
0x00fc *are you well*
0x00fc *how art thou*
0x00fc *art thou well*
0x00fd *colony*
0x00fe *thou sell*
0x00fe *thou sale*
0x00fe *you sell*
0x00fe *you sale*
0x00ff *you buy*
0x00ff *you purchase*
0x00ff *purchase
0x00ff *sale*
0x0100 *undead*
0x0100 *skeleton*
0x0100 *graves*
0x0100 *graveyard*
0x0100 *crypt*
0x0101 *sweet dreams*
0x0102 *river*
0x0103 *lord british*
0x0103 *lb*
0x0103 *ruler*
0x0103 *king*
0x0104 *wayfarer's inn*
0x0104 *wayfareres
inn*
0x0105 *moat*
0x0106 *narrows*
0x0106 *narrows neck*
0x0106 *neck*
0x0107 *poor gate*
0x0108 *brittany
river*
0x0109 *blue boar*
0x010a *cat's lair*
0x010b *salty dog*
0x010c *unicorn horn*
0x010d *mechanism*
0x010e *main gate*
0x010f *northside*
0x0110 *oaken oar*
0x0111 *ocean*
0x0111 *waterfront*
0x0112 *old keep*
0x0113 *gate*
0x0114 *guard house*
0x0114 *guardhouse*
0x0115 *heal*
0x0116 *orc*
0x0117 *wall*
0x0118 *incantations*
0x0119 *bridge*
0x011a *mage's bridge*
0x011b *cypress bridge*
0x011c *northern bridge*
0x011d *great northern*
0x011e *great bridge*
0x011f *gung-farmer*
0x0120 *gung farmer*
0x0121 *river's gate*
0x0122 *where am i*
0x0122 *lost*
0x0123 *sage advice*
0x0124 *sorcerer's delight*
0x0125 *dummy*
0x0125 *training dummy*
0x0125 *dummies*
0x0125 *training dummies*
0x0126 *weather*
0x0127 *bedroll*
0x0128 *dupre*
0x0129 *where thou live*
0x0129 *where you live*
0x0129 *what city are you from*
0x0129 *what town are you from*
0x0129 *where you from*
0x0129 *where thou from*"
0x0129 *thou live*
0x0129 *you live*
0x012a *make money*
0x012a *earn money*
0x012a *get money*
0x012b *where thou work*
0x012b *where you work*
0x012c *how quit*
0x012c *log off*
0x012c
*logoff*
0x012d
*lolo*
0x012e
*camp*
0x012f
*destard*
0x012f *despise*
0x012f *covetous*
0x012f *hythloth*
0x012f *wrong*
0x012f *shame*
0x012f *deceit*
0x0130 *shamino*
0x0131 *order of the silver serpent*
0x0131 *knights*
0x0132 *moons*
0x0133 *virtue*
0x0133 *shrine*
0x0133 *truth*
0x0133 *love*
0x0133 *courage*
0x0133 *spirituality*
0x0133 *valor*
0x0133 *honor*
0x0133 *justice*
0x0133 *sacrifice*
0x0133 *honesty*
0x0133 *humility*
0x0133 *compassion*
0x0134 *gold*
0x0134 *treasure*
0x0135 *kindling*
0x0136 *moongates*
0x0137 *robere*
0x0138 *lord robere*
0x0139 *concerns*
0x0139 *troubles*
0x013a *avatar*
0x013b *weapon*
0x013b *sword*
0x013b *hammer*
0x013b *axe*
0x013b *mace*
0x013c *town hall*
0x013c *city hall*
0x013d *house of parliment*
0x013e *town square*
0x013f *new magincia*
0x0140 *merchant guild*
0x0141 *miner guild*
0x0142
*pirate*
0x0143
*zoo*
0x0144 *lycaeum*
0x0145 *scholar*
0x0146 *reagent*
0x0147 *teleporter*
0x0148 *gadget*
0x0149 *silver bow*
0x014a *mystical spirit*
0x014b *engineers guild*
0x014c *sea guild*
0x014d *vendor sell*
0x014e *i wish to cross*
0x014f *where is the miner*
0x0150 *where is the woodsman*
0x0151 *where is the mapmaker*
0x0152 *where is the thief*
0x0153 *where is the tailor*
0x0154 *train anatomy
0x0155 * come
0x0156 * drop
0x0157 * fetch
0x0158 * get
0x0159 * bring
0x015a * follow
0x015b * friend
0x015c * guard
0x015d * kill
0x015e * attack
0x015f * patrol
0x0160 * report
0x0161 * stop
0x0162 * hire
0x0163 * follow me
0x0164 all come
0x0165 all follow
0x0166 all guard
0x0167 all stop
0x0168 all kill
0x0169 all attack
0x016a all report
0x016b all guard me
0x016c all follow me
0x016d * release
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 (Battle Defense)
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)
· BYTE cmd
· BYTE[4] pattern1 (0xedededed)
· BYTE[4] pattern2 (0xffffffff)
· BYTE pattern3 (0x00)
· BYTE[30] char name
· BYTE[30] char password
· BYTE sex (0=male, 1=female)
· 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[2] unknown1
· BYTE[2] slot
· BYTE[4] clientIP
· BYTE[2] shirt color
· BYTE[2] pants color
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)
· BYTE cmd
· BYTE[4] pattern (0xFFFFFFFF)
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)
· BYTE cmd
· BYTE direction
· BYTE sequence number
· BYTE[4] fastwalk prevention key
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)
· BYTE cmd
· BYTE[2] blockSize
· BYTE SpeechType
· BYTE[2] Color
· BYTE[2] SpeechFont
· BYTE[?] msg - Null Terminated (blockSize - 8)
Note: Client Message
0x04 Packet
Last Modified on Friday, 19-May-2000
Request (2 bytes)
· BYTE cmd
· BYTE mode (0=off, 1=on)
Note: Client Message
0x05 Packet
Last Modified on Friday, 19-May-2000
Attack Request (5 bytes)
· BYTE cmd
· BYTE[4] ID to be attacked
Note: Client Message
0x06 Packet
Last Modified on Friday, 19-May-2000
Double click (5 bytes)
· BYTE cmd
· BYTE[4] ID of double clicked object
Note: Client Message
0x07 Packet
Last Modified on Friday, 19-May-2000
Pick Up Item(s) (7 bytes)
· BYTE cmd
· BYTE[4] item id
· BYTE[2] # of items in stack
Note: Client Message
0x08 Packet
Last Modified on Friday, 19-May-2000
Drop Item(s) (14 bytes)
· BYTE cmd
· BYTE[4] item id
· BYTE[2] X Location
· BYTE[2] Y Location
· BYTE Z Location
· BYTE[4] Move Into Container ID (FF FF FF FF if normal world)
Note: Client Message
0x09 Packet
Last Modified on Friday, 19-May-2000
Single click (5 bytes)
· BYTE cmd
· BYTE[4] ID of single clicked object
Note: Client Message
0x11 Packet
Last Modified on Friday, 19-May-2000
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[1] name change flag (0xFF = allowed, 0 = not allowed)
· BYTE[1] flag (0x00 – Stats after this flag are invalid. 0x01 – Stats after this flag are valid)
· BYTE sex (0=male, 1=female)
· 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
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)
· 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)
· "bow"
· "salute"
0x13 Packet
Last Modified on Thursday, 19-Nov-1998
Drop->Wear Item (10 bytes)
· BYTE cmd
· BYTE[4] itemid
· BYTE layer (see layer list at top)
· BYTE[4] playerID
Note: The layer byte should not be trusted.
0x1A Packet
Last Modified on Saturday, 13-Apr-1999
Object Information (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 direction
· BYTE zLoc
· if (yLoc & 0x8000)
· BYTE[2] dye
· if (yLoc & 0x4000)
· BYTE flag byte (See top)
0x1B Packet
Last Modified on Friday, 20-Nov-1998
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 flag byte
· BYTE highlight color
· BYTE[7] unknown5
0x1C Packet
Last Modified on Friday, 20-Apr-1998
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
· BYTE[2] Text Color
· BYTE[2] Font
· 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 Thursday, 19-Nov-1998
Draw Game Player (19 bytes)
· BYTE cmd
· BYTE[4] creature id
·
BYTE[2] bodyType
· BYTE unknown1 (0)
· BYTE[2] skin color / hue
· BYTE flag byte
· BYTE[2] xLoc
·
BYTE[2] yLoc
· BYTE[2] unknown2 (0)
· BYTE direction
· BYTE zLoc
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)
· BYTE cmd
· BYTE sequence #
· BYTE[2] xLoc
· BYTE[2] yLoc
· BYTE direction
· BYTE zLoc
0x22 Packet
Last Modified on Wednesday, 11-Nov-1998
Character Move ACK/ Resync Request(3 bytes)
· BYTE cmd
· BYTE sequence (matches sent sequence)
· 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] model-Gump
· 0x003c = backpack
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 (0)
· 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 Friday, 19-May-2000
Kick Player (5 bytes)
·
BYTE cmd
· BYTE[4] ID of GM who issued kick?
Note: Server Message
0x27 Packet
Last Modified on Friday, 19-May-2000
Reject Request to Move Items (2 bytes)
·
BYTE cmd
· BYTE unknown1 (0x00)
Note: Server Message
0x28 Packet
Last Modified on Friday, 19-May-2000
Clear Square (5 bytes)
· BYTE cmd
· BYTE[2] xLoc
· BYTE[2] yLoc
Note: Server Message
0x29 Packet
Last Modified on Friday, 19-May-2000
Paperdoll Clothing Added(1 bytes)
· BYTE cmd
Note: Server Message
0x2C Packet
Last Modified on Friday, 19-May-2000
Resurrection Menu Choice (2 bytes)
· BYTE cmd
· BYTE action (2=ghost, 1=resurrect, 0=from server)
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)
· BYTE cmd
· BYTE[4] itemid (always starts 0x40 in my data)
· BYTE[2] model (item hex #)
· BYTE (0x00)
· BYTE layer
· BYTE[4] playerID
· BYTE[2] color/hue
0x2F Packet
Last Modified on Saturday, 1-May-1999
Fight Occurring (10 bytes)
·
BYTE cmd
· BYTE unknown1 (0)
· 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 Thursday, 19-Nov-1998
Pause/Resume Client (2 bytes)
·
BYTE cmd
· BYTE pause/resume (0=pause, 1=resume)
0x34 Packet
Last modified on Thursday, 19-Nov-1998
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 Sunday, 30-Jan-2000
Server Version - Send Skills (Variable)
· BYTE cmd
· BYTE[2] blockSize
· BYTE Type (0x00= full list, 0xFF = single skill update)
· Repeat next until done - 46 skills
· 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)
· BYTE[2] null (00 00) (ONLY IF TYPE == 0x00)
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)
· 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 Saturday, 14-Nov-1998
Overall Light Level (2 bytes)
· BYTE cmd
· BYTE level
· 0x00 - day
· 0x09 - OSI night
· 0x1F - Black
· Max normal val = 0x1F
0x53 Packet
Last Modified on Sunday, 13-Feb-2000
Idle Warning(2 bytes)
· BYTE cmd
· BYTE value (0x07 – idle, 0x05 – another character is online)
“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)
·
BYTE cmd
· BYTE mode (0x00=quiet, repeating, 0x01=single normally played sound effect)
· BYTE[2] SoundModel
· BYTE[2] unknown3 (speed/volume modifier? Line of sight stuff?)
· BYTE[2] xLoc
·
BYTE[2] yLoc
· BYTE[2] zLoc
0x55 Packet
Last Modified on Monday, 26-Oct-1998
Login Complete, Start Game (1 byte)
· BYTE cmd
0x56 Packet
Last Modified on Sunday, 2-May-1999
Map Related(11 bytes)
· BYTE cmd
· BYTE[4] id
· BYTE command (1 = add map point, 5 = display map, 7 = set plotting state)
·
BYTE plotting state (1=on, 0=off, valid
only if command 7)
·
BYTE[2] x location (relative to upper
left corner of the map, in pixels, for points)
·
BYTE[2] y location (relative to upper
left corner of the map, in pixels, for points)
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
Login 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, 24-May-2000
Set Weather (4 bytes)
· BYTE cmd
· BYTE type (0x00 – “It starts to rain”, 0x01 – “A fierce storm approaches.”, 0x02 – “It begins to snow”, 0x03 - “A storm is brewing.”, 0xFF – None (turns off sound effects), 0xFE (no effect?? Set temperature?)
· BYTE num (number of weather effects on screen)
· BYTE temperature
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 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) (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)
· BYTE cmd
·
BYTE[2] blockSize
· BYTE[2] unknown1
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)
· BYTE cmd
· BYTE type
· 0x00 = Select Object
· 0x01 = Select X, Y, Z
· BYTE[4] cursorID
· BYTE Cursor Type
· Always 0 now
· 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 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)
· BYTE cmd
· BYTE[2] musicID
0x6E Packet
Last Modified on Monday, 19-Apr-1999
Character 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 forward/backwards(0x00=forward, 0x01=backwards)
· BYTE repeat Flag (0 - Don't repeat / 1 repeat)
· BYTE frame Delay (0x00 - fastest / 0xFF - Too slow to watch)
0x6F Packet
Last Modified on Friday, 20-Nov-1998
Secure Trading (Variable # of bytes)
· BYTE cmd
· BYTE[2] blockSize
· BYTE action
· BYTE[4] id1
· BYTE[4] id2
· BYTE[4] id3
· BYTE nameFollowing (0 or 1)
If (nameFollowing = 1)
0x70 Packet
Last Modified on Friday, 20-Nov-1998
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] target id
· BYTE[2] model of the first frame of the effect
· BYTE[2] xLoc
· BYTE[2] yLoc
· BYTE zLoc
· BYTE[2] xLoc of target
· BYTE[2] yLoc of target
·
BYTE zLoc of target
·
BYTE speed of the animation
·
BYTE duration (0=really long, 1=
shortest)
· BYTE[2] unknown2 (0 works)
· BYTE adjust direction during animation (1=no)
· BYTE explode on impact
0x71 Packet
Last Modified on Wednesday, 24-May-2000
Bulletin Board Message (Variable # of bytes)
· BYTE cmd
· BYTE[2] len
· BYTE subcmd
· BYTE[len-4] submessage
Submessage 0 – Display Bulletin Board
· BYTE[4] BoardID
· BYTE[22] board name (default is “bulletin board”, the rest nulls)
· BYTE[4] ID (0x402000FF)
· BYTE[4] zero (0)
Note: Server Message
Submessage 1 – Message Summary
· BYTE[4] BoardID
· BYTE[4] MessageID
· BYTE[4] ParentID (0 if top level)
· BYTE posterLen
· BYTE[posterLen] poster (null terminated string)
· BYTE subjectLen
· BYTE[subjectLen] subject (null terminated string)
· BYTE timeLen
· BYTE[timeLen] time (null terminated string with time of posting) (“Day 1 @ 11:28”)
Note: Server Message
Submessage 2 – Message
· BYTE[4] BoardID
· BYTE[4] MessageID
· BYTE posterLen
· BYTE[posterLen] poster (null terminated string)
· BYTE subjectLen
· BYTE[subjectLen] subject (null terminated string)
· BYTE timeLen
· BYTE[timeLen] time (null terminated string with time of posting) (“Day 1 @ 11:28”)
·
BYTE[29]
constant: (01 91 84 0A 06 1E FD 01 0B 15 2E 01 0B 17 0B 01 BB 20 46 04 66 13 F8
00 00 0E 75 00 00)
· BYTE numlines
For each line:
· BYTE linelen
· BYTE[linelen] body (null terminated)
Note: Server Message
Submessage 3 – Request Message
· BYTE[4] BoardID
· BYTE[4] MessageID
Note: Client Message
Submessage 4 – Request Message Summary
· BYTE[4] BoardID
· BYTE[4] MessageID
Note: Client Message
Submessage 5 – Post a message
· BYTE[4] BoardID
· BYTE[4] Replying to ID (0 if this is a top level / non-reply post)
· BYTE subjectLen (length of the subject, includes null termination)
· BYTE[subjectLen] subject (null terminated)
· BYTE numlines
For each line:
· BYTE linelen
· BYTE[linelen] body (null terminated)
Note: Client Message
Submessage 6 – Remove Posted Message
· BYTE[4] BoardID
· BYTE[4] MessageID
Note: Client Message
0x72 Packet
Last Modified on Saturday, 14-Nov-1998
Request War Mode Change/Send War Mode status (5 bytes)
· BYTE cmd
· BYTE flag
· 0x00 - Normal
· 0x01 - Fighting
· BYTE[3] unknown1 (always 00 32 00 in testing)
Server replies with 0x77 packet
0x73 Packet
Last Modified on Friday, 20-Nov-1998
Ping message (2 bytes)
· BYTE cmd
· BYTE seq
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 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)
· BYTE cmd
· BYTE[4] id
· BYTE[30] new name
0x76 Packet
Last Modified on Sunday, 2-May-1999
New Subserver (16 bytes)
· BYTE cmd
· BYTE[2] xLoc
· BYTE[2] yLoc
· BYTE[2] zLoc
·
BYTE[9] unknown
0x77 Packet
Last Modified on Sunday, 13-Feb-2000
Update Player (17 bytes)
· BYTE cmd
· BYTE[4] player id
· BYTE[2] model
· BYTE[2] xLoc
· BYTE[2] yLoc
· BYTE zLoc
· BYTE direction
· BYTE[2] hue/skin color
· BYTE flag (bit field)
· BYTE highlight color
0x78 Packet
Last Modified on Tuesday, 13-April-1999
Draw object (Variable # of bytes)
· BYTE cmd
· BYTE[2] blockSize
· BYTE[4] itemID/playerID
· BYTE[2] model (item hex #)
· if (itemID & 0x80000000)
· BYTE[2] amount/Corpse Model Num
· BYTE[2] xLoc (only 15 lsb)
· BYTE[2] yLoc
· if (xLoc & 0x8000)
· BYTE direction
· BYTE zLoc
· BYTE direction
· BYTE[2] dye/skin color
· BYTE flag
· BYTE notoriety (2's complement signed)
· if (BYTE[4] == 0x00 0x00 0x00 0x00)
· DONE
· else loop this until above if statement is satisified
· 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 cmd
· BYTE[2] blockSize
· BYTE[4] dialogID (echo'd back to the server in 7d)
· BYTE[2] menuid (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 Thursday, 06-May-1999
Client Response To Dialog (13 bytes)
· BYTE cmd
·
BYTE[4] dialogID (echoed back from 7C
packet)
· BYTE[2] menuid (echoed 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] userid
· BYTE[30] password
· BYTE unknown1 (not usually 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 byte
0x89 Packet
Last Modified on Saturday, 14-Nov-1998
Corpse Clothing (Variable # of bytes)
· BYTE cmd
· BYTE[2] blockSize
· BYTE[4] corpseID
· BYTE itemLayer
· BYTE[4] itemID
· BYTE terminator (0x00)
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)
· BYTE cmd
· BYTE[4] gameServer IP
· BYTE[2] gameServer port
· BYTE[4] new key
0x90 Packet
Last Modified on Sunday, 2-May-1999
Map message(19 bytes)
· BYTE cmd
· BYTE[4] key used
·
BYTE[2] gump art id (0x139D)
·
BYTE[2] upper left x location
·
BYTE[2] upper left y location
·
BYTE[2] lower right x location
·
BYTE[2] lower right y location
·
BYTE[2] gump width in pixels
·
BYTE[2] gump height in pixels
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, 2-Feb-2000
Books - Title Page (99 bytes)
· BYTE cmd
· BYTE[4] bookID
· BYTE write flag
· 0x00 - non-writable
· 0x01 - writable
· BYTE new flag
· BYTE[2] # of pages
· BYTE[60] title
· BYTE[30] author
Client sends a 0x93 message on book close… Look into this. J
Client Ver:
Books – Update Title Page (99 bytes)
· BYTE cmd
· BYTE[4] bookID
· BYTE[4] unknown (0)
· BYTE[60] title (zero terminated, garbage after terminator)
· BYTE[30] author (zero terminated, garbage after terminator)
0x95 Packet
Last Modified on Thursday, 30-Apr-1998 18:34:08 EDT
Dye Window (9 bytes)
· BYTE cmd
·
BYTE[4] itemID of dye target
· BYTE[2] ignored on send, model on return
· BYTE[2] model on send, color on return (default on server send is 0x0FAB)
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)
·
BYTE cmd
· BYTE request (0x01 from server, 0x00 from client)
·
BYTE[4] ID of deed
·
BYTE[12] unknown (all 0)
·
BYTE[2] multi model (item model -
0x4000)
·
BYTE[6] unknown (all 0)
0x9A Packet
Last Modified on Sunday, 15-Nov-1998
Console Entry Prompt(16 bytes)
· BYTE cmd
· BYTE[2] blockSize
· BYTE[4] objectID
· BYTE[4] prompt#
· BYTE[4] 0=request/esc, 1=reply
· BYTE[?] textstring (optional)
· BYTE terminator (0x00)
0x9B Packet
Last Modified on Wednesday, 06-May-1998 23:30:45 EDT
Request Help (258 bytes)
· BYTE cmd
· BYTE[257] (0x00)
0x9E Packet
Last Modified on Sunday, 15-May-1998
Sell List (Variable # of bytes)
· BYTE cmd
· BYTE[2] blockSize
· BYTE[4] shopkeeperID
· BYTE[2] numItems
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)
· BYTE cmd
· BYTE[2] blockSize
· BYTE[4] shopkeeperID
· BYTE[2] itemCount
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)
· BYTE cmd
· BYTE[2] server # chosen
0xA1 Packet
Last Modified on Tuesday, 20-Apr-1999
Update Current Health (9 bytes)
· BYTE cmd
· BYTE[4] playerID
· BYTE[2] maxHealth
· BYTE[2] currentHealth
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
0xA4 Packet
Last Modified on Friday, 15-May-2000
Spy on Client (149 bytes)
· BYTE cmd
· BYTE[148] Unknown (previously, this has had info such as your graphics card name, free HD space, number of processors, etc.)
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)
*Null terminated I think (Gimli)
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.
0xAB Packet
Last Modified on Friday, 20-Nov-1998
Gump Text Entry Dialog (Variable # of bytes)
· BYTE cmd
· BYTE[2] blockSize
· BYTE[4] id
· BYTE parentID
· BYTE buttonID
· BYTE textlen
· BYTE[?] text
· BYTE cancel (0=disable, 1=enable)
· BYTE style (0=disable, 1=normal, 2=numerical)
· BYTE[4] format (if style 1, max text len, if style2, max numeric value)
· BYTE text2len
· BYTE[?] text2
0xAC Packet
Last Modified on Saturday, 19-Feb-2000
Gump Text Entry Dialog Reply (Variable # of bytes)
· BYTE cmd
· BYTE[2] length
· BYTE[4] ID
· BYTE type
· BYTE index
· BYTE[3] unk
· BYTE[?] reply
0xAD Packet
Last Modified on Monday, 18-Feb-2002
Unicode/Ascii speech request (Variable # of bytes)
· BYTE cmd
· BYTE[2] blockSize
· BYTE Type
· BYTE[2] Color
· BYTE[2] Font
· BYTE[4] Language (Null Terminated)
· “enu“ - United States English
·
“des” - German
Swiss
·
“dea” - German
Austria
·
“deu” - German
Germany
· ... for a complete list see langcode.iff
· if (Type & 0xc0)
·
BYTE[1,5] Number of distinct Trigger
words (NUMWORDS).
12 Bit number, Byte #13 = Bit 11…4 of NUMWORDS, Hi-Nibble of Byte
#14 (Bit 7…4) = Bit 0…3 of NUMWORDS
·
BYTE[1,5] Index to speech.mul
12 Bit
number, Low Nibble of Byte #14 (Bits 3…0) = Bits 11..8 of Index, Byte #15 = Bits 7…0 of Index
·
UNKNOWNS = ( (NUMWORDS div 2) *3 ) +
(NUMWORDS % 2) – 1
div =
Integeger division, % = modulo operation, NUMWORDS >= 1
examples:
UNKNOWNS(1)=0, UNKNOWNS(2)=2, UNKNOWNS(3)=3, UNKNOWNS(4)=5, UNKNOWNS(5)=6,
UNKNOWNS(6)=8, UNKNOWNS(7)=9, UNKNOWNS(8)=11, UNKNOWNS(9)=12
·
BYTE[UNKNOWNS]
Idea behind this is
getting speech parsing load client side.
Thus this contains data OSI server
use for easier parsing.
It’s client side hardcoded and exact details are
unkown.
· BYTE[?] Ascii Msg – Null Terminated (blockSize – (15+UNKNOWNS) )
· else
·
BYTE[?][2] Unicode Msg - Null
Terminated (blockSize - 12)
Note1: For pre 2.0.7 clients Type is always < 0xc0
Note2: Uox based
emus convert post 2.0.7 data of this packet to pre 2.0.7 data if Type
>=0xc0
0xAE Packet
Last Modified on Wednesday, 11-Nov-1998
Unicode Speech message(Variable # of bytes)
· BYTE cmd
· BYTE[2] blockSize
· BYTE[4] ID
· BYTE[2] Model
· BYTE Type
· BYTE[2] Color
·
BYTE[2]
Font
·
BYTE[4]
Language
· BYTE[30] Name
· BYTE[?][2] Msg – Null Terminated (blockSize – 48)
0xAF Packet
Last Modified on Tuesday, 20-Apr-1999
Display Death Action (13 bytes)
· BYTE cmd
· BYTE[4] player id
· BYTE[4] corpse id
· BYTE[4] unknown (all 0)
0xB0 Packet
Last Modified on Tuesday, 20-Apr-1999
Send Gump Menu Dialog (Variable # of bytes)
· BYTE cmd
· BYTE[2] blockSize
· BYTE[4] id
· BYTE[4] gumpid
·
BYTE[4]
x
·
BYTE[4]
y
· BYTE[2] command section length
· BYTE[?] commands (zero terminated)
· BYTE[2] numTextLines
· 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)
· BYTE cmd
· BYTE[2] blockSize
· BYTE[4] id
· BYTE[4] gumpid
· BYTE[4] choiceid
0xB2 Packet
Last Modified on Friday, 10-Oct-1998 18:42:09 EDT
Chat Message (Variable # of bytes)
· BYTE cmd
· BYTE[2] blockSize
· BYTE[2] messageType
If message type==0x03EB (Display Enter Username window)
· BYTE[8] unknown (all 0’s)
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)
· BYTE cmd
· BYTE[63] chatname, if known by client (all 00 if unknown) (name in unicode)
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)
· BYTE cmd
· BYTE[4] id
· BYTE[1] language # (1 for enu)
· BYTE[3] language name (enu for English – United states)
0xB7 Packet
Last Modified on Thursday, 19-Nov-1998
Help/Tip Data (Variable # of bytes)
· BYTE cmd
· BYTE[2] blockSize
· BYTE[4] id
· BYTE[?][2] message, in unicode
· BYTE[2] null terminator (0x0000)
· BYTE[2] message terminator (0x3300)
0xB8 Packet
Last Modified on Monday, 19-Apr-1999
Request Char Profile (Variable # of bytes)
· BYTE cmd
· BYTE[2] blockSize
· BYTE mode (CLIENT ONLY! Does not exist in server message.)
· BYTE[4] id
If request, ends here.
If Update request
· BYTE[2] cmdType (0x0001 – Update)
· BYTE[2] msglen (# of unicode characters)
· BYTE[msglen][2] new profile, in unicode, not null terminated.
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)
· BYTE cmd
· BYTE unknown (0x00)
· BYTE unknown2 (0x01)
Server Message
0xBA Packet
Last Modified on Sunday, 13-Feb-2000
Quest Arrow (6 bytes)
· BYTE cmd
· BYTE active (1=on, 0=off)
· BYTE[2] xLoc
· BYTE[2] yLoc
Server Message
0xBB Packet
Last Modified on Sunday, 30-Jan-2000
Ultima
Messenger (9 bytes)
· BYTE cmd
· BYTE[4] id1
· BYTE[4] id2
Note: This is both a client and server message.
0xBC Packet
Last Modified on Friday, 19-May-2000
Seasonal Information(3 bytes)
· BYTE cmd
· BYTE id1
· BYTE id2
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)
· BYTE cmd
· BYTE[2] len
· BYTE[len-3] string stating the client version (0 terminated) (like: “1.26.4”)
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)
· BYTE cmd
· BYTE[2] len
· BYTE[2] subcmd
· BYTE[len-5] submessage
Note: Client & Server message
Subcommand 1: Initialize Fast Walk Prevention (24 bytes (for 29 total))
· BYTE[4] key1
· BYTE[4] key2
· BYTE[4] key3
· BYTE[4] key4
· BYTE[4] key5
· BYTE[4] key6
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))
· BYTE[4] newkey
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))
· BYTE[4] unknown (00 00 03 20)
· BYTE[4] unknown (00 00 00 05)
Note: Client Message
Subcommand 6: Party System (YES! Subsubcommands)
· BYTE subsubcommand #
Subsubcommand 1: Add a party member (4 bytes)
· BYTE[4] id (if 0, a targeting cursor appears)
Note: Client Message
Subsubcommand 1: Add party member(s) (1+ numMembers*4)
· BYTE numMembers (total number of members in the party)
Then, for each member in numMembers:
· BYTE[4] id
Note: Server Message
Subsubcommand 2: Remove a party member (4 bytes)
· BYTE[4] id (if 0, a targeting cursor appears)
Note: Client message
Subsubcommand 2: Remove a party member (? Bytes)
· BYTE numMembers (total number of members in the new party)
· BYTE[4] idofPlayerRemoved
Then, for each member in numMembers:
· BYTE[4] id
Note: Server message
Subsubcommand 3: Tell party member a message (Variable # of bytes)
· BYTE[4] id (of target, from client, of source, from server)
· BYTE[n][2] Null terminated Unicode message.
Note: Client & Server Message
Subsubcommand 4: Tell full party a message (Variable # of bytes)
· BYTE[n][2] Null terminated Unicode message.
Note: Client Message.
Subsubcommand 4: Tell full party a message (Variable # of bytes)
· BYTE[4] id (of source)
· BYTE[n][2] Null terminated Unicode message.
Note: Server Message
Subsubcommand 6: Party Can Loot Me? (1 byte)
· BYTE canloot (0=no, 1=yes)
Note: Client message
Subsubcommand 8: Accept join party invitation (4 bytes)
· BYTE[4] id (party leader’s id)
Note: Client message
Subsubcommand 9: Decline join party invitation (4 bytes)
· BYTE[4] id (party leader’s id)
Note: Client message
Subcommand 8: Set cursor hue (1 byte (for 6 total))
· BYTE hue (0 = Felucca, unhued. 1 = Trammel, hued gold)
Note: Server Message
Subcommand 11: Client Language (3 bytes (for 8 total)) //0x08
· BYTE[3] language (ENU, for English)
Note: Client Message
Subcommand 12: Closed Status Gump (4 bytes (for 8 total))
· BYTE[4] id (character id)
Note: Server Message
0xC1 Packet
Last Modified on Sunday, 30-Jan-2000
Predefined Message (Variable # of bytes (always 0x32 at present))
· BYTE cmd
· BYTE[2] len (0x32)
· BYTE[4] id
· BYTE[2] body
· BYTE type (6 – lower left, 7 on player)
·
BYTE[2]
hue
·
BYTE[2]
font
· BYTE[2] type (0x0007 so far)
· BYTE[2] message number (0xA120 base)
· 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:”
· BYTE[0x20] – speaker’s name
Server message
Note, type could be part of message number…