API UO FindTypeEx ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.FindTypeEx
ClassicUO โข Runtime API
์ปจํ ์ด๋ ๋๋ ์ง๋ฉด์์ ์ง์ ํ ๊ทธ๋ํฝ๊ณผ ์์์ ๊ฒ์ํ๊ณ ์ผ์นํ๋ ID ํ๋๋ฅผ ๋ฐํํฉ๋๋ค.
์ ํํ ๊ตฌ๋ฌธ
UO.FindTypeEx(ObjType:Any, Color:Any, Container:Any, InSub:Any) -> Integer
๋งค๊ฐ๋ณ์
ObjTypeโ Graphic/body์ด๋ฉฐ ๊ฐ์ฒด serial์ด ์๋๋๋ค. 0..65534๋ ํน์ ๊ทธ๋ํฝ, -1 ๋๋ 0xFFFF๋ ๋ชจ๋ ๊ทธ๋ํฝ์ ๋๋ค. ๋ค๋ฅธ ์์ Integer๋ ํํฐ๋ฅผ ํด์ ํฉ๋๋ค.Colorโ Hue์ด๋ฉฐ ์๋์ด ์๋๋๋ค. 0์ ์ผ์ ์์, -1 ๋๋ 0xFFFF๋ ๋ชจ๋ ์์์ ๋๋ค. ๋ค๋ฅธ ์์ Integer๋ ์์ ํํฐ๋ฅผ ํด์ ํฉ๋๋ค.Containerโ ์ง๋ฉด: UO.Ground(), 0, -1, 0xFFFFFFFF ๋๋ ๋ฌธ์์ด ground. ๋ฐฐ๋ญ: ๋ฌธ์์ด backpack ๋๋ ๊ทธ serial. ์ญ์ง์/hex serial๊ณผ AddObject ์ด๋ฆ๋ ๊ฐ๋ฅํฉ๋๋ค. my๋ ์ฅ๋น์ ์ค์ฒฉ ๊ฐ๋ฐฉ์ ํฌํจํ ์์ ์ ์ ์ฒด ์์ ํ์ ๋๋ค. ์ ์ ์๋ ์ด๋ฆ์ ์คํฌ๋ฆฝํธ ์ค๋ฅ์ ๋๋ค. ํ์ธํ serial์ ๊ฒ์ฌํ์ธ์. ๋ช ์์ ์ธ 0์ ์ง๋ฉด์ ์ ํํฉ๋๋ค. API๋ง๋ค ์ซ์ ์๋ฏธ๊ฐ ๋ฌ๋ผ ground/backpack ์ด๋ฆ์ด ๋ ๋ช ํํฉ๋๋ค.InSubโ ํ์ TRUE/FALSE(1/0). FALSE๋ ํน์ ์ปจํ ์ด๋์ ์ง์ ๋ด์ฉ๋ง, TRUE๋ ๋ก๋๋ ์ค์ฒฉ ๊ฐ๋ฐฉ๋ ๊ฒ์ํฉ๋๋ค. ์ง๋ฉด์๋ ์ํฅ์ด ์์ต๋๋ค. my๋ ์ด๋ฏธ ์ ์ฒด ์์ ํ์ ์ ํํฉ๋๋ค.
๋ฐํ๊ฐ
Integer: ๋ก์ปฌ ์ํ์์ ์ฒ์ ์ผ์นํ serial, ์์ผ๋ฉด 0. ๊ทธ๋ํฝ, ์๋, ๋ฐฐ์ด, Boolean์ด ์๋๋๋ค. result <> 0์ ๊ฒ์ฌํ๊ณ result = TRUE ๋๋ result = 1์ ์ฌ์ฉํ์ง ๋ง์ธ์. ํ ์คํ์ ํ ๊ฐ์ฒด, Mobile์ ํ ๊ฐ์ฒด์ด์ ํ ๋จ์์ ๋๋ค. ์์๋ ๊ฑฐ๋ฆฌ์์ด ์๋๋ฉฐ ํญ์ ์ผ์ ํ์ง ์์ต๋๋ค.
๋์
- ๋ค ์์น ์ธ์๊ฐ ๋ชจ๋ ํ์์ด๋ฉฐ ์๋ตํ ์ ์์ต๋๋ค.
- ์ง๋ฉด์ ์ด ์คํฌ๋ฆฝํธ์ FindDistance/FindVertical์ ์ ์ฉํ๊ณ self๋ฅผ ์ ์ธํ๋ฉฐ ์ผ์นํ๋ Item๊ณผ Mobile์ ํฌํจํฉ๋๋ค. ํน์ ์ปจํ ์ด๋์๋ ๊ฑฐ๋ฆฌ/๋์ด ์ ํ์ ์ ์ฉํ์ง ์์ต๋๋ค. ๋ ๋ฒ์ ๋ชจ๋ Ignore์ ํ๊ดด๋ ๊ฐ์ฒด๋ฅผ ์ ์ธํฉ๋๋ค.
- ์ํ ์ ์ FindItem, FindCount, FindFullQuantity, GetFoundItems๋ฅผ ๋น์๋๋ค. ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉด 0๊ณผ ๋น ๋ฐฐ์ด์ด ๋จ์ต๋๋ค. FindFullQuantity๋ Item์ max(1, Amount)์ Mobile๋ง๋ค 1์ ๋ํฉ๋๋ค. FindQuantity๋ FindItem์ ํ์ฌ ์๋์ ์ฝ์ต๋๋ค. ๋ค์ ๊ฒ์์ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๊พธ๊ธฐ ์ ์ ํ์ํ GetFoundItems๋ฅผ ์ ์ฅํ์ธ์.
- Bridge๋ ๋ก๋๋ Item์ ํ ๋ฒ ์ํํ๊ณ , ์ง๋ฉด์ด๋ฉด Mobile๋ ์ํํฉ๋๋ค. ์ข ๋ฅ, ์์, ํ๋ ์ด์์ ์ปจํ ์ด๋๊ฐ ์ผ์นํด์ผ ํฉ๋๋ค. ๊ฐ์ฒด๋ง๋ค ํ ๋ฒ ๋ฑ๋กํ๋ฉฐ ์กฐํฉ๋ง๋ค ์ ์ฒด ์ธ๊ณ๋ฅผ ๋ค์ ๊ฒ์ํ์ง ์์ต๋๋ค.
- ์ด๋ฏธ ๋ฐ์ ๋ฐ์ดํฐ๋ง ์ฝ์ต๋๋ค. ์ปจํ ์ด๋๋ฅผ ์ด๊ฑฐ๋ ์ ์ ๋ก๋ํ๊ฑฐ๋ ๋ฌผ๊ฑด์ ์ฎ๊ธฐ์ง ์์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ์๋ค๊ณ ์๋ฒ์ ์์๊ฐ ๋น์๋ค๊ณ ๋จ์ ํ ์ ์์ต๋๋ค. ์ฐ๊ฒฐ์ด ํ์ํ๋ฉด Connected๋ฅผ ๊ฒ์ฌํ์ธ์. ๊ฒ์ ์์ฒด๋ ๋ก์ปฌ ์ํ๋ฅผ ์ฝ์ต๋๋ค.
- Stealth FindTypeEx. ์ฐธ๊ณ ๋ฌธ์๋ ๋ง์ง๋ง ID์ ์๋ชป๋ ์ปจํ ์ด๋์ ๋ฐฐ๋ญ ๋์ฒด๋ฅผ ์ค๋ช ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ฒซ ๋ก์ปฌ ๊ฒฐ๊ณผ๋ฅผ ์ ์งํ๊ณ ์ ์ ์๋ ์ด๋ฆ์ ๋ฐฐ๋ญ์ผ๋ก ๋ฐ๊พธ์ง ์์ต๋๋ค. Ground๋ 0๋ ํ์ฉํฉ๋๋ค. ๋ก์ปฌ FindDistance ๊ธฐ๋ณธ๊ฐ์ 18, ์ต๋๊ฐ์ 255์ ๋๋ค.
๋ด๋ถ ํจ์: ํธ์ถ๋ถํฐ ๊ฒฐ๊ณผ๊น์ง
์ค์ ๊ตฌํ ๋จ๊ณ์ด๋ฉฐ ์ถ๊ฐ ๊ณต๊ฐ ๋ช ๋ น์ด ์๋๋๋ค. ์๋ FindGoldNearSelf์ SearchTypesIn์ ์ ์ฒด ์ ์๊ฐ ์ ๊ณต๋๋ ์คํฌ๋ฆฝํธ ํจ์์ ๋๋ค.
1. ExecuteStealthCompatibility
Runtime์ ์ซ์ ํํฐ๋ฅผ ๋ณํํ๊ณ ์ปจํ ์ด๋ ์ด๋ฆ์ ๋ณ๋๋ก ํ์ธํฉ๋๋ค. ์ง๋ฉด ์ ํ์๋ bridge ๋ด๋ถ์ ์ธ๊ณ ๋ฒ์๋ก ๋ณํ๋ฉ๋๋ค.
๋ค ์์น ์ธ์๊ฐ ๋ชจ๋ ํ์์ด๋ฉฐ ์๋ตํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ์์ค: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; ํจ์ ExecuteStealthCompatibility.
2. ConvertStealthSearchContainer
์ง๋ฉด: UO.Ground(), 0, -1, 0xFFFFFFFF ๋๋ ๋ฌธ์์ด ground. ๋ฐฐ๋ญ: ๋ฌธ์์ด backpack ๋๋ ๊ทธ serial. ์ญ์ง์/hex serial๊ณผ AddObject ์ด๋ฆ๋ ๊ฐ๋ฅํฉ๋๋ค. my๋ ์ฅ๋น์ ์ค์ฒฉ ๊ฐ๋ฐฉ์ ํฌํจํ ์์ ์ ์ ์ฒด ์์ ํ์ ๋๋ค. ์ ์ ์๋ ์ด๋ฆ์ ์คํฌ๋ฆฝํธ ์ค๋ฅ์ ๋๋ค. ํ์ธํ serial์ ๊ฒ์ฌํ์ธ์. ๋ช ์์ ์ธ 0์ ์ง๋ฉด์ ์ ํํฉ๋๋ค. API๋ง๋ค ์ซ์ ์๋ฏธ๊ฐ ๋ฌ๋ผ ground/backpack ์ด๋ฆ์ด ๋ ๋ช ํํฉ๋๋ค.
Runtime์ ์ซ์ ํํฐ๋ฅผ ๋ณํํ๊ณ ์ปจํ ์ด๋ ์ด๋ฆ์ ๋ณ๋๋ก ํ์ธํฉ๋๋ค. ์ง๋ฉด ์ ํ์๋ bridge ๋ด๋ถ์ ์ธ๊ณ ๋ฒ์๋ก ๋ณํ๋ฉ๋๋ค.
ํ๋ก์ ํธ ์์ค: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; ํจ์ ConvertStealthSearchContainer.
3. ResetFindResults
์ํ ์ ์ FindItem, FindCount, FindFullQuantity, GetFoundItems๋ฅผ ๋น์๋๋ค. ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉด 0๊ณผ ๋น ๋ฐฐ์ด์ด ๋จ์ต๋๋ค. FindFullQuantity๋ Item์ max(1, Amount)์ Mobile๋ง๋ค 1์ ๋ํฉ๋๋ค. FindQuantity๋ FindItem์ ํ์ฌ ์๋์ ์ฝ์ต๋๋ค. ๋ค์ ๊ฒ์์ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๊พธ๊ธฐ ์ ์ ํ์ํ GetFoundItems๋ฅผ ์ ์ฅํ์ธ์.
Integer: ๋ก์ปฌ ์ํ์์ ์ฒ์ ์ผ์นํ serial, ์์ผ๋ฉด 0. ๊ทธ๋ํฝ, ์๋, ๋ฐฐ์ด, Boolean์ด ์๋๋๋ค. result <> 0์ ๊ฒ์ฌํ๊ณ result = TRUE ๋๋ result = 1์ ์ฌ์ฉํ์ง ๋ง์ธ์. ํ ์คํ์ ํ ๊ฐ์ฒด, Mobile์ ํ ๊ฐ์ฒด์ด์ ํ ๋จ์์ ๋๋ค. ์์๋ ๊ฑฐ๋ฆฌ์์ด ์๋๋ฉฐ ํญ์ ์ผ์ ํ์ง ์์ต๋๋ค.
ํ๋ก์ ํธ ์์ค: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; ํจ์ ResetFindResults.
4. FindType
Bridge๋ ๋ก๋๋ Item์ ํ ๋ฒ ์ํํ๊ณ , ์ง๋ฉด์ด๋ฉด Mobile๋ ์ํํฉ๋๋ค. ์ข ๋ฅ, ์์, ํ๋ ์ด์์ ์ปจํ ์ด๋๊ฐ ์ผ์นํด์ผ ํฉ๋๋ค. ๊ฐ์ฒด๋ง๋ค ํ ๋ฒ ๋ฑ๋กํ๋ฉฐ ์กฐํฉ๋ง๋ค ์ ์ฒด ์ธ๊ณ๋ฅผ ๋ค์ ๊ฒ์ํ์ง ์์ต๋๋ค.
์ง๋ฉด์ ์ด ์คํฌ๋ฆฝํธ์ FindDistance/FindVertical์ ์ ์ฉํ๊ณ self๋ฅผ ์ ์ธํ๋ฉฐ ์ผ์นํ๋ Item๊ณผ Mobile์ ํฌํจํฉ๋๋ค. ํน์ ์ปจํ ์ด๋์๋ ๊ฑฐ๋ฆฌ/๋์ด ์ ํ์ ์ ์ฉํ์ง ์์ต๋๋ค. ๋ ๋ฒ์ ๋ชจ๋ Ignore์ ํ๊ดด๋ ๊ฐ์ฒด๋ฅผ ์ ์ธํฉ๋๋ค.
ํ๋ก์ ํธ ์์ค: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; ํจ์ FindType.
5. MatchesFindIdentity
Graphic/body์ด๋ฉฐ ๊ฐ์ฒด serial์ด ์๋๋๋ค. 0..65534๋ ํน์ ๊ทธ๋ํฝ, -1 ๋๋ 0xFFFF๋ ๋ชจ๋ ๊ทธ๋ํฝ์ ๋๋ค. ๋ค๋ฅธ ์์ Integer๋ ํํฐ๋ฅผ ํด์ ํฉ๋๋ค. Hue์ด๋ฉฐ ์๋์ด ์๋๋๋ค. 0์ ์ผ์ ์์, -1 ๋๋ 0xFFFF๋ ๋ชจ๋ ์์์ ๋๋ค. ๋ค๋ฅธ ์์ Integer๋ ์์ ํํฐ๋ฅผ ํด์ ํฉ๋๋ค.
Bridge๋ ๋ก๋๋ Item์ ํ ๋ฒ ์ํํ๊ณ , ์ง๋ฉด์ด๋ฉด Mobile๋ ์ํํฉ๋๋ค. ์ข ๋ฅ, ์์, ํ๋ ์ด์์ ์ปจํ ์ด๋๊ฐ ์ผ์นํด์ผ ํฉ๋๋ค. ๊ฐ์ฒด๋ง๋ค ํ ๋ฒ ๋ฑ๋กํ๋ฉฐ ์กฐํฉ๋ง๋ค ์ ์ฒด ์ธ๊ณ๋ฅผ ๋ค์ ๊ฒ์ํ์ง ์์ต๋๋ค.
ํ๋ก์ ํธ ์์ค: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; ํจ์ MatchesFindIdentity.
6. MatchesFindContainer
ํ์ TRUE/FALSE(1/0). FALSE๋ ํน์ ์ปจํ ์ด๋์ ์ง์ ๋ด์ฉ๋ง, TRUE๋ ๋ก๋๋ ์ค์ฒฉ ๊ฐ๋ฐฉ๋ ๊ฒ์ํฉ๋๋ค. ์ง๋ฉด์๋ ์ํฅ์ด ์์ต๋๋ค. my๋ ์ด๋ฏธ ์ ์ฒด ์์ ํ์ ์ ํํฉ๋๋ค.
์ง๋ฉด์ ์ด ์คํฌ๋ฆฝํธ์ FindDistance/FindVertical์ ์ ์ฉํ๊ณ self๋ฅผ ์ ์ธํ๋ฉฐ ์ผ์นํ๋ Item๊ณผ Mobile์ ํฌํจํฉ๋๋ค. ํน์ ์ปจํ ์ด๋์๋ ๊ฑฐ๋ฆฌ/๋์ด ์ ํ์ ์ ์ฉํ์ง ์์ต๋๋ค. ๋ ๋ฒ์ ๋ชจ๋ Ignore์ ํ๊ดด๋ ๊ฐ์ฒด๋ฅผ ์ ์ธํฉ๋๋ค.
ํ๋ก์ ํธ ์์ค: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; ํจ์ MatchesFindContainer.
7. RegisterFound
์ํ ์ ์ FindItem, FindCount, FindFullQuantity, GetFoundItems๋ฅผ ๋น์๋๋ค. ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉด 0๊ณผ ๋น ๋ฐฐ์ด์ด ๋จ์ต๋๋ค. FindFullQuantity๋ Item์ max(1, Amount)์ Mobile๋ง๋ค 1์ ๋ํฉ๋๋ค. FindQuantity๋ FindItem์ ํ์ฌ ์๋์ ์ฝ์ต๋๋ค. ๋ค์ ๊ฒ์์ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๊พธ๊ธฐ ์ ์ ํ์ํ GetFoundItems๋ฅผ ์ ์ฅํ์ธ์.
Integer: ๋ก์ปฌ ์ํ์์ ์ฒ์ ์ผ์นํ serial, ์์ผ๋ฉด 0. ๊ทธ๋ํฝ, ์๋, ๋ฐฐ์ด, Boolean์ด ์๋๋๋ค. result <> 0์ ๊ฒ์ฌํ๊ณ result = TRUE ๋๋ result = 1์ ์ฌ์ฉํ์ง ๋ง์ธ์. ํ ์คํ์ ํ ๊ฐ์ฒด, Mobile์ ํ ๊ฐ์ฒด์ด์ ํ ๋จ์์ ๋๋ค. ์์๋ ๊ฑฐ๋ฆฌ์์ด ์๋๋ฉฐ ํญ์ ์ผ์ ํ์ง ์์ต๋๋ค.
ํ๋ก์ ํธ ์์ค: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; ํจ์ RegisterFound.
์ด๋ฏธ ๋ฐ์ ๋ฐ์ดํฐ๋ง ์ฝ์ต๋๋ค. ์ปจํ ์ด๋๋ฅผ ์ด๊ฑฐ๋ ์ ์ ๋ก๋ํ๊ฑฐ๋ ๋ฌผ๊ฑด์ ์ฎ๊ธฐ์ง ์์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ์๋ค๊ณ ์๋ฒ์ ์์๊ฐ ๋น์๋ค๊ณ ๋จ์ ํ ์ ์์ต๋๋ค. ์ฐ๊ฒฐ์ด ํ์ํ๋ฉด Connected๋ฅผ ๊ฒ์ฌํ์ธ์. ๊ฒ์ ์์ฒด๋ ๋ก์ปฌ ์ํ๋ฅผ ์ฝ์ต๋๋ค.
์์
๋ฐฐ๋ญ์ ์ง์ ๋ด์ฉ
# ๋ฐฐ๋ญ์ ์ง์ ๋ด์ฉ
#
# ์ปจํ
์ด๋ ๋๋ ์ง๋ฉด์์ ์ง์ ํ ๊ทธ๋ํฝ๊ณผ ์์์ ๊ฒ์ํ๊ณ ์ผ์นํ๋ ID ํ๋๋ฅผ ๋ฐํํฉ๋๋ค.
#
# Integer: ๋ก์ปฌ ์ํ์์ ์ฒ์ ์ผ์นํ serial, ์์ผ๋ฉด 0. ๊ทธ๋ํฝ, ์๋, ๋ฐฐ์ด, Boolean์ด ์๋๋๋ค. result <> 0์ ๊ฒ์ฌํ๊ณ result =
# TRUE ๋๋ result = 1์ ์ฌ์ฉํ์ง ๋ง์ธ์. ํ ์คํ์ ํ ๊ฐ์ฒด, Mobile์ ํ ๊ฐ์ฒด์ด์ ํ ๋จ์์
๋๋ค. ์์๋ ๊ฑฐ๋ฆฌ์์ด ์๋๋ฉฐ ํญ์ ์ผ์ ํ์ง ์์ต๋๋ค.
SUB Main()
# 0x0EED๋ ๊ธํ, -1์ ๋ชจ๋ hue์
๋๋ค. backpack/FALSE๋ ์ค์ฒฉ ๊ฐ๋ฐฉ์ ์ ์ธํฉ๋๋ค. ์ฒซ hex ID(0x ์์), ๊ฐ์ฒด ์, ์ด ๋จ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
# 20๊ณผ 50์ ๋ ์คํ์ ๊ฐ์ฒด 2๊ฐ, ๋จ์ 70๊ฐ์
๋๋ค.
VAR item = UO.FindTypeEx(0x0EED, -1, 'backpack', FALSE)
UO.Print(Hex(item))
UO.Print(STR(UO.FindCount()))
UO.Print(STR(UO.FindFullQuantity()))
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
- 0x0EED๋ ๊ธํ, -1์ ๋ชจ๋ hue์ ๋๋ค. backpack/FALSE๋ ์ค์ฒฉ ๊ฐ๋ฐฉ์ ์ ์ธํฉ๋๋ค. ์ฒซ hex ID(0x ์์), ๊ฐ์ฒด ์, ์ด ๋จ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค. 20๊ณผ 50์ ๋ ์คํ์ ๊ฐ์ฒด 2๊ฐ, ๋จ์ 70๊ฐ์ ๋๋ค.
์์ ํ ์์ ์ง๋ฉด ๊ฒ์ ํจ์
# ์์ ํ ์์ ์ง๋ฉด ๊ฒ์ ํจ์
#
# ์ปจํ
์ด๋ ๋๋ ์ง๋ฉด์์ ์ง์ ํ ๊ทธ๋ํฝ๊ณผ ์์์ ๊ฒ์ํ๊ณ ์ผ์นํ๋ ID ํ๋๋ฅผ ๋ฐํํฉ๋๋ค.
#
# Integer: ๋ก์ปฌ ์ํ์์ ์ฒ์ ์ผ์นํ serial, ์์ผ๋ฉด 0. ๊ทธ๋ํฝ, ์๋, ๋ฐฐ์ด, Boolean์ด ์๋๋๋ค. result <> 0์ ๊ฒ์ฌํ๊ณ result =
# TRUE ๋๋ result = 1์ ์ฌ์ฉํ์ง ๋ง์ธ์. ํ ์คํ์ ํ ๊ฐ์ฒด, Mobile์ ํ ๊ฐ์ฒด์ด์ ํ ๋จ์์
๋๋ค. ์์๋ ๊ฑฐ๋ฆฌ์์ด ์๋๋ฉฐ ํญ์ ์ผ์ ํ์ง ์์ต๋๋ค.
SUB Main()
# radius=5, height=10์ FindGoldNearSelf ์์์๋ง ์ ์ฉํฉ๋๋ค. Finally๋ Return์ด๋ ์ค๋ฅ์๋ ๋ ์ ํ์ ๋ณต์ํฉ๋๋ค. ๊ธํ
# serial ๋๋ 0์ ๋ฐํํ๊ณ Main์ <> 0์ผ๋ก ๊ฒ์ฌํฉ๋๋ค.
VAR item = FindGoldNearSelf(5, 10)
IF item <> 0 THEN
UO.Print(Hex(item))
ELSE
UO.Print('Empty')
END IF
END SUB
FUNCTION FindGoldNearSelf(radius, height)
VAR oldDistance = UO.FindDistance()
VAR oldVertical = UO.FindVertical()
TRY
UO.FindDistance(radius)
UO.FindVertical(height)
RETURN UO.FindTypeEx(0x0EED, -1, UO.Ground(), FALSE)
FINALLY
UO.FindDistance(oldDistance)
UO.FindVertical(oldVertical)
END TRY
END FUNCTION
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
- radius=5, height=10์ FindGoldNearSelf ์์์๋ง ์ ์ฉํฉ๋๋ค. Finally๋ Return์ด๋ ์ค๋ฅ์๋ ๋ ์ ํ์ ๋ณต์ํฉ๋๋ค. ๊ธํ serial ๋๋ 0์ ๋ฐํํ๊ณ Main์ <> 0์ผ๋ก ๊ฒ์ฌํฉ๋๋ค.
์ด๋ฆ ์๋ ์ปจํ ์ด๋์ ์ค์ฒฉ ๊ฐ๋ฐฉ
# ์ด๋ฆ ์๋ ์ปจํ
์ด๋์ ์ค์ฒฉ ๊ฐ๋ฐฉ
#
# ์ปจํ
์ด๋ ๋๋ ์ง๋ฉด์์ ์ง์ ํ ๊ทธ๋ํฝ๊ณผ ์์์ ๊ฒ์ํ๊ณ ์ผ์นํ๋ ID ํ๋๋ฅผ ๋ฐํํฉ๋๋ค.
#
# Integer: ๋ก์ปฌ ์ํ์์ ์ฒ์ ์ผ์นํ serial, ์์ผ๋ฉด 0. ๊ทธ๋ํฝ, ์๋, ๋ฐฐ์ด, Boolean์ด ์๋๋๋ค. result <> 0์ ๊ฒ์ฌํ๊ณ result =
# TRUE ๋๋ result = 1์ ์ฌ์ฉํ์ง ๋ง์ธ์. ํ ์คํ์ ํ ๊ฐ์ฒด, Mobile์ ํ ๊ฐ์ฒด์ด์ ํ ๋จ์์
๋๋ค. ์์๋ ๊ฑฐ๋ฆฌ์์ด ์๋๋ฉฐ ํญ์ ์ผ์ ํ์ง ์์ต๋๋ค.
SUB Main()
# GetSerial๋ก backpack์ ํ์ธํ๊ณ 0 ๊ฒ์ฌ๋ก ์ง๋ฉด ์ค์ ํ์ ๋ฐฉ์งํฉ๋๋ค. AddObject๋ search_bag๋ฅผ ์ ์ฅํฉ๋๋ค. TRUE๋ ์ค์ฒฉ ๊ฐ๋ฐฉ์ ํฌํจํ๊ณ
# GetFoundItems๋ ๋ชฉ๋ก์ ๋ณต์ฌํ๋ฉฐ IsObjectExists๋ ID๋ฅผ ๋ค์ ํ์ธํฉ๋๋ค.
VAR bag = UO.GetSerial('backpack')
IF bag <> 0 THEN
UO.AddObject('search_bag', bag)
UO.FindTypeEx(0x0EED, -1, 'search_bag', TRUE)
VAR items = UO.GetFoundItems()
FOR EACH item IN items
IF UO.IsObjectExists(item) THEN
UO.Print(Hex(item))
END IF
NEXT
END IF
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
- GetSerial๋ก backpack์ ํ์ธํ๊ณ 0 ๊ฒ์ฌ๋ก ์ง๋ฉด ์ค์ ํ์ ๋ฐฉ์งํฉ๋๋ค. AddObject๋ search_bag๋ฅผ ์ ์ฅํฉ๋๋ค. TRUE๋ ์ค์ฒฉ ๊ฐ๋ฐฉ์ ํฌํจํ๊ณ GetFoundItems๋ ๋ชฉ๋ก์ ๋ณต์ฌํ๋ฉฐ IsObjectExists๋ ID๋ฅผ ๋ค์ ํ์ธํฉ๋๋ค.