Runtime API Audit - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

Runtime API — состояние сверки

Оглавление · Все команды

Реестр извлечён из собранного runtime. Поведение сопоставляется с клиентским bridge и первичными справочниками. Загрузка страницы источника сама по себе не считается проверкой реализации.

Текущая структура каталога

В текущем реестре 811 имён / 1305 перегрузок: 743 команды UO и 68 встроенных функций BASIC. Они распределены по 36 темам и отдельному справочнику языка. Реорганизация навигации не заменяет семантическую сверку, тестирование игры и завершение переводов.

Ранее сохранённый отчёт

Следующая таблица относится к предыдущему проходу проверки. Это исторические результаты, а не пересчитанные показатели текущего каталога.

Проверка Результат
Имена вызываемых команд 802
Типизированные регистрации 1292
Примеры, проверенные загрузчиком 9841
Прямые вызовы с проверенным именем и числом аргументов 35820
Динамические вызовы методов, требующие отдельной проверки 878
Ошибки синтаксиса и прямых вызовов 0
Выполненные проверки чистых учебных вычислений 286
Содержательные разделы возврата 365
Разделы отсутствия результата Unit 276
Оставшиеся содержательные разделы возврата 161
Имена с записью интернет-сверки 233
Ожидающие интернет-сверки 569
Команды с проверенным форматом комментированных примеров 412
Оставшиеся подробные комментированные примеры 390
Команды с отдельным разбором внутренних функций 129
Оставшиеся внутренние разборы 673

Количество примеров включает повторяющийся код в переводах. Проверка загрузки и прямых вызовов не исполняет действия на сервере, методы динамических файловых объектов или callback, выбранные строкой. Все необходимые пользовательские функции должны быть приведены в копируемом примере. Подробный разбор внутренних алгоритмов клиента и перевод полного набора команд ещё продолжаются.

Для логических результатов 1 и TRUE равны, 0 и FALSE равны. Это правило не превращает количество, ID, индекс, sequence или многозначный статус в логический успех. Например, FindCount(ID) возвращает количество единиц в стопке, а Step и StepQ имеют собственные статусы. Правила использования.

Обновлённые IsNpc/IsMovable и проверки уничтоженных объектов проверены тестами клиента. IsNpc включает собственного персонажа и других mobile; IsMovable описывает локальную возможность поднять предмет, а не гарантированное разрешение сервера. Paralyzed проверяет флаг паралича mobile; для этой команды используется одно написание.

В карточках NewMoveXY, MoveXY и MoveXYZ разобрана цепочка внутреннего поиска и движения: функции, входные значения, возвращаемый результат, очереди, стоимость и пересчёт. NewMoveXY содержит полный учебный скрипт для формул допуска/эвристики/цены шага. Эти чистые вычисления проверены исполнением; они не заменяют тестирование карты. Callback движения получает три Integer X/Y/Z, поэтому координаты можно сразу использовать в арифметике.

Основные вызовы движения теперь выполняют поиск и пересчёт короткими порциями между обновлениями клиента: максимум 32 раскрытия узла и мягкий бюджет около 1 мс на вызов. Передвижение начинается после построения полного пути. Тайм-аут учитывает последующие порции, а stopOnStuck не считает активное планирование застреванием. Проверены независимое сравнение с Dijkstra, отмена, коррекция позиции, отказ шага и появившееся препятствие. Один сложный участок геометрии может превысить мягкий бюджет; это не обещание фиксированного времени каждого кадра. Совместимый вызов из нативного PluginHost сохраняет синхронный режим.

Запросы GetLandTilesArray/Ex и GetStaticTilesArray/Ex проверяют диапазон координат и площадь без переполнения. Чтение выполняется порциями до 32 клеток с мягким бюджетом около 1 мс и проверкой отмены; смена карты между порциями отбрасывает частичный результат. Проверки границ Map.GetChunk2 больше не позволяют слишком большому Y обратиться к соседнему столбцу карты. Карточки этих четырёх команд содержат все поля массива, шесть параметров, три полных примера и разбор внутренних этапов на десяти языках.

GetMapCell возвращает три поля graphic/Z/flags32, GetSurfaceZ — среднюю высоту земли. GetLayerCount считает записи неземельной геометрии: текущий клиент включает Static, Multi и Item. GetNextStepZ возвращает предполагаемую высоту шага; при отключении или другой карте — 0. Высота 0 может быть настоящим значением, поэтому её нельзя интерпретировать как логический отказ. Проходимость читается отдельно в IsWorldCellPassable.

Проверки состояния Dead/Alive/Hidden/Poisoned/Flying отвергают удалённые объекты. UO.Hidden принимает числовой ID так же, как строковый serial и остальные алиасы. В карточках состояния объяснено, где 1/0 соответствуют TRUE/FALSE; карточки HP/Mana/Stamina отдельно описывают числовые значения, неизвестные данные и возможную относительную шкалу чужого HP. Для этих семейств подготовлены полные вспомогательные функции и десять языков.

GetSkillValue/GetSkillCurrentValue/GetSkillCap различают базовые очки, эффективные очки и предел навыка. Десятые преобразуются непосредственно в Double: значение 95.1 правильно сравнивается с 95.1. Навык выбирается по имени из данных клиента или строгому индексу от 0; индекс за границей больше не выбирает последний навык. Режимы блокировок 0/1/2 являются кодами, не Boolean; действия возвращают Unit. Проверены пакеты изменения навыков и характеристик, алиасы, отсутствие персонажа и недопустимые номера. Карточки содержат все параметры, три полных примера, внутренние этапы и десять языков.

IsWorldCellPassable описана отдельно: семь входных параметров и массив [проходимость, Z], без изменения шестого аргумента. Только первый элемент равен логическому TRUE/FALSE. Проверки границ карты и высоты выполняются до случая одинаковых координат; недопустимая клетка больше не получает ложный успех. Карточка содержит три готовых примера, полную IsCellOpen и отдельные разборы семи внутренних функций на десяти языках.

LastStatus теперь отражает принятый пакет статуса, а не отправленный запрос. LastStatusX/Y сохраняют координаты на момент приёма. LastTargetX/Y сохраняют выбранную позицию объекта, земли или статики; перемещение и удаление объекта больше не подменяют эти значения. World.Clear сбрасывает записи, а поля сетевого target сохраняют прежний формат. Шесть карточек описывают Integer, serial 0 для координатных целей, отсутствие атомарности отдельных чтений и полные помощники на десяти языках.

Abs/Sgn/Fix/Sin/Cos/Tan/Atn/Sqr/Exp/Log сопоставлены с регистрациями BASIC и первичными контрактами System.Math. Описаны числовые типы, радианы, допустимые области, NaN/Infinity, преобразование строк и отличие числового результата от Boolean. Каждая карточка содержит три полных примера и вспомогательную функцию на десяти языках. Проверены 34 граничных случая runtime и 264 выполнения чистых математических помощников из root/переводов. Это не проверка игровых действий или сети.

Сверка всех перегрузок, переводы на десять языков, объяснение всех внутренних функций и игровые проверки ещё не закончены. Справочник пока не считается полностью проверенным.

Текущий реестр · Состояние интернет-сверки