Skip to content

ZH TW API UO SetGlobal

Bad Newbie edited this page Oct 16, 2026 · 3 revisions

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

UO.SetGlobal

C# 簽章

void UO.SetGlobal(object? name, object? value);
void UO.SetGlobal(object? globalRegion, object? varName, object? varValue);

行為與結果

SetGlobal 與 GetGlobal 在所有腳本、設定檔及 Full Client/Client 處理程序之間共用。值為字串;不存在的鍵回傳 "N/A",鍵區分大小寫;region 形式使用 region/name。Manager/Game Manager/CSharp/globals.json 持久保存,並在跨程序鎖定下重新讀取。Shared 形式使用同一儲存區。

參數

  • globalRegion — 與鍵名組合的命名空間。
  • name — 區分大小寫的共用鍵名。
  • value — 以文字儲存的值。
  • varName — 區分大小寫的共用鍵名。
  • varValue — 以文字儲存的值。

每個程式碼區塊都是完整的獨立 .csx。請替換範例 serial、type 與座標;參數順序及 C# 具名參數依照簽章。

聊天指令

#setglobal team.target 0x40001234
#set global team.message Привіт усім

完整 C# 範例

每個程式碼區塊都是完整的獨立 .csx。請替換範例 serial、type 與座標;參數順序及 C# 具名參數依照簽章。

1

UO.SetGlobal("team.target", 0x40001234);
UO.Print(UO.GetGlobal("team.target"));

2

UO.SetGlobal("team.message", "Привіт");
UO.Print(UO.GetGlobal("team.message"));

3

UO.SetGlobal("team", "delay", "350");
UO.Print(Convert.ToString(UO.GetGlobal("team", "delay")));

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        api.SetGlobal("team.target", 0x40001234);
        api.Print(api.GetGlobal("team.target"));
    }
}

內部呼叫

CSharpGameApi.SetGlobal
  -> CSharpScriptGlobals
  -> InjectionScript.Runtime.InjectionApiUO.RegisterClientApiCompatibility
  -> InjectionScript.Runtime.State.Globals.SetGlobal
Globals -> SharedGlobalStore -> named mutex -> atomic JSON replacement

InjectionScript.Runtime.State.SharedGlobalStore.Set

Clone this wiki locally