Skip to content

KO UO Topic journal

Codex edited this page Oct 11, 2026 · 3 revisions

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

Journal

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

메시지, 줄 인덱스, 시간, 색상 및 serial 작성자를 검색하고 기다립니다. 작업 후에 예상되는 메시지와 이전 로그 줄을 분리하세요.

섹션

주제 명령 및 설명
Journal UO.Journal
InJournal UO.InJournal
InJournalBetweenTimes UO.InJournalBetweenTimes
WaitJournalLine UO.WaitJournalLine
System Journal UO.AddToSystemJournal · UO.AddToSystemJournalEx · UO.ClearSystemJournal · UO.WaitJournalLineSystem
Journal Ignore UO.AddJournalIgnore · UO.ClearJournalIgnore
Journal Color UO.JournalColor · UO.GetJournalColor
Journal Serial UO.JournalSerial · UO.GetJournalSerial
Journal Timer UO.JournalTimer
Found Text UO.GetFoundedText · UO.GetFoundedTextColor · UO.GetFoundedTextID · UO.GetFoundedTextIndex · UO.GetFoundedTextSerial · UO.GetFoundedTextTimer

모든 테마 명령

Journal

UO.Journal · UO.GetJournal · UO.InJournal · UO.InJournalBetweenTimes · UO.LowJournal · UO.HighJournal · UO.ClearJournal · UO.DeleteJournal · UO.ChangeJournalLength · UO.SetJournalLine · UO.AddToJournal · UO.LastJournalMessage · UO.LastMessage

Waiting

UO.WaitJournalLine · UO.WaitJournalLineSystem · UO.WaitingForJournalText

시스템 Journal

UO.AddToSystemJournal · UO.AddToSystemJournalEx · UO.ClearSystemJournal

Journal Ignore

UO.AddJournalIgnore · UO.ClearJournalIgnore

노선정보

UO.JournalColor · UO.GetJournalColor · UO.JournalSerial · UO.GetJournalSerial · UO.JournalTimer · UO.LineCount · UO.LineID · UO.LineIndex · UO.LineMsgType · UO.LineName · UO.LineTextColor · UO.LineTextFont · UO.LineTime · UO.LineType

찾은 텍스트

UO.FoundedParamId · UO.GetFoundedText · UO.GetFoundedTextColor · UO.GetFoundedTextID · UO.GetFoundedTextIndex · UO.GetFoundedTextSerial · UO.GetFoundedTextTimer

주제에 대한 예

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

UO.InJournal

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

var found = UO.InJournal("You see");
if (Truth(found > 0))
{
    var text = UO.GetFoundedText();
    UO.Print(text);
}

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

UO.WaitJournalLine

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

var started = Now();
var found = UO.WaitJournalLine(started, "success|failed", 3000);
if (Truth(found))
{
    UO.Print(UO.GetFoundedText());
}
else
{
    UO.Print("Timeout");
}

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

전체 명령 참조


UO.AddJournalIgnore

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

C# 시그니처

void UO.AddJournalIgnore(object? arg0);

ClassicUO 게임 로그 항목에 대한 로컬 텍스트 필터를 추가합니다.

매개변수

  • Convert.ToString - 저널 항목의 텍스트에서 검색할 비어 있지 않은 텍스트 조각입니다.

반환값

void. 이 명령은 일치 항목 수를 반환하지 않습니다.

동작

  • 텍스트가 가장자리에서 잘립니다. 빈 줄이 추가되지 않습니다. 레코드를 확인할 때 하위 문자열 검색은 대소문자를 구분하지 않고 수행됩니다. 일치하는 항목은 클라이언트 로그에 로컬로 숨겨집니다. 서버가 필터를 받지 못합니다. UO.ClearJournalIgnore() 추가된 모든 텍스트 필터를 지웁니다. 이미 표시된 항목은 지워도 복원되지 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.AddJournalIgnore");
UO.AddJournalIgnore("You see");

1. 이 문구가 포함된 새 게시물을 숨깁니다. - 직접 스크립트

매개변수와 실행 흐름:

  • 이 문구가 포함된 새 게시물을 숨깁니다.
UO.AddJournalIgnore("You see");

2. 필터는 대소문자를 구분하지 않는 하위 문자열을 검색합니다. - 스크립트 기능

매개변수와 실행 흐름:

  • 필터는 대소문자를 구분하지 않는 하위 문자열을 검색합니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var phrase = "vendor";
    UO.AddJournalIgnore(phrase);
    return null;
}

3. 여러 통화를 하면 독립적인 텍스트 필터가 추가됩니다. - 스크립트 클래스

매개변수와 실행 흐름:

  • 여러 통화를 하면 독립적인 텍스트 필터가 추가됩니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.AddJournalIgnore("You see");
        UO.AddJournalIgnore("vendor");
        return null;
    }
}

UO.AddToJournal

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

C# 시그니처

void UO.AddToJournal(object? arg0);

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

매개변수

반환값

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

동작

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

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.AddToJournal");
UO.AddToJournal("Script started");

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

매개변수와 실행 흐름:

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

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

매개변수와 실행 흐름:

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

    return null;
}

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

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

매개변수와 실행 흐름:

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

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

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

        return current;
    }

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

UO.AddToSystemJournal

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

C# 시그니처

void UO.AddToSystemJournal(object? arg0);

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

매개변수

반환값

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

동작

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

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.AddToSystemJournal");
UO.AddToSystemJournal("Script started");

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

매개변수와 실행 흐름:

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

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

매개변수와 실행 흐름:

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

    return null;
}

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

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

매개변수와 실행 흐름:

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

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

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

        return current;
    }

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

UO.AddToSystemJournalEx

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

C# 시그니처

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

게임 창에 로컬 라인을 출력하고 지정된 디자인의 대략적인 표시를 기록합니다. 구별 가능한 스크립트 진단 메시지에 유용합니다.

매개변수

  • TextColor — UO hue가 아닌 0xRRGGBB 형식의 텍스트 색상입니다. 알파 채널은 사용되지 않습니다. 예 0xFF8800 - 주황색; 엔진은 UO 팔레트에서 가장 가까운 색상을 선택합니다.
  • BGColor - 음수 - 기본 배경; 음수가 아닌 - RGB 0xRRGGBB. 요청한 배경은 IDE의 출력에 기록되지만 게임 창에는 선 뒤에 별도의 색상이 지정된 사각형이 그려지지 않습니다.
  • FontSize — 요청된 크기(포인트): <= 0 값이 10로 대체된 다음 4..72 범위가 적용됩니다. 게임 글꼴 번호는 (크기 + 1) / 3로 정수로 계산됩니다. 게임 창에는 정확한 바탕 화면 크기가 없습니다.
  • FontName — 출력 IDE에 디자인 정보를 쓰는 글꼴 이름입니다. 가장자리 주변의 공백이 제거됩니다. 빈 값은 Consolas를 의미합니다. 이 명령은 임의의 Windows 글꼴을 게임 창에 로드하지 않습니다.

반환값

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

동작

  • 다섯 가지 인수(Text, TextColor, BGColor, FontSize, FontName)가 모두 필요합니다. 텍스트는 로컬로 표시됩니다. IDE에서는 요청하신 디자인이 추가로 저장됩니다. 배경색과 글꼴 이름은 디자인 단서이므로 정확하게 재현되지는 않습니다. ConColor는 명시적으로 전달된 RGB를 변경하지 않습니다.
  • 메시지는 게임창 좌측하단과 로컬로그로 이동합니다. 출력 IDE에서 사본을 사용할 수 있습니다. 관리자의 일반 로그에서 스크립트 메시지 필터를 활성화하면 게임 창 없이 항목을 사용할 수 있습니다. 서버 시스템 메시지 필터는 그러한 레코드를 선택하지 않습니다. 네트워크 음성 패킷이 전송되지 않습니다. 머리 위의 비문에는 UO.CharPrint이 있습니다.
  • UO.Print · UO.CharPrint · UO.ClientPrintEx · UO.AddToSystemJournalEx

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.AddToSystemJournalEx");
UO.AddToSystemJournalEx("Route started", 0xFF8800, -1, 12, "Consolas");

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

매개변수와 실행 흐름:

  • 주황색 메시지, 기본 배경 - 1, 크기 12: 게임 글꼴이 4가 됩니다. Consolas는 IDE 정보에 저장됩니다. 게임 팔레트로 인해 색상이 정확한 RGB와 다를 수 있습니다.
UO.AddToSystemJournalEx("Route started", 0xFF8800, -1, 12, "Consolas");

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

매개변수와 실행 흐름:

  • 0x112233의 양수 BGColor 값은 IDE에 백그라운드 요청을 저장합니다. FontSize=0 10가 사용되는 경우 빈 FontName가 Consolas가 됩니다. 게임 창에서는 이 매개변수에 따라 배경이 칠해지지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.AddToSystemJournalEx("Formatting details", 0x33AAFF, 0x112233, 0, "");
    return null;
}

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

매개변수와 실행 흐름:

  • ReportCount는 완전히 선언된 절차입니다. 수량의 변화만 보고하며, 증가하는 경우 녹색 RGB을 선택하고 감소하는 경우 빨간색을 선택합니다. 다음 비교를 위해 새 수량을 반환합니다. 결과는 AddToSystemJournalEx가 아닌 ReportCount에 속합니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var previous = 10;
        previous = ReportCount(previous, 12);
        return null;
    }

    dynamic ReportCount(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            var textColor = 0xCC3333;
            if (Truth(current > previous))
            {
                textColor = 0x33AA66;
            }

            UO.AddToSystemJournalEx("Count: " + Convert.ToString(current), textColor, -1, 10, "Consolas");
        }

        return current;
    }

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

UO.ChangeJournalLength

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

C# 시그니처

void UO.ChangeJournalLength(object? arg0);

유지되는 클라이언트 로그 기록 제한을 변경합니다.

매개변수

  • newLength — int로 변환할 레코드 수. 런타임 제한은 1까지입니다. JournalManager 상수 위의 한계.MAX_JOURNAL_HISTORY_COUNT.

반환값

void - 반환 값이 없습니다.

동작

  • 상태를 저장합니다.JournalLength, 그런 다음 SetJournalLength를 호출합니다. JournalManager는 가장 오래된 항목을 새로운 제한으로 제거하여 기존 기록을 줄입니다. 필터링된 항목과 로그 표시는 별도의 메커니즘입니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.ChangeJournalLength");
UO.ChangeJournalLength(100);

1. 100 레코드 기록 - 직접 스크립트

매개변수와 실행 흐름:

  • 새로운 제한은 저장되는 레코드 수를 제한합니다.
UO.ChangeJournalLength(100);

2. 최소 기록 - 스크립트 기능

매개변수와 실행 흐름:

  • 제한이 줄어들면 오래된 항목이 삭제됩니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.ChangeJournalLength(1);
    return null;
}

3. Null 입력 - 스크립트 클래스

매개변수와 실행 흐름:

  • 로그를 지우는 대신 0이 1로 정규화됩니다.
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.ChangeJournalLength(0);
        return null;
    }
}

UO.ClearJournal

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

C# 시그니처

void UO.ClearJournal();

공유 로컬 로그에서 줄을 제거합니다.

매개변수

매개변수가 없습니다.

반환값

void - 반환 값이 없습니다. 삭제된 행 수를 반환하지 않습니다. 적중 횟수 카운터와 현재 스크립트 선택이 재설정됩니다.

동작

  • 공유 버퍼는 모든 스크립트에서 사용할 수 있습니다. 삭제된 줄은 더 이상 존재하지 않습니다. 이전에 다른 스크립트에 의해 저장된 스냅샷은 남아 있을 수 있지만 해당 인덱스는 -1가 됩니다.
  • 텍스트 필터가 없으면 시스템을 포함하여 전체 Classic UO 버퍼가 지워집니다. 로컬 로그 파일과 서버 메시지는 삭제되지 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 선택한 로그 영역 지우기 - 직접 스크립트

매개변수와 실행 흐름:

  • 논쟁이 없습니다. 공유 버퍼의 모든 라인이 삭제됩니다.
  • 마지막 검색 카운터는 0가 됩니다. Print는 삭제 후 새 행을 추가할 수 있습니다.
UO.ClearJournal();
var count = UO.LineCount();
UO.Print("Search matches after clear: " + Convert.ToString(count));

2. 대기 전 지우기 - 스크립트 기능

매개변수와 실행 흐름:

  • 타임스탬프가 저장되기 전에 지워집니다. 1000 - 밀리초 단위로 대기가 제한됩니다.
  • 일반적으로 타임스탬프는 오래된 메시지를 제외하는 데 충분합니다. 정리는 다른 스크립트에도 영향을 미칩니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.ClearJournal();
    var started = Now();
    var found = UO.WaitJournalLine(started, "notice", 1000);
    UO.Print(Convert.ToString(found));
    return null;
}

3. 선택한 항목 재설정 확인 - 스크립트 클래스

매개변수와 실행 흐름:

  • 현재 스크립트 index=-1를 통해 정리한 후, 버퍼의 일부만 삭제된 경우에도 마찬가지입니다.
  • 텍스트 변수는 이전에 읽은 복사본을 저장하며 GetFoundedText는 이미 지워졌습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var text = UO.Journal(0);
        UO.ClearJournal();
        var index = UO.LineIndex();
        UO.Print(Convert.ToString(index));
        return null;
    }
}

UO.ClearJournalIgnore

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

C# 시그니처

void UO.ClearJournalIgnore();

모든 텍스트 필터 JournalManager를 제거합니다.

매개변수

매개변수가 없습니다.

반환값

void - 반환 값이 없습니다.

동작

  • 필터를 제거해도 기록이 삭제되거나 AddChatUserIgnore 이름 필터가 취소되지 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

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

매개변수와 실행 흐름:

  • 모든 텍스트 필터 JournalManager를 제거합니다.
UO.ClearJournalIgnore();

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

매개변수와 실행 흐름:

  • You see 텍스트가 다시 표시되도록 허용합니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.AddJournalIgnore("You see");
    UO.ClearJournalIgnore();
    return null;
}

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

매개변수와 실행 흐름:

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

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

UO.ClearSystemJournal

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

C# 시그니처

void UO.ClearSystemJournal();

작성자 이름이 System인 줄을 제거합니다.

매개변수

매개변수가 없습니다.

반환값

void - 반환 값이 없습니다. 삭제된 행 수를 반환하지 않습니다. 적중 횟수 카운터와 현재 스크립트 선택이 재설정됩니다.

동작

  • 공유 버퍼는 모든 스크립트에서 사용할 수 있습니다. 삭제된 줄은 더 이상 존재하지 않습니다. 이전에 다른 스크립트에 의해 저장된 스냅샷은 남아 있을 수 있지만 해당 인덱스는 -1가 됩니다.
  • 시스템은 작성자 이름으로 인식되며 대소문자를 구분하지 않습니다. ClassicUO 일반 저널 필터입니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 선택한 로그 영역 지우기 - 직접 스크립트

매개변수와 실행 흐름:

  • 논쟁이 없습니다. 시스템 행만 제거됩니다.
  • 마지막 검색 카운터는 0가 됩니다. Print는 삭제 후 새 행을 추가할 수 있습니다.
UO.ClearSystemJournal();
var count = UO.LineCount();
UO.Print("Search matches after clear: " + Convert.ToString(count));

2. 대기 전 지우기 - 스크립트 기능

매개변수와 실행 흐름:

  • 타임스탬프가 저장되기 전에 지워집니다. 1000 - 밀리초 단위로 대기가 제한됩니다.
  • 일반적으로 타임스탬프는 오래된 메시지를 제외하는 데 충분합니다. 정리는 다른 스크립트에도 영향을 미칩니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.ClearSystemJournal();
    var started = Now();
    var found = UO.WaitJournalLine(started, "notice", 1000);
    UO.Print(Convert.ToString(found));
    return null;
}

3. 선택한 항목 재설정 확인 - 스크립트 클래스

매개변수와 실행 흐름:

  • 현재 스크립트 index=-1를 통해 정리한 후, 버퍼의 일부만 삭제된 경우에도 마찬가지입니다.
  • 텍스트 변수는 이전에 읽은 복사본을 저장하며 GetFoundedText는 이미 지워졌습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var text = UO.Journal(0);
        UO.ClearSystemJournal();
        var index = UO.LineIndex();
        UO.Print(Convert.ToString(index));
        return null;
    }
}

UO.DeleteJournal

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

C# 시그니처

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

공유 로컬 로그에서 줄을 제거합니다.

매개변수

  • text — |를 통해 검색된 하위 문자열 또는 여러 대안(예: 성공|실패). 각 대안의 가장자리에 있는 공백은 제거되고, 빈 대안은 건너뜁니다. 이는 정규식이 아닌 일반 텍스트입니다. 비어 있지 않은 템플릿을 사용하세요. DeleteJournal에만 해당하는 선택 사항: 전송 시 일치하는 문자열이 대소문자를 구분하지 않고 제거됩니다. 인수가 없으면 전체 버퍼가 삭제됩니다.

반환값

void - 반환 값이 없습니다. 삭제된 행 수를 반환하지 않습니다. 적중 횟수 카운터와 현재 스크립트 선택이 재설정됩니다.

동작

  • 공유 버퍼는 모든 스크립트에서 사용할 수 있습니다. 삭제된 줄은 더 이상 존재하지 않습니다. 이전에 다른 스크립트에 의해 저장된 스냅샷은 남아 있을 수 있지만 해당 인덱스는 -1가 됩니다.
  • 텍스트 필터가 없으면 시스템을 포함하여 전체 Classic UO 버퍼가 지워집니다. 로컬 로그 파일과 서버 메시지는 삭제되지 않습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 선택한 로그 영역 지우기 - 직접 스크립트

매개변수와 실행 흐름:

  • 논쟁이 없습니다. 공유 버퍼의 모든 라인이 삭제됩니다.
  • 마지막 검색 카운터는 0가 됩니다. Print는 삭제 후 새 행을 추가할 수 있습니다.
UO.DeleteJournal();
var count = UO.LineCount();
UO.Print("Search matches after clear: " + Convert.ToString(count));

2. 대기 전 지우기 - 스크립트 기능

매개변수와 실행 흐름:

  • 타임스탬프가 저장되기 전에 지워집니다. 1000 - 밀리초 단위로 대기가 제한됩니다.
  • 일반적으로 타임스탬프는 오래된 메시지를 제외하는 데 충분합니다. 정리는 다른 스크립트에도 영향을 미칩니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.DeleteJournal();
    var started = Now();
    var found = UO.WaitJournalLine(started, "notice", 1000);
    UO.Print(Convert.ToString(found));
    return null;
}

3. 선택한 항목 재설정 확인 - 스크립트 클래스

매개변수와 실행 흐름:

  • 현재 스크립트 index=-1를 통해 정리한 후, 버퍼의 일부만 삭제된 경우에도 마찬가지입니다.
  • 텍스트 변수는 이전에 읽은 복사본을 저장하며 GetFoundedText는 이미 지워졌습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var text = UO.Journal(0);
        UO.DeleteJournal();
        var index = UO.LineIndex();
        UO.Print(Convert.ToString(index));
        return null;
    }
}

4. 일치하는 텍스트만 제거 - 직접 스크립트

매개변수와 실행 흐름:

  • text에는 두 개의 하위 문자열이 포함되어 있습니다. 그 중 어떤 줄이라도 대소문자를 고려하지 않고 삭제됩니다. 나머지 메시지는 남아 있습니다.
  • 삭제 후 일치하는 새 메시지가 없는 경우found=0입니다. 이 구현의 빈 패턴은 모든 문자열과 일치합니다.
UO.DeleteJournal("notice|warning");
var found = UO.InJournal("notice|warning", -1);
UO.Print(Convert.ToString(found));

UO.FoundedParamId

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

C# 시그니처

dynamic UO.FoundedParamId();

일치하는 검색 패턴 대안의 수를 반환합니다.

매개변수

매개변수가 없습니다.

반환값

int는 |를 통해 비어 있지 않은 대안 목록에 있는 0의 인덱스입니다. 성공|실패는 성공을 의미하는 0, 실패를 의미하는 1를 제공합니다. 적합한 대안이 여러 개 있는 경우 템플릿의 첫 번째 대안이 사용됩니다. 일치하지 않거나 직접 Journal 이후에도 0. 이는 작성자의 serial도 아니고 줄번호도 아니고 메시지의 type도 아닙니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • 먼저 검색결과 확인 > 0. 0 값 자체가 성공을 확인하지는 않습니다. 번호를 매기기 전에 가장자리 공간과 빈 대안이 제거됩니다.
  • https://forum.yoko.com.ua/viewtopic.php?p=27633 ; . 이 적응에서 ID는 대안을 나타내며 작성자 및 유형 필드는 LineID/LineMsgType를 통해 별도로 사용할 수 있습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 두 가지 결과 - 직접 스크립트

매개변수와 실행 흐름:

  • 성공은 0의 대안이고, 실패는 1의 대안입니다. 검색 성공 여부는 별도로 확인됩니다.
  • 이는 서버의 게임 동작 확인이 아닌 텍스트 분석입니다.
if (Truth(UO.InJournal("success|failed") > 0))
{
    var outcome = UO.FoundedParamId();
    if (Truth(outcome == 0))
    {
        UO.Print("Success text");
    }
    else
    {
        UO.Print("Failure text");
    }
}

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

2. 대소문자 없는 세 가지 선택 - 스크립트 기능

매개변수와 실행 흐름:

  • -1는 레지스터를 비활성화합니다. 결과 0, 1, 2는 대안의 순서에 해당합니다.
  • 문자열에 여러 옵션이 포함된 경우 순서대로 첫 번째로 일치하는 패턴이 반환됩니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.InJournal("mining|ore|empty", -1) > 0))
    {
        var kind = UO.FoundedParamId();
        UO.Print("Alternative: " + Convert.ToString(kind));
    }

    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. 다른 줄을 읽기 전에 결과 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • Journal(0)는 선택 사항을 변경하고 ID 대안을 재설정하므로 결과가 미리 저장됩니다.
  • Journal 이후의 새로운 getter 호출은 더 이상 이전 패턴을 설명하지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.InJournal("success|failed") > 0))
        {
            var outcome = UO.FoundedParamId();
            var latest = UO.Journal(0);
            UO.Print("Saved outcome: " + Convert.ToString(outcome));
        }

        return null;
    }

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

UO.GetFoundedText

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

C# 시그니처

string UO.GetFoundedText();

선택한 로그 항목의 텍스트를 반환합니다.

매개변수

매개변수가 없습니다.

반환값

string - 선택한 항목의 텍스트입니다. 선택 항목이 없는 빈 줄입니다. 기존 항목에는 공백 텍스트가 허용됩니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • Getter는 검색을 실행하지 않고 최신 행을 선택합니다. Null/빈 값은 유효한 데이터일 수 있습니다. 검색 결과를 고려하십시오.
  • 기본 디렉터리: https://forum.yoko.com.ua/viewtopic.php?p=27633.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 검색 후 필드 읽기 - 직접 스크립트

매개변수와 실행 흐름:

  • 통지 — 검색된 텍스트의 예입니다. Getter는 검색이 성공한 후에만 매개변수 없이 호출됩니다.
  • string - 선택한 항목의 텍스트입니다. 선택 항목이 없는 빈 줄입니다. 기존 항목에는 공백 텍스트가 허용됩니다.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.GetFoundedText();
    UO.Print("Text: " + Convert.ToString(value));
}

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

2. 특정 라인의 필드 읽기 - 스크립트 기능

매개변수와 실행 흐름:

  • Journal(0)는 새 항목을 선택합니다. 인덱스와 값은 Print까지 읽혀집니다.
  • 색인 검사를 통해 레코드가 없는지와 유효한 null 또는 빈 필드를 구별할 수 있습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.GetFoundedText();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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. 다음 조회 전에 필드 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 첫 번째 검색에서는 성공을 선택하고, 두 번째 검색에서는 선택 항목을 바꾸거나 재설정합니다. 저장된 항목에는 이미 필수 필드의 사본이 포함되어 있습니다.
  • 저장된 var는 새로 검색하거나 메시지를 지우거나 수신해도 변경되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.GetFoundedText();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        return null;
    }

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

UO.GetFoundedTextColor

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

C# 시그니처

string UO.GetFoundedTextColor();

선택한 로그 항목의 색상을 반환합니다.

매개변수

매개변수가 없습니다.

반환값

string - UO hue 0x0044 형식(4 16진수). 선택의 여지가 없습니다 - 0x0000; hue=0도 메시지로 사용할 수 있습니다. 이것은 RGB이 아닙니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • Getter는 검색을 실행하지 않고 최신 행을 선택합니다. Null/빈 값은 유효한 데이터일 수 있습니다. 검색 결과를 고려하십시오.
  • 기본 디렉터리: https://forum.yoko.com.ua/viewtopic.php?p=27633.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 검색 후 필드 읽기 - 직접 스크립트

매개변수와 실행 흐름:

  • 통지 — 검색된 텍스트의 예입니다. Getter는 검색이 성공한 후에만 매개변수 없이 호출됩니다.
  • string - UO hue 0x0044 형식(4 16진수). 선택의 여지가 없습니다 - 0x0000; hue=0도 메시지로 사용할 수 있습니다. 이것은 RGB이 아닙니다.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.GetFoundedTextColor();
    UO.Print("Hue: " + Convert.ToString(value));
}

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

2. 특정 라인의 필드 읽기 - 스크립트 기능

매개변수와 실행 흐름:

  • Journal(0)는 새 항목을 선택합니다. 인덱스와 값은 Print까지 읽혀집니다.
  • 색인 검사를 통해 레코드가 없는지와 유효한 null 또는 빈 필드를 구별할 수 있습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.GetFoundedTextColor();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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. 다음 조회 전에 필드 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 첫 번째 검색에서는 성공을 선택하고, 두 번째 검색에서는 선택 항목을 바꾸거나 재설정합니다. 저장된 항목에는 이미 필수 필드의 사본이 포함되어 있습니다.
  • 저장된 var는 새로 검색하거나 메시지를 지우거나 수신해도 변경되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.GetFoundedTextColor();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        return null;
    }

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

UO.GetFoundedTextID

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

C# 시그니처

int UO.GetFoundedTextID();

일치하는 검색 패턴 대안의 수를 반환합니다.

매개변수

매개변수가 없습니다.

반환값

int는 |를 통해 비어 있지 않은 대안 목록에 있는 0의 인덱스입니다. 성공|실패는 성공을 의미하는 0, 실패를 의미하는 1를 제공합니다. 적합한 대안이 여러 개 있는 경우 템플릿의 첫 번째 대안이 사용됩니다. 일치하지 않거나 직접 Journal 이후에도 0. 이는 작성자의 serial도 아니고 줄번호도 아니고 메시지의 type도 아닙니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • 먼저 검색결과 확인 > 0. 0 값 자체가 성공을 확인하지는 않습니다. 번호를 매기기 전에 가장자리 공간과 빈 대안이 제거됩니다.
  • https://forum.yoko.com.ua/viewtopic.php?p=27633 ; . 이 적응에서 ID는 대안을 나타내며 작성자 및 유형 필드는 LineID/LineMsgType를 통해 별도로 사용할 수 있습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 두 가지 결과 - 직접 스크립트

매개변수와 실행 흐름:

  • 성공은 0의 대안이고, 실패는 1의 대안입니다. 검색 성공 여부는 별도로 확인됩니다.
  • 이는 서버의 게임 동작 확인이 아닌 텍스트 분석입니다.
if (Truth(UO.InJournal("success|failed") > 0))
{
    var outcome = UO.GetFoundedTextID();
    if (Truth(outcome == 0))
    {
        UO.Print("Success text");
    }
    else
    {
        UO.Print("Failure text");
    }
}

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

2. 대소문자 없는 세 가지 선택 - 스크립트 기능

매개변수와 실행 흐름:

  • -1는 레지스터를 비활성화합니다. 결과 0, 1, 2는 대안의 순서에 해당합니다.
  • 문자열에 여러 옵션이 포함된 경우 순서대로 첫 번째로 일치하는 패턴이 반환됩니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.InJournal("mining|ore|empty", -1) > 0))
    {
        var kind = UO.GetFoundedTextID();
        UO.Print("Alternative: " + Convert.ToString(kind));
    }

    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. 다른 줄을 읽기 전에 결과 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • Journal(0)는 선택 사항을 변경하고 ID 대안을 재설정하므로 결과가 미리 저장됩니다.
  • Journal 이후의 새로운 getter 호출은 더 이상 이전 패턴을 설명하지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.InJournal("success|failed") > 0))
        {
            var outcome = UO.GetFoundedTextID();
            var latest = UO.Journal(0);
            UO.Print("Saved outcome: " + Convert.ToString(outcome));
        }

        return null;
    }

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

UO.GetFoundedTextIndex

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

C# 시그니처

int UO.GetFoundedTextIndex();

선택한 항목이 로그에 아직 저장되어 있는 경우 해당 항목의 현재 색인을 반환합니다.

매개변수

매개변수가 없습니다.

반환값

int은 0(최신 행)의 현재 인덱스입니다. -1는 선택의 여지가 없거나 선택한 항목이 이미 삭제/선점되었음을 의미합니다. 이는 InJournal의 결과가 아닙니다. 1는 색인에서 뺄 필요가 없습니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • 인덱스는 레코드의 ID를 기반으로 다시 계산됩니다. 새로운 메시지가 증가합니다. 이전에 저장된 인덱스가 일정하지 않습니다 ID; 텍스트의 경우 GetFoundedText가 더 안전합니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 발견된 기록의 색인 - 직접 스크립트

매개변수와 실행 흐름:

  • 인수가 없는 Getter는 현재 스크립트의 선택 항목을 읽습니다. 0 — 새 줄, -1 — 현재 버퍼에 줄이 없습니다.
  • 새 메시지로 대체되지 않도록 저장된 항목에서 텍스트를 가져옵니다.
if (Truth(UO.InJournal("notice") > 0))
{
    var index = UO.GetFoundedTextIndex();
    var text = UO.GetFoundedText();
    UO.Print(Convert.ToString(index) + ": " + text);
}

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

2. 앞으로 읽기 확인 - 스크립트 기능

매개변수와 실행 흐름:

  • Journal(0)은 마지막 항목을 선택합니다. 검사에서 빈 로그는 제외됩니다.
  • 유효한 항목에는 빈 텍스트가 허용됩니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var text = UO.Journal(0);
    if (Truth(UO.GetFoundedTextIndex() >= 0))
    {
        UO.Print(text);
    }

    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. 대기 후 인덱스 업데이트 - 스크립트 클래스

매개변수와 실행 흐름:

  • 100 ms 동안 기다리면 새 메시지가 도착할 수 있습니다. 같은 항목을 다시 찾은 후.
  • 제거되면 이후가 증가하거나 -1가 될 수 있습니다. GetFoundedText에는 여전히 저장된 텍스트가 포함되어 있습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.InJournal("needle") > 0))
        {
            var before = UO.GetFoundedTextIndex();
            UO.Wait(100);
            var after = UO.GetFoundedTextIndex();
            UO.Print(Convert.ToString(before) + " -> " + Convert.ToString(after));
        }

        return null;
    }

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

UO.GetFoundedTextSerial

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

C# 시그니처

string UO.GetFoundedTextSerial();

선택한 저널 항목의 저자를 serial 반환합니다.

매개변수

매개변수가 없습니다.

반환값

string - serial 저자의 0x00001234 형식(8 16진수). 선택의 여지가 없습니다 - 0x00000000. 이것은 주제의 type나 저널 색인이 아닙니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • Getter는 검색을 실행하지 않고 최신 행을 선택합니다. Null/빈 값은 유효한 데이터일 수 있습니다. 검색 결과를 고려하십시오.
  • 기본 디렉터리: https://forum.yoko.com.ua/viewtopic.php?p=27633.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 검색 후 필드 읽기 - 직접 스크립트

매개변수와 실행 흐름:

  • 통지 — 검색된 텍스트의 예입니다. Getter는 검색이 성공한 후에만 매개변수 없이 호출됩니다.
  • string - serial 저자의 0x00001234 형식(8 16진수). 선택의 여지가 없습니다 - 0x00000000. 이것은 주제의 type나 저널 색인이 아닙니다.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.GetFoundedTextSerial();
    UO.Print("Speaker serial: " + Convert.ToString(value));
}

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

2. 특정 라인의 필드 읽기 - 스크립트 기능

매개변수와 실행 흐름:

  • Journal(0)는 새 항목을 선택합니다. 인덱스와 값은 Print까지 읽혀집니다.
  • 색인 검사를 통해 레코드가 없는지와 유효한 null 또는 빈 필드를 구별할 수 있습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.GetFoundedTextSerial();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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. 다음 조회 전에 필드 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 첫 번째 검색에서는 성공을 선택하고, 두 번째 검색에서는 선택 항목을 바꾸거나 재설정합니다. 저장된 항목에는 이미 필수 필드의 사본이 포함되어 있습니다.
  • 저장된 var는 새로 검색하거나 메시지를 지우거나 수신해도 변경되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.GetFoundedTextSerial();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        return null;
    }

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

UO.GetFoundedTextTimer

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

C# 시그니처

int UO.GetFoundedTextTimer();

선택한 로그 항목의 밀리초 타임스탬프를 반환합니다.

매개변수

매개변수가 없습니다.

반환값

int — 런타임 시작부터 순간을 밀리초 단위로 기록하며 Now()와 호환됩니다. 시작 전 항목은 0을 제공합니다. 선택의 여지도 없이 0; 잘못된 달력 표시는 -1를 나타냅니다. 과거형이나 10분의 1초도 아닙니다 UO.Timer().

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • Getter는 검색을 실행하지 않고 최신 행을 선택합니다. Null/빈 값은 유효한 데이터일 수 있습니다. 검색 결과를 고려하십시오.
  • 기본 디렉터리: https://forum.yoko.com.ua/viewtopic.php?p=27633.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 검색 후 필드 읽기 - 직접 스크립트

매개변수와 실행 흐름:

  • 통지 — 검색된 텍스트의 예입니다. Getter는 검색이 성공한 후에만 매개변수 없이 호출됩니다.
  • int — 런타임 시작부터 순간을 밀리초 단위로 기록하며 Now()와 호환됩니다. 시작 전 항목은 0을 제공합니다. 선택의 여지도 없이 0; 잘못된 달력 표시는 -1를 나타냅니다. 과거형이나 10분의 1초도 아닙니다 UO.Timer().
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.GetFoundedTextTimer();
    UO.Print("Timestamp ms: " + Convert.ToString(value));
}

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

2. 특정 라인의 필드 읽기 - 스크립트 기능

매개변수와 실행 흐름:

  • Journal(0)는 새 항목을 선택합니다. 인덱스와 값은 Print까지 읽혀집니다.
  • 색인 검사를 통해 레코드가 없는지와 유효한 null 또는 빈 필드를 구별할 수 있습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.GetFoundedTextTimer();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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. 다음 조회 전에 필드 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 첫 번째 검색에서는 성공을 선택하고, 두 번째 검색에서는 선택 항목을 바꾸거나 재설정합니다. 저장된 항목에는 이미 필수 필드의 사본이 포함되어 있습니다.
  • 저장된 var는 새로 검색하거나 메시지를 지우거나 수신해도 변경되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.GetFoundedTextTimer();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        return null;
    }

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

UO.GetJournal

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

C# 시그니처

string UO.GetJournal(object? arg0);

현재 인덱스에 있는 줄의 텍스트를 읽고 GetFoundedText/Line*에 대한 해당 항목을 선택합니다.

매개변수

  • index - 필수 int - 현재 색인: 0는 최신 줄을 의미하고, 1 - 이전 줄을 의미합니다. 메시지가 도착하면 인덱스가 이동됩니다. 이는 serial도 아니고 패턴의 ID 변형도 아니며 InJournal의 긍정적인 결과도 아닙니다.
  • StringIndex - 필수 int - 현재 색인: 0는 최신 줄을 의미하고, 1 - 이전 줄을 의미합니다. 메시지가 도착하면 인덱스가 이동됩니다. 이는 serial도 아니고 패턴의 ID 변형도 아니며 InJournal의 긍정적인 결과도 아닙니다.

반환값

string — 문자열의 텍스트이거나 색인이 올바르지 않거나 저널이 비어 있는 경우 빈 문자열입니다. 기존 행에는 빈 텍스트가 있을 수도 있습니다. 읽은 후 LineIndex >= 0는 항목이 선택되었음을 확인합니다. 줄 수는 아닙니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • 직접 읽기는 ID 대안을 재설정합니다. GetFoundedTextID/FoundedParamId 뒤에는 0가 옵니다. Journal 자체는 LineCount를 다시 계산하지 않습니다.
  • https://forum.yoko.com.ua/viewtopic.php?p=27633 ; .

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 마지막 줄과 그 작성자는 직접 스크립트입니다.

매개변수와 실행 흐름:

  • 0는 최신 라인입니다. 먼저 텍스트와 저자를 읽은 다음 결과를 표시합니다.
  • Print는 메시지를 추가할 수 있습니다. 저장된 텍스트/작성자는 이전에 선택한 항목을 참조합니다.
var text = UO.GetJournal(0);
var author = UO.LineName();
UO.Print(author + ": " + text);

2. 이전 줄이 존재하는 경우 스크립트 함수입니다.

매개변수와 실행 흐름:

  • 1는 이전 항목이고, HighJournal는 사용 가능한 최대 인덱스입니다.
  • 통화 간에 로그가 변경될 수 있습니다. 이미 발견된 행의 데이터에 대해서는 GetFoundedText를 사용하세요.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.HighJournal() >= 1))
    {
        var text = UO.GetJournal(1);
        UO.Print(text);
    }

    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. 문자열이 없는 것과 빈 텍스트 구별 - 스크립트 클래스

매개변수와 실행 흐름:

  • LineIndex=-1는 선택한 항목이 누락/삭제되었음을 의미합니다. Len(text)=0 자체는 이것을 의미하지 않습니다.
  • 진단 출력이 로그에 추가될 때까지 테스트 결과를 저장합니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var text = UO.GetJournal(0);
        var index = UO.LineIndex();
        if (Truth(index < 0))
        {
            UO.Print("No record");
        }
        else
        {
            UO.Print("Text length: " + Convert.ToString(Len(text)));
        }

        return null;
    }

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

UO.GetJournalColor

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

C# 시그니처

string UO.GetJournalColor(object? arg0);

선택한 항목을 변경하지 않고 현재 인덱스에 있는 행의 hue 필드를 읽습니다.

매개변수

  • index - 필수 int - 현재 색인: 0는 최신 줄을 의미하고, 1 - 이전 줄을 의미합니다. 메시지가 도착하면 인덱스가 이동됩니다. 이는 serial도 아니고 패턴의 ID 변형도 아니며 InJournal의 긍정적인 결과도 아닙니다.

반환값

string - UO hue 0x0044; 색인 0x0000가 잘못된 경우. 이것은 RGB이 아닙니다.

동작

  • 각 호출은 현재 위치를 읽습니다. 동일한 레코드의 일치하는 텍스트 및 필드의 경우 먼저 Journal(색인)을 입력한 다음 GetFoundedText/Line*을 입력하세요. Null 값은 실제 데이터일 수 있습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 새 레코드 필드 - 직접 스크립트

매개변수와 실행 흐름:

  • 0는 새 줄의 인덱스입니다. 버퍼의 존재가 확인됩니다.
  • string - UO hue 0x0044; 색인 0x0000가 잘못된 경우. 이것은 RGB이 아닙니다.
if (Truth(UO.HighJournal() >= 0))
{
    var value = UO.GetJournalColor(0);
    UO.Print(Convert.ToString(value));
}

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=1이 아닌 이전 줄입니다.
  • 검색에서 선택한 항목 GetFoundedText/Line*은 변경되지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.HighJournal() >= 1))
    {
        var value = UO.GetJournalColor(1);
        UO.Print(Convert.ToString(value));
    }

    return null;
}

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

3. 다음 작업 전에 값 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 값은 호출 시 필드를 복사합니다. 기다리는 동안 변수가 업데이트되지 않습니다.
  • 현재 줄 0을 다시 읽으려면 명령을 다시 호출하세요. 이것은 이미 다른 항목일 수 있습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var value = UO.GetJournalColor(0);
        UO.Wait(100);
        UO.Print("Saved value: " + Convert.ToString(value));
        return null;
    }
}

UO.GetJournalSerial

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

C# 시그니처

string UO.GetJournalSerial(object? arg0);

선택한 항목을 변경하지 않고 현재 인덱스에 있는 행의 serial 필드를 읽습니다.

매개변수

  • index - 필수 int - 현재 색인: 0는 최신 줄을 의미하고, 1 - 이전 줄을 의미합니다. 메시지가 도착하면 인덱스가 이동됩니다. 이는 serial도 아니고 패턴의 ID 변형도 아니며 InJournal의 긍정적인 결과도 아닙니다.

반환값

string - serial 저자의 0x00001234; 색인 0x00000000이 잘못된 경우.

동작

  • 각 호출은 현재 위치를 읽습니다. 동일한 레코드의 일치하는 텍스트 및 필드의 경우 먼저 Journal(색인)을 입력한 다음 GetFoundedText/Line*을 입력하세요. Null 값은 실제 데이터일 수 있습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 새 레코드 필드 - 직접 스크립트

매개변수와 실행 흐름:

  • 0는 새 줄의 인덱스입니다. 버퍼의 존재가 확인됩니다.
  • string - serial 저자의 0x00001234; 색인 0x00000000이 잘못된 경우.
if (Truth(UO.HighJournal() >= 0))
{
    var value = UO.GetJournalSerial(0);
    UO.Print(Convert.ToString(value));
}

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=1이 아닌 이전 줄입니다.
  • 검색에서 선택한 항목 GetFoundedText/Line*은 변경되지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.HighJournal() >= 1))
    {
        var value = UO.GetJournalSerial(1);
        UO.Print(Convert.ToString(value));
    }

    return null;
}

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

3. 다음 작업 전에 값 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 값은 호출 시 필드를 복사합니다. 기다리는 동안 변수가 업데이트되지 않습니다.
  • 현재 줄 0을 다시 읽으려면 명령을 다시 호출하세요. 이것은 이미 다른 항목일 수 있습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var value = UO.GetJournalSerial(0);
        UO.Wait(100);
        UO.Print("Saved value: " + Convert.ToString(value));
        return null;
    }
}

UO.HighJournal

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

C# 시그니처

dynamic UO.HighJournal();

사용 가능한 최대 로그 인덱스를 반환합니다.

매개변수

매개변수가 없습니다.

반환값

int: -1 매거진이 비어 있을 때; 그렇지 않으면 저장된 레코드 수에서 1를 뺀 값이 사용 가능한 가장 오래된 레코드의 인덱스입니다. Journal/GetJournal 새 레코드부터 이전 레코드까지 0 인덱스를 사용합니다. 긍정적인 결과 InJournal는 다른 단일 카운트를 사용합니다.

동작

  • 새로운 메시지와 정리는 경계를 바꿉니다. 여기서 순서는 신기록부터 구기록 순으로 Journal(0) 입니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 항목 확인 - 직접 스크립트

매개변수와 실행 흐름:

  • 음수 경계는 빈 버퍼를 의미합니다.
  • 버퍼가 비어 있지 않으면 Journal(0)은 새 항목을 읽습니다.
if (Truth(UO.HighJournal() >= 0))
{
    var text = UO.Journal(0);
    UO.Print(text);
}

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

2. 사용 가능한 라인 수 - 스크립트 기능

매개변수와 실행 흐름:

  • HighJournal=-1 로그가 비어 있으면 total=0입니다. LowJournal는 줄 수가 아닌 하한을 설명합니다.
  • 이는 로컬에 저장된 총 행 수입니다. LineCount는 마지막 검색을 의미합니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var total = UO.HighJournal() + 1;
    UO.Print("Rows: " + Convert.ToString(total));
    return null;
}

3. 경계선 읽기 - 스크립트 클래스

매개변수와 실행 흐름:

  • 인덱스는 1을 빼지 않고 Journal에 직접 전달됩니다.
  • 색인은 들어오는 메시지에 따라 이동할 수 있습니다. 버퍼는 호출 사이에 고정되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var index = UO.HighJournal();
        if (Truth(index >= 0))
        {
            var text = UO.Journal(index);
            UO.Print(text);
        }

        return null;
    }

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

UO.InJournal

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

C# 시그니처

int UO.InJournal(object? arg0);
int UO.InJournal(object? arg0, object? arg1);
int UO.InJournal(object? arg0, object? arg1, object? arg2);
int UO.InJournal(object? arg0, object? arg1, object? arg2, object? arg3);
int UO.InJournal(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4);
int UO.InJournal(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5);
int UO.InJournal(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6);

로컬 로그에서 메시지를 검색하고 찾은 레코드를 해당 필드와 함께 저장합니다.

매개변수

  • pattern — |를 통해 검색된 하위 문자열 또는 여러 대안(예: 성공|실패). 각 대안의 가장자리에 있는 공백은 제거되고, 빈 대안은 건너뜁니다. 이는 정규식이 아닌 일반 텍스트입니다. 비어 있지 않은 템플릿을 사용하세요.
  • Convert.ToString — |를 통해 검색된 하위 문자열 또는 여러 대안(예: 성공|실패). 각 대안의 가장자리에 있는 공백은 제거되고, 빈 대안은 건너뜁니다. 이는 정규식이 아닌 일반 텍스트입니다. 비어 있지 않은 템플릿을 사용하세요.
  • maxLinesOrIgnoreCase — 두 개의 인수 형식만 사용됩니다. -1 — 대소문자를 구분하지 않고 사용 가능한 전체 로그입니다. 0 - 어떤 줄도 확인하지 마세요. 양수 - 이 마지막 줄 수 이하로 확인하세요. 대소문자를 구분합니다. 다른 음수 값은 0로 제한됩니다.
  • serial — 세 번째 및 후속 인수에는 확장 형식이 포함됩니다. 이 형식의 두 번째 인수는 graphic/type가 아니라 메시지 작성자의 숫자 serial입니다. -1는 필터를 비활성화합니다. 0는 serial=0을 선택합니다. 숫자를 포함하는 16진수 문자열도 숫자로 변환됩니다. 여기서는 개체 별칭 이름이 허용되지 않습니다.
  • color — 확장 형식의 세 번째 인수는 숫자입니다. UO hue; -1 또는 0xFFFF는 필터를 비활성화합니다. 0는 hue=0을 선택합니다. 이것은 RGB가 아닙니다.
  • startTime — 선택적 시작 레이블 Now(), int(밀리초). 양수 endTime가 주어지면 startTime=0 값은 실행 시작을 의미합니다. 두 표시가 모두 누락되거나 양수가 아닌 경우 시간 필터가 없습니다.
  • endTime — 선택적 끝 레이블 Now(), int(밀리초). 부재 또는 0 - 현재 시간. 양수 경계의 순서는 중요하지 않습니다. 미래 라벨은 현재 시간으로 제한됩니다.
  • newestOnly - 선택 사항 bool, 기본값 false. true 첫 번째 일치 후 검색을 중지합니다. LineCount 다음 0 또는 1. false는 일치하는 모든 줄을 계산하고 여전히 최신 줄을 선택합니다.
  • caseSensitive - 선택 사항 bool 확장 형식, 기본값 false. true는 대소문자를 구분합니다. 반면, 패턴 전용 양식은 항상 대소문자를 구분합니다.

반환값

int: 0 – 적합한 라인이 없습니다. 양수는 1로 시작하여 전체 로그의 끝부터 계산하여 가장 최근에 일치하는 항목의 위치입니다. 이는 일치하는 숫자나 패턴 대체 숫자가 아닙니다. 0 인덱스에는 LineIndex/GetFoundedTextIndex을 사용하고, 일치 개수에는 LineCount를 사용하고, 대체 숫자에는 GetFoundedTextID를 사용합니다. 후속 새 메시지로 인해 색인이 변경될 수 있지만 선택한 기록의 저장된 필드는 계속 사용할 수 있습니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • 검색에서는 새 텍스트가 필요하지 않습니다. 현재 InJournal의 빈 패턴은 모든 문자열과 일치하지만 ID에 대안을 제공하지 않습니다. 문자열을 확인하려면 HighJournal/LowJournal를 사용하세요.
  • 두 인수 형식은 serial이 아닌 한계/사례를 지정합니다. serial의 경우 색상도 필수로 통과해야 합니다. 단일 인수 SetJournalLine는 검색 영역을 제한할 수 있습니다.
  • https://forum.yoko.com.ua/viewtopic.php?p=27633 ; .

Now()는 현재 실행의 호스트를 제공합니다. 이는 로그가 사용하는 동일한 기본 시계의 정수 밀리초입니다. Environment.TickCount, Unix 시간 또는 자신의 스톱워치로 바꾸지 마십시오. 출처가 다릅니다. 일반 .cs/.csproj 프로그램에서는 전달된 CSharpScriptGlobals에서 context.Now()를 호출합니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

var result = UO.InJournal("You see");
UO.Print("InJournal: " + Convert.ToString(result));

1. 메시지 대소문자 구분 확인 - 직접 스크립트

매개변수와 실행 흐름:

  • 패턴=부분 문자열이므로 대소문자가 중요합니다. found=0는 부재를 의미합니다.
  • 찾은 항목에서 텍스트가 복사됩니다. 새 메시지 도착은 이를 대체하지 않습니다.
var found = UO.InJournal("You see");
if (Truth(found > 0))
{
    var text = UO.GetFoundedText();
    UO.Print(text);
}

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

2. 다중 선택은 대소문자를 구분하지 않습니다. - 스크립트 기능

매개변수와 실행 흐름:

  • 두 번째 인수 -1는 줄 제한을 제거하고 대소문자 구분을 비활성화합니다.
  • results=0 성공, 1 실패; 이것은 화자의 ID가 아닌 대안의 숫자입니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var found = UO.InJournal("success|failed", -1);
    if (Truth(found > 0))
    {
        var outcome = UO.GetFoundedTextID();
        UO.Print("Alternative: " + Convert.ToString(outcome));
    }

    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. 마지막 20줄만 확인 - 스크립트 클래스

매개변수와 실행 흐름:

  • 20 - 확인할 최대 줄 수, 대소문자가 중요합니다. 일치 - 검사된 영역에서 일치하는 줄의 수입니다.
  • 발견된 위치에는 일치하지 않는 1 플러스 위치가 포함되어 있습니다. 진단 텍스트를 작성하면 로그에 추가될 수도 있습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var found = UO.InJournal("bank", 20);
        var matches = UO.LineCount();
        UO.Print("Matches: " + Convert.ToString(matches));
        return null;
    }
}

4. 모든 고급 옵션 - 직접 스크립트

매개변수와 실행 흐름:

  • serial=0x00001234 — 작성자의 예, color=0x0044 — hue. 실제 값으로 바꿉니다. start/endTime — 밀리초 표시.
  • true 첫 번째 줄에서 검색을 중지합니다. false는 대소문자를 구분하지 않습니다. 350ms를 따로 기다리며, InJournal는 스스로 기다리지 않습니다.
var started = Now();
UO.Wait(350);
var found = UO.InJournal("hello", 0x00001234, 0x0044, started, Now(), true, false);
if (Truth(found > 0))
{
    UO.Print(UO.GetFoundedText());
}

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

5. 시간별로만 필터링 - 스크립트 기능

매개변수와 실행 흐름:

  • serial=-1 및 color=-1 두 필터를 모두 비활성화합니다. 두 개의 마커가 시간을 제한합니다.
  • newestOnly 및 caseSensitive 생략: false 및 false. 일치하는 항목이 없으면 0가 반환됩니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var started = Now();
    UO.Wait(100);
    var found = UO.InJournal("notice", -1, -1, started, Now());
    if (Truth(found == 0))
    {
        UO.Print("No matching message");
    }

    return null;
}

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

UO.InJournalBetweenTimes

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

C# 시그니처

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

두 실행 타임스탬프 사이의 문자열을 검색하고 일치하는 최신 항목을 저장합니다.

매개변수

  • pattern — |를 통해 검색된 하위 문자열 또는 여러 대안(예: 성공|실패). 각 대안의 가장자리에 있는 공백은 제거되고, 빈 대안은 건너뜁니다. 이는 정규식이 아닌 일반 텍스트입니다. 비어 있지 않은 템플릿을 사용하세요.
  • text — |를 통해 검색된 하위 문자열 또는 여러 대안(예: 성공|실패). 각 대안의 가장자리에 있는 공백은 제거되고, 빈 대안은 건너뜁니다. 이는 정규식이 아닌 일반 텍스트입니다. 비어 있지 않은 템플릿을 사용하세요.
  • startTime — 필수 라벨 Now(): 런타임 시작부터 int 밀리초입니다. 0 - 실행 시작. 이는 기록의 연대나 분수 날짜 LineTime가 아닙니다.
  • endTime — 선택 사항 Now() 종료 라벨. 생략되거나 양수가 아닌 경우 현재 시간이 사용됩니다. 양의 경계는 역순으로 전달될 수 있습니다. 미래 경계는 현재 시간으로 제한됩니다.
  • limit - 선택적인 네 번째 인수: -1 - 제한이 없으며 대소문자를 구분하지 않습니다. 양수 — 간격의 최대 줄, 대소문자를 구분합니다. 0 및 -1를 제외한 음수 값 - 문자열을 확인하지 않습니다.
  • maxLinesOrIgnoreCase — 호환 등록에서 제한할 네 번째 인수의 또 다른 이름: -1는 제한과 대소문자 구분을 비활성화합니다. 그렇지 않으면 음수가 아닌 행 제한을 사용합니다.

반환값

int: 0 – 적합한 라인이 없습니다. 양수는 1로 시작하여 전체 로그의 끝부터 계산하여 가장 최근에 일치하는 항목의 위치입니다. 이는 일치하는 숫자나 패턴 대체 숫자가 아닙니다. 0 인덱스에는 LineIndex/GetFoundedTextIndex을 사용하고, 일치 개수에는 LineCount를 사용하고, 대체 숫자에는 GetFoundedTextID를 사용합니다. 후속 새 메시지로 인해 색인이 변경될 수 있지만 선택한 기록의 저장된 필드는 계속 사용할 수 있습니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • 2개 또는 3개의 인수가 있는 양식은 대소문자를 구분합니다. 테두리가 포함되어 있습니다. 간격을 계산해도 스크립트는 일시 중지되지 않습니다.
  • 여기에서는 전체 레이블을 Now()에 전달합니다. LineTime는 다른 단위를 반환합니다. 기본 디렉토리: .

Now()는 현재 실행의 호스트를 제공합니다. 이는 로그가 사용하는 동일한 기본 시계의 정수 밀리초입니다. Environment.TickCount, Unix 시간 또는 자신의 스톱워치로 바꾸지 마십시오. 출처가 다릅니다. 일반 .cs/.csproj 프로그램에서는 전달된 CSharpScriptGlobals에서 context.Now()를 호출합니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

var result = UO.InJournalBetweenTimes("You see", 0, Now());
UO.Print("InJournalBetweenTimes: " + Convert.ToString(result));

1. 작업 후 메시지 확인 - 직접 스크립트

매개변수와 실행 흐름:

  • 시작된 내용은 UseSkill까지 저장됩니다. endTime 생략 - 현재 시간까지; Hidden은 서버 측 텍스트의 예입니다.
  • 사례가 고려됩니다. 메시지는 현재 상태를 증명하지 않습니다. UO.Hidden()는 캐릭터의 상태를 읽습니다.
var started = Now();
UO.UseSkill("Hiding");
UO.Wait(500);
if (Truth(UO.InJournalBetweenTimes("hidden", started) > 0))
{
    UO.Print(UO.GetFoundedText());
}

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

2. 시작부터 고정 간격 - 스크립트 기능

매개변수와 실행 흐름:

  • startTime=0 — 실행 시작; 종료 — 밀리초 단위로 저장된 종료 레이블입니다.
  • 종료된 이후의 새 메시지는 포함되지 않습니다. 런타임 이전의 오래된 레코드도 간격을 벗어났습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var ended = Now();
    var found = UO.InJournalBetweenTimes("notice", 0, ended);
    UO.Print("Search result: " + Convert.ToString(found));
    return null;
}

3. 간격 및 대소문자를 구분하지 않는 대안 - 스크립트 클래스

매개변수와 실행 흐름:

  • 마지막 -1은 줄 제한을 제거하고 대소문자를 비활성화합니다. 세 번째 인수는 지연이 아닌 종료 레이블입니다.
  • 결과 ID: 성공의 경우 0, 실패의 경우 1. 발견 확인 > 0가 필요합니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var started = Now();
        UO.Wait(350);
        var found = UO.InJournalBetweenTimes("success|failed", started, Now(), -1);
        if (Truth(found > 0))
        {
            UO.Print(Convert.ToString(UO.GetFoundedTextID()));
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
    private int Now() => global::ClassicUO.CSharp.CSharpScriptContext.Current.Now();
}

UO.Journal

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

C# 시그니처

string UO.Journal(object? arg0);

현재 인덱스에 있는 줄의 텍스트를 읽고 GetFoundedText/Line*에 대한 해당 항목을 선택합니다.

매개변수

  • index - 필수 int - 현재 색인: 0는 최신 줄을 의미하고, 1 - 이전 줄을 의미합니다. 메시지가 도착하면 인덱스가 이동됩니다. 이는 serial도 아니고 패턴의 ID 변형도 아니며 InJournal의 긍정적인 결과도 아닙니다.
  • StringIndex - 필수 int - 현재 색인: 0는 최신 줄을 의미하고, 1 - 이전 줄을 의미합니다. 메시지가 도착하면 인덱스가 이동됩니다. 이는 serial도 아니고 패턴의 ID 변형도 아니며 InJournal의 긍정적인 결과도 아닙니다.

반환값

string — 문자열의 텍스트이거나 색인이 올바르지 않거나 저널이 비어 있는 경우 빈 문자열입니다. 기존 행에는 빈 텍스트가 있을 수도 있습니다. 읽은 후 LineIndex >= 0는 항목이 선택되었음을 확인합니다. 줄 수는 아닙니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • 직접 읽기는 ID 대안을 재설정합니다. GetFoundedTextID/FoundedParamId 뒤에는 0가 옵니다. Journal 자체는 LineCount를 다시 계산하지 않습니다.
  • https://forum.yoko.com.ua/viewtopic.php?p=27633 ; .

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 마지막 줄과 그 작성자는 직접 스크립트입니다.

매개변수와 실행 흐름:

  • 0는 최신 라인입니다. 먼저 텍스트와 저자를 읽은 다음 결과를 표시합니다.
  • Print는 메시지를 추가할 수 있습니다. 저장된 텍스트/작성자는 이전에 선택한 항목을 참조합니다.
var text = UO.Journal(0);
var author = UO.LineName();
UO.Print(author + ": " + text);

2. 이전 줄이 존재하는 경우 스크립트 함수입니다.

매개변수와 실행 흐름:

  • 1는 이전 항목이고, HighJournal는 사용 가능한 최대 인덱스입니다.
  • 통화 간에 로그가 변경될 수 있습니다. 이미 발견된 행의 데이터에 대해서는 GetFoundedText를 사용하세요.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.HighJournal() >= 1))
    {
        var text = UO.Journal(1);
        UO.Print(text);
    }

    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. 문자열이 없는 것과 빈 텍스트 구별 - 스크립트 클래스

매개변수와 실행 흐름:

  • LineIndex=-1는 선택한 항목이 누락/삭제되었음을 의미합니다. Len(text)=0 자체는 이것을 의미하지 않습니다.
  • 진단 출력이 로그에 추가될 때까지 테스트 결과를 저장합니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var text = UO.Journal(0);
        var index = UO.LineIndex();
        if (Truth(index < 0))
        {
            UO.Print("No record");
        }
        else
        {
            UO.Print("Text length: " + Convert.ToString(Len(text)));
        }

        return null;
    }

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

UO.JournalColor

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

C# 시그니처

string UO.JournalColor(object? arg0);

선택한 항목을 변경하지 않고 현재 인덱스에 있는 행의 hue 필드를 읽습니다.

매개변수

  • index - 필수 int - 현재 색인: 0는 최신 줄을 의미하고, 1 - 이전 줄을 의미합니다. 메시지가 도착하면 인덱스가 이동됩니다. 이는 serial도 아니고 패턴의 ID 변형도 아니며 InJournal의 긍정적인 결과도 아닙니다.

반환값

string - UO hue 0x0044; 색인 0x0000가 잘못된 경우. 이것은 RGB이 아닙니다.

동작

  • 각 호출은 현재 위치를 읽습니다. 동일한 레코드의 일치하는 텍스트 및 필드의 경우 먼저 Journal(색인)을 입력한 다음 GetFoundedText/Line*을 입력하세요. Null 값은 실제 데이터일 수 있습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 새 레코드 필드 - 직접 스크립트

매개변수와 실행 흐름:

  • 0는 새 줄의 인덱스입니다. 버퍼의 존재가 확인됩니다.
  • string - UO hue 0x0044; 색인 0x0000가 잘못된 경우. 이것은 RGB이 아닙니다.
if (Truth(UO.HighJournal() >= 0))
{
    var value = UO.JournalColor(0);
    UO.Print(Convert.ToString(value));
}

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=1이 아닌 이전 줄입니다.
  • 검색에서 선택한 항목 GetFoundedText/Line*은 변경되지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.HighJournal() >= 1))
    {
        var value = UO.JournalColor(1);
        UO.Print(Convert.ToString(value));
    }

    return null;
}

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

3. 다음 작업 전에 값 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 값은 호출 시 필드를 복사합니다. 기다리는 동안 변수가 업데이트되지 않습니다.
  • 현재 줄 0을 다시 읽으려면 명령을 다시 호출하세요. 이것은 이미 다른 항목일 수 있습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var value = UO.JournalColor(0);
        UO.Wait(100);
        UO.Print("Saved value: " + Convert.ToString(value));
        return null;
    }
}

UO.JournalSerial

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

C# 시그니처

string UO.JournalSerial(object? arg0);

선택한 항목을 변경하지 않고 현재 인덱스에 있는 행의 serial 필드를 읽습니다.

매개변수

  • index - 필수 int - 현재 색인: 0는 최신 줄을 의미하고, 1 - 이전 줄을 의미합니다. 메시지가 도착하면 인덱스가 이동됩니다. 이는 serial도 아니고 패턴의 ID 변형도 아니며 InJournal의 긍정적인 결과도 아닙니다.

반환값

string - serial 저자의 0x00001234; 색인 0x00000000이 잘못된 경우.

동작

  • 각 호출은 현재 위치를 읽습니다. 동일한 레코드의 일치하는 텍스트 및 필드의 경우 먼저 Journal(색인)을 입력한 다음 GetFoundedText/Line*을 입력하세요. Null 값은 실제 데이터일 수 있습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 새 레코드 필드 - 직접 스크립트

매개변수와 실행 흐름:

  • 0는 새 줄의 인덱스입니다. 버퍼의 존재가 확인됩니다.
  • string - serial 저자의 0x00001234; 색인 0x00000000이 잘못된 경우.
if (Truth(UO.HighJournal() >= 0))
{
    var value = UO.JournalSerial(0);
    UO.Print(Convert.ToString(value));
}

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=1이 아닌 이전 줄입니다.
  • 검색에서 선택한 항목 GetFoundedText/Line*은 변경되지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.HighJournal() >= 1))
    {
        var value = UO.JournalSerial(1);
        UO.Print(Convert.ToString(value));
    }

    return null;
}

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

3. 다음 작업 전에 값 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 값은 호출 시 필드를 복사합니다. 기다리는 동안 변수가 업데이트되지 않습니다.
  • 현재 줄 0을 다시 읽으려면 명령을 다시 호출하세요. 이것은 이미 다른 항목일 수 있습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var value = UO.JournalSerial(0);
        UO.Wait(100);
        UO.Print("Saved value: " + Convert.ToString(value));
        return null;
    }
}

UO.JournalTimer

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

C# 시그니처

int UO.JournalTimer(object? arg0);

선택한 항목을 변경하지 않고 현재 인덱스에 있는 행의 타임스탬프 필드를 읽습니다.

매개변수

  • index - 필수 int - 현재 색인: 0는 최신 줄을 의미하고, 1 - 이전 줄을 의미합니다. 메시지가 도착하면 인덱스가 이동됩니다. 이는 serial도 아니고 패턴의 ID 변형도 아니며 InJournal의 긍정적인 결과도 아닙니다.

반환값

int — 런타임 시작부터 밀리초 단위로 레이블을 기록하며 Now()와 호환됩니다. 0 런타임 전 녹화용; -1: 잘못된 인덱스/시간. 이것은 기록의 나이도 아니고 10분의 1초 UO.Timer()도 아닙니다.

동작

  • 각 호출은 현재 위치를 읽습니다. 동일한 레코드의 일치하는 텍스트 및 필드의 경우 먼저 Journal(색인)을 입력한 다음 GetFoundedText/Line*을 입력하세요. Null 값은 실제 데이터일 수 있습니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 새 레코드 필드 - 직접 스크립트

매개변수와 실행 흐름:

  • 0는 새 줄의 인덱스입니다. 버퍼의 존재가 확인됩니다.
  • int — 런타임 시작부터 밀리초 단위로 레이블을 기록하며 Now()와 호환됩니다. 0 런타임 전 녹화용; -1: 잘못된 인덱스/시간. 이것은 기록의 나이도 아니고 10분의 1초 UO.Timer()도 아닙니다.
if (Truth(UO.HighJournal() >= 0))
{
    var value = UO.JournalTimer(0);
    UO.Print(Convert.ToString(value));
}

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=1이 아닌 이전 줄입니다.
  • 검색에서 선택한 항목 GetFoundedText/Line*은 변경되지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.HighJournal() >= 1))
    {
        var value = UO.JournalTimer(1);
        UO.Print(Convert.ToString(value));
    }

    return null;
}

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

3. 다음 작업 전에 값 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 값은 호출 시 필드를 복사합니다. 기다리는 동안 변수가 업데이트되지 않습니다.
  • 현재 줄 0을 다시 읽으려면 명령을 다시 호출하세요. 이것은 이미 다른 항목일 수 있습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var value = UO.JournalTimer(0);
        UO.Wait(100);
        UO.Print("Saved value: " + Convert.ToString(value));
        return null;
    }
}

UO.LastJournalMessage

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

C# 시그니처

dynamic UO.LastJournalMessage();

최신 로컬 로그 항목의 텍스트를 읽습니다.

매개변수

매개변수가 없습니다.

반환값

string — 새 항목의 텍스트입니다. 로그가 없거나 항목 자체에 빈 텍스트가 포함된 경우 빈 문자열입니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • Journal(0)과 동일한 방식으로 Line* 선택 및 필드를 업데이트합니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 텍스트 읽기 및 저장 - 직접 스크립트

매개변수와 실행 흐름:

  • 논쟁이 없습니다. text는 현재 마지막 줄을 복사합니다.
  • 읽은 후 인쇄된 내용 자체가 마지막 메시지가 될 수 있습니다.
var text = UO.LastJournalMessage();
UO.Print(text);

2. 하위 문자열 확인 - 스크립트 기능

매개변수와 실행 흐름:

  • FindText는 1 또는 0의 위치를 ​​반환합니다. 마지막 줄만 확인됩니다.
  • 전체 로그를 검색하려면 InJournal를 사용하세요.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var text = UO.LastJournalMessage();
    if (Truth(FindText(text, "bank") > 0))
    {
        UO.Print("Text contains bank");
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
int FindText(object? text, object? value) => (Convert.ToString(text) ?? "").IndexOf(Convert.ToString(value) ?? "", StringComparison.Ordinal) + 1;
int FindText(int start, object? text, object? value)
{
    string input = Convert.ToString(text) ?? "";
    return input.IndexOf(Convert.ToString(value) ?? "", Math.Clamp(start - 1, 0, input.Length), StringComparison.Ordinal) + 1;
}

3. 검색결과와 비교 - 스크립트 클래스

매개변수와 실행 흐름:

  • 일치하는 항목은 최신 항목을 읽을 때까지 저장되므로 새 선택 항목으로 변경되지 않습니다.
  • 마지막 메시지는 발견된 메시지와 다를 수 있습니다. 발견 > 0는 검색 성공을 의미합니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var found = UO.InJournal("needle");
        var matched = UO.GetFoundedText();
        var latest = UO.LastJournalMessage();
        UO.Print("Found: " + matched);
        UO.Print("Latest: " + latest);
        return null;
    }
}

UO.LastMessage

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

C# 시그니처

string UO.LastMessage();

최신 로컬 로그 항목의 텍스트를 읽습니다.

매개변수

매개변수가 없습니다.

반환값

string — 새 항목의 텍스트입니다. 로그가 없거나 항목 자체에 빈 텍스트가 포함된 경우 빈 문자열입니다.

동작

  • 이 getter는 새 항목을 읽지만 이전 선택 항목인 GetFoundedText/Line*을 유지합니다. 마지막 항목을 선택하려면 LastJournalMessage 또는 Journal(0)를 사용하세요.
  • 기본 디렉터리: https://forum.yoko.com.ua/viewtopic.php?p=27633.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 텍스트 읽기 및 저장 - 직접 스크립트

매개변수와 실행 흐름:

  • 논쟁이 없습니다. text는 현재 마지막 줄을 복사합니다.
  • 읽은 후 인쇄된 내용 자체가 마지막 메시지가 될 수 있습니다.
var text = UO.LastMessage();
UO.Print(text);

2. 하위 문자열 확인 - 스크립트 기능

매개변수와 실행 흐름:

  • FindText는 1 또는 0의 위치를 ​​반환합니다. 마지막 줄만 확인됩니다.
  • 전체 로그를 검색하려면 InJournal를 사용하세요.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var text = UO.LastMessage();
    if (Truth(FindText(text, "bank") > 0))
    {
        UO.Print("Text contains bank");
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
int FindText(object? text, object? value) => (Convert.ToString(text) ?? "").IndexOf(Convert.ToString(value) ?? "", StringComparison.Ordinal) + 1;
int FindText(int start, object? text, object? value)
{
    string input = Convert.ToString(text) ?? "";
    return input.IndexOf(Convert.ToString(value) ?? "", Math.Clamp(start - 1, 0, input.Length), StringComparison.Ordinal) + 1;
}

3. 검색결과와 비교 - 스크립트 클래스

매개변수와 실행 흐름:

  • 일치하는 항목은 최신 항목을 읽을 때까지 저장되므로 새 선택 항목으로 변경되지 않습니다.
  • 마지막 메시지는 발견된 메시지와 다를 수 있습니다. 발견 > 0는 검색 성공을 의미합니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var found = UO.InJournal("needle");
        var matched = UO.GetFoundedText();
        var latest = UO.LastMessage();
        UO.Print("Found: " + matched);
        UO.Print("Latest: " + latest);
        return null;
    }
}

UO.LineCount

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

C# 시그니처

dynamic UO.LineCount();

마지막 검색에서 일치하는 행 수를 읽습니다.

매개변수

매개변수가 없습니다.

반환값

int은 마지막으로 확인한 영역에서 일치하는 레코드 수입니다. 0 일치하는 항목이 없는 경우; newestOnly=true의 경우 1 이하입니다. 이는 전체 로그의 줄 수, 한 메시지의 하위 문자열 발생 횟수, 발견된 텍스트의 위치가 아닙니다.

동작

  • 검색에는 제한, 시간, serial, hue 및 단일 인수 SetJournalLine가 고려됩니다. 직접 Journal/GetJournal는 카운터를 다시 계산하지 않습니다. 청소하면 재설정됩니다. 카운터는 현재 스크립트의 브리지에 속합니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 모든 일치 항목은 직접 스크립트입니다.

매개변수와 실행 흐름:

  • 무제한으로 검색하고 등록하세요. 라인 내의 광석 수가 아니라 라인을 계산합니다.
  • 결과 — 위치 더하기 1; 일치 - 별도의 수량입니다.
var result = UO.InJournal("ore", -1);
var matches = UO.LineCount();
UO.Print(Convert.ToString(matches));

2. 마지막 10줄 간의 일치 항목은 스크립트의 기능입니다.

매개변수와 실행 흐름:

  • 10 — 확인할 최대 줄; 경우가 고려됩니다.
  • 이전 일치 항목이 더 많더라도 개수의 범위는 0부터 10까지입니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var result = UO.InJournal("ore", 10);
    UO.Print(Convert.ToString(UO.LineCount()));
    return null;
}

3. 조기 완료 검색 - 스크립트 수업

매개변수와 실행 흐름:

  • serial/color=-1, time=0/0 — 필터가 비활성화됩니다. true 첫 번째 일치하는 줄에서 검색을 중지합니다.
  • checkedMatches는 0 또는 1와 동일하며 전체 로그의 총 일치 수를 나타내지는 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var result = UO.InJournal("ore", -1, -1, 0, 0, true, false);
        var checkedMatches = UO.LineCount();
        UO.Print(Convert.ToString(checkedMatches));
        return null;
    }
}

UO.LineID

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

C# 시그니처

dynamic UO.LineID();

선택한 저널 항목의 저자의 숫자 serial를 반환합니다.

매개변수

매개변수가 없습니다.

반환값

int - 작성자의 32비트 serial. 선택의 여지가 없습니다 - 0. 최상위 비트는 부호 있는 int로 인해 음수가 될 수 있습니다. GetFoundedTextSerial는 전체 16진수 표현을 유지합니다. 이것은 graphic/type가 아닙니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • Getter는 검색을 실행하지 않고 최신 행을 선택합니다. Null/빈 값은 유효한 데이터일 수 있습니다. 검색 결과를 고려하십시오.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 검색 후 필드 읽기 - 직접 스크립트

매개변수와 실행 흐름:

  • 통지 — 검색된 텍스트의 예입니다. Getter는 검색이 성공한 후에만 매개변수 없이 호출됩니다.
  • int - 작성자의 32비트 serial. 선택의 여지가 없습니다 - 0. 최상위 비트는 부호 있는 int로 인해 음수가 될 수 있습니다. GetFoundedTextSerial는 전체 16진수 표현을 유지합니다. 이것은 graphic/type가 아닙니다.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.LineID();
    UO.Print("Speaker serial: " + Convert.ToString(value));
}

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

2. 특정 라인의 필드 읽기 - 스크립트 기능

매개변수와 실행 흐름:

  • Journal(0)는 새 항목을 선택합니다. 인덱스와 값은 Print까지 읽혀집니다.
  • 색인 검사를 통해 레코드가 없는지와 유효한 null 또는 빈 필드를 구별할 수 있습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.LineID();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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. 다음 조회 전에 필드 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 첫 번째 검색에서는 성공을 선택하고, 두 번째 검색에서는 선택 항목을 바꾸거나 재설정합니다. 저장된 항목에는 이미 필수 필드의 사본이 포함되어 있습니다.
  • 저장된 var는 새로 검색하거나 메시지를 지우거나 수신해도 변경되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.LineID();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        return null;
    }

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

UO.LineIndex

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

C# 시그니처

dynamic UO.LineIndex();

선택한 항목이 로그에 아직 저장되어 있는 경우 해당 항목의 현재 색인을 반환합니다.

매개변수

매개변수가 없습니다.

반환값

int은 0(최신 행)의 현재 인덱스입니다. -1는 선택의 여지가 없거나 선택한 항목이 이미 삭제/선점되었음을 의미합니다. 이는 InJournal의 결과가 아닙니다. 1는 색인에서 뺄 필요가 없습니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • 인덱스는 레코드의 ID를 기반으로 다시 계산됩니다. 새로운 메시지가 증가합니다. 이전에 저장된 인덱스가 일정하지 않습니다 ID; 텍스트의 경우 GetFoundedText가 더 안전합니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 발견된 기록의 색인 - 직접 스크립트

매개변수와 실행 흐름:

  • 인수가 없는 Getter는 현재 스크립트의 선택 항목을 읽습니다. 0 — 새 줄, -1 — 현재 버퍼에 줄이 없습니다.
  • 새 메시지로 대체되지 않도록 저장된 항목에서 텍스트를 가져옵니다.
if (Truth(UO.InJournal("notice") > 0))
{
    var index = UO.LineIndex();
    var text = UO.GetFoundedText();
    UO.Print(Convert.ToString(index) + ": " + text);
}

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

2. 앞으로 읽기 확인 - 스크립트 기능

매개변수와 실행 흐름:

  • Journal(0)은 마지막 항목을 선택합니다. 검사에서 빈 로그는 제외됩니다.
  • 유효한 항목에는 빈 텍스트가 허용됩니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var text = UO.Journal(0);
    if (Truth(UO.LineIndex() >= 0))
    {
        UO.Print(text);
    }

    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. 대기 후 인덱스 업데이트 - 스크립트 클래스

매개변수와 실행 흐름:

  • 100 ms 동안 기다리면 새 메시지가 도착할 수 있습니다. 같은 항목을 다시 찾은 후.
  • 제거되면 이후가 증가하거나 -1가 될 수 있습니다. GetFoundedText에는 여전히 저장된 텍스트가 포함되어 있습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.InJournal("needle") > 0))
        {
            var before = UO.LineIndex();
            UO.Wait(100);
            var after = UO.LineIndex();
            UO.Print(Convert.ToString(before) + " -> " + Convert.ToString(after));
        }

        return null;
    }

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

UO.LineMsgType

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

C# 시그니처

dynamic UO.LineMsgType();

선택한 로그 항목의 네트워크 메시지 유형을 반환합니다.

매개변수

매개변수가 없습니다.

반환값

int - 코드 MessageType: 0 일반, 1 시스템, 2 감정 표현, 3 Limit3Spell, 6 라벨, 7 집중, 8 속삭임, 9 소리 지르기, 10 주문, 13 길드, 14 동맹, 15 명령, 16 GmChat, 192 인코딩, 255 파티. 선택의 여지가 없습니다 0. 이는 클래식 코드 UO입니다. 타사 예제와 다른 숫자로 바꾸지 마십시오.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • Getter는 검색을 실행하지 않고 최신 행을 선택합니다. Null/빈 값은 유효한 데이터일 수 있습니다. 검색 결과를 고려하십시오.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 검색 후 필드 읽기 - 직접 스크립트

매개변수와 실행 흐름:

  • 통지 — 검색된 텍스트의 예입니다. Getter는 검색이 성공한 후에만 매개변수 없이 호출됩니다.
  • int - 코드 MessageType: 0 일반, 1 시스템, 2 감정 표현, 3 Limit3Spell, 6 라벨, 7 집중, 8 속삭임, 9 소리 지르기, 10 주문, 13 길드, 14 동맹, 15 명령, 16 GmChat, 192 인코딩, 255 파티. 선택의 여지가 없습니다 0. 이는 클래식 코드 UO입니다. 타사 예제와 다른 숫자로 바꾸지 마십시오.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.LineMsgType();
    UO.Print("Message type: " + Convert.ToString(value));
}

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

2. 특정 라인의 필드 읽기 - 스크립트 기능

매개변수와 실행 흐름:

  • Journal(0)는 새 항목을 선택합니다. 인덱스와 값은 Print까지 읽혀집니다.
  • 색인 검사를 통해 레코드가 없는지와 유효한 null 또는 빈 필드를 구별할 수 있습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.LineMsgType();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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. 다음 조회 전에 필드 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 첫 번째 검색에서는 성공을 선택하고, 두 번째 검색에서는 선택 항목을 바꾸거나 재설정합니다. 저장된 항목에는 이미 필수 필드의 사본이 포함되어 있습니다.
  • 저장된 var는 새로 검색하거나 메시지를 지우거나 수신해도 변경되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.LineMsgType();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        return null;
    }

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

UO.LineName

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

C# 시그니처

dynamic UO.LineName();

선택한 분개 항목의 저자 이름을 반환합니다.

매개변수

매개변수가 없습니다.

반환값

string — 선택한 항목의 작성자 이름(예: 시스템 이름 또는 캐릭터 이름) 선택 항목이 없거나 이름이 없는 빈 문자열입니다. 이름이 캐릭터의 고유성을 보장하지는 않습니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • Getter는 검색을 실행하지 않고 최신 행을 선택합니다. Null/빈 값은 유효한 데이터일 수 있습니다. 검색 결과를 고려하십시오.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 검색 후 필드 읽기 - 직접 스크립트

매개변수와 실행 흐름:

  • 통지 — 검색된 텍스트의 예입니다. Getter는 검색이 성공한 후에만 매개변수 없이 호출됩니다.
  • string — 선택한 항목의 작성자 이름(예: 시스템 이름 또는 캐릭터 이름) 선택 항목이 없거나 이름이 없는 빈 문자열입니다. 이름이 캐릭터의 고유성을 보장하지는 않습니다.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.LineName();
    UO.Print("Speaker: " + Convert.ToString(value));
}

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

2. 특정 라인의 필드 읽기 - 스크립트 기능

매개변수와 실행 흐름:

  • Journal(0)는 새 항목을 선택합니다. 인덱스와 값은 Print까지 읽혀집니다.
  • 색인 검사를 통해 레코드가 없는지와 유효한 null 또는 빈 필드를 구별할 수 있습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.LineName();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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. 다음 조회 전에 필드 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 첫 번째 검색에서는 성공을 선택하고, 두 번째 검색에서는 선택 항목을 바꾸거나 재설정합니다. 저장된 항목에는 이미 필수 필드의 사본이 포함되어 있습니다.
  • 저장된 var는 새로 검색하거나 메시지를 지우거나 수신해도 변경되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.LineName();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        return null;
    }

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

UO.LineTextColor

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

C# 시그니처

dynamic UO.LineTextColor();

선택한 로그 항목의 숫자 색상을 반환합니다.

매개변수

매개변수가 없습니다.

반환값

int - 선택한 항목의 UO hue(0…65535); 선택의 여지가 없습니다 0. 0은 색상으로 허용됩니다. 작성자의 RGB 또는 ID가 아닙니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • Getter는 검색을 실행하지 않고 최신 행을 선택합니다. Null/빈 값은 유효한 데이터일 수 있습니다. 검색 결과를 고려하십시오.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 검색 후 필드 읽기 - 직접 스크립트

매개변수와 실행 흐름:

  • 통지 — 검색된 텍스트의 예입니다. Getter는 검색이 성공한 후에만 매개변수 없이 호출됩니다.
  • int - 선택한 항목의 UO hue(0…65535); 선택의 여지가 없습니다 0. 0은 색상으로 허용됩니다. 작성자의 RGB 또는 ID가 아닙니다.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.LineTextColor();
    UO.Print("Hue: " + Convert.ToString(value));
}

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

2. 특정 라인의 필드 읽기 - 스크립트 기능

매개변수와 실행 흐름:

  • Journal(0)는 새 항목을 선택합니다. 인덱스와 값은 Print까지 읽혀집니다.
  • 색인 검사를 통해 레코드가 없는지와 유효한 null 또는 빈 필드를 구별할 수 있습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.LineTextColor();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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. 다음 조회 전에 필드 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 첫 번째 검색에서는 성공을 선택하고, 두 번째 검색에서는 선택 항목을 바꾸거나 재설정합니다. 저장된 항목에는 이미 필수 필드의 사본이 포함되어 있습니다.
  • 저장된 var는 새로 검색하거나 메시지를 지우거나 수신해도 변경되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.LineTextColor();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        return null;
    }

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

UO.LineTextFont

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

C# 시그니처

dynamic UO.LineTextFont();

선택한 로그 항목의 글꼴을 반환합니다.

매개변수

매개변수가 없습니다.

반환값

int — 선택한 레코드의 UO 글꼴 ID(클라이언트에서는 0…255); 선택의 여지가 없습니다 0. IDE 글꼴 크기가 아닌 ID 게임 글꼴입니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • Getter는 검색을 실행하지 않고 최신 행을 선택합니다. Null/빈 값은 유효한 데이터일 수 있습니다. 검색 결과를 고려하십시오.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 검색 후 필드 읽기 - 직접 스크립트

매개변수와 실행 흐름:

  • 통지 — 검색된 텍스트의 예입니다. Getter는 검색이 성공한 후에만 매개변수 없이 호출됩니다.
  • int — 선택한 레코드의 UO 글꼴 ID(클라이언트에서는 0…255); 선택의 여지가 없습니다 0. IDE 글꼴 크기가 아닌 ID 게임 글꼴입니다.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.LineTextFont();
    UO.Print("Font ID: " + Convert.ToString(value));
}

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

2. 특정 라인의 필드 읽기 - 스크립트 기능

매개변수와 실행 흐름:

  • Journal(0)는 새 항목을 선택합니다. 인덱스와 값은 Print까지 읽혀집니다.
  • 색인 검사를 통해 레코드가 없는지와 유효한 null 또는 빈 필드를 구별할 수 있습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.LineTextFont();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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. 다음 조회 전에 필드 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 첫 번째 검색에서는 성공을 선택하고, 두 번째 검색에서는 선택 항목을 바꾸거나 재설정합니다. 저장된 항목에는 이미 필수 필드의 사본이 포함되어 있습니다.
  • 저장된 var는 새로 검색하거나 메시지를 지우거나 수신해도 변경되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.LineTextFont();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        return null;
    }

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

UO.LineTime

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

C# 시그니처

dynamic UO.LineTime();

선택한 로그 항목의 달력 타임스탬프를 반환합니다.

매개변수

매개변수가 없습니다.

반환값

double — OLE 자동화 Date, 30.12.1899의 일수, 소수 부분은 시간을 지정합니다. 선택의 여지가 없습니다 0. Now() 밀리초도 아니고 전체 Unix 타임스탬프도 아닙니다. 이러한 두 표시의 차이에 밀리초 동안 86400000를 곱합니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • Getter는 검색을 실행하지 않고 최신 행을 선택합니다. Null/빈 값은 유효한 데이터일 수 있습니다. 검색 결과를 고려하십시오.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 검색 후 필드 읽기 - 직접 스크립트

매개변수와 실행 흐름:

  • 통지 — 검색된 텍스트의 예입니다. Getter는 검색이 성공한 후에만 매개변수 없이 호출됩니다.
  • double — OLE 자동화 Date, 30.12.1899의 일수, 소수 부분은 시간을 지정합니다. 선택의 여지가 없습니다 0. Now() 밀리초도 아니고 전체 Unix 타임스탬프도 아닙니다. 이러한 두 표시의 차이에 밀리초 동안 86400000를 곱합니다.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.LineTime();
    UO.Print("OLE date: " + Convert.ToString(value));
}

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

2. 특정 라인의 필드 읽기 - 스크립트 기능

매개변수와 실행 흐름:

  • Journal(0)는 새 항목을 선택합니다. 인덱스와 값은 Print까지 읽혀집니다.
  • 색인 검사를 통해 레코드가 없는지와 유효한 null 또는 빈 필드를 구별할 수 있습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.LineTime();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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. 다음 조회 전에 필드 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 첫 번째 검색에서는 성공을 선택하고, 두 번째 검색에서는 선택 항목을 바꾸거나 재설정합니다. 저장된 항목에는 이미 필수 필드의 사본이 포함되어 있습니다.
  • 저장된 var는 새로 검색하거나 메시지를 지우거나 수신해도 변경되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.LineTime();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        return null;
    }

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

UO.LineType

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

C# 시그니처

dynamic UO.LineType();

선택한 로그 항목의 텍스트 카테고리를 반환합니다.

매개변수

매개변수가 없습니다.

반환값

int - 클라이언트의 카테고리 TextType: 0 CLIENT, 1 SYSTEM, 2 OBJECT, 3 GUILD_ALLY. 선택의 여지가 없습니다 0. 이는 serial, graphic, MessageType가 아닌 디스플레이 카테고리입니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • Getter는 검색을 실행하지 않고 최신 행을 선택합니다. Null/빈 값은 유효한 데이터일 수 있습니다. 검색 결과를 고려하십시오.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 검색 후 필드 읽기 - 직접 스크립트

매개변수와 실행 흐름:

  • 통지 — 검색된 텍스트의 예입니다. Getter는 검색이 성공한 후에만 매개변수 없이 호출됩니다.
  • int - 클라이언트의 카테고리 TextType: 0 CLIENT, 1 SYSTEM, 2 OBJECT, 3 GUILD_ALLY. 선택의 여지가 없습니다 0. 이는 serial, graphic, MessageType가 아닌 디스플레이 카테고리입니다.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.LineType();
    UO.Print("Text category: " + Convert.ToString(value));
}

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

2. 특정 라인의 필드 읽기 - 스크립트 기능

매개변수와 실행 흐름:

  • Journal(0)는 새 항목을 선택합니다. 인덱스와 값은 Print까지 읽혀집니다.
  • 색인 검사를 통해 레코드가 없는지와 유효한 null 또는 빈 필드를 구별할 수 있습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.LineType();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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. 다음 조회 전에 필드 저장 - 스크립트 클래스

매개변수와 실행 흐름:

  • 첫 번째 검색에서는 성공을 선택하고, 두 번째 검색에서는 선택 항목을 바꾸거나 재설정합니다. 저장된 항목에는 이미 필수 필드의 사본이 포함되어 있습니다.
  • 저장된 var는 새로 검색하거나 메시지를 지우거나 수신해도 변경되지 않습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.LineType();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        return null;
    }

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

UO.LowJournal

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

C# 시그니처

dynamic UO.LowJournal();

사용 가능한 최소 로그 인덱스를 반환합니다.

매개변수

매개변수가 없습니다.

반환값

int: -1 매거진이 비어 있을 때; 그렇지 않으면 0는 사용 가능한 최신 레코드의 색인입니다. Journal/GetJournal 새 레코드부터 이전 레코드까지 0 인덱스를 사용합니다. 긍정적인 결과 InJournal는 다른 단일 카운트를 사용합니다.

동작

  • 새로운 메시지와 정리는 경계를 바꿉니다. 여기서 순서는 신기록부터 구기록 순으로 Journal(0) 입니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 항목 확인 - 직접 스크립트

매개변수와 실행 흐름:

  • 음수 경계는 빈 버퍼를 의미합니다.
  • 버퍼가 비어 있지 않으면 Journal(0)은 새 항목을 읽습니다.
if (Truth(UO.LowJournal() >= 0))
{
    var text = UO.Journal(0);
    UO.Print(text);
}

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

2. 경계에서 라인 읽기 - 스크립트 기능

매개변수와 실행 흐름:

  • 인덱스는 1을 빼지 않고 Journal에 직접 전달됩니다.
  • 색인은 들어오는 메시지에 따라 이동할 수 있습니다. 버퍼는 호출 사이에 고정되지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var index = UO.LowJournal();
    if (Truth(index >= 0))
    {
        var text = UO.Journal(index);
        UO.Print(text);
    }

    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. 현재 로그 범위 읽기 - 스크립트 클래스

매개변수와 실행 흐름:

  • LowJournal 및 HighJournal는 인덱스의 경계를 형성합니다. 줄 수가 아닙니다. 통화 간에 로그 내용이 변경될 수 있습니다.
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()
    {
        int first = UO.LowJournal();
        int last = UO.HighJournal();
        if (first > last)
            return null;
        for (int index = first; index <= last; index++)
            UO.Print($"{index}: {UO.Journal(index)}");
        return null;
    }
}

UO.SetJournalLine

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

C# 시그니처

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

줄의 텍스트를 변경합니다. 별도의 단일 인수 형식은 검색의 하한을 지정합니다.

매개변수

  • index — 양식(색인,텍스트)의 경우: 0의 현재 색인입니다. 여기서 0은 새 줄입니다. 형식(색인)의 경우: 내부 버퍼의 시작 부분에서 건너뛴 이전 줄 수, 색인 Journal 아님; 0는 제한을 제거합니다. 음수 단일 인수 범위는 0로 제한됩니다.
  • StringIndex — 호환되는 두 인수 로깅의 인덱스 이름: 0의 현재 인덱스 Journal.
  • text — 빈 줄을 포함하여 기존 줄의 새 텍스트입니다. 텍스트 대체 양식에 필요합니다.
  • Text — 호환 등록에서 동일한 텍스트 값입니다.

반환값

void - 반환 값이 없습니다. 인덱스가 유효하지 않은 경우 두 인수 형식은 아무 것도 변경하지 않습니다. 단일 인수 형식은 텍스트를 변경하지 않습니다.

동작

  • 교체는 로컬이며 서버로 아무 것도 전송되지 않습니다. 작성자/시간 필드는 유지됩니다. 이미 선택된 텍스트 스냅샷은 Journal 또는 검색이 반복될 때까지 동일하게 유지됩니다.
  • 단일 인수 경계는 더 이상 사용되지 않는 확장입니다. 현재 버퍼의 이전 행 수입니다. 기록이 축출/삭제되면 그 의미가 달라집니다. 작업 간의 안정적인 경계를 위해 Now()와 함께 InJournalBetweenTimes를 사용하세요.

독립 실행 C# 스크립트

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

간단한 예제

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

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

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

1. 마지막 줄 표시 - 직접 스크립트

매개변수와 실행 흐름:

  • 0 — 새 줄; 두 번째 인수는 새로운 전체 텍스트입니다.
  • 그러면 로컬 버퍼가 변경됩니다. 읽고 쓰는 사이에 새로운 메시지가 도착할 수 있습니다. 인덱스가 일정하지 않습니다 ID.
if (Truth(UO.HighJournal() >= 0))
{
    var text = UO.Journal(0);
    UO.SetJournalLine(0, "[read] " + text);
}

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

2. 텍스트를 빈 문자열로 바꾸기 - 스크립트 함수

매개변수와 실행 흐름:

  • 빈 줄은 텍스트를 대체하지만 항목이나 작성자를 제거하지는 않습니다.
  • 잘못된 인덱스는 건너뜁니다. 존재하는 것은 text=""인 경우에도 true일 수 있습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.SetJournalLine(0, "");
    var text = UO.Journal(0);
    var exists = UO.LineIndex() >= 0;
    UO.Print(Convert.ToString(exists));
    return null;
}

3. 검색 제한 제거 - 스크립트 클래스

매개변수와 실행 흐름:

  • 한 가지 인수 0는 이전 줄을 건너뛰지 말라는 의미입니다. 이것은 또 다른 형태의 명령이다.
  • 제한 없이 검색하고 대소문자를 구분하지 않습니다. 이 양식으로 대체되는 텍스트는 없습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.SetJournalLine(0);
        var found = UO.InJournal("notice", -1);
        UO.Print(Convert.ToString(found));
        return null;
    }
}

UO.WaitJournalLine

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

C# 시그니처

dynamic UO.WaitJournalLine(object? arg0, object? arg1, object? arg2);

로컬 로그에서 적절한 메시지를 기다립니다.

매개변수

  • StartTime - 필수 시작 라벨: int Now()(밀리초 단위), 0 - 실행 시작. 또한 LineTime 이후의 double OLE 날짜(현대 날짜 20000…100000일)도 허용됩니다. 전체 20000…100000는 항상 날짜가 아닌 밀리초입니다. 참가 연령을 알려주지 마세요.
  • Convert.ToString — |를 통해 검색된 하위 문자열 또는 여러 대안(예: 성공|실패). 각 대안의 가장자리에 있는 공백은 제거되고, 빈 대안은 건너뜁니다. 이는 정규식이 아닌 일반 텍스트입니다. 비어 있지 않은 템플릿을 사용하세요. 대소문자를 구분하지 않는 검색.
  • MaxWaitTimeMS — 필수 int 시간 초과(밀리초). 양수 값은 대기를 제한하고, 0는 제한 없는 대기를 의미합니다. 음수 값은 0로 제한됩니다. 스크립트를 중지하면 대기가 중단됩니다.

반환값

bool - true 텍스트가 발견되면 false 일치하지 않고 긍정적인 시간 초과가 발생한 경우입니다. 이것은 지수나 양이 아닙니다. 불리언 값은 스크립트에서 1/0로 표시할 수도 있습니다.

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

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • 호출 시 초기 경계는 고정되며 폴링은 대략 25ms마다 발생합니다. 기대 자체가 스킬이나 아이템을 발동시키지는 않습니다. LineCount 대기 후 마지막 검색을 의미합니다.
  • 시스템 문자열만 필터링하려면 WaitJournalLineSystem를 사용하세요.

독립 실행 C# 스크립트

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

간단한 예제

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

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

object? result = UO.WaitJournalLine(Now(), "success|failed", 3000);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. 저장된 라벨 이후 대기 - 직접 스크립트

매개변수와 실행 흐름:

  • 시작됨 — 기다리기 전의 한도입니다. 3000 — 최대 대기 시간(밀리초). 패턴에는 두 가지 결과가 포함됩니다.
  • false — 이 기간 내에 텍스트를 찾을 수 없습니다. 서버가 다른 표현을 사용했을 수도 있습니다.
var started = Now();
var found = UO.WaitJournalLine(started, "success|failed", 3000);
if (Truth(found))
{
    UO.Print(UO.GetFoundedText());
}
else
{
    UO.Print("Timeout");
}

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

2. 실행 시작부터 간단한 확인 - 스크립트 기능

매개변수와 실행 흐름:

  • 0 - 타임아웃을 비활성화하지 않고 런타임을 시작합니다. 100 - 시간 초과.
  • 찾은 줄은 통화 전에 이미 로그에 있을 수 있습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.WaitJournalLine(0, "notice", 100)))
    {
        var author = UO.LineName();
        UO.Print(author);
    }

    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. 선택한 행의 달력 경계 - 스크립트 클래스

매개변수와 실행 흐름:

  • 스탬프는 Convert.ToInt32/Convert.ToString 없이 double LineTime를 저장합니다. 이는 Now()가 아닌 달력 날짜입니다. 1500 — 대기 시간은 밀리초입니다.
  • 테두리가 켜져 있습니다. 선택한 문자열 자체에 응답이 포함되어 있으면 적합할 수 있습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var text = UO.Journal(0);
        if (Truth(UO.LineIndex() >= 0))
        {
            var stamp = UO.LineTime();
            var found = UO.WaitJournalLine(stamp, "response", 1500);
            UO.Print(Convert.ToString(found));
        }

        return null;
    }

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

UO.WaitJournalLineSystem

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

C# 시그니처

dynamic UO.WaitJournalLineSystem(object? arg0, object? arg1, object? arg2);

작성자 시스템의 이름이 포함된 적절한 메시지를 기다립니다.

매개변수

  • StartTime - 필수 시작 라벨: int Now()(밀리초 단위), 0 - 실행 시작. 또한 LineTime 이후의 double OLE 날짜(현대 날짜 20000…100000일)도 허용됩니다. 전체 20000…100000는 항상 날짜가 아닌 밀리초입니다. 참가 연령을 알려주지 마세요.
  • Convert.ToString — |를 통해 검색된 하위 문자열 또는 여러 대안(예: 성공|실패). 각 대안의 가장자리에 있는 공백은 제거되고, 빈 대안은 건너뜁니다. 이는 정규식이 아닌 일반 텍스트입니다. 비어 있지 않은 템플릿을 사용하세요. 대소문자를 구분하지 않는 검색.
  • MaxWaitTimeMS — 필수 int 시간 초과(밀리초). 양수 값은 대기를 제한하고, 0는 제한 없는 대기를 의미합니다. 음수 값은 0로 제한됩니다. 스크립트를 중지하면 대기가 중단됩니다.

반환값

bool - true 텍스트가 발견되면 false 일치하지 않고 긍정적인 시간 초과가 발생한 경우입니다. 이것은 지수나 양이 아닙니다. 불리언 값은 스크립트에서 1/0로 표시할 수도 있습니다.

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

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • 호출 시 초기 경계는 고정되며 폴링은 대략 25ms마다 발생합니다. 기대 자체가 스킬이나 아이템을 발동시키지는 않습니다. LineCount 대기 후 마지막 검색을 의미합니다.
  • 이 적응에서 시스템은 대소문자를 구분하지 않고 작성자 이름으로 식별됩니다. 이 명령은 일반 저널 ClassicUO에서 작동합니다.

독립 실행 C# 스크립트

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

간단한 예제

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

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

object? result = UO.WaitJournalLineSystem(Now(), "success|failed", 3000);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. 저장된 라벨 이후 대기 - 직접 스크립트

매개변수와 실행 흐름:

  • 시작됨 — 기다리기 전의 한도입니다. 3000 — 최대 대기 시간(밀리초). 패턴에는 두 가지 결과가 포함됩니다.
  • false — 이 기간 내에 텍스트를 찾을 수 없습니다. 서버가 다른 표현을 사용했을 수도 있습니다.
var started = Now();
var found = UO.WaitJournalLineSystem(started, "success|failed", 3000);
if (Truth(found))
{
    UO.Print(UO.GetFoundedText());
}
else
{
    UO.Print("Timeout");
}

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

2. 실행 시작부터 간단한 확인 - 스크립트 기능

매개변수와 실행 흐름:

  • 0 - 타임아웃을 비활성화하지 않고 런타임을 시작합니다. 100 - 시간 초과.
  • 찾은 줄은 통화 전에 이미 로그에 있을 수 있습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.WaitJournalLineSystem(0, "notice", 100)))
    {
        var author = UO.LineName();
        UO.Print(author);
    }

    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. 선택한 행의 달력 경계 - 스크립트 클래스

매개변수와 실행 흐름:

  • 스탬프는 Convert.ToInt32/Convert.ToString 없이 double LineTime를 저장합니다. 이는 Now()가 아닌 달력 날짜입니다. 1500 — 대기 시간은 밀리초입니다.
  • 테두리가 켜져 있습니다. 선택한 문자열 자체에 응답이 포함되어 있으면 적합할 수 있습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var text = UO.Journal(0);
        if (Truth(UO.LineIndex() >= 0))
        {
            var stamp = UO.LineTime();
            var found = UO.WaitJournalLineSystem(stamp, "response", 1500);
            UO.Print(Convert.ToString(found));
        }

        return null;
    }

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

UO.WaitingForJournalText

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

C# 시그니처

void UO.WaitingForJournalText(object? arg0, object? arg1, object? arg2);
void UO.WaitingForJournalText(object? arg0, object? arg1, object? arg2, object? arg3);
void UO.WaitingForJournalText(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4);
void UO.WaitingForJournalText(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5);

추가 비교 모드와 선택적 스킬/아이템 실행이 포함된 텍스트가 필요합니다.

매개변수

  • startTime — 필수 라벨 Now(), int 런타임 시작부터 밀리초. startTime 이상의 라벨이 있는 라인이 검사됩니다. 0에는 라벨이 0인 항목이 포함되어 있습니다.
  • maxDelay — 필수 최대 대기 시간(밀리초)입니다. 0 및 음수 값은 무한 대기가 아닌 즉시 1회 통과를 의미합니다.
  • text — |를 통해 검색된 하위 문자열 또는 여러 대안(예: 성공|실패). 각 대안의 가장자리에 있는 공백은 제거되고, 빈 대안은 건너뜁니다. 이는 정규식이 아닌 일반 텍스트입니다. 비어 있지 않은 템플릿을 사용하세요.
  • equals - 선택 사항 int: 0 (기본값) - 하위 문자열; 0이 아닌 값 - 모든 텍스트는 하나의 대안과 일치해야 합니다.
  • ignoreCase — 선택적 int: 0 (기본값) — 대소문자를 구분합니다. 0이 아님 - 무시합니다.
  • skillNameOrObjectId - Optional skill by name, serial/hex string or resolvable object alias. The name of the skill is recognized first, otherwise the object is used. 0/빈 줄은 작업을 비활성화합니다. The skill/item is triggered once before searching.

반환값

void - 반환 값이 없습니다. 호출을 변수에 할당하지 않습니다. 완료되면 GetFoundedTextIndex >= 0는 선택한 항목을 계속 사용할 수 있음을 의미합니다. -1 - 찾을 수 없음/기록이 삭제되었습니다. GetFoundedTextID 선택이 성공한 경우에만 일치하는 대안을 표시합니다.

동작

  • 검색 및 Journal/GetJournal/LastJournalMessage는 현재 스크립트에서 단일 항목의 텍스트와 필드를 저장합니다. 새 메시지는 이 필드를 대체하지 않습니다. 제한된 저널에서 레코드가 제거되면 유지된 필드는 유지되지만 LineIndex/GetFoundedTextIndex는 -1를 반환합니다. 다음 검색 또는 읽기에서는 다른 항목이 선택됩니다. 실패한 검색, 잘못된 색인 및 이 스크립트를 통한 삭제는 선택을 재설정합니다.
  • 최대 25 ms 동안 일시 정지하여 폴링합니다. 스크립트를 중지하면 스크립트가 중단됩니다. 빈 대안 목록에서는 텍스트를 찾을 수 없습니다. bool 결과를 얻으려면 자체 매개변수와 제로 타임아웃의 의미와 함께 WaitJournalLine를 사용하세요.

독립 실행 C# 스크립트

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

간단한 예제

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

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

UO.Print("Calling UO.WaitingForJournalText");
UO.WaitingForJournalText(Now(), 2000, "notice");

1. 하나의 하위 문자열이 필요합니다 - 직접 스크립트

매개변수와 실행 흐름:

  • startTime — 기다리기 전에 표시합니다. maxDelay=2000 ms; 대소문자를 구분하는 하위 문자열 비교.
  • 명령이 true/false을 반환하지 않습니다. 선택한 항목이 확인됩니다.
var started = Now();
UO.WaitingForJournalText(started, 2000, "notice");
if (Truth(UO.GetFoundedTextIndex() >= 0))
{
    UO.Print(UO.GetFoundedText());
}

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

2. 대소문자 없이 정확히 일치 - 스크립트 기능

매개변수와 실행 흐름:

  • startTime=0; maxDelay=0 - 1회 통과. 같음=1 — 모든 텍스트, ignoreCase=1 — 대소문자 없음.
  • 대체 번호 0 또는 1가 표시됩니다. 추가 단어가 포함된 긴 줄은 작동하지 않습니다.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.WaitingForJournalText(0, 0, "success|failed", 1, 1);
    if (Truth(UO.GetFoundedTextIndex() >= 0))
    {
        UO.Print(Convert.ToString(UO.GetFoundedTextID()));
    }

    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. 스킬을 실행하고 결과를 기대하세요 - 스크립트 클래스

매개변수와 실행 흐름:

  • Hiding의 여섯 번째 인수는 스킬을 한 번 실행합니다. 같음=0 — 하위 문자열, ignoreCase=1 — 대소문자 없음.
  • 숨김/실패라는 단어는 예시이므로 서버의 텍스트로 바꾸세요. 스킬 대신 serial 또는 lastobject를 지정하여 아이템을 사용할 수 있습니다.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var started = Now();
        UO.WaitingForJournalText(started, 3000, "hidden|failed", 0, 1, "Hiding");
        if (Truth(UO.GetFoundedTextIndex() >= 0))
        {
            UO.Print(UO.GetFoundedText());
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
    private int Now() => global::ClassicUO.CSharp.CSharpScriptContext.Current.Now();
}

Clone this wiki locally