Subject: Jerrith's UO Packets Guide
From: "Saved by Windows Internet Explorer 8"
Date: Thu, 27 Jan 2011 13:31:39 -0500

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

Note:
pattern3 is set to 0xFF to early signal a Krrios' client user, where it expects
a 0xF0 | 0x00 before login confirm

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

Note:
Only send once after login. It’s mandatory to send it once.
Note2: OSI calls
this packet Login confirm

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)

BYTE
cmd

BYTE[2]
blockSize

BYTE[2] id#
of skill

BYTE
skillLock (0=up, 1=down, 2=locked)

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[2]
pattern2 (0x2661)

·
BYTE
pattern3 (0x96)

·
BYTE[30] char name

·
BYTE[30] char password

·
BYTE
slot choosen (0-based)

·
BYTE[4] clientIP

Note:
pattern3 set to 0xFF to early signal a Krrios' client user, where it expects a
0xF0 | 0x00 before login confirm

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)

BYTE[?]
charName

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-Feb-2002

Enable
locked client features (3 bytes)

·
BYTE
cmd

·
BYTE[2] feature#
Bit# 1 T2A upgrade, enables chatbutton,
Bit#
2 enables LBR update.  (of course
LBR installation is required)
(plays MP3 instead of midis, 2D LBR client
shows new LBR monsters,…)
Thus 0: neither T2A NOR LBR, equal to not sending
it at all,
1 is T2A, chatbutton,
2 is LBR without chatbutton,
3 is
LBR with chatbutton

Server
Message

Note1: this
message is send immediately after login.
Note2: on OSI  servers this controls features OSI
enables/disables via “upgrade codes.”

Note3: a 3
doesn’t seem to “hurt” older (NON LBR) clients.

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,26-Feb-20002

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 / Set MAP (1 byte (for 6 total))

·
BYTE
hue  (0 = Felucca, unhued /
BRITANNIA map.  1 = Trammel, hued gold / BRITANNIA
map, 2 = (switch to) ILSHENAR map)

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

Subcommand
0x13: Request popup menu (4 bytes(for 8 total))

·
BYTE[4] id (character id)

Note:
Client Message

Subcommand
0x14: Display Popup menu

BYTE[2]  Unknown(always 00
01)

BYTE     Number of entries in
the popup

For each
Entry

BYTE[2]
Entry  Tag (this will be
returned by the client on selection)

BYTE[2]   Test
ID   (id is the file number
for intloc#.language e.g intloc6.enu), and the index into that)  So 0x 17 EB  = 6123 decimal.  That would be file number 6, entry
123

BYTE[2]  UNKNOWN   (all zeros except the first
entry, which is 0x0020)

IF First
entry

BYTE[2]
Unknown    -
always 0xFFFF)

Note:
Server Side Message

Subcommand
0x15: Popup Entry Selection

BYTE[4]   Character ID

BYTE[2]   Entry Tag for line selected
provided in subcommand 0x14

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…

0xF0 Packet

Last Modified on Tuesday,
26-Feb-2002

Custom
client packet

·
BYTE
cmd

·
BYTE[2] len

·
BYTE
subcmd

·
BYTE[len - 4] data

Subcommand
0: Acknowledge login (1 byte (for 5 total))

·
BYTE
ack  (0 = Rejected,
unauthorized.  1 = Accepted, GM
priviledges. 2 = Accepted, player priviledges)

Note:
Server Message

Note: GM
priviledges unlock movement rate configurations