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

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

UO.Str

ํ™ˆ ยท C# ยท IDE ยท UO API ยท Aโ€“Z ยท ์˜ˆ ยท ์–ธ์–ด

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

int UO.Str();

์บ๋ฆญํ„ฐ์˜ ํ˜„์žฌ ํž˜(Strength)์„ ์ฝ์Šต๋‹ˆ๋‹ค.

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

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

int โ€” ํด๋ผ์ด์–ธํŠธ ๋ชจ๋ธ์˜ ํ˜„์žฌ ํ†ต๊ณ„ ํฌ์ธํŠธ, 0..65535; ๋ฐฑ๋ถ„์œจ, ID, ์Šคํ‚ฌ, ์ž ๊ธˆ ๋ชจ๋“œ ๋˜๋Š” bool๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. 0๋Š” ๋ˆ„๋ฝ/์‚ญ์ œ๋œ ๋ฌธ์ž ๋˜๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. == true๊ฐ€ ์•„๋‹Œ ์ˆ˜์น˜ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ๋น„๊ตํ•˜์‹ญ์‹œ์˜ค. ์ด๋Š” ์Šคํ…Ÿ ํ•œ๋„๋‚˜ ์ˆ˜์ • ์—†์ด ๋ณด์žฅ๋œ ๊ธฐ๋ณธ ๊ฐ’์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋™์ž‘

  • ์ด ๋ช…๋ น์€ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์œ„์˜ ์ •ํ™•ํ•œ ์„œ๋ช…์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • Player๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค.Strength Player๊ฐ€ ์กด์žฌํ•˜๊ณ  ํŒŒ๊ดด๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ; ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 0. ์กด์žฌํ•˜๋Š” ์ฃฝ์€ ์บ๋ฆญํ„ฐ๋Š” ์ œ๊ฑฐ๋œ ๊ฐœ์ฒด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์Šคํ…Ÿ์€ HP, ๋งˆ๋‚˜, ์ฒด๋ ฅ์œผ๋กœ ๊ณ„์‚ฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • GetStr/GetInt/GetDex ObjID๋ฅผ ์ˆ˜๋ฝํ•ฉ๋‹ˆ๋‹ค. PlayerMobile ๋ฐ์ดํ„ฐ๋Š” self์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ serial - 0์˜ ๊ฒฝ์šฐ, ๋กœ๋“œ๋œ mobile์˜ ๊ฒฝ์šฐ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํŠน์„ฑ์€ ๋Œ€์ฒด๋˜๊ฑฐ๋‚˜ ์ถ”์ธก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Invoke๋Š” ์Šคํฌ๋ฆฝํŠธ๋กœ ๋Œ€๊ธฐ๋ฅผ ์ทจ์†Œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ฒŒ์ž„ ์ŠคํŠธ๋ฆผ์—์„œ ์ฝ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ƒํƒœ๋ฅผ ์ฟผ๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋Œ€์ƒ์„ ์—ด์ง€ ์•Š์œผ๋ฉฐ, ํŒจํ‚ท์„ ๋ณด๋‚ด์ง€ ์•Š์œผ๋ฉฐ, ํŠน์„ฑ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ง€์—ฐ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ ์ฝ์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋Š” ์Šค๋ƒ…์ƒท์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ์ฝ๊ธฐ๋Š” ๋‹ค๋ฅธ ์„œ๋ฒ„ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 0์ด ์•„๋‹Œ ๊ฒฐ๊ณผ๋Š” ์—ฐ๊ฒฐ์„ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 0์€ ๊ฐ’์ผ ์ˆ˜๋„ ์žˆ๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ •ํ™•ํ•œ C# ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”: UO.Str(), UO.Strength(), UO.GetStr() ๋˜๋Š” UO.GetStrength(). C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋ฅผ ์ €๋„์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋ฅผ bool๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐฐ์—ด์ด๋ฉด ์š”์†Œ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

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

1. ํฌ์ธํŠธ ์ฝ๊ธฐ ๋ฐ ํ‘œ์‹œ - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • value๋Š” ์ˆซ์ž ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.ToString ์žก์ง€์šฉ์œผ๋กœ ํฌ๋งทํ•ฉ๋‹ˆ๋‹ค. ๋…ผ์Ÿ์ด๋‚˜ ์บ๋ฆญํ„ฐ ํ–‰๋™์ด ์—†์Šต๋‹ˆ๋‹ค.
var value = UO.Str();
UO.Print("Strength: " + Convert.ToString(value));

2. ๋‘ ์ด๋ฏธ์ง€ ๋น„๊ต - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ๋ณ„๋„์˜ 1000 ms ์ „ํ›„; UO.Wait ์˜ˆ์‹œ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Change=after-before๋Š” ์–‘์ˆ˜, 0 ๋˜๋Š” ์Œ์ˆ˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ž์ฒด๋กœ๋Š” ๋ชจ๋“  ์ค‘๊ฐ„ ์—…๋ฐ์ดํŠธ์™€ ์›”๋“œ ์ข…๋ฃŒ๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.Str();
    await Delay(1000);
    var after = UO.Str();
    var change = after - before;
    UO.Print("Change: " + Convert.ToString(change));
    return null;
}

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

3. ์™„์ „ํ•œ ์š”๊ตฌ์‚ฌํ•ญ ๊ฒ€์ฆ ๊ธฐ๋Šฅ - ์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ์ตœ์†Œ=80๋Š” ํด๋ผ์ด์–ธํŠธ ์ œํ•œ์ด ์•„๋‹Œ ์š”๊ตฌ ์‚ฌํ•ญ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. AttributeAtLeast(์ตœ์†Œ)๋Š” ๋ˆ„๋ฝ๋œ ๋ฌธ์ž๋ฅผ ๊ฑฐ๋ถ€ํ•˜๊ณ  ํŠน์„ฑ์„ ํ•œ ๋ฒˆ ์ฝ๊ณ  bool๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค: true ๋˜๋Š” >= ์ตœ์†Œ์ธ ๊ฒฝ์šฐ false. ๋…ผ๋ฆฌ์  ์˜๋ฏธ๋Š” ํŠน์„ฑ ์ž์ฒด๊ฐ€ ์•„๋‹Œ ๋น„๊ต์— ์˜ํ•ด ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค.
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(Truth(AttributeAtLeast(80)) == true))
        {
            UO.Print("Requirement met");
        }
        else
        {
            UO.Print("Requirement not met or no player");
        }

        return null;
    }

    dynamic AttributeAtLeast(dynamic minimum)
    {
        if (Truth(UO.Self() == 0))
        {
            return false;
        }

        var value = UO.Str();
        return value >= minimum;
    }

    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.Str() โ€” UO.Str()

๋งค๊ฐœ๋ณ€์ˆ˜: ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "str": return new InjectionValue(bridge.Strength);
โš ๏ธ **GitHub.com Fallback** โš ๏ธ