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

UO.FindVertical

ClassicUO โ€ข Runtime API

๊ฒ€์ƒ‰์— ํ—ˆ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ๋†’์ด ์ฐจ์ด๋ฅผ ์ฝ๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

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

UO.FindVertical() -> Integer
UO.FindVertical(value:Any) -> Unit

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

  • value โ€” ์„ ํƒ์  Integer์ž…๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ์—†์œผ๋ฉด ์ฝ๊ณ , value๊ฐ€ ์žˆ์œผ๋ฉด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 0..120 ๋ฒ”์œ„๋กœ ์ œํ•œํ•˜๋ฉฐ ์Œ์ˆ˜๋Š” ๋ฌด์ œํ•œ์ด ์•„๋‹Œ 0์ž…๋‹ˆ๋‹ค. ์ƒˆ runtime ๊ธฐ๋ณธ๊ฐ’์€ 2์ด๊ณ  ๋ณต์›ํ•œ ์ƒํƒœ๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์ˆ˜๋Š” 0 ๋ฐฉํ–ฅ์œผ๋กœ ์ž˜๋ผ ๋‚ด๋ฉฐ decimal/0x ์ˆซ์ž ๋ฌธ์ž์—ด๋„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•”์‹œ์  ๋ณ€ํ™˜์„ ํ”ผํ•˜๋ ค๋ฉด Integer๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋ฐ˜ํ™˜๊ฐ’

์ธ์ˆ˜ ์—†์Œ: Integer, ํ˜„์žฌ ์ œํ•œ(์›”๋“œ Z ๋‹จ์œ„์˜ ๋†’์ด ์ฐจ์ด)์ด๋ฉฐ ID, ๊ฐœ์ˆ˜, Boolean์ด ์•„๋‹™๋‹ˆ๋‹ค. 0์€ ์‹คํŒจ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฒ”์œ„ 0์ž…๋‹ˆ๋‹ค. value ์žˆ์Œ: Unit, ๋ฐ˜ํ™˜๊ฐ’์ด ์—†์œผ๋ฉฐ TRUE/FALSE๋‚˜ ์ด์ „ ๊ฐ’๋„ ์•„๋‹™๋‹ˆ๋‹ค. ์„ค์ • ํ›„ FindVertical()์œผ๋กœ ์ €์žฅ๊ฐ’์„ ์ฝ์œผ์„ธ์š”.

๋™์ž‘

  • ๋†’์ด๋Š” abs(object.Z - player.Z)๋กœ ์–‘๋ฐฉํ–ฅ ๊ฒฝ๊ณ„๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. 0์€ ๊ฐ™์€ Z๋งŒ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ธต ๋ฒˆํ˜ธ๋‚˜ ์ˆ˜ํ‰ ํƒ€์ผ ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
  • ํ˜„์žฌ ์Šคํฌ๋ฆฝํŠธ runtime์— ์ €์žฅํ•˜๋ฉฐ ๊ทธ ํ”„๋กœ์‹œ์ €๋“ค์ด ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ๋…๋ฆฝ runtime์˜ ์„ค์ •์€ ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค. ์ฝ๊ธฐ/์“ฐ๊ธฐ๋Š” ๊ฒ€์ƒ‰, FindItem/FindCount/GetFoundItems ์ดˆ๊ธฐํ™”, ํŒจํ‚ท ์ „์†ก, ์บ๋ฆญํ„ฐ ์ด๋™, ๋จผ ๊ฐ์ฒด ๋กœ๋”ฉ์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • FindTypeEx์™€ FindTypesArrayEx๋Š” ์ง€๋ฉด ๊ฒ€์ƒ‰์—๋งŒ ์ด ์ œํ•œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ๋‚ด์šฉ์—๋Š” ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. type, hue, Ignore, ๋กœ๋”ฉ๋œ ๊ฐ์ฒด ์กฐ๊ฑด์€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. FindAtCoord๋Š” ๋‘ ์ œํ•œ์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ํ™•์žฅ ๋ช…๋ น์˜ ๋ช…์‹œ์  distance/maxZ๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ธ์ˆ˜์˜ -1์€ ๊ธฐ๋ณธ๊ฐ’ ์‚ฌ์šฉ์ด๋ฉฐ ์ด ์„ค์ •์„ -1๋กœ ์“ฐ๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. FindList๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ๋„ Z๋ฅผ ๊ฒ€์‚ฌํ•˜๋ฏ€๋กœ ์œ„ ์˜ˆ์™ธ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ž„์‹œ ๊ฒ€์ƒ‰ ์ „์— ์ €์žฅํ•˜๊ณ  Finally์—์„œ ๋ณต์›ํ•˜์„ธ์š”. ์ž๋™ ๋ณต๊ตฌ๋Š” ์—†์Šต๋‹ˆ๋‹ค. Finally๋Š” ์ •์ƒ ์ข…๋ฃŒ์™€ ํฌ์ฐฉ ๊ฐ€๋Šฅํ•œ ์Šคํฌ๋ฆฝํŠธ ์˜ค๋ฅ˜์— ์ ์šฉ๋˜๋ฉฐ ๋น„์ƒ ์ค‘์ง€๋Š” ์ •๋ฆฌ ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  • ์ฐธ๊ณ : Stealth FindVertical. ์ด ํด๋ผ์ด์–ธํŠธ์˜ ๊ณ ์œ  ๊ธฐ๋ณธ๊ฐ’/๋ฒ”์œ„๋Š” FindDistance 18 / 0..255, FindVertical 2 / 0..120์ž…๋‹ˆ๋‹ค. ์œ„ Basic ๋ฌธ๋ฒ•๊ณผ ํ™•์žฅ ํ•„ํ„ฐ๋Š” ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

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

์‹ค์ œ ๋‚ด๋ถ€ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. CountGroundInRange๋Š” ์™„์ „ํ•œ ์‚ฌ์šฉ์ž ํ•จ์ˆ˜์ด๋ฉฐ ์ˆจ๊ฒจ์ง„ ๋‚ด์žฅ ๋ช…๋ น์ด ์•„๋‹™๋‹ˆ๋‹ค.

1. ExecuteStealthCompatibility

์ธ์ˆ˜ 0๊ฐœ๋Š” ์ฝ๊ธฐ๋ฅผ, 1๊ฐœ๋Š” value ๋ณ€ํ™˜ ํ›„ ์“ฐ๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” Integer์™€ Unit์„ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

์ธ์ˆ˜ ์—†์Œ: Integer, ํ˜„์žฌ ์ œํ•œ(์›”๋“œ Z ๋‹จ์œ„์˜ ๋†’์ด ์ฐจ์ด)์ด๋ฉฐ ID, ๊ฐœ์ˆ˜, Boolean์ด ์•„๋‹™๋‹ˆ๋‹ค. 0์€ ์‹คํŒจ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฒ”์œ„ 0์ž…๋‹ˆ๋‹ค. value ์žˆ์Œ: Unit, ๋ฐ˜ํ™˜๊ฐ’์ด ์—†์œผ๋ฉฐ TRUE/FALSE๋‚˜ ์ด์ „ ๊ฐ’๋„ ์•„๋‹™๋‹ˆ๋‹ค. ์„ค์ • ํ›„ FindVertical()์œผ๋กœ ์ €์žฅ๊ฐ’์„ ์ฝ์œผ์„ธ์š”.

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

2. GetFindVertical

Bridge๋Š” runtime ์„ค์ •์„ ์ฝ๊ฑฐ๋‚˜ ์ •์ˆ˜๋ฅผ ์ œํ•œํ•˜์—ฌ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์›”๋“œ๋ฅผ ์ˆœํšŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ธ์ˆ˜ ์—†์Œ: Integer, ํ˜„์žฌ ์ œํ•œ(์›”๋“œ Z ๋‹จ์œ„์˜ ๋†’์ด ์ฐจ์ด)์ด๋ฉฐ ID, ๊ฐœ์ˆ˜, Boolean์ด ์•„๋‹™๋‹ˆ๋‹ค. 0์€ ์‹คํŒจ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฒ”์œ„ 0์ž…๋‹ˆ๋‹ค. value ์žˆ์Œ: Unit, ๋ฐ˜ํ™˜๊ฐ’์ด ์—†์œผ๋ฉฐ TRUE/FALSE๋‚˜ ์ด์ „ ๊ฐ’๋„ ์•„๋‹™๋‹ˆ๋‹ค. ์„ค์ • ํ›„ FindVertical()์œผ๋กœ ์ €์žฅ๊ฐ’์„ ์ฝ์œผ์„ธ์š”.

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

3. SetFindVertical

Bridge๋Š” runtime ์„ค์ •์„ ์ฝ๊ฑฐ๋‚˜ ์ •์ˆ˜๋ฅผ ์ œํ•œํ•˜์—ฌ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์›”๋“œ๋ฅผ ์ˆœํšŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„ ํƒ์  Integer์ž…๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ์—†์œผ๋ฉด ์ฝ๊ณ , value๊ฐ€ ์žˆ์œผ๋ฉด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 0..120 ๋ฒ”์œ„๋กœ ์ œํ•œํ•˜๋ฉฐ ์Œ์ˆ˜๋Š” ๋ฌด์ œํ•œ์ด ์•„๋‹Œ 0์ž…๋‹ˆ๋‹ค. ์ƒˆ runtime ๊ธฐ๋ณธ๊ฐ’์€ 2์ด๊ณ  ๋ณต์›ํ•œ ์ƒํƒœ๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์ˆ˜๋Š” 0 ๋ฐฉํ–ฅ์œผ๋กœ ์ž˜๋ผ ๋‚ด๋ฉฐ decimal/0x ์ˆซ์ž ๋ฌธ์ž์—ด๋„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•”์‹œ์  ๋ณ€ํ™˜์„ ํ”ผํ•˜๋ ค๋ฉด Integer๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

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

4. FindType

ํ›„์† ๊ฒ€์ƒ‰์€ ๋ช…์‹œ์  ๋Œ€์ฒด ๊ฐ’์ด ์—†์„ ๋•Œ ์„ค์ •์„ ์ฝ์Šต๋‹ˆ๋‹ค. ์ง€๋ฉด Item๊ณผ Mobile์— ํ•ด๋‹น ๊ฑฐ๋ฆฌ ๋ฐ ๋†’์ด ํ•„ํ„ฐ๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

FindTypeEx์™€ FindTypesArrayEx๋Š” ์ง€๋ฉด ๊ฒ€์ƒ‰์—๋งŒ ์ด ์ œํ•œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ๋‚ด์šฉ์—๋Š” ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. type, hue, Ignore, ๋กœ๋”ฉ๋œ ๊ฐ์ฒด ์กฐ๊ฑด์€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. FindAtCoord๋Š” ๋‘ ์ œํ•œ์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ํ™•์žฅ ๋ช…๋ น์˜ ๋ช…์‹œ์  distance/maxZ๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ธ์ˆ˜์˜ -1์€ ๊ธฐ๋ณธ๊ฐ’ ์‚ฌ์šฉ์ด๋ฉฐ ์ด ์„ค์ •์„ -1๋กœ ์“ฐ๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. FindList๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ๋„ Z๋ฅผ ๊ฒ€์‚ฌํ•˜๋ฏ€๋กœ ์œ„ ์˜ˆ์™ธ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

5. FindList

ํ›„์† ๊ฒ€์ƒ‰์€ ๋ช…์‹œ์  ๋Œ€์ฒด ๊ฐ’์ด ์—†์„ ๋•Œ ์„ค์ •์„ ์ฝ์Šต๋‹ˆ๋‹ค. ์ง€๋ฉด Item๊ณผ Mobile์— ํ•ด๋‹น ๊ฑฐ๋ฆฌ ๋ฐ ๋†’์ด ํ•„ํ„ฐ๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

FindTypeEx์™€ FindTypesArrayEx๋Š” ์ง€๋ฉด ๊ฒ€์ƒ‰์—๋งŒ ์ด ์ œํ•œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ๋‚ด์šฉ์—๋Š” ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. type, hue, Ignore, ๋กœ๋”ฉ๋œ ๊ฐ์ฒด ์กฐ๊ฑด์€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. FindAtCoord๋Š” ๋‘ ์ œํ•œ์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ํ™•์žฅ ๋ช…๋ น์˜ ๋ช…์‹œ์  distance/maxZ๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ธ์ˆ˜์˜ -1์€ ๊ธฐ๋ณธ๊ฐ’ ์‚ฌ์šฉ์ด๋ฉฐ ์ด ์„ค์ •์„ -1๋กœ ์“ฐ๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. FindList๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ๋„ Z๋ฅผ ๊ฒ€์‚ฌํ•˜๋ฏ€๋กœ ์œ„ ์˜ˆ์™ธ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

ํ˜„์žฌ ์Šคํฌ๋ฆฝํŠธ runtime์— ์ €์žฅํ•˜๋ฉฐ ๊ทธ ํ”„๋กœ์‹œ์ €๋“ค์ด ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ๋…๋ฆฝ runtime์˜ ์„ค์ •์€ ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค. ์ฝ๊ธฐ/์“ฐ๊ธฐ๋Š” ๊ฒ€์ƒ‰, FindItem/FindCount/GetFoundItems ์ดˆ๊ธฐํ™”, ํŒจํ‚ท ์ „์†ก, ์บ๋ฆญํ„ฐ ์ด๋™, ๋จผ ๊ฐ์ฒด ๋กœ๋”ฉ์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ

์ฝ๊ธฐ, ์„ค์ • ๋ฐ ๋ฒ”์œ„ ์ œํ•œ ํ™•์ธ

# ์ฝ๊ธฐ, ์„ค์ • ๋ฐ ๋ฒ”์œ„ ์ œํ•œ ํ™•์ธ
#
# ๊ฒ€์ƒ‰์— ํ—ˆ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ๋†’์ด ์ฐจ์ด๋ฅผ ์ฝ๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
#
# ์ธ์ˆ˜ ์—†์Œ: Integer, ํ˜„์žฌ ์ œํ•œ(์›”๋“œ Z ๋‹จ์œ„์˜ ๋†’์ด ์ฐจ์ด)์ด๋ฉฐ ID, ๊ฐœ์ˆ˜, Boolean์ด ์•„๋‹™๋‹ˆ๋‹ค. 0์€ ์‹คํŒจ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฒ”์œ„ 0์ž…๋‹ˆ๋‹ค. value ์žˆ์Œ:
# Unit, ๋ฐ˜ํ™˜๊ฐ’์ด ์—†์œผ๋ฉฐ TRUE/FALSE๋‚˜ ์ด์ „ ๊ฐ’๋„ ์•„๋‹™๋‹ˆ๋‹ค. ์„ค์ • ํ›„ FindVertical()์œผ๋กœ ์ €์žฅ๊ฐ’์„ ์ฝ์œผ์„ธ์š”.

SUB Main()
    # previous๋Š” ์‹ค์ œ ์„ค์ •์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. value:=10์€ ์ผ๋ฐ˜ ์ œํ•œ์ด๋ฉฐ 1000์€ 120์œผ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. Print๋Š” ๋ณ„๋„ ์ฝ๊ธฐ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    # Finally๋Š” previous๋ฅผ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.

    VAR previous = UO.FindVertical()
    TRY
        UO.FindVertical(value:=10)
        UO.Print(CStr(UO.FindVertical()))
        UO.FindVertical(1000)
        UO.Print(CStr(UO.FindVertical()))
    FINALLY
        UO.FindVertical(previous)
    END TRY
END SUB

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

  • previous๋Š” ์‹ค์ œ ์„ค์ •์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. value:=10์€ ์ผ๋ฐ˜ ์ œํ•œ์ด๋ฉฐ 1000์€ 120์œผ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. Print๋Š” ๋ณ„๋„ ์ฝ๊ธฐ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. Finally๋Š” previous๋ฅผ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.

์ž„์‹œ ์ง€๋ฉด ๊ฒ€์ƒ‰

# ์ž„์‹œ ์ง€๋ฉด ๊ฒ€์ƒ‰
#
# ๊ฒ€์ƒ‰์— ํ—ˆ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ๋†’์ด ์ฐจ์ด๋ฅผ ์ฝ๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
#
# ์ธ์ˆ˜ ์—†์Œ: Integer, ํ˜„์žฌ ์ œํ•œ(์›”๋“œ Z ๋‹จ์œ„์˜ ๋†’์ด ์ฐจ์ด)์ด๋ฉฐ ID, ๊ฐœ์ˆ˜, Boolean์ด ์•„๋‹™๋‹ˆ๋‹ค. 0์€ ์‹คํŒจ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฒ”์œ„ 0์ž…๋‹ˆ๋‹ค. value ์žˆ์Œ:
# Unit, ๋ฐ˜ํ™˜๊ฐ’์ด ์—†์œผ๋ฉฐ TRUE/FALSE๋‚˜ ์ด์ „ ๊ฐ’๋„ ์•„๋‹™๋‹ˆ๋‹ค. ์„ค์ • ํ›„ FindVertical()์œผ๋กœ ์ €์žฅ๊ฐ’์„ ์ฝ์œผ์„ธ์š”.

SUB Main()
    # previous๋Š” ํ˜ธ์ถœ์ž์˜ ์„ค์ •์ž…๋‹ˆ๋‹ค. 10์€ FindVertical๋งŒ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‹ค๋ฅธ ์ œํ•œ์€ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. 0x0EED๋Š” ๊ธˆ ๊ทธ๋ž˜ํ”ฝ, -1์€ ๋ชจ๋“  ์ƒ‰,
    # Container=-1์€ ์›”๋“œ, FALSE๋Š” ์ปจํ…Œ์ด๋„ˆ ์žฌ๊ท€ ์—†์Œ์ž…๋‹ˆ๋‹ค. id๋Š” serial์ด๋ฉฐ <> 0์€ ์กด์žฌ ์—ฌ๋ถ€ ๊ฒ€์‚ฌ์ž…๋‹ˆ๋‹ค. FindCount๋Š” ๊ฐ์ฒด/์Šคํƒ
    # ๊ฐœ์ˆ˜์ž…๋‹ˆ๋‹ค. Finally๋Š” ์„ค์ •๋งŒ ๋ณต์›ํ•˜๊ณ  ๊ฒ€์ƒ‰ ๋ชฉ๋ก์€ ๋ณต์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    VAR previous = UO.FindVertical()
    TRY
        UO.FindVertical(10)
        VAR id = UO.FindTypeEx(0x0EED, -1, -1, FALSE)
        IF id <> 0 THEN
            UO.Print(HEX(id) + ':' + CStr(UO.FindCount()))
        ELSE
            UO.Print('0')
        END IF
    FINALLY
        UO.FindVertical(previous)
    END TRY
END SUB

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

  • previous๋Š” ํ˜ธ์ถœ์ž์˜ ์„ค์ •์ž…๋‹ˆ๋‹ค. 10์€ FindVertical๋งŒ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‹ค๋ฅธ ์ œํ•œ์€ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. 0x0EED๋Š” ๊ธˆ ๊ทธ๋ž˜ํ”ฝ, -1์€ ๋ชจ๋“  ์ƒ‰, Container=-1์€ ์›”๋“œ, FALSE๋Š” ์ปจํ…Œ์ด๋„ˆ ์žฌ๊ท€ ์—†์Œ์ž…๋‹ˆ๋‹ค. id๋Š” serial์ด๋ฉฐ <> 0์€ ์กด์žฌ ์—ฌ๋ถ€ ๊ฒ€์‚ฌ์ž…๋‹ˆ๋‹ค. FindCount๋Š” ๊ฐ์ฒด/์Šคํƒ ๊ฐœ์ˆ˜์ž…๋‹ˆ๋‹ค. Finally๋Š” ์„ค์ •๋งŒ ๋ณต์›ํ•˜๊ณ  ๊ฒ€์ƒ‰ ๋ชฉ๋ก์€ ๋ณต์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์™„์ „ํ•œ CountGroundInRange ํ•จ์ˆ˜

# ์™„์ „ํ•œ CountGroundInRange ํ•จ์ˆ˜
#
# ๊ฒ€์ƒ‰์— ํ—ˆ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ๋†’์ด ์ฐจ์ด๋ฅผ ์ฝ๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
#
# ์ธ์ˆ˜ ์—†์Œ: Integer, ํ˜„์žฌ ์ œํ•œ(์›”๋“œ Z ๋‹จ์œ„์˜ ๋†’์ด ์ฐจ์ด)์ด๋ฉฐ ID, ๊ฐœ์ˆ˜, Boolean์ด ์•„๋‹™๋‹ˆ๋‹ค. 0์€ ์‹คํŒจ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฒ”์œ„ 0์ž…๋‹ˆ๋‹ค. value ์žˆ์Œ:
# Unit, ๋ฐ˜ํ™˜๊ฐ’์ด ์—†์œผ๋ฉฐ TRUE/FALSE๋‚˜ ์ด์ „ ๊ฐ’๋„ ์•„๋‹™๋‹ˆ๋‹ค. ์„ค์ • ํ›„ FindVertical()์œผ๋กœ ์ €์žฅ๊ฐ’์„ ์ฝ์œผ์„ธ์š”.

SUB Main()
    # CountGroundInRange(graphic, radius, height)๋Š” ๋‘ ์ œํ•œ์„ ์ €์žฅํ•˜๊ณ  radius=5, height=10์œผ๋กœ graphic=0x0EED๋ฅผ
    # ๊ฒ€์ƒ‰ํ•˜์—ฌ FindCount()๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ•œ ์Šคํƒ์€ ๊ฐ์ฒด ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์™„์ „ํ•œ ํ•จ์ˆ˜๋Š” Main ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค. Return์œผ๋กœ ๋‚˜๊ฐ€๋„ Finally๊ฐ€ ๋‘ ์ œํ•œ์„
    # ๋ณต์›ํ•˜๋ฉฐ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋Š” ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

    VAR count = CountGroundInRange(0x0EED, 5, 10)
    UO.Print(CStr(count))
END SUB

FUNCTION CountGroundInRange(graphic, radius, height)
    VAR oldDistance = UO.FindDistance()
    VAR oldVertical = UO.FindVertical()
    TRY
        UO.FindDistance(radius)
        UO.FindVertical(height)
        UO.FindTypeEx(graphic, -1, -1, FALSE)
        RETURN UO.FindCount()
    FINALLY
        UO.FindDistance(oldDistance)
        UO.FindVertical(oldVertical)
    END TRY
END FUNCTION

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

  • CountGroundInRange(graphic, radius, height)๋Š” ๋‘ ์ œํ•œ์„ ์ €์žฅํ•˜๊ณ  radius=5, height=10์œผ๋กœ graphic=0x0EED๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ FindCount()๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ•œ ์Šคํƒ์€ ๊ฐ์ฒด ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์™„์ „ํ•œ ํ•จ์ˆ˜๋Š” Main ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค. Return์œผ๋กœ ๋‚˜๊ฐ€๋„ Finally๊ฐ€ ๋‘ ์ œํ•œ์„ ๋ณต์›ํ•˜๋ฉฐ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋Š” ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

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

Basic