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