Skip to content

KO UO Topic client ui

Codex edited this page Oct 11, 2026 · 3 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

클라이언트 UI

홈 · C# · IDE · UO API · A–Z · 예 · 언어

메시지, 서비스 창, 개체 표시 및 열기 IDE를 표시합니다. 이 단계는 서버에 음성을 보내는 것을 대체하지 않습니다.

섹션

주제 명령 및 설명
Print UO.Print
ClientPrint UO.ClientPrint
Info Window UO.FillInfoWindow · UO.ClearInfoWindow · UO.FillNewWindow
Text Window UO.TextOpen · UO.TextPrint · UO.TextClear · UO.TextClose
단순검프 UO.CloseSimpleGump
Close UI Window UO.CloseClientUIWindow
Circle Transparency UO.CircleTrans
Show Z UO.SetShowZ
Open IDE UO.OpenIDE

모든 테마 명령

메시지

UO.Print · UO.ClientPrint · UO.ClientPrintEx · UO.CharPrint · UO.ColorPrint · UO.ConsolePrint · UO.ServerPrint · UO.SetSilentMode · UO.ConColor · UO.FontColor

윈도우

UO.ClearInfoWindow · UO.FillInfoWindow · UO.FillNewWindow · UO.TextOpen · UO.TextClear · UO.TextClose · UO.TextPrint · UO.CloseSimpleGump · UO.CloseClientUIWindow · UO.ShowJournal · UO.OpenIDE · UO.HelpRequest · UO.ActivateHandle · UO.CloseHandle · UO.Snap

객체 표시

UO.Hide · UO.ClientHide · UO.ClientMarkChar · UO.CircleTrans · UO.SetShowZ · UO.Morph

피규어

UO.AddFigure · UO.UpdateFigure · UO.RemoveFigure · UO.ClearFigures

주제에 대한 예

각 명령 카드에는 직접 코드, 함수 및 클래스 등 여러 가지 독립적인 시나리오가 있습니다. 다음은 선택된 짧은 시나리오입니다. 제한사항과 전체 분석이 카드에 포함되어 있습니다.

UO.Print

매개변수, 결과 및 모든 시나리오

var processed = 12;
UO.Print("Processed item entries: " + Convert.ToString(processed), 0x0044);

UO.FillInfoWindow

매개변수, 결과 및 모든 시나리오

UO.FillInfoWindow("Status ready");

전체 명령 참조


UO.ActivateHandle

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.ActivateHandle();

Windows/SDL에 현재 클라이언트 창을 앞으로 가져오도록 요청합니다. 논쟁이나 결과가 없습니다. 이는 아이템, 스킬 또는 대상 애플리케이션이 아닌 창 명령입니다. 실제 초점은 창 시스템에 따라 다릅니다.

매개변수

매개변수가 없습니다.

반환값

void. 호출은 창 활성화만을 요청합니다. 윈도우 시스템이 그것을 포그라운드로 가져온 것을 인정하지 않습니다.

동작

  • 클라이언트는 SDL를 통해 게임 보기 창을 올립니다. 이 명령은 게임 패킷을 보내거나 월드에서 작업을 수행하지 않습니다. 최소화된 창이나 창 시스템의 제한으로 인해 실제 초점이 맞지 않을 수 있습니다.
  • RequireGameView에는 Client.Game이 필요합니다. ClassicUO 그래픽 창이 열려 있지 않으면 브리지는 InvalidOperationException을 발생시킵니다. SDL_RaiseWindow는 기존 창을 올리도록 요청합니다. 초점에 대한 결정은 윈도우 시스템에 달려 있습니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.ActivateHandle");
UO.ActivateHandle();

1. 클라이언트 창을 전경으로 가져오도록 요청합니다. - 직접 스크립트

매개변수와 실행 흐름:

  • 클라이언트 창을 전경으로 가져오도록 요청합니다.
UO.ActivateHandle();

2. 게임에 연결하기 전에 창 포커스를 요청하지 마세요. - 스크립트 기능

매개변수와 실행 흐름:

  • 게임에 연결하기 전에 창 포커스를 요청하지 마세요.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.Connected()))
    {
        UO.ActivateHandle();
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 창 작업을 재사용 가능한 프로시저로 래핑합니다. - 스크립트 클래스

매개변수와 실행 흐름:

  • 창 작업을 재사용 가능한 프로시저로 래핑합니다.
  • 보조 프로시저를 통해 요청을 실행합니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        RunAction();
        return null;
    }

    void RunAction()
    {
        UO.ActivateHandle();
    }
}

UO.AddFigure

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

dynamic UO.AddFigure(object? arg0);

ClassicUO 세계 지도에 지역 그림을 추가하고 해당 ID를 반환합니다. 수치는 클라이언트 측에 저장되며 게임 서버에는 통보되지 않습니다.

매개변수

반환값

int는 추가된 수치의 양수 ID입니다. 0 도형 데이터가 올바르지 않거나 카드가 추가를 거부하면 반환됩니다. 수신된 ID를 UO.UpdateFigure 또는 UO.RemoveFigure로 전송합니다.

동작

  • WorldMapGump에 대한 로컬 그림을 생성합니다. 선, 타원, 직사각형, 방향 화살표 및 텍스트가 지원됩니다. fcWorld 좌표는 지도 변환 및 축척을 따릅니다. fcScreen는 지도 창을 기준으로 측정됩니다. 선택한 면의 모양이 표시됩니다.

배열 형식: [kind, coord, x1, y1, x2, y2, brushColor, brushStyle, color, worldNum, text]. kind: 0 선, 1 타원, 2 직사각형, 3 방향 화살표, 4 텍스트. coord: 0 world, 1 화면. color는 Delphi TColor(0x00BBGGRR) 바이트 순서를 사용합니다. 세계 좌표와 x2=0,y2=0가 있는 화살표의 경우 시작점은 현재 문자입니다. 호환성을 위해 기존 brushColor 및 brushStyle가 채택되었습니다. 시각적 음영은 Delphi와의 완전한 일치를 보장하지 않습니다.

그림은 삭제/제거되거나 프로세스가 종료될 때까지 클라이언트 컬렉션에 남아 있습니다. 패싯을 변경하면 다른 패싯에 속한 수치만 숨겨집니다.

  • 최소 9 필드가 허용됩니다. worldNum가 없으면 현재 카드가 사용됩니다. 텍스트가 없으면 빈 문자열이 사용됩니다. 종류는 0..4, coord - 0..1로 제한됩니다. 다른 의미는 0을 제공합니다. 음수 worldNum는 모든 패싯에 표시할 수 있습니다. ID 카운터는 SetYokoMapFigure가 확인되기 전에 증가하므로 거부된 부분이 ID에 공백을 남길 수 있습니다. 수집 WorldMapGump 정적 진행 중; 한 관리자의 일반 스크립트는 공통 영구 런타임 상태를 사용합니다.
  • brushColor 및 brushStyle는 항목에 저장되지만 현재 렌더러에서는 이를 사용하지 않습니다. 선과 직사각형은 윤곽선으로 그려집니다. 타원은 32 세그먼트로 구성됩니다. 텍스트 서명은 kind=4;에 대해서만 그려집니다. 다른 종류는 출력하지 않습니다. 색상은 COLORREF 0x00BBGGRR 형식으로 윤곽선을 지정합니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

한 번의 호출 결과를 저널에 표시합니다. 숫자를 bool로 변환하지 않으며, 배열이면 요소 수를 표시합니다.

object? result = UO.AddFigure(new object?[] { 0, 0, UO.X(), UO.Y(), UO.X() + 3, UO.Y(), 0, 0, 255 });
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. 게임 맵의 빨간색 직사각형 윤곽선 - 직접 스크립트

매개변수와 실행 흐름:

  • kind=2 빨간색 윤곽선을 그립니다. 값이 Area인 텍스트 필드가 저장되지만 이 종류의 경우 레이블이 그려지지 않습니다. 텍스트는 kind=4를 출력합니다.
dynamic[] fig = new dynamic[checked((int)(11) + 1)];
fig[0] = 2;
fig[1] = 0;
fig[2] = UO.GetX("self")-3;
fig[3] = UO.GetY("self")-3;
fig[4] = UO.GetX("self")+3;
fig[5] = UO.GetY("self")+3;
fig[6] = 0;
fig[7] = 1;
fig[8] = 255;
fig[9] = UO.WorldNum();
fig[10] = "Area";
var figureId = UO.AddFigure(fig);

2. 캐릭터에서 게임 맵의 한 지점으로의 화살표 - 스크립트 기능

매개변수와 실행 흐름:

  • world 좌표 및 x2=0,y2=0를 사용하면 화살표의 원점은 그릴 때 캐릭터의 위치에서 가져옵니다. kind=3에 대해 East 값이 있는 텍스트는 출력되지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    dynamic[] dirFig = new dynamic[checked((int)(11) + 1)];
    dirFig[0] = 3;
    dirFig[1] = 0;
    dirFig[2] = UO.GetX("self") + 10;
    dirFig[3] = UO.GetY("self");
    dirFig[4] = 0;
    dirFig[5] = 0;
    dirFig[6] = 0;
    dirFig[7] = 1;
    dirFig[8] = 65280;
    dirFig[9] = UO.WorldNum();
    dirFig[10] = "East";
    var arrowId = UO.AddFigure(dirFig);
    return null;
}

3. 현재 패싯의 두 점 사이에 파란색 선을 만듭니다. - 스크립트 클래스

매개변수와 실행 흐름:

  • 현재 패싯의 두 점 사이에 파란색 선을 만듭니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        dynamic[] lineFig = new dynamic[checked((int)(11) + 1)];
        lineFig[0] = 0;
        lineFig[1] = 0;
        lineFig[2] = UO.GetX("self");
        lineFig[3] = UO.GetY("self");
        lineFig[4] = UO.GetX("self") + 8;
        lineFig[5] = UO.GetY("self");
        lineFig[6] = 0;
        lineFig[7] = 1;
        lineFig[8] = 16711680;
        lineFig[9] = UO.WorldNum();
        lineFig[10] = "";
        var lineId = UO.AddFigure(lineFig);
        return null;
    }
}

UO.CharPrint

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.CharPrint(object? arg0, object? arg1);
void UO.CharPrint(object? arg0, object? arg1, object? arg2);

로드된 개체 위에 사용자에게만 표시되는 비문(예: 선택한 대상의 표시 또는 캐릭터 위의 경고)을 만듭니다. 이것은 캐릭터의 말이나 게임창 하단의 메시지가 아닙니다.

매개변수

  • id는 graphic/type 또는 좌표가 아닌 객체의 일련번호입니다. 3인수 형식의 UO.CharPrint은 self, lasttarget 및 저장된 개체 이름도 이해합니다. UO.ClientPrintEx의 SenderID에는 UO.Hex2Int(UO.GetSerial("self")와 같은 숫자를 사용하세요. 문자열 별칭은 개체로 확인되지 않습니다.
  • color는 UO hue이고, RGB는 아닙니다. 숫자의 최하위 16 비트가 사용됩니다. 0x0044는 예시입니다. -1은 "모든 색상"을 의미하는 것이 아니라 0xFFFF이 됩니다. 여기서는 ConColor 색상이 사용되지 않습니다.

반환값

반환 유형이 void인 메서드에 대한 호출은 독립 실행형 문 C#로 작성됩니다. 결과를 할당하거나 확인할 수 없습니다. 명세서를 작성한다고 해서 게임 서버의 확인이 이루어지는 것은 아닙니다.

동작

  • 개체는 로드된 세계에 존재해야 하며 삭제되어서는 안 됩니다. 빈 텍스트나 누락된 대상은 그려지지 않습니다. 이 명령은 서버에서 개체를 다운로드하지 않습니다. 서버와 다른 플레이어는 이 메시지를 받지 않습니다. 게임 창이 없으면 세계에서 비문을 볼 수 없습니다. 이는 관리자의 syslog를 대체하지 않습니다.
  • UO.CharPrint(color, msg)는 자신의 캐릭터를 선택합니다. UO.CharPrint(id, color, msg)는 지정된 개체를 선택합니다. 두 형식 모두 3 글꼴을 사용합니다. UO.ClientPrintEx에는 SenderID, Color, Font, Text 순서로 네 가지 인수가 모두 필요합니다.
  • 글꼴 번호는 포인트 크기나 Windows 글꼴 이름이 아닌 UO입니다. 숫자는 0..255 범위로 제한됩니다. 특정 글꼴의 사용 가능 여부는 게임 파일에 따라 다릅니다. 예에서 3는 일반 글꼴 번호입니다.
  • GetSerial는 16진수 문자열을 반환합니다. Hex2Int는 숫자 0와 비교하기 전에 int로 바꿉니다. 문자열 "0x00000000"은 숫자 0로 확인할 수 없습니다.
  • UO.Print · UO.CharPrint · UO.ClientPrintEx · UO.AddToSystemJournalEx

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.CharPrint");
UO.CharPrint(0x0044, "Ready");

1. UO.CharPrint - 1 - 직접 스크립트

매개변수와 실행 흐름:

  • 첫 번째 형식 CharPrint는 해당 문자 위에 Ready를 배치합니다. ClientPrintEx는 UO.Hex2Int(UO.GetSerial("self")를 통해 serial를 수신하고 해당 글꼴을 명시적으로 3에 전달합니다. 비문에는 게임 모드가 포함되어 있지 않습니다.
  • GetSerial는 16진수 문자열을 반환합니다. Hex2Int는 숫자 0와 비교하기 전에 int로 바꿉니다. 문자열 "0x00000000"은 숫자 0로 확인할 수 없습니다.
UO.CharPrint(0x0044, "Ready");

2. UO.CharPrint — 2 — 스크립트 기능

매개변수와 실행 흐름:

  • target — 마지막 타겟의 serial. 0은 이 예에서 태그할 사람이 없음을 의미합니다. 선택된 대상 - 로컬 서명만: 대상은 공격받지 않으며 활성 서버 대상은 채워지지 않습니다.
  • GetSerial는 16진수 문자열을 반환합니다. Hex2Int는 숫자 0와 비교하기 전에 int로 바꿉니다. 문자열 "0x00000000"은 숫자 0로 확인할 수 없습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var target = UO.Hex2Int(UO.GetSerial("lasttarget"));
    if (Truth(target != 0))
    {
        UO.CharPrint(target, 0x0044, "Selected target");
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. UO.CharPrint - 3 - 시나리오 수업

매개변수와 실행 흐름:

  • ShowWeightWarning는 아래에 전체 선언되어 있습니다. 그녀는 체중을 알려진 양의 한계와 비교하고 과부하가 걸린 경우에만 캐릭터 위에 글을 씁니다. 아무것도 버리지 않습니다. Convert.ToString는 가중치를 텍스트로 변환합니다.
  • GetSerial는 16진수 문자열을 반환합니다. Hex2Int는 숫자 0와 비교하기 전에 int로 바꿉니다. 문자열 "0x00000000"은 숫자 0로 확인할 수 없습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        ShowWeightWarning(UO.Weight(), UO.MaxWeight());
        return null;
    }

    void ShowWeightWarning(dynamic weight, dynamic maximum)
    {
        if (Truth(maximum > 0) && Truth(weight >= maximum))
        {
            UO.CharPrint(UO.Hex2Int(UO.GetSerial("self")), 0x0044, "Too heavy: " + Convert.ToString(weight));
        }
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

UO.CircleTrans

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

int UO.CircleTrans();
void UO.CircleTrans(object? arg0);

활성 프로필의 투명도 원 설정을 읽거나 변경합니다.

매개변수

  • enabled - int: 0 비활성화, 0이 아닌 값은 활성화됩니다. 인수가 없으면 설정은 읽기 전용입니다.

반환값

인수 없음 int 1/0; 인수가 있는 양식은 null을 반환합니다.

동작

  • 프로필 없이 읽으면 0이 표시됩니다. 프로필이 없는 항목은 오류를 인쇄합니다. 프로필이 있으면 UseCircleOfTransparency를 변경하고 프로필을 저장합니다. 이는 클라이언트의 시각적 사용자 정의입니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

한 번의 호출 결과를 저널에 표시합니다. 숫자를 bool로 변환하지 않으며, 배열이면 요소 수를 표시합니다.

var result = UO.CircleTrans();
UO.Print("CircleTrans: " + Convert.ToString(result));

1. 읽기 설정 - 직접 스크립트

매개변수와 실행 흐름:

  • 읽어도 프로필은 변경되지 않습니다.
var enabled = UO.CircleTrans();
UO.Print(Convert.ToString(enabled));

2. 투명도 활성화 - 스크립트 기능

매개변수와 실행 흐름:

  • 녹음 시 투명도 원이 켜진 상태로 유지됩니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.CircleTrans(1);
    return null;
}

3. 이전 값 복원 - 스크립트 클래스

매개변수와 실행 흐름:

  • 임시 설정 변경 후 저장된 플래그가 복원됩니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var previous = UO.CircleTrans();
        UO.CircleTrans(0);
        UO.CircleTrans(previous);
        return null;
    }
}

UO.ClearFigures

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.ClearFigures();

모든 사용자 정의 지도 모양과 해당 런타임 항목을 삭제합니다.

매개변수

매개변수가 없습니다.

반환값

void - 반환 값이 없습니다.

동작

  • WorldMapGump.ClearYokoMapFigures 및 상태.MapFigures를 지웁니다. 기본 지도와 UserStatics는 변경되지 않습니다.
  • ClearYokoMapFigures는 진행 중인 WorldMapGump의 정적 수집을 지운 다음, 명령은 MapFigures의 런타임 상태를 지웁니다. 이 정리 범위는 호출 스크립트의 이름뿐만 아니라 전체 클라이언트 컬렉션에 의해 결정됩니다.
  • 일반 맞춤 지도 라벨(userMarkers.usr)은 유지됩니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.ClearFigures");
UO.ClearFigures();

1. 상태 지우기 - 직접 스크립트

매개변수와 실행 흐름:

  • 모든 사용자 정의 지도 모양과 해당 런타임 항목을 삭제합니다.
UO.ClearFigures();

2. 설정 후 지우기 - 스크립트 기능

매개변수와 실행 흐름:

  • 현재 지도에 대한 로컬 모양을 만든 다음 모든 사용자 정의 모양을 삭제합니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    dynamic[] figure = new dynamic[checked((int)(9) + 1)];
    figure[0] = 0;
    figure[1] = 0;
    figure[2] = UO.GetX();
    figure[3] = UO.GetY();
    figure[4] = figure[2] + 1;
    figure[5] = figure[3] + 1;
    figure[6] = 0;
    figure[7] = 0;
    figure[8] = 0;
    figure[9] = UO.WorldNum();
    var figureId = UO.AddFigure(figure);
    UO.ClearFigures();
    return null;
}

3. 재제거 - 스크립트 클래스

매개변수와 실행 흐름:

  • 빈 세트를 지우는 것은 허용되며 새 설정을 생성하지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.ClearFigures();
        UO.ClearFigures();
        return null;
    }
}

UO.ClearInfoWindow

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.ClearInfoWindow();

클라이언트 텍스트 창의 줄을 지웁니다.

매개변수

매개변수가 없습니다.

반환값

void - 반환 값이 없습니다.

동작

  • TextClear 버퍼를 지웁니다. 창이 열려 있으면 빈 내용으로 업데이트합니다. 창이 반드시 닫히는 것은 아닙니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.ClearInfoWindow");
UO.ClearInfoWindow();

1. 상태 지우기 - 직접 스크립트

매개변수와 실행 흐름:

  • 클라이언트 텍스트 창의 줄을 지웁니다.
UO.ClearInfoWindow();

2. 설정 후 지우기 - 스크립트 기능

매개변수와 실행 흐름:

  • 이전에 추가한 텍스트 창 줄을 지웁니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.FillInfoWindow("status");
    UO.ClearInfoWindow();
    return null;
}

3. 재제거 - 스크립트 클래스

매개변수와 실행 흐름:

  • 빈 세트를 지우는 것은 허용되며 새 설정을 생성하지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.ClearInfoWindow();
        UO.ClearInfoWindow();
        return null;
    }
}

UO.ClientHide

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

dynamic UO.ClientHide(object? arg0);

serial 로드된 아이템이나 ClassicUO 디스플레이의 기타 캐릭터(컨테이너, 종이인형, 장착된 아이템 포함)를 숨깁니다.

매개변수

  • ObjID — 로드된 특정 객체의 일련번호: int 또는 16진수/10진수 문자열. 이것은 graphic/type가 아닙니다. 저장된 이름은 GetSerial(이름)을 사용하세요. 매개변수는 필수입니다. 광경은 나타나지 않습니다.

반환값

int 1 브리지 명령을 전송한 후. 기록 결과는 객체의 존재를 확인하지 않습니다. 알 수 없는 serial 또는 self 브리지의 경우에도 실패를 출력하고 런타임은 1를 반환합니다. 이 값을 성공적인 숨기기 테스트로 사용하지 마십시오. 호환성 메타데이터에는 object?가 표시됩니다.

동작

  • 정확히 하나의 인수가 필요합니다. 마우스로 선택하려면 UO.Hide()를 사용하세요.
  • Hide(serial)는 알려진 로드된 객체에 즉시 작동합니다. graphic/type 대신 특정 스택/항목의 serial를 전달하세요. 선택한 스택은 양에 관계없이 완전히 숨겨집니다.
  • 항목은 컨테이너에 남아 있습니다. 수량, 소유자, 콘텐츠 및 서버 상태는 변경되지 않습니다. FindType/GetContent에서는 아직 찾을 수 있습니다. 숨기기는 검색 필터, 이월, 삭제, 숨기기 스킬 또는 서버 측 투명화가 아닙니다.
  • 일반 컨테이너, 거래 창 및 전리품 그리드는 숨겨진 아이템을 그리지 않으며 클릭/드래그를 허용하지 않습니다. 동일한 로드된 개체가 사용 중인 동안 창이 다시 작성되고 다시 열릴 때 플래그가 유지됩니다.
  • 장착한 아이템은 종이인형, 작은 슬롯, 캐릭터 이미지에서 사라집니다. 장착된 상태로 유지됩니다. 서버의 레이어, 갑옷 및 상태는 변경되지 않습니다. 숨겨진 가운이 더 이상 속옷과 겹치지 않습니다. 관리자의 캐릭터 이미지는 동일한 플래그를 사용하여 업데이트됩니다. 실제 장비 목록은 계속 사용 가능합니다.
  • Hide는 자신의 캐릭터, 토지, 정적을 숨기지 않습니다. 존재하지 않는 serial는 메시지를 제공합니다. 가방 자체를 숨겨도 이미 열려 있는 콘텐츠 창은 닫히지 않으며, 포함된 각 항목이 자동으로 숨겨지지도 않습니다.
  • 현재 API에는 별도의 숨기기 해제 명령이 없습니다. 숨기는 것은 로드된 객체 인스턴스에 속합니다. 클라이언트 세계에서 이를 제거하고 다시 로드하면(예: 다시 연결할 때) 플래그가 재설정됩니다. 단순히 상자를 닫거나 여는 것만으로는 아이템 반환이 보장되지 않습니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

한 번의 호출 결과를 저널에 표시합니다. 숫자를 bool로 변환하지 않으며, 배열이면 요소 수를 표시합니다.

object? result = UO.ClientHide(0x40001234);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. 알려진 ID로 항목 숨기기 - 직접 스크립트

매개변수와 실행 흐름:

  • ObjID는 type가 아닌 특정 항목입니다. 디스플레이에서 사라지고 컨테이너에 남아 있습니다.
var item = 0x40001234;
if (Truth(UO.Exists(item)))
{
    UO.ClientHide(item);
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. 발견된 스택 숨기기 - 스크립트 기능

매개변수와 실행 흐름:

  • FindType는 backpack에서 원하는 색상의 graphic 0x0EED를 검색합니다. 반환된 serial는 ClientHide로 전송됩니다. 전체 스택이 완전히 숨겨집니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var item = UO.FindType(0x0EED, -1, "backpack");
    if (Truth(item != ""))
    {
        UO.ClientHide(item);
        UO.Print("Amount is still: " + Convert.ToString(UO.GetQuantity(item)));
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 명명된 개체 사용 - 스크립트 클래스

매개변수와 실행 흐름:

  • GetSerial는 이전에 저장된 장식 이름을 확인합니다. 컨테이너를 여는 등 물품을 먼저 적재해야 합니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var item = UO.GetSerial("decoration");
        if (Truth(UO.Exists(item)) && Truth(item != UO.GetSerial("self")))
        {
            UO.ClientHide(item);
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

UO.ClientMarkChar

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.ClientMarkChar(object? arg0, object? arg1);

클라이언트 라벨 LastTarget 및/또는 LastAttack을 업데이트합니다.

매개변수

  • actionIndex - int: 1 - LastTarget; 2 - LastAttack; 3 - 둘 다. 다른 값은 오류를 인쇄합니다.
  • id — self/backpack/lasttarget/저장된 객체의 객체 일련번호 또는 지원되는 이름입니다. 숫자 문자열과 0x 문자열은 런타임에 의해 해결됩니다.

반환값

void - 반환 값이 없습니다.

동작

  • ClientMarkChar 서버 대상에 공격을 보내거나 응답하지 않고 저장된 대상을 수정합니다. 후속 명령은 새 레이블을 사용할 수 있습니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.ClientMarkChar");
UO.ClientMarkChar(1, "self");

1. 업데이트 LastTarget - 직접 스크립트

매개변수와 실행 흐름:

  • 저장된 대상은 나만의 캐릭터가 됩니다.
UO.ClientMarkChar(1,"self");

2. 두 레이블 모두 업데이트 - 스크립트 기능

매개변수와 실행 흐름:

  • 후자의 대상은 두 클라이언트 태그 모두에 사용됩니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var target = UO.LastTarget();
    if (Truth(UO.Exists(target)))
    {
        UO.ClientMarkChar(3, target);
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 잘못된 작업 - 스크립트 클래스

매개변수와 실행 흐름:

  • 0은 작업 세트의 일부가 아니며 오류 메시지가 표시됩니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.ClientMarkChar(0, "self");
        return null;
    }
}

UO.ClientPrint

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.ClientPrint(object? arg0);

스크립트 진행 또는 중지 조건에 대한 로컬 메시지를 표시합니다. 보시다시피 다른 플레이어는 아닙니다.

매개변수

반환값

반환 유형이 void인 메서드에 대한 호출은 독립 실행형 문 C#로 작성됩니다. 결과를 할당하거나 확인할 수 없습니다. 명세서를 작성한다고 해서 게임 서버의 확인이 이루어지는 것은 아닙니다.

동작

  • 메시지는 게임창 좌측하단과 로컬로그로 이동합니다. 출력 IDE에서 사본을 사용할 수 있습니다. 관리자의 일반 로그에서 스크립트 메시지 필터를 활성화하면 게임 창 없이 항목을 사용할 수 있습니다. 서버 시스템 메시지 필터는 그러한 레코드를 선택하지 않습니다. 네트워크 음성 패킷이 전송되지 않습니다. 머리 위의 비문에는 UO.CharPrint이 있습니다.
  • UO.Print는 게임 메시지 로그에 새 항목을 추가합니다. 먼저 원하는 검색 문자열/결과를 읽거나 저장한 다음 진단 메시지를 기록합니다. 빠른 루프에서는 모든 반복이 아닌 변경 사항이 발생할 때 메시지를 기록합니다.
  • 이 스크립트 런타임의 시스템 메시지 색상이 사용됩니다. 처음에는 0x0440, 변경됨 UO.ConColor. 이것은 로컬 항목입니다. 명령 이름은 서버로 보내는 것을 의미하지 않습니다.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문이며 반환 값이 없습니다(void). 메시지 내용은 호출에 직접 표시됩니다.

UO.ClientPrint("Hello from C#");

1. 간략한 보고서 - 직접 스크립트

매개변수와 실행 흐름:

  • 처리됨=12 — 이미 처리된 항목의 데모 수입니다. Convert.ToString를 문자열로 변환합니다. 이 예에서는 숫자만 보고합니다. 객체 자체를 전송하지는 않습니다.
var processed = 12;
UO.ClientPrint("Processed item entries: " + Convert.ToString(processed));

2. 과부하 경고 - 스크립트 기능

매개변수와 실행 흐름:

  • 캐릭터의 무게와 최대값을 읽어옵니다. 0/알 수 없는 최대값은 과부하로 간주되지 않습니다. 무게가 최대값보다 크면 한 줄이 인쇄되고 Main이 끝납니다. 물건은 버리지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.ClientPrint("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
        return null;
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 중량 변경만 보고 - 스크립트 클래스

매개변수와 실행 흐름:

  • Main은 가중치를 기억하고 1000 밀리초를 기다린 후 완전히 선언된 ReportWeight를 호출합니다. 보조자는 무게가 변경된 경우에만 인쇄하고 다음 점검을 위해 새 무게를 반환합니다. 그 자체로는 무한 루프를 생성하지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.ClientPrint("Weight changed: " + Convert.ToString(current));
        }

        return current;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

UO.ClientPrintEx

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.ClientPrintEx(object? arg0, object? arg1, object? arg2, object? arg3);

로드된 개체 위에 사용자에게만 표시되는 비문(예: 선택한 대상의 표시 또는 캐릭터 위의 경고)을 만듭니다. 이것은 캐릭터의 말이나 게임창 하단의 메시지가 아닙니다.

매개변수

  • SenderID는 graphic/type 또는 좌표가 아닌 객체의 일련번호입니다. 3인수 형식의 UO.CharPrint은 self, lasttarget 및 저장된 개체 이름도 이해합니다. UO.ClientPrintEx의 SenderID에는 UO.Hex2Int(UO.GetSerial("self")와 같은 숫자를 사용하세요. 문자열 별칭은 개체로 확인되지 않습니다.
  • Color는 UO hue이고, RGB는 아닙니다. 숫자의 최하위 16 비트가 사용됩니다. 0x0044는 예시입니다. -1은 "모든 색상"을 의미하는 것이 아니라 0xFFFF이 됩니다. 여기서는 ConColor 색상이 사용되지 않습니다.
  • Font — 포인트 크기나 Windows 글꼴 이름이 아닌 글꼴 번호 UO. 숫자는 0..255 범위로 제한됩니다. 특정 글꼴의 사용 가능 여부는 게임 파일에 따라 다릅니다. 예에서 3는 일반 글꼴 번호입니다.

반환값

반환 유형이 void인 메서드에 대한 호출은 독립 실행형 문 C#로 작성됩니다. 결과를 할당하거나 확인할 수 없습니다. 명세서를 작성한다고 해서 게임 서버의 확인이 이루어지는 것은 아닙니다.

동작

  • 개체는 로드된 세계에 존재해야 하며 삭제되어서는 안 됩니다. 빈 텍스트나 누락된 대상은 그려지지 않습니다. 이 명령은 서버에서 개체를 다운로드하지 않습니다. 서버와 다른 플레이어는 이 메시지를 받지 않습니다. 게임 창이 없으면 세계에서 비문을 볼 수 없습니다. 이는 관리자의 syslog를 대체하지 않습니다.
  • UO.CharPrint(color, msg)는 자신의 캐릭터를 선택합니다. UO.CharPrint(id, color, msg)는 지정된 개체를 선택합니다. 두 형식 모두 3 글꼴을 사용합니다. UO.ClientPrintEx에는 SenderID, Color, Font, Text 순서로 네 가지 인수가 모두 필요합니다.
  • 글꼴 번호는 포인트 크기나 Windows 글꼴 이름이 아닌 UO입니다. 숫자는 0..255 범위로 제한됩니다. 특정 글꼴의 사용 가능 여부는 게임 파일에 따라 다릅니다. 예에서 3는 일반 글꼴 번호입니다.
  • GetSerial는 16진수 문자열을 반환합니다. Hex2Int는 숫자 0와 비교하기 전에 int로 바꿉니다. 문자열 "0x00000000"은 숫자 0로 확인할 수 없습니다.
  • UO.Print · UO.CharPrint · UO.ClientPrintEx · UO.AddToSystemJournalEx

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.ClientPrintEx");
UO.ClientPrintEx(UO.Hex2Int(UO.GetSerial("self")), 0x0044, 3, "Ready");

1. UO.ClientPrintEx - 1 - 직접 스크립트

매개변수와 실행 흐름:

  • 첫 번째 형식 CharPrint는 해당 문자 위에 Ready를 배치합니다. ClientPrintEx는 UO.Hex2Int(UO.GetSerial("self")를 통해 serial를 수신하고 해당 글꼴을 명시적으로 3에 전달합니다. 비문에는 게임 모드가 포함되어 있지 않습니다.
  • GetSerial는 16진수 문자열을 반환합니다. Hex2Int는 숫자 0와 비교하기 전에 int로 바꿉니다. 문자열 "0x00000000"은 숫자 0로 확인할 수 없습니다.
UO.ClientPrintEx(UO.Hex2Int(UO.GetSerial("self")), 0x0044, 3, "Ready");

2. UO.ClientPrintEx — 2 — 스크립트 기능

매개변수와 실행 흐름:

  • target — 마지막 타겟의 serial. 0은 이 예에서 태그할 사람이 없음을 의미합니다. 선택된 대상 - 로컬 서명만: 대상은 공격받지 않으며 활성 서버 대상은 채워지지 않습니다.
  • GetSerial는 16진수 문자열을 반환합니다. Hex2Int는 숫자 0와 비교하기 전에 int로 바꿉니다. 문자열 "0x00000000"은 숫자 0로 확인할 수 없습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var target = UO.Hex2Int(UO.GetSerial("lasttarget"));
    if (Truth(target != 0))
    {
        UO.ClientPrintEx(target, 0x0044, 3, "Selected target");
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. UO.ClientPrintEx - 3 - 시나리오 수업

매개변수와 실행 흐름:

  • ShowWeightWarning는 아래에 전체 선언되어 있습니다. 그녀는 체중을 알려진 양의 한계와 비교하고 과부하가 걸린 경우에만 캐릭터 위에 글을 씁니다. 아무것도 버리지 않습니다. Convert.ToString는 가중치를 텍스트로 변환합니다.
  • GetSerial는 16진수 문자열을 반환합니다. Hex2Int는 숫자 0와 비교하기 전에 int로 바꿉니다. 문자열 "0x00000000"은 숫자 0로 확인할 수 없습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        ShowWeightWarning(UO.Weight(), UO.MaxWeight());
        return null;
    }

    void ShowWeightWarning(dynamic weight, dynamic maximum)
    {
        if (Truth(maximum > 0) && Truth(weight >= maximum))
        {
            UO.ClientPrintEx(UO.Hex2Int(UO.GetSerial("self")), 0x0044, 3, "Too heavy: " + Convert.ToString(weight));
        }
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

UO.CloseClientUIWindow

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.CloseClientUIWindow(object? arg0, object? arg1);

특정 개체에 대해 지정된 유형의 로컬 클라이언트 창을 닫습니다. 예를 들어, 캐릭터의 종이 인형, 상태, 배낭 창 등을 제거할 수 있습니다. 이 명령은 게임 클라이언트를 닫지 않으며 서버 검프 버튼에 응답하지 않습니다.

매개변수

  • UIWindowType — 필수 숫자 창 코드: 0 — 종이인형(장비), 1 — 캐릭터 상태, 2 — 프로필, 3 — 컨테이너. 이것은 graphic/type 본문도 아니고 ID 서버 검프도 아닌 4개의 코드로 구성된 별도의 목록입니다. 다른 번호는 창을 찾을 수 없습니다.
  • ID — 창이 속한 개체의 일련 번호: 유형의 경우 self/serial 문자 0..2, 3 유형의 경우 backpack/serial 컨테이너. 숫자, 16진수 문자열 또는 확인 가능한 개체 별칭을 허용합니다. 이는 목록 InfoGumps에 있는 창 번호가 아닙니다. 알 수 없는 개체 별칭은 0로 변환됩니다.

반환값

void - 값이 없습니다. 호출은 var result = 및 if UO.CloseClientUIWindow(...) 없이 별도의 줄에 작성됩니다. 적합한 열린 창이 없으면 아무 일도 일어나지 않습니다. 명령은 true/false를 반환하지 않습니다.

동작

  • 두 매개변수가 모두 필요합니다. 창 클래스와 LocalSerial가 모두 비교됩니다. (3, self)로 콜하는 것은 배낭을 의미하지 않습니다. 배낭에는 backpack가 필요합니다.
  • 우회는 이 유형/serial의 열려 있지만 아직 파괴되지 않은 창에 영향을 미칩니다. 일치하는 모든 창은 게임 스레드에서 닫힙니다. 나머지 창은 열려 있습니다.
  • 인터페이스가 닫히고 항목이 컨테이너에서 제거되지 않으며 캐릭터가 세계에서 사라지지 않습니다. 반복하는 것이 안전합니다. 창이 이미 닫혀 있으면 일치하는 항목이 없습니다.
  • 서버 측 대화 상자의 경우 UO.CloseSimpleGump 및 UO.NumGumpButton을 연구하세요. 이 명령의 코드 0..3는 여기에 적용되지 않습니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.CloseClientUIWindow");
UO.CloseClientUIWindow(0, "self");

1. 종이 인형 제거 - 직접 스크립트

매개변수와 실행 흐름:

  • 캐릭터의 장비 창만 닫힙니다. 그의 상태, 프로필 및 배낭은 별도의 창으로 유지됩니다.
UO.CloseClientUIWindow(0, "self");

2. 작업 후 백팩 창 닫기 - 스크립트 기능

매개변수와 실행 흐름:

  • 배낭이 열리지 않은 경우 해당 작업은 아무 것도 변경하지 않습니다. 이 명령은 항목을 이동하지 않으며 결과를 반환하지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.Connected()) && Truth(UO.Exists("backpack")))
    {
        UO.CloseClientUIWindow(3, "backpack");
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 선택한 캐릭터의 상태 및 프로필 제거 - 시나리오 클래스

매개변수와 실행 흐름:

  • 1 - 상태, 2 - 프로필. id는 선택된 mobile의 serial입니다. ASC(text,0) 여기서는 문자열 serial를 여분의 0이 있는 숫자로 구문 분석합니다. 사용자 프로시저에서는 창의 존재 여부를 약속하지 않습니다. 두 통화 모두 단위가 있습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var selected = Asc(UO.GetSerial("lasttarget"), 0);
        CloseMobilePanels(selected);
        return null;
    }

    void CloseMobilePanels(dynamic id)
    {
        if (Truth(id == 0) || !(Truth(UO.Exists(id))))
        {
            return;
        }

        UO.CloseClientUIWindow(1, id);
        UO.CloseClientUIWindow(2, id);
    }

    int Asc(object? value, int fallback = 0)
    {
        string text = Convert.ToString(value) ?? "";
        if (text.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
            return int.TryParse(text[2..], System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out int hex) ? hex : fallback;
        return int.TryParse(text, out int number) ? number : fallback;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

UO.CloseHandle

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.CloseHandle();

Client.Game.Exit를 통해 현재 클라이언트 애플리케이션을 종료하도록 요청합니다.

매개변수

매개변수가 없습니다.

반환값

void - 반환 값이 없습니다.

동작

  • CloseUO은 같은 다리로 향하고 있습니다. CloseHandle. 종료는 게임 스레드에서 실행됩니다. Client.Game이 누락된 경우 아무런 조치도 취하지 않습니다. 이 명령은 별도의 검프를 종료하는 것이 아닙니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.CloseHandle");
UO.CloseHandle();

1. 클라이언트 종료 - 직접 스크립트

매개변수와 실행 흐름:

  • 호출은 클라이언트 애플리케이션 종료를 요청합니다.
UO.CloseHandle();

2. 명시적 종료 조건 - 스크립트 기능

매개변수와 실행 흐름:

  • 이 예에서는 제어된 조건을 보여줍니다. 0 값은 클라이언트를 열린 상태로 유지합니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var finishClient = 0;
    if (Truth(finishClient))
    {
        UO.CloseHandle();
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 완료 절차 - 스크립트 클래스

매개변수와 실행 흐름:

  • 완전히 선언된 도우미는 명시적인 종료 활성화를 허용합니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        FinishClient(0);
        return null;
    }

    void FinishClient(dynamic enabled)
    {
        if (Truth(enabled))
        {
            UO.CloseHandle();
        }
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

UO.CloseSimpleGump

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.CloseSimpleGump(object? arg0);

엄격한 인덱스에 의해 닫힐 수 있는 서버 검프를 로컬에서 닫습니다.

매개변수

  • GumpIndex — 필수 int — 0부터 GetGumpsCount()-1까지 활성 서버 검프의 인덱스입니다. GumpID/serial가 아닙니다. 목록 외부의 음수와 인덱스는 유효하지 않습니다. 창을 열고 닫고 재정렬하면 색인이 변경될 수 있습니다. 행동하기 전에 GetGumpID/GetGumpSerial를 확인하세요.

반환값

void - 아무것도 반환하지 않습니다. 결과는 서버의 확인이나 bool로 해석되어서는 안 됩니다.

동작

  • 활성 서버 검프와 함께 작동합니다. 배낭, 지도, 설정 및 기타 로컬 창은 이 목록에 포함되지 않습니다. 한 번의 호출은 게임 스레드의 데이터를 읽습니다. 통화마다 목록의 상태가 다를 수 있습니다.
  • 잘못된 인덱스 및 NoClose는 아무것도 변경하지 않습니다. 이 명령은 버튼 응답을 서버로 보내지 않습니다. 이 답변에는 SendGumpSelect를 사용하세요.
  • 닫으면 목록과 인덱스가 수정됩니다. 일괄 종료하려면 마지막 인덱스부터 첫 번째 인덱스까지 목록을 순회하세요.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.CloseSimpleGump");
UO.CloseSimpleGump(0);

1. 첫 번째 창 닫기 - 직접 스크립트

매개변수와 실행 흐름:

  • 0은 ID가 아닌 인덱스입니다. 창을 닫을 수 없으면 열린 상태로 유지됩니다.
UO.CloseSimpleGump(0);

2. 활성화된 모든 창 닫기 - 스크립트 기능

매개변수와 실행 흐름:

  • 역순회는 마감 후 지수 이동의 영향을 줄입니다. 새 창을 동시에 열 때 목록을 다시 확인하세요.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var i = UO.GetGumpsCount() - 1;
    while (Truth(i >= 0))
    {
        UO.CloseSimpleGump(i);
        i = i - 1;
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 닫기 전 정보 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • info[1] - GumpID가 저장되었습니다. 작업은 아무것도 반환하지 않으므로 결과가 변수에 할당되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var info = UO.GetGumpInfo(0);
        if (Truth(ArrayLength(info) == 5))
        {
            UO.CloseSimpleGump(0);
            UO.Print(Hex(info[1]));
        }

        return null;
    }

    int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
    string Hex(object? value) => Convert.ToInt64(value).ToString("X");
    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

UO.ColorPrint

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.ColorPrint(object? arg0, object? arg1);

스크립트 진행 또는 중지 조건에 대한 로컬 메시지를 표시합니다. 보시다시피 다른 플레이어는 아닙니다.

매개변수

  • color - UO hue, RGB 아님. 숫자 또는 16진수 문자열. 브리지는 낮은 16 비트를 사용합니다. graphic/type와 혼동하지 마세요. 예시에서는 0x0044가 선택된 hue입니다. 색상이 없으면 hue 0x03B2가 사용됩니다. UO.Print(text, color)는 텍스트를 먼저 받아들입니다. UO.ColorPrint(color, text) – 색상 우선.

반환값

반환 유형이 void인 메서드에 대한 호출은 독립 실행형 문 C#로 작성됩니다. 결과를 할당하거나 확인할 수 없습니다. 명세서를 작성한다고 해서 게임 서버의 확인이 이루어지는 것은 아닙니다.

동작

  • 메시지는 게임창 좌측하단과 로컬로그로 이동합니다. 출력 IDE에서 사본을 사용할 수 있습니다. 관리자의 일반 로그에서 스크립트 메시지 필터를 활성화하면 게임 창 없이 항목을 사용할 수 있습니다. 서버 시스템 메시지 필터는 그러한 레코드를 선택하지 않습니다. 네트워크 음성 패킷이 전송되지 않습니다. 머리 위의 비문에는 UO.CharPrint이 있습니다.
  • UO.Print는 게임 메시지 로그에 새 항목을 추가합니다. 먼저 원하는 검색 문자열/결과를 읽거나 저장한 다음 진단 메시지를 기록합니다. 빠른 루프에서는 모든 반복이 아닌 변경 사항이 발생할 때 메시지를 기록합니다.
  • 색상이 없으면 hue 0x03B2가 사용됩니다. UO.Print(text, color)는 텍스트를 먼저 받아들입니다. UO.ColorPrint(color, text) – 색상 우선.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문이며 반환 값이 없습니다(void). 메시지 내용은 호출에 직접 표시됩니다.

UO.ColorPrint(0x0044, "Hello from C#");

1. 간략한 보고서 - 직접 스크립트

매개변수와 실행 흐름:

  • 처리됨=12 — 이미 처리된 항목의 데모 수입니다. Convert.ToString를 문자열로 변환합니다. 이 예에서는 숫자만 보고합니다. 객체 자체를 전송하지는 않습니다.
var processed = 12;
UO.ColorPrint(0x0044, "Processed item entries: " + Convert.ToString(processed));

2. 과부하 경고 - 스크립트 기능

매개변수와 실행 흐름:

  • 캐릭터의 무게와 최대값을 읽어옵니다. 0/알 수 없는 최대값은 과부하로 간주되지 않습니다. 무게가 최대값보다 크면 한 줄이 인쇄되고 Main이 끝납니다. 물건은 버리지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.ColorPrint(0x0044, "Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
        return null;
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 중량 변경만 보고 - 스크립트 클래스

매개변수와 실행 흐름:

  • Main은 가중치를 기억하고 1000 밀리초를 기다린 후 완전히 선언된 ReportWeight를 호출합니다. 보조자는 무게가 변경된 경우에만 인쇄하고 다음 점검을 위해 새 무게를 반환합니다. 그 자체로는 무한 루프를 생성하지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.ColorPrint(0x0044, "Weight changed: " + Convert.ToString(current));
        }

        return current;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

UO.ConColor

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.ConColor(object? arg0);

이 스크립트 런타임의 후속 시스템 메시지에 대해 UO hue를 설정합니다.

매개변수

  • color - UO hue, RGB 아님. 숫자 또는 16진수 문자열. 브리지는 낮은 16 비트를 사용합니다. graphic/type와 혼동하지 마세요. 예시에서는 0x0044가 선택된 hue입니다.

반환값

반환 유형이 void인 메서드에 대한 호출은 독립 실행형 문 C#로 작성됩니다. 결과를 할당하거나 확인할 수 없습니다. 명세서를 작성한다고 해서 게임 서버의 확인이 이루어지는 것은 아닙니다.

동작

  • 후속 UO.ClientPrint, UO.AddToJournal 및 UO.AddToSystemJournal에 영향을 미칩니다. 이전 줄을 다시 칠하지 않고, SpeechHue 프로필을 변경하지 않으며, 색상 인수 없이 UO.Print의 색상을 변경하지 않습니다. 이전 색상 getter는 여기에 없습니다. 선택한 일반 hue를 해당 변수에 저장하세요.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.ConColor");
UO.ConColor(0x0044);

1. UO.ConColor - 1 - 직접 스크립트

매개변수와 실행 흐름:

  • 0x0044은 다음 시스템 라인의 색상이 됩니다. ConColor 자체는 아무것도 인쇄하지 않습니다.
UO.ConColor(0x0044);
UO.AddToSystemJournal("Notice");

2. UO.ConColor — 2 — 스크립트 기능

매개변수와 실행 흐름:

  • 일반 Print은 0x03B2 색상을 유지하고 AddToJournal는 지정된 0x0044를 사용합니다. 두 메시지 모두 로컬입니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.ConColor(0x0044);
    UO.Print("Normal Print color");
    UO.AddToJournal("System color");
    return null;
}

3. UO.ConColor - 3 - 시나리오 수업

매개변수와 실행 흐름:

  • usualHue=0x0440는 읽은 이전 값이 아니라 분명히 선택된 일반 색상입니다. 시도는 임시 0x0035를 사용합니다. finally는 usualHue를 반환하고 다음 줄은 다시 일반 색상으로 인쇄됩니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var usualHue = 0x0440;
        UO.ConColor(usualHue);
        try
        {
            UO.ConColor(0x0035);
            UO.AddToSystemJournal("Temporary warning");
        }
        finally
        {
            UO.ConColor(usualHue);
        }

        UO.AddToSystemJournal("Normal messages again");
        return null;
    }
}

UO.ConsolePrint

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.ConsolePrint(object? arg0);

스크립트 진행 또는 중지 조건에 대한 로컬 메시지를 표시합니다. 보시다시피 다른 플레이어는 아닙니다.

매개변수

반환값

반환 유형이 void인 메서드에 대한 호출은 독립 실행형 문 C#로 작성됩니다. 결과를 할당하거나 확인할 수 없습니다. 명세서를 작성한다고 해서 게임 서버의 확인이 이루어지는 것은 아닙니다.

동작

  • 메시지는 게임창 좌측하단과 로컬로그로 이동합니다. 출력 IDE에서 사본을 사용할 수 있습니다. 관리자의 일반 로그에서 스크립트 메시지 필터를 활성화하면 게임 창 없이 항목을 사용할 수 있습니다. 서버 시스템 메시지 필터는 그러한 레코드를 선택하지 않습니다. 네트워크 음성 패킷이 전송되지 않습니다. 머리 위의 비문에는 UO.CharPrint이 있습니다.
  • UO.Print는 게임 메시지 로그에 새 항목을 추가합니다. 먼저 원하는 검색 문자열/결과를 읽거나 저장한 다음 진단 메시지를 기록합니다. 빠른 루프에서는 모든 반복이 아닌 변경 사항이 발생할 때 메시지를 기록합니다.
  • 색상이 없으면 hue 0x03B2가 사용됩니다. UO.Print(text, color)는 텍스트를 먼저 받아들입니다. UO.ColorPrint(color, text) – 색상 우선.
  • 이름에 콘솔이 있음에도 불구하고 이는 별도의 Windows 터미널이 아닌 동일한 로컬 게임 출력입니다.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문이며 반환 값이 없습니다(void). 메시지 내용은 호출에 직접 표시됩니다.

UO.ConsolePrint("Hello from C#");

1. 간략한 보고서 - 직접 스크립트

매개변수와 실행 흐름:

  • 처리됨=12 — 이미 처리된 항목의 데모 수입니다. Convert.ToString를 문자열로 변환합니다. 이 예에서는 숫자만 보고합니다. 객체 자체를 전송하지는 않습니다.
var processed = 12;
UO.ConsolePrint("Processed item entries: " + Convert.ToString(processed));

2. 과부하 경고 - 스크립트 기능

매개변수와 실행 흐름:

  • 캐릭터의 무게와 최대값을 읽어옵니다. 0/알 수 없는 최대값은 과부하로 간주되지 않습니다. 무게가 최대값보다 크면 한 줄이 인쇄되고 Main이 끝납니다. 물건은 버리지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.ConsolePrint("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
        return null;
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 중량 변경만 보고 - 스크립트 클래스

매개변수와 실행 흐름:

  • Main은 가중치를 기억하고 1000 밀리초를 기다린 후 완전히 선언된 ReportWeight를 호출합니다. 보조자는 무게가 변경된 경우에만 인쇄하고 다음 점검을 위해 새 무게를 반환합니다. 그 자체로는 무한 루프를 생성하지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.ConsolePrint("Weight changed: " + Convert.ToString(current));
        }

        return current;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

UO.FillInfoWindow

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.FillInfoWindow(object? arg0);

텍스트 창에 한 줄을 추가하여 표시합니다.

매개변수

  • S — 줄 텍스트; 값은 string로 변환됩니다.

반환값

void - 반환 값이 없습니다.

동작

  • 이전에 누적된 행은 MaxTextWindowLines 한도까지 유지됩니다.
  • TextPrint는 한 줄을 추가하고 YokoTextWindowGump 자체를 표시합니다. TextOpen는 열린 상태를 확보합니다. 버퍼가 오버플로되면 가장 오래된 줄이 삭제됩니다. 이것은 서버 검프도 아니고 UO.GetInfo도 아닌 별도의 텍스트 창입니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.FillInfoWindow");
UO.FillInfoWindow("Status ready");

1. 라인 표시 - 직접 스크립트

매개변수와 실행 흐름:

  • 텍스트가 클라이언트 텍스트 창으로 전송됩니다.
UO.FillInfoWindow("Status ready");

2. 변수의 텍스트 - 스크립트 기능

매개변수와 실행 흐름:

  • 스트링은 국부 전류 HP로 구성됩니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var status = "HP: " + Convert.ToString(UO.GetHP());
    UO.FillInfoWindow(status);
    return null;
}

3. 연속된 두 줄 - 스크립트 클래스

매개변수와 실행 흐름:

  • 두 번째 명령은 첫 번째 뒤에 두 번째를 추가합니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.FillInfoWindow("first");
        UO.FillInfoWindow("second");
        return null;
    }
}

UO.FillNewWindow

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.FillNewWindow(object? arg0);

텍스트 창을 지우고 한 줄을 추가하여 표시합니다.

매개변수

  • S — 줄 텍스트; 값은 string로 변환됩니다.

반환값

void - 반환 값이 없습니다.

동작

  • TextPrint 이전에는 TextClear이 실행됩니다. 이전에 누적된 행이 삭제됩니다.
  • TextPrint는 한 줄을 추가하고 YokoTextWindowGump 자체를 표시합니다. TextOpen는 열린 상태를 확보합니다. 버퍼가 오버플로되면 가장 오래된 줄이 삭제됩니다. 이것은 서버 검프도 아니고 UO.GetInfo도 아닌 별도의 텍스트 창입니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.FillNewWindow");
UO.FillNewWindow("Status ready");

1. 라인 표시 - 직접 스크립트

매개변수와 실행 흐름:

  • 텍스트가 클라이언트 텍스트 창으로 전송됩니다.
UO.FillNewWindow("Status ready");

2. 변수의 텍스트 - 스크립트 기능

매개변수와 실행 흐름:

  • 스트링은 국부 전류 HP로 구성됩니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var status = "HP: " + Convert.ToString(UO.GetHP());
    UO.FillNewWindow(status);
    return null;
}

3. 연속된 두 줄 - 스크립트 클래스

매개변수와 실행 흐름:

  • 두 번째 명령은 내용을 대체합니다. 남은 것은 두 번째입니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.FillNewWindow("first");
        UO.FillNewWindow("second");
        return null;
    }
}

UO.FontColor

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.FontColor(object? arg0);

hue를 이 스크립트의 후속 로컬 UO.UOAMessage로 설정합니다. 캐릭터의 음성 색상, 일반 UO.Print, InfoFindList 또는 IDE 테마를 변경하지 않습니다.

매개변수

  • color — 필수 숫자 인덱스 hue 0..65535(예: 0x0044). 이것은 RGB이 아닙니다. int는 내부에 저장되며, 출력이 ushort로 줄어들면; -1은 재설정을 의미하지 않으며 65535가 됩니다. 새 런타임의 초기 값은 0x03B2입니다. 논쟁이 없으면 형식도 없습니다.

반환값

void: 결과 없음, 오래된 색상 또는 성공 기호. 나중에 설정을 되돌리려면 선택한 hue를 스크립트 변수에 저장하세요.

동작

  • 상태만 변경됩니다.FontColor, 메시지를 인쇄하거나 네트워크 패킷을 보내지 않습니다.
  • 동일한 런타임에서 다음 FontColor까지 유효합니다. 또 다른 독립 스크립트에는 자체 상태가 있습니다. UO.Print(text,color)는 색상을 직접 설정하고 FontColor를 읽지 않습니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.FontColor");
UO.FontColor(0x0021);

1. 하이라이트 재고 경고 - 직접 스크립트

매개변수와 실행 흐름:

  • 0x0021 — 색인 hue; 최종 색상은 클라이언트의 색상 파일에 따라 다릅니다. 메시지는 로컬에서 볼 수 있습니다. 캐릭터가 말하지 않습니다.
UO.FontColor(0x0021);
var first = UO.FindList("0x0EED", "backpack");
if (Truth(first == ""))
{
    UO.UOAMessage("No gold in the loaded backpack");
}
else
{
    UO.UOAMessage("Gold units: " + Convert.ToString(UO.FindFullQuantity()));
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. 일반 색상 알림 절차 - 스크립트 기능

매개변수와 실행 흐름:

  • 전체 공지에는 텍스트와 hue가 허용됩니다. 마지막으로 설치된 hue는 이 런타임의 다음 UOAMessage에도 남아 있습니다. 여기에서는 읽을 수 있는 내장 FontColor()이 없습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    Notice("Supplies checked", 0x0044);
    Notice("Restock needed", 0x0021);
    return null;
}

void Notice(dynamic text, dynamic hue)
{
    UO.FontColor(hue);
    UO.UOAMessage(text);
}

3. 알려진 기본 색상으로 되돌리기 - 스크립트 클래스

매개변수와 실행 흐름:

  • 0x03B2 — 새 런타임의 초기 값 FontColor. 마지막으로 정상적인 완료/오류 처리 시 선택한 기반을 정확하게 반환합니다. 알 수 없는 이전 값은 복원되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var baseHue = 0x03B2;
        try
        {
            UO.FontColor(0x0021);
            UO.UOAMessage("Check the route before moving");
        }
        finally
        {
            UO.FontColor(baseHue);
        }

        UO.UOAMessage("Ready");
        UO.Print("Regular Print keeps its own color");
        return null;
    }
}

UO.HelpRequest

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.HelpRequest();

서버 도움말 메뉴를 요청합니다.

매개변수

매개변수가 없습니다.

반환값

void - 값이 없습니다. 별도의 회선으로 전화하세요. 완료는 서버의 작업을 확인하지 않습니다.

동작

  • ExecuteClientApiCompatibility는 HelpRequest을 호출하고 Invoke를 통해 GameActions.RequestHelp를 보냅니다. 메뉴의 내용은 서버에 의해 결정됩니다.
  • 예제에서 UO.Wait는 스크립트 일시 중지만 지정합니다. 일시 중지가 끝났다고 해서 서버가 요청을 완료했음을 증명하는 것은 아닙니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.HelpRequest");
UO.HelpRequest();

1. 직접 통화 - 직접 스크립트

매개변수와 실행 흐름:

  • 서버 도움말 메뉴를 요청합니다.
UO.HelpRequest();

2. 명시적 옵션 - 스크립트 기능

매개변수와 실행 흐름:

  • ExecuteClientApiCompatibility는 HelpRequest을 호출하고 Invoke를 통해 GameActions.RequestHelp를 보냅니다. 메뉴의 내용은 서버에 의해 결정됩니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.IsOnline()))
    {
        UO.HelpRequest();
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 전체 도우미 기능 - 스크립트 클래스

매개변수와 실행 흐름:

  • 예제에서 UO.Wait는 스크립트 일시 중지만 지정합니다. 일시 중지가 끝났다고 해서 서버가 요청을 완료했음을 증명하는 것은 아닙니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.IsOnline()))
        {
            UO.HelpRequest();
            UO.Print("Help requested");
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

UO.Hide

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.Hide();
void UO.Hide(object? arg0);

ClassicUO 화면에서 로드된 아이템이나 기타 캐릭터를 제거합니다. 간섭하는 물체를 제거하는 데 도움이 됩니다. 컨테이너 내부의 아이템 및 무역, 종이 인형에 장착된 아이템 및 작은 장비 슬롯과 함께 작동합니다.

매개변수

  • serial — 숫자 serial 또는 16진수/10진수 문자열. 이것은 type가 아닙니다. 명명된 개체의 경우 먼저 GetSerial(이름)을 통해 숫자 문자열을 얻습니다. 인수가 없으면 로컬 대상이 나타납니다.

반환값

void - 반환 값이 없습니다. 결과는 serial, graphic/type, 수량 또는 true/false로 할당될 수 없습니다. 정보는 스크립트로 반환되지 않고 인터페이스/로그로 출력됩니다.

동작

  • Hide()는 로컬 십자선을 열고 즉시 제어권을 스크립트로 반환합니다. 종이인형에 있는 아이템, 열린 컨테이너에 있는 아이템, 세계에 있는 아이템을 클릭하세요. Esc는 선택을 취소합니다.
  • Hide(serial)는 알려진 로드된 객체에 즉시 작동합니다. graphic/type 대신 특정 스택/항목의 serial를 전달하세요. 선택한 스택은 양에 관계없이 완전히 숨겨집니다.
  • 항목은 컨테이너에 남아 있습니다. 수량, 소유자, 콘텐츠 및 서버 상태는 변경되지 않습니다. FindType/GetContent에서는 아직 찾을 수 있습니다. 숨기기는 검색 필터, 이월, 삭제, 숨기기 스킬 또는 서버 측 투명화가 아닙니다.
  • 일반 컨테이너, 거래 창 및 전리품 그리드는 숨겨진 아이템을 그리지 않으며 클릭/드래그를 허용하지 않습니다. 동일한 로드된 개체가 사용 중인 동안 창이 다시 작성되고 다시 열릴 때 플래그가 유지됩니다.
  • 장착한 아이템은 종이인형, 작은 슬롯, 캐릭터 이미지에서 사라집니다. 장착된 상태로 유지됩니다. 서버의 레이어, 갑옷 및 상태는 변경되지 않습니다. 숨겨진 가운이 더 이상 속옷과 겹치지 않습니다. 관리자의 캐릭터 이미지는 동일한 플래그를 사용하여 업데이트됩니다. 실제 장비 목록은 계속 사용 가능합니다.
  • Hide는 자신의 캐릭터, 토지, 정적을 숨기지 않습니다. 존재하지 않는 serial는 메시지를 제공합니다. 가방 자체를 숨겨도 이미 열려 있는 콘텐츠 창은 닫히지 않으며, 포함된 각 항목이 자동으로 숨겨지지도 않습니다.
  • 현재 API에는 별도의 숨기기 해제 명령이 없습니다. 숨기는 것은 로드된 객체 인스턴스에 속합니다. 클라이언트 세계에서 이를 제거하고 다시 로드하면(예: 다시 연결할 때) 플래그가 재설정됩니다. 단순히 상자를 닫거나 여는 것만으로는 아이템 반환이 보장되지 않습니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.Hide");
UO.Hide();

1. 열린 상자에 항목 숨기기 - 직접 스크립트

매개변수와 실행 흐름:

  • 매개변수가 없습니다. 클릭하면 선택한 항목만 사라집니다. 서버에 있는 상자의 내용은 변경되지 않습니다.
UO.Hide();
UO.Print("Select an item to hide locally");

2. 배낭에서 발견된 스택 숨기기 - 스크립트 기능

매개변수와 실행 흐름:

  • Hide은 검색결과의 ID를 받지만 0x0EED는 받지 않습니다. 결과가 없으면 호출이 실행되지 않습니다. Hide의 단위는 true/false와 비교할 수 없습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var item = UO.FindType(0x0EED, -1, "backpack");
    if (Truth(item == ""))
    {
        UO.Print("No loaded matching item");
        return null;
    }

    UO.Hide(item);
    UO.Print("Stack amount: " + Convert.ToString(UO.GetQuantity(item)));
    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 저장된 개체에서 특정 항목 숨기기 - 스크립트 클래스

매개변수와 실행 흐름:

  • 명명된 객체는 먼저 GetSerial를 통해 해결됩니다. Exists을 확인하는 것은 성공적인 숨김이나 전송 가능 여부가 아니라 메모리에 존재함을 의미합니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var item = UO.GetSerial("decoration");
        if (Truth(UO.Exists(item)) && Truth(item != UO.GetSerial("self")))
        {
            UO.Hide(item);
        }
        else
        {
            UO.Print("Select a loaded object other than self");
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

4. 이미지에서 가운을 제거하고 그대로 둡니다 - 직접 스크립트

매개변수와 실행 흐름:

  • 22는 serial 또는 type가 아닌 레이어 번호입니다. 먼저 ObjAtLayer가 serial를 받은 다음 Hide가 특정 사물의 이미지를 숨깁니다. 항목의 제거 및 전송은 수행되지 않습니다. Paperdoll을 다시 열어도 숨김이 해제되지는 않습니다.
var robe = UO.ObjAtLayer(22);
if (Truth(robe == 0))
{
    UO.Print("No robe equipped");
    return null;
}
UO.Hide(robe);

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

UO.Morph

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.Morph(object? arg0);

현재 캐릭터의 graphic를 로컬에서 변경합니다.

매개변수

  • type - int body graphic 또는 ResolveType로 해결된 문자열 type. 0는 첫 번째 Morph에 저장된 graphic을 복원합니다. 0이 아닌 숫자는 ushort로 줄어듭니다.

반환값

void - 값이 없습니다. 별도의 회선으로 전화하세요. 완료는 서버의 작업을 확인하지 않습니다.

동작

  • Bridge.Morph 플레이어가 없으면 아무 것도 변경되지 않습니다. 처음 호출되면 _originalGraphic을 저장한 다음 Player.Graphic에 할당합니다. 플레이어가 없어도 런타임 업데이트 ticksAnim=Timer.
  • 이는 서버 변신이나 종족/사용 가능 스킬의 변화가 아닌 로컬 모습입니다. ushort 외부의 값은 이 브리지 기능으로 확인되지 않으며 16 비트로 감소됩니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.Morph");
UO.Morph("0x0190");

1. 직접 통화 - 직접 스크립트

매개변수와 실행 흐름:

  • 현재 캐릭터의 graphic를 로컬에서 변경합니다.
UO.Morph("0x0190");

2. 명시적 옵션 - 스크립트 기능

매개변수와 실행 흐름:

  • Bridge.Morph 플레이어가 없으면 아무 것도 변경되지 않습니다. 처음 호출되면 _originalGraphic을 저장한 다음 Player.Graphic에 할당합니다. 플레이어가 없어도 런타임 업데이트 ticksAnim=Timer.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.Morph(0);
    return null;
}

3. 전체 도우미 기능 - 스크립트 클래스

매개변수와 실행 흐름:

  • 이는 서버 변신이나 종족/사용 가능 스킬의 변화가 아닌 로컬 모습입니다. ushort 외부의 값은 이 브리지 기능으로 확인되지 않으며 16 비트로 감소됩니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.Morph("0x0190");
        UO.Wait(500);
        UO.Morph(0);
        return null;
    }
}

UO.OpenIDE

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.OpenIDE();
void UO.OpenIDE(object? arg0);

매개변수

  • filePath — 선택적 경로. 공백/공백 - 파일을 선택하지 않고 편집기를 엽니다. 상대는 _manager.AutoloadPath에서 확인되며 절대값은 유지됩니다.

반환값

void - 값이 없습니다. 별도의 회선으로 전화하세요. 완료는 서버의 작업을 확인하지 않습니다.

동작

  • Bridge.OpenIDE는 요청된 경로를 준비한 다음 Invoke 호출 YokoScriptEditorGump.Open(_world,requested)을 호출합니다. 파일의 스크립트는 OpenIDE 명령으로 실행되지 않습니다.
  • 편집기는 외부 Launch 애플리케이션이 아닌 그래픽 창입니다. 파일 읽기/표시는 경로 및 편집기 논리의 존재 여부에 따라 달라집니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.OpenIDE");
UO.OpenIDE();

1. 직접 통화 - 직접 스크립트

매개변수와 실행 흐름:

  • 그래픽 편집기 C# IDE를 엽니다.
UO.OpenIDE();

2. 명시적 옵션 - 스크립트 기능

매개변수와 실행 흐름:

  • Bridge.OpenIDE는 요청된 경로를 준비한 다음 Invoke 호출 YokoScriptEditorGump.Open(_world,requested)을 호출합니다. 파일의 스크립트는 OpenIDE 명령으로 실행되지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.OpenIDE("Example.csx");
    return null;
}

3. 전체 도우미 기능 - 스크립트 클래스

매개변수와 실행 흐름:

  • 편집기는 외부 Launch 애플리케이션이 아닌 그래픽 창입니다. 파일 읽기/표시는 경로 및 편집기 논리의 존재 여부에 따라 달라집니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var path = "C:\\UO Scripts\\Example.csx";
        UO.OpenIDE(path);
        return null;
    }
}

UO.Print

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.Print(object? arg0);
void UO.Print(object? arg0, object? arg1);

스크립트 진행 또는 중지 조건에 대한 로컬 메시지를 표시합니다. 보시다시피 다른 플레이어는 아닙니다.

매개변수

  • color - UO hue, RGB 아님. 숫자 또는 16진수 문자열. 브리지는 낮은 16 비트를 사용합니다. graphic/type와 혼동하지 마세요. 예시에서는 0x0044가 선택된 hue입니다. 색상이 없으면 hue 0x03B2가 사용됩니다. UO.Print(text, color)는 텍스트를 먼저 받아들입니다. UO.ColorPrint(color, text) – 색상 우선.

반환값

반환 유형이 void인 메서드에 대한 호출은 독립 실행형 문 C#로 작성됩니다. 결과를 할당하거나 확인할 수 없습니다. 명세서를 작성한다고 해서 게임 서버의 확인이 이루어지는 것은 아닙니다.

동작

  • 메시지는 게임창 좌측하단과 로컬로그로 이동합니다. 출력 IDE에서 사본을 사용할 수 있습니다. 관리자의 일반 로그에서 스크립트 메시지 필터를 활성화하면 게임 창 없이 항목을 사용할 수 있습니다. 서버 시스템 메시지 필터는 그러한 레코드를 선택하지 않습니다. 네트워크 음성 패킷이 전송되지 않습니다. 머리 위의 비문에는 UO.CharPrint이 있습니다.
  • UO.Print는 게임 메시지 로그에 새 항목을 추가합니다. 먼저 원하는 검색 문자열/결과를 읽거나 저장한 다음 진단 메시지를 기록합니다. 빠른 루프에서는 모든 반복이 아닌 변경 사항이 발생할 때 메시지를 기록합니다.
  • 색상이 없으면 hue 0x03B2가 사용됩니다. UO.Print(text, color)는 텍스트를 먼저 받아들입니다. UO.ColorPrint(color, text) – 색상 우선.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

예시 .csx

UO.Print("C# script started");
UO.Print($"Position: {UO.GetX()}, {UO.GetY()}");

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문이며 반환 값이 없습니다(void). 메시지 내용은 호출에 직접 표시됩니다.

UO.Print("Hello from C#");

1. 간략한 보고서 - 직접 스크립트

매개변수와 실행 흐름:

  • 처리됨=12 — 이미 처리된 항목의 데모 수입니다. Convert.ToString를 문자열로 변환합니다. 이 예에서는 숫자만 보고합니다. 객체 자체를 전송하지는 않습니다.
var processed = 12;
UO.Print("Processed item entries: " + Convert.ToString(processed), 0x0044);

2. 과부하 경고 - 스크립트 기능

매개변수와 실행 흐름:

  • 캐릭터의 무게와 최대값을 읽어옵니다. 0/알 수 없는 최대값은 과부하로 간주되지 않습니다. 무게가 최대값보다 크면 한 줄이 인쇄되고 Main이 끝납니다. 물건은 버리지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.Print("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum), 0x0044);
        return null;
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 중량 변경만 보고 - 스크립트 클래스

매개변수와 실행 흐름:

  • Main은 가중치를 기억하고 1000 밀리초를 기다린 후 완전히 선언된 ReportWeight를 호출합니다. 보조자는 무게가 변경된 경우에만 인쇄하고 다음 점검을 위해 새 무게를 반환합니다. 그 자체로는 무한 루프를 생성하지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.Print("Weight changed: " + Convert.ToString(current), 0x0044);
        }

        return current;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

UO.RemoveFigure

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

dynamic UO.RemoveFigure(object? arg0);

ID로 지역 지도 그림을 삭제합니다.

매개변수

  • FigureID - int ID, AddFigure를 반환했습니다. 이것은 serial 아이템도 아니고 ID 검프도 아닙니다.

반환값

int — 브리지의 결과.RemoveMapFigure: 1/0 제거된 그림의 존재 여부. 브릿지 결과에 관계없이 런타임 항목이 삭제됩니다.

동작

  • 먼저 bridge.RemoveMapFigure를 호출한 다음 state.MapFigures.Remove(id)를 호출하고 브리지 결과를 반환합니다. 알 수 없음 ID는 모양을 생성하지 않거나 서버 작업을 트리거하지 않습니다.
  • 지도의 지역적 모습은 세계의 대상이 아니다. 다른 모양과 서버 형상은 변경되지 않습니다.
  • WorldMapGump는 프로세스의 정적 사전에 그림을 저장합니다. 한 세계/프로필의 일반 스크립트/채팅/매크로는 공통 GetPersistentState 및 카운터 ID를 사용합니다. 개별 관리자 프로세스는 도면을 공유하지 않습니다. World.Clear/YokoScripts.Clear 및 프로필 로드 로드는 이 사전을 지우거나 복원하지 않습니다(로더는 UserStatics만 복원합니다). 따라서 도면은 worldNum를 고려하여 동일한 프로세스에서 월드/프로필 변경에도 살아남을 수 있습니다. 새로운 상태는 기존 ID 도면을 다시 강조할 수 있습니다. ClearFigures 도면과 현재 상태 기록을 명시적으로 지웁니다. 성공 - 표시 증명이 아닌 데이터 쓰기/삭제.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

var id = UO.AddFigure(new object?[] { 0, 0, UO.X(), UO.Y(), UO.X() + 3, UO.Y(), 0, 0, 255 });
UO.Print("Removed flag: " + Convert.ToString(UO.RemoveFigure(id)));

1. 직접 통화 - 직접 스크립트

매개변수와 실행 흐름:

  • ID로 지역 지도 그림을 삭제합니다.
UO.Print(UO.RemoveFigure(1));

2. 명시적 옵션 - 스크립트 기능

매개변수와 실행 흐름:

  • 먼저 bridge.RemoveMapFigure를 호출한 다음 state.MapFigures.Remove(id)를 호출하고 브리지 결과를 반환합니다. 알 수 없음 ID는 모양을 생성하지 않거나 서버 작업을 트리거하지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    dynamic[] figure = new dynamic[checked((int)(10) + 1)];
    figure[0] = 0;
    figure[1] = 0;
    figure[2] = UO.GetX();
    figure[3] = UO.GetY();
    figure[4] = UO.GetX() + 1;
    figure[5] = UO.GetY() + 1;
    figure[6] = 0;
    figure[7] = 0;
    figure[8] = 0;
    figure[9] = UO.WorldNum();
    figure[10] = "Example";
    var id = UO.AddFigure(figure);
    if (Truth(id > 0))
    {
        UO.Print(UO.RemoveFigure(id));
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 전체 도우미 기능 - 스크립트 클래스

매개변수와 실행 흐름:

  • 지도의 지역적 모습은 세계의 대상이 아니다. 다른 모양과 서버 형상은 변경되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var id = 1;
        var first = UO.RemoveFigure(id);
        var second = UO.RemoveFigure(id);
        UO.Print(Convert.ToString(first) + " " + Convert.ToString(second));
        return null;
    }
}

UO.ServerPrint

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.ServerPrint(object? arg0);

스크립트 진행 또는 중지 조건에 대한 로컬 메시지를 표시합니다. 보시다시피 다른 플레이어는 아닙니다.

매개변수

반환값

반환 유형이 void인 메서드에 대한 호출은 독립 실행형 문 C#로 작성됩니다. 결과를 할당하거나 확인할 수 없습니다. 명세서를 작성한다고 해서 게임 서버의 확인이 이루어지는 것은 아닙니다.

동작

  • 메시지는 게임창 좌측하단과 로컬로그로 이동합니다. 출력 IDE에서 사본을 사용할 수 있습니다. 관리자의 일반 로그에서 스크립트 메시지 필터를 활성화하면 게임 창 없이 항목을 사용할 수 있습니다. 서버 시스템 메시지 필터는 그러한 레코드를 선택하지 않습니다. 네트워크 음성 패킷이 전송되지 않습니다. 머리 위의 비문에는 UO.CharPrint이 있습니다.
  • UO.Print는 게임 메시지 로그에 새 항목을 추가합니다. 먼저 원하는 검색 문자열/결과를 읽거나 저장한 다음 진단 메시지를 기록합니다. 빠른 루프에서는 모든 반복이 아닌 변경 사항이 발생할 때 메시지를 기록합니다.
  • 색상이 없으면 hue 0x03B2가 사용됩니다. UO.Print(text, color)는 텍스트를 먼저 받아들입니다. UO.ColorPrint(color, text) – 색상 우선.
  • 서버 이름이나 네트워크 메시지와의 유사성에도 불구하고 이 명령은 로컬 텍스트만 인쇄합니다. 전 세계와 대화하려면 UO.Say를 사용하세요.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문이며 반환 값이 없습니다(void). 메시지 내용은 호출에 직접 표시됩니다.

UO.ServerPrint("Hello from C#");

1. 간략한 보고서 - 직접 스크립트

매개변수와 실행 흐름:

  • 처리됨=12 — 이미 처리된 항목의 데모 수입니다. Convert.ToString를 문자열로 변환합니다. 이 예에서는 숫자만 보고합니다. 객체 자체를 전송하지는 않습니다.
var processed = 12;
UO.ServerPrint("Processed item entries: " + Convert.ToString(processed));

2. 과부하 경고 - 스크립트 기능

매개변수와 실행 흐름:

  • 캐릭터의 무게와 최대값을 읽어옵니다. 0/알 수 없는 최대값은 과부하로 간주되지 않습니다. 무게가 최대값보다 크면 한 줄이 인쇄되고 Main이 끝납니다. 물건은 버리지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.ServerPrint("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
        return null;
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 중량 변경만 보고 - 스크립트 클래스

매개변수와 실행 흐름:

  • Main은 가중치를 기억하고 1000 밀리초를 기다린 후 완전히 선언된 ReportWeight를 호출합니다. 보조자는 무게가 변경된 경우에만 인쇄하고 다음 점검을 위해 새 무게를 반환합니다. 그 자체로는 무한 루프를 생성하지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.ServerPrint("Weight changed: " + Convert.ToString(current));
        }

        return current;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

UO.SetShowZ

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.SetShowZ(object? arg0);

로컬 플래그 showZ 런타임을 변경합니다.

매개변수

  • stateValue - 0가 꺼집니다. 0이 아닌 모든 정수가 포함됩니다.

반환값

void - 값이 없습니다. 별도의 회선으로 전화하세요. 완료는 서버의 작업을 확인하지 않습니다.

동작

  • showZ에 NumberConversions.ToInt 뒤에 0 또는 1 값을 할당합니다. 이 함수 자체는 좌표를 변경하지 않으며 패킷을 보내지도 않습니다.
  • 이는 현재 런타임의 호환성 저장소입니다. 프로젝트 비공개 mulPath/showZ에는 소비자가 없습니다. 변경 사항은 자산을 다시 로드하거나 높이 표시를 변경하지 않습니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.SetShowZ");
UO.SetShowZ(1);

1. 직접 통화 - 직접 스크립트

매개변수와 실행 흐름:

  • 로컬 플래그 showZ 런타임을 변경합니다.
UO.SetShowZ(1);

2. 명시적 옵션 - 스크립트 기능

매개변수와 실행 흐름:

  • showZ에 NumberConversions.ToInt 뒤에 0 또는 1 값을 할당합니다. 이 함수 자체는 좌표를 변경하지 않으며 패킷을 보내지도 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.SetShowZ(0);
    return null;
}

3. 전체 도우미 기능 - 스크립트 클래스

매개변수와 실행 흐름:

  • 이는 현재 런타임의 호환성 저장소입니다. 프로젝트 비공개 mulPath/showZ에는 소비자가 없습니다. 변경 사항은 자산을 다시 로드하거나 높이 표시를 변경하지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        ApplyValue(1);
        return null;
    }

    void ApplyValue(dynamic value)
    {
        UO.SetShowZ(value);
    }
}

UO.SetSilentMode

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.SetSilentMode(object? arg0);

로컬 플래그 SilentMode 런타임을 변경합니다.

매개변수

  • Value - 0가 꺼집니다. 0이 아닌 모든 정수가 포함됩니다.

반환값

void - 값이 없습니다. 별도의 회선으로 전화하세요. 완료는 서버의 작업을 확인하지 않습니다.

동작

  • SilentMode를 0/1로 저장합니다. GumpLinesResult는 플래그를 읽습니다. 0를 사용하면 비어 있지 않은 결과 GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription가 추가로 텍스트 창에 인쇄되어 열립니다. 1를 사용하면 이 추가 표시가 억제됩니다. 반환된 배열은 변경되지 않습니다. 기타 Print 사운드와 서버 메시지는 억제되지 않습니다.
  • 일반 클라이언트 호스트에서 이 상태 데이터는 GetPersistentState 관리자에서 가져오며 동일한 월드/프로필의 스크립트/채팅/매크로에 공통되며 하나의 스크립트에 속하지 않습니다. 다른 프로세스 또는 명백히 별도의 InjectionRuntimeState가 다른 상태를 갖습니다. 프로필을 로드/삭제하면 프로필을 대체할 수 있습니다. 저장된 serial는 여전히 로드된 세계와 비교하여 확인됩니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.SetSilentMode");
UO.SetSilentMode(1);

1. 직접 통화 - 직접 스크립트

매개변수와 실행 흐름:

  • SilentMode를 0/1로 저장합니다. GumpLinesResult는 플래그를 읽습니다. 0를 사용하면 비어 있지 않은 결과 GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription가 추가로 텍스트 창에 인쇄되어 열립니다. 1를 사용하면 이 추가 표시가 억제됩니다. 반환된 배열은 변경되지 않습니다. 기타 Print 사운드와 서버 메시지는 억제되지 않습니다.
UO.SetSilentMode(1);

2. 명시적 옵션 - 스크립트 기능

매개변수와 실행 흐름:

  • SilentMode를 0/1로 저장합니다. GumpLinesResult는 플래그를 읽습니다. 0를 사용하면 비어 있지 않은 결과 GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription가 추가로 텍스트 창에 인쇄되어 열립니다. 1를 사용하면 이 추가 표시가 억제됩니다. 반환된 배열은 변경되지 않습니다. 기타 Print 사운드와 서버 메시지는 억제되지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.SetSilentMode(0);
    return null;
}

3. 전체 도우미 기능 - 스크립트 클래스

매개변수와 실행 흐름:

  • SilentMode를 0/1로 저장합니다. GumpLinesResult는 플래그를 읽습니다. 0를 사용하면 비어 있지 않은 결과 GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription가 추가로 텍스트 창에 인쇄되어 열립니다. 1를 사용하면 이 추가 표시가 억제됩니다. 반환된 배열은 변경되지 않습니다. 기타 Print 사운드와 서버 메시지는 억제되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        ApplyValue(1);
        return null;
    }

    void ApplyValue(dynamic value)
    {
        UO.SetSilentMode(value);
    }
}

UO.ShowJournal

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.ShowJournal();

로컬 클라이언트 로그 창을 엽니다.

매개변수

매개변수가 없습니다.

반환값

void - 값이 없습니다. 별도의 회선으로 전화하세요. 완료는 서버의 작업을 확인하지 않습니다.

동작

  • ShowJournal는 GameActions.OpenJournal(_world)를 호출합니다. 기록이 지워지지 않으며 텍스트가 서버로 전송되지 않습니다.
  • 지정된 로컬 데이터만 수정하거나 표시합니다. 이 명령에는 서버 확인이 없습니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.ShowJournal");
UO.ShowJournal();

1. 직접 통화 - 직접 스크립트

매개변수와 실행 흐름:

  • 로컬 클라이언트 로그 창을 엽니다.
UO.ShowJournal();

2. 명시적 옵션 - 스크립트 기능

매개변수와 실행 흐름:

  • ShowJournal는 GameActions.OpenJournal(_world)를 호출합니다. 기록이 지워지지 않으며 텍스트가 서버로 전송되지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.Print("Journal example");
    UO.ShowJournal();
    return null;
}

3. 전체 도우미 기능 - 스크립트 클래스

매개변수와 실행 흐름:

  • 지정된 로컬 데이터만 수정하거나 표시합니다. 이 명령에는 서버 확인이 없습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.ShowJournal();
        UO.Print(UO.LineCount());
        return null;
    }
}

UO.Snap

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

int UO.Snap();
int UO.Snap(object? arg0);
int UO.Snap(object? arg0, object? arg1);
int UO.Snap(object? arg0, object? arg1, object? arg2);

클라이언트 그래픽 창의 스냅샷을 저장합니다.

매개변수

  • name — 선택적 파일 이름. .jpg/.jpeg는 JPEG를 선택하고, 기타/없음은 PNG를 선택합니다. 이름의 디렉토리가 제거됩니다. 기본 이름만 사용됩니다.
  • file — 선택적 파일 이름. .jpg/.jpeg는 JPEG를 선택하고, 기타/없음은 PNG를 선택합니다. 이름의 디렉토리가 제거됩니다. 기본 이름만 사용됩니다.
  • quality — 선택 사항 int, 기본값은 100, 1..100로 제한됩니다. JPEG에 영향을 미칩니다. PNG는 손실 품질을 사용하지 않습니다.
  • includeUI - 선택 사항 bool, 기본값 true. false는 UI 없이 세계/조명을 그립니다.

반환값

숫자 플래그 int: 1 - 이미지 파일이 저장됨, 0 - 캡처/쓰기 오류. 그래픽 창이 없으면 RequireGameView는 TakeScreenshot 이전에 오류를 발생시킵니다.

동작

  • TakeScreenshot는 ExecutablePath/Data/Client/Screenshots에 기록하고, 잘못된 이름 문자를 삭제하고, 비어 있는 경우 자동으로 날짜별로 이름을 선택하고, 기존 파일이 있는 경우 _2/_3을 추가합니다. 임의의 절대 경로는 사용되지 않습니다.
  • UI를 사용하면 백버퍼를 읽습니다. UI 없이 RenderTarget2D를 만들고 세상을 렌더링합니다. JPEG는 복원을 통해 FNA_GRAPHICS_JPEG_SAVE_QUALITY를 임시로 설정합니다. PNG SaveAsPng. TakeScreenshot 내부의 오류는 기록되어 0로 표시됩니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

한 번의 호출 결과를 저널에 표시합니다. 숫자를 bool로 변환하지 않으며, 배열이면 요소 수를 표시합니다.

var result = UO.Snap();
UO.Print("Snap: " + Convert.ToString(result));

1. 직접 통화 - 직접 스크립트

매개변수와 실행 흐름:

  • 클라이언트 그래픽 창의 스냅샷을 저장합니다.
UO.Print(UO.Snap());

2. 명시적 옵션 - 스크립트 기능

매개변수와 실행 흐름:

  • TakeScreenshot는 ExecutablePath/Data/Client/Screenshots에 기록하고, 잘못된 이름 문자를 삭제하고, 비어 있는 경우 자동으로 날짜별로 이름을 선택하고, 기존 파일이 있는 경우 _2/_3을 추가합니다. 임의의 절대 경로는 사용되지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.Print(UO.Snap("manual-example.jpg", 85));
    return null;
}

3. 전체 도우미 기능 - 스크립트 클래스

매개변수와 실행 흐름:

  • UI를 사용하면 백버퍼를 읽습니다. UI 없이 RenderTarget2D를 만들고 세상을 렌더링합니다. JPEG는 복원을 통해 FNA_GRAPHICS_JPEG_SAVE_QUALITY를 임시로 설정합니다. PNG SaveAsPng. TakeScreenshot 내부의 오류는 기록되어 0로 표시됩니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.Print(UO.Snap("manual-world.png", 100, false));
        return null;
    }
}

UO.TextClear

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.TextClear();

로컬 텍스트 창의 버퍼를 지웁니다.

매개변수

매개변수가 없습니다.

반환값

void - 값이 없습니다. 별도의 회선으로 전화하세요. 완료는 서버의 작업을 확인하지 않습니다.

동작

  • _textWindow를 지웁니다. 창이 열려 있으면 빈 목록으로 다시 표시합니다. 닫힌 창은 닫힌 상태로 유지됩니다. 클라이언트 로그는 지워지지 않습니다.
  • 작업은 로컬 인터페이스/버퍼입니다. 네트워크 메시지나 서버 확인이 없습니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.TextClear");
UO.TextClear();

1. 직접 통화 - 직접 스크립트

매개변수와 실행 흐름:

  • 로컬 텍스트 창의 버퍼를 지웁니다.
UO.TextClear();

2. 명시적 옵션 - 스크립트 기능

매개변수와 실행 흐름:

  • _textWindow를 지웁니다. 창이 열려 있으면 빈 목록으로 다시 표시합니다. 닫힌 창은 닫힌 상태로 유지됩니다. 클라이언트 로그는 지워지지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.TextPrint("Old line");
    UO.TextClear();
    return null;
}

3. 전체 도우미 기능 - 스크립트 클래스

매개변수와 실행 흐름:

  • 작업은 로컬 인터페이스/버퍼입니다. 네트워크 메시지나 서버 확인이 없습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.TextClose();
        UO.TextClear();
        UO.TextOpen();
        return null;
    }
}

UO.TextClose

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.TextClose();

로컬 텍스트 창을 닫고 버퍼를 저장합니다.

매개변수

매개변수가 없습니다.

반환값

void - 값이 없습니다. 별도의 회선으로 전화하세요. 완료는 서버의 작업을 확인하지 않습니다.

동작

  • _textWindowOpen=false를 설정하고 기존 YokoTextWindowGump를 삭제합니다. _textWindow 목록은 지워지지 않습니다. TextOpen는 해당 행을 다시 표시합니다.
  • 작업은 로컬 인터페이스/버퍼입니다. 네트워크 메시지나 서버 확인이 없습니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.TextClose");
UO.TextClose();

1. 직접 통화 - 직접 스크립트

매개변수와 실행 흐름:

  • 로컬 텍스트 창을 닫고 버퍼를 저장합니다.
UO.TextClose();

2. 명시적 옵션 - 스크립트 기능

매개변수와 실행 흐름:

  • _textWindowOpen=false를 설정하고 기존 YokoTextWindowGump를 삭제합니다. _textWindow 목록은 지워지지 않습니다. TextOpen는 해당 행을 다시 표시합니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.TextPrint("Retained line");
    UO.TextClose();
    return null;
}

3. 전체 도우미 기능 - 스크립트 클래스

매개변수와 실행 흐름:

  • 작업은 로컬 인터페이스/버퍼입니다. 네트워크 메시지나 서버 확인이 없습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.TextPrint("Retained line");
        UO.TextClose();
        UO.Wait(250);
        UO.TextOpen();
        return null;
    }
}

UO.TextOpen

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.TextOpen();

로컬 텍스트 창을 엽니다.

매개변수

매개변수가 없습니다.

반환값

void - 값이 없습니다. 별도의 회선으로 전화하세요. 완료는 서버의 작업을 확인하지 않습니다.

동작

  • _textWindowOpen=true을 저장하고 YokoTextWindowGump를 호출합니다.현재 _textWindow로 표시합니다. 버퍼는 지워지지 않습니다. 다시 열면 누적된 행이 표시됩니다.
  • 작업은 로컬 인터페이스/버퍼입니다. 네트워크 메시지나 서버 확인이 없습니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.TextOpen");
UO.TextOpen();

1. 직접 통화 - 직접 스크립트

매개변수와 실행 흐름:

  • 로컬 텍스트 창을 엽니다.
UO.TextOpen();

2. 명시적 옵션 - 스크립트 기능

매개변수와 실행 흐름:

  • _textWindowOpen=true을 저장하고 YokoTextWindowGump를 호출합니다.현재 _textWindow로 표시합니다. 버퍼는 지워지지 않습니다. 다시 열면 누적된 행이 표시됩니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.TextPrint("Example");
    UO.TextOpen();
    return null;
}

3. 전체 도우미 기능 - 스크립트 클래스

매개변수와 실행 흐름:

  • 작업은 로컬 인터페이스/버퍼입니다. 네트워크 메시지나 서버 확인이 없습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.TextOpen();
        UO.Wait(500);
        UO.TextClose();
        return null;
    }
}

UO.TextPrint

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

void UO.TextPrint(object? arg0);

로컬 텍스트 창에 줄을 추가하고 엽니다.

매개변수

  • text — ToString을 통한 텍스트; 전송된 상태로 저장됩니다.

반환값

void - 값이 없습니다. 별도의 회선으로 전화하세요. 완료는 서버의 작업을 확인하지 않습니다.

동작

  • 한계에서 MaxTextWindowLines=2000는 이전 줄을 제거한 다음 텍스트나 빈 줄을 추가하고 _textWindowOpen=true를 설정하고 창을 표시합니다. 이는 로그의 UO.Print도 아니고 서버에 대한 음성도 아닙니다.
  • 작업은 로컬 인터페이스/버퍼입니다. 네트워크 메시지나 서버 확인이 없습니다.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

명령은 독립된 문입니다. 앞의 메시지는 호출 시작을 나타내며 서버 동작의 완료를 확인하지 않습니다.

UO.Print("Calling UO.TextPrint");
UO.TextPrint("Example");

1. 직접 통화 - 직접 스크립트

매개변수와 실행 흐름:

  • 로컬 텍스트 창에 줄을 추가하고 엽니다.
UO.TextPrint("Example");

2. 명시적 옵션 - 스크립트 기능

매개변수와 실행 흐름:

  • 한계에서 MaxTextWindowLines=2000는 이전 줄을 제거한 다음 텍스트나 빈 줄을 추가하고 _textWindowOpen=true를 설정하고 창을 표시합니다. 이는 로그의 UO.Print도 아니고 서버에 대한 음성도 아닙니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var message = "Line 1";
    UO.TextPrint(message);
    UO.TextPrint("Line 2");
    return null;
}

3. 전체 도우미 기능 - 스크립트 클래스

매개변수와 실행 흐름:

  • 작업은 로컬 인터페이스/버퍼입니다. 네트워크 메시지나 서버 확인이 없습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.TextClear();
        UO.TextPrint("Fresh report");
        UO.TextClose();
        return null;
    }
}

UO.UpdateFigure

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# 시그니처

dynamic UO.UpdateFigure(object? arg0, object? arg1);

기존 지역 지도 그림의 설명을 대체합니다.

매개변수

  • FigureID - int ID 상태입니다. MapFigures가 AddFigure에서 수신되었습니다. 알 수 없음 ID는 0를 제공합니다.
  • figure — [kind,coord,x1,y1,x2,y2,brushColor,brushStyle,color,worldNum,text]가 포함된 배열 또는 문자열 | 최소 첫 번째 9 숫자 필드; worldNum는 기본적으로 현재 지도이고, 기본적으로 텍스트는 비어 있습니다.
  • figure[0] (kind) - 종류는 0..4, coord - 0..1, FigureID - 양수여야 합니다. WorldMapGump.SetYokoMapFigure는 이러한 경계를 위반하면 0를 반환합니다.
  • figure[1] (coord) - 종류는 0..4, coord - 0..1, FigureID - 양수여야 합니다. WorldMapGump.SetYokoMapFigure는 이러한 경계를 위반하면 0를 반환합니다.

반환값

숫자 플래그 int: 1 - 구문 분석이 성공했고 브리지되었습니다. SetMapFigure가 0이 아닌 결과를 반환한 후 레코드가 업데이트되었습니다. 0 - 아니요 ID, 구조/숫자 텍스트 필드 오류 또는 브리지 실패.

동작

  • TryMapFigureArg는 배열 또는 |string를 허용합니다. 첫 번째 9 필드가 변환됩니다. 숫자 텍스트는 TryStr2Int로 확인됩니다. 지원되지 않는 보기/짧은 표기법 - 0, 기타 보기 변환 오류로 인해 스크립트가 중단될 수 있습니다.
  • 브릿지가 실패하면 기존 런타임 항목이 대체되지 않습니다. 성공하면 SerializeMapFigure를 10 숫자 필드 및 텍스트와 함께 저장합니다. 그림은 로컬에만 해당되며 서버 항목에는 해당되지 않습니다.
  • 종류: 0 선, 1 타원(32 윤곽선 세그먼트), 2 직사각형 윤곽선, 3 화살표, 4 텍스트. coord=0 — 지도로 변환된 세계 좌표, coord=1 — 지도 그리기 영역을 기준으로 한 픽셀. x1/y1 및 x2/y2 - 끝/경계; 세계 화살표 x2=y2=0의 경우 플레이어의 시작과 x1/y1의 목표를 설정합니다. color — 0x00BBGGRR (마이너 byte 빨간색), 윤곽선 색상. brushColor/brushStyle가 저장되었지만 렌더링에서는 이를 읽지 않습니다. 채우기가 없습니다. worldNum<0는 모든 지도에 표시되며, 그렇지 않으면 지정된 지도에만 표시됩니다. 텍스트는 외곽선 색상이 아닌 지도 글꼴의 첫 번째 지점(텍스트가 아닌 도형의 경우 +3 픽셀)에 그려집니다.
  • WorldMapGump는 프로세스의 정적 사전에 그림을 저장합니다. 한 세계/프로필의 일반 스크립트/채팅/매크로는 공통 GetPersistentState 및 카운터 ID를 사용합니다. 개별 관리자 프로세스는 도면을 공유하지 않습니다. World.Clear/YokoScripts.Clear 및 프로필 로드 로드는 이 사전을 지우거나 복원하지 않습니다(로더는 UserStatics만 복원합니다). 따라서 도면은 worldNum를 고려하여 동일한 프로세스에서 월드/프로필 변경에도 살아남을 수 있습니다. 새로운 상태는 기존 ID 도면을 다시 강조할 수 있습니다. ClearFigures 도면과 현재 상태 기록을 명시적으로 지웁니다. 성공 - 표시 증명이 아닌 데이터 쓰기/삭제.

독립 실행 C# 스크립트

각 예제는 별도의 파일 .csx로 저장하고 IDE에서 실행할 수 있습니다. UO 개체와 대기 기능은 현재 게임 세션의 호스트를 제공합니다. 데모 serial 이름, 좌표, 주소를 자신의 것으로 바꾸세요.

간단한 예제

이 코드를 별도의 .csx 파일로 실행하세요. 인수는 호출에 직접 표시됩니다. 예제의 이름, serial, 주소를 자신의 값으로 바꾸세요.

object?[] figure = { 0, 0, UO.X(), UO.Y(), UO.X() + 3, UO.Y(), 0, 0, 255 };
var id = UO.AddFigure(figure);
figure[8] = 65280;
UO.Print("Updated flag: " + Convert.ToString(UO.UpdateFigure(id, figure)));

1. 직접 통화 - 직접 스크립트

매개변수와 실행 흐름:

  • 기존 지역 지도 그림의 설명을 대체합니다.
dynamic[] figure = new dynamic[checked((int)(8) + 1)];
figure[0] = 0;
figure[1] = 0;
figure[2] = 100;
figure[3] = 100;
figure[4] = 101;
figure[5] = 101;
figure[6] = 0;
figure[7] = 0;
figure[8] = 0;
UO.Print(UO.UpdateFigure(1, figure));

2. 명시적 옵션 - 스크립트 기능

매개변수와 실행 흐름:

  • TryMapFigureArg는 배열 또는 |string를 허용합니다. 첫 번째 9 필드가 변환됩니다. 숫자 텍스트는 TryStr2Int로 확인됩니다. 지원되지 않는 보기/짧은 표기법 - 0, 기타 보기 변환 오류로 인해 스크립트가 중단될 수 있습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    dynamic[] figure = new dynamic[checked((int)(10) + 1)];
    figure[0] = 0;
    figure[1] = 0;
    figure[2] = UO.GetX();
    figure[3] = UO.GetY();
    figure[4] = UO.GetX() + 1;
    figure[5] = UO.GetY() + 1;
    figure[6] = 0;
    figure[7] = 0;
    figure[8] = 0;
    figure[9] = UO.WorldNum();
    figure[10] = "Example";
    var id = UO.AddFigure(figure);
    if (Truth(id > 0))
    {
        UO.Print(UO.UpdateFigure(id, figure));
        UO.RemoveFigure(id);
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 전체 도우미 기능 - 스크립트 클래스

매개변수와 실행 흐름:

  • 브릿지가 실패하면 기존 런타임 항목이 대체되지 않습니다. 성공하면 SerializeMapFigure를 10 숫자 필드 및 텍스트와 함께 저장합니다. 그림은 로컬에만 해당되며 서버 항목에는 해당되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var figure = "0|0|100|100|101|101|0|0|0";
        UO.Print(UO.UpdateFigure(1, figure));
        return null;
    }
}

Clone this wiki locally