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

UO.LOSOptions

ClassicUO / Basic IDE

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

LOSOptions is no longer a state-only setting. UO.CheckLOS(...) consumes the current value on every check. The Basic implementation evaluates the currently loaded ClassicUO map, land, static, multi and world-item tile data. Walls and impassable tiles block LOS; RunUO mode also respects NoShoot; POL can opt into NoShoot and window-through behavior with the flags above.

The optional 0x100 flag adds corner validation: on a diagonal ray step both adjacent cardinal cells must remain clear.

Синтаксис

UO.LOSOptions() -> Any
UO.LOSOptions(value:Any) -> Any

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

Параметры

Имя Назначение
value Значение для данной позиции; назначение и поддерживаемые варианты показаны в описании и примерах.

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

Ограничения

This is a Basic / ClassicUO adaptation of the historical Stealth LOS options, not a byte-for-byte reimplementation of the external Stealth Sphere/RunUO/POL engines. Checks are limited to the currently loaded ClassicUO map/facet. If value contains an unknown algorithm number in the low byte, the ClassicUO implementation falls back to RunUO-style handling.

LOSOptions(0) disables the additional tile-option pass and leaves CheckLOS using the portable movement/world-step visibility path.

Примеры

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

Пример 1

SUB Main()
    # RunUO-style LOS
    UO.LOSOptions(3)
    VAR visible = UO.CheckLOS(UO.GetX('self'), UO.GetY('self'), UO.GetZ('self'), 1500, 1600, 0, UO.WorldNum())
    UO.Print(visible)
END SUB

Пример 2

SUB Main()
    # POL + NoShoot + allow windows
    UO.LOSOptions(4 + 512 + 1024)
END SUB

Пример 3

SUB Main()
    # Sphere-compatible selection + diagonal corner validation
    UO.LOSOptions(1 + 256)
END SUB

Пример 4

SUB Main()
    VAR result = UO.LOSOptions()
    UO.Print(CStr(result))
END SUB

Пример 5

SUB Main()
    VAR arg1 = 1 # value
    VAR result = UO.LOSOptions(arg1)
    UO.Print(CStr(result))
END SUB

Пример 6

SUB Main()
    VAR result = UO.LOSOptions()
    UO.Print(CStr(result))
END SUB

Пример 7

SUB ReadResult()
    VAR result = UO.LOSOptions()
    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.Length > 0) state.LosOptions = Arg(0); return new InjectionValue(state.LosOptions);

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

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