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