-
Notifications
You must be signed in to change notification settings - Fork 0
API UO PetsMax
Оглавление · Алфавитный указатель · Mobiles
ClassicUO • Runtime API
Читает счётчик статуса своего персонажа: максимум слотов управления питомцами.
UO.PetsMax() -> Integer
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметров нет.
Integer — максимум слотов управления питомцами, 0..255 в модели клиента. 0 может быть реальным значением, отсутствием данных либо отсутствующим/уничтоженным Player. Это количество, не Boolean, ID или type: 1 означает одну единицу, а не успех. Команда не перебирает объекты и не возвращает массив.
- Команда не принимает аргументов. Используйте точные сигнатуры выше.
- Чтение в игровом потоке берёт Player.FollowersMax, если текущий Player существует и не уничтожен; иначе 0. Экипировка не перебирается, бонусы не пересчитываются, статус не запрашивается, ожидания обновления нет. Присутствующий призрак не равен уничтоженному Player.
- PetsMax/FollowersMax сообщает общий разрешённый сервером предел слотов из статуса type >= 3, а не свободные слоты. Занятых слотов может быть больше предела. Свободную ёмкость считайте как maximum - current, заменяя отрицательный результат на 0. Команда ничего не отпускает, не приручает и не призывает.
- CharacterStatus проверяет обязательное тело до обновления. Weight есть в собственном расширенном статусе, слоты — с type 3, Luck — с type 4, серверный WeightMax — с type 5. Компактный/старый пакет без необязательного счётчика оставляет его предыдущий кэш. Новый Player начинает с нулей; вызов не доказывает получение свежего статуса.
- RegisterCharacterGetterAliases добавляет отсутствующие функции без аргументов и встроенные имена для поля. Существующие ветки совместимости читают то же поле bridge. Регистр имени не важен; intrinsic без скобок читается заново, если его не перекрыла переменная.
- Каждый вызов читает локальные данные заново. Переменная хранит снимок; отдельные чтения могут получить разные обновления сервера. Ненулевой результат не проверяет подключение. Ноль может быть значением либо отсутствием данных.
Внутренние этапы чтения кэшированного счётчика. Полностью объявленная функция CanCarry, LuckAtLeast либо CanAddFollower в примере — пользовательский BASIC, а не скрытое нативное действие. Она не меняет инвентарь или питомцев.
RegisterCharacterGetterAliases добавляет отсутствующие функции без аргументов и встроенные имена для поля. Существующие ветки совместимости читают то же поле bridge. Регистр имени не важен; intrinsic без скобок читается заново, если его не перекрыла переменная.
PetsMax FollowersMax GetPetsMax GetFollowersMax.
Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция RegisterCharacterGetterAliases.
Чтение в игровом потоке берёт Player.FollowersMax, если текущий Player существует и не уничтожен; иначе 0. Экипировка не перебирается, бонусы не пересчитываются, статус не запрашивается, ожидания обновления нет. Присутствующий призрак не равен уничтоженному Player.
Invoke читает на игровом потоке с возможностью отменить ожидание скриптом. Не запрашивает status, не открывает target, не посылает пакет, не меняет характеристику и не добавляет задержку.
Исходник проекта: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функция Invoke.
CharacterStatus проверяет обязательное тело до обновления. Weight есть в собственном расширенном статусе, слоты — с type 3, Luck — с type 4, серверный WeightMax — с type 5. Компактный/старый пакет без необязательного счётчика оставляет его предыдущий кэш. Новый Player начинает с нулей; вызов не доказывает получение свежего статуса.
PetsMax/FollowersMax сообщает общий разрешённый сервером предел слотов из статуса type >= 3, а не свободные слоты. Занятых слотов может быть больше предела. Свободную ёмкость считайте как maximum - current, заменяя отрицательный результат на 0. Команда ничего не отпускает, не приручает и не призывает.
Исходник проекта: src/ClassicUO.Client/Network/PacketHandlers.cs; функция CharacterStatus.
World.Clear удаляет Player. Далее возвращается 0, пока не появятся текущий персонаж и его данные. Сохранённое значение не доказывает выполнение требования после переподключения.
Integer — максимум слотов управления питомцами, 0..255 в модели клиента. 0 может быть реальным значением, отсутствием данных либо отсутствующим/уничтоженным Player. Это количество, не Boolean, ID или type: 1 означает одну единицу, а не успех. Команда не перебирает объекты и не возвращает массив.
Исходник проекта: src/ClassicUO.Client/Game/World.cs; функция Clear.
Каждый вызов читает локальные данные заново. Переменная хранит снимок; отдельные чтения могут получить разные обновления сервера. Ненулевой результат не проверяет подключение. Ноль может быть значением либо отсутствием данных.
# Вывести сохранённый счётчик
#
# Читает счётчик статуса своего персонажа: максимум слотов управления питомцами.
#
# Integer — максимум слотов управления питомцами, 0..255 в модели клиента. 0 может быть реальным
# значением, отсутствием данных либо отсутствующим/уничтоженным Player. Это количество, не
# Boolean, ID или type: 1 означает одну единицу, а не успех. Команда не перебирает объекты и не
# возвращает массив.
SUB Main()
# value хранит один вызов без аргументов для собственного персонажа; CStr форматирует число для
# журнала, не меняя его смысл.
VAR value = UO.PetsMax()
UO.Print('FollowersMax: ' + CStr(value))
END SUBРазбор параметров и выполнения:
- value хранит один вызов без аргументов для собственного персонажа; CStr форматирует число для журнала, не меняя его смысл.
# Наблюдать изменение
#
# Читает счётчик статуса своего персонажа: максимум слотов управления питомцами.
#
# Integer — максимум слотов управления питомцами, 0..255 в модели клиента. 0 может быть реальным
# значением, отсутствием данных либо отсутствующим/уничтоженным Player. Это количество, не
# Boolean, ID или type: 1 означает одну единицу, а не успех. Команда не перебирает объекты и не
# возвращает массив.
SUB Main()
# WAIT(500) разделяет before и after на 500 миллисекунд. difference может быть положительной,
# нулевой или отрицательной; промежуточные обновления и смена персонажа могут быть пропущены.
# Пауза относится к примеру.
VAR before = UO.PetsMax()
WAIT(500)
VAR after = UO.PetsMax()
VAR difference = after - before
UO.Print('Counter change: ' + CStr(difference))
END SUBРазбор параметров и выполнения:
- WAIT(500) разделяет before и after на 500 миллисекунд. difference может быть положительной, нулевой или отрицательной; промежуточные обновления и смена персонажа могут быть пропущены. Пауза относится к примеру.
# Полная вспомогательная функция
#
# Читает счётчик статуса своего персонажа: максимум слотов управления питомцами.
#
# Integer — максимум слотов управления питомцами, 0..255 в модели клиента. 0 может быть реальным
# значением, отсутствием данных либо отсутствующим/уничтоженным Player. Это количество, не
# Boolean, ID или type: 1 означает одну единицу, а не успех. Команда не перебирает объекты и не
# возвращает массив.
SUB Main()
# CanAddFollower(extraSlots) получает требуемые слоты; 2 — пример для одного существа с двумя
# слотами, не обязательно двух существ. Отвергает отрицательное число, отсутствие Player или
# maximum <= 0, читает занятые слоты/предел и возвращает Integer Boolean: 1=TRUE либо 0=FALSE по
# extraSlots <= maximum - current. Нет переполнения сложения; превышение предела даёт false даже
# для нуля. Не проверяет владельца, навык приручения или разрешение сервера. Между чтениями
# возможны обновления.
IF CanAddFollower(2) = TRUE THEN
UO.Print('Local check passed')
ELSE
UO.Print('Local check failed or data unavailable')
END IF
END SUB
SUB CanAddFollower(extraSlots)
IF extraSlots < 0 OR UO.Self() = 0 THEN
RETURN FALSE
END IF
VAR current = UO.PetsCurrent()
VAR maximum = UO.PetsMax()
IF maximum <= 0 THEN
RETURN FALSE
END IF
RETURN extraSlots <= maximum - current
END SUBРазбор параметров и выполнения:
- CanAddFollower(extraSlots) получает требуемые слоты; 2 — пример для одного существа с двумя слотами, не обязательно двух существ. Отвергает отрицательное число, отсутствие Player или maximum <= 0, читает занятые слоты/предел и возвращает Integer Boolean: 1=TRUE либо 0=FALSE по extraSlots <= maximum - current. Нет переполнения сложения; превышение предела даёт false даже для нуля. Не проверяет владельца, навык приручения или разрешение сервера. Между чтениями возможны обновления.
ClassicUO - Bad Newbie & Basic IDE Edition