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

UO.FindDistance

ClassicUO โ€ข Runtime API

๊ธฐ๋ณธ ์ˆ˜ํ‰ ๊ฒ€์ƒ‰ ๋ฐ˜๊ฒฝ์„ ์ฝ๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

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

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

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

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

๋ฐ˜ํ™˜๊ฐ’

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

๋™์ž‘

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

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

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

1. ExecuteStealthCompatibility

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

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

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

2. GetFindDistance

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

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

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

3. SetFindDistance

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

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

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

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, ํ˜„์žฌ ์ œํ•œ(ํƒ€์ผ ๋‹จ์œ„ ๊ฑฐ๋ฆฌ)์ด๋ฉฐ ID, ๊ฐœ์ˆ˜, Boolean์ด ์•„๋‹™๋‹ˆ๋‹ค. 0์€ ์‹คํŒจ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฒ”์œ„ 0์ž…๋‹ˆ๋‹ค. value ์žˆ์Œ: Unit,
# ๋ฐ˜ํ™˜๊ฐ’์ด ์—†์œผ๋ฉฐ TRUE/FALSE๋‚˜ ์ด์ „ ๊ฐ’๋„ ์•„๋‹™๋‹ˆ๋‹ค. ์„ค์ • ํ›„ FindDistance()์œผ๋กœ ์ €์žฅ๊ฐ’์„ ์ฝ์œผ์„ธ์š”.

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

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

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

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

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

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

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

    VAR previous = UO.FindDistance()
    TRY
        UO.FindDistance(5)
        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.FindDistance(previous)
    END TRY
END SUB

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

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

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

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

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