ZH TW UO Topic journal - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

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

Journal

家 · C# · IDE · UO API · A–Z · 範例 · Languages

搜尋並等待訊息、線路索引、時間、顏色和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;

參考章節

1 · 2

完整指令說明


UO.AddJournalIgnore

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

C# 簽章

void UO.AddJournalIgnore(object? str);

為 ClassicUO 遊戲日誌條目新增本機文字篩選器。

參數

  • str - 要在日記條目文字中搜尋的非空白文字片段。

傳回值

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  RunScenario();
 object? RunScenario()
{
    var phrase = "vendor";
    UO.AddJournalIgnore(phrase);
    return null;
}

3。多個呼叫添加獨立的文字過濾器。 - 腳本類

參數與執行流程:

  • 多個呼叫添加獨立的文字過濾器。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.AddJournalIgnore("You see");
        UO.AddJournalIgnore("vendor");
        return null;
    }
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.AddJournalIgnore(str) — UO.AddJournalIgnore(Any)

參數: str (Any)

結果: void / Unit.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "addjournalignore": bridge.AddJournalIgnore(Text(0)); return InjectionValue.Unit;

UO.AddToJournal

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

C# 簽章

void UO.AddToJournal(object? text);

顯示有​​關腳本進度或停止條件的本機訊息。你可以看到它,而不是其他玩家。

參數

傳回值

對返回類型為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。簡短報告-直接腳本

參數與執行流程:

  • processed=12 — 已處理項目的演示數量。 Convert.ToString 將其轉換為字串。這個例子只報告了一個數字;它不傳送物件本身。
var processed = 12;
UO.AddToJournal("Processed item entries: " + Convert.ToString(processed));

2。過載警告 - 腳本函數

參數與執行流程:

  • 讀取角色的體重和最大值。零/未知的最大值不被視為過載。如果重量 >= 最大值,則列印一行並 Main 結束;物品不會被丟棄。
return  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var 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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.AddToJournal(text) — UO.AddToJournal(Any)

參數: text (Any)

結果: void / Unit.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "addtojournal":

                case "addtosystemjournal":

                case "clientprint":

                    SystemMessage(Text(0)); return InjectionValue.Unit;

UO.AddToSystemJournal

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

C# 簽章

void UO.AddToSystemJournal(object? text);

顯示有​​關腳本進度或停止條件的本機訊息。你可以看到它,而不是其他玩家。

參數

傳回值

對返回類型為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。簡短報告-直接腳本

參數與執行流程:

  • processed=12 — 已處理項目的演示數量。 Convert.ToString 將其轉換為字串。這個例子只報告了一個數字;它不傳送物件本身。
var processed = 12;
UO.AddToSystemJournal("Processed item entries: " + Convert.ToString(processed));

2。過載警告 - 腳本函數

參數與執行流程:

  • 讀取角色的體重和最大值。零/未知的最大值不被視為過載。如果重量 >= 最大值,則列印一行並 Main 結束;物品不會被丟棄。
return  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var 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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.AddToSystemJournal(text) — UO.AddToSystemJournal(Any)

參數: text (Any)

結果: void / Unit.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "addtojournal":

                case "addtosystemjournal":

                case "clientprint":

                    SystemMessage(Text(0)); return InjectionValue.Unit;

UO.AddToSystemJournalEx

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

C# 簽章

void UO.AddToSystemJournalEx(object? text, object? textColor, object? bgColor, object? fontSize, object? fontName);

將本機行輸出到遊戲視窗並記錄指定設計的近似顯示。對於可區分的腳本診斷訊息很有用。

參數

  • textColor — 0xRRGGBB 格式的文字顏色,而非 UO hue。不使用 Alpha 通道。範例 0xFF8800 - 橘色;引擎從UO調色盤中選擇最接近的顏色。
  • bgColor - 負數 - 預設背景;非負 - RGB 0xRRGGBB。請求的背景被寫入IDE的輸出,但線後面的單獨彩色矩形不會在遊戲視窗中繪製。
  • fontSize — 請求的大小(以點為單位):值 <= 0 替換為 10,然後套用範圍 4..72。遊戲字體數量以整數計算:(size + 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  RunScenario();
 object? RunScenario()
{
    UO.AddToSystemJournalEx("Formatting details", 0x33AAFF, 0x112233, 0, "");
    return null;
}

3。 UO.AddToSystemJournalEx - 3 - 場景類

參數與執行流程:

  • ReportCount是一個完全聲明的過程。它僅報告數量的變化,選擇綠色RGB表示增加,選擇紅色表示減少。傳回新數量以供下次比較;結果屬於ReportCount,而不是AddToSystemJournalEx。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var 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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.AddToSystemJournalEx(text, textColor, bgColor, fontSize, fontName) — UO.AddToSystemJournalEx(Any,Any,Any,Any,Any)

參數: text (Any), textColor (Any), bgColor (Any), fontSize (Any), fontName (Any)

結果: void / Unit.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "addtosystemjournalex":

                    bridge.PrintFormattedJournal(Text(0), Arg(1), Arg(2), Arg(3), Text(4)); return InjectionValue.Unit;

UO.ChangeJournalLength

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

C# 簽章

void UO.ChangeJournalLength(object? newLength);

變更保留的客戶端日誌歷史記錄限制。

參數

  • 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  RunScenario();
 object? RunScenario()
{
    UO.ChangeJournalLength(1);
    return null;
}

3。空輸入 - 腳本類

參數與執行流程:

  • 零被歸一化為1,而不是清除日誌。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.ChangeJournalLength(0);
        return null;
    }
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.ChangeJournalLength(newLength) — UO.ChangeJournalLength(Any)

參數: newLength (Any)

結果: void / Unit.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "changejournallength": state.JournalLength = Math.Max(1, Arg(0, 100)); bridge.SetJournalLength(state.JournalLength); break;

UO.ClearJournal

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

C# 簽章

void UO.ClearJournal();

從共用本機日誌中刪除行。

參數

沒有參數。

傳回值

void - 無回傳值。不傳回刪除的行數。重置點擊計數器和當前腳本選擇。

行為

  • 共用緩衝區可供所有腳本使用:已刪除的行不再存在。先前由其他腳本保存的快照可能會保留,但它們的索引將變為-1。
  • 如果沒有文字過濾器,整個 Classic UO 緩衝區都會被清除,包括 System.本地日誌檔案和伺服器訊息不會被刪除。

獨立的 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  RunScenario();
 object? RunScenario()
{
    UO.ClearJournal();
    var started = Now();
    var found = UO.WaitJournalLine(started, "notice", 1000);
    UO.Print(Convert.ToString(found));
    return null;
}

3。檢查重置所選條目 - 腳本類

參數與執行流程:

  • 透過目前腳本清理後index=-1,即使只刪除了部分緩衝區。
  • 文字變數儲存了先前讀取的副本,而GetFoundedText已經被清除。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var text = UO.Journal(0);
        UO.ClearJournal();
        var index = UO.LineIndex();
        UO.Print(Convert.ToString(index));
        return null;
    }
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.ClearJournal() — UO.ClearJournal()

參數: 沒有參數。

結果: void / Unit.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "clearjournal": DeleteJournal(); return InjectionValue.Unit;

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。設定後清除-腳本功能

參數與執行流程:

  • 允許再次顯示“您看到”文字。
return  RunScenario();
 object? RunScenario()
{
    UO.AddJournalIgnore("You see");
    UO.ClearJournalIgnore();
    return null;
}

3。重新清除 - 腳本類

參數與執行流程:

  • 清除空集是可以接受的,並且不會建立新設定。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.ClearJournalIgnore();
        UO.ClearJournalIgnore();
        return null;
    }
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.ClearJournalIgnore() — UO.ClearJournalIgnore()

參數: 沒有參數。

結果: void / Unit.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "clearjournalignore": bridge.ClearJournalIgnore(); return InjectionValue.Unit;

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  RunScenario();
 object? RunScenario()
{
    UO.ClearSystemJournal();
    var started = Now();
    var found = UO.WaitJournalLine(started, "notice", 1000);
    UO.Print(Convert.ToString(found));
    return null;
}

3。檢查重置所選條目 - 腳本類

參數與執行流程:

  • 透過目前腳本清理後index=-1,即使只刪除了部分緩衝區。
  • 文字變數儲存了先前讀取的副本,而GetFoundedText已經被清除。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var text = UO.Journal(0);
        UO.ClearSystemJournal();
        var index = UO.LineIndex();
        UO.Print(Convert.ToString(index));
        return null;
    }
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.ClearSystemJournal() — UO.ClearSystemJournal()

參數: 沒有參數。

結果: void / Unit.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "clearsystemjournal": bridge.DeleteSystemJournal(); SelectJournalEntry(null); return InjectionValue.Unit;

UO.DeleteJournal

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

C# 簽章

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

從共用本機日誌中刪除行。

參數

  • text — 透過 | 搜尋到的子字串或多個替代項,例如 success|failed。每個替代項邊緣的空格將被刪除,空替代項將被跳過。這是純文本,而不是正規表示式。使用非空模板。僅對DeleteJournal可選:傳輸時,以不區分大小寫的方式刪除匹配的字串;如果沒有參數,整個緩衝區將被刪除。

傳回值

void - 無回傳值。不傳回刪除的行數。重置點擊計數器和當前腳本選擇。

行為

  • 共用緩衝區可供所有腳本使用:已刪除的行不再存在。先前由其他腳本保存的快照可能會保留,但它們的索引將變為-1。
  • 如果沒有文字過濾器,整個 Classic UO 緩衝區都會被清除,包括 System.本地日誌檔案和伺服器訊息不會被刪除。

獨立的 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  RunScenario();
 object? RunScenario()
{
    UO.DeleteJournal();
    var started = Now();
    var found = UO.WaitJournalLine(started, "notice", 1000);
    UO.Print(Convert.ToString(found));
    return null;
}

3。檢查重置所選條目 - 腳本類

參數與執行流程:

  • 透過目前腳本清理後index=-1,即使只刪除了部分緩衝區。
  • 文字變數儲存了先前讀取的副本,而GetFoundedText已經被清除。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var text = UO.Journal(0);
        UO.DeleteJournal();
        var index = UO.LineIndex();
        UO.Print(Convert.ToString(index));
        return null;
    }
}

4。僅刪除匹配的文字 - 直接腳本

參數與執行流程:

  • 文字包含兩個子字串。其中任何行都會被刪除,而不考慮大小寫;其餘訊息仍然存在。
  • 如果刪除後沒有新的符合訊息,found=0。此實作中的空模式會匹配所有字串。
UO.DeleteJournal("notice|warning");
var found = UO.InJournal("notice|warning", -1);
UO.Print(Convert.ToString(found));

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.DeleteJournal() — UO.DeleteJournal()

參數: 沒有參數。

結果: void / Unit.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public void DeleteJournal()

        {

            bridge.DeleteJournal();

            SelectJournalEntry(null);

        }

UO.DeleteJournal(text) — UO.DeleteJournal(Any)

參數: text (Any)

結果: void / Unit.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public void DeleteJournal(InjectionValue text) => DeleteJournal((string)text);

UO.FoundedParamId

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

C# 簽章

dynamic UO.FoundedParamId();

傳回符合的搜尋模式替代項的編號。

參數

沒有參數。

傳回值

int 是非空替代清單中0 到 |: success|failed 的索引,給出 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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.FoundedParamId() — UO.FoundedParamId()

參數: 沒有參數。

結果: dynamic / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "foundedparamid":

                    return new InjectionValue(foundedTextId >= 0 ? foundedTextId : 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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.GetFoundedText() — UO.GetFoundedText()

參數: 沒有參數。

結果: string / String.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public string GetFoundedText() => selectedJournalEntry?.Text ?? string.Empty;

UO.GetFoundedTextColor

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

C# 簽章

string UO.GetFoundedTextColor();

傳回所選日誌條目的顏色。

參數

沒有參數。

傳回值

string - UO hue 採用 0x0044 格式(4 十六進位數字)。別無選擇 - 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 十六進位數字)。別無選擇 - 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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.GetFoundedTextColor() — UO.GetFoundedTextColor()

參數: 沒有參數。

結果: string / String.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public string GetFoundedTextColor() => selectedJournalEntry != null ? $"0x{selectedJournalEntry.Color:X4}" : "0x0000";

UO.GetFoundedTextID

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

C# 簽章

int UO.GetFoundedTextID();

傳回符合的搜尋模式替代項的編號。

參數

沒有參數。

傳回值

int 是非空替代清單中0 到 |: success|failed 的索引,給出 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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.GetFoundedTextID() — UO.GetFoundedTextID()

參數: 沒有參數。

結果: int / Integer.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public int GetFoundedTextID() => foundedTextId >= 0 ? foundedTextId : 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;對於文本,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  RunScenario();
 object? RunScenario()
{
    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 毫秒允許新訊息到達。再次找到相同的條目後。
  • 刪除後可能會增加或變為-1; GetFoundedText 仍包含已儲存的文字。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.GetFoundedTextIndex() — UO.GetFoundedTextIndex()

參數: 沒有參數。

結果: int / Integer.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public int GetFoundedTextIndex() => selectedJournalEntry != null && bridge is IApiJournalReader reader

            ? reader.FindJournalEntryIndex(selectedJournalEntry.Identity) : foundedTextIndex;

UO.GetFoundedTextSerial

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

C# 簽章

string UO.GetFoundedTextSerial();

返回所選日記條目的作者serial。

參數

沒有參數。

傳回值

作者的string - serial,格式為0x00001234(8 十六進位數字)。別無選擇 - 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 十六進位數字)。別無選擇 - 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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.GetFoundedTextSerial() — UO.GetFoundedTextSerial()

參數: 沒有參數。

結果: string / String.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public string GetFoundedTextSerial() => selectedJournalEntry != null

            ? $"0x{unchecked((uint)selectedJournalEntry.Serial):X8}" : "0x00000000";

UO.GetFoundedTextTimer

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

C# 簽章

int UO.GetFoundedTextTimer();

傳回所選日誌條目的毫秒時間戳記。

參數

沒有參數。

傳回值

int — 從運行時開始記錄時刻(以毫秒為單位),與 Now() 相容。開始前的條目給出0。沒有選擇也0;不正確的日曆標記給出 -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。它不是過去式或十分之一秒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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.GetFoundedTextTimer() — UO.GetFoundedTextTimer()

參數: 沒有參數。

結果: int / Integer.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public int GetFoundedTextTimer() => selectedJournalEntry != null ? JournalEntryTime(selectedJournalEntry.Timestamp) : 0;

UO.GetJournal

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

C# 簽章

string UO.GetJournal(object? index);

讀取目前索引處的行文本,並為 GetFoundedText/Line* 選擇該條目。

參數

  • index - 必填 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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var 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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.GetJournal(index) — UO.GetJournal(Integer)

參數: index (Integer)

結果: string / String.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public string GetJournalText(int index)

        {

            SelectJournalEntry(ReadJournalSnapshot(index));

            return selectedJournalEntry?.Text ?? string.Empty;

        }

UO.GetJournalColor

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

C# 簽章

string UO.GetJournalColor(object? index);

讀取目前索引處行的 hue 字段,而不更改所選條目。

參數

  • index - 必填 int - 目前索引:0 表示最新行,1 - 上一行。當訊息到達時索引會移動。這不是serial,也不是ID模式的變體,也不是InJournal的正結果。

傳回值

string - UO hue 為 0x0044;若索引0x0000不正確。這不是RGB。

行為

  • 每次呼叫都會讀取目前位置。為了使相同記錄的文字和欄位保持一致,首先是 Journal(index),然後是 GetFoundedText/Line*。空值可能是真實資料。

獨立的 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  RunScenario();
 object? RunScenario()
{
    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。在下一步操作之前儲存值 - 腳本類

參數與執行流程:

  • value 在呼叫時複製該欄位。等待不會更新變數。
  • 如需再次讀取目前行0,請再次呼叫該指令;這可能已經是另一個條目了。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

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

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.GetJournalColor(index) — UO.GetJournalColor(Integer)

參數: index (Integer)

結果: string / String.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public string JournalColor(int index) => bridge.JournalColor(index);

UO.GetJournalSerial

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

C# 簽章

string UO.GetJournalSerial(object? index);

讀取目前索引處行的 serial 字段,而不更改所選條目。

參數

  • index - 必填 int - 目前索引:0 表示最新行,1 - 上一行。當訊息到達時索引會移動。這不是serial,也不是ID模式的變體,也不是InJournal的正結果。

傳回值

作者的string - serial 為0x00001234;若索引0x00000000不正確。

行為

  • 每次呼叫都會讀取目前位置。為了使相同記錄的文字和欄位保持一致,首先是 Journal(index),然後是 GetFoundedText/Line*。空值可能是真實資料。

獨立的 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  RunScenario();
 object? RunScenario()
{
    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。在下一步操作之前儲存值 - 腳本類

參數與執行流程:

  • value 在呼叫時複製該欄位。等待不會更新變數。
  • 如需再次讀取目前行0,請再次呼叫該指令;這可能已經是另一個條目了。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

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

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.GetJournalSerial(index) — UO.GetJournalSerial(Integer)

參數: index (Integer)

結果: string / String.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public string JournalSerial(int index) => bridge.JournalSerial(index);

UO.HighJournal

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

C# 簽章

dynamic UO.HighJournal();

傳回最大可用日誌索引。

參數

沒有參數。

傳回值

int:-1當彈匣空時;否則儲存的記錄數減去1就是最舊的可用記錄的索引。 Journal/GetJournal從新記錄到舊記錄使用零索引;陽性結果 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  RunScenario();
 object? RunScenario()
{
    var total = UO.HighJournal() + 1;
    UO.Print("Rows: " + Convert.ToString(total));
    return null;
}

3。讀取邊框線 - 腳本類

參數與執行流程:

  • index 直接傳遞給 Journal,不減一。
  • 此索引可能會隨著傳入訊息而變化;緩衝區在呼叫之間不會凍結。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var 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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.HighJournal() — UO.HighJournal()

參數: 沒有參數。

結果: dynamic / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "highjournal": return new InjectionValue(bridge.JournalEntryCount() == 0 ? -1 : bridge.JournalEntryCount() - 1);

UO.InJournal

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

C# 簽章

int UO.InJournal(object? pattern);
int UO.InJournal(object? pattern, object? maxLinesOrIgnoreCase);
int UO.InJournal(object? pattern, object? serial, object? color);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime, object? endTime);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime, object? endTime, object? newestOnly);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime, object? endTime, object? newestOnly, object? caseSensitive);

在本機日誌中搜尋訊息並儲存找到的記錄及其欄位。

參數

  • pattern — 透過 | 搜尋到的子字串或多個替代項,例如 success|failed。每個替代項邊緣的空格將被刪除,空替代項將被跳過。這是純文本,而不是正規表示式。使用非空模板。
  • maxLinesOrIgnoreCase — 僅兩個參數的形式: -1 — 整個可用日誌,不區分大小寫; 0 - 不檢查任何線路;正數 - 檢查最後一行的數量不超過此數量,區分大小寫。其他負值僅限於0。
  • serial — 第三個及後續參數包括擴展形式。這種形式的第二個參數是訊息作者的數字serial,而不是graphic/type。 -1禁用過濾器;0選擇serial=0。包含數字的十六進位字串也會轉換為數字;這裡不允許使用物件別名。
  • 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開始。這不是匹配數或模式替代數。對於零索引,使用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() 提供目前執行的主機:這是日誌使用的相同本機時鐘的整數毫秒數。不要將其替換為環境。 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。檢查訊息區分大小寫 - 直接腳本

參數與執行流程:

  • pattern=你看到的是子字串,大小寫很重要。 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 刪除行限制並停用區分大小寫。
  • 結果=0成功,1失敗;這是替代的數字,而不是說話者的ID。
return  RunScenario();
 object? RunScenario()
{
    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 - 要檢查的最大行數,大小寫很重要。 matches - 選取區域中符合行的數量。
  • 找到包含位置加上1,不符。寫入診斷文字也可以加入到日誌中。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

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

4。所有進階選項 - 直接腳本

參數與執行流程:

  • serial=0x00001234 — 作者示例,颜色=0x0044 — hue。替換為實際值。開始/endTime — 毫秒標記。
  • true 在第一行停止搜尋; false 不區分大小寫。單獨等待350毫秒,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  RunScenario();
 object? RunScenario()
{
    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;

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.InJournal(pattern) — UO.InJournal(Any)

參數: pattern (Any/String)

結果: int / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "injournal": return new InjectionValue(InJournal(Text(0)));

UO.InJournal(pattern) — UO.InJournal(String)

參數: pattern (Any/String)

結果: int / Integer.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public int InJournal(string pattern)

            => InJournalCore(pattern, -1, ignoreCase: false);

UO.InJournal(pattern, maxLinesOrIgnoreCase) — UO.InJournal(String,Integer)

參數: pattern (String), maxLinesOrIgnoreCase (Integer)

結果: int / Integer.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public int InJournal(string pattern, int maxLinesOrIgnoreCase)

            => InJournalCore(pattern,

                maxLinesOrIgnoreCase == -1 ? -1 : Math.Max(0, maxLinesOrIgnoreCase),

                ignoreCase: maxLinesOrIgnoreCase == -1);

UO.InJournal(pattern, serial, color) — UO.InJournal(Any,Any,Any)

參數: pattern (Any), serial (Any), color (Any)

結果: int / Integer.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

內部實作程式碼,不能作為獨立腳本執行。

values => new InjectionValue(CompactInJournal(values))

UO.InJournal(pattern, serial, color, startTime) — UO.InJournal(Any,Any,Any,Any)

參數: pattern (Any), serial (Any), color (Any), startTime (Any)

結果: int / Integer.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

內部實作程式碼,不能作為獨立腳本執行。

values => new InjectionValue(CompactInJournal(values))

UO.InJournal(pattern, serial, color, startTime, endTime) — UO.InJournal(Any,Any,Any,Any,Any)

參數: pattern (Any), serial (Any), color (Any), startTime (Any), endTime (Any)

結果: int / Integer.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

內部實作程式碼,不能作為獨立腳本執行。

values => new InjectionValue(CompactInJournal(values))

UO.InJournal(pattern, serial, color, startTime, endTime, newestOnly) — UO.InJournal(Any,Any,Any,Any,Any,Any)

參數: pattern (Any), serial (Any), color (Any), startTime (Any), endTime (Any), newestOnly (Any)

結果: int / Integer.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

內部實作程式碼,不能作為獨立腳本執行。

values => new InjectionValue(CompactInJournal(values))

UO.InJournal(pattern, serial, color, startTime, endTime, newestOnly, caseSensitive) — UO.InJournal(Any,Any,Any,Any,Any,Any,Any)

參數: pattern (Any), serial (Any), color (Any), startTime (Any), endTime (Any), newestOnly (Any), caseSensitive (Any)

結果: int / Integer.

呼叫時:

呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。

內部實作程式碼,不能作為獨立腳本執行。

values => new InjectionValue(CompactInJournal(values))

UO.InJournalBetweenTimes

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

C# 簽章

int UO.InJournalBetweenTimes(object? pattern, object? startTime);
int UO.InJournalBetweenTimes(object? pattern, object? startTime, object? endTime);
int UO.InJournalBetweenTimes(object? pattern, object? startTime, object? endTime, object? limit);

搜尋兩個執行時間戳之間的字串並儲存最新的匹配條目。

參數

  • pattern — 透過 | 搜尋到的子字串或多個替代項,例如 success|failed。每個替代項邊緣的空格將被刪除,空替代項將被跳過。這是純文本,而不是正規表示式。使用非空模板。
  • startTime — 强制标签 Now():从运行时开始算起的 int 毫秒数。 0 - 開始執行。这不是记录的年龄或小数日期LineTime。
  • endTime — 可選的 Now() 結束標籤。如果省略或非正數,則使用目前時間。正邊界可以以相反的順序傳達;未來的邊界僅限於當前時間。
  • limit - 可選的第四個參數: -1 - 無限制且不區分大小寫;正數 — 區間內的最大行數,區分大小寫; 0 和除 -1 之外的負值 - 不檢查字串。

傳回值

int: 0 – 沒有合適的線路;正數是最新匹配條目的位置,從整個日誌的末尾開始計算,從1開始。這不是匹配數或模式替代數。對於零索引,使用LineIndex/GetFoundedTextIndex,對於匹配數,使用LineCount,對於替代數,使用GetFoundedTextID。後續的新訊息可能會變更索引,但所選記錄的已儲存欄位仍然可用。

行為

  • 搜尋並Journal/GetJournal/LastJournalMessage儲存目前腳本中單一條目的文字和欄位。新訊息不會取代這些欄位。如果一筆記錄被從有限日誌中逐出,則保留的欄位仍然存在,但LineIndex/GetFoundedTextIndex返回-1。下一次搜尋或讀取會選擇另一個條目;不成功的搜尋、無效的索引以及透過此腳本清除都會重設選擇。
  • 具有兩個或三個參數的表單區分大小寫。包括邊框。計算間隔不會暫停腳本。
  • 在這裡,將整個標籤傳遞給 Now()。 LineTime 返回另一個單位。主目錄: .

Now() 提供目前執行的主機:這是日誌使用的相同本機時鐘的整數毫秒數。不要將其替換為環境。 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省略-截至目前時間;隱藏是伺服器端文字的範例。
  • 考慮案例。該訊息並未證明目前狀態; 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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var 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();
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.InJournalBetweenTimes(pattern, startTime) — UO.InJournalBetweenTimes(Any,Any)

參數: pattern (Any/String), startTime (Any/Integer)

結果: int / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "injournalbetweentimes":

                    if (arguments.Length > 3)

                        return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)));

                    if (arguments.Length > 2)

                        return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2)));

                    return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1)));

UO.InJournalBetweenTimes(pattern, startTime) — UO.InJournalBetweenTimes(String,Integer)

參數: pattern (Any/String), startTime (Any/Integer)

結果: int / Integer.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public int InJournalBetweenTimes(string pattern, int startTime)

            => InJournalBetweenTimesCore(pattern, startTime, CurrentJournalTime(), -1, ignoreCase: false);

UO.InJournalBetweenTimes(pattern, startTime, endTime) — UO.InJournalBetweenTimes(Any,Any,Any)

參數: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer)

結果: int / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "injournalbetweentimes":

                    if (arguments.Length > 3)

                        return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)));

                    if (arguments.Length > 2)

                        return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2)));

                    return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1)));

UO.InJournalBetweenTimes(pattern, startTime, endTime) — UO.InJournalBetweenTimes(String,Integer,Integer)

參數: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer)

結果: int / Integer.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public int InJournalBetweenTimes(string pattern, int startTime, int endTime)

            => InJournalBetweenTimesCore(pattern, startTime, endTime, -1, ignoreCase: false);

UO.InJournalBetweenTimes(pattern, startTime, endTime, limit) — UO.InJournalBetweenTimes(Any,Any,Any,Any)

參數: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer), limit (Any/Integer)

結果: int / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "injournalbetweentimes":

                    if (arguments.Length > 3)

                        return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)));

                    if (arguments.Length > 2)

                        return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2)));

                    return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1)));

UO.InJournalBetweenTimes(pattern, startTime, endTime, limit) — UO.InJournalBetweenTimes(String,Integer,Integer,Integer)

參數: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer), limit (Any/Integer)

結果: int / Integer.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public int InJournalBetweenTimes(string pattern, int startTime, int endTime, int limit)

            => InJournalBetweenTimesCore(pattern, startTime, endTime,

                limit == -1 ? -1 : Math.Max(0, limit), ignoreCase: limit == -1);

UO.Journal

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

C# 簽章

string UO.Journal(object? index);

讀取目前索引處的行文本,並為 GetFoundedText/Line* 選擇該條目。

參數

  • index - 必填 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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var 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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.Journal(index) — UO.Journal(Any)

參數: index (Any/Integer)

結果: string / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "journal": return new InjectionValue(GetJournalText(Arg(0)));

UO.Journal(index) — UO.Journal(Integer)

參數: index (Any/Integer)

結果: string / String.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public string GetJournalText(int index)

        {

            SelectJournalEntry(ReadJournalSnapshot(index));

            return selectedJournalEntry?.Text ?? string.Empty;

        }

UO.JournalColor

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

C# 簽章

string UO.JournalColor(object? index);

讀取目前索引處行的 hue 字段,而不更改所選條目。

參數

  • index - 必填 int - 目前索引:0 表示最新行,1 - 上一行。當訊息到達時索引會移動。這不是serial,也不是ID模式的變體,也不是InJournal的正結果。

傳回值

string - UO hue 為 0x0044;若索引0x0000不正確。這不是RGB。

行為

  • 每次呼叫都會讀取目前位置。為了使相同記錄的文字和欄位保持一致,首先是 Journal(index),然後是 GetFoundedText/Line*。空值可能是真實資料。

獨立的 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  RunScenario();
 object? RunScenario()
{
    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。在下一步操作之前儲存值 - 腳本類

參數與執行流程:

  • value 在呼叫時複製該欄位。等待不會更新變數。
  • 如需再次讀取目前行0,請再次呼叫該指令;這可能已經是另一個條目了。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

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

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.JournalColor(index) — UO.JournalColor(Integer)

參數: index (Integer)

結果: string / String.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public string JournalColor(int index) => bridge.JournalColor(index);

UO.JournalSerial

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

C# 簽章

string UO.JournalSerial(object? index);

讀取目前索引處行的 serial 字段,而不更改所選條目。

參數

  • index - 必填 int - 目前索引:0 表示最新行,1 - 上一行。當訊息到達時索引會移動。這不是serial,也不是ID模式的變體,也不是InJournal的正結果。

傳回值

作者的string - serial 為0x00001234;若索引0x00000000不正確。

行為

  • 每次呼叫都會讀取目前位置。為了使相同記錄的文字和欄位保持一致,首先是 Journal(index),然後是 GetFoundedText/Line*。空值可能是真實資料。

獨立的 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  RunScenario();
 object? RunScenario()
{
    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。在下一步操作之前儲存值 - 腳本類

參數與執行流程:

  • value 在呼叫時複製該欄位。等待不會更新變數。
  • 如需再次讀取目前行0,請再次呼叫該指令;這可能已經是另一個條目了。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

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

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.JournalSerial(index) — UO.JournalSerial(Integer)

參數: index (Integer)

結果: string / String.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public string JournalSerial(int index) => bridge.JournalSerial(index);

UO.JournalTimer

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

C# 簽章

int UO.JournalTimer(object? index);

讀取目前索引處的行的時間戳字段,而不更改所選條目。

參數

  • index - 必填 int - 目前索引:0 表示最新行,1 - 上一行。當訊息到達時索引會移動。這不是serial,也不是ID模式的變體,也不是InJournal的正結果。

傳回值

int — 從運行時開始以毫秒為單位記錄標籤,與 Now() 相容。 0 用於運行前錄製; -1 無效索引/時間。這不是記錄的時代,也不是十分之一秒UO.Timer()。

行為

  • 每次呼叫都會讀取目前位置。為了使相同記錄的文字和欄位保持一致,首先是 Journal(index),然後是 GetFoundedText/Line*。空值可能是真實資料。

獨立的 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 無效索引/時間。這不是記錄的時代,也不是十分之一秒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  RunScenario();
 object? RunScenario()
{
    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。在下一步操作之前儲存值 - 腳本類

參數與執行流程:

  • value 在呼叫時複製該欄位。等待不會更新變數。
  • 如需再次讀取目前行0,請再次呼叫該指令;這可能已經是另一個條目了。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

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

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.JournalTimer(index) — UO.JournalTimer(Integer)

參數: index (Integer)

結果: int / Integer.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public int JournalTimer(int index) => JournalEntryTime(index);

UO.LastJournalMessage

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

C# 簽章

dynamic UO.LastJournalMessage();

讀取最新本機日誌條目的文字。

參數

沒有參數。

傳回值

string — 新條目的文本;如果沒有日誌或條目本身包含空文本,則為空字串。

行為

  • 搜尋並Journal/GetJournal/LastJournalMessage儲存目前腳本中單一條目的文字和欄位。新訊息不會取代這些欄位。如果一筆記錄被從有限日誌中逐出,則保留的欄位仍然存在,但LineIndex/GetFoundedTextIndex返回-1。下一次搜尋或讀取會選擇另一個條目;不成功的搜尋、無效的索引以及透過此腳本清除都會重設選擇。
  • 以與 Journal(0) ​​相同的方式更新行* 選擇和欄位。

獨立的 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  RunScenario();
 object? RunScenario()
{
    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。與搜尋結果比較 - 腳本類

參數與執行流程:

  • 匹配的內容會保存到最新的讀取為止,因此它不會隨著新的選擇而改變。
  • 最後一則訊息可能與找到的訊息不同; found > 0 表示尋找成功。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

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

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.LastJournalMessage() — UO.LastJournalMessage()

參數: 沒有參數。

結果: dynamic / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "lastjournalmessage": return new InjectionValue(GetJournalText(0));

UO.LastMessage

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

C# 簽章

string UO.LastMessage();

讀取最新本機日誌條目的文字。

參數

沒有參數。

傳回值

string — 新條目的文本;如果沒有日誌或條目本身包含空文本,則為空字串。

行為

獨立的 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  RunScenario();
 object? RunScenario()
{
    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。與搜尋結果比較 - 腳本類

參數與執行流程:

  • 匹配的內容會保存到最新的讀取為止,因此它不會隨著新的選擇而改變。
  • 最後一則訊息可能與找到的訊息不同; found > 0 表示尋找成功。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

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

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.LastMessage() — UO.LastMessage()

參數: 沒有參數。

結果: string / String.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public string LastMessage() => bridge.LastMessage();

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-要檢查的最大行數;情況被考慮。
  • 計數範圍可以從 0 到 10,即使還有更多較舊的匹配。
return  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

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

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.LineCount() — UO.LineCount()

參數: 沒有參數。

結果: dynamic / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "linecount": return new InjectionValue(bridge.JournalMatchCount());

UO.LineID

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

C# 簽章

dynamic UO.LineID();

返回所選日記條目作者的數字 serial。

參數

沒有參數。

傳回值

作者的int - 32位serial。別無選擇 - 0。由於有符號int,最高有效位可能會導致負數; GetFoundedTextSerial 保留完整的十六進位表示。這不是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 保留完整的十六進位表示。這不是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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.LineID() — UO.LineID()

參數: 沒有參數。

結果: dynamic / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "lineid": return new InjectionValue(selectedJournalEntry?.Serial ?? 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;對於文本,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  RunScenario();
 object? RunScenario()
{
    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 毫秒允許新訊息到達。再次找到相同的條目後。
  • 刪除後可能會增加或變為-1; GetFoundedText 仍包含已儲存的文字。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.LineIndex() — UO.LineIndex()

參數: 沒有參數。

結果: dynamic / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "lineindex": return new InjectionValue(GetFoundedTextIndex());

UO.LineMsgType

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

C# 簽章

dynamic UO.LineMsgType();

傳回所選日誌條目的網路訊息類型。

參數

沒有參數。

傳回值

int — 程式碼 MessageType: 0 Regular, 1 System, 2 Emote, 3 Limit3Spell, 6 Label, 7 Focus, 8 Whisper, 9 Yell, 10 Spell, 13 Guild, 14 Alliance, 15 Command, 16 GmChat, 192 Encoded, 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 Regular, 1 System, 2 Emote, 3 Limit3Spell, 6 Label, 7 Focus, 8 Whisper, 9 Yell, 10 Spell, 13 Guild, 14 Alliance, 15 Command, 16 GmChat, 192 Encoded, 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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.LineMsgType() — UO.LineMsgType()

參數: 沒有參數。

結果: dynamic / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "linemsgtype": return new InjectionValue(selectedJournalEntry?.MessageType ?? 0);

UO.LineName

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

C# 簽章

dynamic UO.LineName();

返回所選日記條目的作者姓名。

參數

沒有參數。

傳回值

string — 所選條目的作者姓名,例如 System 或角色的姓名;沒有選擇/沒有名稱的空字串。名稱並不能保證角色的唯一性。

行為

  • 搜尋並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 — 所選條目的作者姓名,例如 System 或角色的姓名;沒有選擇/沒有名稱的空字串。名稱並不能保證角色的唯一性。
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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.LineName() — UO.LineName()

參數: 沒有參數。

結果: dynamic / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "linename": return new InjectionValue(selectedJournalEntry?.Name ?? string.Empty);

UO.LineTextColor

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

C# 簽章

dynamic UO.LineTextColor();

傳回所選日誌條目的數字顏色。

參數

沒有參數。

傳回值

所選條目的int - UO hue(0…65535);沒有選擇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。零作為顏色是可以接受的。這不是作者的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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.LineTextColor() — UO.LineTextColor()

參數: 沒有參數。

結果: dynamic / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "linetextcolor":

                    return new InjectionValue(selectedJournalEntry?.Color ?? 0);

UO.LineTextFont

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

C# 簽章

dynamic UO.LineTextFont();

傳回所選日誌條目的字型。

參數

沒有參數。

傳回值

int — 所選記錄的UO字體ID(客戶端中為0…255);沒有選擇0。這是ID遊戲字體,而不是IDE字體大小。

行為

  • 搜尋並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。這是ID遊戲字體,而不是IDE字體大小。
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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.LineTextFont() — UO.LineTextFont()

參數: 沒有參數。

結果: dynamic / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "linetextfont": return new InjectionValue(selectedJournalEntry?.Font ?? 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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.LineTime() — UO.LineTime()

參數: 沒有參數。

結果: dynamic / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "linetime": return new InjectionValue(selectedJournalEntry?.Timestamp ?? 0d);

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  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.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;
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.LineType() — UO.LineType()

參數: 沒有參數。

結果: dynamic / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "linetype": return new InjectionValue(selectedJournalEntry?.TextType ?? 0);

UO.LowJournal

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

C# 簽章

dynamic UO.LowJournal();

傳回最小可用日誌索引。

參數

沒有參數。

傳回值

int:-1當彈匣空時;否則0是最新可用記錄的索引。 Journal/GetJournal從新記錄到舊記錄使用零索引;陽性結果 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。讀取邊界線 - 腳本函數

參數與執行流程:

  • index 直接傳遞給 Journal,不減一。
  • 此索引可能會隨著傳入訊息而變化;緩衝區在呼叫之間不會凍結。
return  RunScenario();
 object? RunScenario()
{
    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  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        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;
    }
}

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.LowJournal() — UO.LowJournal()

參數: 沒有參數。

結果: dynamic / Any.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "lowjournal": return new InjectionValue(bridge.JournalEntryCount() == 0 ? -1 : 0);

UO.SetJournalLine

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

C# 簽章

void UO.SetJournalLine(object? index);
void UO.SetJournalLine(object? stringIndex, object? text);

更改一行文字;一種單獨的單一參數形式指定搜尋的下限。

參數

  • index — 對於表單(索引,文字):0 中的目前索引,其中 0 是新行。對於表單(索引):從內部緩衝區開頭跳過的舊行數,而不是索引Journal; 0 取消限制。負的單一參數界限僅限於 0。
  • stringIndex — 相容的雙參數日誌記錄中的索引名稱:0 中的目前索引 Journal。
  • text — 現有行的新文本,包括空白行。需採用文字替換形式。

傳回值

void - 無回傳值。如果索引無效,則雙參數形式不會改變任何內容。單參數形式不會更改文字。

行為

  • 替換是本地的,沒有任何內容發送到伺服器。保留作者/時間欄位。已選擇的文字快照保持不變,直到Journal或重複搜尋。
  • 單參數綁定是一種已棄用的擴展:當前緩衝區中舊行的數量;當記錄被驅逐/刪除時,其含義就會發生變化。對於操作之間的可靠邊界,請使用 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="",exists 也可以是 true。
return  RunScenario();
 object? RunScenario()
{
    UO.SetJournalLine(0, "");
    var text = UO.Journal(0);
    var exists = UO.LineIndex() >= 0;
    UO.Print(Convert.ToString(exists));
    return null;
}

3。刪除搜尋限制 - 腳本類

參數與執行流程:

  • 一個參數 0 表示不要跳過舊行;這是指令的另一種形式。
  • 搜尋不受限制且不區分大小寫。此表格不取代任何文字。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

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

命令實作

C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。

UO.SetJournalLine(index) — UO.SetJournalLine(Integer)

參數: index (Integer)

結果: void / Unit.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public void SetJournalLine(int index) => bridge.SetJournalLine(index);

UO.SetJournalLine(stringIndex, text) — UO.SetJournalLine(Any,Any)

參數: stringIndex (Any/Integer), text (Any/String)

結果: void / Unit.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

case "setjournalline":

                    if (arguments.Length > 1) bridge.SetJournalLine(Arg(0), Text(1));

                    else bridge.SetJournalLine(Arg(0));

                    return InjectionValue.Unit;

UO.SetJournalLine(stringIndex, text) — UO.SetJournalLine(Integer,String)

參數: stringIndex (Any/Integer), text (Any/String)

結果: void / Unit.

呼叫時:

內部實作程式碼,不能作為獨立腳本執行。

public void SetJournalLine(int index, string text) => bridge.SetJournalLine(index, text);
⚠️ **GitHub.com Fallback** ⚠️