Skip to content

API UO GetPetsCurrent uk

Codex edited this page Sep 22, 2026 · 1 revision

UO.GetPetsCurrent

ClassicUO / Basic IDE

Home · Все команды · Каталоги

Допомагає визначити, чи вистачить місця для наступної прирученої або викликаної істоти. Followers — зайняті слоти керування, FollowersMax — загальна межа. Це не кількість тварин поруч і не команда руху Follow.

Читає лічильник статусу власного персонажа: зайняті слоти керування улюбленцями.

Точний синтаксис

UO.GetPetsCurrent() -> Integer

Параметри

Параметрів немає.

Повертає

Integer — зайняті слоти керування улюбленцями, 0..255 у моделі клієнта. 0 може бути фактичним значенням, браком даних або відсутнім/знищеним Player. Це кількість, не Boolean, ID чи type: 1 означає одну одиницю, не успіх. Виклик не перебирає об’єкти й не повертає масив.

Поведінка

  • Зайнято 3 з 5 — вільно 2 слоти. Значення 4 може означати чотири істоти по одному слоту або одну на чотири. Для істоти на 2 слоти потрібно maximum - current >= 2. Ціну істоти в слотах і межу задає сервер; не підставляйте завжди 5.
  • Нуль не доводить втрату чи смерть улюбленця: статус може бути ще не оновлений. Зростання лічильника не визначає, яку істоту приручено; перевіряйте її та повідомлення сервера. Це не місця в стайні.
  • Команда не приймає аргументів. Використовуйте точні сигнатури вище.
  • Читання в ігровому потоці бере 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, не прихована нативна дія. Вона не змінює інвентар чи улюбленців.

1. RegisterCharacterGetterAliases

RegisterCharacterGetterAliases додає відсутні функції без аргументів і вбудовані імена для поля. Наявні гілки сумісності читають те саме поле bridge. Регістр не важливий; intrinsic без дужок читається заново, якщо його не перекрила змінна.

PetsCurrent Followers GetPetsCurrent GetFollowers.

Код проєкту: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функція RegisterCharacterGetterAliases.

2. Invoke

Читання в ігровому потоці бере Player.Followers, якщо поточний Player існує й не знищений; інакше 0. Спорядження не перебирається, бонуси не перераховуються, статус не запитується, очікування оновлення немає. Наявний привид не є знищеним Player.

Invoke читає на ігровому потоці; очікування можна скасувати разом зі скриптом. Не запитує status, не відкриває target, не надсилає пакета, не змінює характеристику й не додає затримки.

Код проєкту: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функція Invoke.

3. CharacterStatus

CharacterStatus перевіряє обов’язкове тіло перед оновленням. Weight є у власному розширеному статусі, слоти — з type 3, Luck — з type 4, серверний WeightMax — з type 5. Компактний/старий пакет без необов’язкового лічильника лишає попередній кеш. Новий Player починає з нулів; виклик не доводить свіжість статусу.

PetsCurrent/Followers повідомляє зайняті слоти керування з власного статусу type >= 3. Один улюбленець може займати кілька слотів; правила для викликаних і приручених істот задає сервер. Це не кількість видимих mobile, не список ID улюбленців і не число тварин поруч.

Код проєкту: src/ClassicUO.Client/Network/PacketHandlers.cs; функція CharacterStatus.

4. Clear

World.Clear прибирає Player. Далі повертається 0, доки не з’являться поточний персонаж і його дані. Збережене значення не доводить виконання вимоги після перепідключення.

Integer — зайняті слоти керування улюбленцями, 0..255 у моделі клієнта. 0 може бути фактичним значенням, браком даних або відсутнім/знищеним Player. Це кількість, не Boolean, ID чи type: 1 означає одну одиницю, не успіх. Виклик не перебирає об’єкти й не повертає масив.

Код проєкту: src/ClassicUO.Client/Game/World.cs; функція Clear.

Кожен виклик читає локальні дані заново. Змінна зберігає знімок; окремі читання можуть бачити різні оновлення сервера. Ненульовий результат не перевіряє з’єднання. Нуль буває значенням або відсутністю даних.

Приклади

Обчислити вільні слоти

# Обчислити вільні слоти
#
# Допомагає визначити, чи вистачить місця для наступної прирученої або викликаної істоти.
# Followersзайняті слоти керування, FollowersMaxзагальна межа. Це не кількість тварин
# поруч і не команда руху Follow.
#
# Читає лічильник статусу власного персонажа: зайняті слоти керування улюбленцями.
#
# Integerзайняті слоти керування улюбленцями, 0..255 у моделі клієнта. 0 може бути фактичним
# значенням, браком даних або відсутнім/знищеним Player. Це кількість, не Boolean, ID чи type: 1
# означає одну одиницю, не успіх. Виклик не перебирає об’єкти й не повертає масив.

SUB Main()
    # currentзайнято, maximumмежа, freeSlotsрізниця. Нульова межа або суперечливі дані
    # припиняють приклад. Читається останній статус без запиту оновлення.

    VAR current = UO.GetPetsCurrent()
    VAR maximum = UO.FollowersMax()
    IF UO.Self() = 0 OR maximum <= 0 OR current > maximum THEN
        UO.Print("Follower status is unavailable or inconsistent")
        RETURN
    END IF
    VAR freeSlots = maximum - current
    UO.Print("Control slots: " + CStr(current) + "/" + CStr(maximum))
    UO.Print("Free slots: " + CStr(freeSlots))
END SUB

Пояснення параметрів і виконання:

  • current — зайнято, maximum — межа, freeSlots — різниця. Нульова межа або суперечливі дані припиняють приклад. Читається останній статус без запиту оновлення.

Перевірити місце перед Animal Taming

# Перевірити місце перед Animal Taming
#
# Допомагає визначити, чи вистачить місця для наступної прирученої або викликаної істоти.
# Followersзайняті слоти керування, FollowersMaxзагальна межа. Це не кількість тварин
# поруч і не команда руху Follow.
#
# Читає лічильник статусу власного персонажа: зайняті слоти керування улюбленцями.
#
# Integerзайняті слоти керування улюбленцями, 0..255 у моделі клієнта. 0 може бути фактичним
# значенням, браком даних або відсутнім/знищеним Player. Це кількість, не Boolean, ID чи type: 1
# означає одну одиницю, не успіх. Виклик не перебирає об’єкти й не повертає масив.

SUB Main()
    # Спочатку виберіть тварину для lasttarget. requiredSlots=2 замініть її вартістю на сервері. За
    # нестачі місця навичка не запускається. Ціль готується перед UseSkill("Animal Taming") з одним
    # аргументом. Успіх залежить також від навички, відстані та сервера.

    VAR requiredSlots = 2
    VAR current = UO.GetPetsCurrent()
    VAR maximum = UO.FollowersMax()
    IF UO.Self() = 0 OR maximum <= 0 OR maximum - current < requiredSlots THEN
        UO.Print("Not enough known control slots")
        RETURN
    END IF
    VAR animal = UO.LastTarget()
    IF animal = 0 THEN
        UO.Print("Select the animal first")
        RETURN
    END IF
    UO.WaitTargetObject(animal)
    UO.UseSkill("Animal Taming")
END SUB

Пояснення параметрів і виконання:

  • Спочатку виберіть тварину для lasttarget. requiredSlots=2 замініть її вартістю на сервері. За нестачі місця навичка не запускається. Ціль готується перед UseSkill("Animal Taming") з одним аргументом. Успіх залежить також від навички, відстані та сервера.

Повторно використати перевірку

# Повторно використати перевірку
#
# Допомагає визначити, чи вистачить місця для наступної прирученої або викликаної істоти.
# Followersзайняті слоти керування, FollowersMaxзагальна межа. Це не кількість тварин
# поруч і не команда руху Follow.
#
# Читає лічильник статусу власного персонажа: зайняті слоти керування улюбленцями.
#
# Integerзайняті слоти керування улюбленцями, 0..255 у моделі клієнта. 0 може бути фактичним
# значенням, браком даних або відсутнім/знищеним Player. Це кількість, не Boolean, ID чи type: 1
# означає одну одиницю, не успіх. Виклик не перебирає об’єкти й не повертає масив.

SUB Main()
    # CanAddFollowerоголошений у прикладі помічник BASIC. extraSlotsслоти додаткової істоти,
    # не type/ID. Результат 1/True або 0/False стосується кешованого ліміту. Функція не приручає й
    # не викликає; перевіряйте знову перед дією.

    IF CanAddFollower(2) THEN
        UO.Print("Capacity check passed; verify the creature cost before acting")
    ELSE
        UO.Print("Insufficient capacity or unavailable status")
    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 — оголошений у прикладі помічник BASIC. extraSlots — слоти додаткової істоти, не type/ID. Результат 1/True або 0/False стосується кешованого ліміту. Функція не приручає й не викликає; перевіряйте знову перед дією.

Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Clone this wiki locally