-
Notifications
You must be signed in to change notification settings - Fork 0
API UO GetPetsCurrent
Оглавление · Алфавитный указатель · Mobiles
ClassicUO • Runtime API
Читает счётчик статуса своего персонажа: занятые слоты управления питомцами.
UO.GetPetsCurrent() -> Integer
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметров нет.
Integer — занятые слоты управления питомцами, 0..255 в модели клиента. 0 может быть реальным значением, отсутствием данных либо отсутствующим/уничтоженным Player. Это количество, не Boolean, ID или type: 1 означает одну единицу, а не успех. Команда не перебирает объекты и не возвращает массив.
- Команда не принимает аргументов. Используйте точные сигнатуры выше.
- Чтение в игровом потоке берёт Player.Followers, если текущий Player существует и не уничтожен; иначе 0. Экипировка не перебирается, бонусы не пересчитываются, статус не запрашивается, ожидания обновления нет. Присутствующий призрак не равен уничтоженному Player.
- PetsCurrent/Followers сообщает занятые слоты управления из своего статуса type >= 3. Один питомец может занимать несколько слотов; правила для призванных и приручённых существ задаёт сервер. Это не число видимых mobile, не список ID питомцев и не число животных рядом.
- CharacterStatus проверяет обязательное тело до обновления. Weight есть в собственном расширенном статусе, слоты — с type 3, Luck — с type 4, серверный WeightMax — с type 5. Компактный/старый пакет без необязательного счётчика оставляет его предыдущий кэш. Новый Player начинает с нулей; вызов не доказывает получение свежего статуса.
- RegisterCharacterGetterAliases добавляет отсутствующие функции без аргументов и встроенные имена для поля. Существующие ветки совместимости читают то же поле bridge. Регистр имени не важен; intrinsic без скобок читается заново, если его не перекрыла переменная.
- Каждый вызов читает локальные данные заново. Переменная хранит снимок; отдельные чтения могут получить разные обновления сервера. Ненулевой результат не проверяет подключение. Ноль может быть значением либо отсутствием данных.
Внутренние этапы чтения кэшированного счётчика. Полностью объявленная функция CanCarry, LuckAtLeast либо CanAddFollower в примере — пользовательский BASIC, а не скрытое нативное действие. Она не меняет инвентарь или питомцев.
RegisterCharacterGetterAliases добавляет отсутствующие функции без аргументов и встроенные имена для поля. Существующие ветки совместимости читают то же поле bridge. Регистр имени не важен; intrinsic без скобок читается заново, если его не перекрыла переменная.
PetsCurrent Followers GetPetsCurrent GetFollowers.
Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция RegisterCharacterGetterAliases.
Чтение в игровом потоке берёт Player.Followers, если текущий 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 начинает с нулей; вызов не доказывает получение свежего статуса.
PetsCurrent/Followers сообщает занятые слоты управления из своего статуса type >= 3. Один питомец может занимать несколько слотов; правила для призванных и приручённых существ задаёт сервер. Это не число видимых mobile, не список ID питомцев и не число животных рядом.
Исходник проекта: 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.GetPetsCurrent()
UO.Print('Followers: ' + 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.GetPetsCurrent()
WAIT(500)
VAR after = UO.GetPetsCurrent()
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.GetPetsCurrent()
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