-
Notifications
You must be signed in to change notification settings - Fork 0
Runtime API Audit
Реестр извлечён из собранного runtime. Поведение сопоставляется с реализацией команд, клиентским bridge и тестами. Наличие страницы само по себе не считается проверкой её содержания.
В текущем реестре 814 имён / 1302 перегрузки: 746 команд UO и 68 встроенных функций BASIC. Они распределены по 36 темам и отдельному справочнику языка. Реорганизация навигации не заменяет семантическую сверку, тестирование игры и завершение переводов.
Показатели относятся к текущему реестру. Структурная полнота и проверка разбора скриптов не означают завершённую проверку всех игровых сценариев.
| Проверка | Результат |
|---|---|
| Имена вызываемых команд | 814 |
| Типизированные регистрации | 1302 |
| Примеры, проверенные загрузчиком | 11590 |
| Прямые вызовы с проверенным именем и числом аргументов | 46478 |
| Динамические вызовы методов | 2020 |
| Ошибки синтаксиса и прямых вызовов | 0 |
| Проверки чистых учебных вычислений | 286 |
| Содержательные разделы возврата | 413 |
| Разделы отсутствия результата Unit | 277 |
| Оставшиеся содержательные разделы возврата | 124 |
| Записанные проверки реализации | 296 |
| Ожидающие проверки реализации | 518 |
| Команды с проверенным форматом комментированных примеров | 472 |
| Оставшиеся подробные комментированные примеры | 342 |
| Команды с отдельным разбором внутренних функций | 194 |
| Оставшиеся внутренние разборы | 620 |
Последний проход: 113 проверок Follow, включая координаты, условия во время движения, последние отправленные шаги и 1001 условие, собранное BASIC-циклом; 1166 тестов движка; 132 теста языковых подсказок; 55 тестов индекса API и библиотеки примеров; 6 проверок варианта Classic. Эти наборы прошли. Ранее прошли 147 целевых проверок ClassMask и условий Follow. Живая проверка изменений на сервере и финальная нативная сборка остаются отдельными незавершёнными этапами.
Follow принимает персонажа либо точку X/Y/Z. Условия stopConditions проверяются порциями до начала и во время поиска пути/движения. Координатная задача заканчивается при достижении допуска X/Y и точного Z, условии остановки или отказе пути. В статье приведены 11 сценариев, включая сбор списка в DO … LOOP и собственный LOOP UNTIL с остановкой в Finally. Конструкция DO/LOOP с несколькими проверками дополнительно объяснена на десяти языках.
Количество примеров включает повторяющийся код в переводах. Проверка загрузки и прямых вызовов не исполняет действия на сервере, методы динамических файловых объектов или 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/переводов. Это не проверка игровых действий или сети.
Сверка всех перегрузок, переводы на десять языков, объяснение всех внутренних функций и игровые проверки ещё не закончены. Справочник пока не считается полностью проверенным.
Все 13 разделов API Manual открываются отдельными панелями. В настоящем клиенте с изолированным тестовым миром прошли 17 сценариев: закрепление, разворачивание с видимым содержимым, отделение и возврат каждого раздела, синхронизация команды, поиск после закрытия и повторного открытия IDE, отсутствие повторных вкладок и независимое закрытие общей справки. Подключения к игровому серверу в этой проверке не было.
Дополнительно проверены 14 вариантов отображения (общее окно и 13 разделов) на десяти языках интерфейса при трёх размерах области, копирование примеров и переключение панелей. Инструкция одинакова в Wiki и во внешнем README клиентского API Manual. Эти проверки интерфейса не закрывают оставшуюся сверку содержания команд, переводов и финальной сборки клиента.
Текущий реестр · Состояние проверки описаний
Текущая проверка выявила 341 основных карточек со структурными замечаниями. Полный отчёт. UseSkill и Cast теперь имеют один строковый параметр — название; target и ожидание задаются другими командами. Обновлены реестр, примеры, каталоги и клиентский Manual. Содержание всего справочника ещё не считается полностью проверенным.
ClassicUO - Bad Newbie & Basic IDE Edition