Начните с действия пользователя#

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

Это правило архитектуры проекта. Другой мод может иметь собственное меню, если оно решает его задачу. Но замена стандартного действия требует изучить весь путь вызова.

Перехватывайте до побочного эффекта#

При MoveWait одной подмены низкоуровневого CreateOrder было мало: штатный UI успевал изменить очередь раньше. В проекте точка перехвата перенесена в обработчики MapMenu и InteractMenu до этих действий.

Порядок работы:

  1. Найти callback конкретной кнопки в своей версии игры.
  2. Выписать побочные эффекты, которые происходят до основного вызова.
  3. Ограничить перехват своим режимом и своими объектами.
  4. Сохранить обычный путь для остальных случаев.
  5. Проверить UI и настоящий объект независимо.

Получение меню#

Учебный фрагмент показывает только поиск меню:

LUA
local menu = Helper and Helper.getMenu
    and Helper.getMenu("MapMenu")

if not menu then
    return -- точку повторной попытки определяет ваш адаптер
end

Успешный поиск меню не подтверждает совместимость его внутренних методов. Сверяйте сигнатуры с установленными Lua-файлами и не заменяйте метод повторно на каждом кадре.

Обновление таблицы и выбор#

При проверке ресурсных подсказок автообновление карты посылало onRowChanged с source=auto. Если считать любое такое событие ручным выбором, текущая заявка сбрасывается. События боковых таблиц тоже не должны менять выбор в списке имущества.

В принятом срезе фильтрация событий и привязка к новой ревизии заказа проверены на реальных queued-заказах. Эти результаты не доказывают все поверхности всех меню X4.