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

UO.UpdateFigure

ClassicUO / Basic IDE

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

Replaces the stored geometry/style/text for an existing figure and the next World Map render uses the updated values.

Синтаксис

UO.UpdateFigure(FigureID:Any, figure:Any) -> Any

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

Параметры

Имя Назначение
FigureID Позиционный аргумент этой перегрузки. Подробности использования указаны в описании/фактической ветви runtime ниже.
figure Позиционный аргумент этой перегрузки. Подробности использования указаны в описании/фактической ветви runtime ниже.

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

Ограничения

The same local-only and brush-rendering limitations as AddFigure apply. Unknown IDs are not created implicitly; use AddFigure to allocate a new ID.

Примеры

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

Пример 1

SUB Main()
    DIM fig(11)
    fig[0] = 4
    fig[1] = 0
    fig[2] = UO.GetX(self)
    fig[3] = UO.GetY(self)
    fig[4] = 0
    fig[5] = 0
    fig[6] = 0
    fig[7] = 1
    fig[8] = 65535
    fig[9] = UO.WorldNum()
    fig[10] = 'Updated'
    IF UO.UpdateFigure(figureId, fig) = 0 THEN
        UO.Print('Figure not found')
    END IF
END SUB

Пример 2

SUB Main()
    VAR result = UO.UpdateFigure(1, 2)
    UO.Print(CStr(result))
END SUB

Пример 3

SUB Main()
    VAR arg1 = 1 # FigureID
    VAR arg2 = 2 # figure
    VAR result = UO.UpdateFigure(arg1, arg2)
    UO.Print(CStr(result))
END SUB

Пример 4

SUB ReadResult()
    VAR arg1 = 1 # FigureID
    VAR arg2 = 2 # figure
    VAR result = UO.UpdateFigure(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 обращается к клиенту. Прямые типизированные перегрузки перечислены выше и могут иметь отдельный маршрут.

{
                    int id = Arg(0);
                    if (!state.MapFigures.ContainsKey(id) || !TryMapFigureArg(1, out int[] figure, out string figureText))
                        return InjectionValue.False;
                    if (bridge.SetMapFigure(id, figure[0], figure[1], figure[2], figure[3], figure[4], figure[5], figure[6], figure[7], figure[8], figure[9], figureText) == 0)
                        return InjectionValue.False;
                    state.MapFigures[id] = SerializeMapFigure(figure, figureText);
                    return InjectionValue.True;
                }

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

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