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์ด๋ ์ธ๋ฑ์ค๊ฐ ์๋๋๋ค.