API UO GetScriptPath ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.GetScriptPath
ClassicUO โข Runtime API
ํ์ฑ ์คํ์ ์์ค ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ฝ์ต๋๋ค.
์ ํํ ๊ตฌ๋ฌธ
UO.GetScriptPath(ScriptIndex:Any) -> String
๋งค๊ฐ๋ณ์
ScriptIndexโ ํ์ ScriptIndex๋ ์ต์ GetScriptsList์์ ์ป๋ 0๋ถํฐ ์์ํ๋ ์ ์ ์ธ๋ฑ์ค์ ๋๋ค. ์์์ด๊ฑฐ๋ ์๋ ์ธ๋ฑ์ค๋ ๋ช ์๋ ๋น ๊ฐ/์ ์ ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. ์์ดํ serial, ํ๋ก์์ ์ด๋ฆ ๋๋ IDE ์คํ ID๋ฅผ ์ ๋ฌํ์ง ๋ง์ธ์.
๋ฐํ๊ฐ
String: ์ ์ฅ๋ ์์ค ํ์ผ ๊ฒฝ๋ก์ด๋ฉฐ, ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ""์ ๋๋ค. ํ์ผ ์์์ ๋ณดํต ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง์ง๋ง ๋ช ๋ น์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ค์๋ ์ผ๋ฐ ํ์ผ์ด ์์ ์ ์์ต๋๋ค.
๋์
- ์คํ ์ค ๋ฐ ์ผ์ ์ ์ง๋ ์คํ์ ํฌํจํ๋ฉฐ, ๋๋ฌ๊ฑฐ๋ ์ทจ์๊ฐ ์์ฒญ๋ ์คํ์ ์ ์ธํฉ๋๋ค. ํธ์ถ ์คํฌ๋ฆฝํธ๋ ๋ณดํต ์์ ๋ ์ ๋๋ค. ๋ก๋๋ง ํ IDE ํญ์ ์คํ์ด ์๋๋๋ค.
- ์ธ๋ฑ์ค๋ ์์ ์์์ ๋ฐ๋ฅธ ํ์ฌ ์์น์ ๋๋ค. ์์/์ค์ง๋ก ์์น๊ฐ ๋ฐ๋ ์ ์์ต๋๋ค. ๋ณ๋ ํธ์ถ์ ํ๋์ ์์์ ์ค๋ ์ท์ด ์๋๋ฏ๋ก ๋์ค์ ์ ์ดํ๊ธฐ ์ ์ ๋ชฉ๋ก์ ๋ค์ ์ฝ์ผ์ธ์.
- Basic IDE๋ฅผ ๋ซ์๋ ํ์ฑ ์คํ์ ์ฌ๋ผ์ง์ง ์์ต๋๋ค. ์ด ๋ช ๋ น๋ค์ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ๋ Windows ํ๋ก์ธ์ค๊ฐ ์๋ ์ด ํด๋ผ์ด์ธํธ๋ฅผ ์กฐํํฉ๋๋ค.
- GetScriptsList๋ ์ธ๋ฑ์ค, GetScriptsCount๋ ๊ฐ์, GetScriptState๋ ์ธ ์ํ ์ฝ๋๋ฅผ ๋ฐํํฉ๋๋ค. ์๋ก ๋ฐ๊พธ์ด ์ฐ๊ฑฐ๋ ๋ชจ๋ 0์ด ์๋ ๊ฐ์ true๋ก ํด์ํ์ง ๋ง์ธ์.
- ScriptIndex=0์ ํ์ฌ ์ฒซ ์คํ์ ์ ํํฉ๋๋ค. ์์ค ๊ฒฝ๋ก๋ฅผ ์ฝ์ ๋ฟ ํ์ผ์ ์ด๊ฑฐ๋ ์ ์ฅํ๊ฑฐ๋ ์คํํ์ง ์์ต๋๋ค.
๋ด๋ถ ํจ์: ํธ์ถ๋ถํฐ ๊ฒฐ๊ณผ๊น์ง
์๋๋ ํด๋ผ์ด์ธํธ์ ์ค์ ๋ฉ์๋์ ๋๋ค. Basic ์์ ์๋ ์์ ํ ๋ณด์กฐ ํจ์๊ฐ ์์ผ๋ฉฐ ๋ด๋ถ C# ๋ฉ์๋ ์ด๋ฆ์ ์ถ๊ฐ ์คํฌ๋ฆฝํธ ๋ช ๋ น์ด ์๋๋๋ค.
1. ExecuteStealthCompatibility
Runtime์ ๋ฑ๋ก๋ UO ํธ์ถ์ ์คํํ๊ณ ๋ธ๋ฆฌ์ง ๊ฒฐ๊ณผ๋ฅผ Integer, String ๋๋ Array๋ก ๊ฐ์๋๋ค.
String: ์ ์ฅ๋ ์์ค ํ์ผ ๊ฒฝ๋ก์ด๋ฉฐ, ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ""์ ๋๋ค. ํ์ผ ์์์ ๋ณดํต ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง์ง๋ง ๋ช ๋ น์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ค์๋ ์ผ๋ฐ ํ์ผ์ด ์์ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ์์ค: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; ํจ์ ExecuteStealthCompatibility.
2. GetScriptPath
๋ธ๋ฆฌ์ง๋ ์ด ํด๋ผ์ด์ธํธ์ ์คํ ๊ด๋ฆฌ์์ ์์ํฉ๋๋ค.
ScriptIndex=0์ ํ์ฌ ์ฒซ ์คํ์ ์ ํํฉ๋๋ค. ์์ค ๊ฒฝ๋ก๋ฅผ ์ฝ์ ๋ฟ ํ์ผ์ ์ด๊ฑฐ๋ ์ ์ฅํ๊ฑฐ๋ ์คํํ์ง ์์ต๋๋ค.
ํ๋ก์ ํธ ์์ค: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; ํจ์ GetScriptPath.
3. GetScriptPath
ElementAt(RunningScripts(), index)?.FilePath ?? string.Empty
์ธ๋ฑ์ค๋ ์์ ์์์ ๋ฐ๋ฅธ ํ์ฌ ์์น์ ๋๋ค. ์์/์ค์ง๋ก ์์น๊ฐ ๋ฐ๋ ์ ์์ต๋๋ค. ๋ณ๋ ํธ์ถ์ ํ๋์ ์์์ ์ค๋ ์ท์ด ์๋๋ฏ๋ก ๋์ค์ ์ ์ดํ๊ธฐ ์ ์ ๋ชฉ๋ก์ ๋ค์ ์ฝ์ผ์ธ์.
ํ๋ก์ ํธ ์์ค: src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs; ํจ์ GetScriptPath.
Basic IDE๋ฅผ ๋ซ์๋ ํ์ฑ ์คํ์ ์ฌ๋ผ์ง์ง ์์ต๋๋ค. ์ด ๋ช ๋ น๋ค์ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ๋ Windows ํ๋ก์ธ์ค๊ฐ ์๋ ์ด ํด๋ผ์ด์ธํธ๋ฅผ ์กฐํํฉ๋๋ค.
์์
์ฒซ ํธ์ถ๊ณผ ๊ฒฐ๊ณผ
# ์ฒซ ํธ์ถ๊ณผ ๊ฒฐ๊ณผ
#
# ํ์ฑ ์คํ์ ์์ค ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ฝ์ต๋๋ค.
#
# String: ์ ์ฅ๋ ์์ค ํ์ผ ๊ฒฝ๋ก์ด๋ฉฐ, ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ""์
๋๋ค. ํ์ผ ์์์ ๋ณดํต ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง์ง๋ง ๋ช
๋ น์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ค์๋ ์ผ๋ฐ ํ์ผ์ด ์์ ์ ์์ต๋๋ค.
SUB Main()
# Sub Main์ ์คํํฉ๋๋ค. ์ ๋ฌํ 0์ ์ธ๋ฑ์ค์ด๋ฉฐ ๋น ๊ดํธ๋ ์ธ์๊ฐ ์๋ค๋ ๋ป์
๋๋ค. Print ๋ฌธ์์ด์ ์์ ๋ฉ์์ง์ผ ๋ฟ์
๋๋ค.
# ScriptIndex=0์ ํ์ฌ ์ฒซ ์คํ์ ์ ํํฉ๋๋ค. ์์ค ๊ฒฝ๋ก๋ฅผ ์ฝ์ ๋ฟ ํ์ผ์ ์ด๊ฑฐ๋ ์ ์ฅํ๊ฑฐ๋ ์คํํ์ง ์์ต๋๋ค.
# String: ์ ์ฅ๋ ์์ค ํ์ผ ๊ฒฝ๋ก์ด๋ฉฐ, ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ""์
๋๋ค. ํ์ผ ์์์ ๋ณดํต ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง์ง๋ง ๋ช
๋ น์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ค์๋ ์ผ๋ฐ ํ์ผ์ด ์์ ์ ์์ต๋๋ค.
# ํ์ ScriptIndex๋ ์ต์ GetScriptsList์์ ์ป๋ 0๋ถํฐ ์์ํ๋ ์ ์ ์ธ๋ฑ์ค์
๋๋ค. ์์์ด๊ฑฐ๋ ์๋ ์ธ๋ฑ์ค๋ ๋ช
์๋ ๋น ๊ฐ/์ ์ ์์ ๊ฒฐ๊ณผ๋ฅผ
# ๋ฐํํฉ๋๋ค. ์์ดํ
serial, ํ๋ก์์ ์ด๋ฆ ๋๋ IDE ์คํ ID๋ฅผ ์ ๋ฌํ์ง ๋ง์ธ์.
Dim index=0
Dim path=UO.GetScriptPath(index)
If path<>"" Then
UO.Print(path)
End If
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
- Sub Main์ ์คํํฉ๋๋ค. ์ ๋ฌํ 0์ ์ธ๋ฑ์ค์ด๋ฉฐ ๋น ๊ดํธ๋ ์ธ์๊ฐ ์๋ค๋ ๋ป์ ๋๋ค. Print ๋ฌธ์์ด์ ์์ ๋ฉ์์ง์ผ ๋ฟ์ ๋๋ค.
- ScriptIndex=0์ ํ์ฌ ์ฒซ ์คํ์ ์ ํํฉ๋๋ค. ์์ค ๊ฒฝ๋ก๋ฅผ ์ฝ์ ๋ฟ ํ์ผ์ ์ด๊ฑฐ๋ ์ ์ฅํ๊ฑฐ๋ ์คํํ์ง ์์ต๋๋ค.
- String: ์ ์ฅ๋ ์์ค ํ์ผ ๊ฒฝ๋ก์ด๋ฉฐ, ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ""์ ๋๋ค. ํ์ผ ์์์ ๋ณดํต ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง์ง๋ง ๋ช ๋ น์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ค์๋ ์ผ๋ฐ ํ์ผ์ด ์์ ์ ์์ต๋๋ค.
- ํ์ ScriptIndex๋ ์ต์ GetScriptsList์์ ์ป๋ 0๋ถํฐ ์์ํ๋ ์ ์ ์ธ๋ฑ์ค์ ๋๋ค. ์์์ด๊ฑฐ๋ ์๋ ์ธ๋ฑ์ค๋ ๋ช ์๋ ๋น ๊ฐ/์ ์ ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. ์์ดํ serial, ํ๋ก์์ ์ด๋ฆ ๋๋ IDE ์คํ ID๋ฅผ ์ ๋ฌํ์ง ๋ง์ธ์.
๋ฐ๋ณต๋ฌธ ๋๋ ์กฐ๊ฑด์์ ์ฌ์ฉ
# ๋ฐ๋ณต๋ฌธ ๋๋ ์กฐ๊ฑด์์ ์ฌ์ฉ
#
# ํ์ฑ ์คํ์ ์์ค ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ฝ์ต๋๋ค.
#
# String: ์ ์ฅ๋ ์์ค ํ์ผ ๊ฒฝ๋ก์ด๋ฉฐ, ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ""์
๋๋ค. ํ์ผ ์์์ ๋ณดํต ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง์ง๋ง ๋ช
๋ น์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ค์๋ ์ผ๋ฐ ํ์ผ์ด ์์ ์ ์์ต๋๋ค.
SUB Main()
# ์ฌ๋ฌ ๋ช
๋ น์ ์กฐํฉํ ๋
๋ฆฝ์ ์ธ ์์ ์
๋๋ค. ๋ฐฐ์ด ์ธ๋ฑ์ค๋ 0๋ถํฐ ์์ํ๋ฏ๋ก ์ ๊ทผ ์ ์ ๊ธธ์ด๋ฅผ ํ์ธํ์ธ์. Wait(250)์ด ์์ผ๋ฉด 250๋ฐ๋ฆฌ์ด ๊ธฐ๋ค๋ฆฝ๋๋ค.
# ScriptIndex=0์ ํ์ฌ ์ฒซ ์คํ์ ์ ํํฉ๋๋ค. ์์ค ๊ฒฝ๋ก๋ฅผ ์ฝ์ ๋ฟ ํ์ผ์ ์ด๊ฑฐ๋ ์ ์ฅํ๊ฑฐ๋ ์คํํ์ง ์์ต๋๋ค.
# String: ์ ์ฅ๋ ์์ค ํ์ผ ๊ฒฝ๋ก์ด๋ฉฐ, ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ""์
๋๋ค. ํ์ผ ์์์ ๋ณดํต ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง์ง๋ง ๋ช
๋ น์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ค์๋ ์ผ๋ฐ ํ์ผ์ด ์์ ์ ์์ต๋๋ค.
# ํ์ ScriptIndex๋ ์ต์ GetScriptsList์์ ์ป๋ 0๋ถํฐ ์์ํ๋ ์ ์ ์ธ๋ฑ์ค์
๋๋ค. ์์์ด๊ฑฐ๋ ์๋ ์ธ๋ฑ์ค๋ ๋ช
์๋ ๋น ๊ฐ/์ ์ ์์ ๊ฒฐ๊ณผ๋ฅผ
# ๋ฐํํฉ๋๋ค. ์์ดํ
serial, ํ๋ก์์ ์ด๋ฆ ๋๋ IDE ์คํ ID๋ฅผ ์ ๋ฌํ์ง ๋ง์ธ์.
Dim indices=UO.GetScriptsList()
For Each index In indices
UO.Print(UO.GetScriptName(index) & " -> " & UO.GetScriptPath(index))
Next
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
- ์ฌ๋ฌ ๋ช ๋ น์ ์กฐํฉํ ๋ ๋ฆฝ์ ์ธ ์์ ์ ๋๋ค. ๋ฐฐ์ด ์ธ๋ฑ์ค๋ 0๋ถํฐ ์์ํ๋ฏ๋ก ์ ๊ทผ ์ ์ ๊ธธ์ด๋ฅผ ํ์ธํ์ธ์. Wait(250)์ด ์์ผ๋ฉด 250๋ฐ๋ฆฌ์ด ๊ธฐ๋ค๋ฆฝ๋๋ค.
- ScriptIndex=0์ ํ์ฌ ์ฒซ ์คํ์ ์ ํํฉ๋๋ค. ์์ค ๊ฒฝ๋ก๋ฅผ ์ฝ์ ๋ฟ ํ์ผ์ ์ด๊ฑฐ๋ ์ ์ฅํ๊ฑฐ๋ ์คํํ์ง ์์ต๋๋ค.
- String: ์ ์ฅ๋ ์์ค ํ์ผ ๊ฒฝ๋ก์ด๋ฉฐ, ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ""์ ๋๋ค. ํ์ผ ์์์ ๋ณดํต ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง์ง๋ง ๋ช ๋ น์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ค์๋ ์ผ๋ฐ ํ์ผ์ด ์์ ์ ์์ต๋๋ค.
- ํ์ ScriptIndex๋ ์ต์ GetScriptsList์์ ์ป๋ 0๋ถํฐ ์์ํ๋ ์ ์ ์ธ๋ฑ์ค์ ๋๋ค. ์์์ด๊ฑฐ๋ ์๋ ์ธ๋ฑ์ค๋ ๋ช ์๋ ๋น ๊ฐ/์ ์ ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. ์์ดํ serial, ํ๋ก์์ ์ด๋ฆ ๋๋ IDE ์คํ ID๋ฅผ ์ ๋ฌํ์ง ๋ง์ธ์.
์์ ํ ๋ณด์กฐ ํจ์
# ์์ ํ ๋ณด์กฐ ํจ์
#
# ํ์ฑ ์คํ์ ์์ค ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ฝ์ต๋๋ค.
#
# String: ์ ์ฅ๋ ์์ค ํ์ผ ๊ฒฝ๋ก์ด๋ฉฐ, ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ""์
๋๋ค. ํ์ผ ์์์ ๋ณดํต ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง์ง๋ง ๋ช
๋ น์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ค์๋ ์ผ๋ฐ ํ์ผ์ด ์์ ์ ์์ต๋๋ค.
SUB Main()
# Main ์๋์ ํจ์ ์ ์ฒด๊ฐ ์์ต๋๋ค. ์ด ํจ์์ ์ธ์์ ๋ฐํ๊ฐ์ ๋ด๋ถ์์ ์ฐ๋ API ๋ช
๋ น๊ณผ ๊ตฌ๋ถํด ์ค๋ช
ํฉ๋๋ค.
# ReadScriptPath๋ ๊ฒฝ๋ก๊ฐ ๋น์์ ๋๋ง fallback์ ์ฌ์ฉํฉ๋๋ค. GetScriptPath์ ์ ์ค๋ฒ๋ก๋๊ฐ ์๋๋๋ค.
# String: ์ ์ฅ๋ ์์ค ํ์ผ ๊ฒฝ๋ก์ด๋ฉฐ, ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ""์
๋๋ค. ํ์ผ ์์์ ๋ณดํต ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง์ง๋ง ๋ช
๋ น์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ค์๋ ์ผ๋ฐ ํ์ผ์ด ์์ ์ ์์ต๋๋ค.
# ํ์ ScriptIndex๋ ์ต์ GetScriptsList์์ ์ป๋ 0๋ถํฐ ์์ํ๋ ์ ์ ์ธ๋ฑ์ค์
๋๋ค. ์์์ด๊ฑฐ๋ ์๋ ์ธ๋ฑ์ค๋ ๋ช
์๋ ๋น ๊ฐ/์ ์ ์์ ๊ฒฐ๊ณผ๋ฅผ
# ๋ฐํํฉ๋๋ค. ์์ดํ
serial, ํ๋ก์์ ์ด๋ฆ ๋๋ IDE ์คํ ID๋ฅผ ์ ๋ฌํ์ง ๋ง์ธ์.
UO.Print(ReadScriptPath(0, "path unavailable"))
END SUB
Function ReadScriptPath(index, fallback) As String
Dim path=UO.GetScriptPath(index)
If path="" Then
Return fallback
End If
Return path
End Function
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
- Main ์๋์ ํจ์ ์ ์ฒด๊ฐ ์์ต๋๋ค. ์ด ํจ์์ ์ธ์์ ๋ฐํ๊ฐ์ ๋ด๋ถ์์ ์ฐ๋ API ๋ช ๋ น๊ณผ ๊ตฌ๋ถํด ์ค๋ช ํฉ๋๋ค.
- ReadScriptPath๋ ๊ฒฝ๋ก๊ฐ ๋น์์ ๋๋ง fallback์ ์ฌ์ฉํฉ๋๋ค. GetScriptPath์ ์ ์ค๋ฒ๋ก๋๊ฐ ์๋๋๋ค.
- String: ์ ์ฅ๋ ์์ค ํ์ผ ๊ฒฝ๋ก์ด๋ฉฐ, ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ""์ ๋๋ค. ํ์ผ ์์์ ๋ณดํต ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง์ง๋ง ๋ช ๋ น์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ค์๋ ์ผ๋ฐ ํ์ผ์ด ์์ ์ ์์ต๋๋ค.
- ํ์ ScriptIndex๋ ์ต์ GetScriptsList์์ ์ป๋ 0๋ถํฐ ์์ํ๋ ์ ์ ์ธ๋ฑ์ค์ ๋๋ค. ์์์ด๊ฑฐ๋ ์๋ ์ธ๋ฑ์ค๋ ๋ช ์๋ ๋น ๊ฐ/์ ์ ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. ์์ดํ serial, ํ๋ก์์ ์ด๋ฆ ๋๋ IDE ์คํ ID๋ฅผ ์ ๋ฌํ์ง ๋ง์ธ์.