API Basic ApiNames - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

Basic / UO.

ClassicUO • Basic

Игровые команды вызываются через UO.; конструкции Basic, встроенные и собственные функции — по их объявленным именам.

Точный синтаксис

UO.command(arguments)
BasicFunction(arguments)
UserFunction(arguments)

Параметры

  • UO.command — UO.command(arguments): обязательный префикс игрового API. UO.GetType(id) читает графику/тело, а не тип Basic или CLR.
  • BasicFunction — BasicFunction(arguments): например Int(value), Str(value), CInt(value). Добавлять UO. к функции Basic не нужно.
  • arguments — Аргументы объектов, фильтров и слоёв self, backpack, ground, Rhand сохраняют смысл. Имя в аргументе не является коротким вызовом игровой команды.

Возвращает

Правило именования ничего не возвращает. Результат определяет вызванная функция: Int — Integer, Str — String; три проверки Api*Exists возвращают Integer 1/0, которые можно использовать как TRUE/FALSE.

Поведение

  • Регистр имён не важен. InjectionApi регистрирует библиотеку Basic без префикса, InjectionApiUO — игровые вызовы с UO. При старом коротком вызове анализатор выдаёт SC005 и подсказывает зарегистрированную замену UO.; скрытого выполнения старого вызова нет. Значения характеристик персонажа тоже требуют UO. ApiNameExists, ApiSignatureExists и ApiParameterExists убирают пробелы по краям и проверяют точное зарегистрированное имя, не дописывая префикс. Это проверка метаданных, не состояния сервера. Оператор рефлексии VB.NET GetType(TypeName) в движке не реализован.

Примеры

1. 1

# graphic читает тело текущего персонажа, либо 0 при отсутствии данных; whole=Int(2.9) даёт 2. registered проверяет регистрацию UO.GetType с одним аргументом. Main возвращает "2:1" независимо от графики персонажа. Движение и перенос предметов не выполняются.
Option Explicit On
Sub Main()
    Var graphic = UO.GetType('self')
    Var whole = Int(2.9)
    Var registered = UO.ApiSignatureExists('UO.GetType', 1)
    Return CStr(whole) + ":" + CStr(registered)
End Sub

Разбор параметров и выполнения:

graphic читает тело текущего персонажа, либо 0 при отсутствии данных; whole=Int(2.9) даёт 2. registered проверяет регистрацию UO.GetType с одним аргументом. Main возвращает "2:1" независимо от графики персонажа. Движение и перенос предметов не выполняются.

2. 2

# Полностью показанная пользовательская Function GetType получает value=6 из CInt(6) и возвращает 7. UO.GetType по-прежнему читает игровую графику. Своя функция без префикса и игровая команда с префиксом не перехватывают вызовы друг друга.
Option Explicit On
Function GetType(value)
    Return value + 1
End Function
Sub Main()
    Var localResult = GetType(CInt(6))
    Var graphic = UO.GetType('self')
    Return localResult
End Sub

Разбор параметров и выполнения:

Полностью показанная пользовательская Function GetType получает value=6 из CInt(6) и возвращает 7. UO.GetType по-прежнему читает игровую графику. Своя функция без префикса и игровая команда с префиксом не перехватывают вызовы друг друга.

3. 3

# oldCall=0: GetType не зарегистрирован как нативный вызов. gameCall=1 и basicCall=1 подтверждают UO.GetType(id) и Int(value). argumentName=1 показывает, что backpack остаётся селектором аргумента. Main возвращает "0:1:1:1". Эти проверки не ищут пользовательские процедуры.
Option Explicit On
Sub Main()
    Var oldCall = UO.ApiSignatureExists('GetType', 1)
    Var gameCall = UO.ApiSignatureExists('UO.GetType', 1)
    Var basicCall = UO.ApiSignatureExists('Int', 1)
    Var argumentName = UO.ApiParameterExists('backpack')
    Return CStr(oldCall) + ":" + CStr(gameCall) + ":" + CStr(basicCall) + ":" + CStr(argumentName)
End Sub

Разбор параметров и выполнения:

oldCall=0: GetType не зарегистрирован как нативный вызов. gameCall=1 и basicCall=1 подтверждают UO.GetType(id) и Int(value). argumentName=1 показывает, что backpack остаётся селектором аргумента. Main возвращает "0:1:1:1". Эти проверки не ищут пользовательские процедуры.


en · ru · uk · fr · de · it · es · zh-tw · ja · ko

Basic