API UO Target - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

UO.Target

ClassicUO / Basic IDE

Оглавление · Алфавитный указатель · Targeting

Разные перегрузки выполняют разные операции. Target() отменяет текущий/подготовленный target. Target(object) ставит объект в очередь, как WaitTargetObject. Target(targetKey,target) отправляет протокольный ответ с явным идентификатором прицела; target может быть serial, именованным объектом или строкой 'lasttile'. Семь аргументов задают targetKey, объект, targetType, graphic/type, x,y,z; targetType=0 — объект, 1 — клетка. Для обычного скрипта предпочтительны WaitTargetObject/WaitTargetTile: targetKey для низкоуровневой формы должен соответствовать серверному запросу.

Синтаксис

UO.Target() -> Unit
UO.Target(object:Any) -> Unit
UO.Target(targetKey:Any, target:Any) -> Unit
UO.Target(targetKey:Any, target:Any, targetType:Any, type:Any, x:Any, y:Any, z:Any) -> Unit

Регистр имени не важен. Any — динамическое значение Basic; Unit — отсутствие возвращаемого значения. Integer — знаковое 32-битное число, Decimal — число с плавающей точкой. Правила типов, serial, индексов и ожиданий.

Параметры

Имя Назначение
object Serial или имя загруженного объекта.
targetKey Идентификатор серверного запроса target. Это не serial выбранного объекта.
target Serial/именованный объект; в двухаргументной форме допустим lasttile.
targetType Тип протокольной цели: 0 — объект, 1 — клетка.
type Graphic ID, 0–65535.
x X игровой клетки.
y Y игровой клетки.
z Высота -128…127.

Параметры обязательны внутри каждой показанной сигнатуры. Опустить аргумент можно только при наличии более короткой перегрузки; пропуск позиции посередине не подразумевается.

Возвращает: Unit — значения нет. Выполняйте вызов отдельной строкой; его нельзя использовать как проверку успеха. Эффект и ограничения зависят от команды.

Примеры

Каждый блок — самостоятельный скрипт из мануала проекта. Параметры демонстрационного объекта/контейнера и условия действия необходимо сопоставить с вашей игровой ситуацией.

Пример 1

SUB Main()
    UO.Target()
END SUB

Пример 2

SUB Main()
    UO.Target(self)
END SUB

Пример 3

SUB Main()
    IF UO.WaitForTarget(3000) THEN
        UO.Target(UO.TargetID(), self)
    END IF
END SUB

Пример 4

SUB Main()
    VAR arg1 = 1 # targetKey
    VAR arg2 = self # target
    VAR arg3 = 3 # targetType
    VAR arg4 = 0x0EED # type
    VAR arg5 = UO.GetX() # x
    VAR arg6 = UO.GetY() # y
    VAR arg7 = UO.GetZ() # z
    UO.Target(arg1, arg2, arg3, arg4, arg5, arg6, arg7)
END SUB

Пример 5

SUB Main()
    UO.Target(self)
END SUB

Пример 6

SUB Main()
    UO.Target(1, self)
END SUB

Пример 7

SUB Main()
    IF UO.Connected THEN
        UO.Target()
    END IF
END SUB

Пример 8

SUB RunAction()
    UO.Target()
END SUB

SUB Main()
    # Запуск процедуры выполняет действие:
    RunAction()
END SUB
Реализация и проверка контракта
  • InjectionScript.Runtime.InjectionApiUO+<>c__DisplayClass62_0.<RegisterLegacyManualAliases>b__1
  • InjectionScript.Runtime.InjectionApiUO.Target

Соответствующая ветвь совместимого обработчика в InjectionApiUO.cs. Arg(i)/Text(i) читают позицию с нуля; bridge обращается к клиенту. Прямые типизированные перегрузки перечислены выше и могут иметь отдельный маршрут.

if (arguments.Length > 0) WaitTargetObject(arguments[0].ToString());
                    else CancelTarget();
                    break;

Источник реестра и отчёт сверки. Примеры проверяются загрузчиком/парсером включённого runtime. Действия на игровом сервере этой проверкой не исполняются.

⚠️ **GitHub.com Fallback** ⚠️