Skip to content

KO UO Topic targeting

Codex edited this page Oct 12, 2026 · 4 revisions

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

Targeting

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

대상 커서 및 사전 설정된 응답을 사용한 수동 응답 WaitTarget. 예상 목표를 설정하는 것과 작업을 수행하는 것은 별개의 작업입니다.

섹션

주제 명령 및 설명
Target UO.Target
TargetID UO.TargetID
TargetToObject UO.TargetToObject
TargetToTile UO.TargetToTile
TargetToXYZ UO.TargetToXYZ
TargetByResource UO.TargetByResource
WaitTarget UO.WaitTarget
WaitTargetObject UO.WaitTargetObject
WaitTargetType UO.WaitTargetType
WaitTargetTile UO.WaitTargetTile
WaitTargetXYZ UO.WaitTargetXYZ
WaitTargetSelf UO.WaitTargetSelf
LastTarget UO.LastTarget
CancelTarget UO.CancelTarget
Client Target Response UO.ClientRequestObjectTarget · UO.ClientRequestTileTarget · UO.WaitForClientTargetResponse · UO.ClientTargetResponse

모든 테마 명령

대상

UO.Target · UO.TargetID · UO.Targeting · UO.TargetPresent · UO.TargetToObject · UO.TargetToTile · UO.TargetToXYZ · UO.TargetByResource · UO.LastTarget · UO.LastTargetX · UO.LastTargetY · UO.LastTile · UO.TicksTarget

Waiting / 취소

UO.WaitTarget · UO.WaitTargetObject · UO.WaitTargetType · UO.WaitTargetObjectType · UO.WaitTargetTile · UO.WaitTargetXYZ · UO.WaitTargetSelf · UO.WaitTargetGround · UO.WaitTargetLast · UO.WaitForTarget · UO.IsWaitTargetActive · UO.CancelTarget · UO.CancelWaitTarget

클라이언트 Target 응답

UO.ClientRequestObjectTarget · UO.ClientRequestTileTarget · UO.ClientTargetResponse · UO.ClientTargetResponsePresent · UO.WaitForClientTargetResponse

주제에 대한 예

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

UO.WaitTargetObject

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

UO.CancelWaitTarget();
UO.WaitTargetObject("self");
UO.UseSkill("Anatomy");

UO.TargetToXYZ

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

if (Truth(UO.TargetPresent()))
{
    UO.TargetToXYZ(1445, 1690, 0);
}

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

전체 명령 참조


UO.CancelTarget

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

C# 시그니처

void UO.CancelTarget();

활성 커서를 취소하고 준비된 십자선 반응을 지웁니다.

매개변수

매개변수가 없습니다.

반환값

void - 반환 값이 없습니다. 별도의 회선으로 전화하세요. true/false, serial 또는 type로 사용하지 마세요. 메타데이터 object? 호환되는 양식의 경우 실제 결과는 변경되지 않습니다 void.

동작

  • 이미 서버에 전송된 응답은 회수되지 않습니다.
  • 로컬 콜백 대상이 취소되었습니다. 활성 서버 대상의 경우 대상 취소가 전송됩니다.
  • 대기열은 클라이언트에 공통적입니다. 대기열 삭제는 모든 절차의 준비된 응답에 적용됩니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 준비되지 않음 - 직접 스크립트

매개변수와 실행 흐름:

  • 논쟁이 없습니다.
  • self에 대한 대기 중인 응답이 삭제됩니다.
UO.WaitTargetSelf();
UO.CancelTarget();

2. 미리 준비한 포인트 교체 - 스크립트 기능

매개변수와 실행 흐름:

  • 1445/1690/0는 세계의 새로운 지점의 예입니다.
  • 새로운 목표를 설정하기 전에 이전 답변이 제거됩니다.
return  RunScenario();
 object? RunScenario()
{
    UO.CancelTarget();
    UO.WaitTargetXYZ(1445, 1690, 0);
    return null;
}

3. 시간 초과 후 거부 - 스크립트 클래스

매개변수와 실행 흐름:

  • UO.Wait=1000ms는 이 예의 제한 사항입니다.
  • 스킬 성공 여부가 아닌 남은 대기열을 확인합니다. 서버 십자선이 없으면 다음 외부 명령은 이전 응답을 수신하지 않습니다.
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.WaitTargetSelf();
        UO.UseSkill("Anatomy");
        await Delay(1000);
        if (Truth(UO.IsWaitTargetActive()))
        {
            UO.CancelTarget();
        }

        return null;
    }

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

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.CancelTarget() — UO.CancelTarget()

매개변수: 매개변수가 없습니다.

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void CancelTarget()

        {

            var waitTargetQueue = bridge.GetWaitTargetQueue();

            if (waitTargetQueue.Length > 0 || bridge.IsTargeting() != 0)

            {

                bridge.CancelTarget();

                SystemMessage("Targeting cancelled");

            }

            else

                SystemMessage("Error: no target to cancel");

        }

UO.CancelWaitTarget

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

C# 시그니처

void UO.CancelWaitTarget();

준비된 십자선 반응을 지웁니다.

매개변수

매개변수가 없습니다.

반환값

void - 반환 값이 없습니다. 별도의 회선으로 전화하세요. true/false, serial 또는 type로 사용하지 마세요. 메타데이터 object? 호환되는 양식의 경우 실제 결과는 변경되지 않습니다 void.

동작

  • 이미 서버에 전송된 응답은 회수되지 않습니다.
  • 열린 커서는 활성 상태로 유지됩니다. 나중에 수동으로 처리할 수 있습니다.
  • 대기열은 클라이언트에 공통적입니다. 대기열 삭제는 모든 절차의 준비된 응답에 적용됩니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 준비되지 않음 - 직접 스크립트

매개변수와 실행 흐름:

  • 논쟁이 없습니다.
  • self에 대한 대기 중인 응답이 삭제됩니다.
UO.WaitTargetSelf();
UO.CancelWaitTarget();

2. 미리 준비한 포인트 교체 - 스크립트 기능

매개변수와 실행 흐름:

  • 1445/1690/0는 세계의 새로운 지점의 예입니다.
  • 새로운 목표를 설정하기 전에 이전 답변이 제거됩니다.
return  RunScenario();
 object? RunScenario()
{
    UO.CancelWaitTarget();
    UO.WaitTargetXYZ(1445, 1690, 0);
    return null;
}

3. 시간 초과 후 거부 - 스크립트 클래스

매개변수와 실행 흐름:

  • UO.Wait=1000ms는 이 예의 제한 사항입니다.
  • 스킬 성공 여부가 아닌 남은 대기열을 확인합니다. 서버 십자선이 없으면 다음 외부 명령은 이전 응답을 수신하지 않습니다.
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.WaitTargetSelf();
        UO.UseSkill("Anatomy");
        await Delay(1000);
        if (Truth(UO.IsWaitTargetActive()))
        {
            UO.CancelWaitTarget();
        }

        return null;
    }

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

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.CancelWaitTarget() — UO.CancelWaitTarget()

매개변수: 매개변수가 없습니다.

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "cancelwaittarget": bridge.CancelWaitTarget(); return InjectionValue.Unit;

UO.ClientRequestObjectTarget

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

C# 시그니처

void UO.ClientRequestObjectTarget();

항목이나 문자를 수동으로 선택하기 위한 로컬 십자선을 엽니다.

매개변수

매개변수가 없습니다.

반환값

void - 반환 값이 없습니다. 별도의 회선으로 전화하세요. true/false, serial 또는 type로 사용하지 마세요. 메타데이터 object? 호환되는 양식의 경우 실제 결과는 변경되지 않습니다 void.

동작

  • 이 런타임의 이전 결과가 재설정됩니다. 클릭을 기다리지 않고 명령이 즉시 반환됩니다.
  • 결과는 WaitForClientTargetResponse 또는 ClientTargetResponsePresent 다음에 ClientTargetResponse로 읽혀집니다.
  • 실행 중인 프로시저를 중지하면 가장 가까운 프레임에서 해당 프로시저에 속한 범위가 제거됩니다. 다른 요청이 이미 커서를 대체한 경우 이를 취소해도 영향을 받지 않습니다.
  • 두 개의 독립적인 수동 선택에 대해 하나의 클라이언트 인터페이스 십자선을 동시에 사용할 수 없습니다. 이전 요청이 처리될 때까지 새 요청을 시작하지 마세요.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 아이템이나 캐릭터 선택 - 직접 스크립트

매개변수와 실행 흐름:

  • 5000 — 클릭 대기 시간 초과(밀리초). 새 쿼리는 이전 결과를 재설정합니다.
  • 5개 필드의 배열은 선택한 개체를 나타냅니다. 결과[0]는 type가 아니라 serial입니다.
UO.ClientRequestObjectTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
    var result = UO.ClientTargetResponse();
    if (Truth(ArrayLength(result) == 5))
    {
        UO.Print("Serial: " + UO.Int2Hex(result[0]));
    }
    else
    {
        UO.Print("Selection cancelled");
    }
}

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

2. 취소는 응답이지만 객체는 아닙니다 - 스크립트 기능

매개변수와 실행 흐름:

  • CancelTarget는 로컬 선택을 취소합니다. 콜백은 빈 결과를 반환합니다.
  • ClientTargetResponsePresent는 1을 제공하지만 배열의 길이는 0입니다. 길이를 확인하지 않고 결과[0]에 액세스하지 마세요.
return  RunScenario();
 object? RunScenario()
{
    UO.ClientRequestObjectTarget();
    UO.CancelTarget();
    if (Truth(UO.ClientTargetResponsePresent()))
    {
        var result = UO.ClientTargetResponse();
        UO.Print("Fields: " + Convert.ToString(ArrayLength(result)));
    }

    return null;
}

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

3. 객체 선택 및 명명된 참조 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 응답에는 5개의 필드가 포함되어 있습니다. serial가 결과[0]에 있습니다. 시간 초과 및 취소로 인해 사용 가능한 serial이 생성되지 않습니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.ClientRequestObjectTarget();
        if (UO.WaitForClientTargetResponse(5000) == 0)
            return false;
        var result = UO.ClientTargetResponse();
        if (((object? [])result).Length != 5 || Convert.ToInt32(result[0]) == 0)
            return false;
        UO.AddObject("selected_object", result[0]);
        UO.Print($"Saved object: {UO.GetName(result[0])}");
        return true;
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.ClientRequestObjectTarget() — UO.ClientRequestObjectTarget()

매개변수: 매개변수가 없습니다.

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "clientrequestobjecttarget": bridge.RequestClientTarget(false); return InjectionValue.Unit;

UO.ClientRequestTileTarget

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

C# 시그니처

void UO.ClientRequestTileTarget();

점/타일 또는 개체를 수동으로 선택하기 위한 로컬 십자선을 엽니다.

매개변수

매개변수가 없습니다.

반환값

void - 반환 값이 없습니다. 별도의 회선으로 전화하세요. true/false, serial 또는 type로 사용하지 마세요. 메타데이터 object? 호환되는 양식의 경우 실제 결과는 변경되지 않습니다 void.

동작

  • 이 런타임의 이전 결과가 재설정됩니다. 클릭을 기다리지 않고 명령이 즉시 반환됩니다.
  • 결과는 WaitForClientTargetResponse 또는 ClientTargetResponsePresent 다음에 ClientTargetResponse로 읽혀집니다.
  • 실행 중인 프로시저를 중지하면 가장 가까운 프레임에서 해당 프로시저에 속한 범위가 제거됩니다. 다른 요청이 이미 커서를 대체한 경우 이를 취소해도 영향을 받지 않습니다.
  • 두 개의 독립적인 수동 선택에 대해 하나의 클라이언트 인터페이스 십자선을 동시에 사용할 수 없습니다. 이전 요청이 처리될 때까지 새 요청을 시작하지 마세요.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 선택한 타일의 좌표 읽기 - 직접 스크립트

매개변수와 실행 흐름:

  • 결과[1] - graphic, 결과[2]/[3]/[4] - X/Y/Z. 세계 타일 serial의 결과[0]는 0와 같습니다.
  • 유형, 좌표 및 serial는 별도의 필드입니다. 이 배열에는 정적 레이어 인덱스가 없습니다.
UO.ClientRequestTileTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
    var result = UO.ClientTargetResponse();
    if (Truth(ArrayLength(result) == 5))
    {
        UO.Print("Type: " + UO.Int2Hex(result[1]));
        UO.Print(Convert.ToString(result[2]) + "," + Convert.ToString(result[3]) + "," + Convert.ToString(result[4]));
    }
}

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

2. 선택한 셀의 좌표 저장 - 스크립트 기능

매개변수와 실행 흐름:

  • 셀의 경우 X/Y/Z는 2/3/4 필드에 있습니다. 전역 저장소 문자열; graphic 및 serial는 여기서 좌표를 대체하지 않습니다.
return  RunScenario();
 object? RunScenario()
{
    UO.ClientRequestTileTarget();
    if (UO.WaitForClientTargetResponse(5000) == 0)
        return false;
    var selection = (object? [])UO.ClientTargetResponse();
    if (selection.Length != 5)
        return false;
    UO.SetGlobal("route.x", Convert.ToString(selection[2]));
    UO.SetGlobal("route.y", Convert.ToString(selection[3]));
    UO.SetGlobal("route.z", Convert.ToString(selection[4]));
    return true;
    return null;
}

3. 로컬 셀 선택 중단 - 스크립트 클래스

매개변수와 실행 흐름:

  • CancelTarget는 로컬 커서를 재정의합니다. 취소 후 콜백이 있다고 해서 선택이 성공했다는 의미는 아닙니다.
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.ClientRequestTileTarget();
        await WaitAsync(1000);
        UO.CancelTarget();
        if (UO.ClientTargetResponsePresent() != 0)
        {
            var result = (object? [])UO.ClientTargetResponse();
            UO.Print($"Response after cancel: {result.Length} fields");
        }

        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.ClientRequestTileTarget() — UO.ClientRequestTileTarget()

매개변수: 매개변수가 없습니다.

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "clientrequesttiletarget": bridge.RequestClientTarget(true); return InjectionValue.Unit;

UO.ClientTargetResponse

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

C# 시그니처

dynamic UO.ClientTargetResponse();

마지막 로컬 ClientRequest*의 결과를 배열에 복사합니다.

매개변수

매개변수가 없습니다.

반환값

5개의 int 배열: [0]=serial 물체(0 지상 근처/고정), [1]=graphic/type, [2]=X, [3]=Y, [4]=Z. 선택 전, 새 요청으로 재설정된 후, 취소 또는 부적절한 선택 시 빈 배열이 반환됩니다. hue, 지도, 정적 레이어 인덱스 및 토지/정적 속성이 누락되었습니다. 이것은 명명된 필드가 있는 개체가 아닙니다.

동작

  • 읽기는 결과를 소비하지 않으며 다시 읽을 수 있습니다. 새로운 ClientRequest*가 이를 대체합니다.
  • 인덱스에 액세스하기 전에 항상 ArrayLength(result)=5을 확인하세요.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 아이템이나 캐릭터 선택 - 직접 스크립트

매개변수와 실행 흐름:

  • 5000 — 클릭 대기 시간 초과(밀리초). 새 쿼리는 이전 결과를 재설정합니다.
  • 5개 필드의 배열은 선택한 개체를 나타냅니다. 결과[0]는 type가 아니라 serial입니다.
UO.ClientRequestObjectTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
    var result = UO.ClientTargetResponse();
    if (Truth(ArrayLength(result) == 5))
    {
        UO.Print("Serial: " + UO.Int2Hex(result[0]));
    }
    else
    {
        UO.Print("Selection cancelled");
    }
}

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

2. 선택한 타일의 좌표 읽기 - 스크립트 기능

매개변수와 실행 흐름:

  • 결과[1] - graphic, 결과[2]/[3]/[4] - X/Y/Z. 세계 타일 serial의 결과[0]는 0와 같습니다.
  • 유형, 좌표 및 serial는 별도의 필드입니다. 이 배열에는 정적 레이어 인덱스가 없습니다.
return  RunScenario();
 object? RunScenario()
{
    UO.ClientRequestTileTarget();
    if (Truth(UO.WaitForClientTargetResponse(5000)))
    {
        var result = UO.ClientTargetResponse();
        if (Truth(ArrayLength(result) == 5))
        {
            UO.Print("Type: " + UO.Int2Hex(result[1]));
            UO.Print(Convert.ToString(result[2]) + "," + Convert.ToString(result[3]) + "," + Convert.ToString(result[4]));
        }
    }

    return null;
}

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

3. 취소는 응답이지만 객체는 아닙니다. - 스크립트 클래스

매개변수와 실행 흐름:

  • CancelTarget는 로컬 선택을 취소합니다. 콜백은 빈 결과를 반환합니다.
  • ClientTargetResponsePresent는 1을 제공하지만 배열의 길이는 0입니다. 길이를 확인하지 않고 결과[0]에 액세스하지 마세요.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.ClientRequestObjectTarget();
        UO.CancelTarget();
        if (Truth(UO.ClientTargetResponsePresent()))
        {
            var result = UO.ClientTargetResponse();
            UO.Print("Fields: " + Convert.ToString(ArrayLength(result)));
        }

        return null;
    }

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

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.ClientTargetResponse() — UO.ClientTargetResponse()

매개변수: 매개변수가 없습니다.

결과: dynamic / Any.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "clienttargetresponse":

                    return new InjectionValue(bridge.ClientTargetResponse().Select(value => new InjectionValue(value)).ToArray());

UO.ClientTargetResponsePresent

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

C# 시그니처

dynamic UO.ClientTargetResponsePresent();

마지막 로컬 선택 요청에 대한 응답이 수신되었는지 확인합니다.

매개변수

매개변수가 없습니다.

반환값

int 1 — 취소를 포함하여 콜백이 이미 응답했습니다. 0 - 새로운 선택이 아직 완료되지 않았습니다. 1 값은 객체의 존재를 보장하지 않습니다. 취소하면 ClientTargetResponse가 빈 배열을 반환합니다.

명령의 결과는 숫자 플래그입니다. 1는 충족된 조건을 의미하고, 0는 충족되지 않은 조건을 의미합니다. var result = command(...) 후에 (결과 != 0) 또는 (결과 == 0)인지 확인하세요. 한 번의 호출 결과를 저장합니다. 반복된 호출을 통해 해당 작업을 다시 수행하거나 이미 변경된 상태를 읽을 수 있습니다.

동작

  • 서버 시야의 존재를 나타내지 않으며 WaitTarget 대기열을 설명하지 않습니다.
  • 결과를 읽어도 이 플래그는 재설정되지 않습니다. 다음 ClientRequest*에 의해 재설정됩니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 취소는 응답이지만 객체는 아닙니다. - 직선 스크립트

매개변수와 실행 흐름:

  • CancelTarget는 로컬 선택을 취소합니다. 콜백은 빈 결과를 반환합니다.
  • ClientTargetResponsePresent는 1을 제공하지만 배열의 길이는 0입니다. 길이를 확인하지 않고 결과[0]에 액세스하지 마세요.
UO.ClientRequestObjectTarget();
UO.CancelTarget();
if (Truth(UO.ClientTargetResponsePresent()))
{
    var result = UO.ClientTargetResponse();
    UO.Print("Fields: " + Convert.ToString(ArrayLength(result)));
}

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

2. 개체 선택 후 준비 상태 확인 - 스크립트 기능

매개변수와 실행 흐름:

  • 응답 준비 상태와 내용이 모두 확인됩니다. 1 속성은 serial 개체가 아닙니다.
return  RunScenario();
 object? RunScenario()
{
    UO.ClientRequestObjectTarget();
    if (UO.WaitForClientTargetResponse(5000) == 0)
        return false;
    if (UO.ClientTargetResponsePresent() == 0)
        return false;
    var response = (object? [])UO.ClientTargetResponse();
    return response.Length == 5 && Convert.ToInt32(response[0]) != 0;
    return null;
}

3. 셀 선택 준비 상태 설문조사 - 스크립트 클래스

매개변수와 실행 흐름:

  • 폴링은 5초로 제한됩니다. 응답이 없으면 커서가 취소됩니다. X/Y/Z 필드는 전체 응답에서만 읽혀집니다.
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.ClientRequestTileTarget();
        for (int attempt = 0; attempt < 50; attempt++)
        {
            if (UO.ClientTargetResponsePresent() != 0)
            {
                var response = (object? [])UO.ClientTargetResponse();
                if (response.Length == 5)
                    UO.Print($"Selected tile: {response[2]},{response[3]},{response[4]}");
                return null;
            }

            await WaitAsync(100);
        }

        UO.CancelTarget();
        UO.Print("Selection timed out");
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.ClientTargetResponsePresent() — UO.ClientTargetResponsePresent()

매개변수: 매개변수가 없습니다.

결과: dynamic / Any.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "clienttargetresponsepresent": return new InjectionValue(bridge.ClientTargetResponsePresent());

UO.IsWaitTargetActive

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

C# 시그니처

dynamic UO.IsWaitTargetActive();

준비된 응답이 대상 대기열에 남아 있는지 확인합니다.

매개변수

매개변수가 없습니다.

반환값

int 1 - 취소되지 않은 지연된 물체, 타일 또는 다음 광경의 ​​취소가 있습니다. 0 - 대기열이 비어 있습니다. 열린 커서가 없습니다. 커서 사용의 경우 TargetPresent/Targeting.

명령의 결과는 숫자 플래그입니다. 1는 충족된 조건을 의미하고, 0는 충족되지 않은 조건을 의미합니다. var result = command(...) 후에 (결과 != 0) 또는 (결과 == 0)인지 확인하세요. 한 번의 호출 결과를 저장합니다. 반복된 호출을 통해 해당 작업을 다시 수행하거나 이미 변경된 상태를 읽을 수 있습니다.

동작

  • 전체 클라이언트의 대기열을 읽습니다. 여러 프로시저가 동시에 실행되는 경우 각 프로시저의 응답이 고려됩니다.
  • 0은 보류 중인 응답이 없음을 의미합니다. 서버에서 스킬이나 주문의 성공적인 사용을 확인하지는 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 준비 확인 - 직접 스크립트

매개변수와 실행 흐름:

  • WaitTargetSelf 이후 및 서버 대상 1 이전이 예상됩니다.
  • CancelWaitTarget 대기열을 지웁니다. 다음 테스트는 0을 제공합니다.
UO.WaitTargetSelf();
UO.Print(Convert.ToString(UO.IsWaitTargetActive()));
UO.CancelWaitTarget();

2. 응답이 소비될 때까지 제한적으로 대기 - 스크립트 기능

매개변수와 실행 흐름:

  • 수표에는 매개변수가 없습니다. UO.Wait=50ms, 최대 20 기대치.
  • 답변이 남아 있으면 취소됩니다. 서버 액션 결과에 대한 확인을 별도로 추가합니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var attempts = 0;
    while (Truth(UO.IsWaitTargetActive()) && Truth(attempts < 20))
    {
        await Delay(50);
        attempts = attempts + 1;
    }

    if (Truth(UO.IsWaitTargetActive()))
    {
        UO.CancelWaitTarget();
    }

    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. 대기열과 시력의 차이점 표시 - 스크립트 클래스

매개변수와 실행 흐름:

  • 첫 번째 줄에는 지연된 응답이 표시되고 두 번째 줄에는 시력 상태가 표시됩니다.
  • 커서가 없는 큐와 큐가 없는 커서가 가능합니다. 이 값은 서로 바꿔 사용할 수 없습니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
        UO.Print("Cursor: " + Convert.ToString(UO.TargetPresent()));
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.IsWaitTargetActive() — UO.IsWaitTargetActive()

매개변수: 매개변수가 없습니다.

결과: dynamic / Any.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "iswaittargetactive": return new InjectionValue(Waiting());

UO.LastTarget

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

C# 시그니처

int UO.LastTarget();

마지막으로 저장된 대상 객체의 serial를 읽어옵니다.

매개변수

매개변수가 없습니다.

반환값

int - serial/ID, type도 아니고 bool도 아닙니다. 0은 목표 객체가 없음을 의미합니다. 지상 및 정적에도 serial 0가 있지만 좌표는 저장할 수 있습니다. 모든 32 비트가 유지됩니다. 0이 아닌 ID를 확인하려면 > 0 또는 == true가 아닌 != 0을 사용하세요.

동작

  • 매개변수가 없습니다. 조준경을 켜지 않으며, 새로운 대상을 선택하지 않으며, 공격하거나 패킷을 보내지 않습니다. LastTarget는 LastAttack 및 LastStatus와 다릅니다. 일반적인 선택 self는 마지막 대상을 대체하지 않습니다. 명시적인 ClientMarkChar로 변경할 수 있습니다.
  • SetEntity에는 알려진 엔터티가 보존됩니다.X/Y; 컨테이너에 있는 항목의 경우 이는 내용의 좌표가 될 수 있습니다. SetLand/SetStatic 선택한 지점의 X/Y 세상을 구하세요. 이후에 개체를 이동/제거해도 저장된 좌표는 변경되지 않습니다. 현재 위치는 GetX/GetY(serial)를 사용하세요.
  • Clear 및 World.Clear 클리어 녹음(스크립트가 저장될 때 포함). 명시적 설정의 알 수 없는 serial는 이전 X/Y를 상속하지 않으며 0가 됩니다. 이는 대상이 서버에 존재함을 보장하지 않습니다.
  • 별도의 명령으로 serial 및 X/Y를 읽는 것은 원자적이지 않습니다. 대상 객체의 경우 LastTile는 네트워크 X/Y=65535를 저장합니다. 이는 저장된 개체 위치가 아닙니다. 접지/정적 LastTile(1)/(2) 읽기 선택 X/Y. 괄호가 없는 lasttarget는 변수로 재정의되지 않는 한 내장된 실시간 값입니다.
  • World.Clear 호출 ClearWorldState: 활성 콜백, 저장된 대상 및 재생 패킷을 재설정합니다. 정상적인 재설정은 기록을 저장합니다. 내부 TargetLast는 저장된 패킷을 활성 서버 대상에만 보냅니다. 기록이 없거나 로컬 콜백의 경우 아무것도 보내지 않고 대상을 저장합니다. 활성 클라이언트 콜백은 취소로 null를 한 번 수신합니다. 응답이 비어 있으면 ClientTargetResponsePresent는 1가 됩니다. 완료된 선택은 다시 알림을 받지 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 저장된 값 읽기 - 직접 스크립트

매개변수와 실행 흐름:

  • value는 명령의 유일한 결과입니다. HEX는 ID, Convert를 표시합니다.ToString는 좌표입니다. 호출에서는 아무것도 선택되지 않습니다.
var value = UO.LastTarget();
UO.Print("Saved value: " + Hex(value));

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

2. 저장된 위치와 현재 위치 비교 - 스크립트 기능

매개변수와 실행 흐름:

  • id — 저장됨 serial. Exists는 GetX/GetY 이전에 객체가 있는지 확인합니다. 저장된 좌표와 현재 좌표가 다를 수 있습니다. serial=0를 사용하면 예제에서는 선택한 점을 인쇄하지만 0 자체에서는 해당 점이 선택되었음을 증명하지 않습니다.
return  RunScenario();
 object? RunScenario()
{
    var id = UO.LastTarget();
    var x = UO.LastTargetX();
    var y = UO.LastTargetY();
    UO.Print("Saved XY: " + Convert.ToString(x) + "," + Convert.ToString(y));
    if (Truth(id != 0) && Truth(UO.Exists(id)))
    {
        UO.Print("Live XY: " + Convert.ToString(UO.GetX(id)) + "," + Convert.ToString(UO.GetY(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. 전체 도우미 ReadTargetValue - 스크립트 클래스

매개변수와 실행 흐름:

  • 최소/최대는 API 매개변수가 아닌 어시스턴트 결과의 허용 가능한 범위를 지정합니다. 어시스턴트는 완전히 정의되어 있습니다. -1는 자체적으로 범위를 벗어났다는 신호입니다. ID의 경우 검사에서는 범위 대신 최상위 비트를 포함하여 0이 아닌 모든 serial를 저장합니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        var value = ReadTargetValue();
        UO.Print("Checked value: " + Convert.ToString(value));
        return null;
    }

    dynamic ReadTargetValue()
    {
        var value = UO.LastTarget();
        if (Truth(value == 0))
        {
            return -1;
        }

        return value;
    }

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

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.LastTarget() — UO.LastTarget()

매개변수: 매개변수가 없습니다.

결과: int / Integer.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "lasttarget": return new InjectionValue(bridge.LastTarget);

UO.LastTargetX

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

C# 시그니처

int UO.LastTargetX();

마지막 대상을 선택했을 때 저장된 X 좌표를 읽어옵니다.

매개변수

매개변수가 없습니다.

반환값

int은 화면 픽셀이 아닌 X의 저장된 좌표입니다. 지우기 전/후 또는 알 수 없는 물체에 대해 - 0; 실제 좌표 0도 허용됩니다. bool가 아닙니다. 지상/정적의 경우 LastTarget()=0에서도 작동합니다.

동작

  • 매개변수가 없습니다. 조준경을 켜지 않으며, 새로운 대상을 선택하지 않으며, 공격하거나 패킷을 보내지 않습니다. LastTarget는 LastAttack 및 LastStatus와 다릅니다. 일반적인 선택 self는 마지막 대상을 대체하지 않습니다. 명시적인 ClientMarkChar로 변경할 수 있습니다.
  • SetEntity에는 알려진 엔터티가 보존됩니다.X/Y; 컨테이너에 있는 항목의 경우 이는 내용의 좌표가 될 수 있습니다. SetLand/SetStatic 선택한 지점의 X/Y 세상을 구하세요. 이후에 개체를 이동/제거해도 저장된 좌표는 변경되지 않습니다. 현재 위치는 GetX/GetY(serial)를 사용하세요.
  • Clear 및 World.Clear 클리어 녹음(스크립트가 저장될 때 포함). 명시적 설정의 알 수 없는 serial는 이전 X/Y를 상속하지 않으며 0가 됩니다. 이는 대상이 서버에 존재함을 보장하지 않습니다.
  • 별도의 명령으로 serial 및 X/Y를 읽는 것은 원자적이지 않습니다. 대상 객체의 경우 LastTile는 네트워크 X/Y=65535를 저장합니다. 이는 저장된 개체 위치가 아닙니다. 접지/정적 LastTile(1)/(2) 읽기 선택 X/Y. 괄호가 없는 lasttarget는 변수로 재정의되지 않는 한 내장된 실시간 값입니다.
  • World.Clear 호출 ClearWorldState: 활성 콜백, 저장된 대상 및 재생 패킷을 재설정합니다. 정상적인 재설정은 기록을 저장합니다. 내부 TargetLast는 저장된 패킷을 활성 서버 대상에만 보냅니다. 기록이 없거나 로컬 콜백의 경우 아무것도 보내지 않고 대상을 저장합니다. 활성 클라이언트 콜백은 취소로 null를 한 번 수신합니다. 응답이 비어 있으면 ClientTargetResponsePresent는 1가 됩니다. 완료된 선택은 다시 알림을 받지 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 저장된 값 읽기 - 직접 스크립트

매개변수와 실행 흐름:

  • value는 명령의 유일한 결과입니다. HEX는 ID, Convert를 표시합니다.ToString는 좌표입니다. 호출에서는 아무것도 선택되지 않습니다.
var value = UO.LastTargetX();
UO.Print("Saved value: " + Convert.ToString(value));

2. 저장된 위치와 현재 위치 비교 - 스크립트 기능

매개변수와 실행 흐름:

  • id — 저장됨 serial. Exists는 GetX/GetY 이전에 객체가 있는지 확인합니다. 저장된 좌표와 현재 좌표가 다를 수 있습니다. serial=0를 사용하면 예제에서는 선택한 점을 인쇄하지만 0 자체에서는 해당 점이 선택되었음을 증명하지 않습니다.
return  RunScenario();
 object? RunScenario()
{
    var id = UO.LastTarget();
    var x = UO.LastTargetX();
    var y = UO.LastTargetY();
    UO.Print("Saved XY: " + Convert.ToString(x) + "," + Convert.ToString(y));
    if (Truth(id != 0) && Truth(UO.Exists(id)))
    {
        UO.Print("Live XY: " + Convert.ToString(UO.GetX(id)) + "," + Convert.ToString(UO.GetY(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. 전체 도우미 ReadTargetValue - 스크립트 클래스

매개변수와 실행 흐름:

  • 최소/최대는 API 매개변수가 아닌 어시스턴트 결과의 허용 가능한 범위를 지정합니다. 어시스턴트는 완전히 정의되어 있습니다. -1는 자체적으로 범위를 벗어났다는 신호입니다. ID의 경우 검사에서는 범위 대신 최상위 비트를 포함하여 0이 아닌 모든 serial를 저장합니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        var value = ReadTargetValue(0, 65535);
        UO.Print("Checked value: " + Convert.ToString(value));
        return null;
    }

    dynamic ReadTargetValue(dynamic minimum, dynamic maximum)
    {
        var value = UO.LastTargetX();
        if (Truth(value < minimum) || Truth(value > maximum))
        {
            return -1;
        }

        return value;
    }

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

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.LastTargetX() — UO.LastTargetX()

매개변수: 매개변수가 없습니다.

결과: int / Integer.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public int LastTargetX() => bridge is ITargetSnapshotBridge snapshot ? snapshot.LastTargetX : bridge.GetX(bridge.LastTarget);

UO.LastTargetY

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

C# 시그니처

int UO.LastTargetY();

마지막 대상을 선택했을 때 저장된 Y 좌표를 읽어옵니다.

매개변수

매개변수가 없습니다.

반환값

int은 화면 픽셀이 아닌 Y의 저장된 좌표입니다. 지우기 전/후 또는 알 수 없는 물체에 대해 - 0; 실제 좌표 0도 허용됩니다. bool가 아닙니다. 지상/정적의 경우 LastTarget()=0에서도 작동합니다.

동작

  • 매개변수가 없습니다. 조준경을 켜지 않으며, 새로운 대상을 선택하지 않으며, 공격하거나 패킷을 보내지 않습니다. LastTarget는 LastAttack 및 LastStatus와 다릅니다. 일반적인 선택 self는 마지막 대상을 대체하지 않습니다. 명시적인 ClientMarkChar로 변경할 수 있습니다.
  • SetEntity에는 알려진 엔터티가 보존됩니다.X/Y; 컨테이너에 있는 항목의 경우 이는 내용의 좌표가 될 수 있습니다. SetLand/SetStatic 선택한 지점의 X/Y 세상을 구하세요. 이후에 개체를 이동/제거해도 저장된 좌표는 변경되지 않습니다. 현재 위치는 GetX/GetY(serial)를 사용하세요.
  • Clear 및 World.Clear 클리어 녹음(스크립트가 저장될 때 포함). 명시적 설정의 알 수 없는 serial는 이전 X/Y를 상속하지 않으며 0가 됩니다. 이는 대상이 서버에 존재함을 보장하지 않습니다.
  • 별도의 명령으로 serial 및 X/Y를 읽는 것은 원자적이지 않습니다. 대상 객체의 경우 LastTile는 네트워크 X/Y=65535를 저장합니다. 이는 저장된 개체 위치가 아닙니다. 접지/정적 LastTile(1)/(2) 읽기 선택 X/Y. 괄호가 없는 lasttarget는 변수로 재정의되지 않는 한 내장된 실시간 값입니다.
  • World.Clear 호출 ClearWorldState: 활성 콜백, 저장된 대상 및 재생 패킷을 재설정합니다. 정상적인 재설정은 기록을 저장합니다. 내부 TargetLast는 저장된 패킷을 활성 서버 대상에만 보냅니다. 기록이 없거나 로컬 콜백의 경우 아무것도 보내지 않고 대상을 저장합니다. 활성 클라이언트 콜백은 취소로 null를 한 번 수신합니다. 응답이 비어 있으면 ClientTargetResponsePresent는 1가 됩니다. 완료된 선택은 다시 알림을 받지 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 저장된 값 읽기 - 직접 스크립트

매개변수와 실행 흐름:

  • value는 명령의 유일한 결과입니다. HEX는 ID, Convert를 표시합니다.ToString는 좌표입니다. 호출에서는 아무것도 선택되지 않습니다.
var value = UO.LastTargetY();
UO.Print("Saved value: " + Convert.ToString(value));

2. 저장된 위치와 현재 위치 비교 - 스크립트 기능

매개변수와 실행 흐름:

  • id — 저장됨 serial. Exists는 GetX/GetY 이전에 객체가 있는지 확인합니다. 저장된 좌표와 현재 좌표가 다를 수 있습니다. serial=0를 사용하면 예제에서는 선택한 점을 인쇄하지만 0 자체에서는 해당 점이 선택되었음을 증명하지 않습니다.
return  RunScenario();
 object? RunScenario()
{
    var id = UO.LastTarget();
    var x = UO.LastTargetX();
    var y = UO.LastTargetY();
    UO.Print("Saved XY: " + Convert.ToString(x) + "," + Convert.ToString(y));
    if (Truth(id != 0) && Truth(UO.Exists(id)))
    {
        UO.Print("Live XY: " + Convert.ToString(UO.GetX(id)) + "," + Convert.ToString(UO.GetY(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. 전체 도우미 ReadTargetValue - 스크립트 클래스

매개변수와 실행 흐름:

  • 최소/최대는 API 매개변수가 아닌 어시스턴트 결과의 허용 가능한 범위를 지정합니다. 어시스턴트는 완전히 정의되어 있습니다. -1는 자체적으로 범위를 벗어났다는 신호입니다. ID의 경우 검사에서는 범위 대신 최상위 비트를 포함하여 0이 아닌 모든 serial를 저장합니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        var value = ReadTargetValue(0, 65535);
        UO.Print("Checked value: " + Convert.ToString(value));
        return null;
    }

    dynamic ReadTargetValue(dynamic minimum, dynamic maximum)
    {
        var value = UO.LastTargetY();
        if (Truth(value < minimum) || Truth(value > maximum))
        {
            return -1;
        }

        return value;
    }

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

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.LastTargetY() — UO.LastTargetY()

매개변수: 매개변수가 없습니다.

결과: int / Integer.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public int LastTargetY() => bridge is ITargetSnapshotBridge snapshot ? snapshot.LastTargetY : bridge.GetY(bridge.LastTarget);

UO.LastTile

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

C# 시그니처

string UO.LastTile();
int UO.LastTile(object? index);

마지막으로 저장된 타일 대상을 읽습니다.

매개변수

  • index - 선택사항 int 0..3: 0=graphic, 1=X, 2=Y, 3=Z. 범위를 벗어났습니다. - 0. 인덱스가 없으면 전체 레코드의 행이 반환됩니다.

반환값

인수 없음 string "graphic X Y Z" 십진수 필드 포함; 인덱스 포함 - 한 필드의 int. 누락/짧은 항목은 0으로 채워집니다.

동작

  • NormalizeLastTile는 누락된 필드를 4개로 완성합니다. 이 줄에는 map/hue/serial가 포함되어 있지 않습니다. 0 값은 실제 graphic/좌표 또는 필드 없음을 의미할 수 있습니다.
  • 이 명령은 저장된 타일 대상만 읽습니다. 대상을 생성하거나 새 셀을 선택하지 않습니다. WaitTargetTile("lasttile")은 별도의 레코드 존재 확인을 사용합니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

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

매개변수와 실행 흐름:

  • 마지막으로 저장된 타일 대상을 읽습니다.
UO.Print(UO.LastTile());

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

매개변수와 실행 흐름:

  • NormalizeLastTile는 누락된 필드를 4개로 완성합니다. 이 줄에는 map/hue/serial가 포함되어 있지 않습니다. 0 값은 실제 graphic/좌표 또는 필드 없음을 의미할 수 있습니다.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.LastTile(1));
    UO.Print(UO.LastTile(2));
    UO.Print(UO.LastTile(3));
    return null;
}

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

매개변수와 실행 흐름:

  • 이 명령은 저장된 타일 대상만 읽습니다. 대상을 생성하거나 새 셀을 선택하지 않습니다. WaitTargetTile("lasttile")은 별도의 레코드 존재 확인을 사용합니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        var graphic = UO.LastTile(0);
        var x = UO.LastTile(1);
        var y = UO.LastTile(2);
        var z = UO.LastTile(3);
        UO.Print(Convert.ToString(graphic) + " " + Convert.ToString(x) + " " + Convert.ToString(y) + " " + Convert.ToString(z));
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.LastTile() — UO.LastTile()

매개변수: 매개변수가 없습니다.

결과: string / String.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public string LastTile()

        {

            int[] tileInfo = NormalizeLastTile(bridge.LastTile());



            return $"{tileInfo[0]} {tileInfo[1]} {tileInfo[2]} {tileInfo[3]}";

        }

UO.LastTile(index) — UO.LastTile(Any)

매개변수: index (Any)

결과: int / Integer.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public int LastTile(InjectionValue index)

        {

            var i = NumberConversions.ToInt(index);

            if (i < 0 || i > 3)

                return 0;



            return NormalizeLastTile(bridge?.LastTile())[i];



        }

UO.Target

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

C# 시그니처

void UO.Target();
void UO.Target(object? @object);
void UO.Target(object? targetKey, object? target);
void UO.Target(object? targetKey, object? target, object? targetType, object? @type, object? x, object? y, object? z);

예상 대상을 취소/설정하거나 명시적인 대상 패킷을 보냅니다.

매개변수

  • object — 인수 1개: serial/alias는 WaitTargetObject을 통해 배치됩니다. 인수 없음 - CancelTarget.
  • targetKey — ID 대상 쿼리의 int 인수의 2/7 형식에서 일반적으로 UO.TargetID()입니다. 패키지에 직접 전달되며 키를 누르지 않습니다.
  • target — 양식 2: serial/별칭 또는 "lasttile". 모양 7: serial 개체; "ground"은 serial=0을 남깁니다.
  • targetType - 7 형식만 해당: 프로토콜 유형 대상, 일반적으로 0 객체, 1 타일. byte로 축소 가능.
  • type - 7 모양만 해당: graphic 및 타일/알 수 없는 개체의 세계 좌표; graphic/X/Y는 ushort로, Z는 sbyte로 축소됩니다. 알려진 엔터티 브리지의 경우 이를 실제 엔터티 필드로 바꿉니다.
  • x - 7 모양만 해당: graphic 및 타일/알 수 없는 개체의 세계 좌표; graphic/X/Y는 ushort로, Z는 sbyte로 축소됩니다. 알려진 엔터티 브리지의 경우 이를 실제 엔터티 필드로 바꿉니다.
  • y - 7 모양만 해당: graphic 및 타일/알 수 없는 개체의 세계 좌표; graphic/X/Y는 ushort로, Z는 sbyte로 축소됩니다. 알려진 엔터티 브리지의 경우 이를 실제 엔터티 필드로 바꿉니다.
  • z - 7 모양만 해당: graphic 및 타일/알 수 없는 개체의 세계 좌표; graphic/X/Y는 ushort로, Z는 sbyte로 축소됩니다. 알려진 엔터티 브리지의 경우 이를 실제 엔터티 필드로 바꿉니다.

반환값

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

동작

  • 인수가 없거나 하나인 양식은 ExecuteLegacyManualAlias를 따라 진행되고 대기열을 제어합니다. 2/7 양식은 Target를 직접 호출하고 다음 대상의 대기열이 아닌 Send_TargetObject를 보냅니다.
  • 2 형식에서 "lasttile"은 저장된 대상 타일의 graphic/X/Y/Z를 사용합니다. 부재하면 메시지가 표시됩니다. 알 수 없는 개체 별칭도 메시지를 표시합니다. targetType=0가 있는 7 형식은 serial를 해결하려고 시도합니다. 다른 유형은 serial=0을 떠나세요.
  • Bridge.Target는 활성 커서/일치 targetKey를 확인하지 않습니다. 현재 ID를 전달합니다. 이전 요청의 이전 키를 사용하지 마세요. 호출은 서버에서 수락될 때까지 기다리지 않습니다.
  • 2/7 인수의 명시적 형식은 패킷을 직접 보냅니다. 음수 serial는 0이 되고, targetKey는 uint로 줄어듭니다. 이 분기는 로컬 커서/큐를 지우거나 TicksTarget를 업데이트하지 않습니다. TargetToObject/TargetToTile 클라이언트의 활성 조준에 대해 다른 경로를 사용합니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

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

매개변수와 실행 흐름:

  • 예상 대상을 취소/설정하거나 명시적인 대상 패킷을 보냅니다.
UO.Target("self");
UO.Print(UO.Waiting());
UO.Target();

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

매개변수와 실행 흐름:

  • 인수가 없거나 하나인 양식은 ExecuteLegacyManualAlias를 따라 진행되고 대기열을 제어합니다. 2/7 양식은 Target를 직접 호출하고 다음 대상의 대기열이 아닌 Send_TargetObject를 보냅니다.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.TargetPresent()))
    {
        UO.Target(UO.TargetID(), "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;

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

매개변수와 실행 흐름:

  • Bridge.Target는 활성 커서/일치 targetKey를 확인하지 않습니다. 현재 ID를 전달합니다. 이전 요청의 이전 키를 사용하지 마세요. 호출은 서버에서 수락될 때까지 기다리지 않습니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        if (Truth(UO.TargetPresent()))
        {
            UO.Target(UO.TargetID(), "ground", 1, 0, UO.GetX(), UO.GetY(), UO.GetZ());
        }

        return null;
    }

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

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.Target() — UO.Target()

매개변수: 매개변수가 없습니다.

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "target":

                    if (arguments.Length > 0) WaitTargetObject(arguments[0].ToString());

                    else CancelTarget();

                    break;

UO.Target(object) — UO.Target(Any)

매개변수: object (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "target":

                    if (arguments.Length > 0) WaitTargetObject(arguments[0].ToString());

                    else CancelTarget();

                    break;

UO.Target(targetKey, target) — UO.Target(Any,Any)

매개변수: targetKey (Any), target (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void Target(InjectionValue targetKey, InjectionValue target)

        {

            int key = NumberConversions.ToInt(targetKey);

            string selector = target.Kind == InjectionValueKind.String ? target.String : string.Empty;



            if (selector.Equals("lasttile", StringComparison.OrdinalIgnoreCase))

            {

                int[] tile = bridge.LastTile() ?? Array.Empty<int>();

                if (tile.Length >= 4)

                    bridge.Target(key, 0, 1, tile[0], tile[1], tile[2], tile[3]);

                else

                    SystemMessage("UO.Target: lasttile is unavailable");

                return;

            }



            if (TryGetObject(target, out int serial))

                bridge.Target(key, serial, 0, 0, 0, 0, 0);

            else

                SystemMessage($"UO.Target: invalid target '{selector}'");

        }

UO.Target(targetKey, target, targetType, type, x, y, z) — UO.Target(Any,Any,Any,Any,Any,Any,Any)

매개변수: targetKey (Any), target (Any), targetType (Any), type (Any), x (Any), y (Any), z (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void Target

        (

            InjectionValue targetKey,

            InjectionValue target,

            InjectionValue targetType,

            InjectionValue type,

            InjectionValue x,

            InjectionValue y,

            InjectionValue z

        )

        {

            int targetTypeValue = NumberConversions.ToInt(targetType);

            string selector = target.Kind == InjectionValueKind.String ? target.String : string.Empty;

            int serial = 0;



            if (targetTypeValue == 0 && !selector.Equals("ground", StringComparison.OrdinalIgnoreCase))

                TryGetObject(target, out serial);



            bridge.Target

            (

                NumberConversions.ToInt(targetKey),

                serial,

                targetTypeValue,

                ResolveType(type),

                NumberConversions.ToInt(x),

                NumberConversions.ToInt(y),

                NumberConversions.ToInt(z)

            );

        }

UO.TargetByResource

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

C# 시그니처

void UO.TargetByResource(object? objID, object? resource);

graphic에서 아이템을 검색하여, 주어진 대상을 준비하고, 찾은 아이템을 사용합니다.

매개변수

  • objID — 직렬/ID 개체: int, 숫자/16진수 문자열 또는 설정된 별칭(예: "lasttarget"). 이것은 graphic/type가 아닙니다. 조치를 취하기 전에 로드된 개체를 확인하십시오.
  • resource — 검색할 그래픽/type 항목, ResolveType 허용; 이는 Pascal API의 리소스 필드 번호가 아닙니다.

반환값

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

동작

  • 이 구현에서는 FindType(ResolveType(Resource), -1, 0, -1, true)가 항목을 검색합니다. 발견된 경우 != 0, 첫 번째 브리지.WaitTargetObject(ObjID), 다음 브리지.UseObject(발견).
  • 아무것도 발견되지 않았습니다. 아무것도 설치되거나 사용되지 않았습니다. 이 명령은 별도의 리소스 대상 패킷을 보내지 않습니다. 범위=0는 인벤토리 콘텐츠/장비를 포함하여 RootContainer=Player.Serial이 있는 항목을 선택합니다. recursive=true는 브리지로 전달되지만 이scope0 분기 자체는 RootContainer을 사용합니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.TargetByResource");
UO.TargetByResource("self", "0x0E21");

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

매개변수와 실행 흐름:

  • graphic에서 아이템을 검색하여, 주어진 대상을 준비하고, 찾은 아이템을 사용합니다.
UO.TargetByResource("self", "0x0E21");

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

매개변수와 실행 흐름:

  • 이 구현에서는 FindType(ResolveType(Resource), -1, 0, -1, true)가 항목을 검색합니다. 발견된 경우 != 0, 첫 번째 브리지.WaitTargetObject(ObjID), 다음 브리지.UseObject(발견).
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.Exists("lasttarget")))
    {
        UO.TargetByResource("lasttarget", "0x0E21");
    }

    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는 인벤토리 콘텐츠/장비를 포함하여 RootContainer=Player.Serial이 있는 항목을 선택합니다. recursive=true는 브리지로 전달되지만 이scope0 분기 자체는 RootContainer을 사용합니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.TargetByResource("self", "0x0E21");
        UO.Print(UO.Waiting());
        UO.CancelWaitTarget();
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.TargetByResource(objID, resource) — UO.TargetByResource(Any,Any)

매개변수: objID (Any), resource (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "targetbyresource":

                {

                    int found = bridge.FindType(ResolveType(arguments[1]), -1, 0, -1, true);

                    if (found != 0) { bridge.WaitTargetObject(Arg(0)); bridge.UseObject(found); }

                    return InjectionValue.Unit;

                }

UO.TargetID

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

C# 시그니처

dynamic UO.TargetID();

현재 대상 커서의 ID를 읽습니다.

매개변수

매개변수가 없습니다.

반환값

int - 마지막 개체의 serial가 아닌 커서의 32 비트 ID. 커서가 없으면 0가 반환됩니다. 최상위 비트가 설정된 경우 int는 음수입니다. Int2Hex는 비트를 저장합니다. 실제 cursorID=0 및 로컬 범위에서는 0도 제공할 수 있습니다. TargetPresent에서 활동을 확인하세요. 이 클라이언트에서는 null ID에 대한 null이 아닌 특수 대체가 사용되지 않습니다.

동작

  • LastTarget/GetSerial("lasttarget")는 선택한 개체를 참조하고, TargetID는 대상 요청을 참조합니다. 이 값은 서로 대체될 수 없습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 활성 커서의 ID 인쇄 - 직접 스크립트

매개변수와 실행 흐름:

  • 논쟁이 없습니다.
  • Int2Hex을 사용하면 최상위 비트를 포함하여 ID의 모든 비트를 볼 수 있습니다.
if (Truth(UO.TargetPresent()))
{
    UO.Print(UO.Int2Hex(UO.TargetID()));
}

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

2. 두 가지 유형을 구별 ID - 스크립트 기능

매개변수와 실행 흐름:

  • 커서 — 시야의 ID, 물체의 object — serial.
  • TargetToObject에서는 커서가 아닌 object가 전달됩니다.
return  RunScenario();
 object? RunScenario()
{
    var cursor = UO.TargetID();
    var targetSerial = UO.GetSerial("lasttarget");
    UO.Print("Cursor: " + UO.Int2Hex(cursor));
    UO.Print("Object: " + targetSerial);
    return null;
}

3. 대기 후 확인 - 스크립트 클래스

매개변수와 실행 흐름:

  • 1000 — 대기 시간 초과(밀리초).
  • 발생 징후는 결과 WaitForTarget입니다. 이를 위해 커서 기호가 확인되지 않습니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        if (Truth(UO.WaitForTarget(1000)))
        {
            var cursor = UO.TargetID();
            UO.Print("Request: " + UO.Int2Hex(cursor));
        }
        else
        {
            UO.Print("No cursor arrived");
        }

        return null;
    }

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

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.TargetID() — UO.TargetID()

매개변수: 매개변수가 없습니다.

결과: dynamic / Any.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "targetid": return new InjectionValue(bridge.GetTargetCursorId());

UO.TargetPresent

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

C# 시그니처

dynamic UO.TargetPresent();

클라이언트에서 활성 대상 선택 커서를 확인합니다.

매개변수

매개변수가 없습니다.

반환값

int 1 - TargetManager.IsTargeting 설치; 0 - 활성 커서가 없습니다. 로컬 콜백 대상도 고려됩니다. 이는 serial 또는 대기열 상태 WaitTarget가 아닙니다.

명령의 결과는 숫자 플래그입니다. 1는 충족된 조건을 의미하고, 0는 충족되지 않은 조건을 의미합니다. var result = command(...) 후에 (결과 != 0) 또는 (결과 == 0)인지 확인하세요. 한 번의 호출 결과를 저장합니다. 반복된 호출을 통해 해당 작업을 다시 수행하거나 이미 변경된 상태를 읽을 수 있습니다.

동작

  • 상태를 한 번 읽습니다. 커서가 나타날 때까지 기다리지 않습니다.
  • 게임 작업 후 서버 십자선을 기다리려면 WaitForTarget를 사용하세요. 로컬 ClientRequest* - WaitForClientTargetResponse의 결과입니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 상태 표시 - 직접 스크립트

매개변수와 실행 흐름:

  • 논쟁이 없습니다.
  • 1 또는 0이 표시됩니다.
UO.Print(Convert.ToString(UO.TargetPresent()));

2. 열린 커서 취소 - 스크립트 기능

매개변수와 실행 흐름:

  • 조건은 활성 커서로 확인됩니다.
  • CancelTarget 이 클라이언트에서는 준비된 응답도 삭제됩니다.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.TargetPresent()))
    {
        UO.CancelTarget();
    }

    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. 게임 액션 요청 후 - 스크립트 클래스

매개변수와 실행 흐름:

  • UseSkill가 스킬을 요청하고, WaitForTarget가 3000ms까지 기다립니다.
  • TargetToObject는 활성 서버 대상에만 응답합니다. 시간 초과가 있으면 분기가 실행되지 않습니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.UseSkill("Anatomy");
        if (Truth(UO.WaitForTarget(3000)))
        {
            if (Truth(UO.TargetPresent()))
            {
                UO.TargetToObject("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;
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.TargetPresent() — UO.TargetPresent()

매개변수: 매개변수가 없습니다.

결과: dynamic / Any.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "targetpresent": return new InjectionValue(IsTargeting());

UO.TargetToObject

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

C# 시그니처

void UO.TargetToObject(object? objID);

이미 활성화된 서버 대상 serial 개체에 즉시 응답합니다.

매개변수

  • objID — 항목 또는 문자의 일련번호/ID, 숫자 또는 16진수/10진수 문자열, self/backpack/lasttarget/lastobject 또는 저장된 이름 AddObject. 이것은 type이 아닙니다. 명명된 개체에 작업을 수행하기 전에 Exists를 확인하세요. 해결되지 않은 별칭은 serial 0을 제공합니다.

반환값

void - 반환 값이 없습니다. 별도의 회선으로 전화하세요. true/false, serial 또는 type로 사용하지 마세요. 메타데이터 object? 호환되는 양식의 경우 실제 결과는 변경되지 않습니다 void.

동작

  • 활성 서버 커서가 없으면 아무 작업도 수행하지 않으며 지연된 응답을 생성하지 않습니다. 사전 준비는 WaitTargetObject/WaitTargetTile/WaitTargetXYZ를 사용하세요.
  • 로컬 ClientRequest* 및 기타 콜백 사이트는 이 명령으로 처리되지 않습니다.
  • 서버는 대상이 유효한지 여부를 확인합니다. 메모리 부족 serial의 경우 ID는 그래픽/좌표 필드가 0인 상태로 전송됩니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.TargetToObject");
UO.TargetToObject("self");

1. 열린 시야에 답장 - 직접 스크립트

매개변수와 실행 흐름:

  • 매개변수는 문자 자체를 정의합니다.
  • 향후 범위 대기열에는 아무것도 추가되지 않습니다.
if (Truth(UO.TargetPresent()))
{
    UO.TargetToObject("self");
}

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

2. 먼저 시력을 기다립니다 - 스크립트 기능

매개변수와 실행 흐름:

  • 3000 — 최대 대기 시간(밀리초); 시야를 요청한 작업은 이전에 수행되어야 합니다.
  • 이 명령은 시야가 나타난 후에만 호출됩니다. 게임 작업은 서버 오류로 끝날 수 있습니다.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.WaitForTarget(3000)))
    {
        UO.TargetToObject("self");
    }
    else
    {
        UO.Print("Target timeout");
    }

    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. 지연된 응답 확인 - 스크립트 클래스

매개변수와 실행 흐름:

  • CancelTarget 기존 사이트를 닫고 대기열을 지웁니다.
  • 새로운 범위가 없으면 도전은 기대를 불러일으키지 않습니다. 다른 스크립트가 변경하지 않는 한 대기열 출력은 0로 유지됩니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.CancelTarget();
        UO.TargetToObject("self");
        UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.TargetToObject(objID) — UO.TargetToObject(Any)

매개변수: objID (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "targettoobject": bridge.TargetToObject(Arg(0)); return InjectionValue.Unit;

UO.TargetToTile

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

C# 시그니처

void UO.TargetToTile(object? tile, object? x, object? y, object? z);

타일 ​​좌표를 사용하여 이미 활성화된 서버 대상에 즉시 응답합니다.

매개변수

  • tile - 그래픽/type 타일, 0..65535, serial 아님. 0은 지정된 그래픽이 없는 좌표 대상을 나타냅니다.
  • x — 현재 지도의 세계 X 좌표 0..65535. 이는 화면 픽셀이나 검프 좌표가 아닙니다.
  • y — 현재 지도의 세계 Y 좌표 0..65535.
  • z - 네트워크 대상 사용을 위한 게임 포인트 높이 -128..127. 이것은 바닥이나 장비의 층이 아닙니다.

반환값

void - 반환 값이 없습니다. 별도의 회선으로 전화하세요. true/false, serial 또는 type로 사용하지 마세요. 메타데이터 object? 호환되는 양식의 경우 실제 결과는 변경되지 않습니다 void.

동작

  • 활성 서버 커서가 없으면 아무 작업도 수행하지 않으며 지연된 응답을 생성하지 않습니다. 사전 준비는 WaitTargetObject/WaitTargetTile/WaitTargetXYZ를 사용하세요.
  • 로컬 ClientRequest* 및 기타 콜백 사이트는 이 명령으로 처리되지 않습니다.
  • graphic=0인 대상에는 십자선이 필요합니다. 물체 시력은지면을 받아들이지 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.TargetToTile");
UO.TargetToTile(0x0CCA, 1445, 1690, 0);

1. 열린 시야에 답장 - 직접 스크립트

매개변수와 실행 흐름:

  • 매개변수는 실제 점의 예를 제공합니다. 좌표와 graphic를 원하는 값으로 바꿉니다.
  • 향후 범위 대기열에는 아무것도 추가되지 않습니다.
if (Truth(UO.TargetPresent()))
{
    UO.TargetToTile(0x0CCA, 1445, 1690, 0);
}

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

2. 먼저 시력을 기다립니다 - 스크립트 기능

매개변수와 실행 흐름:

  • 3000 — 최대 대기 시간(밀리초); 시야를 요청한 작업은 이전에 수행되어야 합니다.
  • 이 명령은 시야가 나타난 후에만 호출됩니다. 게임 작업은 서버 오류로 끝날 수 있습니다.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.WaitForTarget(3000)))
    {
        UO.TargetToTile(0x0CCA, 1445, 1690, 0);
    }
    else
    {
        UO.Print("Target timeout");
    }

    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. 지연된 응답 확인 - 스크립트 클래스

매개변수와 실행 흐름:

  • CancelTarget 기존 사이트를 닫고 대기열을 지웁니다.
  • 새로운 범위가 없으면 도전은 기대를 불러일으키지 않습니다. 다른 스크립트가 변경하지 않는 한 대기열 출력은 0로 유지됩니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.CancelTarget();
        UO.TargetToTile(0x0CCA, 1445, 1690, 0);
        UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.TargetToTile(tile, x, y, z) — UO.TargetToTile(Any,Any,Any,Any)

매개변수: tile (Any), x (Any), y (Any), z (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "targettotile":

                    bridge.TargetToTile(Arg(0), Arg(1), Arg(2), Arg(3)); return InjectionValue.Unit;

UO.TargetToXYZ

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

C# 시그니처

void UO.TargetToXYZ(object? x, object? y, object? z);

타일 ​​좌표를 사용하여 이미 활성화된 서버 대상에 즉시 응답합니다.

매개변수

  • x — 현재 지도의 세계 X 좌표 0..65535. 이는 화면 픽셀이나 검프 좌표가 아닙니다.
  • y — 현재 지도의 세계 Y 좌표 0..65535.
  • z - 네트워크 대상 사용을 위한 게임 포인트 높이 -128..127. 이것은 바닥이나 장비의 층이 아닙니다.

반환값

void - 반환 값이 없습니다. 별도의 회선으로 전화하세요. true/false, serial 또는 type로 사용하지 마세요. 메타데이터 object? 호환되는 양식의 경우 실제 결과는 변경되지 않습니다 void.

동작

  • 활성 서버 커서가 없으면 아무 작업도 수행하지 않으며 지연된 응답을 생성하지 않습니다. 사전 준비는 WaitTargetObject/WaitTargetTile/WaitTargetXYZ를 사용하세요.
  • 로컬 ClientRequest* 및 기타 콜백 사이트는 이 명령으로 처리되지 않습니다.
  • graphic=0인 대상에는 십자선이 필요합니다. 물체 시력은지면을 받아들이지 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.TargetToXYZ");
UO.TargetToXYZ(1445, 1690, 0);

1. 열린 시야에 답장 - 직접 스크립트

매개변수와 실행 흐름:

  • 매개변수는 실제 점의 예를 제공합니다. 좌표와 graphic를 원하는 값으로 바꿉니다.
  • 향후 범위 대기열에는 아무것도 추가되지 않습니다.
if (Truth(UO.TargetPresent()))
{
    UO.TargetToXYZ(1445, 1690, 0);
}

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

2. 먼저 시력을 기다립니다 - 스크립트 기능

매개변수와 실행 흐름:

  • 3000 — 최대 대기 시간(밀리초); 시야를 요청한 작업은 이전에 수행되어야 합니다.
  • 이 명령은 시야가 나타난 후에만 호출됩니다. 게임 작업은 서버 오류로 끝날 수 있습니다.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.WaitForTarget(3000)))
    {
        UO.TargetToXYZ(1445, 1690, 0);
    }
    else
    {
        UO.Print("Target timeout");
    }

    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. 지연된 응답 확인 - 스크립트 클래스

매개변수와 실행 흐름:

  • CancelTarget 기존 사이트를 닫고 대기열을 지웁니다.
  • 새로운 범위가 없으면 도전은 기대를 불러일으키지 않습니다. 다른 스크립트가 변경하지 않는 한 대기열 출력은 0로 유지됩니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.CancelTarget();
        UO.TargetToXYZ(1445, 1690, 0);
        UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.TargetToXYZ(x, y, z) — UO.TargetToXYZ(Any,Any,Any)

매개변수: x (Any), y (Any), z (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "targettoxyz":

                    bridge.TargetToTile(0, Arg(0), Arg(1), Arg(2)); return InjectionValue.Unit;

UO.Targeting

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

C# 시그니처

int UO.Targeting();

클라이언트에서 활성 대상 선택 커서를 확인합니다.

매개변수

매개변수가 없습니다.

반환값

int 1 - TargetManager.IsTargeting 설치; 0 - 활성 커서가 없습니다. 로컬 콜백 대상도 고려됩니다. 이는 serial 또는 대기열 상태 WaitTarget가 아닙니다.

명령의 결과는 숫자 플래그입니다. 1는 충족된 조건을 의미하고, 0는 충족되지 않은 조건을 의미합니다. var result = command(...) 후에 (결과 != 0) 또는 (결과 == 0)인지 확인하세요. 한 번의 호출 결과를 저장합니다. 반복된 호출을 통해 해당 작업을 다시 수행하거나 이미 변경된 상태를 읽을 수 있습니다.

동작

  • 상태를 한 번 읽습니다. 커서가 나타날 때까지 기다리지 않습니다.
  • 게임 작업 후 서버 십자선을 기다리려면 WaitForTarget를 사용하세요. 로컬 ClientRequest* - WaitForClientTargetResponse의 결과입니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 상태 표시 - 직접 스크립트

매개변수와 실행 흐름:

  • 논쟁이 없습니다.
  • 1 또는 0이 표시됩니다.
UO.Print(Convert.ToString(UO.Targeting()));

2. 열린 커서 취소 - 스크립트 기능

매개변수와 실행 흐름:

  • 조건은 활성 커서로 확인됩니다.
  • CancelTarget 이 클라이언트에서는 준비된 응답도 삭제됩니다.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.Targeting()))
    {
        UO.CancelTarget();
    }

    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. 게임 액션 요청 후 - 스크립트 클래스

매개변수와 실행 흐름:

  • UseSkill가 스킬을 요청하고, WaitForTarget가 3000ms까지 기다립니다.
  • TargetToObject는 활성 서버 대상에만 응답합니다. 시간 초과가 있으면 분기가 실행되지 않습니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.UseSkill("Anatomy");
        if (Truth(UO.WaitForTarget(3000)))
        {
            if (Truth(UO.Targeting()))
            {
                UO.TargetToObject("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;
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.Targeting() — UO.Targeting()

매개변수: 매개변수가 없습니다.

결과: int / Integer.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public int IsTargeting() => bridge.IsTargeting();

UO.TicksTarget

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

C# 시그니처

int UO.TicksTarget();

WaitTargetObject/WaitTargetTile 및 해당 호출 셸을 통해 대상의 마지막 프로비저닝 타임스탬프를 읽습니다.

매개변수

매개변수가 없습니다.

반환값

int — 준비 시점의 UO.Timer 값(런타임 시작부터 10분의 1초 단위). 첫 번째 훈련 전 - 0. 이는 대기 시간도 아니고 밀리초도 아니고 ID 목표도 아닌 표시입니다.

동작

  • 즉시 TargetToObject/TargetToTile/TargetToXYZ 대기열을 준비하지 않고 이 표시를 업데이트하지 않습니다.
  • 일부 검색 명령은 브리지를 통해 직접 답변을 제공합니다. TicksTarget는 목표 변경의 표준시가 아닙니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 준비의 순간을 기억하다 - 직접 대본

매개변수와 실행 흐름:

  • 논쟁이 없습니다. WaitTargetSelf 고도를 업데이트합니다.
  • 스탬프는 10분의 1초 단위로 측정됩니다.
UO.WaitTargetSelf();
var stamp = UO.TicksTarget();
UO.Print(Convert.ToString(stamp));
UO.CancelWaitTarget();

2. 경과 시간 계산 - 스크립트 기능

매개변수와 실행 흐름:

  • UO.Wait=250 밀리초.
  • 표시의 불연속성으로 인해 경과 시간은 일반적으로 250가 아닌 2 또는 3입니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.WaitTargetObject("self");
    await Delay(250);
    var elapsed = UO.Timer() - UO.TicksTarget();
    UO.Print("Tenths: " + Convert.ToString(elapsed));
    UO.CancelWaitTarget();
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3. 숫자 serial - 시나리오 클래스에 대해 동일한 시간 보장

매개변수와 실행 흐름:

  • 캐릭터의 selfId - int serial.
  • 숫자 형식은 문자열 형식과 마찬가지로 표시를 업데이트합니다. TicksTarget에는 매개변수가 없습니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        var selfId = UO.Hex2Int(UO.GetSerial("self"));
        UO.WaitTargetObject(selfId);
        UO.Print(Convert.ToString(UO.TicksTarget()));
        UO.CancelWaitTarget();
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.TicksTarget() — UO.TicksTarget()

매개변수: 매개변수가 없습니다.

결과: int / Integer.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public int TicksTarget() => ticksTarget;

UO.WaitForClientTargetResponse

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

C# 시그니처

dynamic UO.WaitForClientTargetResponse(object? maxWaitTimeMS);

로컬 선택 ClientRequestObjectTarget/ClientRequestTileTarget이 완료될 때까지 기다립니다.

매개변수

  • maxWaitTimeMS — 최대 시간(밀리초). 0 및 음수 값은 무한정 기다리지 않고 한 번의 확인을 제공합니다.

반환값

int 1 - 취소를 포함하여 응답이 이미 수신되었습니다. 0 - 제한 시간이 만료되었습니다. 1의 경우에도 ClientTargetResponse의 길이를 확인하세요. 0를 사용하면 커서 자체가 자동으로 닫히지 않습니다.

명령의 결과는 숫자 플래그입니다. 1는 충족된 조건을 의미하고, 0는 충족되지 않은 조건을 의미합니다. var result = command(...) 후에 (결과 != 0) 또는 (결과 == 0)인지 확인하세요. 한 번의 호출 결과를 저장합니다. 반복된 호출을 통해 해당 작업을 다시 수행하거나 이미 변경된 상태를 읽을 수 있습니다.

동작

  • 대기는 최대 25 ms 간격으로 스크립트 스레드에서 발생하며 스크립트를 중지하면 중단됩니다.
  • 이전 ClientRequest*이 없으면 새 선택이 시작되지 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 아이템이나 캐릭터 선택 - 직접 스크립트

매개변수와 실행 흐름:

  • 5000 — 클릭 대기 시간 초과(밀리초). 새 쿼리는 이전 결과를 재설정합니다.
  • 5개 필드의 배열은 선택한 개체를 나타냅니다. 결과[0]는 type가 아니라 serial입니다.
UO.ClientRequestObjectTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
    var result = UO.ClientTargetResponse();
    if (Truth(ArrayLength(result) == 5))
    {
        UO.Print("Serial: " + UO.Int2Hex(result[0]));
    }
    else
    {
        UO.Print("Selection cancelled");
    }
}

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

2. 선택한 타일의 좌표 읽기 - 스크립트 기능

매개변수와 실행 흐름:

  • 결과[1] - graphic, 결과[2]/[3]/[4] - X/Y/Z. 세계 타일 serial의 결과[0]는 0와 같습니다.
  • 유형, 좌표 및 serial는 별도의 필드입니다. 이 배열에는 정적 레이어 인덱스가 없습니다.
return  RunScenario();
 object? RunScenario()
{
    UO.ClientRequestTileTarget();
    if (Truth(UO.WaitForClientTargetResponse(5000)))
    {
        var result = UO.ClientTargetResponse();
        if (Truth(ArrayLength(result) == 5))
        {
            UO.Print("Type: " + UO.Int2Hex(result[1]));
            UO.Print(Convert.ToString(result[2]) + "," + Convert.ToString(result[3]) + "," + Convert.ToString(result[4]));
        }
    }

    return null;
}

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

3. 전체 응답 구조에서 별도의 시간 초과 - 스크립트 클래스

매개변수와 실행 흐름:

  • 시간 초과는 밀리초 단위로 지정됩니다. 성공적인 대기는 응답을 의미하며, 그 내용을 별도로 확인해야 합니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.ClientRequestTileTarget();
        int ready = UO.WaitForClientTargetResponse(3000);
        if (ready == 0)
        {
            UO.CancelTarget();
            UO.Print("Selection timed out");
            return false;
        }

        var response = (object? [])UO.ClientTargetResponse();
        if (response.Length != 5)
            return false;
        UO.Print($"Tile coordinates: {response[2]}, {response[3]}, {response[4]}");
        return true;
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.WaitForClientTargetResponse(maxWaitTimeMS) — UO.WaitForClientTargetResponse(Any)

매개변수: maxWaitTimeMS (Any)

결과: dynamic / Any.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "waitforclienttargetresponse": return new InjectionValue(bridge.WaitForClientTargetResponse(Arg(0)));

UO.WaitForTarget

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

C# 시그니처

dynamic UO.WaitForTarget(object? maxWaitTimeMS);

제한 시간 내에 활성 대상 커서가 나타날 때까지 기다립니다.

매개변수

  • maxWaitTimeMS — 최대 대기 시간(밀리초)입니다. 0과 음수 값은 즉시 확인을 제공합니다. 끝없는 기다림이 아닙니다.

반환값

int 1 — 확인 중에 커서가 활성화되었습니다. 0 - 커서 없이 시간 초과되었습니다. 로컬 콜백 대상도 이 테스트를 만족합니다. 이는 준비된 WaitTarget 사용을 확인하는 것이 아닙니다. 확인하기 전에 자동 응답이 이미 커서를 모두 사용했을 수 있습니다.

명령의 결과는 숫자 플래그입니다. 1는 충족된 조건을 의미하고, 0는 충족되지 않은 조건을 의미합니다. var result = command(...) 후에 (결과 != 0) 또는 (결과 == 0)인지 확인하세요. 한 번의 호출 결과를 저장합니다. 반복된 호출을 통해 해당 작업을 다시 수행하거나 이미 변경된 상태를 읽을 수 있습니다.

동작

  • 검사는 스크립트 스레드에서 최대 25 ms 동안 일시 중지하여 수행되며 이를 중지하면 중단될 수 있습니다.
  • 메서드 자체는 십자선을 생성하거나 대상을 선택하지 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 스킬시력을 기다립니다 - 다이렉트 스크립트

매개변수와 실행 흐름:

  • MaxWaitTimeMS=3000이면 self가 선택됩니다.
  • WaitTargetSelf는 미리 설정되어 있지 않습니다. 이 예는 명시적으로 응답합니다.
UO.UseSkill("Anatomy");
if (Truth(UO.WaitForTarget(3000)))
{
    UO.TargetToObject("self");
}

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

2. 원체크 - 스크립트 기능

매개변수와 실행 흐름:

  • MaxWaitTimeMS=0.
  • 준비 - 1 또는 0; 긴 멈춤이 없습니다.
return  RunScenario();
 object? RunScenario()
{
    var ready = UO.WaitForTarget(0);
    UO.Print(Convert.ToString(ready));
    return null;
}

3. 시간 초과 처리 - 스크립트 클래스

매개변수와 실행 흐름:

  • 500 - 0.5초.
  • 시력이 없다는 것은 작업이 실패했거나 자동으로 처리되고 있음을 의미할 수 있습니다. 게임 로그를 확인하세요.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        if (Truth(UO.WaitForTarget(500) == 0))
        {
            UO.CancelWaitTarget();
            UO.Print("Cursor did not arrive");
        }

        return null;
    }

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

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.WaitForTarget(maxWaitTimeMS) — UO.WaitForTarget(Any)

매개변수: maxWaitTimeMS (Any)

결과: dynamic / Any.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "waitfortarget": return new InjectionValue(bridge.WaitUntilTargeting(Arg(0)));

UO.WaitTarget

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

C# 시그니처

void UO.WaitTarget(object? target);
void UO.WaitTarget(object? target, object? @type);
void UO.WaitTarget(object? target, object? @type, object? color);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance, object? notoriety);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance, object? notoriety, object? nearest);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance, object? notoriety, object? nearest, object? maxZ);

serial를 다음 대상 요청 대기열에 넣거나 필터를 사용하여 대상을 선택합니다.

매개변수

  • target — 양수 허용 serial/alias가 직접 설정되고 다른 매개변수는 무시됩니다. 0 또는 -1를 사용하면 검색이 가능합니다. 다른 숫자 파수꾼이 다음 목표를 취소합니다.
  • type - 선택 사항 graphic/type 또는 유형 마스크; -1 제한 없음. 명명된 유형은 ResolveType/ParseTypeMask로 해결됩니다.
  • color - 선택 사항 hue: -1 또는 0xFFFF(제한 없음).
  • distance — 선택적으로 셀 내 최대 거리. 기본값은 GetFindDistance입니다. ResolveCompactDistance를 파싱하면 검색 설정에 따라 특별한 값을 허용합니다.
  • notoriety - 선택적 숫자/마스크 악명. 비어 있지 않은 마스크는 모바일 후보자를 제한합니다. 그것이 없으면 휴대폰과 world 항목이 고려됩니다.
  • nearest - 선택 사항 bool, 기본값 true: 거리순으로 정렬한 다음 serial로 정렬합니다.
  • maxZ — 옵션 최대 절대값(Z-selfZ), 기본값 GetFindVertical.

반환값

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

동작

  • 검색 시 self, serial=0, 일반 무시 목록 및 선택된 명명된 type 필터를 제외합니다. 중복이 제거됩니다. 직접 양성 serial은 이러한 필터를 통과하지 않습니다.
  • 검색에서는 로드된 개체만 읽습니다. 일치하지 않음/잘못된 센티널 - 메시지 및 CancelNextTarget. 성공적인 선택은 WaitTargetObject을 호출하고 TicksTarget를 업데이트합니다. WaitTarget 자체는 아이템을 사용하지 않고, 대상을 열지 않으며, 서버가 처리할 때까지 기다리지 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.WaitTarget");
UO.WaitTarget("self");

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

매개변수와 실행 흐름:

  • serial를 다음 대상 요청 대기열에 넣거나 필터를 사용하여 대상을 선택합니다.
UO.WaitTarget("self");

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

매개변수와 실행 흐름:

  • 검색 시 self, serial=0, 일반 무시 목록 및 선택된 명명된 type 필터를 제외합니다. 중복이 제거됩니다. 직접 양성 serial은 이러한 필터를 통과하지 않습니다.
return  RunScenario();
 object? RunScenario()
{
    UO.WaitTarget(0, -1, -1, 10, 3, true, 20);
    return null;
}

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

매개변수와 실행 흐름:

  • 검색에서는 로드된 개체만 읽습니다. 일치하지 않음/잘못된 센티널 - 메시지 및 CancelNextTarget. 성공적인 선택은 WaitTargetObject을 호출하고 TicksTarget를 업데이트합니다. WaitTarget 자체는 아이템을 사용하지 않고, 대상을 열지 않으며, 서버가 처리할 때까지 기다리지 않습니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.WaitTarget("lasttarget");
        UO.Print(UO.Waiting());
        UO.CancelWaitTarget();
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.WaitTarget(target) — UO.WaitTarget(Any)

매개변수: target (Any)

결과: void / Unit.

호출 시:

호출 시 저장된 처리기 delegate를 실행합니다. 등록 메서드는 API를 구성할 때 이 delegate를 만듭니다.

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

values =>

                    {

                        CompactWaitTarget(values);

                        return InjectionValue.Unit;

                    }

UO.WaitTarget(target, type) — UO.WaitTarget(Any,Any)

매개변수: target (Any), type (Any)

결과: void / Unit.

호출 시:

호출 시 저장된 처리기 delegate를 실행합니다. 등록 메서드는 API를 구성할 때 이 delegate를 만듭니다.

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

values =>

                    {

                        CompactWaitTarget(values);

                        return InjectionValue.Unit;

                    }

UO.WaitTarget(target, type, color) — UO.WaitTarget(Any,Any,Any)

매개변수: target (Any), type (Any), color (Any)

결과: void / Unit.

호출 시:

호출 시 저장된 처리기 delegate를 실행합니다. 등록 메서드는 API를 구성할 때 이 delegate를 만듭니다.

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

values =>

                    {

                        CompactWaitTarget(values);

                        return InjectionValue.Unit;

                    }

UO.WaitTarget(target, type, color, distance) — UO.WaitTarget(Any,Any,Any,Any)

매개변수: target (Any), type (Any), color (Any), distance (Any)

결과: void / Unit.

호출 시:

호출 시 저장된 처리기 delegate를 실행합니다. 등록 메서드는 API를 구성할 때 이 delegate를 만듭니다.

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

values =>

                    {

                        CompactWaitTarget(values);

                        return InjectionValue.Unit;

                    }

UO.WaitTarget(target, type, color, distance, notoriety) — UO.WaitTarget(Any,Any,Any,Any,Any)

매개변수: target (Any), type (Any), color (Any), distance (Any), notoriety (Any)

결과: void / Unit.

호출 시:

호출 시 저장된 처리기 delegate를 실행합니다. 등록 메서드는 API를 구성할 때 이 delegate를 만듭니다.

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

values =>

                    {

                        CompactWaitTarget(values);

                        return InjectionValue.Unit;

                    }

UO.WaitTarget(target, type, color, distance, notoriety, nearest) — UO.WaitTarget(Any,Any,Any,Any,Any,Any)

매개변수: target (Any), type (Any), color (Any), distance (Any), notoriety (Any), nearest (Any)

결과: void / Unit.

호출 시:

호출 시 저장된 처리기 delegate를 실행합니다. 등록 메서드는 API를 구성할 때 이 delegate를 만듭니다.

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

values =>

                    {

                        CompactWaitTarget(values);

                        return InjectionValue.Unit;

                    }

UO.WaitTarget(target, type, color, distance, notoriety, nearest, maxZ) — UO.WaitTarget(Any,Any,Any,Any,Any,Any,Any)

매개변수: target (Any), type (Any), color (Any), distance (Any), notoriety (Any), nearest (Any), maxZ (Any)

결과: void / Unit.

호출 시:

호출 시 저장된 처리기 delegate를 실행합니다. 등록 메서드는 API를 구성할 때 이 delegate를 만듭니다.

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

values =>

                    {

                        CompactWaitTarget(values);

                        return InjectionValue.Unit;

                    }

UO.WaitTargetGround

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

C# 시그니처

void UO.WaitTargetGround(object? @type);
void UO.WaitTargetGround(object? @type, object? color);

graphic/hue에서 항목을 검색하여 다음 대상의 대기열에 배치합니다.

매개변수

  • type - 그래픽/type int, 16진수 문자열 또는 이름이 type인 세트. serial 아이템이 아닙니다.
  • color - 선택사항 int hue; 기본값 -1 - 모든 색상.

반환값

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

동작

  • 범위: 재귀 검색이 없는 ground/컨테이너 선택기 1. Bridge.FindType는 찾은 serial를 반환합니다. serial>0 브리지.WaitTargetObject이 호출될 때. 이러한 메서드는 런타임 TicksTarget를 직접 업데이트하지 않습니다.
  • 항목 없음 - 메시지 및 CancelNextTarget. 검색 결과 일반 FindItem/FoundItems가 변경될 수 있습니다. 이 명령은 발견된 항목을 사용하지 않으며 커서를 기다리지 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.WaitTargetGround");
UO.WaitTargetGround("0x0E21");

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

매개변수와 실행 흐름:

  • graphic/hue에서 항목을 검색하여 다음 대상의 대기열에 배치합니다.
UO.WaitTargetGround("0x0E21");

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

매개변수와 실행 흐름:

  • 범위: 재귀 검색이 없는 ground/컨테이너 선택기 1. Bridge.FindType는 찾은 serial를 반환합니다. serial>0 브리지.WaitTargetObject이 호출될 때. 이러한 메서드는 런타임 TicksTarget를 직접 업데이트하지 않습니다.
return  RunScenario();
 object? RunScenario()
{
    UO.WaitTargetGround("0x0E21", -1);
    return null;
}

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

매개변수와 실행 흐름:

  • 항목 없음 - 메시지 및 CancelNextTarget. 검색 결과 일반 FindItem/FoundItems가 변경될 수 있습니다. 이 명령은 발견된 항목을 사용하지 않으며 커서를 기다리지 않습니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.WaitTargetGround("0x0E21", -1);
        UO.Print(UO.Waiting());
        UO.CancelWaitTarget();
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.WaitTargetGround(type) — UO.WaitTargetGround(Any)

매개변수: type (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void WaitTargetGround(InjectionValue type) => WaitTargetGround(type, new InjectionValue(-1));

UO.WaitTargetGround(type, color) — UO.WaitTargetGround(Any,Any)

매개변수: type (Any), color (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void WaitTargetGround(InjectionValue type, InjectionValue color)

        {

            int item = bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false);

            if (item <= 0)

            {

                SystemMessage("No ground item found. Next target request will be canceled");

                bridge.CancelNextTarget();

            }

            else

                bridge.WaitTargetObject(item);

        }

UO.WaitTargetLast

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

C# 시그니처

void UO.WaitTargetLast();

별칭 lasttarget를 통해 다음 서버 대상에 대한 응답을 준비합니다.

매개변수

매개변수가 없습니다.

반환값

void - 반환 값이 없습니다. 별도의 회선으로 전화하세요. true/false, serial 또는 type로 사용하지 마세요. 메타데이터 object? 호환되는 양식의 경우 실제 결과는 변경되지 않습니다 void.

동작

  • 팀은 대응만 준비합니다. 아이템, 스킬, 주문 자체를 사용하지 않습니다. 다음 서버 대상은 클라이언트 프레임을 처리할 때 준비된 대상을 받습니다.
  • 연속 호출은 공통 클라이언트 대기열을 형성합니다. 객체와 좌표 대상은 한 번에 하나씩 처리됩니다. 로컬 선택 창 ClientRequest*/Info/container는 이를 소비하지 않습니다.
  • CancelWaitTarget 대기열을 지웁니다. TerminateAll 전체를 청소합니다. 아직 실행 중인 프로시저를 중지하면 자체 보류 중인 응답도 무효화됩니다. 짧은 절차를 완료해도 일반적으로 준비된 대상이 취소되지 않습니다.
  • 응답을 보내도 서버에서의 작업이 보장되지는 않습니다. 응답은 범위, 개체의 접근성, 가시성 및 작업 규칙을 확인합니다. 제어하려면 게임 결과와 로그를 사용하세요.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 대상 준비 - 직접 스크립트

매개변수와 실행 흐름:

  • 논쟁이 없습니다. lasttarget가 사용됩니다.
  • 이 명령은 시력을 열지 않고 작업 자체를 수행하지 않습니다.
UO.WaitTargetLast();

2. 선택한 개체의 존재 여부 확인 - 스크립트 기능

매개변수와 실행 흐름:

  • 이 스킬을 사용하려면 로드된 캐릭터에서 lasttarget가 허용되어야 합니다.
  • Exists 검사는 알 수 없는 개체를 제거합니다. 개체 유형 및 기술 유효성의 선택은 스크립트 조건으로 유지됩니다.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.Exists("lasttarget")))
    {
        UO.CancelWaitTarget();
        UO.WaitTargetLast();
        UO.UseSkill("Anatomy");
    }

    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. 준비된 대상 취소 - 스크립트 클래스

매개변수와 실행 흐름:

  • IsWaitTargetActive는 응답 큐를 확인합니다.
  • CancelWaitTarget 이미 열려 있는 맞춤 십자선을 닫지 않고 준비를 취소합니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.WaitTargetLast();
        if (Truth(UO.IsWaitTargetActive()))
        {
            UO.CancelWaitTarget();
        }

        return null;
    }

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

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.WaitTargetLast() — UO.WaitTargetLast()

매개변수: 매개변수가 없습니다.

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void WaitTargetLast() => WaitTargetObject("lasttarget");

UO.WaitTargetObject

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

C# 시그니처

void UO.WaitTargetObject(object? objID);
void UO.WaitTargetObject(object? id1, object? id2);

서버 시야에 대해 하나 또는 두 개의 연속 serial 응답을 준비합니다.

매개변수

  • objID / id1 / id2 — 항목 또는 문자의 일련번호/ID, 숫자 또는 16진수/10진수 문자열, self/backpack/lasttarget/lastobject 또는 저장된 이름 AddObject. 이것은 type이 아닙니다. 명명된 개체에 작업을 수행하기 전에 Exists를 확인하세요. 해결되지 않은 별칭은 serial 0을 제공합니다. 단일 인수는 하나의 목표를 지정합니다. 숫자 및 문자열 형식은 동일한 방식으로 TicksTarget를 업데이트합니다.
  • objID — 항목 또는 문자의 일련번호/ID, 숫자 또는 16진수/10진수 문자열, self/backpack/lasttarget/lastobject 또는 저장된 이름 AddObject. 이것은 type이 아닙니다. 명명된 개체에 작업을 수행하기 전에 Exists를 확인하세요. 해결되지 않은 별칭은 serial 0을 제공합니다. 단일 인수는 하나의 목표를 지정합니다. 숫자 및 문자열 형식은 동일한 방식으로 TicksTarget를 업데이트합니다.
  • id1 — 항목 또는 문자의 일련번호/ID, 숫자 또는 16진수/10진수 문자열, self/backpack/lasttarget/lastobject 또는 저장된 이름 AddObject. 이것은 type이 아닙니다. 명명된 개체에 작업을 수행하기 전에 Exists를 확인하세요. 해결되지 않은 별칭은 serial 0을 제공합니다. 양식의 첫 번째 목표는 두 줄을 사용하는 것입니다.
  • id2 — 항목 또는 문자의 일련번호/ID, 숫자 또는 16진수/10진수 문자열, self/backpack/lasttarget/lastobject 또는 저장된 이름 AddObject. 이것은 type이 아닙니다. 명명된 개체에 작업을 수행하기 전에 Exists를 확인하세요. 해결되지 않은 별칭은 serial 0을 제공합니다. 양식의 두 번째 목적은 두 줄을 사용하는 것입니다. 다음 개별 범위에 적용됩니다.

반환값

void - 반환 값이 없습니다. 별도의 회선으로 전화하세요. true/false, serial 또는 type로 사용하지 마세요. 메타데이터 object? 호환되는 양식의 경우 실제 결과는 변경되지 않습니다 void.

동작

  • 팀은 대응만 준비합니다. 아이템, 스킬, 주문 자체를 사용하지 않습니다. 다음 서버 대상은 클라이언트 프레임을 처리할 때 준비된 대상을 받습니다.
  • 연속 호출은 공통 클라이언트 대기열을 형성합니다. 객체와 좌표 대상은 한 번에 하나씩 처리됩니다. 로컬 선택 창 ClientRequest*/Info/container는 이를 소비하지 않습니다.
  • CancelWaitTarget 대기열을 지웁니다. TerminateAll 전체를 청소합니다. 아직 실행 중인 프로시저를 중지하면 자체 보류 중인 응답도 무효화됩니다. 짧은 절차를 완료해도 일반적으로 준비된 대상이 취소되지 않습니다.
  • 응답을 보내도 서버에서의 작업이 보장되지는 않습니다. 응답은 범위, 개체의 접근성, 가시성 및 작업 규칙을 확인합니다. 제어하려면 게임 결과와 로그를 사용하세요.

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.WaitTargetObject");
UO.WaitTargetObject("self");

1. 기술을 미리 선택하세요 - 직접 스크립트

매개변수와 실행 흐름:

  • id="self" - 캐릭터의 serial. CancelWaitTarget는 이전에 준비된 답변을 제거합니다.
  • UseSkill 스킬을 요청합니다. 그의 서버 시야는 준비된 목표를 받습니다.
UO.CancelWaitTarget();
UO.WaitTargetObject("self");
UO.UseSkill("Anatomy");

2. 숫자 serial로 알려진 개체 선택 - 스크립트 기능

매개변수와 실행 흐름:

  • objectId - 예 serial: 귀하의 것으로 바꾸세요. 이것은 graphic/type가 아닙니다.
  • 여기서 목표가 방금 준비되었습니다. 스크립트의 다음 단계에서는 실제로 대상을 예상하는 작업을 호출해야 합니다.
return  RunScenario();
 object? RunScenario()
{
    var objectId = 0x40001234;
    if (Truth(UO.Exists(objectId)))
    {
        UO.WaitTargetObject(objectId);
        UO.Print("Object target prepared");
    }

    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. 두 가지 광경: 첫 번째 개체와 두 번째 개체 - 스크립트 클래스

매개변수와 실행 흐름:

  • 소스와 대상은 미리 정의된 이름 AddObject입니다. GetSerial는 id1/id2 형식과 일치하는 행을 반환합니다.
  • 첫 번째 서버 시력은 첫 번째, 두 번째 - 두 번째를 사용합니다. 두 개의 연속 조준경을 사용하는 작업에만 적합합니다. 다른 조치를 취하기 전에 불필요한 두 번째 대상을 제거하세요.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        var first = UO.GetSerial("source");
        var second = UO.GetSerial("destination");
        if (Truth(UO.Exists(first)) && Truth(UO.Exists(second)))
        {
            UO.CancelWaitTarget();
            UO.WaitTargetObject(first, second);
        }

        return null;
    }

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

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.WaitTargetObject(objID) — UO.WaitTargetObject(Any)

매개변수: objID (Any/String)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "waittargetobject": WaitTargetObject(Arg(0)); return InjectionValue.Unit;

UO.WaitTargetObject(objID) — UO.WaitTargetObject(String)

매개변수: objID (Any/String)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void WaitTargetObject(string id) => WaitTargetObject(GetObject(id));

UO.WaitTargetObject(id1, id2) — UO.WaitTargetObject(String,String)

매개변수: id1 (String), id2 (String)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void WaitTargetObject(string id1, string id2) => WaitTargetObject(GetObject(id1), GetObject(id2));

UO.WaitTargetObjectType

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

C# 시그니처

void UO.WaitTargetObjectType(object? id, object? @type);
void UO.WaitTargetObjectType(object? id, object? @type, object? color);

주어진 물체와 땅에서 발견된 물체라는 두 개의 연속된 표적을 준비합니다.

매개변수

  • id — 직렬/ID 개체: int, 숫자/16진수 문자열 또는 설정된 별칭(예: "lasttarget"). 이것은 graphic/type가 아닙니다. 조치를 취하기 전에 로드된 개체를 확인하십시오.
  • type - 두 번째 항목의 그래픽/type, int/hex/named type.
  • color - 두 번째 주제의 선택 사항 hue; -1 기본적으로 모두 가능합니다.

반환값

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

동작

  • 먼저 serial부터 GetObject까지 허용합니다. 두 번째는 FindType(type,color,1,-1,false)를 찾습니다. 둘 다 긍정적이면 브리지를 호출합니다.WaitTargetObject(첫 번째, 두 번째). 대상의 순서가 유지됩니다.
  • 하나 이상의 목표가 누락되거나 긍정적이지 않은 경우(메시지 및 CancelNextTarget) 두 목표가 모두 설정되지 않습니다. 해당 브랜치는 TicksTarget을 업데이트하지 않으며 아이템을 사용하지 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.WaitTargetObjectType");
UO.WaitTargetObjectType("self", "0x0E21");

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

매개변수와 실행 흐름:

  • 주어진 물체와 땅에서 발견된 물체라는 두 개의 연속된 표적을 준비합니다.
UO.WaitTargetObjectType("self", "0x0E21");

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

매개변수와 실행 흐름:

  • 먼저 serial부터 GetObject까지 허용합니다. 두 번째는 FindType(type,color,1,-1,false)를 찾습니다. 둘 다 긍정적이면 브리지를 호출합니다.WaitTargetObject(첫 번째, 두 번째). 대상의 순서가 유지됩니다.
return  RunScenario();
 object? RunScenario()
{
    UO.WaitTargetObjectType("lasttarget", "0x0E21", -1);
    return null;
}

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

매개변수와 실행 흐름:

  • 하나 이상의 목표가 누락되거나 긍정적이지 않은 경우(메시지 및 CancelNextTarget) 두 목표가 모두 설정되지 않습니다. 해당 브랜치는 TicksTarget을 업데이트하지 않으며 아이템을 사용하지 않습니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.WaitTargetObjectType("self", "0x0E21", -1);
        UO.Print(UO.Waiting());
        UO.CancelWaitTarget();
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.WaitTargetObjectType(id, type) — UO.WaitTargetObjectType(Any,Any)

매개변수: id (Any), type (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void WaitTargetObjectType(InjectionValue id, InjectionValue type)

            => WaitTargetObjectType(id, type, new InjectionValue(-1));

UO.WaitTargetObjectType(id, type, color) — UO.WaitTargetObjectType(Any,Any,Any)

매개변수: id (Any), type (Any), color (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void WaitTargetObjectType(InjectionValue id, InjectionValue type, InjectionValue color)

        {

            int first = GetObject(id);

            int second = bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false);

            if (first <= 0 || second <= 0)

            {

                SystemMessage("UO.WaitTargetObjectType: object or ground item not found");

                bridge.CancelNextTarget();

                return;

            }

            bridge.WaitTargetObject(first, second);

        }

UO.WaitTargetSelf

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

C# 시그니처

void UO.WaitTargetSelf();

별칭 self를 통해 다음 서버 대상에 대한 응답을 준비합니다.

매개변수

매개변수가 없습니다.

반환값

void - 반환 값이 없습니다. 별도의 회선으로 전화하세요. true/false, serial 또는 type로 사용하지 마세요. 메타데이터 object? 호환되는 양식의 경우 실제 결과는 변경되지 않습니다 void.

동작

  • 팀은 대응만 준비합니다. 아이템, 스킬, 주문 자체를 사용하지 않습니다. 다음 서버 대상은 클라이언트 프레임을 처리할 때 준비된 대상을 받습니다.
  • 연속 호출은 공통 클라이언트 대기열을 형성합니다. 객체와 좌표 대상은 한 번에 하나씩 처리됩니다. 로컬 선택 창 ClientRequest*/Info/container는 이를 소비하지 않습니다.
  • CancelWaitTarget 대기열을 지웁니다. TerminateAll 전체를 청소합니다. 아직 실행 중인 프로시저를 중지하면 자체 보류 중인 응답도 무효화됩니다. 짧은 절차를 완료해도 일반적으로 준비된 대상이 취소되지 않습니다.
  • 응답을 보내도 서버에서의 작업이 보장되지는 않습니다. 응답은 범위, 개체의 접근성, 가시성 및 작업 규칙을 확인합니다. 제어하려면 게임 결과와 로그를 사용하세요.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 대상 준비 - 직접 스크립트

매개변수와 실행 흐름:

  • 논쟁이 없습니다. self가 사용됩니다.
  • 이 명령은 시력을 열지 않고 작업 자체를 수행하지 않습니다.
UO.WaitTargetSelf();

2. 선택한 개체의 존재 여부 확인 - 스크립트 기능

매개변수와 실행 흐름:

  • 이 스킬을 사용하려면 로드된 캐릭터에서 self가 허용되어야 합니다.
  • Exists 검사는 알 수 없는 개체를 제거합니다. 개체 유형 및 기술 유효성의 선택은 스크립트 조건으로 유지됩니다.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.Exists("self")))
    {
        UO.CancelWaitTarget();
        UO.WaitTargetSelf();
        UO.UseSkill("Anatomy");
    }

    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. 준비된 대상 취소 - 스크립트 클래스

매개변수와 실행 흐름:

  • IsWaitTargetActive는 응답 큐를 확인합니다.
  • CancelWaitTarget 이미 열려 있는 맞춤 십자선을 닫지 않고 준비를 취소합니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.WaitTargetSelf();
        if (Truth(UO.IsWaitTargetActive()))
        {
            UO.CancelWaitTarget();
        }

        return null;
    }

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

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.WaitTargetSelf() — UO.WaitTargetSelf()

매개변수: 매개변수가 없습니다.

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void WaitTargetSelf() => WaitTargetObject("self");

UO.WaitTargetTile

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

C# 시그니처

void UO.WaitTargetTile(object? selector);
void UO.WaitTargetTile(object? x, object? y, object? z);
void UO.WaitTargetTile(object? @type, object? x, object? y, object? z);

선택적 타일 그래픽을 사용하여 좌표 대상을 준비합니다.

매개변수

  • selector - 단일 인수 형식에서만: 저장된 지점을 반복하는 "lasttile" 문자열입니다.
  • type - 그래픽/type 타일, 0..65535, serial 아님. 0은 지정된 그래픽이 없는 좌표 대상을 나타냅니다. 4개의 인수 형식으로 제공됩니다. x/y/z 형식은 0와 같습니다.
  • x — 현재 지도의 세계 X 좌표 0..65535. 이는 화면 픽셀이나 검프 좌표가 아닙니다.
  • y — 현재 지도의 세계 Y 좌표 0..65535.
  • z - 네트워크 대상 사용을 위한 게임 포인트 높이 -128..127. 이것은 바닥이나 장비의 층이 아닙니다.

반환값

void - 반환 값이 없습니다. 별도의 회선으로 전화하세요. true/false, serial 또는 type로 사용하지 마세요. 메타데이터 object? 호환되는 양식의 경우 실제 결과는 변경되지 않습니다 void.

동작

  • 팀은 대응만 준비합니다. 아이템, 스킬, 주문 자체를 사용하지 않습니다. 다음 서버 대상은 클라이언트 프레임을 처리할 때 준비된 대상을 받습니다.
  • 연속 호출은 공통 클라이언트 대기열을 형성합니다. 객체와 좌표 대상은 한 번에 하나씩 처리됩니다. 로컬 선택 창 ClientRequest*/Info/container는 이를 소비하지 않습니다.
  • CancelWaitTarget 대기열을 지웁니다. TerminateAll 전체를 청소합니다. 아직 실행 중인 프로시저를 중지하면 자체 보류 중인 응답도 무효화됩니다. 짧은 절차를 완료해도 일반적으로 준비된 대상이 취소되지 않습니다.
  • 응답을 보내도 서버에서의 작업이 보장되지는 않습니다. 응답은 범위, 개체의 접근성, 가시성 및 작업 규칙을 확인합니다. 제어하려면 게임 결과와 로그를 사용하세요.

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.WaitTargetTile");
UO.WaitTargetTile("lasttile");

1. graphic 없는 좌표 - 직접 스크립트

매개변수와 실행 흐름:

  • x=1445, y=1690, z=0; 누락된 type는 0와 같습니다.
  • 이것이 세상의 요점이다. 이 명령은 캐릭터를 이동하거나 검프에 아이템을 배치하지 않습니다.
UO.CancelWaitTarget();
UO.WaitTargetTile(1445, 1690, 0);

2. graphic 타일을 명시적으로 지정 - 스크립트 기능

매개변수와 실행 흐름:

  • type=0x0CCA — 그래픽의 예; 선택한 타일의 실제 type를 사용하세요. x/y/z는 월드 위치입니다.
  • 그래픽과 좌표는 원하는 지도 객체를 설명해야 합니다. 서버는 대상의 유효성을 확인합니다.
return  RunScenario();
 object? RunScenario()
{
    UO.CancelWaitTarget();
    UO.WaitTargetTile(0x0CCA, 1445, 1690, 0);
    return null;
}

3. 마지막 대상의 저장된 지점 반복 - 스크립트 클래스

매개변수와 실행 흐름:

  • 선택기는 대소문자를 구분하지 않고 마지막 문자열만 허용합니다. 단일 인수 형식의 다른 문자열이나 숫자로 인해 오류가 발생합니다.
  • TargetManager 타일의 마지막 필드가 사용됩니다. 첫 번째 선택 전에는 0이 될 수 있습니다. 먼저 게임에서 원하는 지점을 선택합니다. 3개 또는 4개의 인수를 사용하면 명시적으로 설정할 수 있습니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.WaitTargetTile("lasttile");
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.WaitTargetTile(selector) — UO.WaitTargetTile(Any)

매개변수: selector (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void WaitTargetTile(InjectionValue selector)

        {

            string name = selector.Kind == InjectionValueKind.String

                ? (selector.String ?? string.Empty).Trim()

                : string.Empty;

            if (!name.Equals("lasttile", StringComparison.OrdinalIgnoreCase))

                throw new NativeSubrutineException("UO.WaitTargetTile(one argument) accepts only 'lasttile'.");



            int[] tile = bridge.LastTile() ?? Array.Empty<int>();

            if (tile.Length < 4)

            {

                SystemMessage("UO.WaitTargetTile: lasttile is unavailable; next target request canceled.");

                bridge.CancelNextTarget();

                return;

            }

            bridge.WaitTargetTile(tile[0], tile[1], tile[2], tile[3]);

            ticksTarget = Timer();

        }

UO.WaitTargetTile(x, y, z) — UO.WaitTargetTile(Any,Any,Any)

매개변수: x (Any), y (Any), z (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void WaitTargetTile(InjectionValue x, InjectionValue y, InjectionValue z)

            => WaitTargetTile(new InjectionValue(0), x, y, z);

UO.WaitTargetTile(type, x, y, z) — UO.WaitTargetTile(Any,Any,Any,Any)

매개변수: type (Any), x (Any), y (Any), z (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void WaitTargetTile(InjectionValue type, InjectionValue x, InjectionValue y, InjectionValue z)

        {

            bridge.WaitTargetTile(ResolveType(type), NumberConversions.ToInt(x), NumberConversions.ToInt(y), NumberConversions.ToInt(z));

            ticksTarget = Timer();

        }

UO.WaitTargetType

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

C# 시그니처

void UO.WaitTargetType(object? @type);
void UO.WaitTargetType(object? @type, object? color);

graphic/hue에서 항목을 검색하여 다음 대상의 대기열에 배치합니다.

매개변수

  • type - 그래픽/type int, 16진수 문자열 또는 이름이 type인 세트. serial 아이템이 아닙니다.
  • color - 선택사항 int hue; 기본값 -1 - 모든 색상.

반환값

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

동작

  • 범위: 재귀 검색 기능이 있는 배낭. Bridge.FindType는 발견된 serial를 반환합니다. serial>0 브리지.WaitTargetObject가 호출될 때. 이러한 메서드는 런타임 TicksTarget를 직접 업데이트하지 않습니다.
  • 항목 없음 - 메시지 및 CancelNextTarget. 검색 결과 일반 FindItem/FoundItems가 변경될 수 있습니다. 이 명령은 발견된 항목을 사용하지 않으며 커서를 기다리지 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.WaitTargetType");
UO.WaitTargetType("0x0E21");

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

매개변수와 실행 흐름:

  • graphic/hue에서 항목을 검색하여 다음 대상의 대기열에 배치합니다.
UO.WaitTargetType("0x0E21");

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

매개변수와 실행 흐름:

  • 범위: 재귀 검색 기능이 있는 배낭. Bridge.FindType는 발견된 serial를 반환합니다. serial>0 브리지.WaitTargetObject가 호출될 때. 이러한 메서드는 런타임 TicksTarget를 직접 업데이트하지 않습니다.
return  RunScenario();
 object? RunScenario()
{
    UO.WaitTargetType("0x0E21", -1);
    return null;
}

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

매개변수와 실행 흐름:

  • 항목 없음 - 메시지 및 CancelNextTarget. 검색 결과 일반 FindItem/FoundItems가 변경될 수 있습니다. 이 명령은 발견된 항목을 사용하지 않으며 커서를 기다리지 않습니다.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.WaitTargetType("0x0E21", -1);
        UO.Print(UO.Waiting());
        UO.CancelWaitTarget();
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.WaitTargetType(type) — UO.WaitTargetType(Any)

매개변수: type (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void WaitTargetType(InjectionValue type) => WaitTargetType(ResolveType(type), -1);

UO.WaitTargetType(type, color) — UO.WaitTargetType(Any,Any)

매개변수: type (Any), color (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

public void WaitTargetType(InjectionValue type, InjectionValue color)

            => WaitTargetType(ResolveType(type), NumberConversions.ToInt(color));

UO.WaitTargetXYZ

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

C# 시그니처

void UO.WaitTargetXYZ(object? x, object? y, object? z);

다음 서버 시각을 위해 graphic=0로 좌표 대상을 준비합니다.

매개변수

  • x — 현재 지도의 세계 X 좌표 0..65535. 이는 화면 픽셀이나 검프 좌표가 아닙니다.
  • y — 현재 지도의 세계 Y 좌표 0..65535.
  • z - 네트워크 대상 사용을 위한 게임 포인트 높이 -128..127. 이것은 바닥이나 장비의 층이 아닙니다.

반환값

void - 반환 값이 없습니다. 별도의 회선으로 전화하세요. true/false, serial 또는 type로 사용하지 마세요. 메타데이터 object? 호환되는 양식의 경우 실제 결과는 변경되지 않습니다 void.

동작

  • 팀은 대응만 준비합니다. 아이템, 스킬, 주문 자체를 사용하지 않습니다. 다음 서버 대상은 클라이언트 프레임을 처리할 때 준비된 대상을 받습니다.
  • 연속 호출은 공통 클라이언트 대기열을 형성합니다. 객체와 좌표 대상은 한 번에 하나씩 처리됩니다. 로컬 선택 창 ClientRequest*/Info/container는 이를 소비하지 않습니다.
  • CancelWaitTarget 대기열을 지웁니다. TerminateAll 전체를 청소합니다. 아직 실행 중인 프로시저를 중지하면 자체 보류 중인 응답도 무효화됩니다. 짧은 절차를 완료해도 일반적으로 준비된 대상이 취소되지 않습니다.
  • 응답을 보내도 서버에서의 작업이 보장되지는 않습니다. 응답은 범위, 개체의 접근성, 가시성 및 작업 규칙을 확인합니다. 제어하려면 게임 결과와 로그를 사용하세요.

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.WaitTargetXYZ");
UO.WaitTargetXYZ(1445, 1690, 0);

1. 세계의 한 지점 지정 - 직접 스크립트

매개변수와 실행 흐름:

  • X=1445, Y=1690, Z=0. 그래픽은 0와 같습니다.
  • 서버 좌표계가 나타나면 응답이 전송됩니다.
UO.WaitTargetXYZ(1445, 1690, 0);

2. 문자 아래에 점 사용 - 스크립트 기능

매개변수와 실행 흐름:

  • X/Y/Z는 자신의 캐릭터에서 읽어옵니다.
  • 이는 캐릭터 serial의 object 타겟이 아닌 좌표 타겟입니다. 후자의 경우 WaitTargetSelf가 필요합니다.
return  RunScenario();
 object? RunScenario()
{
    var x = UO.GetX();
    var y = UO.GetY();
    var z = UO.GetZ();
    UO.WaitTargetXYZ(x, y, z);
    return null;
}

3. 도구 포인트 준비 - 스크립트 클래스

매개변수와 실행 흐름:

  • 좌표를 추출 지점으로 바꿉니다. UseType는 배낭에서 어떤 색깔의 삽 type=0x0F39을 찾고 있습니다.
  • 적절한 도구를 사용할 수 없는 경우 다른 작업으로 이동하기 전에 CancelWaitTarget를 통해 프렙을 제거하십시오.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
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;
    }

     public object? RunScenario()
    {
        UO.CancelWaitTarget();
        UO.WaitTargetXYZ(1445, 1690, 0);
        UO.UseType(0x0F39, -1);
        return null;
    }
}

명령 구현

C#은 대소문자를 구분합니다. 정확한 UO 이름을 사용하세요. 숫자 플래그는 0과 비교하고 반환 형식이 bool일 때만 bool을 사용하세요.

UO.WaitTargetXYZ(x, y, z) — UO.WaitTargetXYZ(Any,Any,Any)

매개변수: x (Any), y (Any), z (Any)

결과: void / Unit.

호출 시:

내부 구현 코드이며 독립 스크립트로 실행할 수 없습니다.

case "waittargetxyz": WaitTargetTile(new InjectionValue(0), arguments[0], arguments[1], arguments[2]); return InjectionValue.Unit;

Clone this wiki locally