chore: Removes docs (#2397)
40
.github/workflows/update-docs.yml
vendored
|
|
@ -1,40 +0,0 @@
|
|||
name: Updates Docs
|
||||
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: [docs]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
update-docs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: 3.x
|
||||
|
||||
- name: Install mkdocs-material
|
||||
run: pip install mkdocs-material
|
||||
|
||||
- name: Build mkdocs site
|
||||
run: mkdocs build --strict
|
||||
|
||||
- name: Build packets documentation
|
||||
shell: pwsh
|
||||
run: ./docs/tools/build-packets.ps1
|
||||
|
||||
- name: Copy commands and packets to site
|
||||
run: |
|
||||
cp ./docs/commands/commands.html ./site/
|
||||
cp ./docs/packets/packets.html ./site/
|
||||
|
||||
- name: Deploy to GitHub Pages
|
||||
uses: JamesIves/github-pages-deploy-action@v4
|
||||
with:
|
||||
folder: ./site
|
||||
branch: gh-pages
|
||||
clean: true
|
||||
clean-exclude: |
|
||||
.nojekyll
|
||||
|
|
@ -1 +0,0 @@
|
|||
modernuo.com
|
||||
|
|
@ -1,112 +0,0 @@
|
|||
:root {
|
||||
--muo-gold: #d5bf74;
|
||||
--muo-gold-compl: #748ad5;
|
||||
--muo-gold-analog: #bf74d5;
|
||||
--muo-green: #77d574;
|
||||
--muo-gold-a-link: #947a40;
|
||||
|
||||
/* default */
|
||||
--md-default-fg-color: #212121;
|
||||
--md-default-bg-color: #ffffff;
|
||||
|
||||
/* primary */
|
||||
--md-primary-fg-color: #212121;
|
||||
--md-primary-bg-color: #ffffff;
|
||||
--md-primary-fg-color--dark: #212121;
|
||||
|
||||
/* accent */
|
||||
--md-accent-fg-color: var(--muo-gold);
|
||||
}
|
||||
|
||||
:root > * {
|
||||
--md-code-bg-color: #212121;
|
||||
--md-code-fg-color: rgba(255, 255, 255, 0.7);
|
||||
|
||||
--md-typeset-a-color: var(--muo-gold-a-link);
|
||||
|
||||
--md-footer-fg-color: #ffffff;
|
||||
--md-footer-bg-color: #212121;
|
||||
--md-footer-bg-color--dark: #212121;
|
||||
|
||||
--md-code-hl-color: var(--muo-gold);
|
||||
|
||||
|
||||
--md-code-hl-number-color: var(--muo-gold-analog);
|
||||
--md-code-hl-special-color: var(--md-default-bg-color--lighter);
|
||||
--md-code-hl-function-color: var(--muo-gold-compl);
|
||||
--md-code-hl-constant-color: rgba(255, 255, 255, 0.7);
|
||||
--md-code-hl-keyword-color: var(--muo-gold);
|
||||
--md-code-hl-string-color: var(--muo-green);
|
||||
--md-code-hl-name-color: rgba(255, 255, 255, 0.7);
|
||||
|
||||
--md-code-hl-operator-color: var(--muo-gold-a-link);
|
||||
--md-code-hl-punctuation-color: var(--muo-gold-a-link);
|
||||
--md-code-hl-comment-color: var(--md-default-bg-color--lighter);
|
||||
--md-code-hl-generic-color: var(--muo-gold-compl);
|
||||
--md-code-hl-variable-color: var(--muo-gold-compl);
|
||||
}
|
||||
|
||||
.md-tabs__link--active,
|
||||
.md-tabs__link:focus,
|
||||
.md-tabs__link:hover,
|
||||
.md-footer-nav__link:focus,
|
||||
.md-footer-nav__link:hover,
|
||||
.md-header-nav__button:focus,
|
||||
.md-header-nav__button:hover,
|
||||
.md-source:hover,
|
||||
html .md-footer-meta.md-typeset a:focus,
|
||||
html .md-footer-meta.md-typeset a:hover {
|
||||
color: var(--muo-gold);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 76.1875em) {
|
||||
.md-nav--primary .md-nav__title[for=__drawer] .md-nav__button {
|
||||
left: 3.75rem;
|
||||
}
|
||||
|
||||
.md-nav--primary .md-nav__title {
|
||||
padding: 3rem 3.75rem 0.2rem
|
||||
}
|
||||
}
|
||||
|
||||
.windows {
|
||||
color: #00adef;
|
||||
}
|
||||
|
||||
.apple {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.ubuntu {
|
||||
color: #e95420;
|
||||
}
|
||||
|
||||
.linuxmint {
|
||||
color: #87cF3e;
|
||||
}
|
||||
|
||||
.debian {
|
||||
color: #d70a53;
|
||||
}
|
||||
|
||||
.fedora {
|
||||
color: #3c6eb4;
|
||||
}
|
||||
|
||||
.centos {
|
||||
color: #212078;
|
||||
}
|
||||
|
||||
.redhat {
|
||||
color: #be0000;
|
||||
}
|
||||
|
||||
.codehilitetable .linenodiv pre, .highlighttable .linenodiv pre {
|
||||
color: var(--md-default-bg-color);
|
||||
}
|
||||
|
||||
.codehilitetable .linenodiv, .highlighttable .linenodiv {
|
||||
box-shadow: -0.05rem 0 var(--md-default-bg-color) inset;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
|
@ -1,101 +0,0 @@
|
|||
/* Remove spacing, as we cannot hide it completely */
|
||||
.md-main__inner {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Hide main content for now */
|
||||
.md-content {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Hide table of contents */
|
||||
@media screen and (min-width: 60em) {
|
||||
.md-sidebar--secondary {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Hide navigation */
|
||||
@media screen and (min-width: 76.25em) {
|
||||
.md-sidebar--primary {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.md-main {
|
||||
background: var(--md-default-fg-color);
|
||||
}
|
||||
|
||||
.md-typeset h1 {
|
||||
color: var(--md-default-bg-color--light);
|
||||
}
|
||||
|
||||
.tx-container {
|
||||
background: var(--md-default-fg-color);
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.tx-hero {
|
||||
display: flex;
|
||||
align-content: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
min-height: 400px;
|
||||
margin: 0 0.8rem;
|
||||
}
|
||||
|
||||
.tx-hero div {
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.tx-hero__image {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tx-hero__content {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tx-hero__content .md-button {
|
||||
background-color: transparent;
|
||||
color: var(--md-primary-bg-color--light);
|
||||
border-color: var(--md-primary-bg-color--light);
|
||||
}
|
||||
|
||||
.tx-hero__content .md-button--primary {
|
||||
background-color: var(--muo-gold);
|
||||
color: var(--md-primary-fg-color);
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.tx-hero__content .md-button:hover {
|
||||
border-color: transparent;
|
||||
color: var(--md-primary-fg-color);
|
||||
background-color: var(--md-primary-bg-color);
|
||||
}
|
||||
|
||||
.tx-hero__content .md-button--primary:hover {
|
||||
border-color: var(--md-primary-bg-color--light);
|
||||
}
|
||||
|
||||
/*@media screen and (max-width: 60em)*/
|
||||
/*{*/
|
||||
/* .tx-hero__image img {*/
|
||||
/* max-width: 64px;*/
|
||||
/* }*/
|
||||
/*}*/
|
||||
|
||||
@media screen and (max-width: 60em)
|
||||
{
|
||||
.tx-hero__image img {
|
||||
max-width: 128px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 60em)
|
||||
{
|
||||
.tx-hero__image img {
|
||||
max-width: 200px;
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 2.6 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg height="529.15997" viewBox="0 0 529.15997 529.15997" width="529.15997" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path d="m2512.85 434.602c664.19 226.828 1108.92 846.878 1108.92 1549.778 0 506.38-229.59 976.52-629.89 1289.87l-48.49 37.96v-1419.24c0-285.63-16.44-484.51-48.85-591.12-31.25-102.71-92.53-204.08-182.15-301.28-59.65-64.691-126.61-118.961-199.54-161.781v2695.511l-20.68 6.77c-163.79 53.55-334.64 80.71-507.81 80.71-116.47 0-232.75-12.43-346.2-36.98v323.08c114.09 20.48 230.43 30.86 346.2 30.86 1077.66 0 1954.37-876.72 1954.37-1954.36 0-877.2-584.34-1645.45-1425.88-1881.771z"/></clipPath><linearGradient id="b" gradientTransform="matrix(0 -3981.4 -3981.4 0 2788.45 3927.9)" gradientUnits="userSpaceOnUse" spreadMethod="pad" x1="0" x2="1" y1="0" y2="0"><stop offset="0" stop-color="#bfbdbb"/><stop offset=".248485" stop-color="#fbfcfc"/><stop offset=".484848" stop-color="#959696"/><stop offset=".70303" stop-color="#f0f0f0"/><stop offset="1" stop-color="#8d8d8d"/></linearGradient><clipPath id="c"><path d="m1984.36 30.0117c-1077.637 0-1954.36 876.7073-1954.36 1954.3683 0 877.19 584.355 1645.42 1425.89 1881.75v-2120.73c0-174.88 16.68-297.63 50.98-375.3 36.14-81.88 96.23-147.98 178.61-196.45 80.54-47.37 177.6-71.39 288.48-71.39 116.83 0 219.8 26.54 306.04 78.89 12.05 7.32 23.7 15.02 34.9 23.06v-449.19c-98.23-27.68-208.6-41.7-328.46-41.7-206.52 0-387.97 45.481-539.3 135.2-150.47 89.179-259.14 201.46-323.02 333.71-65.54 135.72-98.77 374.85-98.77 710.74v1419.24l-48.491-37.96c-400.308-313.35-629.89-783.49-629.89-1289.87 0-902.87 734.531-1637.411 1637.391-1637.411 111.23 0 222.24 11.269 330.54 33.543v-322.4534c-108.89-18.6289-219.96-28.0469-330.54-28.0469z"/></clipPath><linearGradient id="d" gradientTransform="matrix(0 -3981.4 -3981.4 0 1172.45 3927.91)" gradientUnits="userSpaceOnUse" spreadMethod="pad" x1="0" x2="1" y1="0" y2="0"><stop offset="0" stop-color="#ae9964"/><stop offset=".248485" stop-color="#fbe383"/><stop offset=".484848" stop-color="#8d7036"/><stop offset=".714286" stop-color="#c9b14e"/><stop offset="1" stop-color="#7f6740"/></linearGradient><g transform="matrix(.13333333 0 0 -.13333333 0 529.16)"><path d="m1984.36 3968.74c-128.6 0-254.34-12.45-376.2-35.93v-385.64c120.72 29.1 246.68 44.61 376.2 44.61 173.94 0 341.47-27.89 498.49-79.23v-2724.37c92.71 47.199 177.2 111.371 251.6 192.058 92.7 100.542 156.23 205.822 188.8 312.892 33.27 109.43 50.14 311.26 50.14 599.84v1357.66c376.17-294.47 618.38-752.6 618.38-1266.25 0-712.39-465.88-1317.919-1108.92-1528.189v-392.7613c853.7 221.6793 1485.88 998.8603 1485.88 1920.9503 0 1094.17-890.17 1984.36-1984.37 1984.36" fill="#dfdfdd"/><g clip-path="url(#a)"><path d="m2512.85 434.602c664.19 226.828 1108.92 846.878 1108.92 1549.778 0 506.38-229.59 976.52-629.89 1289.87l-48.49 37.96v-1419.24c0-285.63-16.44-484.51-48.85-591.12-31.25-102.71-92.53-204.08-182.15-301.28-59.65-64.691-126.61-118.961-199.54-161.781v2695.511l-20.68 6.77c-163.79 53.55-334.64 80.71-507.81 80.71-116.47 0-232.75-12.43-346.2-36.98v323.08c114.09 20.48 230.43 30.86 346.2 30.86 1077.66 0 1954.37-876.72 1954.37-1954.36 0-877.2-584.34-1645.45-1425.88-1881.771v331.993" fill="url(#b)"/></g><path d="m1973.96 1132.26c-105.46 0-197.39 22.62-273.26 67.24-76.85 45.22-132.83 106.7-166.38 182.71-32.59 73.78-48.43 192.58-48.43 363.19v1226.51 540.64 392.76c-853.699-221.68-1485.89-998.85-1485.89-1920.93 0-1094.2 890.184-1984.3682812 1984.36-1984.3682812 123.1 0 243.58 11.3476812 360.54 32.9179812v384.8203c-115.94-26.668-236.61-40.781-360.54-40.781-886.32 0-1607.391 721.081-1607.391 1607.411 0 513.65 242.207 971.78 618.383 1266.25v-1357.66c0-340.44 34.228-583.96 101.758-723.78 66.48-137.66 179.09-254.221 334.73-346.471 156.02-92.489 342.61-139.387 554.6-139.387 132.62 0 252.67 16.719 358.46 49.25v535.068c-23.54-22.21-50.33-42.57-80.46-60.85-81.5-49.46-179.23-74.54-290.48-74.54" fill="#e9cf72"/><g clip-path="url(#c)"><path d="m1984.36 30.0117c-1077.637 0-1954.36 876.7073-1954.36 1954.3683 0 877.19 584.355 1645.42 1425.89 1881.75v-2120.73c0-174.88 16.68-297.63 50.98-375.3 36.14-81.88 96.23-147.98 178.61-196.45 80.54-47.37 177.6-71.39 288.48-71.39 116.83 0 219.8 26.54 306.04 78.89 12.05 7.32 23.7 15.02 34.9 23.06v-449.19c-98.23-27.68-208.6-41.7-328.46-41.7-206.52 0-387.97 45.481-539.3 135.2-150.47 89.179-259.14 201.46-323.02 333.71-65.54 135.72-98.77 374.85-98.77 710.74v1419.24l-48.491-37.96c-400.308-313.35-629.89-783.49-629.89-1289.87 0-902.87 734.531-1637.411 1637.391-1637.411 111.23 0 222.24 11.269 330.54 33.543v-322.4534c-108.89-18.6289-219.96-28.0469-330.54-28.0469" fill="url(#d)"/></g></g></svg>
|
||||
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg height="700pt" preserveAspectRatio="xMidYMid meet" viewBox="0 0 700 700" width="700pt" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(.1 0 0 -.1 0 700)"><path d="m3278 6996c-1-2-41-6-88-10-98-8-120-11-252-33-87-14-98-18-99-37-7-128-2-656 6-656 6 0 28 5 50 10 55 12 89 18 170 31 39 5 84 12 100 15 51 8 245 18 350 18 249 0 499-35 752-105l113-31 2-2404 3-2403 85 52c133 81 196 131 315 251 170 173 298 369 360 557 28 84 27 77 48 209 46 276 50 435 51 1937 1 727 4 1324 6 1327 13 12 304-264 415-394 161-189 328-458 442-715 28-64 118-318 128-362 2-10 15-67 29-128 14-60 27-128 31-150 3-22 7-53 10-70 12-75 15-106 22-190 12-155 6-443-11-545-3-14-7-47-11-75-3-27-8-59-10-70-3-11-7-31-9-45-66-371-224-753-446-1076-250-365-578-664-977-888-123-69-360-174-444-196l-39-11v-348-349l113 33c454 136 815 328 1231 655 56 43 241 218 313 293 479 507 792 1130 912 1817 11 63 23 142 26 175 4 33 9 71 11 85 9 48 11 525 4 605-17 176-22 220-25 225-2 3-6 30-10 60-7 55-58 298-75 355-98 332-208 594-352 839-391 663-964 1169-1666 1469-297 127-647 220-957 253-27 3-63 8-80 10-34 6-541 14-547 10z"/><path d="m2585 6879c-96-22-409-132-429-150-6-5-16-9-23-9-20 0-297-139-404-203-260-155-464-313-675-522-184-183-222-226-344-386-288-382-491-802-603-1254-77-309-102-518-102-860 1-194 7-327 20-406 2-13 6-46 10-74 9-76 16-116 25-160 5-22 11-53 14-70 29-160 113-433 193-625 142-346 374-711 633-1000 92-102 273-277 359-346 13-10 28-24 35-29 51-48 406-295 422-295 2 0 23-12 45-26 59-37 278-145 389-192 269-114 649-215 920-246 292-34 694-28 948 13 37 6 78 13 92 15l25 3v338l1 337-36-5c-19-3-89-15-155-26-230-39-591-46-795-15-315 47-550 113-799 223-186 83-415 217-556 328-16 13-35 27-40 31-90 64-340 307-431 417-303 367-504 781-597 1230-22 106-29 144-43 255-22 166-22 556 0 666 2 12 7 45 11 75 7 58 44 236 69 334 33 132 126 375 197 517 61 121 221 385 248 408 3 3 26 32 50 65 25 33 47 62 50 65s40 43 81 89c62 70 127 136 234 237 16 14 126 104 129 104 1 0 2-593 3-1318 1-1162 5-1521 19-1612 2-14 6-56 10-95 3-38 8-81 10-95s7-45 10-70c48-362 168-617 395-839 261-255 616-426 989-475 281-37 603-21 860 43 46 12 84 21 85 21s2 211 1 469c0 311-3 467-10 463-5-3-28-20-50-37-49-39-161-105-179-105-6 0-16-4-22-9-13-14-147-50-229-62-121-18-307-12-400 13-22 5-47 12-55 13-36 8-103 36-166 70-220 119-344 305-379 565-3 25-8 61-12 80-3 19-8 901-10 1960s-4 1981-6 2050l-2 126z"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 2.3 KiB |
|
|
@ -1,33 +0,0 @@
|
|||
---
|
||||
title: Creating a build
|
||||
---
|
||||
|
||||
# Creating a build
|
||||
|
||||
The server software must be built before it can be run.
|
||||
|
||||
=== "Windows"
|
||||
Using _windows terminal_, _git bash_, or _powershell_, run:
|
||||
```bash
|
||||
./publish.cmd <release|debug> <os> <arch>
|
||||
```
|
||||
|
||||
=== "OSX/Linux"
|
||||
Using _terminal_, run:
|
||||
```bash
|
||||
./publish.sh <release|debug> <os> <arch>
|
||||
```
|
||||
<br><br>
|
||||
`os` (_Optional_)<br>
|
||||
The operating system to build the server against. If not specified then the server will be built for the same operating system.
|
||||
|
||||
:fontawesome-brands-windows:{: .windows } `win`<br>
|
||||
:fontawesome-brands-apple:{: .apple } `osx`<br>
|
||||
:fontawesome-brands-linux:{: .linux } `linux`<br>
|
||||
|
||||
<br><br>
|
||||
`arch` (_Optional_)<br>
|
||||
The architecture to build the server against. If not specified then the server will be built for x64.
|
||||
|
||||
`x64`<br>
|
||||
`arm64`<br>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
---
|
||||
title: Home
|
||||
template: home.html
|
||||
---
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
---
|
||||
title: Installation
|
||||
---
|
||||
|
||||
# Installation
|
||||
|
||||
=== "Windows"
|
||||
### Prerequisites
|
||||
1. Download and install the latest [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0)
|
||||
1. Download and install from [here](https://git-scm.com/download/win)
|
||||
|
||||
!!! Tip
|
||||
Use [Windows Terminal](https://learn.microsoft.com/en-us/windows/terminal/install) as your command prompt.
|
||||
|
||||
### Install ModernUO
|
||||
1. Navigate to the folder where you want to install ModernUO.
|
||||
1. Using _Windows Terminal_ run:
|
||||
```bash
|
||||
git clone https://github.com/modernuo/modernuo
|
||||
cd modernuo
|
||||
```
|
||||
|
||||
=== "OSX"
|
||||
### Prerequisites
|
||||
1. Download and install the latest [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0).
|
||||
1. Using _terminal_, install [homebrew](https://brew.sh) and git:
|
||||
```bash
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
|
||||
brew install git
|
||||
```
|
||||
### Install ModernUO
|
||||
1. Using _terminal_, navigate to the folder where you want to install ModernUO and run:
|
||||
```bash
|
||||
git clone https://github.com/modernuo/modernuo
|
||||
cd modernuo
|
||||
```
|
||||
|
||||
=== "Linux"
|
||||
### Prerequisites
|
||||
1. Download and install the latest [.NET 10 SDK](https://docs.microsoft.com/en-us/dotnet/core/install/linux).
|
||||
1. Using _bash_, install git:
|
||||
```bash
|
||||
sudo apt update && sudo apt install git
|
||||
```
|
||||
|
||||
!!! Note
|
||||
The command to install git might be different for your flavor of linux. Consult your local Google search for answers.
|
||||
|
||||
### Install ModernUO
|
||||
1. Using _bash_, navigate to the folder where you want to install ModernUO and run:
|
||||
```bash
|
||||
git clone https://github.com/modernuo/modernuo
|
||||
cd modernuo
|
||||
```
|
||||
|
|
@ -1 +0,0 @@
|
|||
<svg height="529.15997" viewBox="0 0 529.15997 529.15997" width="529.15997" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path d="m2512.85 434.602c664.19 226.828 1108.92 846.878 1108.92 1549.778 0 506.38-229.59 976.52-629.89 1289.87l-48.49 37.96v-1419.24c0-285.63-16.44-484.51-48.85-591.12-31.25-102.71-92.53-204.08-182.15-301.28-59.65-64.691-126.61-118.961-199.54-161.781v2695.511l-20.68 6.77c-163.79 53.55-334.64 80.71-507.81 80.71-116.47 0-232.75-12.43-346.2-36.98v323.08c114.09 20.48 230.43 30.86 346.2 30.86 1077.66 0 1954.37-876.72 1954.37-1954.36 0-877.2-584.34-1645.45-1425.88-1881.771z"/></clipPath><linearGradient id="b" gradientTransform="matrix(0 -3981.4 -3981.4 0 2788.45 3927.9)" gradientUnits="userSpaceOnUse" spreadMethod="pad" x1="0" x2="1" y1="0" y2="0"><stop offset="0" stop-color="#bfbdbb"/><stop offset=".248485" stop-color="#fbfcfc"/><stop offset=".484848" stop-color="#959696"/><stop offset=".70303" stop-color="#f0f0f0"/><stop offset="1" stop-color="#8d8d8d"/></linearGradient><clipPath id="c"><path d="m1984.36 30.0117c-1077.637 0-1954.36 876.7073-1954.36 1954.3683 0 877.19 584.355 1645.42 1425.89 1881.75v-2120.73c0-174.88 16.68-297.63 50.98-375.3 36.14-81.88 96.23-147.98 178.61-196.45 80.54-47.37 177.6-71.39 288.48-71.39 116.83 0 219.8 26.54 306.04 78.89 12.05 7.32 23.7 15.02 34.9 23.06v-449.19c-98.23-27.68-208.6-41.7-328.46-41.7-206.52 0-387.97 45.481-539.3 135.2-150.47 89.179-259.14 201.46-323.02 333.71-65.54 135.72-98.77 374.85-98.77 710.74v1419.24l-48.491-37.96c-400.308-313.35-629.89-783.49-629.89-1289.87 0-902.87 734.531-1637.411 1637.391-1637.411 111.23 0 222.24 11.269 330.54 33.543v-322.4534c-108.89-18.6289-219.96-28.0469-330.54-28.0469z"/></clipPath><linearGradient id="d" gradientTransform="matrix(0 -3981.4 -3981.4 0 1172.45 3927.91)" gradientUnits="userSpaceOnUse" spreadMethod="pad" x1="0" x2="1" y1="0" y2="0"><stop offset="0" stop-color="#ae9964"/><stop offset=".248485" stop-color="#fbe383"/><stop offset=".484848" stop-color="#8d7036"/><stop offset=".714286" stop-color="#c9b14e"/><stop offset="1" stop-color="#7f6740"/></linearGradient><g transform="matrix(.13333333 0 0 -.13333333 0 529.16)"><path d="m1984.36 3968.74c-128.6 0-254.34-12.45-376.2-35.93v-385.64c120.72 29.1 246.68 44.61 376.2 44.61 173.94 0 341.47-27.89 498.49-79.23v-2724.37c92.71 47.199 177.2 111.371 251.6 192.058 92.7 100.542 156.23 205.822 188.8 312.892 33.27 109.43 50.14 311.26 50.14 599.84v1357.66c376.17-294.47 618.38-752.6 618.38-1266.25 0-712.39-465.88-1317.919-1108.92-1528.189v-392.7613c853.7 221.6793 1485.88 998.8603 1485.88 1920.9503 0 1094.17-890.17 1984.36-1984.37 1984.36" fill="#dfdfdd"/><g clip-path="url(#a)"><path d="m2512.85 434.602c664.19 226.828 1108.92 846.878 1108.92 1549.778 0 506.38-229.59 976.52-629.89 1289.87l-48.49 37.96v-1419.24c0-285.63-16.44-484.51-48.85-591.12-31.25-102.71-92.53-204.08-182.15-301.28-59.65-64.691-126.61-118.961-199.54-161.781v2695.511l-20.68 6.77c-163.79 53.55-334.64 80.71-507.81 80.71-116.47 0-232.75-12.43-346.2-36.98v323.08c114.09 20.48 230.43 30.86 346.2 30.86 1077.66 0 1954.37-876.72 1954.37-1954.36 0-877.2-584.34-1645.45-1425.88-1881.771v331.993" fill="url(#b)"/></g><path d="m1973.96 1132.26c-105.46 0-197.39 22.62-273.26 67.24-76.85 45.22-132.83 106.7-166.38 182.71-32.59 73.78-48.43 192.58-48.43 363.19v1226.51 540.64 392.76c-853.699-221.68-1485.89-998.85-1485.89-1920.93 0-1094.2 890.184-1984.3682812 1984.36-1984.3682812 123.1 0 243.58 11.3476812 360.54 32.9179812v384.8203c-115.94-26.668-236.61-40.781-360.54-40.781-886.32 0-1607.391 721.081-1607.391 1607.411 0 513.65 242.207 971.78 618.383 1266.25v-1357.66c0-340.44 34.228-583.96 101.758-723.78 66.48-137.66 179.09-254.221 334.73-346.471 156.02-92.489 342.61-139.387 554.6-139.387 132.62 0 252.67 16.719 358.46 49.25v535.068c-23.54-22.21-50.33-42.57-80.46-60.85-81.5-49.46-179.23-74.54-290.48-74.54" fill="#e9cf72"/><g clip-path="url(#c)"><path d="m1984.36 30.0117c-1077.637 0-1954.36 876.7073-1954.36 1954.3683 0 877.19 584.355 1645.42 1425.89 1881.75v-2120.73c0-174.88 16.68-297.63 50.98-375.3 36.14-81.88 96.23-147.98 178.61-196.45 80.54-47.37 177.6-71.39 288.48-71.39 116.83 0 219.8 26.54 306.04 78.89 12.05 7.32 23.7 15.02 34.9 23.06v-449.19c-98.23-27.68-208.6-41.7-328.46-41.7-206.52 0-387.97 45.481-539.3 135.2-150.47 89.179-259.14 201.46-323.02 333.71-65.54 135.72-98.77 374.85-98.77 710.74v1419.24l-48.491-37.96c-400.308-313.35-629.89-783.49-629.89-1289.87 0-902.87 734.531-1637.411 1637.391-1637.411 111.23 0 222.24 11.269 330.54 33.543v-322.4534c-108.89-18.6289-219.96-28.0469-330.54-28.0469" fill="url(#d)"/></g></g></svg>
|
||||
|
Before Width: | Height: | Size: 4.5 KiB |
|
|
@ -1,55 +0,0 @@
|
|||
{% extends "main.html" %}
|
||||
{% block extrahead %}
|
||||
<!-- Extra stylesheets -->
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="{{ 'assets/stylesheets/home_overrides.css' | url }}"
|
||||
/>
|
||||
{% endblock %}
|
||||
|
||||
<!-- Render hero under tabs -->
|
||||
{% block tabs %}
|
||||
{{ super() }}
|
||||
|
||||
<!-- Hero for landing page -->
|
||||
<section class="tx-container">
|
||||
<div class="md-grid md-typeset">
|
||||
<div class="tx-hero">
|
||||
<div class="tx-hero__image">
|
||||
<img
|
||||
src="/branding/logo.svg"
|
||||
alt=""
|
||||
draggable="false"
|
||||
>
|
||||
</div>
|
||||
|
||||
<!-- Hero content -->
|
||||
<div class="tx-hero__content">
|
||||
<h1>Ultima Online Server Emulator for the modern era!</h1>
|
||||
<a
|
||||
href="{{ page.next_page.url | url }}"
|
||||
title="{{ page.next_page.title | striptags }}"
|
||||
class="md-button md-button--primary"
|
||||
>
|
||||
Get started
|
||||
</a>
|
||||
<a
|
||||
href="{{ config.repo_url }}"
|
||||
title="{{ lang.t('source.link.title') }}"
|
||||
class="md-button"
|
||||
>
|
||||
Go to GitHub
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endblock %}
|
||||
|
||||
<!-- Content -->
|
||||
{% block content %}{% endblock %}
|
||||
|
||||
<!-- Application footer -->
|
||||
{% block footer %}
|
||||
{% include "partials/footer.html" %}
|
||||
{% endblock %}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
<!-- Custom front matter -->
|
||||
{% block extrahead %}
|
||||
|
||||
<!-- Determine title -->
|
||||
{% set title = config.site_name %}
|
||||
{% if page and page.title and not page.is_homepage %}
|
||||
{% set title = config.site_name ~ " - " ~ page.title | striptags %}
|
||||
{% endif %}
|
||||
|
||||
<!-- The image needs to have an absolute URL -->
|
||||
{% set image = config.site_url ~ '/branding/android-chrome-512x512.png' %}
|
||||
|
||||
<!-- Open graph meta tags -->
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="{{ title }}" />
|
||||
<meta property="og:description" content="{{ config.site_description }}" />
|
||||
<meta property="og:url" content="{{ page.canonical_url }}" />
|
||||
<meta property="og:image" content="{{ image }}" />
|
||||
<meta property="og:image:type" content="image/png" />
|
||||
<meta property="og:image:width" content="512" />
|
||||
<meta property="og:image:height" content="512" />
|
||||
|
||||
<!-- Twitter meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:site" content="@modernuo" />
|
||||
<meta name="twitter:creator" content="@modernuo" />
|
||||
<meta name="twitter:title" content="{{ title }}" />
|
||||
<meta name="twitter:description" content="{{ config.site_description }}" />
|
||||
<meta name="twitter:image" content="{{ image }}" />
|
||||
|
||||
{% endblock %}
|
||||
|
||||
<!-- Content -->
|
||||
{% block content %}
|
||||
{{ super() }}
|
||||
|
||||
<!-- Content footer -->
|
||||
<footer class="tx-content__footer md-typeset">
|
||||
|
||||
</footer>
|
||||
{% endblock %}
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
{#-
|
||||
This file was automatically generated - do not edit
|
||||
-#}
|
||||
{% import "partials/language.html" as lang with context %}
|
||||
<footer class="md-footer">
|
||||
{% if page.previous_page or page.next_page %}
|
||||
<nav class="md-footer__inner md-grid" aria-label="{{ lang.t('footer.title') }}">
|
||||
{% if page.previous_page %}
|
||||
<a href="{{ page.previous_page.url | url }}" class="md-footer__link md-footer__link--prev" rel="prev">
|
||||
<div class="md-footer__button md-icon">
|
||||
{% include ".icons/material/arrow-left.svg" %}
|
||||
</div>
|
||||
<div class="md-footer__title">
|
||||
<div class="md-ellipsis">
|
||||
<span class="md-footer__direction">
|
||||
{{ lang.t("footer.previous") }}
|
||||
</span>
|
||||
{{ page.previous_page.title }}
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if page.next_page %}
|
||||
<a href="{{ page.next_page.url | url }}" class="md-footer__link md-footer__link--next" rel="next">
|
||||
<div class="md-footer__title">
|
||||
<div class="md-ellipsis">
|
||||
<span class="md-footer__direction">
|
||||
{{ lang.t("footer.next") }}
|
||||
</span>
|
||||
{{ page.next_page.title }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-footer__button md-icon">
|
||||
{% include ".icons/material/arrow-right.svg" %}
|
||||
</div>
|
||||
</a>
|
||||
{% endif %}
|
||||
</nav>
|
||||
{% endif %}
|
||||
<div class="md-footer-meta md-typeset">
|
||||
<div class="md-footer-meta__inner md-grid">
|
||||
<div class="md-footer-copyright">
|
||||
{% if config.copyright %}
|
||||
<div class="md-footer-copyright__highlight">
|
||||
{{ config.copyright }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% include "partials/social.html" %}
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
<!--
|
||||
Copyright (c) 2016-2020 Martin Donath <martin.donath@squidfunk.com>
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.
|
||||
-->
|
||||
|
||||
<!-- Main navigation -->
|
||||
<nav
|
||||
class="md-nav md-nav--primary"
|
||||
aria-label="{{ lang.t('nav.title') }}"
|
||||
data-md-level="0"
|
||||
>
|
||||
|
||||
<!-- Site title -->
|
||||
<label class="md-nav__title" for="__drawer">
|
||||
<a
|
||||
href="{{ config.site_url | default(nav.homepage.url, true) | url }}"
|
||||
title="{{ config.site_name }}"
|
||||
class="md-nav__button md-logo"
|
||||
aria-label="{{ config.site_name }}"
|
||||
>
|
||||
{% include "partials/logo.html" %}
|
||||
</a>
|
||||
{{ config.site_name }}
|
||||
</label>
|
||||
|
||||
<!-- Repository containing source -->
|
||||
{% if config.repo_url %}
|
||||
<div class="md-nav__source">
|
||||
{% include "partials/source.html" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- Render item list -->
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
{% for nav_item in nav %}
|
||||
{% set path = "nav-" + loop.index | string %}
|
||||
{% set level = 1 %}
|
||||
{% include "partials/nav-item.html" %}
|
||||
{% endfor %}
|
||||
<li class="md-nav__item">
|
||||
<a class="md-nav__link" href="https://muo.gg/discord" target="_blank">
|
||||
<img src="https://img.shields.io/discord/751317910504603701?logo=discord&style=social" alt="Discord" />
|
||||
</a>
|
||||
<a class="md-nav__link" href="https://www.reddit.com/r/modernuo" target="_blank">
|
||||
<img src="https://img.shields.io/reddit/subreddit-subscribers/modernuo?style=social&label=/r/modernuo" alt="/r/modernuo" />
|
||||
</a>
|
||||
<a class="md-nav__link" href="https://www.twitter.com/modernuo" target="_blank">
|
||||
<img src="https://img.shields.io/twitter/follow/modernuo?label=@modernuo&style=social" alt="@modernuo" />
|
||||
</a>
|
||||
<a class="md-nav__link" href="https://gitter.im/modernuo/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge" target="_blank">
|
||||
<img src="https://img.shields.io/gitter/room/modernuo/modernuo?logo=gitter&logoColor=46BC99&style=social" alt="Gitter" />
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
{
|
||||
"category": "Assistant",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xBE",
|
||||
"name": "Assistant Version",
|
||||
"description": "Client sends assistant version information. Razor CE sends version as ASCII string.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "3+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBE",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Version String",
|
||||
"type": "ascii",
|
||||
"size": "var",
|
||||
"description": "Assistant version string (Razor CE sends \u0027version\u0027 or \u0027ProductName version\u0027)"
|
||||
}
|
||||
],
|
||||
"notes": "Razor Community Edition sends version as ASCII. Legacy UOAssist would send int32 + ASCII client version.",
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Assistants/AssistantHandler.cs",
|
||||
"line": 69
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,216 +0,0 @@
|
|||
{
|
||||
"category": "Book",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x66",
|
||||
"name": "Book Content Change",
|
||||
"description": "Client sends updated book page content when player edits a writable book.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "9+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x66",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Book Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the book being edited"
|
||||
},
|
||||
{
|
||||
"name": "Page Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of pages being updated"
|
||||
},
|
||||
{
|
||||
"name": "Pages",
|
||||
"type": "loop",
|
||||
"description": "Page contents being updated",
|
||||
"loop": {
|
||||
"countField": "pageCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Page Index",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Page number (1-indexed)"
|
||||
},
|
||||
{
|
||||
"name": "Line Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of lines on page (max 8)"
|
||||
},
|
||||
{
|
||||
"name": "Lines",
|
||||
"type": "loop",
|
||||
"description": "Lines on the page",
|
||||
"loop": {
|
||||
"countField": "lineCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf8-t",
|
||||
"description": "Line text (max 80 characters)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Books/BookPackets.cs",
|
||||
"line": 87
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD4",
|
||||
"name": "Book Header Change",
|
||||
"description": "Client sends updated book title and author when player edits a writable book\u0027s cover.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "13+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD4",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Book Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the book being edited"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Book flags (ignored by server)"
|
||||
},
|
||||
{
|
||||
"name": "Page Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of pages (ignored by server)"
|
||||
},
|
||||
{
|
||||
"name": "Title Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Length of title string including null terminator (max 61)"
|
||||
},
|
||||
{
|
||||
"name": "Title",
|
||||
"type": "utf8-t",
|
||||
"description": "Book title (max 60 characters)"
|
||||
},
|
||||
{
|
||||
"name": "Author Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Length of author string including null terminator (max 31)"
|
||||
},
|
||||
{
|
||||
"name": "Author",
|
||||
"type": "utf8-t",
|
||||
"description": "Book author (max 30 characters)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x93",
|
||||
"direction": "incoming",
|
||||
"relationship": "variant",
|
||||
"note": "Old Header Change format for older clients"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Books/BookPackets.cs",
|
||||
"line": 51
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x93",
|
||||
"name": "Old Book Header Change",
|
||||
"description": "Legacy format for book header changes. Uses fixed-size ASCII strings.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 99,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x93",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Book Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the book being edited"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Book flags (ignored by server)"
|
||||
},
|
||||
{
|
||||
"name": "Page Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of pages (ignored by server)"
|
||||
},
|
||||
{
|
||||
"name": "Title",
|
||||
"type": "ascii",
|
||||
"size": 60,
|
||||
"description": "Book title (fixed 60 bytes, null-padded)"
|
||||
},
|
||||
{
|
||||
"name": "Author",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "Book author (fixed 30 bytes, null-padded)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xD4",
|
||||
"direction": "incoming",
|
||||
"relationship": "variant",
|
||||
"note": "New Header Change format for newer clients"
|
||||
}
|
||||
],
|
||||
"notes": "Old format used by older clients. Title and author are fixed-size ASCII.",
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Books/BookPackets.cs",
|
||||
"line": 32
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,250 +0,0 @@
|
|||
{
|
||||
"category": "Bulletin Board",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x71",
|
||||
"subId": "0x03",
|
||||
"name": "Bulletin Board Request Content",
|
||||
"description": "Client requests the full content of a bulletin board message.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "12",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x71",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x03",
|
||||
"description": "Request Content command"
|
||||
},
|
||||
{
|
||||
"name": "Board Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the bulletin board"
|
||||
},
|
||||
{
|
||||
"name": "Message Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the message to read"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x71",
|
||||
"subId": "0x02",
|
||||
"direction": "outgoing",
|
||||
"relationship": "response",
|
||||
"note": "Message Content response"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Bulletin Boards/BulletinBoardPackets.cs",
|
||||
"line": 78
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x71",
|
||||
"subId": "0x04",
|
||||
"name": "Bulletin Board Request Header",
|
||||
"description": "Client requests the header (poster, subject, time) of a bulletin board message.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "12",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x71",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x04",
|
||||
"description": "Request Header command"
|
||||
},
|
||||
{
|
||||
"name": "Board Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the bulletin board"
|
||||
},
|
||||
{
|
||||
"name": "Message Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the message"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x71",
|
||||
"subId": "0x01",
|
||||
"direction": "outgoing",
|
||||
"relationship": "response",
|
||||
"note": "Message Header response"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Bulletin Boards/BulletinBoardPackets.cs",
|
||||
"line": 88
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x71",
|
||||
"subId": "0x05",
|
||||
"name": "Bulletin Board Post Message",
|
||||
"description": "Client posts a new message or reply to the bulletin board.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "12+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x71",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x05",
|
||||
"description": "Post Message command"
|
||||
},
|
||||
{
|
||||
"name": "Board Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the bulletin board"
|
||||
},
|
||||
{
|
||||
"name": "Thread Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of parent message (0 for new thread)"
|
||||
},
|
||||
{
|
||||
"name": "Subject Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of subject string"
|
||||
},
|
||||
{
|
||||
"name": "Subject",
|
||||
"type": "utf8",
|
||||
"description": "Message subject"
|
||||
},
|
||||
{
|
||||
"name": "Line Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of message lines"
|
||||
},
|
||||
{
|
||||
"name": "Lines",
|
||||
"type": "loop",
|
||||
"description": "Message body lines",
|
||||
"loop": {
|
||||
"countField": "Line Count",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Line Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of this line"
|
||||
},
|
||||
{
|
||||
"name": "Line",
|
||||
"type": "utf8",
|
||||
"description": "Line text"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Bulletin Boards/BulletinBoardPackets.cs",
|
||||
"line": 98
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x71",
|
||||
"subId": "0x06",
|
||||
"name": "Bulletin Board Remove Message",
|
||||
"description": "Client requests to delete a bulletin board message.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "12",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x71",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x06",
|
||||
"description": "Remove Message command"
|
||||
},
|
||||
{
|
||||
"name": "Board Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the bulletin board"
|
||||
},
|
||||
{
|
||||
"name": "Message Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the message to delete"
|
||||
}
|
||||
],
|
||||
"notes": "Only the message poster or GameMaster+ can delete messages.",
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Bulletin Boards/BulletinBoardPackets.cs",
|
||||
"line": 153
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,93 +0,0 @@
|
|||
{
|
||||
"category": "Chat",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xB5",
|
||||
"name": "Open Chat Window Request",
|
||||
"description": "Client requests to open the chat window. Newer clients don\u0027t send chat username.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 64,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xB5",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Reserved",
|
||||
"type": "byte[]",
|
||||
"size": 63,
|
||||
"description": "Reserved/unused (newer clients don\u0027t send chat username)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xB2",
|
||||
"direction": "outgoing",
|
||||
"relationship": "response",
|
||||
"note": "Server responds with Chat Message (OpenChatWindow command)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Engines/Chat/ChatPackets.cs",
|
||||
"line": 30
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xB3",
|
||||
"name": "Chat Action",
|
||||
"description": "Client sends chat action commands like sending messages, joining channels, etc.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "8+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xB3",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Language",
|
||||
"type": "ascii",
|
||||
"size": 4,
|
||||
"description": "Language code (e.g., \u0027enu\u0027 for English)"
|
||||
},
|
||||
{
|
||||
"name": "Action ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Chat action ID"
|
||||
},
|
||||
{
|
||||
"name": "Parameter",
|
||||
"type": "utf16be",
|
||||
"size": "var",
|
||||
"description": "Action parameter (Big Endian Unicode)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xB2",
|
||||
"direction": "outgoing",
|
||||
"relationship": "response",
|
||||
"note": "Server responds with Chat Message"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Engines/Chat/ChatPackets.cs",
|
||||
"line": 51
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,965 +0,0 @@
|
|||
{
|
||||
"category": "Encoded Commands (0xD7)",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xD7",
|
||||
"name": "Encoded Command",
|
||||
"description": "Wrapper packet for encoded commands (0xD7 subpackets). Used for house design, abilities, guild/quest requests.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Entity Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of target entity"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Encoded command ID"
|
||||
},
|
||||
{
|
||||
"name": "Data",
|
||||
"type": "byte[]",
|
||||
"description": "Subcommand-specific data"
|
||||
}
|
||||
],
|
||||
"subpackets": [
|
||||
{
|
||||
"subId": "0x02",
|
||||
"name": "Backup",
|
||||
"description": "Backup current house design state",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x03",
|
||||
"name": "Restore",
|
||||
"description": "Restore house design from backup",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x04",
|
||||
"name": "Commit",
|
||||
"description": "Commit house design changes",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x05",
|
||||
"name": "Delete Component",
|
||||
"description": "Delete component from house",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x06",
|
||||
"name": "Build Component",
|
||||
"description": "Place component in house",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x0C",
|
||||
"name": "Close Tool",
|
||||
"description": "Close house design tool",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x0D",
|
||||
"name": "Add Stairs",
|
||||
"description": "Add stairs to house design",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x0E",
|
||||
"name": "Sync Request",
|
||||
"description": "Synchronize house design state",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x10",
|
||||
"name": "Clear Floor",
|
||||
"description": "Clear a floor in house design",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x12",
|
||||
"name": "Change Floor Level",
|
||||
"description": "Change visible floor level",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x13",
|
||||
"name": "Add Roof",
|
||||
"description": "Add roof tile (SE+)",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x14",
|
||||
"name": "Delete Roof",
|
||||
"description": "Delete roof tile (SE+)",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x19",
|
||||
"name": "Set Weapon Ability",
|
||||
"description": "Select weapon special ability",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x1A",
|
||||
"name": "Revert",
|
||||
"description": "Revert house to original state",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x28",
|
||||
"name": "Guild Gump Request",
|
||||
"description": "Open guild gump",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x32",
|
||||
"name": "Quest Gump Request",
|
||||
"description": "Open quest/MLB gump",
|
||||
"direction": "incoming"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 457
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x02",
|
||||
"subId": "0x02",
|
||||
"name": "House Design: Backup",
|
||||
"description": "Client requests to backup current house design state.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x02",
|
||||
"description": "Backup subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1024
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x03",
|
||||
"subId": "0x03",
|
||||
"name": "House Design: Restore",
|
||||
"description": "Client requests to restore house design from backup.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x03",
|
||||
"description": "Restore subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1025
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x04",
|
||||
"subId": "0x04",
|
||||
"name": "House Design: Commit",
|
||||
"description": "Client commits the current house design changes.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x04",
|
||||
"description": "Commit subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1026
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x05",
|
||||
"subId": "0x05",
|
||||
"name": "House Design: Delete Component",
|
||||
"description": "Client requests to delete a component from house design.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x05",
|
||||
"description": "Delete subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Tile ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Tile graphic ID to delete"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "X offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Y offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Z offset from foundation"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1027
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x06",
|
||||
"subId": "0x06",
|
||||
"name": "House Design: Build Component",
|
||||
"description": "Client requests to place a component in house design.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x06",
|
||||
"description": "Build subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Tile ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Tile graphic ID to place"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "X offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Y offset from foundation"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1028
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x0C",
|
||||
"subId": "0x0C",
|
||||
"name": "House Design: Close Tool",
|
||||
"description": "Client closes the house design tool.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0C",
|
||||
"description": "Close subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1029
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x0D",
|
||||
"subId": "0x0D",
|
||||
"name": "House Design: Add Stairs",
|
||||
"description": "Client requests to add stairs to house design.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0D",
|
||||
"description": "Stairs subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Tile ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Stair tile graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "X offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Y offset from foundation"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1030
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x0E",
|
||||
"subId": "0x0E",
|
||||
"name": "House Design: Sync Request",
|
||||
"description": "Client requests to synchronize house design state.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0E",
|
||||
"description": "Sync subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1031
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x10",
|
||||
"subId": "0x10",
|
||||
"name": "House Design: Clear Floor",
|
||||
"description": "Client requests to clear a floor in house design.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x10",
|
||||
"description": "Clear subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1032
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x12",
|
||||
"subId": "0x12",
|
||||
"name": "House Design: Change Floor Level",
|
||||
"description": "Client changes the visible floor level in house design.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x12",
|
||||
"description": "Level subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Floor",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Floor level (1-4)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1033
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x13",
|
||||
"subId": "0x13",
|
||||
"name": "House Design: Add Roof",
|
||||
"description": "Client requests to add a roof tile (Samurai Empire+).",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x13",
|
||||
"description": "Roof subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Tile ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Roof tile graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "X offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Y offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Z offset for roof placement"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {
|
||||
"min": "4.0.3a"
|
||||
},
|
||||
"enhanced": {},
|
||||
"notes": "Added with Samurai Empire expansion"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1035
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x14",
|
||||
"subId": "0x14",
|
||||
"name": "House Design: Delete Roof",
|
||||
"description": "Client requests to delete a roof tile (Samurai Empire+).",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x14",
|
||||
"description": "Roof Delete subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Tile ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Roof tile graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "X offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Y offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Z offset of roof to delete"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {
|
||||
"min": "4.0.3a"
|
||||
},
|
||||
"enhanced": {},
|
||||
"notes": "Added with Samurai Empire expansion"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1036
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x19",
|
||||
"subId": "0x19",
|
||||
"name": "Set Weapon Ability",
|
||||
"description": "Client selects a weapon special ability.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["Combat"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Player serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x19",
|
||||
"description": "Set Ability subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Ability Index",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Ability index (0 = clear, 1+ = ability index)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xBF/0x21",
|
||||
"relationship": "response",
|
||||
"note": "Clear Weapon Ability"
|
||||
},
|
||||
{
|
||||
"id": "0xBF/0x25",
|
||||
"relationship": "response",
|
||||
"note": "Toggle Special Ability"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Weapons/Abilities/WeaponAbilityPackets.cs",
|
||||
"line": 11
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x1A",
|
||||
"subId": "0x1A",
|
||||
"name": "House Design: Revert",
|
||||
"description": "Client requests to revert house design to original state.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x1A",
|
||||
"description": "Revert subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1038
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x28",
|
||||
"subId": "0x28",
|
||||
"name": "Guild Gump Request",
|
||||
"description": "Client requests to open the guild gump.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["Guild"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Player serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x28",
|
||||
"description": "Guild Gump subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 54
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x32",
|
||||
"subId": "0x32",
|
||||
"name": "Quest Gump Request",
|
||||
"description": "Client requests to open the quest/MLB gump.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["Quest"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Player serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x32",
|
||||
"description": "Quest Gump subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 55
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,142 +0,0 @@
|
|||
{
|
||||
"category": "Item",
|
||||
"tags": ["Mobile"],
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x06",
|
||||
"name": "Use Request (Double-Click)",
|
||||
"description": "Sent when the player double-clicks an item or mobile. Can also trigger paperdoll if high bit is set.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x06",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the target. If high bit (0x80000000) is set, opens player\u0027s paperdoll instead."
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingEntityPackets.cs",
|
||||
"line": 61
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x09",
|
||||
"name": "Look Request (Single-Click)",
|
||||
"description": "Sent when the player single-clicks an item or mobile to see its name/properties.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x09",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the target entity"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingEntityPackets.cs",
|
||||
"line": 105
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xB6",
|
||||
"name": "Object Help Request",
|
||||
"description": "Sent when the player requests help/info about an object (Shift+Click or context menu).",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xB6",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the target entity"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Language",
|
||||
"type": "ascii",
|
||||
"size": 3,
|
||||
"description": "Language code (e.g., \u0027ENU\u0027)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingEntityPackets.cs",
|
||||
"line": 32
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD6",
|
||||
"name": "Batch Query Properties",
|
||||
"description": "Sent by the client to request Object Property Lists (tooltips) for multiple entities at once.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "3 + (4 x entityCount)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD6",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serials",
|
||||
"type": "array",
|
||||
"description": "List of entity serials to query",
|
||||
"loop": {
|
||||
"countField": "(length-3)/4",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Entity serial"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingEntityPackets.cs",
|
||||
"line": 154
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,134 +0,0 @@
|
|||
{
|
||||
"category": "FreeShard Protocol (0xF1)",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xF1",
|
||||
"name": "FreeShard Protocol",
|
||||
"description": "Bundle packet for freeshard-specific commands (UOGateway). Sub-command is a single byte.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF1",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Subcommand ID"
|
||||
},
|
||||
{
|
||||
"name": "Data",
|
||||
"type": "byte[]",
|
||||
"description": "Subcommand-specific data"
|
||||
}
|
||||
],
|
||||
"subpackets": [
|
||||
{
|
||||
"subId": "0xFE",
|
||||
"name": "Query Compact Shard Stats",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0xFF",
|
||||
"name": "Query Extended Shard Stats",
|
||||
"direction": "incoming"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/FreeshardProtocol.cs",
|
||||
"line": 21
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xF1/0xFE",
|
||||
"subId": "0xFE",
|
||||
"name": "Query Compact Shard Stats",
|
||||
"description": "Query server for compact statistics. Server responds with 0x51.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF1",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xFE",
|
||||
"description": "Query Compact Shard Stats subcommand"
|
||||
}
|
||||
],
|
||||
"notes": "Outgame only. Requires uogateway.enabled configuration.",
|
||||
"related": [
|
||||
{
|
||||
"id": "0x51",
|
||||
"relationship": "response",
|
||||
"note": "Compact Shard Stats response"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/UOGateway.cs",
|
||||
"line": 31
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xF1/0xFF",
|
||||
"subId": "0xFF",
|
||||
"name": "Query Extended Shard Stats",
|
||||
"description": "Query server for extended statistics. Server responds with raw UTF-8 string.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF1",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xFF",
|
||||
"description": "Query Extended Shard Stats subcommand"
|
||||
}
|
||||
],
|
||||
"notes": "Outgame only. Requires uogateway.enabled configuration. Response is a raw UTF-8 string (no packet wrapper): 'ModernUO, Name={name}, Age={hours}, Clients={count}, Items={count}, Chars={count}, Mem={kb}K, Ver=2\\0'",
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/UOGateway.cs",
|
||||
"line": 32
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,116 +0,0 @@
|
|||
{
|
||||
"category": "Gump",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xB1",
|
||||
"name": "Gump Response",
|
||||
"description": "Client response to a generic gump dialog (button press, checkbox/radio selections, text entries).",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xB1",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial from the 0xB0/0xDD gump packet"
|
||||
},
|
||||
{
|
||||
"name": "Gump ID",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Gump type ID from the 0xB0/0xDD gump packet"
|
||||
},
|
||||
{
|
||||
"name": "Button ID",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "ID of button pressed (0 if gump closed without pressing a button)"
|
||||
},
|
||||
{
|
||||
"name": "Switch Count",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Number of active switches (checkboxes/radio buttons)"
|
||||
},
|
||||
{
|
||||
"name": "Switches",
|
||||
"type": "array",
|
||||
"description": "Array of switch IDs that are active/checked",
|
||||
"entries": [
|
||||
{
|
||||
"name": "Switch ID",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "ID of an active switch"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Text Entry Count",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Number of text entries"
|
||||
},
|
||||
{
|
||||
"name": "Text Entries",
|
||||
"type": "array",
|
||||
"description": "Array of text entry responses",
|
||||
"entries": [
|
||||
{
|
||||
"name": "Entry ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Text entry field ID"
|
||||
},
|
||||
{
|
||||
"name": "Text Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Length of text in characters"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "unicode-be",
|
||||
"size": "var",
|
||||
"description": "UTF-16 BE encoded text (length * 2 bytes, not null-terminated)"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xB0",
|
||||
"relationship": "response",
|
||||
"note": "Generic Gump (uncompressed) - server sends this to display the gump"
|
||||
},
|
||||
{
|
||||
"id": "0xDD",
|
||||
"relationship": "response",
|
||||
"note": "Compressed Gump - server sends this to display a compressed gump"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {},
|
||||
"enhanced": {}
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Gumps/Base/GumpSystem.cs",
|
||||
"line": 31
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,188 +0,0 @@
|
|||
{
|
||||
"category": "Hardware",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xD9",
|
||||
"name": "Hardware Info",
|
||||
"description": "Client sends hardware and system information. Also known as 'Spy on Client' packet.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 268,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD9",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown (1 for pre-4.0.1a, 2 for 4.0.1a+)"
|
||||
},
|
||||
{
|
||||
"name": "Instance ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "UO client instance identifier"
|
||||
},
|
||||
{
|
||||
"name": "OS Major",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Operating system major version"
|
||||
},
|
||||
{
|
||||
"name": "OS Minor",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Operating system minor version"
|
||||
},
|
||||
{
|
||||
"name": "OS Revision",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Operating system revision"
|
||||
},
|
||||
{
|
||||
"name": "CPU Manufacturer",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "CPU manufacturer code"
|
||||
},
|
||||
{
|
||||
"name": "CPU Family",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "CPU family identifier"
|
||||
},
|
||||
{
|
||||
"name": "CPU Model",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "CPU model number"
|
||||
},
|
||||
{
|
||||
"name": "CPU Clock Speed",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "CPU clock speed in MHz"
|
||||
},
|
||||
{
|
||||
"name": "CPU Quantity",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of CPUs/cores"
|
||||
},
|
||||
{
|
||||
"name": "Physical Memory",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Physical memory in MB"
|
||||
},
|
||||
{
|
||||
"name": "Screen Width",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Screen width in pixels"
|
||||
},
|
||||
{
|
||||
"name": "Screen Height",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Screen height in pixels"
|
||||
},
|
||||
{
|
||||
"name": "Screen Depth",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Screen color depth in bits"
|
||||
},
|
||||
{
|
||||
"name": "DirectX Major",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "DirectX major version"
|
||||
},
|
||||
{
|
||||
"name": "DirectX Minor",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "DirectX minor version"
|
||||
},
|
||||
{
|
||||
"name": "Video Card Description",
|
||||
"type": "unicode-le",
|
||||
"size": 128,
|
||||
"description": "Video card description string (64 chars, little-endian UTF-16)"
|
||||
},
|
||||
{
|
||||
"name": "Video Card Vendor ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Video card vendor identifier"
|
||||
},
|
||||
{
|
||||
"name": "Video Card Device ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Video card device identifier"
|
||||
},
|
||||
{
|
||||
"name": "Video Card Memory",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Video card memory in MB"
|
||||
},
|
||||
{
|
||||
"name": "Distribution",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Distribution type"
|
||||
},
|
||||
{
|
||||
"name": "Clients Running",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of UO clients currently running"
|
||||
},
|
||||
{
|
||||
"name": "Clients Installed",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of UO clients installed"
|
||||
},
|
||||
{
|
||||
"name": "Partial Installed",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Partial installation flag"
|
||||
},
|
||||
{
|
||||
"name": "Language",
|
||||
"type": "unicode-le",
|
||||
"size": 8,
|
||||
"description": "Language code (4 chars, little-endian UTF-16)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown2",
|
||||
"type": "ascii",
|
||||
"size": 64,
|
||||
"description": "Unknown data"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {},
|
||||
"enhanced": {},
|
||||
"notes": "Packet size is 268 bytes (0x10C) for clients 4.0.1a+"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Misc/HardwareInfo.cs",
|
||||
"line": 93
|
||||
},
|
||||
"notes": "This packet is sent automatically by the client after login. The server uses this to track hardware information for debugging and statistics purposes."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
{
|
||||
"category": "House",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xFB",
|
||||
"name": "Public House Content",
|
||||
"description": "Client toggles whether to receive content updates for public houses. When enabled, the server sends container contents for publicly accessible houses.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 2,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xFB",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Show Contents",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "0 = hide public house contents, 1 = show public house contents"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {},
|
||||
"enhanced": {}
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingHousePackets.cs",
|
||||
"line": 24
|
||||
},
|
||||
"notes": "This packet allows clients to opt-in or opt-out of receiving container content data for publicly accessible houses, which can reduce bandwidth for players who don't need to see inside public houses."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,298 +0,0 @@
|
|||
{
|
||||
"category": "Items",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x07",
|
||||
"name": "Lift Request",
|
||||
"description": "Client requests to pick up an item from the world or a container.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 7,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x07",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the item to lift"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Amount to pick up"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x27",
|
||||
"relationship": "rej",
|
||||
"note": "Sent if lift is rejected"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs",
|
||||
"line": 35
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x08",
|
||||
"name": "Drop Request",
|
||||
"description": "Client requests to drop an item at a location or into a container. Size varies by client version.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Classic",
|
||||
"size": 14,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x08",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of item being dropped (ignored)"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Target Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Dest",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Target container/mobile serial, or 0xFFFFFFFF for world"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Container Grid Lines",
|
||||
"condition": "Client version \u003e= 6.0.1.7 (ContainerGridLines)",
|
||||
"size": 15,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x08",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of item being dropped (ignored)"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Target Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Grid Location",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Grid slot position in container"
|
||||
},
|
||||
{
|
||||
"name": "Dest",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Target container/mobile serial, or 0xFFFFFFFF for world"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {},
|
||||
"enhanced": {},
|
||||
"notes": "ContainerGridLines (6.0.1.7+) adds gridLocation byte"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs",
|
||||
"line": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x13",
|
||||
"name": "Equip Request",
|
||||
"description": "Client requests to equip a held item on a mobile.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 10,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x13",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of item to equip"
|
||||
},
|
||||
{
|
||||
"name": "Layer",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Equipment layer"
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of target mobile"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs",
|
||||
"line": 44
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xEC",
|
||||
"name": "Equip Macro",
|
||||
"description": "Client requests to equip multiple items from a saved macro.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xEC",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of items to equip"
|
||||
},
|
||||
{
|
||||
"name": "Items",
|
||||
"type": "loop",
|
||||
"loop": {
|
||||
"countField": "count",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of item to equip"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"enhanced": {}
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs",
|
||||
"line": 112
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xED",
|
||||
"name": "Unequip Macro",
|
||||
"description": "Client requests to unequip items from specific layers via macro.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xED",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of layers to unequip"
|
||||
},
|
||||
{
|
||||
"name": "Layers",
|
||||
"type": "loop",
|
||||
"loop": {
|
||||
"countField": "count",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Layer",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Layer to unequip from"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"enhanced": {}
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs",
|
||||
"line": 125
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,907 +0,0 @@
|
|||
{
|
||||
"category": "Mahjong",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xDA",
|
||||
"name": "Mahjong Game",
|
||||
"description": "Mahjong game packets for controlling the in-game Mahjong table. Used for both client commands and server updates.",
|
||||
"direction": "both",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Command ID (incoming uses byte prefix + byte command)"
|
||||
},
|
||||
{
|
||||
"name": "Data",
|
||||
"type": "byte[]",
|
||||
"description": "Command-specific data"
|
||||
}
|
||||
],
|
||||
"subpackets": [
|
||||
{
|
||||
"subId": "0x02",
|
||||
"name": "Players Info",
|
||||
"description": "Sends player information for all seats",
|
||||
"direction": "outgoing"
|
||||
},
|
||||
{
|
||||
"subId": "0x03",
|
||||
"name": "Tile Info",
|
||||
"description": "Sends information about a single tile",
|
||||
"direction": "outgoing"
|
||||
},
|
||||
{
|
||||
"subId": "0x04",
|
||||
"name": "Tiles Info",
|
||||
"description": "Sends information about all tiles",
|
||||
"direction": "outgoing"
|
||||
},
|
||||
{
|
||||
"subId": "0x05",
|
||||
"name": "General Info",
|
||||
"description": "Sends game state (dice, dealer, wall break)",
|
||||
"direction": "outgoing"
|
||||
},
|
||||
{
|
||||
"subId": "0x06",
|
||||
"name": "Exit Game",
|
||||
"description": "Client exits the game",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x0A",
|
||||
"name": "Give Points",
|
||||
"description": "Transfer points to another player",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x0B",
|
||||
"name": "Roll Dice",
|
||||
"description": "Client requests to roll dice",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x0C",
|
||||
"name": "Build Walls",
|
||||
"description": "Dealer builds/resets tile walls",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x0D",
|
||||
"name": "Reset Scores",
|
||||
"description": "Dealer resets all scores",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x0F",
|
||||
"name": "Assign Dealer",
|
||||
"description": "Assign a new dealer",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x10",
|
||||
"name": "Open Seat",
|
||||
"description": "Open a seat for new players",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x11",
|
||||
"name": "Change Option",
|
||||
"description": "Change game options",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x15",
|
||||
"name": "Move Wall Break",
|
||||
"description": "Move wall break indicator",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x16",
|
||||
"name": "Toggle Public Hand",
|
||||
"description": "Toggle hand visibility",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x17",
|
||||
"name": "Move Tile",
|
||||
"description": "Move a tile on the board",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x18",
|
||||
"name": "Move Dealer Indicator",
|
||||
"description": "Move dealer indicator",
|
||||
"direction": "incoming"
|
||||
},
|
||||
{
|
||||
"subId": "0x19",
|
||||
"name": "Join Game",
|
||||
"description": "Server opens game interface",
|
||||
"direction": "outgoing"
|
||||
},
|
||||
{
|
||||
"subId": "0x1A",
|
||||
"name": "Relieve",
|
||||
"description": "Server closes game interface",
|
||||
"direction": "outgoing"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 46
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x06",
|
||||
"name": "Mahjong Exit Game",
|
||||
"description": "Client requests to exit the Mahjong game.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown byte"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x06",
|
||||
"description": "Exit Game command"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 108
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x0A",
|
||||
"name": "Mahjong Give Points",
|
||||
"description": "Client transfers points to another player.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 14,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown byte"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x0A",
|
||||
"description": "Give Points command"
|
||||
},
|
||||
{
|
||||
"name": "To Position",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Target player seat position"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Points to transfer"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 120
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x0B",
|
||||
"name": "Mahjong Roll Dice",
|
||||
"description": "Client requests to roll the dice.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown byte"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x0B",
|
||||
"description": "Roll Dice command"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 133
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x0C",
|
||||
"name": "Mahjong Build Walls",
|
||||
"description": "Dealer requests to reset and build the tile walls.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown byte"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x0C",
|
||||
"description": "Build Walls command"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 143
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x0D",
|
||||
"name": "Mahjong Reset Scores",
|
||||
"description": "Dealer requests to reset all player scores to base value.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown byte"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x0D",
|
||||
"description": "Reset Scores command"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 153
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x0F",
|
||||
"name": "Mahjong Assign Dealer",
|
||||
"description": "Dealer assigns another player as the new dealer.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 10,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown byte"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x0F",
|
||||
"description": "Assign Dealer command"
|
||||
},
|
||||
{
|
||||
"name": "Position",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Seat position of new dealer"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 163
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x10",
|
||||
"name": "Mahjong Open Seat",
|
||||
"description": "Dealer opens a seat, removing the current player.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 10,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown byte"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x10",
|
||||
"description": "Open Seat command"
|
||||
},
|
||||
{
|
||||
"name": "Position",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Seat position to open"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 175
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x11",
|
||||
"name": "Mahjong Change Option",
|
||||
"description": "Dealer changes game options (show scores, spectator vision).",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 13,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown byte"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x11",
|
||||
"description": "Change Option command"
|
||||
},
|
||||
{
|
||||
"name": "Reserved",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Reserved (not used)"
|
||||
},
|
||||
{
|
||||
"name": "Reserved 2",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Reserved (not used)"
|
||||
},
|
||||
{
|
||||
"name": "Options",
|
||||
"type": "bitflags",
|
||||
"size": 1,
|
||||
"description": "Game options",
|
||||
"values": [
|
||||
{ "value": "0x01", "name": "Show Scores", "description": "Display player scores" },
|
||||
{ "value": "0x02", "name": "Spectator Vision", "description": "Spectators can see all tiles" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 192
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x15",
|
||||
"name": "Mahjong Move Wall Break Indicator",
|
||||
"description": "Dealer moves the wall break indicator position.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 13,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown byte"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x15",
|
||||
"description": "Move Wall Break Indicator command"
|
||||
},
|
||||
{
|
||||
"name": "Y Position",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "New Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "X Position",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "New X coordinate"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 208
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x16",
|
||||
"name": "Mahjong Toggle Public Hand",
|
||||
"description": "Player toggles whether their hand is visible to others.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 13,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown byte"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x16",
|
||||
"description": "Toggle Public Hand command"
|
||||
},
|
||||
{
|
||||
"name": "Reserved",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Reserved (not used)"
|
||||
},
|
||||
{
|
||||
"name": "Reserved 2",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Reserved (not used)"
|
||||
},
|
||||
{
|
||||
"name": "Public Hand",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True to show hand publicly"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 221
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x17",
|
||||
"name": "Mahjong Move Tile",
|
||||
"description": "Player moves a tile to a new position with direction and flip state.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 22,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown byte"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x17",
|
||||
"description": "Move Tile command"
|
||||
},
|
||||
{
|
||||
"name": "Tile Number",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Tile index number"
|
||||
},
|
||||
{
|
||||
"name": "Current Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Current tile direction (unused)"
|
||||
},
|
||||
{
|
||||
"name": "New Direction",
|
||||
"type": "enum",
|
||||
"size": 1,
|
||||
"description": "New tile direction",
|
||||
"values": [
|
||||
{ "value": "0", "name": "Up", "description": "Facing up" },
|
||||
{ "value": "1", "name": "Left", "description": "Facing left" },
|
||||
{ "value": "2", "name": "Down", "description": "Facing down" },
|
||||
{ "value": "3", "name": "Right", "description": "Facing right" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Reserved",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Reserved byte"
|
||||
},
|
||||
{
|
||||
"name": "Flip",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True to flip tile face-up"
|
||||
},
|
||||
{
|
||||
"name": "Current Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Current Y position (unused)"
|
||||
},
|
||||
{
|
||||
"name": "Current X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Current X position (unused)"
|
||||
},
|
||||
{
|
||||
"name": "Reserved 2",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Reserved byte"
|
||||
},
|
||||
{
|
||||
"name": "New Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "New Y position"
|
||||
},
|
||||
{
|
||||
"name": "New X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "New X position"
|
||||
},
|
||||
{
|
||||
"name": "Reserved 3",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Reserved byte"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 236
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x18",
|
||||
"name": "Mahjong Move Dealer Indicator",
|
||||
"description": "Dealer moves the dealer indicator with direction and wind.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 15,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown byte"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x18",
|
||||
"description": "Move Dealer Indicator command"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "enum",
|
||||
"size": 1,
|
||||
"description": "Indicator direction",
|
||||
"values": [
|
||||
{ "value": "0", "name": "Up", "description": "Facing up" },
|
||||
{ "value": "1", "name": "Left", "description": "Facing left" },
|
||||
{ "value": "2", "name": "Down", "description": "Facing down" },
|
||||
{ "value": "3", "name": "Right", "description": "Facing right" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Wind",
|
||||
"type": "enum",
|
||||
"size": 1,
|
||||
"description": "Wind direction displayed",
|
||||
"values": [
|
||||
{ "value": "0", "name": "North", "description": "North wind" },
|
||||
{ "value": "1", "name": "East", "description": "East wind" },
|
||||
{ "value": "2", "name": "South", "description": "South wind" },
|
||||
{ "value": "3", "name": "West", "description": "West wind" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Y Position",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "New Y position"
|
||||
},
|
||||
{
|
||||
"name": "X Position",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "New X position"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 271
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
{
|
||||
"category": "Map",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x56",
|
||||
"name": "Map Command",
|
||||
"description": "Client sends map pin commands for editable map items. Commands include adding, inserting, changing, and removing pins.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 11,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x56",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Map Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the map item"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "enum",
|
||||
"size": 1,
|
||||
"description": "Map pin command type",
|
||||
"values": [
|
||||
{ "value": "1", "name": "AddPin", "description": "Add a new pin" },
|
||||
{ "value": "2", "name": "InsertPin", "description": "Insert pin at position" },
|
||||
{ "value": "3", "name": "ChangePin", "description": "Change existing pin" },
|
||||
{ "value": "4", "name": "RemovePin", "description": "Remove a pin" },
|
||||
{ "value": "5", "name": "ClearPins", "description": "Clear all pins" },
|
||||
{ "value": "6", "name": "ToggleEditable", "description": "Toggle edit mode" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Number",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Pin number (for insert, change, remove commands)"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X coordinate of pin"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y coordinate of pin"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x56",
|
||||
"direction": "outgoing",
|
||||
"relationship": "related",
|
||||
"note": "Server map pin commands"
|
||||
},
|
||||
{
|
||||
"id": "0x90",
|
||||
"direction": "outgoing",
|
||||
"relationship": "related",
|
||||
"note": "Map Details packet (old)"
|
||||
},
|
||||
{
|
||||
"id": "0xF5",
|
||||
"direction": "outgoing",
|
||||
"relationship": "related",
|
||||
"note": "Map Details packet (new)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Maps/MapItemPackets.cs",
|
||||
"line": 28
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,300 +0,0 @@
|
|||
{
|
||||
"category": "Message",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x03",
|
||||
"name": "ASCII Speech",
|
||||
"description": "Client sends ASCII-encoded speech message.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x03",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Message type",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Regular",
|
||||
"description": "Normal speech"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "System",
|
||||
"description": "System message"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Emote",
|
||||
"description": "Emote (*action*)"
|
||||
},
|
||||
{
|
||||
"value": 6,
|
||||
"name": "Label",
|
||||
"description": "Object label"
|
||||
},
|
||||
{
|
||||
"value": 7,
|
||||
"name": "Focus",
|
||||
"description": "Focused message"
|
||||
},
|
||||
{
|
||||
"value": 8,
|
||||
"name": "Whisper",
|
||||
"description": "Whisper"
|
||||
},
|
||||
{
|
||||
"value": 9,
|
||||
"name": "Yell",
|
||||
"description": "Yell"
|
||||
},
|
||||
{
|
||||
"value": 10,
|
||||
"name": "Spell",
|
||||
"description": "Spell words"
|
||||
},
|
||||
{
|
||||
"value": 13,
|
||||
"name": "Guild",
|
||||
"description": "Guild chat"
|
||||
},
|
||||
{
|
||||
"value": 14,
|
||||
"name": "Alliance",
|
||||
"description": "Alliance chat"
|
||||
},
|
||||
{
|
||||
"value": 15,
|
||||
"name": "Command",
|
||||
"description": "Command"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Text color hue"
|
||||
},
|
||||
{
|
||||
"name": "Font",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Font ID"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "ascii-t",
|
||||
"description": "Speech text (max 128 chars)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x1C",
|
||||
"relationship": "response",
|
||||
"note": "ASCII Message sent to other clients"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMessagePackets.cs",
|
||||
"line": 31
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xAD",
|
||||
"name": "Unicode Speech",
|
||||
"description": "Client sends Unicode-encoded speech message. Type byte upper bits (0xC0) indicate if keywords are encoded.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Standard Unicode",
|
||||
"condition": "type & 0xC0 == 0",
|
||||
"size": "12+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xAD",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "enum",
|
||||
"size": 1,
|
||||
"description": "Message type (0xC0 bits clear)",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Regular",
|
||||
"description": "Normal speech"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "System",
|
||||
"description": "System message"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Emote",
|
||||
"description": "Emote (*action*)"
|
||||
},
|
||||
{
|
||||
"value": 8,
|
||||
"name": "Whisper",
|
||||
"description": "Whisper"
|
||||
},
|
||||
{
|
||||
"value": 9,
|
||||
"name": "Yell",
|
||||
"description": "Yell"
|
||||
},
|
||||
{
|
||||
"value": 13,
|
||||
"name": "Guild",
|
||||
"description": "Guild chat"
|
||||
},
|
||||
{
|
||||
"value": 14,
|
||||
"name": "Alliance",
|
||||
"description": "Alliance chat"
|
||||
},
|
||||
{
|
||||
"value": 15,
|
||||
"name": "Command",
|
||||
"description": "Command"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Text color hue"
|
||||
},
|
||||
{
|
||||
"name": "Font",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Font ID"
|
||||
},
|
||||
{
|
||||
"name": "Language",
|
||||
"type": "ascii",
|
||||
"size": 4,
|
||||
"description": "Language code (e.g., 'ENU')"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf16be-t",
|
||||
"description": "Speech text (Big Endian Unicode, null-terminated)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Encoded Keywords",
|
||||
"condition": "type & 0xC0 != 0",
|
||||
"size": "14+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xAD",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Message type with 0xC0 flag set. Lower 4 bits = message type (see Standard variant)"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Text color hue"
|
||||
},
|
||||
{
|
||||
"name": "Font",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Font ID"
|
||||
},
|
||||
{
|
||||
"name": "Language",
|
||||
"type": "ascii",
|
||||
"size": 4,
|
||||
"description": "Language code (e.g., 'ENU')"
|
||||
},
|
||||
{
|
||||
"name": "Keyword Header",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Bits 15-4: keyword count (0-50), Bits 3-0: first hold value for packed IDs"
|
||||
},
|
||||
{
|
||||
"name": "Packed Keywords",
|
||||
"type": "byte[]",
|
||||
"description": "12-bit keyword IDs packed alternating: even indices use hold<<8|byte, odd indices use (short&0xFFF0)>>4 with new hold"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf8-t",
|
||||
"description": "Speech text (UTF-8, null-terminated)"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"notes": "Encoded keywords use 12-bit speech IDs packed efficiently. Keyword count must be 0-50. The packing alternates: even-indexed keywords combine the previous 4-bit hold with a new byte (12 bits total), odd-indexed keywords read a short and extract bits 15-4 as the ID, bits 3-0 as the next hold.",
|
||||
"related": [
|
||||
{
|
||||
"id": "0x03",
|
||||
"direction": "incoming",
|
||||
"relationship": "variant",
|
||||
"note": "ASCII Speech (simpler format)"
|
||||
},
|
||||
{
|
||||
"id": "0xAE",
|
||||
"direction": "outgoing",
|
||||
"relationship": "response",
|
||||
"note": "Unicode Message sent to other clients"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMessagePackets.cs",
|
||||
"line": 58
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,168 +0,0 @@
|
|||
{
|
||||
"category": "Mobile",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x75",
|
||||
"name": "Rename Request",
|
||||
"description": "Client requests to rename a mobile (pet).",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 35,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x75",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of mobile to rename"
|
||||
},
|
||||
{
|
||||
"name": "New Name",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "New name for the mobile"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMobilePackets.cs",
|
||||
"line": 32
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x98",
|
||||
"name": "Mobile Name Request",
|
||||
"description": "Client requests the name of a mobile.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x98",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of mobile to query"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMobilePackets.cs",
|
||||
"line": 43
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xB8",
|
||||
"name": "Profile Request",
|
||||
"description": "Client requests to view or edit a mobile's profile.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Display Profile",
|
||||
"condition": "mode == Display (0)",
|
||||
"size": 8,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xB8",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Mode",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0",
|
||||
"description": "Display mode"
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of target mobile"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Edit Profile",
|
||||
"condition": "mode == Edit (1)",
|
||||
"size": "12+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xB8",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Mode",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "1",
|
||||
"description": "Edit mode"
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of target mobile"
|
||||
},
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Unused padding"
|
||||
},
|
||||
{
|
||||
"name": "Text Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Length of text in characters"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf16be",
|
||||
"description": "New profile text (Big Endian Unicode)"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMobilePackets.cs",
|
||||
"line": 53
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
{
|
||||
"category": "Movement",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x02",
|
||||
"name": "Movement Request",
|
||||
"description": "Sent by the client when the player attempts to move in a direction. The server responds with either MovementAck (0x22) if successful or MovementRej (0x21) if blocked.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 7,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x02",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Movement direction (0-7). Bit 0x80 indicates running."
|
||||
},
|
||||
{
|
||||
"name": "Sequence",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Movement sequence number (1-255, wraps). Used for ack/rej matching."
|
||||
},
|
||||
{
|
||||
"name": "Fastwalk Key",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Anti-speedhack prevention key. Set to 0 if fastwalk prevention is disabled."
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x21",
|
||||
"relationship": "rej",
|
||||
"note": "Sent if movement is blocked"
|
||||
},
|
||||
{
|
||||
"id": "0x22",
|
||||
"relationship": "ack",
|
||||
"note": "Sent if movement is successful"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMovementPackets.cs",
|
||||
"line": 83
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,989 +0,0 @@
|
|||
{
|
||||
"category": "Player",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x01",
|
||||
"name": "Disconnect",
|
||||
"description": "Client sends disconnect notification.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x01",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Minus One",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0xFFFFFFFF",
|
||||
"description": "Always -1"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 317
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x05",
|
||||
"name": "Attack Request",
|
||||
"description": "Client requests to attack a mobile.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x05",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of mobile to attack"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x12",
|
||||
"name": "Text Command",
|
||||
"description": "Client sends text-based commands for skills, spells, virtues, etc.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x12",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Command Type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Type of text command",
|
||||
"values": [
|
||||
{
|
||||
"value": "0x24",
|
||||
"name": "Use Skill",
|
||||
"description": "Use a skill by ID"
|
||||
},
|
||||
{
|
||||
"value": "0x27",
|
||||
"name": "Cast Spell From Book",
|
||||
"description": "Cast spell from spellbook"
|
||||
},
|
||||
{
|
||||
"value": "0x2F",
|
||||
"name": "Old Scroll Click",
|
||||
"description": "Old scroll double-click"
|
||||
},
|
||||
{
|
||||
"value": "0x43",
|
||||
"name": "Open Spellbook",
|
||||
"description": "Open spellbook of type"
|
||||
},
|
||||
{
|
||||
"value": "0x56",
|
||||
"name": "Cast Spell Macro",
|
||||
"description": "Cast spell from macro"
|
||||
},
|
||||
{
|
||||
"value": "0x58",
|
||||
"name": "Open Door",
|
||||
"description": "Open door macro"
|
||||
},
|
||||
{
|
||||
"value": "0xC7",
|
||||
"name": "Animate",
|
||||
"description": "Play animation"
|
||||
},
|
||||
{
|
||||
"value": "0xF4",
|
||||
"name": "Invoke Virtue",
|
||||
"description": "Invoke virtue from macro"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "ascii-t",
|
||||
"description": "Command-specific text (skill ID, spell ID, etc.)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 119
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x22",
|
||||
"name": "Resynchronize",
|
||||
"description": "Client requests full world state resync.",
|
||||
"direction": "incoming",
|
||||
"noMerge": true,
|
||||
"isDynamic": false,
|
||||
"size": 3,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x22",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Unused padding"
|
||||
}
|
||||
],
|
||||
"notes": "Not related to outgoing 0x22 (Movement Acknowledgment) despite sharing the same packet ID.",
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 349
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x2C",
|
||||
"name": "Death Status Response",
|
||||
"description": "Client acknowledges death status packet. Currently ignored by server.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 2,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x2C",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 58
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x34",
|
||||
"name": "Mobile Query",
|
||||
"description": "Client queries information about a mobile (stats or skills).",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 10,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x34",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Pattern",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"value": "0xEDEDEDED",
|
||||
"description": "Fixed pattern"
|
||||
},
|
||||
{
|
||||
"name": "Query Type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Type of query",
|
||||
"values": [
|
||||
{
|
||||
"value": "0x04",
|
||||
"name": "Stats",
|
||||
"description": "Request mobile stats"
|
||||
},
|
||||
{
|
||||
"value": "0x05",
|
||||
"name": "Skills",
|
||||
"description": "Request mobile skills"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of mobile to query"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x11",
|
||||
"relationship": "response",
|
||||
"note": "Mobile Status packet sent in response to stats query"
|
||||
},
|
||||
{
|
||||
"id": "0x3A",
|
||||
"relationship": "response",
|
||||
"note": "Skills Update sent in response to skills query"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 376
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x3A",
|
||||
"name": "Change Skill Lock",
|
||||
"description": "Client changes the lock state of a skill.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x3A",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Skill Index",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Skill index to change"
|
||||
},
|
||||
{
|
||||
"name": "Lock State",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "New lock state",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Up",
|
||||
"description": "Skill gains enabled"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Down",
|
||||
"description": "Skill decreases enabled"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Locked",
|
||||
"description": "Skill locked at current value"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 331
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x72",
|
||||
"name": "Set War Mode",
|
||||
"description": "Client toggles war/peace mode.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x72",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Warmode",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True = war mode, False = peace mode"
|
||||
},
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "byte",
|
||||
"size": 3,
|
||||
"description": "Unused padding (0x00, 0x32, 0x00)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 343
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x73",
|
||||
"name": "Ping Request",
|
||||
"description": "Client sends ping for latency measurement.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 2,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x73",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Sequence",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Ping sequence number"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 366
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x7D",
|
||||
"name": "Menu Response",
|
||||
"description": "Client responds to a displayed item menu.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 13,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x7D",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Menu dialog serial"
|
||||
},
|
||||
{
|
||||
"name": "Menu ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Menu ID (unused in implementation)"
|
||||
},
|
||||
{
|
||||
"name": "Index",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Selected item index (1-based, 0 = cancel)"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID of selection"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Hue of selection"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x7C",
|
||||
"relationship": "request",
|
||||
"note": "Display Item List Menu packet"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 287
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x95",
|
||||
"name": "Hue Picker Response",
|
||||
"description": "Client responds to a hue picker dialog.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x95",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Hue picker serial"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Item ID (unused)"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Selected hue (masked with 0x3FFF)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 86
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x9A",
|
||||
"name": "ASCII Prompt Response",
|
||||
"description": "Client responds to an ASCII text prompt.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["Menu"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x9A",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Prompt serial"
|
||||
},
|
||||
{
|
||||
"name": "Prompt ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Prompt ID"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Response type: 0 = cancel, other = submit"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "ascii-t",
|
||||
"description": "Response text (max 128 chars)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xC2",
|
||||
"relationship": "request",
|
||||
"note": "Unicode Prompt packet that triggered this response"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 214
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x9B",
|
||||
"name": "Help Request",
|
||||
"description": "Client requests help/GM assistance.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 258,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x9B",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Data",
|
||||
"type": "byte[]",
|
||||
"size": 257,
|
||||
"description": "Help request data (format TBD)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 338
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xA4",
|
||||
"name": "System Info",
|
||||
"description": "Client sends system/hardware information.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 149,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xA4",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Unknown1",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Unknown2",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Unknown3",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "String1",
|
||||
"type": "ascii",
|
||||
"size": 32,
|
||||
"description": "System string 1"
|
||||
},
|
||||
{
|
||||
"name": "String2",
|
||||
"type": "ascii",
|
||||
"size": 32,
|
||||
"description": "System string 2"
|
||||
},
|
||||
{
|
||||
"name": "String3",
|
||||
"type": "ascii",
|
||||
"size": 32,
|
||||
"description": "System string 3"
|
||||
},
|
||||
{
|
||||
"name": "String4",
|
||||
"type": "ascii",
|
||||
"size": 32,
|
||||
"description": "System string 4"
|
||||
},
|
||||
{
|
||||
"name": "Unknown4",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Unknown5",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Unknown6",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Unknown7",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Unknown8",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Unknown"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 103
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xA7",
|
||||
"name": "Request Scroll Window",
|
||||
"description": "Client requests a tips/scroll window.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 4,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xA7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Last Tip",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Last tip ID viewed"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Scroll type"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 63
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xC2",
|
||||
"name": "Unicode Prompt Response",
|
||||
"description": "Client responds to a Unicode text prompt.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"tags": ["Menu"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xC2",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Prompt serial"
|
||||
},
|
||||
{
|
||||
"name": "Prompt ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Prompt ID"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Response type: 0 = cancel, other = submit"
|
||||
},
|
||||
{
|
||||
"name": "Language",
|
||||
"type": "ascii",
|
||||
"size": 4,
|
||||
"description": "Language code (e.g., \u0027ENU\u0027)"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf16le-t",
|
||||
"description": "Response text (max 128 chars)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xC2",
|
||||
"direction": "outgoing",
|
||||
"relationship": "request",
|
||||
"note": "Unicode Prompt packet that triggered this response"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 250
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xC8",
|
||||
"name": "Set Update Range",
|
||||
"description": "Client requests to change update range. Server ignores and sends back fixed range.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 2,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xC8",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Range",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Requested update range (ignored)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 371
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD0",
|
||||
"name": "Configuration File",
|
||||
"description": "Client sends configuration data. Currently ignored by server.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD0",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Data",
|
||||
"type": "byte[]",
|
||||
"description": "Configuration data (ignored)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 322
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD1",
|
||||
"name": "Logout Request",
|
||||
"description": "Client requests to logout.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 2,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD1",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown (typically 0x01)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 326
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xF4",
|
||||
"name": "Crash Report",
|
||||
"description": "Client sends crash/error report.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF4",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Client Major",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Client major version"
|
||||
},
|
||||
{
|
||||
"name": "Client Minor",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Client minor version"
|
||||
},
|
||||
{
|
||||
"name": "Client Rev",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Client revision"
|
||||
},
|
||||
{
|
||||
"name": "Client Pat",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Client patch"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Player X coordinate at crash"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Player Y coordinate at crash"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Player Z coordinate at crash"
|
||||
},
|
||||
{
|
||||
"name": "Map",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Map ID at crash"
|
||||
},
|
||||
{
|
||||
"name": "Account Name",
|
||||
"type": "ascii",
|
||||
"size": 32,
|
||||
"description": "Account name"
|
||||
},
|
||||
{
|
||||
"name": "Character Name",
|
||||
"type": "ascii",
|
||||
"size": 32,
|
||||
"description": "Character name"
|
||||
},
|
||||
{
|
||||
"name": "IP Address",
|
||||
"type": "ascii",
|
||||
"size": 15,
|
||||
"description": "Client IP address"
|
||||
},
|
||||
{
|
||||
"name": "Unknown1",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Exception Code",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Exception code"
|
||||
},
|
||||
{
|
||||
"name": "Process Name",
|
||||
"type": "ascii",
|
||||
"size": 100,
|
||||
"description": "Process name"
|
||||
},
|
||||
{
|
||||
"name": "Report Text",
|
||||
"type": "ascii",
|
||||
"size": 100,
|
||||
"description": "Report text"
|
||||
},
|
||||
{
|
||||
"name": "Terminator",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Null terminator"
|
||||
},
|
||||
{
|
||||
"name": "Offset",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Crash offset"
|
||||
},
|
||||
{
|
||||
"name": "Stack Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of stack trace entries"
|
||||
},
|
||||
{
|
||||
"name": "Stack Addresses",
|
||||
"type": "loop",
|
||||
"loop": {
|
||||
"countField": "stackCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Address",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Stack frame address"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 413
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,144 +0,0 @@
|
|||
{
|
||||
"category": "Secure Trade",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x6F",
|
||||
"name": "Secure Trade",
|
||||
"description": "Client interacts with a secure trade window.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Cancel Trade",
|
||||
"condition": "action == Cancel (1)",
|
||||
"size": 8,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Action",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "1",
|
||||
"description": "Cancel action"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the trade container"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Toggle Accept",
|
||||
"condition": "action == Check (2)",
|
||||
"size": 12,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Action",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "2",
|
||||
"description": "Check/toggle action"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the trade container"
|
||||
},
|
||||
{
|
||||
"name": "Accepted",
|
||||
"type": "bool",
|
||||
"size": 4,
|
||||
"description": "True if accepting the trade"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Update Gold/Platinum",
|
||||
"condition": "action == UpdateGold (3)",
|
||||
"size": 16,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Action",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "3",
|
||||
"description": "Update gold action"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the trade container"
|
||||
},
|
||||
{
|
||||
"name": "Gold",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Gold amount to trade"
|
||||
},
|
||||
{
|
||||
"name": "Platinum",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Platinum amount to trade"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x6F",
|
||||
"direction": "outgoing",
|
||||
"relationship": "response",
|
||||
"note": "Server sends trade window updates"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMobilePackets.cs",
|
||||
"line": 93
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"category": "Store",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xFA",
|
||||
"name": "Open UO Store",
|
||||
"description": "Client requests to open the Ultima Store interface. Sent when player clicks the UO Store button in the client toolbar (Classic) or selects Ultima Store from the menu (Enhanced).",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 1,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xFA",
|
||||
"description": "Packet identifier"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {},
|
||||
"enhanced": {},
|
||||
"notes": "Ultima Store feature"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Engines/UltimaStore/UltimaStorePackets.cs",
|
||||
"line": 10
|
||||
},
|
||||
"notes": "The Ultima Store is an in-game microtransaction store on official servers. ModernUO includes a placeholder that displays a 'not available' message. Free shards may implement their own store functionality using this packet trigger."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,117 +0,0 @@
|
|||
{
|
||||
"category": "Targeting",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x6C",
|
||||
"name": "Target Response",
|
||||
"description": "Client responds to a target cursor request.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 19,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6C",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Target type",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Object",
|
||||
"description": "Targeting a specific object (mobile/item)"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Location",
|
||||
"description": "Targeting a location/tile"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Target ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Target cursor ID to match request"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Target flags",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Neutral",
|
||||
"description": "Neutral targeting"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Harmful",
|
||||
"description": "Harmful action"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Beneficial",
|
||||
"description": "Beneficial action"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"name": "Cancel",
|
||||
"description": "Targeting canceled"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of targeted object (0 for ground)"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target X coordinate (-1 if canceled)"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target Y coordinate (-1 if canceled)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown (typically 0)"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Target Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Graphic",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Graphic ID of targeted tile (0 for land)"
|
||||
}
|
||||
],
|
||||
"notes": "If x == -1 \u0026\u0026 y == -1 \u0026\u0026 serial is invalid, user pressed Escape to cancel targeting.",
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingTargetingPackets.cs",
|
||||
"line": 28
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,145 +0,0 @@
|
|||
{
|
||||
"category": "Vendor",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x3B",
|
||||
"name": "Vendor Buy Reply",
|
||||
"description": "Client confirms items to purchase from a vendor.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x3B",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Vendor Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the vendor"
|
||||
},
|
||||
{
|
||||
"name": "Flag",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "0x00 = buy, 0x02 = cancel"
|
||||
},
|
||||
{
|
||||
"name": "Items",
|
||||
"type": "loop",
|
||||
"loop": {
|
||||
"untilEnd": true,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Layer",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Layer/container index"
|
||||
},
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of item to buy"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Amount to purchase"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x74",
|
||||
"relationship": "request",
|
||||
"note": "Vendor Buy List packet that initiated this"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingVendorPackets.cs",
|
||||
"line": 25
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x9F",
|
||||
"name": "Vendor Sell Reply",
|
||||
"description": "Client confirms items to sell to a vendor.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x9F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Vendor Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the vendor"
|
||||
},
|
||||
{
|
||||
"name": "Item Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of items to sell"
|
||||
},
|
||||
{
|
||||
"name": "Items",
|
||||
"type": "loop",
|
||||
"loop": {
|
||||
"countField": "itemCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of item to sell"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Amount to sell"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x9E",
|
||||
"relationship": "request",
|
||||
"note": "Vendor Sell List packet that initiated this"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingVendorPackets.cs",
|
||||
"line": 26
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,137 +0,0 @@
|
|||
{
|
||||
"category": "Quest",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xBA",
|
||||
"name": "Quest Arrow",
|
||||
"description": "Sets or cancels the quest tracking arrow on the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Pre-High Seas Set Arrow",
|
||||
"condition": "command == 1 (Set), pre-HighSeas client",
|
||||
"size": 6,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x01",
|
||||
"description": "Set arrow command"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target Y coordinate"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Pre-High Seas Cancel Arrow",
|
||||
"condition": "command == 0 (Cancel), pre-HighSeas client",
|
||||
"size": 6,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Cancel arrow command"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "-1",
|
||||
"description": "X coordinate (-1)"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "-1",
|
||||
"description": "Y coordinate (-1)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "High Seas",
|
||||
"condition": "HighSeas client (7.0.9.0+)",
|
||||
"size": 10,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Command (0 = cancel, 1 = set)"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of tracked target"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xBF/0x07",
|
||||
"relationship": "request",
|
||||
"note": "Quest Arrow Click from client"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {},
|
||||
"enhanced": {},
|
||||
"notes": "HighSeas (7.0.9.0+) adds target serial. Pre-HS clients use 6-byte variant, HS+ clients use 10-byte variant."
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Skills/Tracking/OutgoingArrowPackets.cs",
|
||||
"line": 29
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
{
|
||||
"category": "Assistant",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xF0",
|
||||
"name": "Assistant Handshake",
|
||||
"description": "Server sends handshake to negotiate assistant features with Razor-style clients. Contains disallowed feature flags.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 12,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF0",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x000C",
|
||||
"description": "Packet length (12)"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xFE",
|
||||
"description": "Handshake command"
|
||||
},
|
||||
{
|
||||
"name": "Disallowed Features",
|
||||
"type": "ulong",
|
||||
"size": 8,
|
||||
"description": "Bitmask of disallowed assistant features"
|
||||
}
|
||||
],
|
||||
"notes": "Used for assistant negotiation with Razor Community Edition and similar clients. If negotiation fails within 30 seconds, the server may kick the player.",
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Assistants/AssistantHandler.cs",
|
||||
"line": 132
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBE",
|
||||
"name": "Assistant Version Request",
|
||||
"description": "Server requests assistant version information from the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 3,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBE",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0003",
|
||||
"description": "Packet length (3)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Assistants/AssistantHandler.cs",
|
||||
"line": 122
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,122 +0,0 @@
|
|||
{
|
||||
"category": "Boat",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xF6",
|
||||
"name": "Boat Move (High Seas)",
|
||||
"description": "Sent when a boat moves, containing the boat\u0027s new position and all entities on board with their updated positions.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "18 + (entityCount x 10)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF6",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Boat Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the boat"
|
||||
},
|
||||
{
|
||||
"name": "Speed",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Boat movement speed"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Movement direction (0-7)"
|
||||
},
|
||||
{
|
||||
"name": "Facing",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Boat facing direction"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Boat X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Boat Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Boat Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Entity Count",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Number of entities on boat (max 65535)"
|
||||
},
|
||||
{
|
||||
"name": "Entities",
|
||||
"type": "array",
|
||||
"description": "Entities on the boat with their positions",
|
||||
"loop": {
|
||||
"countField": "entityCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Entity serial"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Entity X coordinate (boat offset applied)"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Entity Y coordinate (boat offset applied)"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Entity Z coordinate"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {
|
||||
"min": "7.0.9.0"
|
||||
},
|
||||
"enhanced": {},
|
||||
"notes": "High Seas expansion feature"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Boats/BoatPackets.cs",
|
||||
"line": 27
|
||||
},
|
||||
"notes": "High Seas expansion only. Entities include mobiles and items on the boat. Coordinates include the boat\u0027s movement offset."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,217 +0,0 @@
|
|||
{
|
||||
"category": "Book",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x66",
|
||||
"name": "Book Content",
|
||||
"description": "Sends full book content including all pages and lines.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "9+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x66",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Book Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the book"
|
||||
},
|
||||
{
|
||||
"name": "Page Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of pages"
|
||||
},
|
||||
{
|
||||
"name": "Pages",
|
||||
"type": "loop",
|
||||
"description": "Page contents",
|
||||
"loop": {
|
||||
"countField": "pageCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Page Number",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Page number (1-indexed)"
|
||||
},
|
||||
{
|
||||
"name": "Line Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of lines on page"
|
||||
},
|
||||
{
|
||||
"name": "Lines",
|
||||
"type": "loop",
|
||||
"description": "Lines on the page",
|
||||
"loop": {
|
||||
"countField": "lineCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf8-t",
|
||||
"description": "Line text"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Books/BookPackets.cs",
|
||||
"line": 136
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD4",
|
||||
"name": "Book Header",
|
||||
"description": "Sends book cover information (title, author, writable status).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "17+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD4",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Book Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the book"
|
||||
},
|
||||
{
|
||||
"name": "Flag On",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x01",
|
||||
"description": "Flag on (always 1)"
|
||||
},
|
||||
{
|
||||
"name": "Writable",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True if book is writable and in range"
|
||||
},
|
||||
{
|
||||
"name": "Page Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of pages"
|
||||
},
|
||||
{
|
||||
"name": "Title Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Length of title + 1 (for null)"
|
||||
},
|
||||
{
|
||||
"name": "Title",
|
||||
"type": "utf8-t",
|
||||
"description": "Book title"
|
||||
},
|
||||
{
|
||||
"name": "Author Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Length of author + 1 (for null)"
|
||||
},
|
||||
{
|
||||
"name": "Author",
|
||||
"type": "utf8-t",
|
||||
"description": "Book author"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x93",
|
||||
"relationship": "variant",
|
||||
"note": "Old Book Header format (outgoing)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Books/BookPackets.cs",
|
||||
"line": 184
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x93",
|
||||
"name": "Old Book Header",
|
||||
"description": "Old format for book cover (fixed-size ASCII strings).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 99,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x93",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Book Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the book"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Book flags"
|
||||
},
|
||||
{
|
||||
"name": "Page Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of pages"
|
||||
},
|
||||
{
|
||||
"name": "Title",
|
||||
"type": "ascii",
|
||||
"size": 60,
|
||||
"description": "Book title (fixed 60 bytes)"
|
||||
},
|
||||
{
|
||||
"name": "Author",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "Book author (fixed 30 bytes)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xD4",
|
||||
"relationship": "variant",
|
||||
"note": "New Book Header format (outgoing)"
|
||||
}
|
||||
],
|
||||
"notes": "Old format used by older clients. Title and author are fixed-size ASCII."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,307 +0,0 @@
|
|||
{
|
||||
"category": "Buff Icon",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xDF",
|
||||
"name": "Buff/Debuff System",
|
||||
"description": "Manages buff and debuff icons displayed on the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Remove Buff",
|
||||
"condition": "command == 0 (Remove)",
|
||||
"size": 15,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "15",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the mobile"
|
||||
},
|
||||
{
|
||||
"name": "Icon ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Buff icon ID"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0000",
|
||||
"description": "Remove command"
|
||||
},
|
||||
{
|
||||
"name": "Unused",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Add Buff (No Args)",
|
||||
"condition": "command == 1 (Add), no arguments",
|
||||
"size": 46,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "46",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the mobile"
|
||||
},
|
||||
{
|
||||
"name": "Icon ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Buff icon ID"
|
||||
},
|
||||
{
|
||||
"name": "Command1",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Add command"
|
||||
},
|
||||
{
|
||||
"name": "Unused1",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Icon Id2",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Buff icon ID (repeated)"
|
||||
},
|
||||
{
|
||||
"name": "Command2",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Add command (repeated)"
|
||||
},
|
||||
{
|
||||
"name": "Unused2",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Duration",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Duration in seconds"
|
||||
},
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "byte[]",
|
||||
"size": 3,
|
||||
"description": "Padding (zeros)"
|
||||
},
|
||||
{
|
||||
"name": "Title Cliloc",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Title cliloc number"
|
||||
},
|
||||
{
|
||||
"name": "Secondary Cliloc",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Secondary cliloc number"
|
||||
},
|
||||
{
|
||||
"name": "Empty Args",
|
||||
"type": "byte[]",
|
||||
"size": 10,
|
||||
"description": "Empty arguments (zeros)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Add Buff (With Args)",
|
||||
"condition": "command == 1 (Add), with arguments",
|
||||
"size": "52 + (args.Length x 2)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the mobile"
|
||||
},
|
||||
{
|
||||
"name": "Icon ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Buff icon ID"
|
||||
},
|
||||
{
|
||||
"name": "Command1",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Add command"
|
||||
},
|
||||
{
|
||||
"name": "Unused1",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Icon Id2",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Buff icon ID (repeated)"
|
||||
},
|
||||
{
|
||||
"name": "Command2",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Add command (repeated)"
|
||||
},
|
||||
{
|
||||
"name": "Unused2",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Duration",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Duration in seconds"
|
||||
},
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "byte[]",
|
||||
"size": 3,
|
||||
"description": "Padding (zeros)"
|
||||
},
|
||||
{
|
||||
"name": "Title Cliloc",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Title cliloc number"
|
||||
},
|
||||
{
|
||||
"name": "Secondary Cliloc",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Secondary cliloc number"
|
||||
},
|
||||
{
|
||||
"name": "Unused3",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Has Args",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Has arguments flag"
|
||||
},
|
||||
{
|
||||
"name": "Unused4",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Tab Prefix",
|
||||
"type": "utf16le",
|
||||
"size": 2,
|
||||
"value": "\\t",
|
||||
"description": "Tab character prefix"
|
||||
},
|
||||
{
|
||||
"name": "Arguments",
|
||||
"type": "utf16le-t",
|
||||
"description": "Cliloc arguments"
|
||||
},
|
||||
{
|
||||
"name": "Has Args2",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Has arguments flag (repeated)"
|
||||
},
|
||||
{
|
||||
"name": "Unused5",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {
|
||||
"min": "5.0.2b"
|
||||
},
|
||||
"enhanced": {},
|
||||
"notes": "BuffIcon feature supported in Classic Client 5.0.2b+"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Engines/BuffIcons/BuffIconPackets.cs",
|
||||
"line": 8
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,276 +0,0 @@
|
|||
{
|
||||
"category": "Bulletin Board",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x71",
|
||||
"name": "Bulletin Board",
|
||||
"description": "Bulletin board display and message packets.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Display Board",
|
||||
"condition": "command == 0x00",
|
||||
"size": 38,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x71",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "38",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Display board command"
|
||||
},
|
||||
{
|
||||
"name": "Board Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the bulletin board"
|
||||
},
|
||||
{
|
||||
"name": "Board Name",
|
||||
"type": "utf8",
|
||||
"size": 30,
|
||||
"description": "Board name (null-padded to 30 bytes)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Message Header",
|
||||
"condition": "command == 0x01",
|
||||
"size": "22+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x71",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x01",
|
||||
"description": "Message header command"
|
||||
},
|
||||
{
|
||||
"name": "Board Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the bulletin board"
|
||||
},
|
||||
{
|
||||
"name": "Message Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the message"
|
||||
},
|
||||
{
|
||||
"name": "Thread Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of parent thread (0 if root)"
|
||||
},
|
||||
{
|
||||
"name": "Poster Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of poster name"
|
||||
},
|
||||
{
|
||||
"name": "Poster",
|
||||
"type": "utf8-t",
|
||||
"description": "Poster name"
|
||||
},
|
||||
{
|
||||
"name": "Subject Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of subject"
|
||||
},
|
||||
{
|
||||
"name": "Subject",
|
||||
"type": "utf8-t",
|
||||
"description": "Message subject"
|
||||
},
|
||||
{
|
||||
"name": "Time Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of time string"
|
||||
},
|
||||
{
|
||||
"name": "Time",
|
||||
"type": "utf8-t",
|
||||
"description": "Posted time string"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Message Content",
|
||||
"condition": "command == 0x02",
|
||||
"size": "22+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x71",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x02",
|
||||
"description": "Message content command"
|
||||
},
|
||||
{
|
||||
"name": "Board Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the bulletin board"
|
||||
},
|
||||
{
|
||||
"name": "Message Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the message"
|
||||
},
|
||||
{
|
||||
"name": "Poster Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of poster name"
|
||||
},
|
||||
{
|
||||
"name": "Poster",
|
||||
"type": "utf8-t",
|
||||
"description": "Poster name"
|
||||
},
|
||||
{
|
||||
"name": "Subject Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of subject"
|
||||
},
|
||||
{
|
||||
"name": "Subject",
|
||||
"type": "utf8-t",
|
||||
"description": "Message subject"
|
||||
},
|
||||
{
|
||||
"name": "Time Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of time string"
|
||||
},
|
||||
{
|
||||
"name": "Time",
|
||||
"type": "utf8-t",
|
||||
"description": "Posted time string"
|
||||
},
|
||||
{
|
||||
"name": "Poster Body",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Poster body graphic"
|
||||
},
|
||||
{
|
||||
"name": "Poster Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Poster body hue"
|
||||
},
|
||||
{
|
||||
"name": "Equip Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of equipment items"
|
||||
},
|
||||
{
|
||||
"name": "Equipment",
|
||||
"type": "loop",
|
||||
"description": "Poster\u0027s equipment",
|
||||
"loop": {
|
||||
"countField": "equipCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Equipment item graphic"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Equipment hue"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Line Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of text lines"
|
||||
},
|
||||
{
|
||||
"name": "Lines",
|
||||
"type": "loop",
|
||||
"description": "Message lines",
|
||||
"loop": {
|
||||
"countField": "lineCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Line Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Line length"
|
||||
},
|
||||
{
|
||||
"name": "Line",
|
||||
"type": "utf8",
|
||||
"description": "Line text with 2-byte terminator (old client bug)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Bulletin Boards/BulletinBoardPackets.cs",
|
||||
"line": 168
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
{
|
||||
"category": "Chat",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xB2",
|
||||
"name": "Chat Message",
|
||||
"description": "Server sends chat system messages and commands to the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "13+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xB2",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Chat command number (original number minus 20)"
|
||||
},
|
||||
{
|
||||
"name": "Language",
|
||||
"type": "ascii",
|
||||
"size": 4,
|
||||
"description": "Language code (e.g., \u0027enu\u0027 for English)"
|
||||
},
|
||||
{
|
||||
"name": "Param 1",
|
||||
"type": "utf16be-t",
|
||||
"description": "First parameter (Big Endian Unicode, null-terminated)"
|
||||
},
|
||||
{
|
||||
"name": "Param 2",
|
||||
"type": "utf16be-t",
|
||||
"description": "Second parameter (Big Endian Unicode, null-terminated)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xB3",
|
||||
"direction": "incoming",
|
||||
"relationship": "request",
|
||||
"note": "Client sends Chat Action"
|
||||
},
|
||||
{
|
||||
"id": "0xB5",
|
||||
"direction": "incoming",
|
||||
"relationship": "request",
|
||||
"note": "Client sends Open Chat Window Request"
|
||||
}
|
||||
],
|
||||
"notes": "Part of the in-game chat system. Command numbers are offset by -20 from original values.",
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Engines/Chat/ChatPackets.cs",
|
||||
"line": 104
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,120 +0,0 @@
|
|||
{
|
||||
"category": "Combat",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x2F",
|
||||
"name": "Swing",
|
||||
"description": "Notifies client of a melee swing between two mobiles.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 10,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x2F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Attacker Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of attacker"
|
||||
},
|
||||
{
|
||||
"name": "Defender Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of defender"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingCombatPackets.cs",
|
||||
"line": 23
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x72",
|
||||
"name": "Set War Mode",
|
||||
"description": "Sets the client\u0027s war/peace mode state.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x72",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Warmode",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True = war mode, False = peace mode"
|
||||
},
|
||||
{
|
||||
"name": "Unknown1",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Unknown2",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x32",
|
||||
"description": "Unknown (50)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown3",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingCombatPackets.cs",
|
||||
"line": 40
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xAA",
|
||||
"name": "Change Combatant",
|
||||
"description": "Notifies client of current combat target.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xAA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Combatant Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of current combatant (0 = none)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingCombatPackets.cs",
|
||||
"line": 43
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,594 +0,0 @@
|
|||
{
|
||||
"category": "Container",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x24",
|
||||
"name": "Display Container",
|
||||
"description": "Opens a container gump on the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Classic",
|
||||
"size": 7,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x24",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the container"
|
||||
},
|
||||
{
|
||||
"name": "Gump ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Gump graphic ID"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "High Seas Extended",
|
||||
"condition": "Client version \u003e= 7.0.9.0 (HighSeas)",
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x24",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the container"
|
||||
},
|
||||
{
|
||||
"name": "Gump ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Gump graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Container Type",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x007D",
|
||||
"description": "Container type (125)"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {},
|
||||
"enhanced": {},
|
||||
"notes": "HighSeas (7.0.9.0+) adds containerType field"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingContainerPackets.cs",
|
||||
"line": 108
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x25",
|
||||
"name": "Container Content Update",
|
||||
"description": "Updates a single item in a container.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Classic",
|
||||
"size": 20,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x25",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the item"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Item ID Offset",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Item ID offset (signed)"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Stack amount"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X position in container"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y position in container"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of parent container"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item hue"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Container Grid Lines",
|
||||
"condition": "Client version \u003e= 6.0.1.7 (ContainerGridLines)",
|
||||
"size": 21,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x25",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the item"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Item ID Offset",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Item ID offset (signed)"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Stack amount"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X position in container"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y position in container"
|
||||
},
|
||||
{
|
||||
"name": "Grid Location",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Grid slot position"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of parent container"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item hue"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {},
|
||||
"enhanced": {},
|
||||
"notes": "ContainerGridLines (6.0.1.7+) adds gridLocation byte"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingContainerPackets.cs",
|
||||
"line": 127
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x3C",
|
||||
"name": "Container \u0026 Old Spellbook Content",
|
||||
"description": "Sends full contents of a container. Also used for corpse contents and old-style spellbook content (pre-AOS clients). For AOS+ spellbooks, use 0xBF/0x1B instead.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"tags": ["Spellbook", "Corpse"],
|
||||
"variants": [
|
||||
{
|
||||
"name": "Classic Format",
|
||||
"condition": "Client version \u003c 6.0.1.7",
|
||||
"size": "5 + (itemCount x 19)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x3C",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Item Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of items"
|
||||
},
|
||||
{
|
||||
"name": "Items",
|
||||
"type": "loop",
|
||||
"description": "Item entries (19 bytes each)",
|
||||
"loop": {
|
||||
"countField": "itemCount",
|
||||
"itemSize": 19,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the item"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Item ID Offset",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Item ID offset (signed)"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Stack amount"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X position in container"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y position in container"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of parent container"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item hue"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Grid Location Format",
|
||||
"condition": "Client version \u003e= 6.0.1.7 (ContainerGridLines)",
|
||||
"size": "5 + (itemCount x 20)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x3C",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Item Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of items"
|
||||
},
|
||||
{
|
||||
"name": "Items",
|
||||
"type": "loop",
|
||||
"description": "Item entries (20 bytes each)",
|
||||
"loop": {
|
||||
"countField": "itemCount",
|
||||
"itemSize": 20,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the item"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Item ID Offset",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Item ID offset (signed)"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Stack amount"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X position in container"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y position in container"
|
||||
},
|
||||
{
|
||||
"name": "Grid Location",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Grid slot position in container"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of parent container"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item hue"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xBF/0x1B",
|
||||
"relationship": "variant",
|
||||
"note": "New Spellbook Content for AOS+ clients"
|
||||
},
|
||||
{
|
||||
"id": "0x89",
|
||||
"relationship": "related",
|
||||
"note": "Corpse Equipment (layer mappings for corpse items)"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {},
|
||||
"enhanced": {},
|
||||
"notes": "ContainerGridLines (6.0.1.7+) adds gridLocation byte per item"
|
||||
},
|
||||
"notes": "Also used for corpse contents. Corpses are special containers that display equipped items on a body graphic. Use with 0x89 Corpse Equipment for full corpse display.",
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingContainerPackets.cs",
|
||||
"line": 169
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x1B",
|
||||
"name": "New Spellbook Content",
|
||||
"description": "Sends spellbook contents using AOS format with a 64-bit bitmask of known spells.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 23,
|
||||
"tags": ["Spell", "Spellbook", "Extended Commands (0xBF)"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0017",
|
||||
"description": "Packet length (23)"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x001B",
|
||||
"description": "Subcommand (New Spellbook Content)"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Command (always 1)"
|
||||
},
|
||||
{
|
||||
"name": "Book Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the spellbook"
|
||||
},
|
||||
{
|
||||
"name": "Graphic",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Spellbook graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Offset",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Spell offset (circle/school start)"
|
||||
},
|
||||
{
|
||||
"name": "Spell Bits",
|
||||
"type": "ulong",
|
||||
"size": 8,
|
||||
"description": "64-bit mask of known spells (written byte-by-byte, Little Endian)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x3C",
|
||||
"relationship": "variant",
|
||||
"note": "Old Spellbook Content for pre-AOS clients"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {
|
||||
"min": "5.0.0a"
|
||||
},
|
||||
"enhanced": {},
|
||||
"notes": "NewSpellbook feature (Core.AOS)"
|
||||
},
|
||||
"notes": "Used when Core.AOS \u0026\u0026 ns.NewSpellbook. Otherwise, old 0x3C format is used with spells as pseudo-items.",
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingContainerPackets.cs",
|
||||
"line": 46
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xF7",
|
||||
"name": "Packet Container",
|
||||
"description": "Container packet for batching multiple entity packets. Used for sending groups of related entities efficiently, such as all items and mobiles visible on a boat.",
|
||||
"direction": "outgoing",
|
||||
"tags": ["Boat"],
|
||||
"isDynamic": true,
|
||||
"size": "5+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Total packet length"
|
||||
},
|
||||
{
|
||||
"name": "Packet Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of embedded packets"
|
||||
},
|
||||
{
|
||||
"name": "Packets",
|
||||
"type": "array",
|
||||
"description": "Embedded packets (typically 0xF3 World Entity packets)",
|
||||
"loop": {
|
||||
"countField": "packetCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Embedded Packet",
|
||||
"type": "bytes",
|
||||
"size": "var",
|
||||
"description": "Complete embedded packet (typically 24-26 byte 0xF3 World Entity)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xF3",
|
||||
"relationship": "contains",
|
||||
"note": "Typically contains World Entity packets"
|
||||
},
|
||||
{
|
||||
"id": "0xF6",
|
||||
"relationship": "variant",
|
||||
"note": "Used alongside Move Boat HS for boat display"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {
|
||||
"min": "7.0.9.0"
|
||||
},
|
||||
"enhanced": {},
|
||||
"notes": "HighSeas expansion feature"
|
||||
},
|
||||
"notes": "Uses PacketContainerBuilder for efficient dynamic growth. Commonly used by boat system to batch all visible entities on deck. Minimum packet length is 5 bytes (header only).",
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/PacketContainerBuilder.cs",
|
||||
"line": 23
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,212 +0,0 @@
|
|||
{
|
||||
"category": "Context Menu",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x14",
|
||||
"name": "Display Context Menu",
|
||||
"description": "Displays a context menu for an entity.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Old Format",
|
||||
"condition": "command == 0x01 (pre-NewHaven)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0014",
|
||||
"description": "Context Menu subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Old format command"
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the target entity"
|
||||
},
|
||||
{
|
||||
"name": "Entry Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of menu entries"
|
||||
},
|
||||
{
|
||||
"name": "Entries",
|
||||
"type": "loop",
|
||||
"description": "Menu entries",
|
||||
"loop": {
|
||||
"countField": "entryCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Index",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Entry index"
|
||||
},
|
||||
{
|
||||
"name": "Cliloc Offset",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Cliloc number - 3000000"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "bitfield",
|
||||
"size": 2,
|
||||
"description": "Entry flags",
|
||||
"flags": [
|
||||
{
|
||||
"bit": "0",
|
||||
"name": "Disabled",
|
||||
"description": "Entry is disabled"
|
||||
},
|
||||
{
|
||||
"bit": "1",
|
||||
"name": "Arrow",
|
||||
"description": "Show arrow"
|
||||
},
|
||||
{
|
||||
"bit": "2",
|
||||
"name": "Highlighted",
|
||||
"description": "Entry is highlighted"
|
||||
},
|
||||
{
|
||||
"bit": "5",
|
||||
"name": "Colored",
|
||||
"description": "Entry uses custom color"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Text hue (if Colored flag set)",
|
||||
"condition": "flags \u0026 0x20"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "New Format",
|
||||
"condition": "command == 0x02 (NewHaven+)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0014",
|
||||
"description": "Context Menu subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0002",
|
||||
"description": "New format command"
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the target entity"
|
||||
},
|
||||
{
|
||||
"name": "Entry Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of menu entries"
|
||||
},
|
||||
{
|
||||
"name": "Entries",
|
||||
"type": "loop",
|
||||
"description": "Menu entries",
|
||||
"loop": {
|
||||
"countField": "entryCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Cliloc Number",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Full cliloc number"
|
||||
},
|
||||
{
|
||||
"name": "Index",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Entry index"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Entry flags (see Old Format)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xBF/0x13",
|
||||
"relationship": "request",
|
||||
"note": "Context Menu Request from client"
|
||||
},
|
||||
{
|
||||
"id": "0xBF/0x15",
|
||||
"relationship": "response",
|
||||
"note": "Context Menu Response from client"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {},
|
||||
"enhanced": {},
|
||||
"notes": "NewHaven clients (6.0.0.0+) use command 0x02"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Context Menus/ContextMenuSystem.cs",
|
||||
"line": 142
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
{
|
||||
"category": "Corpse",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x89",
|
||||
"name": "Corpse Equipment",
|
||||
"description": "Sends the equipment layer mapping for items on a corpse, including virtual hair and facial hair items.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "8+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x89",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Corpse Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the corpse"
|
||||
},
|
||||
{
|
||||
"name": "Equipment",
|
||||
"type": "loop",
|
||||
"description": "Equipment layer mappings (5 bytes each, until terminator)",
|
||||
"loop": {
|
||||
"terminator": "Layer == 0",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Layer",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Equipment layer + 1 (0 = terminator)"
|
||||
},
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of item in this layer"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Terminator",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Layer.Invalid (0) marks end of list"
|
||||
}
|
||||
],
|
||||
"notes": "Layer values are offset by +1 (e.g., Layer.Hair (0x0B) is sent as 0x0C). Hair and facial hair use virtual serials.",
|
||||
"related": [
|
||||
{
|
||||
"id": "0x3C",
|
||||
"direction": "outgoing",
|
||||
"relationship": "related",
|
||||
"note": "Container Content (also used for corpse items)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Misc/Corpses/CorpsePackets.cs",
|
||||
"line": 24
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
{
|
||||
"category": "Combat",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x0B",
|
||||
"name": "Damage",
|
||||
"description": "Shows damage dealt to a mobile (client 5.0.0a+).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 7,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x0B",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of damaged mobile"
|
||||
},
|
||||
{
|
||||
"name": "Damage",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Damage amount (clamped 0-65535)"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {
|
||||
"min": "5.0.0a"
|
||||
},
|
||||
"enhanced": {},
|
||||
"notes": "Used by Enhanced Client (all versions) and Classic Client 5.0.0a+"
|
||||
},
|
||||
"notes": "For pre-5.0.0a clients, use 0xBF/0x22 instead. Enhanced Client always uses this packet format (ushort damage allows values up to 65535).",
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingDamagePackets.cs",
|
||||
"line": 34
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF/0x22",
|
||||
"name": "Damage (Old)",
|
||||
"description": "Shows damage dealt to a mobile (pre-5.0.0a clients).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 11,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "11",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x22",
|
||||
"description": "Subcommand (Damage)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x01",
|
||||
"description": "Unknown (always 1)"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of damaged mobile"
|
||||
},
|
||||
{
|
||||
"name": "Damage",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Damage amount (clamped 0-255)"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {
|
||||
"max": "5.0.0a"
|
||||
},
|
||||
"notes": "For Classic Client before DamagePacket feature. Not used by Enhanced Client."
|
||||
},
|
||||
"notes": "Damage is capped at 255 for old clients. Classic Client only; Enhanced Client uses 0x0B packet.",
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingDamagePackets.cs",
|
||||
"line": 40
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,459 +0,0 @@
|
|||
{
|
||||
"category": "Effects",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x54",
|
||||
"name": "Sound Effect",
|
||||
"description": "Plays a sound effect at a location.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 12,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x54",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x01",
|
||||
"description": "Sound flags"
|
||||
},
|
||||
{
|
||||
"name": "Sound ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Sound effect ID"
|
||||
},
|
||||
{
|
||||
"name": "Volume",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0000",
|
||||
"description": "Volume (unused)"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Z coordinate"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEffectPackets.cs",
|
||||
"line": 41
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x70",
|
||||
"name": "Screen Effect",
|
||||
"description": "Triggers a screen-wide visual effect (fade in/out).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 28,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x70",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Effect Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x04",
|
||||
"description": "Effect type (4)"
|
||||
},
|
||||
{
|
||||
"name": "Padding1",
|
||||
"type": "byte[]",
|
||||
"size": 8,
|
||||
"description": "Padding (zeros)"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 2,
|
||||
"description": "Screen effect type",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Fade Out",
|
||||
"description": "Fade screen to black"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Fade In",
|
||||
"description": "Fade screen from black"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Light Flash",
|
||||
"description": "Light flash effect"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"name": "Fade In Out",
|
||||
"description": "Fade out then in"
|
||||
},
|
||||
{
|
||||
"value": 4,
|
||||
"name": "Darken Screen",
|
||||
"description": "Darken screen"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Padding2",
|
||||
"type": "byte[]",
|
||||
"size": 16,
|
||||
"description": "Padding (zeros)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEffectPackets.cs",
|
||||
"line": 322
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xC0",
|
||||
"name": "Hued Effect",
|
||||
"description": "Displays a graphical effect with hue and render mode.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 36,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xC0",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Effect Type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Effect type",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Moving",
|
||||
"description": "Effect moves between two points"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Lightning",
|
||||
"description": "Lightning bolt effect"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Fixed XYZ",
|
||||
"description": "Effect at fixed location"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"name": "Fixed From",
|
||||
"description": "Effect attached to source"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Source Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of source entity"
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of target entity"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Effect graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Src X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Source X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Src Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Source Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Src Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Source Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Dst X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Destination X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Dst Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Destination Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Dst Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Destination Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Speed",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Effect speed"
|
||||
},
|
||||
{
|
||||
"name": "Duration",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Effect duration"
|
||||
},
|
||||
{
|
||||
"name": "Unknown1",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Unknown2",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Fixed Direction",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "Fixed direction"
|
||||
},
|
||||
{
|
||||
"name": "Explode",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "Explode on impact"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Effect hue"
|
||||
},
|
||||
{
|
||||
"name": "Render Mode",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Render mode"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEffectPackets.cs",
|
||||
"line": 175
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xC7",
|
||||
"name": "Particle Effect",
|
||||
"description": "Displays an advanced particle effect with extended parameters.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 49,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xC7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Effect Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Effect type (see 0xC0)"
|
||||
},
|
||||
{
|
||||
"name": "Source Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of source entity"
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of target entity"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Effect graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Src X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Source X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Src Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Source Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Src Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Source Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Dst X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Destination X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Dst Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Destination Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Dst Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Destination Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Speed",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Effect speed"
|
||||
},
|
||||
{
|
||||
"name": "Duration",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Effect duration"
|
||||
},
|
||||
{
|
||||
"name": "Unknown1",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Unknown2",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Fixed Direction",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "Fixed direction"
|
||||
},
|
||||
{
|
||||
"name": "Explode",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "Explode on impact"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Effect hue"
|
||||
},
|
||||
{
|
||||
"name": "Render Mode",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Render mode"
|
||||
},
|
||||
{
|
||||
"name": "Effect",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Particle effect ID"
|
||||
},
|
||||
{
|
||||
"name": "Explode Effect",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Explosion effect ID"
|
||||
},
|
||||
{
|
||||
"name": "Explode Sound",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Explosion sound ID"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Associated entity serial"
|
||||
},
|
||||
{
|
||||
"name": "Layer",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Effect layer"
|
||||
},
|
||||
{
|
||||
"name": "Unknown3",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Unknown"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEffectPackets.cs",
|
||||
"line": 58
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,403 +0,0 @@
|
|||
{
|
||||
"category": "Item",
|
||||
"tags": ["Mobile"],
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xD6",
|
||||
"name": "Object Property List",
|
||||
"description": "Sends the full Object Property List (tooltip) for an entity. Contains a hash for client caching and a list of localized property entries.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "15+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD6",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Unknown1",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Unknown (always 1)"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Entity serial"
|
||||
},
|
||||
{
|
||||
"name": "Unknown2",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0000",
|
||||
"description": "Unknown (always 0)"
|
||||
},
|
||||
{
|
||||
"name": "Hash",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "XOR hash of all properties (computed with 26-bit mask)"
|
||||
},
|
||||
{
|
||||
"name": "Properties",
|
||||
"type": "array",
|
||||
"description": "Property entries, terminated by number=0",
|
||||
"loop": {
|
||||
"terminator": "number == 0",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Number",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Cliloc number (0 = end of list)"
|
||||
},
|
||||
{
|
||||
"name": "String Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Length of arguments in bytes (0 if no arguments)"
|
||||
},
|
||||
{
|
||||
"name": "Arguments",
|
||||
"type": "utf16le",
|
||||
"size": "var",
|
||||
"description": "Unicode LE string with tab-separated cliloc arguments. Length = String Length field"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xDC",
|
||||
"relationship": "notification",
|
||||
"note": "OPL Info notifies client of hash change, triggering 0xD6 request"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {
|
||||
"min": "4.0.0a"
|
||||
},
|
||||
"enhanced": {},
|
||||
"notes": "AOS tooltips feature"
|
||||
},
|
||||
"notes": "Hash is calculated by XORing each property\u0027s cliloc number with ((hash \u003e\u003e 31) \u0026 1) ^ (hash \u003c\u003c 1). Properties are cliloc entries with optional Unicode LE arguments separated by tabs.",
|
||||
"source": {
|
||||
"file": "Projects/Server/PropertyList/ObjectPropertyList.cs",
|
||||
"line": 19
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x1D",
|
||||
"name": "Remove Entity",
|
||||
"description": "Removes an entity (item, mobile, or multi) from the client\u0027s view.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x1D",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of entity to remove"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEntityPackets.cs",
|
||||
"line": 75
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDC",
|
||||
"name": "OPL Info (Object Property List)",
|
||||
"description": "Notifies the client of an entity\u0027s Object Property List hash. Client compares hash to cached version and requests full OPL if different.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDC",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Entity serial"
|
||||
},
|
||||
{
|
||||
"name": "Hash",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Hash of the Object Property List"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xD6",
|
||||
"direction": "outgoing",
|
||||
"relationship": "data",
|
||||
"note": "Full Object Property List packet"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEntityPackets.cs",
|
||||
"line": 33
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xF3",
|
||||
"name": "World Entity (SA+)",
|
||||
"description": "Unified entity packet for items, mobiles, and multis. Replaces older 0x1A World Item packet for Stygian Abyss+ clients. High Seas clients add 2 extra bytes.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"version": "Stygian Abyss",
|
||||
"name": "SA Format",
|
||||
"condition": "Client version 7.0.0.0 - 7.0.8.x (StygianAbyss, pre-HighSeas)",
|
||||
"size": 24,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF3",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Command (always 1)"
|
||||
},
|
||||
{
|
||||
"name": "Entity Type",
|
||||
"type": "enum",
|
||||
"size": 1,
|
||||
"description": "Entity type",
|
||||
"values": [
|
||||
{ "value": "0", "name": "Item", "description": "World item" },
|
||||
{ "value": "1", "name": "Mobile", "description": "Mobile/creature" },
|
||||
{ "value": "2", "name": "Multi", "description": "Multi/structure" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Entity serial"
|
||||
},
|
||||
{
|
||||
"name": "Graphic ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Graphic/Body ID (masked with 0x7FFF)"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Direction (mobiles) or 0"
|
||||
},
|
||||
{
|
||||
"name": "Amount Min",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Minimum amount (items) or 1"
|
||||
},
|
||||
{
|
||||
"name": "Amount Max",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Maximum amount (items) or 1"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X coordinate (masked with 0x7FFF)"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y coordinate (masked with 0x3FFF)"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Light",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Light level (items)"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Hue/color"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Packet flags (hidden, blessed, etc.)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "High Seas+",
|
||||
"name": "HS Format",
|
||||
"condition": "Client version \u003e= 7.0.9.0 (HighSeas)",
|
||||
"size": 26,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF3",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Command (always 1)"
|
||||
},
|
||||
{
|
||||
"name": "Entity Type",
|
||||
"type": "enum",
|
||||
"size": 1,
|
||||
"description": "Entity type",
|
||||
"values": [
|
||||
{ "value": "0", "name": "Item", "description": "World item" },
|
||||
{ "value": "1", "name": "Mobile", "description": "Mobile/creature" },
|
||||
{ "value": "2", "name": "Multi", "description": "Multi/structure" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Entity serial"
|
||||
},
|
||||
{
|
||||
"name": "Graphic ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Graphic/Body ID (masked with 0xFFFF, supports higher IDs)"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Direction (mobiles) or 0"
|
||||
},
|
||||
{
|
||||
"name": "Amount Min",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Minimum amount (items) or 1"
|
||||
},
|
||||
{
|
||||
"name": "Amount Max",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Maximum amount (items) or 1"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X coordinate (masked with 0x7FFF)"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y coordinate (masked with 0x3FFF)"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Light",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Light level (items)"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Hue/color"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Packet flags (hidden, blessed, etc.)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0000",
|
||||
"description": "Unknown (always 0)"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x1A",
|
||||
"relationship": "variant",
|
||||
"note": "Legacy World Item packet for pre-SA clients"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {
|
||||
"min": "7.0.0.0"
|
||||
},
|
||||
"enhanced": {},
|
||||
"notes": "StygianAbyss expansion feature"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEntityPackets.cs",
|
||||
"line": 88
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,173 +0,0 @@
|
|||
{
|
||||
"category": "Equipment",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x2E",
|
||||
"name": "Equip Update",
|
||||
"description": "Notifies client that an item has been equipped on a mobile.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 15,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x2E",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the equipped item"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Layer",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Equipment layer"
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the mobile wearing the item"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Item hue (may be overridden by SolidHueOverride)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEquipmentPackets.cs",
|
||||
"line": 86
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x10",
|
||||
"name": "Display Equipment Info",
|
||||
"description": "Displays detailed equipment information including crafter name and magical properties.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "17+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0010",
|
||||
"description": "Display Equipment Info subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the item"
|
||||
},
|
||||
{
|
||||
"name": "Cliloc Number",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Base cliloc number for item name"
|
||||
},
|
||||
{
|
||||
"name": "Crafter Info",
|
||||
"type": "conditional",
|
||||
"description": "Crafter information (if present)",
|
||||
"condition": "crafterName.Length \u003e 0",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Crafted By",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "-3",
|
||||
"description": "Crafter marker"
|
||||
},
|
||||
{
|
||||
"name": "Crafter Name Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Length of crafter name"
|
||||
},
|
||||
{
|
||||
"name": "Crafter Name",
|
||||
"type": "ascii",
|
||||
"description": "Crafter name"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Unidentified",
|
||||
"type": "conditional",
|
||||
"description": "Unidentified marker",
|
||||
"condition": "unidentified",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Unidentified Marker",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "-4",
|
||||
"description": "Unidentified marker"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Attributes",
|
||||
"type": "loop",
|
||||
"description": "Equipment attributes",
|
||||
"loop": {
|
||||
"countField": "variable",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Attribute Number",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Attribute cliloc number"
|
||||
},
|
||||
{
|
||||
"name": "Charges",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Charges (-1 if not applicable)"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Terminator",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "-1",
|
||||
"description": "End of attributes marker"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEquipmentPackets.cs",
|
||||
"line": 37
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
{
|
||||
"category": "FreeShard Protocol",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x51",
|
||||
"name": "Compact Shard Stats",
|
||||
"description": "Server response to compact shard stats query (0xF1/0xFE).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 27,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x51",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x001B",
|
||||
"description": "Packet length (27)"
|
||||
},
|
||||
{
|
||||
"name": "Clients",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Current client count"
|
||||
},
|
||||
{
|
||||
"name": "Items",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Total item count"
|
||||
},
|
||||
{
|
||||
"name": "Mobiles",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Total mobile count"
|
||||
},
|
||||
{
|
||||
"name": "Age",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Server uptime in seconds"
|
||||
},
|
||||
{
|
||||
"name": "Memory",
|
||||
"type": "long",
|
||||
"size": 8,
|
||||
"description": "Memory usage in bytes"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xF1/0xFE",
|
||||
"relationship": "request",
|
||||
"note": "Query Compact Shard Stats request"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/UOGateway.cs",
|
||||
"line": 60
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,309 +0,0 @@
|
|||
{
|
||||
"category": "House",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xD8",
|
||||
"name": "House Design State Detailed",
|
||||
"description": "Sends detailed house customization design data. Contains compressed plane data organized by floor level and component type. Tiles are encoded using grid-based or coordinate-based formats depending on their Z-height.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "18+",
|
||||
"tags": ["House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD8",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Compression Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x03",
|
||||
"description": "Compression type (always 3 = compressed)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown (always 0)"
|
||||
},
|
||||
{
|
||||
"name": "House Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the house foundation"
|
||||
},
|
||||
{
|
||||
"name": "Revision",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Design revision number"
|
||||
},
|
||||
{
|
||||
"name": "Tile Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Total number of tiles in the design"
|
||||
},
|
||||
{
|
||||
"name": "Buffer Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Length of remaining data (plane count + all plane sections)"
|
||||
},
|
||||
{
|
||||
"name": "Plane Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of plane/buffer sections that follow"
|
||||
},
|
||||
{
|
||||
"name": "Plane Sections",
|
||||
"type": "array",
|
||||
"description": "Each section has a 4-byte header followed by compressed tile data",
|
||||
"loop": {
|
||||
"countField": "Plane Count",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Section Header",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Packed header: bits 28-31=mode, bits 24-27=planeZ, bits 16-23+(bits 4-7<<8)=decompLen, bits 8-15+(bits 0-3<<8)=compLen"
|
||||
},
|
||||
{
|
||||
"name": "Compressed Data",
|
||||
"type": "bytes",
|
||||
"size": "var",
|
||||
"description": "DEFLATE compressed tile data (length from header)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"planeFormat": {
|
||||
"description": "Tiles are organized into planes based on Z-height. Planes 0-8 use grid encoding; planes 9+ use explicit coordinates for overflow items.",
|
||||
"headerDecoding": {
|
||||
"mode": "(header >> 28) & 0x0F",
|
||||
"planeZ": "(header >> 24) & 0x0F",
|
||||
"decompLen": "((header & 0xFF0000) >> 16) | ((header & 0xF0) << 4)",
|
||||
"compLen": "((header & 0xFF00) >> 8) | ((header & 0x0F) << 8)"
|
||||
},
|
||||
"planeZMapping": [
|
||||
{ "plane": 0, "z": 0, "description": "Ground floor" },
|
||||
{ "plane": 1, "z": 7, "description": "1st storey (floor items)" },
|
||||
{ "plane": 2, "z": 27, "description": "2nd storey (floor items)" },
|
||||
{ "plane": 3, "z": 47, "description": "3rd storey (floor items)" },
|
||||
{ "plane": 4, "z": 67, "description": "4th storey (floor items)" },
|
||||
{ "plane": "5-8", "z": "7/27/47/67", "description": "Non-floor items per storey" },
|
||||
{ "plane": "9+", "z": "varies", "description": "Overflow/stair buffers (explicit coords)" }
|
||||
],
|
||||
"encodingModes": [
|
||||
{
|
||||
"mode": 0,
|
||||
"name": "Full Coordinates",
|
||||
"bytesPerTile": 5,
|
||||
"format": "ushort itemId, sbyte x, sbyte y, sbyte z",
|
||||
"description": "Used for overflow buffers with non-standard Z heights"
|
||||
},
|
||||
{
|
||||
"mode": 1,
|
||||
"name": "XY Coordinates",
|
||||
"bytesPerTile": 4,
|
||||
"format": "ushort itemId, sbyte x, sbyte y",
|
||||
"description": "Z calculated: ((planeZ - 1) % 4) * 20 + 7"
|
||||
},
|
||||
{
|
||||
"mode": 2,
|
||||
"name": "Grid-Based",
|
||||
"bytesPerTile": 2,
|
||||
"format": "ushort itemId (0x0000 = empty)",
|
||||
"description": "X,Y from grid index: x = i / gridHeight, y = i % gridHeight"
|
||||
}
|
||||
],
|
||||
"gridSizes": [
|
||||
{ "plane": 0, "width": "width", "height": "height", "notes": "Full foundation footprint" },
|
||||
{ "plane": "1-4", "width": "width - 1", "height": "height - 2", "notes": "Interior (floor items), offset by (1,1)" },
|
||||
{ "plane": "5-8", "width": "width", "height": "height - 1", "notes": "Interior (non-floor items)" }
|
||||
]
|
||||
},
|
||||
"compression": {
|
||||
"algorithm": "DEFLATE",
|
||||
"notes": "Raw DEFLATE compression (no zlib header/footer). Each plane buffer compressed independently. Max 750 items per overflow buffer (splits into multiple buffers if exceeded)."
|
||||
},
|
||||
"related": [
|
||||
{
|
||||
"id": "0xBF/0x1D",
|
||||
"relationship": "related",
|
||||
"note": "Design State General provides revision info only"
|
||||
},
|
||||
{
|
||||
"id": "0xBF/0x20",
|
||||
"relationship": "related",
|
||||
"note": "Begin/End House Customization commands"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {
|
||||
"min": "4.0.0a"
|
||||
},
|
||||
"enhanced": {},
|
||||
"notes": "AOS House Customization feature"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HousePackets.cs",
|
||||
"line": 93
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x1D",
|
||||
"name": "Design State General",
|
||||
"description": "Sends house design revision information. Client requests full details if revision differs.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 13,
|
||||
"tags": ["Extended Commands (0xBF)", "House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x000D",
|
||||
"description": "Packet length (13)"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x001D",
|
||||
"description": "Design State General subcommand"
|
||||
},
|
||||
{
|
||||
"name": "House Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the house"
|
||||
},
|
||||
{
|
||||
"name": "Revision",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Design revision number"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xD8",
|
||||
"relationship": "related",
|
||||
"note": "Full design details requested if revision differs"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HousePackets.cs",
|
||||
"line": 72
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x20",
|
||||
"name": "Begin House Customization",
|
||||
"description": "Notifies client to enter house customization mode.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 17,
|
||||
"tags": ["Extended Commands (0xBF)", "House"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0011",
|
||||
"description": "Packet length (17)"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0020",
|
||||
"description": "House Customization subcommand"
|
||||
},
|
||||
{
|
||||
"name": "House Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the house"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x04",
|
||||
"description": "Begin customization command"
|
||||
},
|
||||
{
|
||||
"name": "Unknown 1",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0000",
|
||||
"description": "Unknown (always 0)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown 2",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0xFFFF",
|
||||
"description": "Unknown (always 0xFFFF)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown 3",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0xFFFF",
|
||||
"description": "Unknown (always 0xFFFF)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown 4",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xFF",
|
||||
"description": "Unknown (always 0xFF)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xBF/0x20",
|
||||
"relationship": "variant",
|
||||
"note": "End House Customization uses command 0x05"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HousePackets.cs",
|
||||
"line": 30
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,104 +0,0 @@
|
|||
{
|
||||
"category": "Items",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x1A",
|
||||
"name": "World Item",
|
||||
"description": "Displays an item in the world (pre-Stygian Abyss clients).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "14+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x1A",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length (14-20)"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Item serial (bit 31 set if amount present)"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID (bit 14 set for multi)"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Stack amount (if serial bit 31 set)",
|
||||
"condition": "serial \u0026 0x80000000"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "X coordinate (bit 15 set if direction present)"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Y coordinate (bit 15=hue, bit 14=flags)"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Direction (if x bit 15 set)",
|
||||
"condition": "x \u0026 0x8000"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item hue (if y bit 15 set)",
|
||||
"condition": "y \u0026 0x8000"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Packet flags (if y bit 14 set)",
|
||||
"condition": "y \u0026 0x4000"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xF3",
|
||||
"relationship": "variant",
|
||||
"note": "World Entity packet for SA+ clients"
|
||||
}
|
||||
],
|
||||
"notes": "For Stygian Abyss+ clients, use 0xF3 World Entity instead.",
|
||||
"clientVersion": {
|
||||
"classic": {
|
||||
"max": "6.0.14.2"
|
||||
},
|
||||
"notes": "Replaced by 0xF3 for SA+ clients"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingItemPackets.cs",
|
||||
"line": 24
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
{
|
||||
"category": "Light",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x4E",
|
||||
"name": "Personal Light Level",
|
||||
"description": "Sets the light level for a specific entity.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 6,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x4E",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of entity"
|
||||
},
|
||||
{
|
||||
"name": "Level",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Light level (0=brightest, 25-30=typical night)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingLightPackets.cs",
|
||||
"line": 23
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x4F",
|
||||
"name": "Global Light Level",
|
||||
"description": "Sets the global ambient light level for the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 2,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x4F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Level",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Light level (0=brightest, 25-30=typical night)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingLightPackets.cs",
|
||||
"line": 39
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,501 +0,0 @@
|
|||
{
|
||||
"category": "Mahjong",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x19",
|
||||
"name": "Mahjong Join Game",
|
||||
"description": "Notifies client to open the Mahjong game interface.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0009",
|
||||
"description": "Packet length (9)"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0019",
|
||||
"description": "Join Game command"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 288
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x03",
|
||||
"name": "Mahjong Tile Info",
|
||||
"description": "Sends information about a single Mahjong tile.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 18,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0012",
|
||||
"description": "Packet length (18)"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0003",
|
||||
"description": "Tile Info command"
|
||||
},
|
||||
{
|
||||
"name": "Tile Number",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Tile index number"
|
||||
},
|
||||
{
|
||||
"name": "Tile Value",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Tile face value (0 if hidden)"
|
||||
},
|
||||
{
|
||||
"name": "Y Position",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Tile Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "X Position",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Tile X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Stack Level",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Stack level for overlapping tiles"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Tile direction (0=Up, 1=Left, 2=Down, 3=Right)"
|
||||
},
|
||||
{
|
||||
"name": "Flipped",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "0x10 if flipped/face-up, 0x00 if face-down"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 362
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x04",
|
||||
"name": "Mahjong Tiles Info",
|
||||
"description": "Sends information about all tiles in the Mahjong game.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "11+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0004",
|
||||
"description": "Tiles Info command"
|
||||
},
|
||||
{
|
||||
"name": "Tile Count",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Number of tiles"
|
||||
},
|
||||
{
|
||||
"name": "Tiles",
|
||||
"type": "loop",
|
||||
"description": "Tile data for each tile",
|
||||
"loop": {
|
||||
"countField": "Tile Count",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Tile Number",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Tile index number"
|
||||
},
|
||||
{
|
||||
"name": "Tile Value",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Tile face value (0 if hidden)"
|
||||
},
|
||||
{
|
||||
"name": "Y Position",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Tile Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "X Position",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Tile X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Stack Level",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Stack level"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Tile direction"
|
||||
},
|
||||
{
|
||||
"name": "Flipped",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "0x10 if flipped, 0x00 otherwise"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 408
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x02",
|
||||
"name": "Mahjong Players Info",
|
||||
"description": "Sends information about all players in the Mahjong game.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "11+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0002",
|
||||
"description": "Players Info command"
|
||||
},
|
||||
{
|
||||
"name": "Seat Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of seats with data"
|
||||
},
|
||||
{
|
||||
"name": "Players",
|
||||
"type": "loop",
|
||||
"description": "Player data for each seat",
|
||||
"loop": {
|
||||
"countField": "Seat Count",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Player Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of player (0 if empty)"
|
||||
},
|
||||
{
|
||||
"name": "Dealer Flag",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "1=Dealer, 2=Not dealer"
|
||||
},
|
||||
{
|
||||
"name": "Position",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Seat position index"
|
||||
},
|
||||
{
|
||||
"name": "Score",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Player\u0027s current score"
|
||||
},
|
||||
{
|
||||
"name": "Reserved",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0",
|
||||
"description": "Reserved (always 0)"
|
||||
},
|
||||
{
|
||||
"name": "Reserved 2",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0",
|
||||
"description": "Reserved (always 0)"
|
||||
},
|
||||
{
|
||||
"name": "Public Hand",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True if hand is visible to others"
|
||||
},
|
||||
{
|
||||
"name": "Name",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "Player name"
|
||||
},
|
||||
{
|
||||
"name": "Empty Seat",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True if seat is empty or not in game"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 304
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x05",
|
||||
"name": "Mahjong General Info",
|
||||
"description": "Sends general game state including dice values, dealer indicator, and wall break position.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 25,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0019",
|
||||
"description": "Packet length (25)"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0005",
|
||||
"description": "General Info command"
|
||||
},
|
||||
{
|
||||
"name": "Reserved",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0",
|
||||
"description": "Reserved"
|
||||
},
|
||||
{
|
||||
"name": "Reserved 2",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0",
|
||||
"description": "Reserved"
|
||||
},
|
||||
{
|
||||
"name": "Options",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Bit 0: Show Scores, Bit 1: Spectator Vision"
|
||||
},
|
||||
{
|
||||
"name": "Dice 1",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "First dice value"
|
||||
},
|
||||
{
|
||||
"name": "Dice 2",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Second dice value"
|
||||
},
|
||||
{
|
||||
"name": "Dealer Wind",
|
||||
"type": "enum",
|
||||
"size": 1,
|
||||
"description": "Dealer indicator wind direction",
|
||||
"values": [
|
||||
{ "value": "0", "name": "North", "description": "North wind" },
|
||||
{ "value": "1", "name": "East", "description": "East wind" },
|
||||
{ "value": "2", "name": "South", "description": "South wind" },
|
||||
{ "value": "3", "name": "West", "description": "West wind" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Dealer Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Dealer indicator Y position"
|
||||
},
|
||||
{
|
||||
"name": "Dealer X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Dealer indicator X position"
|
||||
},
|
||||
{
|
||||
"name": "Dealer Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Dealer indicator direction"
|
||||
},
|
||||
{
|
||||
"name": "Wall Break Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Wall break indicator Y position"
|
||||
},
|
||||
{
|
||||
"name": "Wall Break X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Wall break indicator X position"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 461
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x1A",
|
||||
"name": "Mahjong Relieve",
|
||||
"description": "Notifies client to close the Mahjong game interface.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0009",
|
||||
"description": "Packet length (9)"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x001A",
|
||||
"description": "Relieve command"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 504
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,427 +0,0 @@
|
|||
{
|
||||
"category": "Map",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xC6",
|
||||
"name": "Invalid Map",
|
||||
"description": "Notifies client that the current map is invalid.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 1,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xC6",
|
||||
"description": "Packet identifier"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMapPackets.cs",
|
||||
"line": 53
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x08",
|
||||
"name": "Map Change",
|
||||
"description": "Notifies client of a facet/map change.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 6,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0006",
|
||||
"description": "Packet length (6)"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0008",
|
||||
"description": "Map Change subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Map ID",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Map/Facet ID",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Felucca",
|
||||
"description": "Felucca facet"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Trammel",
|
||||
"description": "Trammel facet"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Ilshenar",
|
||||
"description": "Ilshenar facet"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"name": "Malas",
|
||||
"description": "Malas facet"
|
||||
},
|
||||
{
|
||||
"value": 4,
|
||||
"name": "Tokuno",
|
||||
"description": "Tokuno Islands facet"
|
||||
},
|
||||
{
|
||||
"value": 5,
|
||||
"name": "Ter Mur",
|
||||
"description": "Ter Mur facet"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMapPackets.cs",
|
||||
"line": 55
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x18",
|
||||
"name": "Map Patches",
|
||||
"description": "Sends map patch information for static and land blocks.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 41,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0029",
|
||||
"description": "Packet length (41)"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0018",
|
||||
"description": "Map Patches subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Map Count",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "4",
|
||||
"description": "Number of maps (always 4)"
|
||||
},
|
||||
{
|
||||
"name": "Patches",
|
||||
"type": "loop",
|
||||
"description": "Patch counts for each map (Felucca, Trammel, Ilshenar, Malas)",
|
||||
"loop": {
|
||||
"countField": "4",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Static Blocks",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Number of patched static blocks"
|
||||
},
|
||||
{
|
||||
"name": "Land Blocks",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Number of patched land blocks"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMapPackets.cs",
|
||||
"line": 25
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x56",
|
||||
"name": "Map Command",
|
||||
"description": "Server sends map pin commands to update the client\u0027s map display.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 11,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x56",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Map Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the map item"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "enum",
|
||||
"size": 1,
|
||||
"description": "Map command type",
|
||||
"values": [
|
||||
{ "value": "1", "name": "AddPin", "description": "Add a pin to the map" },
|
||||
{ "value": "5", "name": "DisplayMap", "description": "Display the map to client" },
|
||||
{ "value": "7", "name": "SetEditable", "description": "Set map editable state" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Editable",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True if map is editable (for command 7)"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X coordinate of pin"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y coordinate of pin"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x56",
|
||||
"direction": "incoming",
|
||||
"relationship": "related",
|
||||
"note": "Client map pin commands"
|
||||
},
|
||||
{
|
||||
"id": "0x90",
|
||||
"relationship": "related",
|
||||
"note": "Map Details packet (old)"
|
||||
},
|
||||
{
|
||||
"id": "0xF5",
|
||||
"relationship": "related",
|
||||
"note": "Map Details packet (new)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Maps/MapItemPackets.cs",
|
||||
"line": 106
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x90",
|
||||
"name": "Map Details",
|
||||
"description": "Sends map details including bounds, dimensions, and graphic ID. Pre-NewCharacterList clients.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 19,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x90",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Map Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the map item"
|
||||
},
|
||||
{
|
||||
"name": "Graphic ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x139D",
|
||||
"description": "Map gump graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Start X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds start X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Start Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds start Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "End X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds end X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "End Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds end Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Width",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map width in pixels"
|
||||
},
|
||||
{
|
||||
"name": "Height",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map height in pixels"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x56",
|
||||
"direction": "both",
|
||||
"relationship": "related",
|
||||
"note": "Map pin commands (client and server)"
|
||||
},
|
||||
{
|
||||
"id": "0xF5",
|
||||
"relationship": "variant",
|
||||
"note": "New Map Details for NewCharacterList clients"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Maps/MapItemPackets.cs",
|
||||
"line": 78
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xF5",
|
||||
"name": "Map Details (New)",
|
||||
"description": "Sends map details for NewCharacterList clients. Includes facet ID.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 21,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF5",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Map Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the map item"
|
||||
},
|
||||
{
|
||||
"name": "Graphic ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x139D",
|
||||
"description": "Map gump graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Start X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds start X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Start Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds start Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "End X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds end X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "End Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds end Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Width",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map width in pixels"
|
||||
},
|
||||
{
|
||||
"name": "Height",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map height in pixels"
|
||||
},
|
||||
{
|
||||
"name": "Facet ID",
|
||||
"type": "enum",
|
||||
"size": 2,
|
||||
"description": "Map facet/world identifier",
|
||||
"values": [
|
||||
{ "value": "0", "name": "Felucca", "description": "Felucca facet" },
|
||||
{ "value": "1", "name": "Trammel", "description": "Trammel facet" },
|
||||
{ "value": "2", "name": "Ilshenar", "description": "Ilshenar facet" },
|
||||
{ "value": "3", "name": "Malas", "description": "Malas facet" },
|
||||
{ "value": "4", "name": "Tokuno", "description": "Tokuno Islands" },
|
||||
{ "value": "5", "name": "TerMur", "description": "Ter Mur facet" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x56",
|
||||
"direction": "both",
|
||||
"relationship": "related",
|
||||
"note": "Map pin commands (client and server)"
|
||||
},
|
||||
{
|
||||
"id": "0x90",
|
||||
"relationship": "variant",
|
||||
"note": "Old Map Details for pre-NewCharacterList clients"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {
|
||||
"min": "7.0.13.0"
|
||||
},
|
||||
"enhanced": {},
|
||||
"notes": "NewCharacterList feature"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Maps/MapItemPackets.cs",
|
||||
"line": 78
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,185 +0,0 @@
|
|||
{
|
||||
"category": "Menu",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x7C",
|
||||
"name": "Display Menu",
|
||||
"description": "Displays an item list menu or question menu to the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Item List Menu",
|
||||
"condition": "Menu is ItemListMenu",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x7C",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Menu Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Menu serial"
|
||||
},
|
||||
{
|
||||
"name": "Menu ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0000",
|
||||
"description": "Menu ID (always 0)"
|
||||
},
|
||||
{
|
||||
"name": "Question Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of question text"
|
||||
},
|
||||
{
|
||||
"name": "Question",
|
||||
"type": "ascii",
|
||||
"description": "Question text"
|
||||
},
|
||||
{
|
||||
"name": "Entry Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of menu entries"
|
||||
},
|
||||
{
|
||||
"name": "Entries",
|
||||
"type": "loop",
|
||||
"description": "Menu entries",
|
||||
"loop": {
|
||||
"countField": "entryCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Item hue"
|
||||
},
|
||||
{
|
||||
"name": "Name Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of entry name"
|
||||
},
|
||||
{
|
||||
"name": "Name",
|
||||
"type": "ascii",
|
||||
"description": "Entry name"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Question Menu",
|
||||
"condition": "Menu is QuestionMenu",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x7C",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Menu Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Menu serial"
|
||||
},
|
||||
{
|
||||
"name": "Menu ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0000",
|
||||
"description": "Menu ID (always 0)"
|
||||
},
|
||||
{
|
||||
"name": "Question Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of question text"
|
||||
},
|
||||
{
|
||||
"name": "Question",
|
||||
"type": "ascii",
|
||||
"description": "Question text"
|
||||
},
|
||||
{
|
||||
"name": "Answer Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of answers"
|
||||
},
|
||||
{
|
||||
"name": "Answers",
|
||||
"type": "loop",
|
||||
"description": "Answer options",
|
||||
"loop": {
|
||||
"countField": "answerCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused padding"
|
||||
},
|
||||
{
|
||||
"name": "Answer Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of answer text"
|
||||
},
|
||||
{
|
||||
"name": "Answer",
|
||||
"type": "ascii",
|
||||
"description": "Answer text"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x7D",
|
||||
"relationship": "response",
|
||||
"note": "Menu Response from client"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMenuPackets.cs",
|
||||
"line": 36
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,534 +0,0 @@
|
|||
{
|
||||
"category": "Message",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x15",
|
||||
"name": "Follow Message",
|
||||
"description": "Instructs client to follow one entity with another.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x15",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Follower Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the follower"
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the target to follow"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 231
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x1C",
|
||||
"name": "ASCII Message",
|
||||
"description": "Server sends ASCII-encoded message to client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x1C",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of speaker (0xFFFFFFFF for system)"
|
||||
},
|
||||
{
|
||||
"name": "Graphic",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Body graphic of speaker"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Message type",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Regular",
|
||||
"description": "Normal speech"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "System",
|
||||
"description": "System message"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Emote",
|
||||
"description": "Emote (*action*)"
|
||||
},
|
||||
{
|
||||
"value": 6,
|
||||
"name": "Label",
|
||||
"description": "Object label"
|
||||
},
|
||||
{
|
||||
"value": 7,
|
||||
"name": "Focus",
|
||||
"description": "Focused message"
|
||||
},
|
||||
{
|
||||
"value": 8,
|
||||
"name": "Whisper",
|
||||
"description": "Whisper"
|
||||
},
|
||||
{
|
||||
"value": 9,
|
||||
"name": "Yell",
|
||||
"description": "Yell"
|
||||
},
|
||||
{
|
||||
"value": 10,
|
||||
"name": "Spell",
|
||||
"description": "Spell words"
|
||||
},
|
||||
{
|
||||
"value": 13,
|
||||
"name": "Guild",
|
||||
"description": "Guild chat"
|
||||
},
|
||||
{
|
||||
"value": 14,
|
||||
"name": "Alliance",
|
||||
"description": "Alliance chat"
|
||||
},
|
||||
{
|
||||
"value": 15,
|
||||
"name": "Command",
|
||||
"description": "Command"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Text color hue"
|
||||
},
|
||||
{
|
||||
"name": "Font",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Font ID"
|
||||
},
|
||||
{
|
||||
"name": "Name",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "Speaker name"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "ascii-t",
|
||||
"description": "Message text"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x03",
|
||||
"relationship": "request",
|
||||
"note": "ASCII Speech from client"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 180
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xAE",
|
||||
"name": "Unicode Message",
|
||||
"description": "Server sends Unicode-encoded message to client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xAE",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of speaker (0xFFFFFFFF for system)"
|
||||
},
|
||||
{
|
||||
"name": "Graphic",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Body graphic of speaker"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Message type (see 0x1C)"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Text color hue"
|
||||
},
|
||||
{
|
||||
"name": "Font",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Font ID"
|
||||
},
|
||||
{
|
||||
"name": "Language",
|
||||
"type": "ascii",
|
||||
"size": 4,
|
||||
"description": "Language code (e.g., \u0027ENU\u0027)"
|
||||
},
|
||||
{
|
||||
"name": "Name",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "Speaker name"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf16be-t",
|
||||
"description": "Message text (Big Endian Unicode)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xAD",
|
||||
"relationship": "request",
|
||||
"note": "Unicode Speech from client"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 180
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xB7",
|
||||
"name": "Help Response",
|
||||
"description": "Server sends help text response to client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xB7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of entity"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf16be-t",
|
||||
"description": "Help text"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xB6",
|
||||
"relationship": "request",
|
||||
"note": "Object Help Request from client"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 263
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xC1",
|
||||
"name": "Localized Message",
|
||||
"description": "Server sends a localized (cliloc) message to client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xC1",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of speaker"
|
||||
},
|
||||
{
|
||||
"name": "Graphic",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Body graphic of speaker"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Message type (see 0x1C)"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Text color hue"
|
||||
},
|
||||
{
|
||||
"name": "Font",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Font ID"
|
||||
},
|
||||
{
|
||||
"name": "Cliloc Number",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Cliloc entry number"
|
||||
},
|
||||
{
|
||||
"name": "Name",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "Speaker name"
|
||||
},
|
||||
{
|
||||
"name": "Arguments",
|
||||
"type": "utf16le-t",
|
||||
"description": "Tab-separated arguments for cliloc"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 55
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xC2",
|
||||
"name": "Unicode Prompt",
|
||||
"description": "Server requests text input from client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 21,
|
||||
"tags": ["Menu"],
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xC2",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "21",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Prompt serial"
|
||||
},
|
||||
{
|
||||
"name": "Prompt ID",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Prompt ID (same as serial)"
|
||||
},
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "byte[]",
|
||||
"size": 10,
|
||||
"description": "Unused padding (zeros)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x9A",
|
||||
"direction": "incoming",
|
||||
"relationship": "response",
|
||||
"note": "ASCII Prompt Response"
|
||||
},
|
||||
{
|
||||
"id": "0xC2",
|
||||
"direction": "incoming",
|
||||
"relationship": "response",
|
||||
"note": "Unicode Prompt Response"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 246
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xCC",
|
||||
"name": "Localized Message Affix",
|
||||
"description": "Server sends a localized message with text prefix/suffix.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xCC",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of speaker"
|
||||
},
|
||||
{
|
||||
"name": "Graphic",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Body graphic of speaker"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Message type (see 0x1C)"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Text color hue"
|
||||
},
|
||||
{
|
||||
"name": "Font",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Font ID"
|
||||
},
|
||||
{
|
||||
"name": "Cliloc Number",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Cliloc entry number"
|
||||
},
|
||||
{
|
||||
"name": "Affix Type",
|
||||
"type": "enum",
|
||||
"size": 1,
|
||||
"description": "How to apply the affix",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Append",
|
||||
"description": "Append affix to end"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Prepend",
|
||||
"description": "Prepend affix to start"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "System",
|
||||
"description": "System message style"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Name",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "Speaker name"
|
||||
},
|
||||
{
|
||||
"name": "Affix",
|
||||
"type": "ascii-t",
|
||||
"description": "Text to prepend/append"
|
||||
},
|
||||
{
|
||||
"name": "Arguments",
|
||||
"type": "utf16be-t",
|
||||
"description": "Tab-separated arguments for cliloc"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 112
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,256 +0,0 @@
|
|||
{
|
||||
"category": "Movement",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x21",
|
||||
"name": "Movement Rejection",
|
||||
"description": "Sent by the server when player movement is blocked (collision, teleport area, etc). Contains the corrected position the client should snap back to.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 8,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x21",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Sequence",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Sequence number of the rejected movement request"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Correct X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Correct Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Correct facing direction (0-7)"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Correct Z coordinate"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x02",
|
||||
"relationship": "request",
|
||||
"note": "The movement request that was rejected"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
||||
"line": 45
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x22",
|
||||
"name": "Movement Acknowledgment",
|
||||
"description": "Sent by the server to confirm successful player movement. Includes the player\u0027s current notoriety for display purposes.",
|
||||
"direction": "outgoing",
|
||||
"noMerge": true,
|
||||
"isDynamic": false,
|
||||
"size": 3,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x22",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Sequence",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Sequence number of the accepted movement request"
|
||||
},
|
||||
{
|
||||
"name": "Notoriety",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Player\u0027s current notoriety flag",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Innocent",
|
||||
"description": "Blue - innocent player"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Friend",
|
||||
"description": "Green - ally/friend"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Attackable",
|
||||
"description": "Gray - can be attacked"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"name": "Criminal",
|
||||
"description": "Gray - criminal flag"
|
||||
},
|
||||
{
|
||||
"value": 4,
|
||||
"name": "Enemy",
|
||||
"description": "Orange - enemy"
|
||||
},
|
||||
{
|
||||
"value": 5,
|
||||
"name": "Murderer",
|
||||
"description": "Red - murderer"
|
||||
},
|
||||
{
|
||||
"value": 6,
|
||||
"name": "Invulnerable",
|
||||
"description": "Yellow - invulnerable"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x02",
|
||||
"relationship": "request",
|
||||
"note": "The movement request that was accepted"
|
||||
}
|
||||
],
|
||||
"notes": "Not related to incoming 0x22 (Resynchronize) despite sharing the same packet ID.",
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
||||
"line": 42
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x97",
|
||||
"name": "Move Player",
|
||||
"description": "Server-initiated player movement. Forces the client to move in a direction (used for pushback effects, conveyors, etc).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 2,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x97",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Direction to move (0-7). Bit 0x80 indicates running."
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
||||
"line": 35
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x26",
|
||||
"name": "Speed Control",
|
||||
"description": "Controls the player\u0027s movement speed. Used for mount speed changes, walk/run restrictions, etc.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 6,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0006",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0026",
|
||||
"description": "Sub-command for speed control"
|
||||
},
|
||||
{
|
||||
"name": "Speed Setting",
|
||||
"type": "enum",
|
||||
"size": 1,
|
||||
"description": "Movement speed mode",
|
||||
"values": [
|
||||
{ "value": "0", "name": "Disable", "description": "Normal speed (remove override)" },
|
||||
{ "value": "1", "name": "MountSpeed", "description": "Force mounted movement speed" },
|
||||
{ "value": "2", "name": "WalkOnly", "description": "Force walk speed only" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
||||
"line": 31
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xF2",
|
||||
"name": "Time Sync Response",
|
||||
"description": "Server response to client time synchronization request. Contains tick counts for latency calculation.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 25,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF2",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Tick Count1",
|
||||
"type": "long",
|
||||
"size": 8,
|
||||
"description": "Server tick count"
|
||||
},
|
||||
{
|
||||
"name": "Tick Count2",
|
||||
"type": "long",
|
||||
"size": 8,
|
||||
"description": "Server tick count"
|
||||
},
|
||||
{
|
||||
"name": "Tick Count3",
|
||||
"type": "long",
|
||||
"size": 8,
|
||||
"description": "Server tick count"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
||||
"line": 63
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,276 +0,0 @@
|
|||
{
|
||||
"category": "Party",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x06",
|
||||
"name": "Party Message",
|
||||
"description": "Party system messages with various subcommands.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Member List",
|
||||
"condition": "command == 0x01",
|
||||
"size": "7 + (memberCount x 4)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0006",
|
||||
"description": "Party subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x01",
|
||||
"description": "Member list command"
|
||||
},
|
||||
{
|
||||
"name": "Member Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of party members"
|
||||
},
|
||||
{
|
||||
"name": "Members",
|
||||
"type": "loop",
|
||||
"description": "Party members",
|
||||
"loop": {
|
||||
"countField": "memberCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Member\u0027s serial"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Remove Member",
|
||||
"condition": "command == 0x02",
|
||||
"size": "11 + (memberCount x 4)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0006",
|
||||
"description": "Party subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x02",
|
||||
"description": "Remove member command"
|
||||
},
|
||||
{
|
||||
"name": "Member Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of remaining members"
|
||||
},
|
||||
{
|
||||
"name": "Removed Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of removed member"
|
||||
},
|
||||
{
|
||||
"name": "Members",
|
||||
"type": "loop",
|
||||
"description": "Remaining party members",
|
||||
"loop": {
|
||||
"countField": "memberCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Member\u0027s serial"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Private Message",
|
||||
"condition": "command == 0x03",
|
||||
"size": "12 + (text.Length x 2)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0006",
|
||||
"description": "Party subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x03",
|
||||
"description": "Private message command"
|
||||
},
|
||||
{
|
||||
"name": "Sender Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of message sender"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf16be-t",
|
||||
"description": "Message text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Public Message",
|
||||
"condition": "command == 0x04",
|
||||
"size": "12 + (text.Length x 2)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0006",
|
||||
"description": "Party subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x04",
|
||||
"description": "Public message command"
|
||||
},
|
||||
{
|
||||
"name": "Sender Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of message sender"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf16be-t",
|
||||
"description": "Message text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Party Invitation",
|
||||
"condition": "command == 0x07",
|
||||
"size": 10,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "10",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0006",
|
||||
"description": "Party subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x07",
|
||||
"description": "Invitation command"
|
||||
},
|
||||
{
|
||||
"name": "Leader Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of party leader"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xBF/0x06",
|
||||
"relationship": "request",
|
||||
"note": "Party Message from client"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Engines/Party/PartyPackets.cs",
|
||||
"line": 28
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,275 +0,0 @@
|
|||
{
|
||||
"category": "Secure Trade",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x6F",
|
||||
"name": "Secure Trade",
|
||||
"description": "Manages secure trade windows between players.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Display Trade Window",
|
||||
"condition": "flag == Display (0)",
|
||||
"size": 47,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "47",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Flag",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"value": "0",
|
||||
"description": "Trade action flag",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Display",
|
||||
"description": "Open trade window"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Close",
|
||||
"description": "Close trade window"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Update",
|
||||
"description": "Update accept status"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"name": "Update Gold",
|
||||
"description": "Update gold amounts"
|
||||
},
|
||||
{
|
||||
"value": 4,
|
||||
"name": "Update Ledger",
|
||||
"description": "Update ledger"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Partner Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of trading partner"
|
||||
},
|
||||
{
|
||||
"name": "First Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of your trade container"
|
||||
},
|
||||
{
|
||||
"name": "Second Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of partner\u0027s trade container"
|
||||
},
|
||||
{
|
||||
"name": "Has Name",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"value": "true",
|
||||
"description": "Name field follows"
|
||||
},
|
||||
{
|
||||
"name": "Partner Name",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "Trading partner\u0027s name"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Close Trade Window",
|
||||
"condition": "flag == Close (1)",
|
||||
"size": 17,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "17",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Flag",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "1",
|
||||
"description": "Close flag"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Trade container serial"
|
||||
},
|
||||
{
|
||||
"name": "Unused1",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Unused2",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Has Name",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"value": "false",
|
||||
"description": "No name follows"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Update Accept Status",
|
||||
"condition": "flag == Update (2)",
|
||||
"size": 17,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "17",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Flag",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "2",
|
||||
"description": "Update flag"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Trade container serial"
|
||||
},
|
||||
{
|
||||
"name": "Your Accept",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Your accept status (0 or 1)"
|
||||
},
|
||||
{
|
||||
"name": "Partner Accept",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Partner\u0027s accept status (0 or 1)"
|
||||
},
|
||||
{
|
||||
"name": "Has Name",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"value": "false",
|
||||
"description": "No name follows"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Update Gold/Platinum",
|
||||
"condition": "flag == UpdateGold (3)",
|
||||
"size": 17,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "17",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Flag",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "3",
|
||||
"description": "UpdateGold flag"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Trade container serial"
|
||||
},
|
||||
{
|
||||
"name": "Gold",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Gold amount"
|
||||
},
|
||||
{
|
||||
"name": "Platinum",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Platinum amount"
|
||||
},
|
||||
{
|
||||
"name": "Has Name",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"value": "false",
|
||||
"description": "No name follows"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x6F",
|
||||
"direction": "incoming",
|
||||
"relationship": "request",
|
||||
"note": "Client trade actions"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingSecureTradePackets.cs",
|
||||
"line": 32
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,223 +0,0 @@
|
|||
{
|
||||
"category": "Targeting",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x6C",
|
||||
"name": "Target Request",
|
||||
"description": "Requests the client to select a target.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 19,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6C",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Allow Ground",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True = allow ground targeting"
|
||||
},
|
||||
{
|
||||
"name": "Target ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Target cursor ID for matching response"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Target cursor flags",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Neutral",
|
||||
"description": "Neutral targeting (gray cursor)"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Harmful",
|
||||
"description": "Harmful action (red cursor)"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Beneficial",
|
||||
"description": "Beneficial action (green cursor)"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"name": "Cancel",
|
||||
"description": "Cancel targeting"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "byte[]",
|
||||
"size": 12,
|
||||
"description": "Padding (zeros)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingTargetPackets.cs",
|
||||
"line": 57
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x99",
|
||||
"name": "Multi Target Request",
|
||||
"description": "Requests the client to place a multi (house/boat) structure.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"version": "pre-HighSeas",
|
||||
"name": "Pre-HighSeas (26 bytes)",
|
||||
"size": 26,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x99",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Allow Ground",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "Allow ground targeting"
|
||||
},
|
||||
{
|
||||
"name": "Target ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Target cursor ID"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Target cursor flags"
|
||||
},
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "byte[]",
|
||||
"size": 11,
|
||||
"description": "Padding (zeros)"
|
||||
},
|
||||
{
|
||||
"name": "Multi ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Multi graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Offset X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X offset for placement"
|
||||
},
|
||||
{
|
||||
"name": "Offset Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y offset for placement"
|
||||
},
|
||||
{
|
||||
"name": "Offset Z",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Z offset for placement"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "HighSeas+",
|
||||
"name": "HighSeas / Enhanced (30 bytes)",
|
||||
"condition": "Classic >= 7.0.9.0, or Enhanced Client (any version)",
|
||||
"size": 30,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x99",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Allow Ground",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "Allow ground targeting"
|
||||
},
|
||||
{
|
||||
"name": "Target ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Target cursor ID"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Target cursor flags"
|
||||
},
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "byte[]",
|
||||
"size": 11,
|
||||
"description": "Padding (zeros)"
|
||||
},
|
||||
{
|
||||
"name": "Multi ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Multi graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Offset X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X offset for placement"
|
||||
},
|
||||
{
|
||||
"name": "Offset Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y offset for placement"
|
||||
},
|
||||
{
|
||||
"name": "Offset Z",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Z offset for placement"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Unknown (HighSeas extension)"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"classic": {},
|
||||
"enhanced": {},
|
||||
"notes": "HighSeas (7.0.9.0+) adds 4 bytes. EC always uses 30-byte variant."
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingTargetPackets.cs",
|
||||
"line": 23
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,216 +0,0 @@
|
|||
{
|
||||
"category": "Vendor",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x3B",
|
||||
"name": "End Vendor Transaction",
|
||||
"description": "Ends a vendor buy or sell transaction.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 8,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x3B",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "8",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Vendor Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the vendor"
|
||||
},
|
||||
{
|
||||
"name": "Item Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0",
|
||||
"description": "Item count (0 = end transaction)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingVendorBuyPackets.cs",
|
||||
"line": 111
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x74",
|
||||
"name": "Vendor Buy List",
|
||||
"description": "Sends the list of items available for purchase from a vendor with prices.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "8+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x74",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of vendor\u0027s buy container"
|
||||
},
|
||||
{
|
||||
"name": "Item Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of items"
|
||||
},
|
||||
{
|
||||
"name": "Items",
|
||||
"type": "loop",
|
||||
"description": "Buy items with prices",
|
||||
"loop": {
|
||||
"countField": "itemCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Price",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Item price"
|
||||
},
|
||||
{
|
||||
"name": "Desc Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Description length + 1"
|
||||
},
|
||||
{
|
||||
"name": "Description",
|
||||
"type": "ascii-t",
|
||||
"description": "Item description"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x3C",
|
||||
"relationship": "request",
|
||||
"note": "Container Content with items"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingVendorBuyPackets.cs",
|
||||
"line": 77
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x9E",
|
||||
"name": "Vendor Sell List",
|
||||
"description": "Sends the list of items the vendor will buy from the player.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "9+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x9E",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Vendor Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the vendor"
|
||||
},
|
||||
{
|
||||
"name": "Item Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of items"
|
||||
},
|
||||
{
|
||||
"name": "Items",
|
||||
"type": "loop",
|
||||
"description": "Sell items with prices",
|
||||
"loop": {
|
||||
"countField": "itemCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Item serial"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item hue"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item amount"
|
||||
},
|
||||
{
|
||||
"name": "Price",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Price per unit"
|
||||
},
|
||||
{
|
||||
"name": "Name Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Name length"
|
||||
},
|
||||
{
|
||||
"name": "Name",
|
||||
"type": "ascii",
|
||||
"description": "Item name"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x9F",
|
||||
"relationship": "response",
|
||||
"note": "Vendor Sell Reply from client"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingVendorSellPackets.cs",
|
||||
"line": 25
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,89 +0,0 @@
|
|||
{
|
||||
"category": "Weapon Ability",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x21",
|
||||
"name": "Clear Weapon Ability",
|
||||
"description": "Clears the currently selected weapon ability.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "5",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0021",
|
||||
"description": "Clear Weapon Ability subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Weapons/Abilities/WeaponAbilityPackets.cs",
|
||||
"line": 37
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x25",
|
||||
"name": "Toggle Special Ability",
|
||||
"description": "Toggles a special weapon ability on or off.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 8,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "8",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0025",
|
||||
"description": "Toggle Special Ability subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Ability ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Ability ID"
|
||||
},
|
||||
{
|
||||
"name": "Active",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True if ability is active"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Weapons/Abilities/WeaponAbilityPackets.cs",
|
||||
"line": 40
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
# ModernUO Website
|
||||
|
||||
## Development
|
||||
|
||||
1. Install Python's `pip` package manager
|
||||
1. Install MkDocs: `pip install mkdocs`
|
||||
1. Install Required Extensions
|
||||
* `pip install pymdown-extensions`
|
||||
* `pip install mkdocs-material`
|
||||
1. Launch development server: `mkdocs`
|
||||
|
|
@ -1,198 +0,0 @@
|
|||
---
|
||||
title: Serialization
|
||||
---
|
||||
|
||||
# Serialization / Savings
|
||||
|
||||
=== "Generic persistence"
|
||||
```Persistence.Serialize``` and ```Persistence.Deserialize``` is replaced with GenericPersistence class
|
||||
|
||||
Example of how to persist a custom system.
|
||||
|
||||
```cs
|
||||
namespace Server.ExampleSystem
|
||||
{
|
||||
public static class ExampleSerialization
|
||||
{
|
||||
public static void Configure()
|
||||
{
|
||||
GenericPersistence.Register("ExampleSystem", Serialize, Deserialize);
|
||||
}
|
||||
|
||||
public static void Serialize(IGenericWriter writer)
|
||||
{
|
||||
// Do serialization here
|
||||
writer.WriteEncodedInt(0); // version
|
||||
}
|
||||
|
||||
public static void Deserialize(IGenericReader reader)
|
||||
{
|
||||
// Do deserialization here
|
||||
var version = reader.ReadEncodedInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
=== "Codegen"
|
||||
### Basic info
|
||||
ModernUO can programatically generate migrations. This feature is based on internal C# Source generators [More info](https://devblogs.microsoft.com/dotnet/introducing-c-source-generators/)
|
||||
|
||||
Old way of serializing objects:
|
||||
```cs
|
||||
public class ExampleItem : Item
|
||||
{
|
||||
private string _exampleText;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public string ExampleText
|
||||
{
|
||||
get => _exampleText;
|
||||
set
|
||||
{
|
||||
if (value != _exampleText)
|
||||
{
|
||||
_exampleText = value;
|
||||
this.MarkDirty();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public ExampleItem(string text) : base(0)
|
||||
{
|
||||
Example = text;
|
||||
}
|
||||
|
||||
public ExampleItem(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); //Version
|
||||
writer.Write(_exampleText);
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
var version = reader.ReadEncodedInt();
|
||||
|
||||
// version 0
|
||||
_exampleText = reader.ReadString();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Same class serialized with codegen
|
||||
```cs
|
||||
[SerializationGenerator(0)]
|
||||
public partial class ExampleItem : Item
|
||||
{
|
||||
[SerializableField(0)]
|
||||
[SerializedCommandProperty(AccessLevel.GameMaster)]
|
||||
private string _exampleText;
|
||||
|
||||
[Constructible]
|
||||
public ExampleItem(string text) : base(0)
|
||||
{
|
||||
_exampleText = text;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Step by step
|
||||
1. Add ```SerializationGenerator(versionNumber)``` to your class and make the class ```partial```
|
||||
```cs
|
||||
[SerializationGenerator(0)]
|
||||
public partial class ExampleItem : Item
|
||||
```
|
||||
1. Delete the constructor with ```Serial serial```
|
||||
1. Delete the ```Serialize``` and ```Deserialize``` methods.
|
||||
1. Add ```SerializableField(fieldOrder)``` attribute to all field you want to serialize.
|
||||
```cs
|
||||
[SerializableField(0)]
|
||||
private string _exampleText;
|
||||
```
|
||||
1. Run `publish.cmd`.
|
||||
|
||||
ModernUO will create migration files for you. In this case "Server.Items.ExampleItem.v0.json" and "Server.Items.ExampleItem.Serialization.cs".
|
||||
These files contains all information and classes needed for ModernUO to serialize/deserialize your objects.
|
||||
|
||||
### Migrations
|
||||
When new field is added to the serialization, you need to increment `versionNumber` and run `publish.cmd` again to generate a migration file for the new version.
|
||||
Here is little example.
|
||||
|
||||
New class code will look like this:
|
||||
```cs
|
||||
[SerializationGenerator(1)]
|
||||
public partial class ExampleItem : Item
|
||||
{
|
||||
[SerializableField(0)]
|
||||
private string _exampleText;
|
||||
|
||||
[SerializableField(1)]
|
||||
[SerializedCommandProperty(AccessLevel.GameMaster)]
|
||||
private string _addedExampleTest;
|
||||
|
||||
[Constructible]
|
||||
public ExampleItem(string text, string addedText) : base(0)
|
||||
{
|
||||
_exampleText = text;
|
||||
_addedExampleTest = addedText;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Your IDE (Visual Studio, Rider, or VSCode), will show errors and the ModernUO will not compile.
|
||||
This happens because the code generator builds a migration from V0 to V1 and a new struct `V0Content` with all of the V0 fields is generated.
|
||||
ModernUO is expecting the developer to create a migration from the old version to the new.
|
||||
Now create a `MigrateFrom` method for each of the older versions, in this case V0, to the new version.
|
||||
|
||||
```cs
|
||||
private void MigrateFrom(V0Content content)
|
||||
{
|
||||
_exampleText = content.ExampleText;
|
||||
}
|
||||
```
|
||||
|
||||
!!! Tip
|
||||
Since the class is `partial`, you can create a standalone file for migrations to keep them organized. For example "ExampleItem.Migrations.cs"
|
||||
|
||||
Your migration is now complete.
|
||||
|
||||
### Migrating from pre-codegen
|
||||
To migrate from pre-codegen serialization, change the old Deserialize method to this:
|
||||
```cs
|
||||
private void Deserialize(IGenericReader reader, int version)
|
||||
```
|
||||
|
||||
This method will be automatically called when the serialization generator doesn't have a migration for for that older version.
|
||||
In this method you can make old fashioned deserializations that are mostly compatible with RunUO.
|
||||
|
||||
### After Deserialization
|
||||
To execute code after the deserialization, add the `AfterDeserialization()` attribute to a method.
|
||||
```cs
|
||||
[AfterDeserialization]
|
||||
private void AfterDeserialization()
|
||||
{
|
||||
// Some code here
|
||||
}
|
||||
```
|
||||
|
||||
!!! Tip
|
||||
By default, `AfterDeserialization` is executed synchronously right after the actual deserialization. Passing `false` to the attribute will make it execute after all deserializations.
|
||||
|
||||
### Serializing Non-Entity Classes
|
||||
Sometimes you might need to serialize a nested object that is not an `ISerializable`. The syntax is largely the same except you must also mark the *parent* object for dirty tracking by using the `DirtyTrackingEntity` attribute.
|
||||
A good example of this is ["AquariumState"](https://github.com/modernuo/ModernUO/blob/main/Projects/UOContent/Items/Aquarium/AquariumState.cs).
|
||||
|
||||
|
||||
!!! Note
|
||||
Non-entity classes cannot be serialized by reference since that would require a reference Serial or ID. This means if the object is a serializable property on multiple objects, it will be serialized
|
||||
multiple times and will effectively get duplicated on world load. Consider either making it an `ISerializable` type and building world load/save mechanisms, or do not serialize the nested object directly.
|
||||
Instead opt for a global lookup, serialize with generic persistence, and then reattach to the objects using the `WorldLoad` event sink.
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
title: Timers
|
||||
---
|
||||
|
||||
# Timers
|
||||
|
||||
ModernUO completely changed the timer system to use an optimized data structure called a timer wheel. This will allow shards to add thousands of timers without slowing down the server. Traditionally the timer system used a thread and locked to add/remove/process timers. All of this is gone.
|
||||
With the new timer system there is no TimerPriority. This can be deleted entirely from your scripts.
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
---
|
||||
title: Starting the server
|
||||
---
|
||||
|
||||
# Starting the server
|
||||
|
||||
Now that the software has been built, all you need to do is run it!
|
||||
Everything is run from the _Distribution_ folder.
|
||||
|
||||
=== "Windows"
|
||||
Using _windows terminal_, _git bash_, or _powershell_, run:
|
||||
```bash
|
||||
cd Distribution
|
||||
ModernUO.exe
|
||||
```
|
||||
|
||||
=== "OSX/Linux"
|
||||
Using _terminal_, run:
|
||||
```bash
|
||||
cd Distribution
|
||||
dotnet ModernUO.dll
|
||||
```
|
||||
|
||||
=== "Game Files"
|
||||
!!! Note
|
||||
Game files are required to initiate a server. Upon the initial launch, you will encounter a prompt asking for the location of your game files or ClassicUO installation. ClassicUO installations should be configured to reference game files directory within settings.json file.
|
||||
|
||||
|
||||
!!! Tip
|
||||
Game files are not directly distributed in ModernUO, find the latest version to download these at [client download](https://uo.com/Client-Download/)
|
||||
|
|
@ -1,194 +0,0 @@
|
|||
# build-packets.ps1
|
||||
# Combines all packet JSON files with the HTML template to generate the final documentation page.
|
||||
#
|
||||
# Usage:
|
||||
# .\build-packets.ps1
|
||||
# .\build-packets.ps1 -OutputPath "C:\custom\output\packets.html"
|
||||
|
||||
param(
|
||||
[string]$OutputPath = ""
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# Determine paths
|
||||
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
$docsDir = (Resolve-Path (Join-Path $scriptDir "..")).Path
|
||||
$packetsDir = Join-Path $docsDir "packets"
|
||||
$templateFile = Join-Path $packetsDir "template.html"
|
||||
|
||||
if (-not $OutputPath) {
|
||||
$OutputPath = Join-Path $packetsDir "packets.html"
|
||||
}
|
||||
|
||||
Write-Host "ModernUO Packet Documentation Builder" -ForegroundColor Cyan
|
||||
Write-Host "======================================" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
|
||||
# Verify template exists
|
||||
if (-not (Test-Path $templateFile)) {
|
||||
Write-Error "Template file not found: $templateFile"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Collect all packet JSON files
|
||||
$allPackets = @{
|
||||
incoming = @()
|
||||
outgoing = @()
|
||||
}
|
||||
|
||||
$incomingDir = Join-Path $packetsDir "incoming"
|
||||
$outgoingDir = Join-Path $packetsDir "outgoing"
|
||||
|
||||
# Read incoming packets
|
||||
if (Test-Path $incomingDir) {
|
||||
$incomingFiles = Get-ChildItem "$incomingDir\*.json" -ErrorAction SilentlyContinue | Sort-Object Name
|
||||
foreach ($file in $incomingFiles) {
|
||||
Write-Host " Reading: $($file.Name)" -ForegroundColor Gray
|
||||
try {
|
||||
$content = Get-Content $file.FullName -Raw -Encoding UTF8
|
||||
$data = $content | ConvertFrom-Json
|
||||
if ($data.packets) {
|
||||
# Add category and merge tags for each packet
|
||||
foreach ($packet in $data.packets) {
|
||||
# Add category if not present (backward compatibility)
|
||||
if (-not $packet.category -and $data.category) {
|
||||
$packet | Add-Member -NotePropertyName "category" -NotePropertyValue $data.category -Force
|
||||
}
|
||||
|
||||
# Merge tags: file-level + packet-level
|
||||
$fileTags = @()
|
||||
if ($data.tags) { $fileTags = @($data.tags) }
|
||||
|
||||
$packetTags = @()
|
||||
if ($packet.tags) { $packetTags = @($packet.tags) }
|
||||
|
||||
$allTags = @($fileTags + $packetTags) | Select-Object -Unique
|
||||
|
||||
# Always include the primary category as a tag (first position)
|
||||
if ($data.category -and $data.category -notin $allTags) {
|
||||
$allTags = @($data.category) + $allTags
|
||||
}
|
||||
|
||||
# Ensure tags is always an array (PowerShell can collapse single-element arrays)
|
||||
$allTags = @($allTags)
|
||||
|
||||
$packet | Add-Member -NotePropertyName "tags" -NotePropertyValue $allTags -Force
|
||||
}
|
||||
$allPackets.incoming += $data.packets
|
||||
}
|
||||
} catch {
|
||||
Write-Warning "Failed to parse $($file.Name): $_"
|
||||
}
|
||||
}
|
||||
Write-Host " Found $($allPackets.incoming.Count) incoming packets" -ForegroundColor Green
|
||||
} else {
|
||||
Write-Host " No incoming packets directory found" -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
# Read outgoing packets
|
||||
if (Test-Path $outgoingDir) {
|
||||
$outgoingFiles = Get-ChildItem "$outgoingDir\*.json" -ErrorAction SilentlyContinue | Sort-Object Name
|
||||
foreach ($file in $outgoingFiles) {
|
||||
Write-Host " Reading: $($file.Name)" -ForegroundColor Gray
|
||||
try {
|
||||
$content = Get-Content $file.FullName -Raw -Encoding UTF8
|
||||
$data = $content | ConvertFrom-Json
|
||||
if ($data.packets) {
|
||||
# Add category and merge tags for each packet
|
||||
foreach ($packet in $data.packets) {
|
||||
# Add category if not present (backward compatibility)
|
||||
if (-not $packet.category -and $data.category) {
|
||||
$packet | Add-Member -NotePropertyName "category" -NotePropertyValue $data.category -Force
|
||||
}
|
||||
|
||||
# Merge tags: file-level + packet-level
|
||||
$fileTags = @()
|
||||
if ($data.tags) { $fileTags = @($data.tags) }
|
||||
|
||||
$packetTags = @()
|
||||
if ($packet.tags) { $packetTags = @($packet.tags) }
|
||||
|
||||
$allTags = @($fileTags + $packetTags) | Select-Object -Unique
|
||||
|
||||
# Always include the primary category as a tag (first position)
|
||||
if ($data.category -and $data.category -notin $allTags) {
|
||||
$allTags = @($data.category) + $allTags
|
||||
}
|
||||
|
||||
# Ensure tags is always an array (PowerShell can collapse single-element arrays)
|
||||
$allTags = @($allTags)
|
||||
|
||||
$packet | Add-Member -NotePropertyName "tags" -NotePropertyValue $allTags -Force
|
||||
}
|
||||
$allPackets.outgoing += $data.packets
|
||||
}
|
||||
} catch {
|
||||
Write-Warning "Failed to parse $($file.Name): $_"
|
||||
}
|
||||
}
|
||||
Write-Host " Found $($allPackets.outgoing.Count) outgoing packets" -ForegroundColor Green
|
||||
} else {
|
||||
Write-Host " No outgoing packets directory found" -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
$totalPackets = $allPackets.incoming.Count + $allPackets.outgoing.Count
|
||||
Write-Host ""
|
||||
Write-Host "Total packets: $totalPackets" -ForegroundColor Cyan
|
||||
|
||||
if ($totalPackets -eq 0) {
|
||||
Write-Warning "No packets found! The output will have empty documentation."
|
||||
}
|
||||
|
||||
# Sort packets by ID for deterministic output
|
||||
# Handle IDs like "0x02" and "0xBF/0x05" (split on / and parse first part)
|
||||
$allPackets.incoming = @($allPackets.incoming | Sort-Object {
|
||||
$baseId = $_.id -split '/' | Select-Object -First 1
|
||||
[Convert]::ToInt32($baseId, 16)
|
||||
}, {
|
||||
if ($_.subId) { [Convert]::ToInt32($_.subId, 16) }
|
||||
elseif ($_.id -match '/') { [Convert]::ToInt32(($_.id -split '/' | Select-Object -Last 1), 16) }
|
||||
else { 0 }
|
||||
})
|
||||
$allPackets.outgoing = @($allPackets.outgoing | Sort-Object {
|
||||
$baseId = $_.id -split '/' | Select-Object -First 1
|
||||
[Convert]::ToInt32($baseId, 16)
|
||||
}, {
|
||||
if ($_.subId) { [Convert]::ToInt32($_.subId, 16) }
|
||||
elseif ($_.id -match '/') { [Convert]::ToInt32(($_.id -split '/' | Select-Object -Last 1), 16) }
|
||||
else { 0 }
|
||||
})
|
||||
|
||||
# Convert to JSON
|
||||
$packetsJson = $allPackets | ConvertTo-Json -Depth 20 -Compress
|
||||
|
||||
# HTML entity escape the JSON to safely embed in HTML
|
||||
$packetsJson = $packetsJson -replace '<', '<' -replace '>', '>'
|
||||
|
||||
# Read template and inject JSON
|
||||
Write-Host ""
|
||||
Write-Host "Reading template..." -ForegroundColor Gray
|
||||
$template = Get-Content $templateFile -Raw -Encoding UTF8
|
||||
|
||||
Write-Host "Injecting packet data..." -ForegroundColor Gray
|
||||
$output = $template -replace '<!-- PACKETS -->', $packetsJson
|
||||
|
||||
# Ensure output directory exists
|
||||
$outputDir = Split-Path $OutputPath -Parent
|
||||
if (-not (Test-Path $outputDir)) {
|
||||
Write-Host "Creating output directory: $outputDir" -ForegroundColor Gray
|
||||
New-Item -ItemType Directory -Path $outputDir -Force | Out-Null
|
||||
}
|
||||
|
||||
# Write output
|
||||
Write-Host "Writing output..." -ForegroundColor Gray
|
||||
$output | Set-Content $OutputPath -Encoding UTF8
|
||||
|
||||
$outputSize = (Get-Item $OutputPath).Length
|
||||
$outputSizeKB = [math]::Round($outputSize / 1024, 2)
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Success!" -ForegroundColor Green
|
||||
Write-Host " Output: $OutputPath" -ForegroundColor White
|
||||
Write-Host " Size: $outputSizeKB KB" -ForegroundColor White
|
||||
Write-Host " Packets: $totalPackets" -ForegroundColor White
|
||||
83
mkdocs.yml
|
|
@ -1,83 +0,0 @@
|
|||
# Exclude non-documentation files from build output
|
||||
exclude_docs: |
|
||||
commands/
|
||||
packets/
|
||||
tools/
|
||||
|
||||
# Project
|
||||
site_name: ModernUO
|
||||
site_author: Kamron Batman
|
||||
site_url: https://modernuo.com
|
||||
edit_uri: edit/main/docs/
|
||||
|
||||
# Repository
|
||||
repo_name: modernuo/modernuo
|
||||
repo_url: https://github.com/modernuo/modernuo
|
||||
site_description: The Ultima Online Server Emulator for the modern era!
|
||||
copyright: Copyright 2019-2025 ModernUO Development Team
|
||||
theme:
|
||||
name: material
|
||||
favicon: branding/favicon.png
|
||||
icon:
|
||||
logo: modernuo/logo
|
||||
custom_dir: docs/overrides/
|
||||
features:
|
||||
- navigation.tabs
|
||||
- navigation.instant
|
||||
extra_css:
|
||||
- assets/stylesheets/extra.css
|
||||
extra:
|
||||
social:
|
||||
- icon: fontawesome/brands/github
|
||||
link: https://muo.gg/github
|
||||
name: ModernUO on Github
|
||||
- icon: fontawesome/brands/discord
|
||||
link: https://muo.gg/discord
|
||||
name: ModernUO on Discord
|
||||
- icon: fontawesome/brands/patreon
|
||||
link: https://muo.gg/patreon
|
||||
name: Sponsor ModernUO on Patreon
|
||||
- icon: fontawesome/brands/reddit
|
||||
link: https://muo.gg/reddit
|
||||
name: /r/modernuo
|
||||
- icon: fontawesome/brands/twitter
|
||||
link: https://muo.gg/twitter
|
||||
name: "@modernuo"
|
||||
markdown_extensions:
|
||||
- admonition
|
||||
- footnotes
|
||||
- meta
|
||||
- toc:
|
||||
toc_depth: "1-1"
|
||||
permalink: true
|
||||
- attr_list
|
||||
- pymdownx.highlight
|
||||
- pymdownx.inlinehilite
|
||||
- pymdownx.superfences
|
||||
- pymdownx.snippets
|
||||
- pymdownx.tabbed:
|
||||
alternate_style: true
|
||||
- pymdownx.caret
|
||||
- pymdownx.mark
|
||||
- pymdownx.tilde
|
||||
- pymdownx.critic:
|
||||
mode: view
|
||||
- pymdownx.betterem:
|
||||
smart_enable: all
|
||||
- pymdownx.emoji:
|
||||
emoji_index: !!python/name:material.extensions.emoji.twemoji
|
||||
emoji_generator: !!python/name:material.extensions.emoji.to_svg
|
||||
options:
|
||||
custom_icons:
|
||||
- docs/overrides/.icons
|
||||
|
||||
# Pages
|
||||
nav:
|
||||
- Home: 'index.md'
|
||||
- 'Get Started':
|
||||
- 'installation.md'
|
||||
- 'building-server.md'
|
||||
- 'starting-server.md'
|
||||
- 'Scripting guide':
|
||||
- 'scripting-guide/timers.md'
|
||||
- 'scripting-guide/serialization.md'
|
||||