API UO GetScriptsCount ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

UO.GetScriptsCount

ClassicUO โ€ข Runtime API

์ด ํด๋ผ์ด์–ธํŠธ์˜ ํ™œ์„ฑ ์‹คํ–‰ ์ˆ˜๋ฅผ ์…‰๋‹ˆ๋‹ค.

์ •ํ™•ํ•œ ๊ตฌ๋ฌธ

UO.GetScriptsCount() -> Integer

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

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

๋ฐ˜ํ™˜๊ฐ’

Integer >= 0: ์ผ์‹œ ์ •์ง€๋œ ์‹คํ–‰์„ ํฌํ•จํ•œ ํ™œ์„ฑ ์‹คํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค. Boolean์ด๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋™์ž‘

  • ์‹คํ–‰ ์ค‘ ๋ฐ ์ผ์‹œ ์ •์ง€๋œ ์‹คํ–‰์„ ํฌํ•จํ•˜๋ฉฐ, ๋๋‚ฌ๊ฑฐ๋‚˜ ์ทจ์†Œ๊ฐ€ ์š”์ฒญ๋œ ์‹คํ–‰์€ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ถœ ์Šคํฌ๋ฆฝํŠธ๋Š” ๋ณดํ†ต ์ž์‹ ๋„ ์…‰๋‹ˆ๋‹ค. ๋กœ๋“œ๋งŒ ํ•œ IDE ํƒญ์€ ์‹คํ–‰์ด ์•„๋‹™๋‹ˆ๋‹ค.
  • ์ธ๋ฑ์Šค๋Š” ์‹œ์ž‘ ์ˆœ์„œ์— ๋”ฐ๋ฅธ ํ˜„์žฌ ์œ„์น˜์ž…๋‹ˆ๋‹ค. ์‹œ์ž‘/์ค‘์ง€๋กœ ์œ„์น˜๊ฐ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„ ํ˜ธ์ถœ์€ ํ•˜๋‚˜์˜ ์›์ž์  ์Šค๋ƒ…์ƒท์ด ์•„๋‹ˆ๋ฏ€๋กœ ๋‚˜์ค‘์— ์ œ์–ดํ•˜๊ธฐ ์ „์— ๋ชฉ๋ก์„ ๋‹ค์‹œ ์ฝ์œผ์„ธ์š”.
  • Basic IDE๋ฅผ ๋‹ซ์•„๋„ ํ™œ์„ฑ ์‹คํ–‰์€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น๋“ค์€ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๋‚˜ Windows ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹Œ ์ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • GetScriptsList๋Š” ์ธ๋ฑ์Šค, GetScriptsCount๋Š” ๊ฐœ์ˆ˜, GetScriptState๋Š” ์„ธ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋กœ ๋ฐ”๊พธ์–ด ์“ฐ๊ฑฐ๋‚˜ ๋ชจ๋“  0์ด ์•„๋‹Œ ๊ฐ’์„ true๋กœ ํ•ด์„ํ•˜์ง€ ๋งˆ์„ธ์š”.
  • ์ธ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋ฉด์„œ ๋ชฉ๋ก์„ ์ •๋ ฌํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ํ•จ์ˆ˜: ํ˜ธ์ถœ๋ถ€ํ„ฐ ๊ฒฐ๊ณผ๊นŒ์ง€

์•„๋ž˜๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์‹ค์ œ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. Basic ์˜ˆ์ œ์—๋Š” ์™„์ „ํ•œ ๋ณด์กฐ ํ•จ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉฐ ๋‚ด๋ถ€ C# ๋ฉ”์„œ๋“œ ์ด๋ฆ„์€ ์ถ”๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ๋ช…๋ น์ด ์•„๋‹™๋‹ˆ๋‹ค.

1. ExecuteStealthCompatibility

Runtime์€ ๋“ฑ๋ก๋œ UO ํ˜ธ์ถœ์„ ์‹คํ–‰ํ•˜๊ณ  ๋ธŒ๋ฆฌ์ง€ ๊ฒฐ๊ณผ๋ฅผ Integer, String ๋˜๋Š” Array๋กœ ๊ฐ์Œ‰๋‹ˆ๋‹ค.

Integer >= 0: ์ผ์‹œ ์ •์ง€๋œ ์‹คํ–‰์„ ํฌํ•จํ•œ ํ™œ์„ฑ ์‹คํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค. Boolean์ด๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์†Œ์Šค: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; ํ•จ์ˆ˜ ExecuteStealthCompatibility.

2. GetScriptsCount

๋ธŒ๋ฆฌ์ง€๋Š” ์ด ํด๋ผ์ด์–ธํŠธ์˜ ์‹คํ–‰ ๊ด€๋ฆฌ์ž์— ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค.

์ธ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋ฉด์„œ ๋ชฉ๋ก์„ ์ •๋ ฌํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์†Œ์Šค: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; ํ•จ์ˆ˜ GetScriptsCount.

3. GetScriptsCount

_running.Count(entry => !entry.Value.Cancellation.IsCancellationRequested)

์ธ๋ฑ์Šค๋Š” ์‹œ์ž‘ ์ˆœ์„œ์— ๋”ฐ๋ฅธ ํ˜„์žฌ ์œ„์น˜์ž…๋‹ˆ๋‹ค. ์‹œ์ž‘/์ค‘์ง€๋กœ ์œ„์น˜๊ฐ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„ ํ˜ธ์ถœ์€ ํ•˜๋‚˜์˜ ์›์ž์  ์Šค๋ƒ…์ƒท์ด ์•„๋‹ˆ๋ฏ€๋กœ ๋‚˜์ค‘์— ์ œ์–ดํ•˜๊ธฐ ์ „์— ๋ชฉ๋ก์„ ๋‹ค์‹œ ์ฝ์œผ์„ธ์š”.

ํ”„๋กœ์ ํŠธ ์†Œ์Šค: src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs; ํ•จ์ˆ˜ GetScriptsCount.

Basic IDE๋ฅผ ๋‹ซ์•„๋„ ํ™œ์„ฑ ์‹คํ–‰์€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น๋“ค์€ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๋‚˜ Windows ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹Œ ์ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

์ฒซ ํ˜ธ์ถœ๊ณผ ๊ฒฐ๊ณผ

# ์ฒซ ํ˜ธ์ถœ๊ณผ ๊ฒฐ๊ณผ
#
# ์ด ํด๋ผ์ด์–ธํŠธ์˜ ํ™œ์„ฑ ์‹คํ–‰ ์ˆ˜๋ฅผ ์…‰๋‹ˆ๋‹ค.
#
# Integer >= 0: ์ผ์‹œ ์ •์ง€๋œ ์‹คํ–‰์„ ํฌํ•จํ•œ ํ™œ์„ฑ ์‹คํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค. Boolean์ด๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

SUB Main()
    # Sub Main์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ „๋‹ฌํ•œ 0์€ ์ธ๋ฑ์Šค์ด๋ฉฐ ๋นˆ ๊ด„ํ˜ธ๋Š” ์ธ์ˆ˜๊ฐ€ ์—†๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. Print ๋ฌธ์ž์—ด์€ ์˜ˆ์ œ ๋ฉ”์‹œ์ง€์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.
    # ์ธ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋ฉด์„œ ๋ชฉ๋ก์„ ์ •๋ ฌํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    # Integer >= 0: ์ผ์‹œ ์ •์ง€๋œ ์‹คํ–‰์„ ํฌํ•จํ•œ ํ™œ์„ฑ ์‹คํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค. Boolean์ด๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

    Dim count=UO.GetScriptsCount()
    UO.Print(CStr(count))
END SUB

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

  • Sub Main์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ „๋‹ฌํ•œ 0์€ ์ธ๋ฑ์Šค์ด๋ฉฐ ๋นˆ ๊ด„ํ˜ธ๋Š” ์ธ์ˆ˜๊ฐ€ ์—†๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. Print ๋ฌธ์ž์—ด์€ ์˜ˆ์ œ ๋ฉ”์‹œ์ง€์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.
  • ์ธ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋ฉด์„œ ๋ชฉ๋ก์„ ์ •๋ ฌํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Integer >= 0: ์ผ์‹œ ์ •์ง€๋œ ์‹คํ–‰์„ ํฌํ•จํ•œ ํ™œ์„ฑ ์‹คํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค. Boolean์ด๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋ฐ˜๋ณต๋ฌธ ๋˜๋Š” ์กฐ๊ฑด์—์„œ ์‚ฌ์šฉ

# ๋ฐ˜๋ณต๋ฌธ ๋˜๋Š” ์กฐ๊ฑด์—์„œ ์‚ฌ์šฉ
#
# ์ด ํด๋ผ์ด์–ธํŠธ์˜ ํ™œ์„ฑ ์‹คํ–‰ ์ˆ˜๋ฅผ ์…‰๋‹ˆ๋‹ค.
#
# Integer >= 0: ์ผ์‹œ ์ •์ง€๋œ ์‹คํ–‰์„ ํฌํ•จํ•œ ํ™œ์„ฑ ์‹คํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค. Boolean์ด๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

SUB Main()
    # ์—ฌ๋Ÿฌ ๋ช…๋ น์„ ์กฐํ•ฉํ•œ ๋…๋ฆฝ์ ์ธ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ ์ ‘๊ทผ ์ „์— ๊ธธ์ด๋ฅผ ํ™•์ธํ•˜์„ธ์š”. Wait(250)์ด ์žˆ์œผ๋ฉด 250๋ฐ€๋ฆฌ์ดˆ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
    # ์ธ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋ฉด์„œ ๋ชฉ๋ก์„ ์ •๋ ฌํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    # Integer >= 0: ์ผ์‹œ ์ •์ง€๋œ ์‹คํ–‰์„ ํฌํ•จํ•œ ํ™œ์„ฑ ์‹คํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค. Boolean์ด๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

    Dim before=UO.GetScriptsCount()
    Wait(250)
    Dim after=UO.GetScriptsCount()
    UO.Print(CStr(after-before))
END SUB

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

  • ์—ฌ๋Ÿฌ ๋ช…๋ น์„ ์กฐํ•ฉํ•œ ๋…๋ฆฝ์ ์ธ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ ์ ‘๊ทผ ์ „์— ๊ธธ์ด๋ฅผ ํ™•์ธํ•˜์„ธ์š”. Wait(250)์ด ์žˆ์œผ๋ฉด 250๋ฐ€๋ฆฌ์ดˆ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
  • ์ธ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋ฉด์„œ ๋ชฉ๋ก์„ ์ •๋ ฌํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Integer >= 0: ์ผ์‹œ ์ •์ง€๋œ ์‹คํ–‰์„ ํฌํ•จํ•œ ํ™œ์„ฑ ์‹คํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค. Boolean์ด๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์™„์ „ํ•œ ๋ณด์กฐ ํ•จ์ˆ˜

# ์™„์ „ํ•œ ๋ณด์กฐ ํ•จ์ˆ˜
#
# ์ด ํด๋ผ์ด์–ธํŠธ์˜ ํ™œ์„ฑ ์‹คํ–‰ ์ˆ˜๋ฅผ ์…‰๋‹ˆ๋‹ค.
#
# Integer >= 0: ์ผ์‹œ ์ •์ง€๋œ ์‹คํ–‰์„ ํฌํ•จํ•œ ํ™œ์„ฑ ์‹คํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค. Boolean์ด๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

SUB Main()
    # Main ์•„๋ž˜์— ํ•จ์ˆ˜ ์ „์ฒด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜์˜ ์ธ์ˆ˜์™€ ๋ฐ˜ํ™˜๊ฐ’์€ ๋‚ด๋ถ€์—์„œ ์“ฐ๋Š” API ๋ช…๋ น๊ณผ ๊ตฌ๋ถ„ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
    # HasOtherScripts๋Š” ํ˜ธ์ถœ์ž๊ฐ€ ๋ณดํ†ต ํ•œ ํ•ญ๋ชฉ์„ ์ฐจ์ง€ํ•˜๋ฏ€๋กœ 1๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. GetScriptsCount์™€ ๋‹ฌ๋ฆฌ ๋ณด์กฐ ํ•จ์ˆ˜๋งŒ true/false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    # Integer >= 0: ์ผ์‹œ ์ •์ง€๋œ ์‹คํ–‰์„ ํฌํ•จํ•œ ํ™œ์„ฑ ์‹คํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค. Boolean์ด๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

    If HasOtherScripts() Then
        UO.Print("Other executions are active")
    Else
        UO.Print("No other active executions")
    End If
END SUB

Function HasOtherScripts() As Boolean
    Dim count=UO.GetScriptsCount()
    Return count > 1
End Function

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

  • Main ์•„๋ž˜์— ํ•จ์ˆ˜ ์ „์ฒด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜์˜ ์ธ์ˆ˜์™€ ๋ฐ˜ํ™˜๊ฐ’์€ ๋‚ด๋ถ€์—์„œ ์“ฐ๋Š” API ๋ช…๋ น๊ณผ ๊ตฌ๋ถ„ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • HasOtherScripts๋Š” ํ˜ธ์ถœ์ž๊ฐ€ ๋ณดํ†ต ํ•œ ํ•ญ๋ชฉ์„ ์ฐจ์ง€ํ•˜๋ฏ€๋กœ 1๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. GetScriptsCount์™€ ๋‹ฌ๋ฆฌ ๋ณด์กฐ ํ•จ์ˆ˜๋งŒ true/false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • Integer >= 0: ์ผ์‹œ ์ •์ง€๋œ ์‹คํ–‰์„ ํฌํ•จํ•œ ํ™œ์„ฑ ์‹คํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค. Boolean์ด๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

en ยท ru ยท uk ยท fr ยท de ยท it ยท es ยท zh-tw ยท ja ยท ko

Basic