-
Notifications
You must be signed in to change notification settings - Fork 0
API UO Followers
ClassicUO / Basic IDE
Home · Все команды · Каталоги
Помогает заранее решить, хватит ли персонажу места для следующего приручённого или призванного существа. Followers показывает занятые слоты управления, FollowersMax — их общий предел. Это не число животных рядом и не команда движения Follow.
Читает счётчик статуса своего персонажа: занятые слоты управления питомцами.
UO.Followers() -> Integer
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметров нет.
Integer — занятые слоты управления питомцами, 0..255 в модели клиента. 0 может быть реальным значением, отсутствием данных либо отсутствующим/уничтоженным Player. Это количество, не Boolean, ID или type: 1 означает одну единицу, а не успех. Команда не перебирает объекты и не возвращает массив.
- Например, занято 3 из 5 — свободно 2 слота. Значение 4 может означать четыре существа по одному слоту, одно на четыре либо другую комбинацию. Для существа на 2 слота проверки «занято < максимум» недостаточно: нужно maximum - current >= 2. Стоимость конкретного существа и лимит определяет сервер; не подставляйте постоянное 5 вместо FollowersMax.
- 0 не доказывает, что питомец потерян, умер или отпущен: это может быть пустой либо ещё не обновлённый статус. Увеличение счётчика — лишь дополнительный признак изменения контроля; оно не определяет, какое существо приручено. Проверяйте также сообщения сервера и самого питомца. Эти слоты не равны местам в конюшне.
- Команда не принимает аргументов. Используйте точные сигнатуры выше.
- Чтение в игровом потоке берёт 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.
Каждый вызов читает локальные данные заново. Переменная хранит снимок; отдельные чтения могут получить разные обновления сервера. Ненулевой результат не проверяет подключение. Ноль может быть значением либо отсутствием данных.
# Посчитать доступные слоты перед выходом
#
# Помогает заранее решить, хватит ли персонажу места для следующего приручённого или призванного
# существа. Followers показывает занятые слоты управления, FollowersMax — их общий предел. Это
# не число животных рядом и не команда движения Follow.
#
# Читает счётчик статуса своего персонажа: занятые слоты управления питомцами.
#
# Integer — занятые слоты управления питомцами, 0..255 в модели клиента. 0 может быть реальным
# значением, отсутствием данных либо отсутствующим/уничтоженным Player. Это количество, не
# Boolean, ID или type: 1 означает одну единицу, а не успех. Команда не перебирает объекты и не
# возвращает массив.
SUB Main()
# current — занято, maximum — предел, freeSlots — разница. При неизвестном/нулевом пределе или
# противоречивых данных пример прекращается, не утверждая, что место свободно. Команда только
# читает последний статус, не запрашивает новое обновление.
VAR current = UO.Followers()
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
#
# Помогает заранее решить, хватит ли персонажу места для следующего приручённого или призванного
# существа. Followers показывает занятые слоты управления, FollowersMax — их общий предел. Это
# не число животных рядом и не команда движения Follow.
#
# Читает счётчик статуса своего персонажа: занятые слоты управления питомцами.
#
# Integer — занятые слоты управления питомцами, 0..255 в модели клиента. 0 может быть реальным
# значением, отсутствием данных либо отсутствующим/уничтоженным Player. Это количество, не
# Boolean, ID или type: 1 означает одну единицу, а не успех. Команда не перебирает объекты и не
# возвращает массив.
SUB Main()
# Сначала выберите нужное животное, чтобы его ID был в lasttarget. requiredSlots=2 — настройка
# примера, замените её реальной стоимостью этого существа на вашем сервере. При нехватке места
# не ставится target и не вызывается навык. Иначе очередь цели готовится ДО единственного
# аргумента UseSkill("Animal Taming"). Начало попытки не гарантирует успеха: важны навык,
# дальность, приручаемость и ответ сервера.
VAR requiredSlots = 2
VAR current = UO.Followers()
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Разбор параметров и выполнения:
- Сначала выберите нужное животное, чтобы его ID был в lasttarget. requiredSlots=2 — настройка примера, замените её реальной стоимостью этого существа на вашем сервере. При нехватке места не ставится target и не вызывается навык. Иначе очередь цели готовится ДО единственного аргумента UseSkill("Animal Taming"). Начало попытки не гарантирует успеха: важны навык, дальность, приручаемость и ответ сервера.
# Переиспользовать проверку для существ разной стоимости
#
# Помогает заранее решить, хватит ли персонажу места для следующего приручённого или призванного
# существа. Followers показывает занятые слоты управления, FollowersMax — их общий предел. Это
# не число животных рядом и не команда движения Follow.
#
# Читает счётчик статуса своего персонажа: занятые слоты управления питомцами.
#
# Integer — занятые слоты управления питомцами, 0..255 в модели клиента. 0 может быть реальным
# значением, отсутствием данных либо отсутствующим/уничтоженным Player. Это количество, не
# Boolean, ID или type: 1 означает одну единицу, а не успех. Команда не перебирает объекты и не
# возвращает массив.
SUB Main()
# CanAddFollower — полностью объявленный пользовательский помощник, не новая UO-команда. Он
# возвращает 1/True при достаточном кэшированном лимите, иначе 0/False. Параметр extraSlots —
# стоимость ДОБАВЛЯЕМОГО существа, не его type/ID. 2 — пример; функция не приручает и не
# призывает. Проверку следует повторить непосредственно перед действием.
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.Followers()
VAR maximum = UO.PetsMax()
IF maximum <= 0 THEN
RETURN FALSE
END IF
RETURN extraSlots <= maximum - current
END SUBРазбор параметров и выполнения:
- CanAddFollower — полностью объявленный пользовательский помощник, не новая UO-команда. Он возвращает 1/True при достаточном кэшированном лимите, иначе 0/False. Параметр extraSlots — стоимость ДОБАВЛЯЕМОГО существа, не его type/ID. 2 — пример; функция не приручает и не призывает. Проверку следует повторить непосредственно перед действием.
Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь