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

UO.CastToObject

ClassicUO / Basic IDE

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

Queues/sets the object target and submits the spell through the ClassicUO cast bridge. The target wait is cancelled when the cast request itself is rejected so a failed CastToObject does not leave a stale target trap behind.

Синтаксис

UO.CastToObject(SpellName:Any, ObjID:Any) -> Any

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

Параметры

Имя Назначение
SpellName Значение для данной позиции; назначение и поддерживаемые варианты показаны в описании и примерах.
ObjID target object/mobile serial.

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

Ограничения

Invalid/rejected spell requests return False. A True result means the client accepted/sent the cast request; it does not guarantee that the server completed the spell. Mana, reagents, skill checks, range, line-of-sight, server rules, interruption and target validity can still make the spell fail afterward. Confirm server completion through journal/state when the script depends on it.

Примеры

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

Пример 1

SUB Main()
    IF UO.CastToObject('Greater Heal', self) THEN
        UO.Print('Cast request accepted')
    ELSE
        UO.Print('Cast request rejected')
    END IF
END SUB

Пример 2

SUB Main()
    VAR result = UO.CastToObject('Heal', 2)
    UO.Print(CStr(result))
END SUB

Пример 3

SUB Main()
    VAR arg1 = 'Heal' # SpellName
    VAR arg2 = 2 # ObjID
    VAR result = UO.CastToObject(arg1, arg2)
    UO.Print(CStr(result))
END SUB

Пример 4

SUB ReadResult()
    VAR arg1 = 'Heal' # SpellName
    VAR arg2 = 2 # ObjID
    VAR result = UO.CastToObject(arg1, arg2)
    UO.Print(CStr(result))
END SUB

SUB Main()
    ReadResult()
END SUB
Реализация и проверка контракта
  • InjectionScript.Runtime.InjectionApiUO+<>c__DisplayClass38_0.<RegisterStealthCompatibility>b__0

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

if (arguments[0].Kind == InjectionValueKind.String)
                        return Cast(arguments[0], arguments[1]) != 0 ? InjectionValue.True : InjectionValue.False;

                    WaitTargetObject(Arg(1));
                    int castAccepted = bridge.Cast(Arg(0));
                    if (castAccepted != 0)
                    {
                        ticksSpell = Timer();
                        return InjectionValue.True;
                    }

                    bridge.CancelTarget();
                    return InjectionValue.False;

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

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