KO API UO GetGlobal - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

UO.GetGlobal

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

string UO.GetGlobal(object? name);
dynamic UO.GetGlobal(object? globalRegion, object? varName);

๋™์ž‘ ๋ฐ ๋ฐ˜ํ™˜๊ฐ’

SetGlobal๊ณผ GetGlobal์€ ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ, ํ”„๋กœํ•„๊ณผ Full Client/Client ํ”„๋กœ์„ธ์Šค์—์„œ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์€ ๋ฌธ์ž์—ด์ด๊ณ  ์—†๋Š” ํ‚ค๋Š” "N/A"์ž…๋‹ˆ๋‹ค. ํ‚ค๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๋ฉฐ region ํ˜•์‹์€ region/name ์Œ์ž…๋‹ˆ๋‹ค. Manager/Game Manager/CSharp/globals.json์„ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ์ž ๊ธˆ์œผ๋กœ ์ƒˆ๋กœ ์ฝ๊ณ  ์žฌ์‹œ์ž‘ ํ›„์—๋„ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. Shared ํ˜•์‹๋„ ๊ฐ™์€ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜

  • globalRegion โ€” ํ‚ค ์ด๋ฆ„๊ณผ ๊ฒฐํ•ฉํ•˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค.
  • name โ€” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ณต์œ  ํ‚ค ์ด๋ฆ„.
  • varName โ€” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ณต์œ  ํ‚ค ์ด๋ฆ„.

๊ฐ ์ฝ”๋“œ ๋ธ”๋ก์€ ์™„์ „ํ•œ ๋…๋ฆฝ .csx์ž…๋‹ˆ๋‹ค. ์˜ˆ์‹œ serial, type๊ณผ ์ขŒํ‘œ๋ฅผ ๋ฐ”๊พธ์„ธ์š”. ์ธ์ˆ˜ ์ˆœ์„œ์™€ C# ๋ช…๋ช…๋œ ์ธ์ˆ˜๋Š” ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

์ฑ„ํŒ… ๋ช…๋ น

#getglobal team.target
#get global team.message

์™„์ „ํ•œ C# ์˜ˆ์ œ

๊ฐ ์ฝ”๋“œ ๋ธ”๋ก์€ ์™„์ „ํ•œ ๋…๋ฆฝ .csx์ž…๋‹ˆ๋‹ค. ์˜ˆ์‹œ serial, type๊ณผ ์ขŒํ‘œ๋ฅผ ๋ฐ”๊พธ์„ธ์š”. ์ธ์ˆ˜ ์ˆœ์„œ์™€ C# ๋ช…๋ช…๋œ ์ธ์ˆ˜๋Š” ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

1

string value = UO.GetGlobal("team.target");
UO.Print(value);

2

string value = UO.GetGlobal("team.delay");
if (int.TryParse(value, out int milliseconds))
    UO.Print(milliseconds.ToString());

3

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

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        string value = api.GetGlobal("team.target");
        api.Print(value);
    }
}

๋‚ด๋ถ€ ํ˜ธ์ถœ

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

InjectionScript.Runtime.State.SharedGlobalStore.Get