Session & login
17 opcodes · 3 missing in OpenDAoC
No opcodes in this family match the filters.
0x2C
S→C
LoginDenied
Login refused with error reason
23 sub-types
sent
›
| Value | Sub-type | Note |
| 0x01 | IncorrectPassword | |
| 0x02 | InvalidAccount | |
| 0x03 | AuthorizationServerUnavailable | |
| 0x05 | IncorrectClientVersion | |
| 0x06 | Error | |
| 0x07 | AccountNotFound | |
| 0x08 | AccountNoAccessAnyGame | |
| 0x09 | AccountNoAccessThisGame | |
| 0x0A | ClosedAccount | |
| 0x0B | AccountAlreadyLoggedIn | |
| 0x0C | TooManyPlayersLoggedIn | |
| 0x0D | GameCurrentlyClosed | |
| 0x10 | AccountAlreadyLoggedInToOtherServer | |
| 0x11 | AccountIsInLogoutProcedure | |
| 0x12 | TooManyFreeAccountsLoggedIn | |
| 0x13 | AccountNeedsInvite | |
| 0x14 | BannedAccount | |
| 0x15 | Unknown | |
| 0x19 | RequestedServerNotFound | |
| 0xAA | ServiceNotAvailable | |
20 of 23 listed.
0xA4
S→C
Quit
retail
Logout: quit game or back to character select
2 sub-types
sent
›
| Value | Sub-type | Note |
| 0 | to character select | totalOut=false |
| 1 | total quit | totalOut=true |
Character select & create
16 opcodes · 2 missing in OpenDAoC
No opcodes in this family match the filters.
0x10
C→S
CharacterSelectRequest
retail
Character chosen; server grants login and session ID
handled
›
0xC0
C→S
CharacterDeleteRequest
Delete character by name
client never sends
0xC2
C→S
Unknown
Check character name against invalid-name list
client never sends
0xC3
S→C
BadNameCheckReply
Character name allowed/forbidden reply
client ignores
0xD4
S→C
PlayerCreate
older clients only
0xF0
S→C
CharacterCreateReply
Confirm character created
client ignores
0xFC
C→S
CharacterOverviewRequest
retail
Choose realm / request character list
4 sub-types
handled
›
| Value | Sub-type | Note |
| 0 | realm query | SendRealm |
| 1 | Albion | SendCharacterOverview |
| 2 | Midgard | |
| 3 | Hibernia | |
0xFD
S→C
CharacterOverview
older clients only
0xFF
C→S
CharacterCreateRequest
Create, customize or delete a character
3 sub-types
handled
›
Pre-1.125 clients used 32-bit operation codes.
| Value | Sub-type | Note |
| 1 | create | |
| 2 | customize | CustomizeType byte follows: 1 face, 2 attributes, 3 both |
| 3 | delete | only when name empty |
World entry & regions
22 opcodes · 7 missing in OpenDAoC
No opcodes in this family match the filters.
0x5C
S→C
XFire
XFire integration flag
client ignores
0x9E
S→C
ClientRegions
Region list with server IP and ports
client ignores
0xEF
S→C
RegionSound
Level-up or region-enter sound
2 sub-types
sent
›
| Value | Sub-type | Note |
| 1 | level up sound | + realm byte |
| 2 | region enter sound | + sound ID |
Movement & position
12 opcodes
No opcodes in this family match the filters.
0xA9
C→S
PositionUpdate
retail
Player position, speed, zone, heading and state
handled
›
State and action fields are bit flags, not sub-types.
0xC8
S→C
Riding
Mount or dismount rider on steed
2 sub-types
sent
›
| Value | Sub-type | Note |
| 1 | mount | with seat slot |
| 0 | dismount | |
Objects, NPCs & targeting
21 opcodes · 1 missing in OpenDAoC
No opcodes in this family match the filters.
0x7A
C→S
ObjectInteractRequest
Interact with (right-click) a world object
handled
›
No sub-type: the server passes it to the target object.
0x99
C→S
DoorRequest
Open or close a door
2 sub-types
handled
›
The door ID says which kind: keep door or house door.
| Value | Sub-type | Note |
| 0x01 | open | |
| other | close | |
0xA5
C→S
ObjectUpdateRequest
Request object refresh (ignored by server)
client never sends
Combat, death & pets
9 opcodes
No opcodes in this family match the filters.
0x88
S→C
PetWindow
Open/update/close pet window with stance and buffs
3 sub-types
sent
›
| Value | Sub-type | Note |
| 2 | Open | ePetWindowAction.Open: create window |
| 1 | Update | ePetWindowAction.Update |
| 0 | Close | ePetWindowAction.Close / released |
0x8A
C→S
PetWindow
Pet window button: stance, movement or command
9 sub-types
handled
›
| Value | Sub-type | Note |
| b0=1 | aggro Aggressive | |
| b0=2 | aggro Defensive | |
| b0=3 | aggro Passive | |
| b1=1 | walk Follow | |
| b1=2 | walk Stay | |
| b1=3 | walk GoTarget | |
| b1=4 | walk ComeHere | |
| b2=1 | command Attack | |
| b2=2 | command Release | |
Spells, skills & effects
15 opcodes
No opcodes in this family match the filters.
0x4C
S→C
VisualEffect
retail
Multiplexed per-object visual/UI effects
10 sub-types
sent
›
| Value | Sub-type | Note |
| 0x03 | hex / warlock chamber | 5 effect bytes; used by SendHexEffect and SendWarlockChamberEffect |
| 0x04 | vampiir flight | 0 enable, 1 disable |
| 0x05 | region colour scheme | |
| 0x07 | NPC quest indicator | eQuestIndicator: None/Available/Finish/Lesson/Lore/Pending |
| 0x08 | blink UI panel | |
| 0x09 | free level state | |
| 0x0B | player title | |
| 0x0C | RvR guild banner | |
| 0x0D | minotaur relic window | |
| 0x0E | minotaur relic bar XP | |
0x7D
C→S
UseSpell
Cast spell, style or ability from a spell line
handled
›
The server decides whether the index is a spell, style or ability.
0xBB
C→S
UseSkill
Use ability, style, spell or spec from skill list
2 sub-types
handled
›
| Value | Sub-type | Note |
| 0 | full list index | index into all usable skills incl. specializations |
| >0 | non-spec index | index offset past specializations |
0xC4
S→C
DetailWindow
Text detail window (stats/titles or custom text)
2 sub-types
sent
›
| Value | Sub-type | Note |
| 1 | player statistics + titles | SendPlayerTitles: stats lines, 200 marker, then titles list |
| 0 | custom text window | SendCustomTextWindow: caption + text lines |
0xD6
S→C
DisableSkills
retail
Skill/spell cooldown (disabled) timers
2 sub-types
sent
›
| Value | Sub-type | Note |
| 1 | hybrid skill | entries: skill index + duration |
| 2 | list spells | entries: line index + spell index; shared duration |
0xD8
C→S
DetailRequest
Delve/info request for item, spell, style, etc.
28 sub-types
handled
›
More values: 3 hybrid spells, 15 chat group, 20-23 trainer styles, songs, spells and abilities, 101 self-craft, 102 salvage; anything else is champion lines.
| Value | Sub-type | Note |
| 1 | inventory item | |
| 2 | spell list | |
| 4 | merchant item | |
| 5 | buff/effect icon | |
| 6 | style | |
| 7 | trade window item | |
| 8 | ability | |
| 9 | trainer window info | |
| 10 | market search item | |
| 12 | item info to guild chat | |
| 14 | item info to group chat | |
| 17 | item info to battlegroup | |
| 19 | quest reward item | |
| 24 | SpellsNew tooltip | |
| 25 | StylesNew tooltip | |
| 26 | SongsNew tooltip | |
| 27 | RANew tooltip | |
| 28 | AbilityNew tooltip | |
| 29 | quest window item (1.115+) | |
| 100 | repair | |
20 of 28 listed.
Character progression
9 opcodes
No opcodes in this family match the filters.
0x13
S→C
MasterLevelWindow
Master level progress bars and step descriptions
sent
›
Byte 8 is the requested master level (0 = current).
0x16
S→C
VariousUpdate
retail
Multiplexed character sheet updates (skills, stats, group, crafting)
6 sub-types
sent
›
| Value | Sub-type | Note |
| 0x01 | skills | usable skills/specs/abilities/styles list; subtype 0x03, 99 = more pages |
| 0x02 | spell lines | non-hybrid spell lines; subtype 0x02 per line, 99 footer |
| 0x03 | player info | name, class, realm rank, guild, titles |
| 0x05 | weapon/armor stats | weapon damage, weapon skill, effective AF |
| 0x06 | group window | group member names, classes, levels |
| 0x08 | crafting skills | crafting skill points list |
0x7B
S→C
TrainerWindow
Trainer window: specs, realm abilities, champion lines
6 sub-types
sent
›
| Value | Sub-type | Note |
| 0 | specs | trainable spec levels |
| 1 | realm abilities | RA list with costs |
| 2 | champion | champion line tree |
| 3 | skill descriptions | per-spec skill entries |
| 4 | name index | skill names |
| 5 | realm ability details | RA levels and per-level costs |
0xFB
S→C
StatsUpdate
retail
Character stats or resists breakdown
2 sub-types
sent
›
| Value | Sub-type | Note |
| 0x00 | stats | SendCharStatsUpdate: base/buff/item/cap/RA per stat |
| 0xFF | resists | SendCharResistsUpdate |
Inventory & items
7 opcodes
No opcodes in this family match the filters.
0x02
S→C
InventoryUpdate
retail
Inventory slot contents update, optionally opening a window
8 sub-types
sent
›
| Value | Sub-type | Note |
| 0x00 | Update | slot refresh, no window |
| 0x01 | Equipment | |
| 0x02 | Inventory | |
| 0x03 | PlayerVault | |
| 0x04 | HouseVault | byte 3 carries vault number |
| 0x05 | ConsignmentOwner | |
| 0x06 | ConsignmentViewer | |
| 0x07 | HorseBags | |
0x71
C→S
UseSlot
Use an inventory or quickbar item slot
3 sub-types
handled
›
| Value | Sub-type | Note |
| 0 | Click | simple click on icon |
| 1 | Use1 | /use |
| 2 | Use2 | /use2 |
0xDD
C→S
PlayerMoveItem
Move/split item between slots, drop or give
4 sub-types
handled
›
| Value | Sub-type | Note |
| >1000 | give to object | object ID = toSlot - 1000 (trade/NPC/give) |
| 100 / 600 | PlayerPaperDoll / NewPlayerPaperDoll | auto-equip into resolved slot |
| 1 | Ground | drop item |
| 601 | GeneralVault | shift-click move with vault open |
Trade, merchants & market
10 opcodes
No opcodes in this family match the filters.
0x17
S→C
MerchantWindow
Merchant item list page
14 sub-types
sent
›
| Value | Sub-type | Note |
| 0x00 | Normal | |
| 0x01 | Bp | |
| 0x02 | Count | |
| 0x03 | HousingDeedMenu | |
| 0x04 | HousingOutsideMenu | |
| 0x05 | HousingNPCHookpoint | |
| 0x06 | HousingInsideShop | |
| 0x07 | HousingOutsideShop | |
| 0x08 | HousingVaultHookpoint | |
| 0x09 | HousingCraftingHookpoint | |
| 0x0A | HousingBindstoneHookpoint | |
| 0x0B | HousingInsideMenu | |
| 0x0C | HousingTicket | |
| 0x0D | HousingGuildTicket | |
0x1F
S→C
MarketExplorerWindow
Market explorer search results page
sent
›
Count 255 means an empty result window.
0x78
C→S
BuyRequest
Buy item from merchant or housing menu
8 sub-types
handled
›
| Value | Sub-type | Note |
| 0 | Normal | default: forwarded to targeted merchant/guard merchant/lot marker |
| 3 | HousingDeedMenu | |
| 5 | HousingNPCHookpoint | |
| 6 | HousingInsideShop | |
| 7 | HousingOutsideShop | |
| 8 | HousingVaultHookpoint | |
| 9 | HousingCraftingHookpoint | |
| 10 | HousingBindstoneHookpoint | |
0xEB
C→S
ModifyTrade
Update, accept or close trade window
3 sub-types
handled
›
| Value | Sub-type | Note |
| 0 | close | CloseTrade |
| 1 | update | repair/combine flags, 10 item slots, money |
| 2 | accept | AcceptTrade |
Chat, commands & UI
11 opcodes · 1 missing in OpenDAoC
No opcodes in this family match the filters.
0x81
S→C
Dialog
Show dialog box (invite, confirm, quest offer)
15 sub-types
sent
›
| Value | Sub-type | Note |
| 0x00 | SimpleWarning | OK-only warning dialog |
| 0x03 | GuildInvite | guild invite yes/no (SendGuildInviteCommand) |
| 0x05 | GroupInvite | group invite yes/no (SendGroupInviteCommand) |
| 0x06 | CustomDialog | custom server message with callback |
| 0x08 | GuildLeave | confirm leaving guild |
| 0x14 | HousePayRent | house rent payment dialog |
| 0x19 | MasterLevelWindow | master level dialog |
| 0x1A | KeepClaim | confirm keep claim |
| 0x20 | BuyRespec | enum member; no caller in source |
| 0x21 | QuestFinish | quest window, finish/not-yet (SendQuestWindow offer=false) |
| 0x22 | QuestOffer | quest window, accept/decline (SendQuestWindow offer=true) |
| 0x30 | WarmapWindowHibernia | warmap teleport confirm, Hibernia |
| 0x31 | WarmapWindowAlbion | warmap teleport confirm, Albion |
| 0x32 | WarmapWindowMidgard | warmap teleport confirm, Midgard |
| 0x64 | QuestSubscribe | quest accept (data3=0) or abort (data3=1) |
0x82
C→S
DialogResponse
Player answer to a server dialog box
8 sub-types
handled
›
| Value | Sub-type | Note |
| 0x03 | GuildInvite | accept/decline guild invite |
| 0x05 | GroupInvite | accept group invite |
| 0x06 | CustomDialog | invokes stored callback when data2==1 |
| 0x08 | GuildLeave | confirm leaving guild |
| 0x14 | HousePayRent | deposit money/BPs into house lockbox |
| 0x19 | MasterLevelWindow | request ML window page |
| 0x1A | KeepClaim | guild claims nearby keep |
| 0x64 | QuestSubscribe | accept/decline/abort quest offer |
0xAF
C→S
CommandHandler
retail
Slash command text from the player
handled
›
182 player slash commands route through this opcode.
0xAF
S→C
Message
retail
Chat or system text message
38 sub-types
sent
›
38 of the 39 chat types are used; the most common are listed.
| Value | Sub-type | Note |
| 0x01 | CT_Say | |
| 0x12 | CT_System | |
| 0x1C | CT_Important | |
| 0x1B | CT_SpellResisted | |
| 0x10 | CT_Spell | |
| 0x04 | CT_Guild | |
| 0x05 | CT_Broadcast | |
| 0xC8 | CT_ScreenCenter | |
| 0x11 | CT_YouHit | |
| 0x08 | CT_Chat | |
| 0x19 | CT_SpellExpires | |
| 0x06 | CT_Emote | |
| 0x0F | CT_Staff | |
| 0x14 | CT_Merchant | |
| 0x13 | CT_Items | |
| 0x0C | CT_BattleGroup | |
| 0x1E | CT_Action | |
| 0x1A | CT_Loot | |
| 0x03 | CT_Group | |
| 0x02 | CT_Send | |
20 of 38 listed.
0xD3
S→C
PlaySound
Play sound by type and ID
2 sub-types
sent
›
| Value | Sub-type | Note |
| 0x01 | Craft | |
| 0x02 | Divers | |
0xF3
S→C
TimerWindow
Open or close countdown timer window
2 sub-types
sent
›
| Value | Sub-type | Note |
| 1 | open | seconds + title |
| 0 | close | SendCloseTimerWindow |
0xF7
S→C
HelpWindow
Open help topic window
2 sub-types
sent
›
| Value | Sub-type | Note |
| 1 | starter help | SendStarterHelp |
| 106 | rent reminder | SendRentReminder, + house lot |
Groups, LFG, guilds & friends
16 opcodes · 6 missing in OpenDAoC
No opcodes in this family match the filters.
0x70
S→C
GroupMemberUpdate
Group member status, buff icons or map position
3 sub-types
sent
›
| Value | Sub-type | Note |
| 0x20 | status | health/mana/endurance %, status flags |
| 0x40 | map position | zone and x/y for group map dots |
| 0x80 | icons | member effect icon list |
0x84
C→S
LookingForGroupFlag
Toggle LFG flag or set group status
3 sub-types
handled
›
| Value | Sub-type | Note |
| 0x00 | RemovePlayerLooking | clear LFG flag |
| 0x01 | SetPlayerLooking | set LFG flag |
| other | GroupStatus | value stored as group.Status |
0x85
C→S
LookingForGroup
retail
Request Find Group window list
2 sub-types
handled
›
| Value | Sub-type | Note |
| 0x00 | players only | list LFG players |
| nonzero | include groups | also list leaders of groups with status 0 |
0x86
S→C
FindGroupUpdate
retail
Looking-for-group list; 0xFF variant crashes client
2 sub-types
sent
›
| Value | Sub-type | Note |
| N | player list | first byte = number of LFG entries (SendFindGroupWindowUpdate) |
| 0xFF | crash | SendCrash: 0xFF + pascal string, used to crash client |
Quests & tasks
4 opcodes · 1 missing in OpenDAoC
No opcodes in this family match the filters.
0x40
C→S
QuestRewardChosen
Accept quest and chosen reward items
handled
›
Response byte 1 confirms; anything else is ignored.
No opcodes in this family match the filters.
No opcodes in this family match the filters.
0x00
C→S
HouseMenuRequest
Open a house menu or merchant window
10 sub-types
handled
›
| Value | Sub-type | Note |
| 0 | HousingOutsideShop | |
| 1 | HousingInsideShop | |
| 2 | HousingDeedMenu | |
| 3 | HousingOutsideMenu | |
| 4 | HousingNPCHookpoint | |
| 5 | HousingVaultHookpoint | |
| 6 | HousingCraftingHookpoint | |
| 7 | HousingBindstoneHookpoint | |
| 8 | HousingInsideMenu | flag byte: 0x00 roof, 0xFF floor/wall |
| 9 | HouseInfo | sends house info instead of a window |
0x06
C→S
HouseUserPermissionSet
Set or remove a player's house permission slot
handled
›
A new level of 100 removes the slot.
0x09
S→C
HousingItem
House interior furniture list or single item update
2 sub-types
sent
›
| Value | Sub-type | Note |
| 0x00 | update | single item add/change/remove |
| 0x80 | complete | full furniture list |
0x0B
C→S
HouseEnterLeave
Enter or leave a house
2 sub-types
handled
›
| Value | Sub-type | Note |
| 0 | leave | |
| 1 | enter | requires within 1000 units and entry permission |
0x0C
C→S
HousePlaceItem
Place item, decoration or rent money in a house
7 sub-types
handled
›
| Value | Sub-type | Note |
| 1 | garden | server-forced for garden object type 49 |
| 2 | wall | client-sent |
| 3 | floor | client-sent |
| 4 | porch | server-forced for porch/consignment deeds |
| 5 | hookpoint | server-forced for object types 53/55/68 |
| 6 | banner/shield | server-forced for object types 57/58/66/67 |
| 7 | vault | server-forced for HouseVault on hookpoint |
0x0D
C→S
PlayerPickupHouseItem
Remove a placed house item back to inventory
3 sub-types
handled
›
| Value | Sub-type | Note |
| 1 | garden | |
| 2 | wall | |
| 3 | floor | |
0xD1
S→C
HouseCreate
retail
Create or remove house on lot
2 sub-types
sent
›
| Value | Sub-type | Note |
| create | SendHouse | full house model/materials/name |
| remove | SendRemoveHouse | model/material bytes zeroed, byte 0x03 at offset 27, empty name |
0xD2
S→C
HouseChangeGarden
retail
House garden items or occupied flag
3 sub-types
sent
›
| Value | Sub-type | Note |
| count,0x80 | full garden | SendGarden(house): all outdoor items |
| 0x01,0x00 | single item update | SendGarden(house,i) |
| 0x00,flag | occupied flag | SendHouseOccupied: flag 1/0 |
Keeps, RvR & siege
23 opcodes · 1 missing in OpenDAoC
No opcodes in this family match the filters.
0x48
C→S
ShowWarmapRequest
retail
Warmap page select, refresh, or teleport
3 sub-types
handled
›
| Value | Sub-type | Note |
| 0 | set_page | stores realm map page |
| 1 | update | sends keep list and fight info |
| 2 | teleport | teleport to border keep (ids 1-6) or keep portal stone |
0x4A
S→C
WarMapDetailUpdate
retail
Warmap fight and group markers
sent
›
No sub-type: fight records, then group records.
0x62
S→C
KeepClaim
Keep claim/lord window
4 sub-types
sent
›
| Value | Sub-type | Note |
| 0 | Info | |
| 1 | KeepTargetLevel | |
| 2 | KeepLordType | |
| 4 | Release | only value sent |
0x64
C→S
BuyHookPoint
Buy siege weapon or guard for keep hookpoint
5 sub-types
handled
›
| Value | Sub-type | Note |
| 0x00-0x20 | RedHPInventory | guards |
| 0x21-0x40 | BlueHPInventory | NPCs |
| 0x41-0x60 | LightGreenHPInventory | small siege |
| 0x61-0x80 | GreenHPInventory | large siege |
| 0x81+ | YellowHPInventory | oil |
0x6F
C→S
KeepComponentInteract
Keep wall/tower info and hookpoint selection
3 sub-types
handled
›
| Value | Sub-type | Note |
| 0 | show_info | SendKeepComponentInteract |
| 1 | hookpoint_button | SendKeepComponentHookPoint |
| 2 | select_hookpoint | clears hookpoint and sends hookpoint store |
0xE3
S→C
SiegeWeaponAnimation
Siege weapon aim/arm/load/fire animation
5 sub-types
sent
›
| Value | Sub-type | Note |
| 0x00 | None | |
| 0x01 | Aiming | + target health, target ID |
| 0x02 | Arming | + target health |
| 0x03 | Loading | |
| 0x04 | Fire | SendSiegeWeaponFireAnimation |
0xE4
C→S
ShipHookPoint
Boat hookpoint interaction (switch seat)
2 sub-types
handled
›
Other flag values are logged as unhandled.
| Value | Sub-type | Note |
| 0 | none | |
| 3 | switch seat | move to empty boat seat |
0xF5
C→S
SiegeCommandRequest
Siege weapon control command
10 sub-types
handled
›
| Value | Sub-type | Note |
| 1 | load | select ammo (ammo byte at offset 3) |
| 2 | arm | |
| 3 | aim | |
| 4 | fire | |
| 5 | move | |
| 6 | repair | |
| 7 | salvage | |
| 8 | release | |
| 9 | stop move | |
| 10 | swing | calls Fire |
0xF5
S→C
SiegeWeaponInterface
Open/update or close siege weapon UI
2 sub-types
sent
›
| Value | Sub-type | Note |
| 0 | open/update | ammo list, action, name |
| 1 | close | SendSiegeWeaponCloseInterface |
Relics
8 opcodes · 5 missing in OpenDAoC
No opcodes in this family match the filters.
0x4C
C→S
MinotaurRelicWindow
Minotaur relic window command (unimplemented)
client never sends
›
Unclassified
7 opcodes · 7 missing in OpenDAoC
No opcodes in this family match the filters.
How we know
The client side is daoc-re's map of the official 1.130 game client: every opcode its receive
code dispatches, and every message it builds for its TCP and UDP send functions. The server side
comes from OpenDAoC's source: the handlers it registers for client opcodes and the methods it has
for each message it sends. Names, purposes and sub-types are OpenDAoC's. The comparison itself is
written up in What the client knows that the server doesn't.
An opcode is not a message
Many opcodes carry a sub-type that selects a different message: chat types, update kinds,
character-create operations. Character delete, for one, is operation 3 inside character create.
Open a row to see its sub-types.
Guesses are marked
Opcodes OpenDAoC has no name for carry a best guess, from daoc-re's clues about where the client
uses them, with how sure it is: confirmed live, likely, guess or unknown. "Retail" marks the opcodes seen
in one decoded session on the official servers. We update this page as sessions confirm or
correct the guesses. Corrections are welcome.
The same table, laid out as a 24 × 36 in poster, is the PDF above; the data is the JSON file.
Data generated 2026-10-28.