KO UO Topic search - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

์ฐพ๋‹ค

ํ™ˆ ยท C# ยท IDE ยท UO API ยท Aโ€“Z ยท ์˜ˆ ยท ์–ธ์–ด

๊ฒ€์ƒ‰ ์˜์—ญ ๋ฐ ํ•„ํ„ฐ๋ฅผ ์„ ํƒํ•˜๊ณ  ๊ฒฐ๊ณผ, ๋ฐœ๊ฒฌ๋œ ํ•ญ๋ชฉ ๋ชฉ๋ก ๋ฐ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น ์นด๋“œ์—์„œ "์ฐพ์„ ์ˆ˜ ์—†์Œ" ๊ฐ’์„ ํ™•์ธํ•˜์„ธ์š”: serial, ์ˆ˜๋Ÿ‰ ๋ฐ ๋ชฉ๋ก - ๋‹ค๋ฅธ ๊ฒฐ๊ณผ.

์„น์…˜

์ฃผ์ œ ๋ช…๋ น ๋ฐ ์„ค๋ช…
ํ•ญ๋ชฉ ๊ฒ€์ƒ‰ UO.FindType ยท UO.FindTypeEx ยท UO.FindTypesArrayEx ยท UO.FindAnyType
ํœด๋Œ€ํฐ ๊ฒ€์ƒ‰ UO.FindMobile ยท UO.FindType
ํ”Œ๋ ˆ์ด์–ด ๊ฒ€์ƒ‰ UO.FindMobile ยท UO.FindType
๊ฒ€์ƒ‰ NPC UO.FindMobile ยท UO.FindType
๋ชฌ์Šคํ„ฐ ๊ฒ€์ƒ‰ UO.FindMobile ยท UO.FindType
์‹œ๋ฆฌ์–ผ๋กœ ๊ฒ€์ƒ‰ UO.Exists ยท UO.GetSerial
์œ ํ˜•์œผ๋กœ ๊ฒ€์ƒ‰ UO.FindType ยท UO.FindTypeEx ยท UO.FindTypesArrayEx
Notoriety๋กœ ๊ฒ€์ƒ‰ UO.FindByNotoriety ยท UO.FindNotoriety
๊ฑฐ๋ฆฌ๋กœ ๊ฒ€์ƒ‰ UO.FindDistance ยท UO.FindType
์ขŒํ‘œ๋กœ ๊ฒ€์ƒ‰ UO.FindAtCoord
Z๋กœ ๊ฒ€์ƒ‰ UO.FindVertical ยท UO.FindType
๊ฒ€์ƒ‰ Ground UO.FindType ยท UO.CountGround
์ปจํ…Œ์ด๋„ˆ ๊ฒ€์ƒ‰ UO.FindTypeEx ยท UO.OpenContainer
FindList UO.AddFindList ยท UO.FindList ยท UO.GetFindedList ยท UO.GetFoundItems ยท UO.FindItem ยท UO.FindCount ยท UO.FindQuantity ยท UO.FindFullQuantity
Ignore Lists UO.Ignore ยท UO.IgnoreOff ยท UO.IgnoreReset ยท UO.AddIgnoreList ยท UO.SelectIgnoreList
Bad Objects UO.SetBadObject ยท UO.ClearBadObjectList
Bad Locations UO.SetBadLocation ยท UO.ClearBadLocationList

๋ชจ๋“  ํ…Œ๋งˆ ๋ช…๋ น

ํ•ญ๋ชฉ ๊ฒ€์ƒ‰

UO.FindType ยท UO.FindTypeEx ยท UO.FindTypesArrayEx ยท UO.FindAnyType ยท UO.FindAtCoord ยท UO.FindItem ยท UO.FindCount ยท UO.FindQuantity ยท UO.FindFullQuantity ยท UO.Count ยท UO.CountEx ยท UO.CountGround ยท UO.GetWorldItems ยท UO.GetFoundItems ยท UO.GetFindedList

๋ชจ๋ฐ”์ผ ๊ฒ€์ƒ‰

UO.FindMobile ยท UO.FindMan ยท UO.FindByNotoriety ยท UO.FindNotoriety

๊ฑฐ๋ฆฌ๋กœ ๊ฒ€์ƒ‰ / Z

UO.FindDistance ยท UO.FindVertical

FindList

UO.AddFindList ยท UO.ClearFindList ยท UO.DeleteFindList ยท UO.FindList ยท UO.InfoFindList ยท UO.MFGI

Ignore ๋ชฉ๋ก

UO.Ignore ยท UO.IgnoreOff ยท UO.IgnoreReset ยท UO.AddIgnoreList ยท UO.ClearIgnoreList ยท UO.DeleteIgnoreList ยท UO.SelectIgnoreList ยท UO.GetIgnoreList

์ž˜๋ชป๋œ ๊ฐœ์ฒด

UO.SetBadObject ยท UO.ClearBadObjectList

๋‚˜์œ ์œ„์น˜

UO.SetBadLocation ยท UO.ClearBadLocationList

์ฃผ์ œ์— ๋Œ€ํ•œ ์˜ˆ

๊ฐ ๋ช…๋ น ์นด๋“œ์—๋Š” ์ง์ ‘ ์ฝ”๋“œ, ํ•จ์ˆ˜ ๋ฐ ํด๋ž˜์Šค ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋…๋ฆฝ์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์„ ํƒ๋œ ์งง์€ ์‹œ๋‚˜๋ฆฌ์˜ค์ž…๋‹ˆ๋‹ค. ์ œํ•œ์‚ฌํ•ญ๊ณผ ์ „์ฒด ๋ถ„์„์ด ์นด๋“œ์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

UO.FindType

๋งค๊ฐœ๋ณ€์ˆ˜, ๊ฒฐ๊ณผ ๋ฐ ๋ชจ๋“  ์‹œ๋‚˜๋ฆฌ์˜ค

var gold = UO.FindType(0x0EED, -1, "backpack");
if (Truth(gold == ""))
{
    UO.Print("Gold was not found in the loaded backpack");
}
else
{
    UO.Print("Gold serial: " + gold);
    UO.Info(gold);
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

UO.FindFullQuantity

๋งค๊ฐœ๋ณ€์ˆ˜, ๊ฒฐ๊ณผ ๋ฐ ๋ชจ๋“  ์‹œ๋‚˜๋ฆฌ์˜ค

var found = UO.FindType(0x0EED, -1, "backpack");
var value = UO.FindFullQuantity();
UO.Print(Convert.ToString(value));

์ฐธ์กฐ ๊ตฌ์„ฑ

1 ยท 2

์ „์ฒด ๋ช…๋ น ์ฐธ์กฐ


UO.AddFindList

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

void UO.AddFindList(object? list, object? @type);
void UO.AddFindList(object? list, object? @type, object? color);

UO.FindList์˜ ๋ช…๋ช…๋œ ์ง‘ํ•ฉ์— type/hue ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ์œ ํ˜•์˜ ๊ฐœ์ฒด ๋˜๋Š” ๋ชจ๋ฐ”์ผ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ถ”๊ฐ€๋œ ์ˆœ์„œ์— ๋”ฐ๋ผ ์œ ํ˜•์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

  • list โ€” ๊ทœ์น™ ์„ธํŠธ์˜ ์ด๋ฆ„(์˜ˆ: "loot") | ์—†์ด ๋ฌธ์ž์—ด์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ž๋Š” ๋ ˆ์ฝ”๋“œ ๋‚ด์—์„œ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” serial ์ปจํ…Œ์ด๋„ˆ๋‚˜ ๋ฐœ๊ฒฌ๋œ ํ•ญ๋ชฉ์˜ ๋ฐฐ์—ด์ด ์•„๋‹™๋‹ˆ๋‹ค.
  • type - ์•„์ดํ…œ์˜ ๊ทธ๋ž˜ํ”ฝ/type ๋˜๋Š” body mobile(serial ์•„๋‹˜). ์ผ๋ฐ˜์ ์œผ๋กœ int 0..65535(0x0EED ํฌํ•จ); -1 ๋˜๋Š” 0xFFFF๋Š” ๊ฒ€์ƒ‰ ์‹œ type๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ•ญ๋ชฉ๋‹น ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค. ์—ฌ๋Ÿฌ ์œ ํ˜•์ด ๋ณ„๋„์˜ ํ˜ธ์ถœ๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  • color โ€” RGB์ด ์•„๋‹Œ ๋ฌผ์ฒด/๋ชธ์ฒด์˜ ์ƒ‰์ƒ์ž…๋‹ˆ๋‹ค. int 0..65535; 0 - ์ผ๋ฐ˜ hue 0, -1 ๋˜๋Š” 0xFFFF - ๋ชจ๋‘. AddFindList์—์„œ ์ƒ‰์ƒ์„ ๊ฑด๋„ˆ๋›ฐ๋Š” ๊ฒƒ์€ ๊ฒ€์ƒ‰ ์‹œ hue๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

void: ๋ฐ˜ํ™˜ ๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค. ํ˜ธ์ถœ์„ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜์ง€ ๋ง๊ณ  true/1์—์„œ ํ…Œ์ŠคํŠธํ•˜์ง€ ๋งˆ์„ธ์š”. ์ •์˜ ์ƒํƒœ๋Š” UO.InfoFindList()๋กœ ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰ ์ž์ฒด๋Š” UO.FindList()์„ ํ†ตํ•ด ๋ณ„๋„๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

๋™์ž‘

  • ์ •์˜๋Š” ์ง€์ •๋œ ์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„ ์ƒํƒœ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋…๋ฆฝ์ ์ธ ๋‹ค๋ฅธ ๋Ÿฐํƒ€์ž„์—๋Š” ์ž์ฒด ์„ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. IDE ์ฐฝ์„ ๋‹ซ์•„๋„ ์ด๋Ÿฌํ•œ ๊ทœ์น™์€ ์ง€์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์„ค์ • ํŒŒ์ผ์ด๋‚˜ ์ „์—ญ ๊ฒŒ์ž„ ๊ฐœ์ฒด ๋ชฉ๋ก์ด ์•„๋‹™๋‹ˆ๋‹ค.
  • AddFindList ํ•ญ๋ชฉ์„ ๋์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณต์€ ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‚คํŠธ๋ฅผ ๋‹ค์‹œ ํ”„๋กœ๋น„์ €๋‹ํ•˜๋ ค๋ฉด ๋จผ์ € ClearFindList("name")์œผ๋กœ ์ „ํ™”ํ•˜์„ธ์š”. ์ •์˜๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ์ด๋ฏธ ์ˆ˜์‹ ๋œ FindItem/FindCount/GetFoundItems๋Š” ์ง€์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ ˆ์ฝ”๋“œ๋Š” ํ…์ŠคํŠธ ํ•„๋“œ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด 0x0EED์€ "3821"๋กœ ์ €์žฅ๋˜๊ณ , ๋ฌธ์ž์—ด "0x0EED"์€ "0x0EED"๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰์€ ๋‘ ์˜ต์…˜์„ ๋ชจ๋‘ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  DeleteFindList๋Š” ์ €์žฅ๋œ ํ…์ŠคํŠธ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ์‹œ์—๋„ ๋™์ผํ•œ ์–‘์‹์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • FindList์˜ ์•Œ ์ˆ˜ ์—†๋Š” ์ด๋ฆ„์€ ๋นˆ ๋“ฑ๋ก ์„ธํŠธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์—”์ง„์€ ์ด๋ฅผ ์ˆซ์ž ์œ ํ˜• ๋ชฉ๋ก์œผ๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€ํ™˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•œ ํ›„ ํ•ด๋‹น ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์ „์— ์ƒˆ ์„ธํŠธ๋ฅผ ๋งŒ๋“œ์‹ญ์‹œ์˜ค.
  • ์ธ์ˆ˜๋Š” ์ฆ‰์‹œ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ˆซ์ž type/hue ํ™•์ธ์€ FindList์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. AddFindList์€ ๊ฒ€์ƒ‰, ์•„์ดํ…œ ์šด๋ฐ˜, serial๋ฅผ Ignore์— ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๋ช…๋ น์€ ๋…๋ฆฝ๋œ ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•ž์˜ ๋ฉ”์‹œ์ง€๋Š” ํ˜ธ์ถœ ์‹œ์ž‘์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์„œ๋ฒ„ ๋™์ž‘์˜ ์™„๋ฃŒ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

UO.Print("Calling UO.AddFindList");
UO.AddFindList("simple_loot", 0x0EED);

1. ์ž์‹ ๋งŒ์˜ ์ „๋ฆฌํ’ˆ ์„ธํŠธ๋ฅผ ์ค€๋น„ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ์„ธ์š” - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • 0x0EED๋Š” ๊ณจ๋“œ, 0x0F7A๋Š” ์„ธํŠธ์˜ ๋‘ ๋ฒˆ์งธ graphic์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ๊ทธ๋ž˜ํ”ฝ์„ ๊ต์ฒดํ•˜์„ธ์š”. ์ „์ฒด BuildLoot ์ ˆ์ฐจ๋Š” ์œ„์— ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • FindCount(item)์€ ํŠน์ • ์Šคํƒ์˜ ๋‹จ์œ„ ์ˆ˜๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค. GetFoundItems์—๋Š” ๊ณ ์œ ํ•œ serial๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ๋Š” ์ „์†ก์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
BuildLoot();
var first = UO.FindList("loot", "ground", 2, -1, false, 5, false);
if (Truth(first == ""))
{
    UO.Print("No matching loot nearby");
    return null;
}
var items = UO.GetFoundItems();
foreach (var item in items)
{
    UO.Print(UO.GetName(item) + " | stack: " + Convert.ToString(UO.FindCount(item)));
}

void BuildLoot()
{
    UO.ClearFindList("loot");
    UO.AddFindList("loot", 0x0EED, -1);
    UO.AddFindList("loot", 0x0F7A, -1);
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. ๋ฐฐ๋‚ญ์—์„œ ์›ํ•˜๋Š” ์ƒ‰์ƒ์˜ ์•„์ดํ…œ๋งŒ ๊ฒ€์ƒ‰ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • 0x0044 ํ•„ํ„ฐ hue; ์ด๊ฑด serial๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. backpack ๋ฐฐ๋‚ญ์˜ ๋‚ด์šฉ๋ฌผ์„ ์ง์ ‘ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. AddObject๋Š” ์ด ๋Ÿฐํƒ€์ž„์—์„œ ์„ ํƒํ•œ ๊ฐœ์ฒด๋ฅผ ์ด๋ฆ„์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    UO.ClearFindList("colored");
    UO.AddFindList("colored", 0x0EED, 0x0044);
    var first = UO.FindList("colored", "backpack");
    if (Truth(first != ""))
    {
        UO.AddObject("colored_item", first);
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. ์‹ ์ฒด ์œ ํ˜• ๋ฐ ๋‹ค์–‘ํ•œ ์•…๋ช… ๊ฐ’ - ์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ๊ฐ ํ•ญ๋ชฉ์—์„œ ๋ˆ„๋ฝ๋œ ์ƒ‰์ƒ์€ hue์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. "5|6" ์ค„์—๋Š” ๋‘ ๊ฐœ์˜ ์•…๋ช… ์ฝ”๋“œ๊ฐ€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ํ•„ํ„ฐ๋Š” ์ผ๋ฐ˜ ํ’ˆ๋ชฉ์„ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰์€ ๊ณต๊ฒฉํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค Follow.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.ClearFindList("watch");
        UO.AddFindList("watch", 0x0190);
        UO.AddFindList("watch", 0x0191);
        var nearby = UO.FindList("watch", "ground", 12, "5|6", true, 10);
        if (Truth(nearby != ""))
        {
            UO.AddObject("watched_mobile", nearby);
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.AddFindList(list, type) โ€” UO.AddFindList(Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any), type (Any)

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "adddir":

                case "addfindlist":

                case "addgate":

                case "addrecall":

                case "addstep":

                    LegacyList(name).Add(string.Join("|", arguments.Select(value => value.ToString())));

                    break;

UO.AddFindList(list, type, color) โ€” UO.AddFindList(Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any), type (Any), color (Any)

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "adddir":

                case "addfindlist":

                case "addgate":

                case "addrecall":

                case "addstep":

                    LegacyList(name).Add(string.Join("|", arguments.Select(value => value.ToString())));

                    break;

UO.AddIgnoreList

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

void UO.AddIgnoreList(object? list, object? @type);
void UO.AddIgnoreList(object? list, object? @type, object? color);

๊ฒ€์ƒ‰ ์‹œ ๊ฑด๋„ˆ๋›ฐ์–ด์•ผ ํ•˜๋Š” ํ•ญ๋ชฉ์˜ ๋ช…๋ช…๋œ ์„ธํŠธ๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ธˆ์ƒ‰์„ ์„ ํƒํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ํŠน์ • ์ƒ‰์ƒ์˜ ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜์ง€ ๋งˆ์„ธ์š”. ๊ทœ์น™์€ type ๋ฐ hue๋กœ ์ง€์ •๋˜๋ฏ€๋กœ ๋‚˜์ค‘์— ๋‚˜ํƒ€๋‚˜๋Š” ๊ฐœ์ฒด๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ์ ํ•ฉํ•œ ๊ฐœ์ฒด์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์„ค์ • ํ›„ SelectIgnoreList๋ฅผ ํ†ตํ•ด ๋‹ค์ด์–ผ๋ง์„ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”.

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

  • list โ€” ๋น„์–ด ์žˆ์ง€ ์•Š์€ ์ž„์˜์˜ ์ด๋ฆ„(์˜ˆ: "loot_skip") ์ด๋ฆ„์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์•„์ดํ…œ์˜ ์ด๋ฆ„๋„, serial ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„๋„, FindList์˜ ์ด๋ฆ„๋„ ์•„๋‹™๋‹ˆ๋‹ค.
  • type - ์•„์ดํ…œ์˜ ๊ทธ๋ž˜ํ”ฝ/type ๋˜๋Š” body mobile. ์˜ˆ๋ฅผ ๋“ค์–ด 0x0EED๋Š” ๊ธˆ, 0x0191์€ ์—ฌ์„ฑ ์ธ์ฒด์ž…๋‹ˆ๋‹ค. ์ˆซ์ž ๋˜๋Š” ์ˆซ์ž ๋ฌธ์ž์—ด("0x0EED", "3821"); -1/๊ธฐํƒ€ ๋ถ€์ •/0xFFFF - ๋ชจ๋“  type. 65535๋ณด๋‹ค ํฐ ๊ฐ’์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ type์˜ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.
  • color - ์ƒ‰์กฐ: 0 - ๋ฌด์ƒ‰๋งŒ, 0x0044 - ์ •ํ™•ํ•œ ์ƒ‰์ƒ์˜ ์˜ˆ; ๋ถ€์ • ๋˜๋Š” 0xFFFF - ๋ชจ๋‘. 65535๋ณด๋‹ค ํฐ ๊ฐ’์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€์—์„œ ๊ธฐ๋ณธ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๊ทœ์น™ ๋‚ด์—์„œ ์œ ํ˜•๊ณผ hue์€ AND ์กฐ๊ฑด์œผ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ทœ์น™ - ๋˜๋Š”.

๋ฐ˜ํ™˜๊ฐ’

void - ๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค. var ๊ฒฐ๊ณผ = ๋ฐ ํ™•์ธ =true ์—†์ด ๋ณ„๋„์˜ ์ค„์— ์‚ฌ์šฉํ•˜์„ธ์š”. ์ด ๋ช…๋ น์€ ๋กœ์ปฌ ํ•„ํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ํ•ญ๋ชฉ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์„œ๋ฒ„์— ์•„๋ฌด ๊ฒƒ๋„ ๋ณด๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋™์ž‘

  • ํ˜„์žฌ ์„ ํƒ๋œ ๋ชฉ๋ก์— ๊ด€๊ณ„์—†์ด FIRST ์ธ์ˆ˜๋กœ ์ง€์ •๋œ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณต๋˜๋Š” ์ˆ˜์น˜์ ์œผ๋กœ ๋™์ผํ•œ ์Œ์€ ์ค‘๋ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ช…๋ช…๋œ ๋ชฉ๋ก์—๋Š” graphic/type + hue ๊ทœ์น™์ด ํฌํ•จ๋˜์–ด ์žˆ๊ณ  ์ผ๋ฐ˜ Ignore์—๋Š” ํŠน์ • serial ๊ทœ์น™์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ์„œ๋กœ ๋‹ค๋ฅธ ํ•„ํ„ฐ์ž…๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰์ด ์ง€์›๋˜๋ฉด ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ์ฒด๋Š” ๊ณ„์† ํ‘œ์‹œ๋˜๊ณ  ์ง์ ‘ UseObject/MoveItem์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” Hide ๋˜๋Š” ํ–‰์œ„ ๊ธˆ์ง€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
  • ๋ชฉ๋ก ์ด๋ฆ„์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ์ž๋ฆฌ ๊ณต๊ฐ„์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋ช…๋ช…๋œ ๋ชฉ๋ก์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ์ดˆ๊ธฐ์—๋Š” ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค. AddIgnoreList๋Š” ์ž๋™์œผ๋กœ ์„ ํƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. SelectIgnoreList("")์€ ๋ช…๋ช…๋œ ํ•„ํ„ฐ๋งŒ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทœ์น™์€ ์ถ”๊ฐ€๋œ ํ›„์— ์—…๋กœ๋“œ๋œ ํ•ญ๋ชฉ์„ ํฌํ•จํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฒ€์ƒ‰์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ์ˆ˜์‹ ๋œ ๋ฐฐ์—ด๊ณผ ์ด์ „ ๊ฒฐ๊ณผ FindCount๋Š” ์ƒˆ๋กœ์šด ๊ฒ€์ƒ‰์ด ์ด๋ฃจ์–ด์งˆ ๋•Œ๊นŒ์ง€ ๋‹ค์‹œ ๊ณ„์‚ฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ์ œ์™ธํ•˜๋ ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด -1,-1 ๊ทœ์น™์ด ์žˆ๋Š” ๋ชฉ๋ก์„ ์„ ํƒํ•˜์ง€ ๋งˆ์„ธ์š”.
  • ํ•„ํ„ฐ๋Š” FindType/FindTypeEx/FindTypesArrayEx, FindList, FindAtCoord, FindNotoriety, Count/CountEx ๋ฐ ํ™•์žฅ ์„ ํƒ ํ•ญ๋ชฉ GetMobiles, GetWorldItems, UseType์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. WaitTarget, Attack/AttackNearest/FindMan. includeIgnored=true(์ œ๊ณต๋œ ๊ฒฝ์šฐ)๋Š” serial ๋ฐ type/hue๋ฅผ ๋ชจ๋‘ ์šฐํšŒํ•ฉ๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ์—†๋Š” ์ „์ฒด ์—ด๊ฑฐํ˜• GetContent/GetEquipment, GetWorldItems() ๋ฐ ๋™์‚ฌ FindMobile(human,near,...) ๋Š” ์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • GetIgnoreList๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์ถ”๊ฐ€๋œ serial๋งŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ช…๋œ ๋ชฉ๋ก์˜ ํ–‰์€ ์ด ๋ฐฐ์—ด์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. IgnoreReset๋Š” ์ „์ฒด serial ํ•„ํ„ฐ๋ฅผ ์ง€์šฐ๊ณ , IgnoreOff(serial)๋Š” ํ•˜๋‚˜์˜ serial-์˜ˆ์™ธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ช…๋œ ๊ทœ์น™์€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ์—†๋Š” ClearIgnoreList()๋Š” ๋‘ ๋ณด๊ธฐ๋ฅผ ๋ชจ๋‘ ์ง€์›๋‹ˆ๋‹ค.
  • ์ƒํƒœ๋Š” ํด๋ผ์ด์–ธํŠธ ํ”„๋กœํ•„ ์Šคํฌ๋ฆฝํŠธ์˜ ์ผ๋ฐ˜ ์ƒํƒœ์— ์†ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ด ์ƒํƒœ์˜ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์„ค์ •์€ ์ €์žฅ๋œ ์Šค๋ƒ…์ƒท์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ทœ์น™์„ ๋ณ€๊ฒฝํ•œ ํ›„ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ๋Š” ์ด๋ฏธ ์ด์ „์— ์ฐ์€ ์Šค๋ƒ…์ƒท์œผ๋กœ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ฒ€์ƒ‰์—์„œ๋Š” ์—…๋ฐ์ดํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๋ช…๋ น์€ ๋…๋ฆฝ๋œ ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•ž์˜ ๋ฉ”์‹œ์ง€๋Š” ํ˜ธ์ถœ ์‹œ์ž‘์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์„œ๋ฒ„ ๋™์ž‘์˜ ์™„๋ฃŒ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

UO.Print("Calling UO.AddIgnoreList");
UO.AddIgnoreList("simple_skip", 0x0EED);

1. ์ง€์ƒ ํƒ์ƒ‰ ์‹œ ๋ชจ๋“  ๊ณจ๋“œ ์Šคํƒ ๊ฑด๋„ˆ๋›ฐ๊ธฐ - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • loot_skip โ€” ์ด๋ฆ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๋ฝ๋œ ์ƒ‰์ƒ์€ hue๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. FindType๋Š” 16์ง„์ˆ˜ ๋ฌธ์ž์—ด ID ๋˜๋Š” ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ฒฐ๊ณผ๋Š” next_loot์— ์ €์žฅ๋˜๊ณ  ํ•ญ๋ชฉ์€ ์ด๋™๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ† ์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด mobile๋„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
UO.AddIgnoreList("loot_skip", 0x0EED);
UO.SelectIgnoreList("loot_skip");
var item = UO.FindType(-1, -1, "ground");
if (Truth(item == ""))
{
    UO.Print("No unignored ground object found");
    return null;
}
UO.AddObject("next_loot", item);

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. ํ•œ ๊ฐ€์ง€ ์ƒ‰์ƒ์˜ ๊ฐ€์šด๋งŒ ์ œ์™ธ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • 0x1F03 - graphic ๋กœ๋ธŒ; 0x0044๋Š” ๋ณดํ˜ธ๋œ ์ƒ‰์ƒ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ hue์˜ Robu ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์•Œ๋ ค์ง„ ID์— ์˜ํ•œ ์ง์ ‘์ ์ธ MoveItem๊ฐ€ ์•„๋‹Œ ํ•„ํ„ฐ๋ง ๊ฒ€์ƒ‰์„ ํ†ตํ•œ ์„ ํƒ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ๋ฉ๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    UO.AddIgnoreList("keep_colored", 0x1F03, 0x0044);
    UO.SelectIgnoreList("keep_colored");
    var robe = UO.FindType(0x1F03, -1, "backpack");
    if (Truth(robe != ""))
    {
        UO.AddObject("candidate_robe", robe);
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. ๋‘ ๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ ์„ธํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ํ•˜๋‚˜(์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค)๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ๊ทœ์น™์€ ๋‘ ๋ชฉ๋ก ๋ชจ๋‘์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ธˆ๊ณผ ๋กœ๋ธŒ๋ฅผ ๋™์‹œ์— ์ œ์™ธํ•˜๋ ค๋ฉด ๋™์ผํ•œ ๋ชฉ๋ก์— type๋ฅผ ๋ชจ๋‘ ์ถ”๊ฐ€ํ•˜์„ธ์š”.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.AddIgnoreList("skip_gold", 0x0EED);
        UO.AddIgnoreList("skip_robes", 0x1F03);
        UO.SelectIgnoreList("skip_gold");
        UO.SelectIgnoreList("skip_robes");
        return null;
    }
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.AddIgnoreList(list, type) โ€” UO.AddIgnoreList(Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any), type (Any)

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "addignorelist":

                    state.IgnoreTypeLists.Add(Text(0), ResolveType(arguments[1]),

                        arguments.Length > 2 ? NumberConversions.ToInt(arguments[2]) : -1);

                    break;

UO.AddIgnoreList(list, type, color) โ€” UO.AddIgnoreList(Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any), type (Any), color (Any)

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "addignorelist":

                    state.IgnoreTypeLists.Add(Text(0), ResolveType(arguments[1]),

                        arguments.Length > 2 ? NumberConversions.ToInt(arguments[2]) : -1);

                    break;

UO.ClearBadLocationList

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

void UO.ClearBadLocationList();

SetBadLocation์— ์˜ํ•ด ์ €์žฅ๋œ ๋ชจ๋“  ์Œ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

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

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

void - ๋ฐ˜ํ™˜ ๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ํšŒ์„ ์œผ๋กœ ์ „ํ™”ํ•˜์„ธ์š”. true/false ๋˜๋Š” ๊ฑธ์Œ ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋™์ž‘

  • ์„œ๋ฒ„์˜ ์ง€๋„, ์บ๋ฆญํ„ฐ, ์žฅ์• ๋ฌผ์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋Ÿฐํƒ€์ž„ ๋ชฉ๋ก๋งŒ ์ง€์›Œ์ง‘๋‹ˆ๋‹ค.
  • ์ด๋ฏธ ์ˆ˜์‹ ๋œ ๊ฒฝ๋กœ ๋ฐฐ์—ด๊ณผ ์šดํ–‰ ๊ฒฝ๋กœ ๊ธˆ์ง€ ์Šค๋ƒ…์ƒท์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ๋ ค๋ฉด ๊ฒฝ๋กœ ์š”์ฒญ์„ ๋ฐ˜๋ณตํ•˜๊ฑฐ๋‚˜ ์ด๋™์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์„ธ์š”. ๋ชฉ๋ก SetBadObject์€ ๋ณ„๋„๋กœ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๋ช…๋ น์€ ๋…๋ฆฝ๋œ ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•ž์˜ ๋ฉ”์‹œ์ง€๋Š” ํ˜ธ์ถœ ์‹œ์ž‘์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์„œ๋ฒ„ ๋™์ž‘์˜ ์™„๋ฃŒ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

UO.Print("Calling UO.ClearBadLocationList");
UO.ClearBadLocationList();

1. ๋ชฉ๋ก ์ง€์šฐ๊ธฐ - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ฐ˜ํ™˜ ๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค.
UO.ClearBadLocationList();

2. ์ƒˆ๋กœ์šด ๊ธˆ์ง€ ์„ธํŠธ ์‹œ์ž‘ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ๋จผ์ € ์ด์ „ ์Œ์ด ์‚ญ์ œ๋œ ๋‹ค์Œ ์ƒˆ ์Œ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  • ์ด๋Š” ๋ฌผ๋ฆฌ์  ์žฅ์• ๋ฌผ์ด๋‚˜ ํด๋ผ์ด์–ธํŠธ ์นด๋“œ ๋ณ€๊ฒฝ์ด ์•„๋‹™๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    UO.ClearBadLocationList();
    UO.SetBadLocation(1445, 1690);
    return null;
}

3. ์ฒญ์†Œ ํ›„ ๋ฐ˜๋ณต ๊ณ„์‚ฐ - ์‹œ๋‚˜๋ฆฌ์˜ค ์ˆ˜์—…

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ๋ชฉํ‘œ๋Š” ๋™์ชฝ์œผ๋กœ 4๊ฐœ ์…€, ์ตœ์ ํ™”=true, ์ •ํ™•๋„=0์ž…๋‹ˆ๋‹ค.
  • ์‚ญ์ œ ํ›„ ๋นˆ ๋ฐฐ์—ด์€ ์ผ๋ฐ˜์ ์ธ ์žฅ์• ๋ฌผ์ด๋‚˜ ๊ฒ€์ƒ‰ ์ œํ•œ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.ClearBadLocationList();
        var path = UO.GetPathArray(UO.GetX() + 4, UO.GetY(), true, 0);
        if (Truth(ArrayLength(path) == 0))
        {
            UO.Print("No complete path under current constraints");
        }

        return null;
    }

    int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.ClearBadLocationList() โ€” UO.ClearBadLocationList()

๋งค๊ฐœ๋ณ€์ˆ˜: ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "clearbadlocationlist": state.BadLocations.Clear(); return InjectionValue.Unit;

UO.ClearBadObjectList

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

void UO.ClearBadObjectList();

ํ˜„์žฌ ๋Ÿฐํƒ€์ž„์—์„œ SetBadObject์— ์˜ํ•ด ์ถ”๊ฐ€๋œ ๋ชจ๋“  type/hue/radius ๊ทœ์น™์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

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

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

void - ๋ฐ˜ํ™˜ ๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ํšŒ์„ ์œผ๋กœ ์ „ํ™”ํ•˜์„ธ์š”. true/false ๋˜๋Š” ๊ฑธ์Œ ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋™์ž‘

  • ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ชฉ๋ก์ด ๋น„์–ด ์žˆ์„ ๋•Œ ๋‹ค์‹œ ์ „ํ™”ํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.
  • SetBadLocation๋ฅผ ์ •ํ™”ํ•˜๊ฑฐ๋‚˜ ์ž์—ฐ์ ์ธ ์žฅ์• ๋ฌผ์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ด๋™์ด๋‚˜ ๊ฒฝ๋กœ ์š”์ฒญ์€ ์ง€์›Œ์ง„ ๋ชฉ๋ก์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์— ์‹œ์ž‘๋œ ๊ฒฝ๋กœ๋Š” ์ž์ฒด ์Šค๋ƒ…์ƒท์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๋ช…๋ น์€ ๋…๋ฆฝ๋œ ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•ž์˜ ๋ฉ”์‹œ์ง€๋Š” ํ˜ธ์ถœ ์‹œ์ž‘์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์„œ๋ฒ„ ๋™์ž‘์˜ ์™„๋ฃŒ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

UO.Print("Calling UO.ClearBadObjectList");
UO.ClearBadObjectList();

1. ํ•ญ๋ชฉ ๊ทœ์น™ ์žฌ์„ค์ • - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ๋…ผ์Ÿ์ด ์—†์Šต๋‹ˆ๋‹ค. ํ†ตํ™”๋Š” ๋ณ„๋„์˜ ํšŒ์„ ์— ๋…น์Œ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ true/false๊ฐ€ ์—†๊ณ  ์‚ญ์ œ๋œ ๊ทœ์น™๋„ ์—†์Šต๋‹ˆ๋‹ค.
UO.ClearBadObjectList();

2. ๊ทœ์น™ ์„ธํŠธ ๋ฐ”๊พธ๊ธฐ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ํด๋ฆฌ์–ด ํ›„์—๋Š” ๋ชจ๋“  ์ƒ‰์ƒ์˜ type=0x398C๋งŒ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  • Radius=2๋Š” ๋‹ค์Œ ๊ฒฝ๋กœ์—์„œ ์ ํ•ฉํ•œ ํ•ญ๋ชฉ ์ฃผ๋ณ€์˜ 5ร—5 ์‚ฌ๊ฐํ˜•์„ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    UO.ClearBadObjectList();
    UO.SetBadObject(0x398C, -1, 2);
    return null;
}

3. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ธˆ์ง€๋ฅผ ์™„์ „ํžˆ ์žฌ์„ค์ •ํ•œ ํ›„ ๊ฒฝ๋กœ ๋‹ค์‹œ ๊ณ„์‚ฐ - ์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ๋‘ ๋ชฉ๋ก์€ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค. ๋‘ ๋ช…๋ น ๋ชจ๋‘ ๋ชจ๋‘ ์žฌ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
  • ๋™์ชฝ์— ์žˆ๋Š” ์„ธ ๊ฐœ์˜ ์‚ฌ๊ฐํ˜•์€ ํ‘œ์ ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ง€๋„ ํ†ตํ–‰์„ฑ, ๊ณ ๋„ ๋ฐ ๊ฒ€์ƒ‰ ์ œํ•œ์€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋นˆ ๋ฐฐ์—ด์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์œ ํšจํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.ClearBadObjectList();
        UO.ClearBadLocationList();
        var path = UO.GetPathArray(UO.GetX() + 3, UO.GetY(), true, 0);
        UO.Print(Convert.ToString(ArrayLength(path)));
        return null;
    }

    int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.ClearBadObjectList() โ€” UO.ClearBadObjectList()

๋งค๊ฐœ๋ณ€์ˆ˜: ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "clearbadobjectlist": state.BadObjects.Clear(); return InjectionValue.Unit;

UO.ClearFindList

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

void UO.ClearFindList();
void UO.ClearFindList(object? list);

ํ˜„์žฌ ๋Ÿฐํƒ€์ž„์˜ ๋ช…๋ช…๋œ ๊ฒ€์ƒ‰ ์„ธํŠธ ํ•˜๋‚˜ ๋˜๋Š” ๋ชจ๋“  ์„ธํŠธ AddFindList์˜ ์ •์˜๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๊ทœ์น™์ด ์Œ“์ด๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•„ํ„ฐ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๊ธฐ ์ „์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

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

  • list โ€” ๊ทœ์น™ ์„ธํŠธ์˜ ์ด๋ฆ„(์˜ˆ: "loot") | ์—†์ด ๋ฌธ์ž์—ด์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ž๋Š” ๋ ˆ์ฝ”๋“œ ๋‚ด์—์„œ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” serial ์ปจํ…Œ์ด๋„ˆ๋‚˜ ๋ฐœ๊ฒฌ๋œ ํ•ญ๋ชฉ์˜ ๋ฐฐ์—ด์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ๋ˆ„๋ฝ๋˜๋ฉด ์ด ๋Ÿฐํƒ€์ž„์—์„œ AddFindList์˜ ๋ชจ๋“  ์ •์˜๊ฐ€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

void: ๋ฐ˜ํ™˜ ๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค. ํ˜ธ์ถœ์„ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜์ง€ ๋ง๊ณ  true/1์—์„œ ํ…Œ์ŠคํŠธํ•˜์ง€ ๋งˆ์„ธ์š”. ์ •์˜ ์ƒํƒœ๋Š” UO.InfoFindList()๋กœ ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰ ์ž์ฒด๋Š” UO.FindList()์„ ํ†ตํ•ด ๋ณ„๋„๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

๋™์ž‘

  • ์ •์˜๋Š” ์ง€์ •๋œ ์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„ ์ƒํƒœ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋…๋ฆฝ์ ์ธ ๋‹ค๋ฅธ ๋Ÿฐํƒ€์ž„์—๋Š” ์ž์ฒด ์„ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. IDE ์ฐฝ์„ ๋‹ซ์•„๋„ ์ด๋Ÿฌํ•œ ๊ทœ์น™์€ ์ง€์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์„ค์ • ํŒŒ์ผ์ด๋‚˜ ์ „์—ญ ๊ฒŒ์ž„ ๊ฐœ์ฒด ๋ชฉ๋ก์ด ์•„๋‹™๋‹ˆ๋‹ค.
  • AddFindList ํ•ญ๋ชฉ์„ ๋์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณต์€ ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‚คํŠธ๋ฅผ ๋‹ค์‹œ ํ”„๋กœ๋น„์ €๋‹ํ•˜๋ ค๋ฉด ๋จผ์ € ClearFindList("name")์œผ๋กœ ์ „ํ™”ํ•˜์„ธ์š”. ์ •์˜๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ์ด๋ฏธ ์ˆ˜์‹ ๋œ FindItem/FindCount/GetFoundItems๋Š” ์ง€์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ ˆ์ฝ”๋“œ๋Š” ํ…์ŠคํŠธ ํ•„๋“œ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด 0x0EED์€ "3821"๋กœ ์ €์žฅ๋˜๊ณ , ๋ฌธ์ž์—ด "0x0EED"์€ "0x0EED"๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰์€ ๋‘ ์˜ต์…˜์„ ๋ชจ๋‘ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  DeleteFindList๋Š” ์ €์žฅ๋œ ํ…์ŠคํŠธ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ์‹œ์—๋„ ๋™์ผํ•œ ์–‘์‹์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • FindList์˜ ์•Œ ์ˆ˜ ์—†๋Š” ์ด๋ฆ„์€ ๋นˆ ๋“ฑ๋ก ์„ธํŠธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์—”์ง„์€ ์ด๋ฅผ ์ˆซ์ž ์œ ํ˜• ๋ชฉ๋ก์œผ๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€ํ™˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•œ ํ›„ ํ•ด๋‹น ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์ „์— ์ƒˆ ์„ธํŠธ๋ฅผ ๋งŒ๋“œ์‹ญ์‹œ์˜ค.
  • ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ด๋ฆ„์€ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์€ ๊ฒŒ์ž„ ์•„์ดํ…œ์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ Ignore๋ฅผ ์ง€์šฐ๊ฑฐ๋‚˜ ์ด๋™์„ ์ทจ์†Œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๋ช…๋ น์€ ๋…๋ฆฝ๋œ ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•ž์˜ ๋ฉ”์‹œ์ง€๋Š” ํ˜ธ์ถœ ์‹œ์ž‘์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์„œ๋ฒ„ ๋™์ž‘์˜ ์™„๋ฃŒ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

UO.Print("Calling UO.ClearFindList");
UO.ClearFindList();

1. ํ•œ ์„ธํŠธ ์žฌ๊ตฌ์„ฑ - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • BuildLoot ๋‚ด๋ถ€์—์„œ๋Š” ์ „๋ฆฌํ’ˆ๋งŒ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ์ด ์Šคํฌ๋ฆฝํŠธ์˜ ๋‹ค๋ฅธ ๋ช…๋ช…๋œ ์„ธํŠธ๋Š” ๋ณด์กด๋ฉ๋‹ˆ๋‹ค.
BuildLoot();
BuildLoot();
UO.InfoFindList();

void BuildLoot()
{
    UO.ClearFindList("loot");
    UO.AddFindList("loot", 0x0EED, -1);
    UO.AddFindList("loot", 0x0F7A, -1);
}

2. ๊ณ„์ ˆ ์„ธํŠธ ๊ต์ฒด, ์˜ˆ๋น„ ์œ ์ง€ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • SEASON ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋น„ ์ž”์•ก; ์‹œ์ฆŒ์—๋Š” ์ด์ œ ์ƒˆ๋กœ์šด type/hue๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ฆฌ ํ›„ ๊ธฐ๋ก์ด ๋จผ์ € ์ถ”๊ฐ€๋œ ํ›„ ์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    UO.AddFindList("reserve", 0x0EED);
    UO.AddFindList("season", 0x0F7A);
    UO.ClearFindList("SEASON");
    UO.AddFindList("season", 0x0EED, 0x0044);
    UO.InfoFindList();
    return null;
}

3. ์ƒˆ ์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“œ ์ „ ์ „์ฒด ์žฌ์„ค์ • - ์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ClearFindList()๋Š” ํ˜„์žฌ ๋Ÿฐํƒ€์ž„์˜ ๋ชจ๋“  ์ •์˜์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ”„๋กœ์‹œ์ €์—๋Š” ์ž์ฒด ์ด๋ฆ„์ด ์ง€์ •๋œ ํ˜•์‹์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.AddFindList("old_loot", 0x0EED);
        UO.AddFindList("old_watch", 0x0190);
        UO.AddFindList("old_watch", 0x0191);
        UO.ClearFindList();
        UO.AddFindList("current", 0x0F7A, -1);
        var found = UO.FindList("current", "backpack");
        if (Truth(found != ""))
        {
            UO.AddObject("current_supply", found);
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.ClearFindList() โ€” UO.ClearFindList()

๋งค๊ฐœ๋ณ€์ˆ˜: ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "clearfindlist":

                    if (arguments.Length == 0) LegacyList("AddFindList").Clear();

                    else LegacyList("AddFindList").RemoveAll(value => value.Split('|')[0]

                        .Equals(Text(0), StringComparison.OrdinalIgnoreCase));

                    break;

UO.ClearFindList(list) โ€” UO.ClearFindList(Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any)

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "clearfindlist":

                    if (arguments.Length == 0) LegacyList("AddFindList").Clear();

                    else LegacyList("AddFindList").RemoveAll(value => value.Split('|')[0]

                        .Equals(Text(0), StringComparison.OrdinalIgnoreCase));

                    break;

UO.ClearIgnoreList

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

void UO.ClearIgnoreList();
void UO.ClearIgnoreList(object? list);

๊ฒ€์ƒ‰ ์˜ˆ์™ธ๋ฅผ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„ ํฌํ•จ - ๋‹จ ํ•˜๋‚˜์˜ ์„ธํŠธ type/hue. ์ธ์ˆ˜ ์—†์Œ - ๋ชจ๋“  ๋ช…๋ช…๋œ ์ง‘ํ•ฉ๊ณผ Ignore๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€๋œ ๋ชจ๋“  serial. ๊นจ๋—ํ•œ ๊ทœ์น™์œผ๋กœ ์ƒˆ๋กœ์šด ์ •๋ ฌ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

  • list โ€” ๋น„์–ด ์žˆ์ง€ ์•Š์€ ์ž„์˜์˜ ์ด๋ฆ„(์˜ˆ: "loot_skip") ์ด๋ฆ„์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์•„์ดํ…œ์˜ ์ด๋ฆ„๋„, serial ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„๋„, FindList์˜ ์ด๋ฆ„๋„ ์•„๋‹™๋‹ˆ๋‹ค. ์„ ํƒ ๊ณผ๋ชฉ. ์ด ํ•ญ๋ชฉ์ด ์—†๋‹ค๋Š” ๊ฒƒ์€ ํ™œ์„ฑ ๋ชฉ๋ก๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ผ๋ฐ˜์ ์ธ ์žฌ์„ค์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

void - ๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค. var ๊ฒฐ๊ณผ = ๋ฐ ํ™•์ธ =true ์—†์ด ๋ณ„๋„์˜ ์ค„์— ์‚ฌ์šฉํ•˜์„ธ์š”. ์ด ๋ช…๋ น์€ ๋กœ์ปฌ ํ•„ํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ํ•ญ๋ชฉ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์„œ๋ฒ„์— ์•„๋ฌด ๊ฒƒ๋„ ๋ณด๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋™์ž‘

  • ClearIgnoreList("์ด๋ฆ„")์€ ๊ฒฐ๊ณผ์ ์œผ๋กœ DeleteIgnoreList("์ด๋ฆ„")๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋นˆ ๋ฌธ์ž์—ด์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ  ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด SelectIgnoreList("")๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • ๋ช…๋ช…๋œ ๋ชฉ๋ก์—๋Š” graphic/type + hue ๊ทœ์น™์ด ํฌํ•จ๋˜์–ด ์žˆ๊ณ  ์ผ๋ฐ˜ Ignore์—๋Š” ํŠน์ • serial ๊ทœ์น™์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ์„œ๋กœ ๋‹ค๋ฅธ ํ•„ํ„ฐ์ž…๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰์ด ์ง€์›๋˜๋ฉด ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ์ฒด๋Š” ๊ณ„์† ํ‘œ์‹œ๋˜๊ณ  ์ง์ ‘ UseObject/MoveItem์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” Hide ๋˜๋Š” ํ–‰์œ„ ๊ธˆ์ง€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
  • ๋ชฉ๋ก ์ด๋ฆ„์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ์ž๋ฆฌ ๊ณต๊ฐ„์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋ช…๋ช…๋œ ๋ชฉ๋ก์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ์ดˆ๊ธฐ์—๋Š” ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค. AddIgnoreList๋Š” ์ž๋™์œผ๋กœ ์„ ํƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. SelectIgnoreList("")์€ ๋ช…๋ช…๋œ ํ•„ํ„ฐ๋งŒ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทœ์น™์€ ์ถ”๊ฐ€๋œ ํ›„์— ์—…๋กœ๋“œ๋œ ํ•ญ๋ชฉ์„ ํฌํ•จํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฒ€์ƒ‰์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ์ˆ˜์‹ ๋œ ๋ฐฐ์—ด๊ณผ ์ด์ „ ๊ฒฐ๊ณผ FindCount๋Š” ์ƒˆ๋กœ์šด ๊ฒ€์ƒ‰์ด ์ด๋ฃจ์–ด์งˆ ๋•Œ๊นŒ์ง€ ๋‹ค์‹œ ๊ณ„์‚ฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ์ œ์™ธํ•˜๋ ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด -1,-1 ๊ทœ์น™์ด ์žˆ๋Š” ๋ชฉ๋ก์„ ์„ ํƒํ•˜์ง€ ๋งˆ์„ธ์š”.
  • ํ•„ํ„ฐ๋Š” FindType/FindTypeEx/FindTypesArrayEx, FindList, FindAtCoord, FindNotoriety, Count/CountEx ๋ฐ ํ™•์žฅ ์„ ํƒ ํ•ญ๋ชฉ GetMobiles, GetWorldItems, UseType์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. WaitTarget, Attack/AttackNearest/FindMan. includeIgnored=true(์ œ๊ณต๋œ ๊ฒฝ์šฐ)๋Š” serial ๋ฐ type/hue๋ฅผ ๋ชจ๋‘ ์šฐํšŒํ•ฉ๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ์—†๋Š” ์ „์ฒด ์—ด๊ฑฐํ˜• GetContent/GetEquipment, GetWorldItems() ๋ฐ ๋™์‚ฌ FindMobile(human,near,...) ๋Š” ์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • GetIgnoreList๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์ถ”๊ฐ€๋œ serial๋งŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ช…๋œ ๋ชฉ๋ก์˜ ํ–‰์€ ์ด ๋ฐฐ์—ด์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. IgnoreReset๋Š” ์ „์ฒด serial ํ•„ํ„ฐ๋ฅผ ์ง€์šฐ๊ณ , IgnoreOff(serial)๋Š” ํ•˜๋‚˜์˜ serial-์˜ˆ์™ธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ช…๋œ ๊ทœ์น™์€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ์—†๋Š” ClearIgnoreList()๋Š” ๋‘ ๋ณด๊ธฐ๋ฅผ ๋ชจ๋‘ ์ง€์›๋‹ˆ๋‹ค.
  • ์ƒํƒœ๋Š” ํด๋ผ์ด์–ธํŠธ ํ”„๋กœํ•„ ์Šคํฌ๋ฆฝํŠธ์˜ ์ผ๋ฐ˜ ์ƒํƒœ์— ์†ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ด ์ƒํƒœ์˜ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์„ค์ •์€ ์ €์žฅ๋œ ์Šค๋ƒ…์ƒท์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ทœ์น™์„ ๋ณ€๊ฒฝํ•œ ํ›„ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ๋Š” ์ด๋ฏธ ์ด์ „์— ์ฐ์€ ์Šค๋ƒ…์ƒท์œผ๋กœ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ฒ€์ƒ‰์—์„œ๋Š” ์—…๋ฐ์ดํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๋ช…๋ น์€ ๋…๋ฆฝ๋œ ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•ž์˜ ๋ฉ”์‹œ์ง€๋Š” ํ˜ธ์ถœ ์‹œ์ž‘์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์„œ๋ฒ„ ๋™์ž‘์˜ ์™„๋ฃŒ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

UO.Print("Calling UO.ClearIgnoreList");
UO.ClearIgnoreList();

1. ์ž„์‹œ ์„ธํŠธ๋ฅผ ์ง€์šฐ๊ณ  ๋‚˜๋จธ์ง€๋Š” ์œ ์ง€ - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ์ž„์‹œ๋กœ ์ œ๊ฑฐ๋˜์—ˆ์œผ๋ฉฐ, ๋กœ๋ธŒ๋Š” ๊ณ„์† ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ๋ชฉ๋ก serial์€ ์ง€์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
UO.AddIgnoreList("temporary", 0x0EED);
UO.AddIgnoreList("keep", 0x1F03);
UO.ClearIgnoreList("temporary");
UO.SelectIgnoreList("keep");

2. ์ด์ „ ์˜ˆ์™ธ ์—†์ด ๊ฒ€์ƒ‰ ์‹œ์ž‘ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ์ธ์ˆ˜๊ฐ€ ์—†์œผ๋ฉด ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ์˜ˆ์™ธ๊ฐ€ ๋ชจ๋‘ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ณ€์ˆ˜/๋ฐฐ์—ด์€ ์ง€์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด FindType๋Š” ๊ฒฐ๊ณผ๋ฅผ ์žฌ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    UO.ClearIgnoreList();
    var item = UO.FindType(0x0EED, -1, "ground");
    if (Truth(item != ""))
    {
        UO.AddObject("fresh_gold", item);
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. ์„ธํŠธ ๋‚ด์šฉ ๋ฐ”๊พธ๊ธฐ - ์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ์ƒˆ๋กœ์šด ์ •๋ ฌ ๊ทœ์น™์ด ์ถ”๊ฐ€๋˜๊ธฐ ์ „์— ์ด์ „ ์ •๋ ฌ ๊ทœ์น™์ด ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ธˆ์ƒ‰๊ณผ ๋กœ๋ธŒ์˜ 0x0044 ์ƒ‰์ƒ๋งŒ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ๋ช…๋ น ์‚ฌ์ด์—์„œ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ค‘๊ฐ„ ์ƒํƒœ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.ClearIgnoreList("sorting");
        UO.AddIgnoreList("sorting", 0x0EED);
        UO.AddIgnoreList("sorting", 0x1F03, 0x0044);
        UO.SelectIgnoreList("sorting");
        return null;
    }
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.ClearIgnoreList() โ€” UO.ClearIgnoreList()

๋งค๊ฐœ๋ณ€์ˆ˜: ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "clearignorelist":

                    if (arguments.Length == 0)

                    {

                        IgnoreReset();

                        state.IgnoreTypeLists.Clear();

                    }

                    else

                        state.IgnoreTypeLists.Remove(Text(0));

                    break;

UO.ClearIgnoreList(list) โ€” UO.ClearIgnoreList(Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any)

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "clearignorelist":

                    if (arguments.Length == 0)

                    {

                        IgnoreReset();

                        state.IgnoreTypeLists.Clear();

                    }

                    else

                        state.IgnoreTypeLists.Remove(Text(0));

                    break;

UO.Count

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

int UO.Count(object? @type);
int UO.Count(object? @type, object? color);
int UO.Count(object? @type, object? color, object? container);

๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ฐพ์€ ํ•ญ๋ชฉ์˜ ๋‹จ์œ„๋ฅผ ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค.

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

  • type - ํ•ญ๋ชฉ์˜ ๊ทธ๋ž˜ํ”ฝ/type(์˜ˆ: 0x0EED), serial ์•„๋‹˜. -1 ๋˜๋Š” 0xFFFF - ๋ชจ๋“  type.
  • color โ€” ํ•ญ๋ชฉ์˜ ์ƒ‰์ƒ; -1 ๋˜๋Š” 0xFFFF - ๋ชจ๋“  ์ƒ‰์ƒ. Count(type) ๋ฐ CountGround(type)์—์„œ ๊ธฐ๋ณธ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.
  • container - Count(type,color,container): my ๋˜๋Š” ์ˆซ์ž -1 - ๋ฃจํŠธ ์†Œ์œ ์ž๊ฐ€ self์ธ ๋ชจ๋“  ํ•ญ๋ชฉ(์žฅ๋น„ ๋ฐ ์ค‘์ฒฉ ๊ฐ€๋ฐฉ ํฌํ•จ) backpack/serial โ€” ์ง€์ •๋œ ์ปจํ…Œ์ด๋„ˆ์˜ ์ฝ˜ํ…์ธ ๊ฐ€ ์žฌ๊ท€์ ์ž…๋‹ˆ๋‹ค. UO.Ground(), ๋ช…์‹œ์  0/"0", ground ๋˜๋Š” 1 - ์ง€์ƒ์— ์žˆ๋Š” ์•„์ดํ…œ๊ณผ ๋ชจ๋ฐ”์ผ. CountEx์—์„œ ์ˆซ์ž -1 ๋ฐ 0xFFFFFFFF๋„ ์ง€๋ฉด์„ ์˜๋ฏธํ•˜์ง€๋งŒ ์ฝ˜ํฌ๋ฆฌํŠธ serial๋Š” ์ง์ ‘์ ์ธ ๋‚ด์šฉ๋งŒ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. CountEx๋Š” backpack์„ ์ทจํ•˜๊ณ  ์ด๋ฆ„์€ AddObject๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์•Œ ์ˆ˜ ์—†๋Š” ์ด๋ฆ„์œผ๋กœ ์ธํ•ด ์Šคํฌ๋ฆฝํŠธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— ๊ฒฐ๊ณผ serial๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๋ช…์‹œ์ ์ธ null์€ ๋ˆ„๋ฝ๋œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋‹Œ ์ ‘์ง€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

int โ€” ๋ฐœ๊ฒฌ๋œ ํ•ญ๋ชฉ์˜ ์ตœ๋Œ€ ํ•ฉ๊ณ„(1, Amount); ๋ชจ๋“  ๋ชจ๋ฐ”์ผ์—๋Š” 1๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. 0 ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์Šคํƒ ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์œ ๋‹› ์ˆ˜์ž…๋‹ˆ๋‹ค. FindItem, FindCount, FindFullQuantity, GetFoundItems๊ฐ€ ๋™์‹œ์— ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

๋™์ž‘

  • Count๋Š” ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์žฅ๋น„ ๋ฐ ์ค‘์ฒฉ๋œ ๊ฐ€๋ฐฉ์„ ํฌํ•จํ•˜์—ฌ self๊ฐ€ ์†Œ์œ ํ•œ ํ•ญ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. CountGround๋Š” ์ผ์น˜ํ•˜๋Š” ๋ชจ๋ฐ”์ผ์„ ํฌํ•จํ•˜์—ฌ ํ•ญ์ƒ ํ† ์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•˜์ง€๋งŒ self๋Š” ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.
  • Count(type,color,serial)๋Š” ์ค‘์ฒฉ๋œ ๋ฐฑ์„ ์šฐํšŒํ•˜๊ณ , CountEx(type,color,serial) - ์ง์ ‘ ์ฝ˜ํ…์ธ ๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ œ์•ฝ ์กฐ๊ฑด FindDistance/FindVertical๋Š” ํ† ์ง€์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. Ignore ๋ฐœ๊ฒฌ๋œ ๋ฌผ์ฒด์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ๋Š” ์ด๋ฏธ ๋ฐ›์€ ์ปจํ…Œ์ด๋„ˆ์˜ ๋‚ด์šฉ๋ฌผ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ „์ฒด ์ธ๋ฒคํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ž๋™ ์—ด๊ธฐ ๋˜๋Š” ์„œ๋ฒ„ ์š”์ฒญ์€ ์—†์Šต๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋ฅผ ์ €๋„์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋ฅผ bool๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐฐ์—ด์ด๋ฉด ์š”์†Œ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

var result = UO.Count(0x0EED, -1, "backpack");
UO.Print("Count: " + Convert.ToString(result));

1. ๊ธˆ ๋‹จ์œ„ ๊ณ„์‚ฐ - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • type=0x0EED, ์ƒ‰์ƒ=-1. ์ง€์—ญ - ๋ฐฐ๋‚ญ; ์žฌ๊ท€์„ฑ ์ฐจ์ด Count/CountEx๋ฅผ ๊ณ ๋ คํ•˜์„ธ์š”.
  • 1000 dast ๋‹จ์œ„=1000์—์„œ ํ•œ ๋ฐœ, 1๊ฐ€ ์•„๋‹˜.
var units = UO.Count(0x0EED, -1, "backpack");
UO.Print("Units: " + Convert.ToString(units));

2. ๋‹จ์œ„ ๋ฐ ๊ฐœ์ฒด ์ˆ˜๋ฅผ ๋ณ„๋„๋กœ ํ‘œ์‹œ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • FindCount๋Š” Count ์งํ›„, ๋‹ค๋ฅธ ๊ฒ€์ƒ‰ ์ „์— ์ฝํ˜€์ง‘๋‹ˆ๋‹ค.
  • 50 ๋‘ ๊ฐœ์˜ ์Šคํƒ์€ 2 ์•„์ดํ…œ๊ณผ 100 ์œ ๋‹›์„ ์ƒ์‚ฐํ•ฉ๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    var units = UO.Count(0x0EED, -1, "backpack");
    var items = UO.FindCount();
    UO.Print(Convert.ToString(items) + " items, " + Convert.ToString(units) + " units");
    return null;
}

3. ์ˆ˜๋Ÿ‰์ด ์ถฉ๋ถ„ํ•œ ๊ฒฝ์šฐ์—๋งŒ ๊ณ„์† ์ง„ํ–‰ - ์‹œ๋‚˜๋ฆฌ์˜ค ์ˆ˜์—…

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • 100๋Š” ์ด ์˜ˆ์—์„œ ๋‹จ์œ„ ์ž„๊ณ„๊ฐ’์ž…๋‹ˆ๋‹ค.
  • ์ด๋Š” ์ƒํ’ˆ ์˜ˆ์•ฝ์ด ์•„๋‹Œ ์Šค๋ƒ…์ƒท ํ™•์ธ์ž…๋‹ˆ๋‹ค. ๊ฒ€ํ†  ํ›„ ์ „์†ก ์‚ฌ์ด์— ์ˆ˜๋Ÿ‰์€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var units = UO.Count(0x0EED, -1, "backpack");
        if (Truth(units >= 100))
        {
            UO.Print("Enough units known to the client");
        }
        else
        {
            UO.Print("Not enough known units");
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.Count(type) โ€” UO.Count(Any)

๋งค๊ฐœ๋ณ€์ˆ˜: type (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

public int Count(InjectionValue type) 

            => Count(ResolveType(type), -1, -1);

UO.Count(type, color) โ€” UO.Count(Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: type (Any), color (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

public int Count(InjectionValue type, InjectionValue color) 

            => Count(ResolveType(type), NumberConversions.ToInt(color), 0);

UO.Count(type, color, container) โ€” UO.Count(Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: type (Any), color (Any), container (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

public int Count(InjectionValue type, InjectionValue color, InjectionValue container)

            => Count(ResolveType(type), NumberConversions.ToInt(color), ConvertContainer(container));

UO.CountEx

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

UO.CountEx

int UO.CountEx(object? objType, object? color, object? container);

์ปจํ…Œ์ด๋„ˆ ๋ฐ”๋กœ ์•ˆ์˜ ์•„์ดํ…œ ์ˆ˜๋Ÿ‰์„ ์„ธ๋ฉฐ ์ค‘์ฒฉ ๊ฐ€๋ฐฉ์€ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง€๋ฉด์—์„œ๋Š” ์ผ์น˜ํ•˜๋Š” ์บ๋ฆญํ„ฐ/NPC๋„ ๊ฐ๊ฐ 1๊ฐœ๋กœ ์…‰๋‹ˆ๋‹ค. FindDistance, FindVertical, Ignore๋Š” ๊ณ„์† ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. FindItem, FindCount, FindFullQuantity, GetFoundItems๋Š” ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

objType์€ ๊ทธ๋ž˜ํ”ฝ/type์ด๋ฉฐ ์‹œ๋ฆฌ์–ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. color๋Š” ์ƒ‰์กฐ์ž…๋‹ˆ๋‹ค. -1 ๋˜๋Š” 0xFFFF๋Š” ๋ชจ๋“  type/์ƒ‰์กฐ์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. container๋Š” ์ปจํ…Œ์ด๋„ˆ ID์ด๋ฉฐ ๋ฐฐ๋‚ญ์€ UO.Backpack(), ์ง€๋ฉด์€ UO.Ground()๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. int๋กœ max(1, Amount)์˜ ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ 0์€ ์ผ์น˜ ํ•ญ๋ชฉ ์—†์Œ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ ๋ฐ›์€ ๋‚ด์šฉ๋งŒ ์„ธ๋ฉฐ ๊ฐ€๋ฐฉ์„ ์ž๋™์œผ๋กœ ์—ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ

int goldUnits = UO.CountEx(0x0EED, -1, UO.Backpack());
UO.Print(goldUnits.ToString());
UO.FindTypeEx(0x0EED, -1, UO.Backpack(), false);
int previousFoundItem = UO.FindItem();
int bandages = UO.CountEx(0x0E21, -1, UO.Backpack());
bool searchPreserved = UO.FindItem() == previousFoundItem;
UO.Print($"{bandages}; {searchPreserved}");
int units = CountBackpackUnits(0x0EED);
UO.Print(units.ToString());

int CountBackpackUnits(int graphic)
{
    return UO.CountEx(graphic, -1, UO.Backpack());
}
var counter = new InventoryCounter(UO);
UO.Print(counter.CountGold().ToString());

class InventoryCounter(ClassicUO.CSharp.CSharpGameApi api)
{
    public int CountGold() => api.CountEx(0x0EED, -1, api.Backpack());
}

๊ตฌํ˜„

ClassicUOInjectionApiBridge.CountDirectItems โ†’ MatchesFindIdentity / MatchesFindContainer / MatchesFindMobile.

UO.CountGround

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

int UO.CountGround(object? @type);
int UO.CountGround(object? @type, object? color);

๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ฐพ์€ ํ•ญ๋ชฉ์˜ ๋‹จ์œ„๋ฅผ ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค.

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

  • type - ํ•ญ๋ชฉ์˜ ๊ทธ๋ž˜ํ”ฝ/type(์˜ˆ: 0x0EED), serial ์•„๋‹˜. -1 ๋˜๋Š” 0xFFFF - ๋ชจ๋“  type.
  • color โ€” ํ•ญ๋ชฉ์˜ ์ƒ‰์ƒ; -1 ๋˜๋Š” 0xFFFF - ๋ชจ๋“  ์ƒ‰์ƒ. Count(type) ๋ฐ CountGround(type)์—์„œ ๊ธฐ๋ณธ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

int โ€” ๋ฐœ๊ฒฌ๋œ ํ•ญ๋ชฉ์˜ ์ตœ๋Œ€ ํ•ฉ๊ณ„(1, Amount); ๋ชจ๋“  ๋ชจ๋ฐ”์ผ์—๋Š” 1๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. 0 ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์Šคํƒ ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์œ ๋‹› ์ˆ˜์ž…๋‹ˆ๋‹ค. FindItem, FindCount, FindFullQuantity, GetFoundItems๊ฐ€ ๋™์‹œ์— ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

๋™์ž‘

  • Count๋Š” ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์žฅ๋น„ ๋ฐ ์ค‘์ฒฉ๋œ ๊ฐ€๋ฐฉ์„ ํฌํ•จํ•˜์—ฌ self๊ฐ€ ์†Œ์œ ํ•œ ํ•ญ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. CountGround๋Š” ์ผ์น˜ํ•˜๋Š” ๋ชจ๋ฐ”์ผ์„ ํฌํ•จํ•˜์—ฌ ํ•ญ์ƒ ํ† ์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•˜์ง€๋งŒ self๋Š” ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.
  • Count(type,color,serial)๋Š” ์ค‘์ฒฉ๋œ ๋ฐฑ์„ ์šฐํšŒํ•˜๊ณ , CountEx(type,color,serial) - ์ง์ ‘ ์ฝ˜ํ…์ธ ๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ œ์•ฝ ์กฐ๊ฑด FindDistance/FindVertical๋Š” ํ† ์ง€์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. Ignore ๋ฐœ๊ฒฌ๋œ ๋ฌผ์ฒด์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ๋Š” ์ด๋ฏธ ๋ฐ›์€ ์ปจํ…Œ์ด๋„ˆ์˜ ๋‚ด์šฉ๋ฌผ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ „์ฒด ์ธ๋ฒคํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ž๋™ ์—ด๊ธฐ ๋˜๋Š” ์„œ๋ฒ„ ์š”์ฒญ์€ ์—†์Šต๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋ฅผ ์ €๋„์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋ฅผ bool๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐฐ์—ด์ด๋ฉด ์š”์†Œ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

var result = UO.CountGround(0x0EED, -1);
UO.Print("CountGround: " + Convert.ToString(result));

1. ๊ธˆ ๋‹จ์œ„ ๊ณ„์‚ฐ - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • type=0x0EED, ์ƒ‰์ƒ=-1. ์ง€์—ญ์€ ์บ๋ฆญํ„ฐ ์˜†์˜ ํ† ์ง€์ž…๋‹ˆ๋‹ค.
  • 1000 dast ๋‹จ์œ„=1000์—์„œ ํ•œ ๋ฐœ, 1๊ฐ€ ์•„๋‹˜.
var units = UO.CountGround(0x0EED, -1);
UO.Print("Units: " + Convert.ToString(units));

2. ๋‹จ์œ„ ๋ฐ ๊ฐœ์ฒด ์ˆ˜๋ฅผ ๋ณ„๋„๋กœ ํ‘œ์‹œ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • FindCount๋Š” Count ์งํ›„, ๋‹ค๋ฅธ ๊ฒ€์ƒ‰ ์ „์— ์ฝํ˜€์ง‘๋‹ˆ๋‹ค.
  • 50 ๋‘ ๊ฐœ์˜ ์Šคํƒ์€ 2 ์•„์ดํ…œ๊ณผ 100 ์œ ๋‹›์„ ์ƒ์‚ฐํ•ฉ๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    var units = UO.CountGround(0x0EED, -1);
    var items = UO.FindCount();
    UO.Print(Convert.ToString(items) + " items, " + Convert.ToString(units) + " units");
    return null;
}

3. ์ˆ˜๋Ÿ‰์ด ์ถฉ๋ถ„ํ•œ ๊ฒฝ์šฐ์—๋งŒ ๊ณ„์† ์ง„ํ–‰ - ์‹œ๋‚˜๋ฆฌ์˜ค ์ˆ˜์—…

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • 100๋Š” ์ด ์˜ˆ์—์„œ ๋‹จ์œ„ ์ž„๊ณ„๊ฐ’์ž…๋‹ˆ๋‹ค.
  • ์ด๋Š” ์ƒํ’ˆ ์˜ˆ์•ฝ์ด ์•„๋‹Œ ์Šค๋ƒ…์ƒท ํ™•์ธ์ž…๋‹ˆ๋‹ค. ๊ฒ€ํ†  ํ›„ ์ „์†ก ์‚ฌ์ด์— ์ˆ˜๋Ÿ‰์€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var units = UO.CountGround(0x0EED, -1);
        if (Truth(units >= 100))
        {
            UO.Print("Enough units known to the client");
        }
        else
        {
            UO.Print("Not enough known units");
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.CountGround(type) โ€” UO.CountGround(Any)

๋งค๊ฐœ๋ณ€์ˆ˜: type (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

public int CountGround(InjectionValue type)

            => CountGround(type, new InjectionValue(-1));

UO.CountGround(type, color) โ€” UO.CountGround(Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: type (Any), color (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

public int CountGround(InjectionValue type, InjectionValue color)

            => bridge.Count(ResolveType(type), NumberConversions.ToInt(color), 1);

UO.DeleteFindList

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

void UO.DeleteFindList(object? list);
void UO.DeleteFindList(object? list, object? @type);
void UO.DeleteFindList(object? list, object? @type, object? color);

์ง€์ •๋œ ๋ชฉ๋ก, list/type ๋˜๋Š” list/type/color ์ ‘๋‘์‚ฌ์™€ ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ์ •์˜๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •๋œ ๊ทœ์น™์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์„ ์œ ์ง€ํ•˜๋ฉด์„œ ํ•œ ๊ฐ€์ง€ ์œ ํ˜•์˜ ํ•ญ๋ชฉ ๋˜๋Š” ํŠน์ • hue๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

  • list โ€” ๊ทœ์น™ ์„ธํŠธ์˜ ์ด๋ฆ„(์˜ˆ: "loot") | ์—†์ด ๋ฌธ์ž์—ด์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ž๋Š” ๋ ˆ์ฝ”๋“œ ๋‚ด์—์„œ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” serial ์ปจํ…Œ์ด๋„ˆ๋‚˜ ๋ฐœ๊ฒฌ๋œ ํ•ญ๋ชฉ์˜ ๋ฐฐ์—ด์ด ์•„๋‹™๋‹ˆ๋‹ค.
  • type - ์•„์ดํ…œ์˜ ๊ทธ๋ž˜ํ”ฝ/type ๋˜๋Š” body mobile(serial ์•„๋‹˜). ์ผ๋ฐ˜์ ์œผ๋กœ int 0..65535(0x0EED ํฌํ•จ); -1 ๋˜๋Š” 0xFFFF๋Š” ๊ฒ€์ƒ‰ ์‹œ type๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ•ญ๋ชฉ๋‹น ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค. ์—ฌ๋Ÿฌ ์œ ํ˜•์ด ๋ณ„๋„์˜ ํ˜ธ์ถœ๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์‚ญ์ œํ•˜๋ ค๋ฉด ํ•„๋“œ ํ…์ŠคํŠธ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ๊ฑด๋„ˆ๋›ฐ๋ฉด ๋ชจ๋“  ์ด๋ฆ„ ํ•ญ๋ชฉ์ด ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.
  • color โ€” RGB์ด ์•„๋‹Œ ๋ฌผ์ฒด/๋ชธ์ฒด์˜ ์ƒ‰์ƒ์ž…๋‹ˆ๋‹ค. int 0..65535; 0 - ์ผ๋ฐ˜ hue 0, -1 ๋˜๋Š” 0xFFFF - ๋ชจ๋‘. AddFindList์—์„œ ์ƒ‰์ƒ์„ ๊ฑด๋„ˆ๋›ฐ๋Š” ๊ฒƒ์€ ๊ฒ€์ƒ‰ ์‹œ hue๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์‚ญ์ œ์˜ ๊ฒฝ์šฐ ์™€์ผ๋“œ์นด๋“œ๊ฐ€ ์•„๋‹Œ ๋ฆฌํ„ฐ๋Ÿด ํ•„๋“œ์ž…๋‹ˆ๋‹ค. -1๋Š” -1๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์ €์žฅ๋œ ํ•ญ๋ชฉ๋งŒ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์ƒ‰์ƒ์„ ์ƒ๋žตํ•˜๋ฉด hue์— ๊ด€๊ณ„์—†์ด ๋ชจ๋“  ๋ชฉ๋ก/type ํ•ญ๋ชฉ์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

void: ๋ฐ˜ํ™˜ ๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค. ํ˜ธ์ถœ์„ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜์ง€ ๋ง๊ณ  true/1์—์„œ ํ…Œ์ŠคํŠธํ•˜์ง€ ๋งˆ์„ธ์š”. ์ •์˜ ์ƒํƒœ๋Š” UO.InfoFindList()๋กœ ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰ ์ž์ฒด๋Š” UO.FindList()์„ ํ†ตํ•ด ๋ณ„๋„๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

๋™์ž‘

  • ์ •์˜๋Š” ์ง€์ •๋œ ์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„ ์ƒํƒœ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋…๋ฆฝ์ ์ธ ๋‹ค๋ฅธ ๋Ÿฐํƒ€์ž„์—๋Š” ์ž์ฒด ์„ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. IDE ์ฐฝ์„ ๋‹ซ์•„๋„ ์ด๋Ÿฌํ•œ ๊ทœ์น™์€ ์ง€์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์„ค์ • ํŒŒ์ผ์ด๋‚˜ ์ „์—ญ ๊ฒŒ์ž„ ๊ฐœ์ฒด ๋ชฉ๋ก์ด ์•„๋‹™๋‹ˆ๋‹ค.
  • AddFindList ํ•ญ๋ชฉ์„ ๋์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณต์€ ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‚คํŠธ๋ฅผ ๋‹ค์‹œ ํ”„๋กœ๋น„์ €๋‹ํ•˜๋ ค๋ฉด ๋จผ์ € ClearFindList("name")์œผ๋กœ ์ „ํ™”ํ•˜์„ธ์š”. ์ •์˜๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ์ด๋ฏธ ์ˆ˜์‹ ๋œ FindItem/FindCount/GetFoundItems๋Š” ์ง€์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ ˆ์ฝ”๋“œ๋Š” ํ…์ŠคํŠธ ํ•„๋“œ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด 0x0EED์€ "3821"๋กœ ์ €์žฅ๋˜๊ณ , ๋ฌธ์ž์—ด "0x0EED"์€ "0x0EED"๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰์€ ๋‘ ์˜ต์…˜์„ ๋ชจ๋‘ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  DeleteFindList๋Š” ์ €์žฅ๋œ ํ…์ŠคํŠธ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ์‹œ์—๋„ ๋™์ผํ•œ ์–‘์‹์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • FindList์˜ ์•Œ ์ˆ˜ ์—†๋Š” ์ด๋ฆ„์€ ๋นˆ ๋“ฑ๋ก ์„ธํŠธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์—”์ง„์€ ์ด๋ฅผ ์ˆซ์ž ์œ ํ˜• ๋ชฉ๋ก์œผ๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€ํ™˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•œ ํ›„ ํ•ด๋‹น ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์ „์— ์ƒˆ ์„ธํŠธ๋ฅผ ๋งŒ๋“œ์‹ญ์‹œ์˜ค.
  • DeleteFindList(list,type,-1)๋Š” 2๊ฐœ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. AddFindList(list,type): ์„ธ ๋ฒˆ์งธ ํ•„๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜๋Š” ์ค‘๋ณต ํ•ญ๋ชฉ์€ ๋ชจ๋‘ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ผ์น˜๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๋ช…๋ น์€ ๋…๋ฆฝ๋œ ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•ž์˜ ๋ฉ”์‹œ์ง€๋Š” ํ˜ธ์ถœ ์‹œ์ž‘์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์„œ๋ฒ„ ๋™์ž‘์˜ ์™„๋ฃŒ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

UO.AddFindList("simple_loot", 0x0EED);
UO.Print("Calling UO.DeleteFindList");
UO.DeleteFindList("simple_loot");

1. ๋™์ผํ•œ ์œ ํ˜•์˜ ๋ชจ๋“  ์ƒ‰์ƒ ์ œ์™ธ - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ๋‘ ๊ฐœ์˜ ์ธ์ˆ˜๋Š” ๋‘ ๊ฐœ์˜ ๊ณจ๋“œ ํ•ญ๋ชฉ(๋ชจ๋“  hue ๋ฐ hue 0x0044)์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
UO.ClearFindList("loot");
UO.AddFindList("loot", 0x0EED, -1);
UO.AddFindList("loot", 0x0EED, 0x0044);
UO.AddFindList("loot", 0x0F7A);
UO.DeleteFindList("loot", 0x0EED);
var found = UO.FindList("loot", "backpack");
if (Truth(found != ""))
{
    UO.AddObject("remaining_supply", found);
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. ํ•˜๋‚˜๋งŒ ์ œ๊ฑฐ hue - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ์„ธ ๊ฐ€์ง€ ์ธ์ˆ˜: ์ƒ‰์ƒ, graphic ๊ธˆ์ƒ‰, ํŠน์ • hue. ๋‚จ์€ ๊ฒƒ์€ hue 0๋ฟ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์„ธํŠธ์—์„œ๋Š” ์ด graphic๊ฐ€ ์ œ๊ฑฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    UO.ClearFindList("colors");
    UO.AddFindList("colors", 0x0EED, 0);
    UO.AddFindList("colors", 0x0EED, 0x0044);
    UO.DeleteFindList("colors", 0x0EED, 0x0044);
    UO.InfoFindList();
    return null;
}

3. ์ „์ฒด ์„ธํŠธ ์ œ๊ฑฐ ๋ฐ ๊ต์ฒด ์ƒ์„ฑ - ์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ํ•˜๋‚˜์˜ ์ธ์ˆ˜๋Š” ๋ชจ๋“  ์ด์ „ ํ•ญ๋ชฉ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๊ทœ์น™์ด "0x0190" ์ค„๋กœ ์ง€์ •๋œ ๊ฒฝ์šฐ ๋™์ผํ•œ ์ค„๋กœ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ด๋ฆ„๋ณ„๋กœ ์„ธํŠธ๋ฅผ ์‚ญ์ œํ•˜์„ธ์š”.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.AddFindList("old", 0x0190);
        UO.AddFindList("old", 0x0191);
        UO.DeleteFindList("OLD");
        UO.AddFindList("new_watch", 0x0190, -1);
        UO.AddFindList("new_watch", 0x0191, -1);
        UO.InfoFindList();
        return null;
    }
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.DeleteFindList(list) โ€” UO.DeleteFindList(Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any)

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "deletefindlist":

                    LegacyList("AddFindList").RemoveAll(value => LegacyListEntryMatches(value,

                        arguments));

                    break;

UO.DeleteFindList(list, type) โ€” UO.DeleteFindList(Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any), type (Any)

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "deletefindlist":

                    LegacyList("AddFindList").RemoveAll(value => LegacyListEntryMatches(value,

                        arguments));

                    break;

UO.DeleteFindList(list, type, color) โ€” UO.DeleteFindList(Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any), type (Any), color (Any)

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "deletefindlist":

                    LegacyList("AddFindList").RemoveAll(value => LegacyListEntryMatches(value,

                        arguments));

                    break;

UO.DeleteIgnoreList

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

void UO.DeleteIgnoreList(object? list);
void UO.DeleteIgnoreList(object? list, object? @type);
void UO.DeleteIgnoreList(object? list, object? @type, object? color);

์ „์ฒด ๋ช…๋ช…๋œ ํ•„ํ„ฐ ๋˜๋Š” ๊ทธ ์•ˆ์— ์žˆ๋Š” ์„ ํƒ๋œ ๊ทœ์น™์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์˜ˆ์™ธ๋Š” ์œ ์ง€ํ•˜๋ฉด์„œ ํŠน์ • type ๋˜๋Š” hue๋ฅผ ๊ฒ€์ƒ‰์— ๋‹ค์‹œ ํ—ˆ์šฉํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜์„ธ์š”.

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

  • list โ€” ๋น„์–ด ์žˆ์ง€ ์•Š์€ ์ž„์˜์˜ ์ด๋ฆ„(์˜ˆ: "loot_skip") ์ด๋ฆ„์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์•„์ดํ…œ์˜ ์ด๋ฆ„๋„, serial ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„๋„, FindList์˜ ์ด๋ฆ„๋„ ์•„๋‹™๋‹ˆ๋‹ค.
  • type - ์•„์ดํ…œ์˜ ๊ทธ๋ž˜ํ”ฝ/type ๋˜๋Š” body mobile. ์˜ˆ๋ฅผ ๋“ค์–ด 0x0EED์€ ๊ธˆ, 0x0191์€ ์—ฌ์„ฑ ์ธ์ฒด์ž…๋‹ˆ๋‹ค. ์ˆซ์ž ๋˜๋Š” ์ˆซ์ž ๋ฌธ์ž์—ด("0x0EED", "3821"); -1/๊ธฐํƒ€ ๋ถ€์ •/0xFFFF - ๋ชจ๋“  type. 65535๋ณด๋‹ค ํฐ ๊ฐ’์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ type์˜ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ์ „์†ก๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ „์ฒด ๋ชฉ๋ก์„ ์‚ญ์ œํ•˜์‹ญ์‹œ์˜ค. ์ƒ‰์ƒ ์—†์ด ์ „๋‹ฌ๋˜๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  ๊ทœ์น™์€ ์ •ํ™•ํžˆ ์ด type์ž…๋‹ˆ๋‹ค.
  • color - ์ƒ‰์กฐ: 0 - ๋ฌด์ƒ‰๋งŒ, 0x0044 - ์ •ํ™•ํ•œ ์ƒ‰์ƒ์˜ ์˜ˆ; ๋ถ€์ • ๋˜๋Š” 0xFFFF - ๋ชจ๋‘. 65535๋ณด๋‹ค ํฐ ๊ฐ’์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€์—์„œ ๊ธฐ๋ณธ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๊ทœ์น™ ๋‚ด์—์„œ ์œ ํ˜•๊ณผ hue์€ AND ์กฐ๊ฑด์œผ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ทœ์น™ - ๋˜๋Š”. ์‚ญ์ œ ์‹œ ์ •ํ™•ํ•œ ๊ทœ์น™ ๋งˆ์Šคํฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. -1๋Š” ๋ชจ๋“  ๊ฐœ๋ณ„ ์ƒ‰์ƒ์ด ์•„๋‹Œ "๋ชจ๋“  ์ƒ‰์ƒ" ๊ทœ์น™์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

void - ๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค. var ๊ฒฐ๊ณผ = ๋ฐ ํ™•์ธ =true ์—†์ด ๋ณ„๋„์˜ ์ค„์— ์‚ฌ์šฉํ•˜์„ธ์š”. ์ด ๋ช…๋ น์€ ๋กœ์ปฌ ํ•„ํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ํ•ญ๋ชฉ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์„œ๋ฒ„์— ์•„๋ฌด ๊ฒƒ๋„ ๋ณด๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋™์ž‘

  • ์ˆซ์ž 3821์™€ ๋ฌธ์ž์—ด "0x0EED"๋Š” ํ•˜๋‚˜์˜ type์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ทœ์น™์„ ์‚ญ์ œํ•ด๋„ ์•„๋ฌด ๊ฒƒ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชฉ๋ก ์ž์ฒด๋ฅผ ์‚ญ์ œํ•˜๋”๋ผ๋„ ์„ ํƒํ•œ ๋ชฉ๋ก์˜ ์ด๋ฆ„์€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ํ…… ๋น„๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ๋ช…๋ช…๋œ ๋ชฉ๋ก์—๋Š” graphic/type + hue ๊ทœ์น™์ด ํฌํ•จ๋˜์–ด ์žˆ๊ณ  ์ผ๋ฐ˜ Ignore์—๋Š” ํŠน์ • serial ๊ทœ์น™์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ์„œ๋กœ ๋‹ค๋ฅธ ํ•„ํ„ฐ์ž…๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰์ด ์ง€์›๋˜๋ฉด ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ์ฒด๋Š” ๊ณ„์† ํ‘œ์‹œ๋˜๊ณ  ์ง์ ‘ UseObject/MoveItem์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” Hide ๋˜๋Š” ํ–‰์œ„ ๊ธˆ์ง€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
  • ๋ชฉ๋ก ์ด๋ฆ„์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ์ž๋ฆฌ ๊ณต๊ฐ„์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋ช…๋ช…๋œ ๋ชฉ๋ก์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ์ดˆ๊ธฐ์—๋Š” ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค. AddIgnoreList๋Š” ์ž๋™์œผ๋กœ ์„ ํƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. SelectIgnoreList("")์€ ๋ช…๋ช…๋œ ํ•„ํ„ฐ๋งŒ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทœ์น™์€ ์ถ”๊ฐ€๋œ ํ›„์— ์—…๋กœ๋“œ๋œ ํ•ญ๋ชฉ์„ ํฌํ•จํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฒ€์ƒ‰์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ์ˆ˜์‹ ๋œ ๋ฐฐ์—ด๊ณผ ์ด์ „ ๊ฒฐ๊ณผ FindCount๋Š” ์ƒˆ๋กœ์šด ๊ฒ€์ƒ‰์ด ์ด๋ฃจ์–ด์งˆ ๋•Œ๊นŒ์ง€ ๋‹ค์‹œ ๊ณ„์‚ฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ์ œ์™ธํ•˜๋ ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด -1,-1 ๊ทœ์น™์ด ์žˆ๋Š” ๋ชฉ๋ก์„ ์„ ํƒํ•˜์ง€ ๋งˆ์„ธ์š”.
  • ํ•„ํ„ฐ๋Š” FindType/FindTypeEx/FindTypesArrayEx, FindList, FindAtCoord, FindNotoriety, Count/CountEx ๋ฐ ํ™•์žฅ ์„ ํƒ ํ•ญ๋ชฉ GetMobiles, GetWorldItems, UseType์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. WaitTarget, Attack/AttackNearest/FindMan. includeIgnored=true(์ œ๊ณต๋œ ๊ฒฝ์šฐ)๋Š” serial ๋ฐ type/hue๋ฅผ ๋ชจ๋‘ ์šฐํšŒํ•ฉ๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ์—†๋Š” ์ „์ฒด ์—ด๊ฑฐํ˜• GetContent/GetEquipment, GetWorldItems() ๋ฐ ๋™์‚ฌ FindMobile(human,near,...) ๋Š” ์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • GetIgnoreList๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์ถ”๊ฐ€๋œ serial๋งŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ช…๋œ ๋ชฉ๋ก์˜ ํ–‰์€ ์ด ๋ฐฐ์—ด์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. IgnoreReset๋Š” ์ „์ฒด serial ํ•„ํ„ฐ๋ฅผ ์ง€์šฐ๊ณ , IgnoreOff(serial)๋Š” ํ•˜๋‚˜์˜ serial-์˜ˆ์™ธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ช…๋œ ๊ทœ์น™์€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ์—†๋Š” ClearIgnoreList()๋Š” ๋‘ ๋ณด๊ธฐ๋ฅผ ๋ชจ๋‘ ์ง€์›๋‹ˆ๋‹ค.
  • ์ƒํƒœ๋Š” ํด๋ผ์ด์–ธํŠธ ํ”„๋กœํ•„ ์Šคํฌ๋ฆฝํŠธ์˜ ์ผ๋ฐ˜ ์ƒํƒœ์— ์†ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ด ์ƒํƒœ์˜ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์„ค์ •์€ ์ €์žฅ๋œ ์Šค๋ƒ…์ƒท์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ทœ์น™์„ ๋ณ€๊ฒฝํ•œ ํ›„ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ๋Š” ์ด๋ฏธ ์ด์ „์— ์ฐ์€ ์Šค๋ƒ…์ƒท์œผ๋กœ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ฒ€์ƒ‰์—์„œ๋Š” ์—…๋ฐ์ดํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๋ช…๋ น์€ ๋…๋ฆฝ๋œ ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•ž์˜ ๋ฉ”์‹œ์ง€๋Š” ํ˜ธ์ถœ ์‹œ์ž‘์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์„œ๋ฒ„ ๋™์ž‘์˜ ์™„๋ฃŒ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

UO.AddIgnoreList("simple_skip", 0x0EED);
UO.Print("Calling UO.DeleteIgnoreList");
UO.DeleteIgnoreList("simple_skip");

1. ์ „์ฒด ์„ธํŠธ ์‚ญ์ œ - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ์ž„์‹œ๋งŒ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชฉ๋ก๊ณผ Ignore(serial)๋Š” ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
UO.AddIgnoreList("temporary", 0x0EED);
UO.SelectIgnoreList("temporary");
UO.DeleteIgnoreList("temporary");
var gold = UO.FindType(0x0EED, -1, "ground");

2. ํ•˜๋‚˜์˜ type ๋ชจ๋“  ์ƒ‰์ƒ ํ—ˆ์šฉ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ๋‘ ๋กœ๋ธŒ ๊ทœ์น™์ด ๋ชจ๋‘ ์ œ๊ฑฐ๋˜์—ˆ์ง€๋งŒ ํ™ฉ๊ธˆ ๊ทœ์น™์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ๊ทœ์น™ -1,type-๋‹ค๋ฅธ ์œ ํ˜•์ด ์ถ”๊ฐ€๋˜๋”๋ผ๋„ ์ž์ฒด์ ์œผ๋กœ ์ œ๊ฑฐ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    UO.AddIgnoreList("sort", 0x1F03, 0);
    UO.AddIgnoreList("sort", 0x1F03, 0x0044);
    UO.AddIgnoreList("sort", 0x0EED);
    UO.DeleteIgnoreList("sort", 0x1F03);
    UO.SelectIgnoreList("sort");
    return null;
}

3. ์ •ํ™•ํ•œ ์ƒ‰์ƒ ๊ทœ์น™๋งŒ ์ œ๊ฑฐ - ์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • 68 = 0x0044: ์ˆซ์ž ํ˜•ํƒœ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์—ผ์ƒ‰๋˜์ง€ ์•Š์€ ๋กœ๋ธŒ๋Š” ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. hue=-1์™€ ํ•จ๊ป˜ type์— ๋Œ€ํ•œ ๊ทœ์น™๋„ ์žˆ๋Š” ๊ฒฝ์šฐ ์ƒ‰์ƒ 68๋Š” ๊ณ„์† ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.AddIgnoreList("robes", 0x1F03, 0);
        UO.AddIgnoreList("robes", 0x1F03, 0x0044);
        UO.DeleteIgnoreList("robes", "0x1F03", 68);
        UO.SelectIgnoreList("robes");
        var robe = UO.FindType(0x1F03, 0x0044, "backpack");
        return null;
    }
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.DeleteIgnoreList(list) โ€” UO.DeleteIgnoreList(Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any)

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "deleteignorelist":

                    state.IgnoreTypeLists.Remove(Text(0), arguments.Length > 1 ? ResolveType(arguments[1]) : (int?)null,

                        arguments.Length > 2 ? NumberConversions.ToInt(arguments[2]) : (int?)null);

                    break;

UO.DeleteIgnoreList(list, type) โ€” UO.DeleteIgnoreList(Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any), type (Any)

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "deleteignorelist":

                    state.IgnoreTypeLists.Remove(Text(0), arguments.Length > 1 ? ResolveType(arguments[1]) : (int?)null,

                        arguments.Length > 2 ? NumberConversions.ToInt(arguments[2]) : (int?)null);

                    break;

UO.DeleteIgnoreList(list, type, color) โ€” UO.DeleteIgnoreList(Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any), type (Any), color (Any)

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "deleteignorelist":

                    state.IgnoreTypeLists.Remove(Text(0), arguments.Length > 1 ? ResolveType(arguments[1]) : (int?)null,

                        arguments.Length > 2 ? NumberConversions.ToInt(arguments[2]) : (int?)null);

                    break;

UO.FindAnyType

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

int UO.FindAnyType(object? distance, object? @type);
int UO.FindAnyType(object? distance, object? @type, object? type2);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24, object? type25);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24, object? type25, object? type26);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24, object? type25, object? type26, object? type27);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24, object? type25, object? type26, object? type27, object? type28);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24, object? type25, object? type26, object? type27, object? type28, object? type29);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24, object? type25, object? type26, object? type27, object? type28, object? type29, object? type30);
int UO.FindAnyType(object? distance, object? @type, object? type2, object? type3, object? type4, object? type5, object? type6, object? type7, object? type8, object? type9, object? type10, object? type11, object? type12, object? type13, object? type14, object? type15, object? type16, object? type17, object? type18, object? type19, object? type20, object? type21, object? type22, object? type23, object? type24, object? type25, object? type26, object? type27, object? type28, object? type29, object? type30, object? type31);

์ฃผ์–ด์ง„ graphic ๋ชธ์ฒด ์ค‘ ํ•˜๋‚˜์™€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋กœ๋“œ๋œ mobile๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์œ ํ˜•์˜ ์ƒ๋ฌผ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ํŒ€์€ ์ƒ์ž๋‚˜ ๋•…์— ์žˆ๋Š” ์•„์ดํ…œ์„ ์ฐพ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. FindType/FindList๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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

  • distance โ€” ์…€์„ ํฌํ•จํ•œ ์ˆ˜ํ‰ ๋ฐ˜๊ฒฝ: 5๋Š” ๊ฑฐ๋ฆฌ 0..5๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ๋ฆฌ๋Š” max(abs(dx),abs(dy))์ด๋ฏ€๋กœ ์ธ์ ‘ํ•œ ๋Œ€๊ฐ์„ ๋„ 1์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆซ์ž๊ฐ€ ์Œ์ˆ˜์ธ ๊ฒฝ์šฐ์—๋Š” ๋ฌด์ œํ•œ ๊ฒ€์ƒ‰์ด ์•„๋‹Œ UO.FindDistance()์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. 0๋Š” ๋™์ผํ•œ X/Y ์…€์„ ๋‚จ๊น๋‹ˆ๋‹ค. ๊ฒฝ๋กœ์˜ ๊ธธ์ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์žฅ์• ๋ฌผ๊ณผ ๋ฐ”๋‹ฅ์€ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ™•์ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type โ€” serial ๋ฐ graphic ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ mobile ๋ณธ์ฒด์˜ ๊ทธ๋ž˜ํ”ฝ์ž…๋‹ˆ๋‹ค. ์ˆซ์ž 0..65534 ๋˜๋Š” 16์ง„์ˆ˜ ๋ฌธ์ž์—ด(์˜ˆ: 0x003B). ์—ฌ๋Ÿฌ ๊ฐ’์€ OR(์ˆซ์ž 5, ๋ฌธ์ž์—ด "5|6") ๋˜๋Š” ์ˆซ์ž/์ˆซ์ž ๋ฌธ์ž์—ด์˜ ๋‹จ์ˆœ ๋ฐฐ์—ด๋กœ ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค. ํ‰๋ฉด ๋ฐฐ์—ด๊ณผ ๊ฐœ๋ณ„ ์ธ์ˆ˜๋ฅผ ํ˜ผํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ’์˜ ์ˆœ์„œ๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ํ† ํฐ์€ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ์™„์ „ํžˆ ์ž˜๋ชป๋œ ๋งˆ์Šคํฌ๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ฐพ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ค‘์ฒฉ ๋ฐฐ์—ด์€ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์ž˜๋ชป๋œ ์š”์†Œ๋กœ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์ฐจ์› ๋งˆ์Šคํฌ๋Š” ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type2 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type3 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type4 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type5 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type6 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type7 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type8 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type9 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type10 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type11 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type12 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type13 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type14 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type15 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type16 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type17 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type18 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type19 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type20 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type21 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type22 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type23 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type24 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type25 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type26 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type27 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type28 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type29 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type30 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type31 โ€” ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ๋งˆ์Šคํฌ type; type์™€ ๊ฐ™์€ ๋ชจ์–‘. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

int - ์„ ํƒํ•œ mobile์˜ serial ๋˜๋Š” ์ ํ•ฉํ•œ ํ•ญ๋ชฉ์ด ์—†๋Š” ๊ฒฝ์šฐ 0. ์ด๋Š” graphic/type, ๋ฐœ๊ฒฌ๋œ ๊ฐœ์ฒด ์ˆ˜ ๋˜๋Š” true/false๊ฐ€ ์•„๋‹Œ ID์ž…๋‹ˆ๋‹ค. if (found != 0) { ... }, notfound == true๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ๋ฐœ๊ฒฌ๋œ ID๋Š” UO.AddObject, UO.Attack ๋˜๋Š” UO.Follow๋กœ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐ ๊ฒŒ์ž„ ์ž‘์—…์€ ๋ณ„๋„๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋™์ž‘

  • ๊ฒ€์ƒ‰์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฏธ ๋‹ค์šด๋กœ๋“œํ•œ ๋ชจ๋ฐ”์ผ๋งŒ ์ฝ์Šต๋‹ˆ๋‹ค. ํŒŒ๊ธฐ๋œ ๊ธฐ๋ก๊ณผ Ignore๋Š” ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ํ˜ธ์ถœ ์ž์ฒด๋Š” ๋Œ€์ƒ์„ ์—ด์ง€ ์•Š๊ณ , ๊ณต๊ฒฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋Œ€์ƒ์œผ๋กœ ์ด๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์„œ๋ฒ„์— ์›๊ฒฉ ๊ฐœ์ฒด๋ฅผ ์š”์ฒญํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ฑฐ๋ฆฌ๋Š” ๊ฒฝ๋กœ ๊ธธ์ด๊ฐ€ ์•„๋‹Œ ๊ธฐํ•˜ํ•™์  max(abs(dx),abs(dy))์ž…๋‹ˆ๋‹ค. ๊ทผ์ ‘์„ฑ์ด ์žˆ๋‹ค๊ณ  ํ•ด์„œ ๋ฒฝ์ด ์—†๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ธต์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ฑ์ด ๋ณด์žฅ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฐ˜ํ’ˆ ์‹œ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒ๋ช…, ์Šคํ…”์Šค, ์‹œ์•ผ๋Š” ์ž๋™์œผ๋กœ ํ™•์ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ค‘์š”ํ•˜๋‹ค๋ฉด GetMobiles๋ฅผ aliveOnly/visibleOnly์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ง์ ‘ ํ™•์ธํ•˜์„ธ์š”. ์  ์ƒํƒœ์˜ ์„œ๋ฒ„๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด์„œ NPC๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
  • FindItem, FindCount ๋˜๋Š” GetFoundItems๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ํ•„๋“œ์—๋Š” ์ด์ „ ๋‹ค๋ฅธ ๋ช…๋ น์˜ ๊ฒฐ๊ณผ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜๋œ ID๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • 2์—์„œ 32 ์ธ์ˆ˜: ๊ฑฐ๋ฆฌ์™€ 31 ๋งˆ์Šคํฌ type๊นŒ์ง€. ํ‰๋ฉด ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๋งŽ์€ ๊ฐ’์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. type ์ดํ›„์˜ ๊ฐ ๊ฐ’์€ ์—ฌ์ „ํžˆ โ€‹โ€‹body/type์ด๋ฉฐ hue ๋˜๋Š” ์•…๋ช…์ด ๋†’์Šต๋‹ˆ๋‹ค.
  • ์ด ๋ช…๋ น์—๋Š” Z, ์•…๋ช…, ํ”Œ๋ ˆ์ด์–ด ์ธ์ข… ๋˜๋Š” ์˜๋ฅ˜ ํด๋ž˜์Šค ํ•„ํ„ฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Self์€ ์ œ์™ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์‹ ์˜ graphic๊ฐ€ ๋งˆ์Šคํฌ์— ํฌํ•จ๋˜์–ด ์žˆ๊ณ  self๊ฐ€ Ignore์— ์—†์œผ๋ฉด 0 ๊ฑฐ๋ฆฌ์—์„œ serial๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒƒ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋” ์ž‘์€ serial๋กœ ๋™์ผํ•œ ๊ฑฐ๋ฆฌ๊ฐ€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. -1/any/0xFFFF/๊ตฌ์ฒด์ ์ธ ์œ ํ˜•์ด ์—†๋Š” ๋นˆ ๋งˆ์Šคํฌ๋Š” 0๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์—๋Š” ๋ช…์‹œ์ ์ธ type์ด ํ•˜๋‚˜ ์ด์ƒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ์˜ ํŠน์ • type ์™€์ผ๋“œ์นด๋“œ๋Š” ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋ฅผ ์ €๋„์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋ฅผ bool๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐฐ์—ด์ด๋ฉด ์š”์†Œ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

var result = UO.FindAnyType(10, 0x003B);
UO.Print("FindAnyType: " + Convert.ToString(result));

1. ์›ํ•˜๋Š” ์œ ํ˜•์˜ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ƒ๋ฌผ์„ ์ €์žฅํ•˜์‹ญ์‹œ์˜ค - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • 0x003B - body, ID ์•„๋‹˜. ๋ฐ˜ํ™˜ ์ƒ๋ฌผ - ๋ฐœ๊ฒฌ๋œ ํŠน์ • mobile์˜ ID. ํŒ€์€ Z, ๊ฑด๊ฐ• ๋˜๋Š” ๊ณต๊ฒฉ์„ฑ์„ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
var creature = UO.FindAnyType(10, 0x003B);
if (Truth(creature != 0))
{
    UO.AddObject("creature", creature);
    UO.Print("Distance: " + Convert.ToString(UO.GetDistance(creature)));
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. ๋ทฐ ๋ฐฐ์—ด ๋ฐ ์ถ”๊ฐ€ ๋ทฐ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ๋ณธ์ฒด์™€ ๋ณ„๋„์˜ 0x000C๊ฐ€ ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค. self์ด ๋ฐœ๊ฒฌ๋˜๋ฉด ์ด ์˜ˆ์—์„œ๋Š” ํ•ด๋‹น ์ž‘์—…์„ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ๊ทธ๋Š” ๋‹ค์Œ ํ›„๋ณด์ž๋ฅผ ์ฐพ๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์ž์ฒด์—์„œ self๋ฅผ ์ œ์™ธํ•˜๋ ค๋ฉด ํ•ด๋‹น ํ•„ํ„ฐ GetMobiles๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
return  RunScenario();
 object? RunScenario()
{
    dynamic[] bodies = new dynamic[checked((int)(0) + 1)];
    bodies[0] = 0x003B;
    var creature = UO.FindAnyType(18, bodies, 0x000C);
    if (Truth(creature != 0) && Truth(creature != Asc(UO.GetSerial("self"), 0)))
    {
        UO.AddObject("observed_creature", creature);
    }

    return null;
}

int Asc(object? value, int fallback = 0)
{
    string text = Convert.ToString(value) ?? "";
    if (text.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
        return int.TryParse(text[2..], System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out int hex) ? hex : fallback;
    return int.TryParse(text, out int number) ? number : fallback;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์›ํ•˜๋Š” ๋ทฐ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ ๋ฐ˜ํ™˜ - ์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • body - graphic, ๋ฐ˜๊ฒฝ - ๊ฒ€์ƒ‰ ์ œํ•œ X/Y. ๋„์šฐ๋ฏธ๋Š” ๊ฑฐ๋ฆฌ ๋˜๋Š” ์ž์ฒด ์ฝ”๋“œ -1๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. UO.FindAnyType ์ž์ฒด๋Š” serial ๋˜๋Š” 0๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var distance = DistanceToBody(0x003B, 8);
        if (Truth(distance >= 0) && Truth(distance <= 3))
        {
            UO.Print("Creature is within three cells");
        }

        return null;
    }

    dynamic DistanceToBody(dynamic body, dynamic radius)
    {
        var found = UO.FindAnyType(radius, body);
        if (Truth(found == 0))
        {
            return -1;
        }

        return UO.GetDistance(found);
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.FindAnyType(distance, type) โ€” UO.FindAnyType(Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2) โ€” UO.FindAnyType(Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3) โ€” UO.FindAnyType(Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4) โ€” UO.FindAnyType(Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24, type25) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any), type25 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24, type25, type26) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any), type25 (Any), type26 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24, type25, type26, type27) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any), type25 (Any), type26 (Any), type27 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24, type25, type26, type27, type28) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any), type25 (Any), type26 (Any), type27 (Any), type28 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24, type25, type26, type27, type28, type29) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any), type25 (Any), type26 (Any), type27 (Any), type28 (Any), type29 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24, type25, type26, type27, type28, type29, type30) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any), type25 (Any), type26 (Any), type27 (Any), type28 (Any), type29 (Any), type30 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAnyType(distance, type, type2, type3, type4, type5, type6, type7, type8, type9, type10, type11, type12, type13, type14, type15, type16, type17, type18, type19, type20, type21, type22, type23, type24, type25, type26, type27, type28, type29, type30, type31) โ€” UO.FindAnyType(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), type (Any), type2 (Any), type3 (Any), type4 (Any), type5 (Any), type6 (Any), type7 (Any), type8 (Any), type9 (Any), type10 (Any), type11 (Any), type12 (Any), type13 (Any), type14 (Any), type15 (Any), type16 (Any), type17 (Any), type18 (Any), type19 (Any), type20 (Any), type21 (Any), type22 (Any), type23 (Any), type24 (Any), type25 (Any), type26 (Any), type27 (Any), type28 (Any), type29 (Any), type30 (Any), type31 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindAnyType(values[0], CombineMask(values, 1)))

UO.FindAtCoord

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

int UO.FindAtCoord(object? x, object? y);

ํ˜„์žฌ ์ง€๋„์˜ ์ •ํ™•ํ•œ X/Y ํƒ€์ผ ํ•˜๋‚˜์—์„œ ๋กœ๋“œ๋œ ์„ธ๊ณ„ ๊ฐ์ฒด๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

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

  • x โ€” ์ˆ˜ํ‰ ์„ธ๊ณ„ ์ขŒํ‘œ, int 0..65535. ํ•„์ˆ˜์ ์ธ; ์ด๋Š” ์ปจํ…Œ์ด๋„ˆ ์ฐฝ ํ”ฝ์…€์ด ์•„๋‹™๋‹ˆ๋‹ค.
  • y๋Š” ์ˆ˜์ง ์„ธ๊ณ„ ์ขŒํ‘œ, int 0..65535์ž…๋‹ˆ๋‹ค. ํ•„์ˆ˜์˜. Z, ์ง€๋„, type ๋˜๋Š” ๋ฐ˜๊ฒฝ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์˜ต์…˜์€ ์—†์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

int - serial ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์˜ ๊ฒฐ๊ณผ ๋ชฉ๋ก์—์„œ ์ฒซ ๋ฒˆ์งธ๋กœ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค. 0: ์ผ์น˜ ํ•ญ๋ชฉ ์—†์Œ, ๋ฌธ์ž ๋ˆ„๋ฝ/์‚ญ์ œ ๋˜๋Š” 0..65535 ์™ธ๋ถ€ ์ขŒํ‘œ. ์ด๋Š” type, ์ˆ˜๋Ÿ‰ ๋˜๋Š” bool๊ฐ€ ์•„๋‹Œ ๊ฐœ์ฒด์˜ ID์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  32 ๋น„ํŠธ๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. != 0๋ฅผ ํ™•์ธํ•˜์„ธ์š”. == true์ด ์•„๋‹ˆ๊ณ  > 0์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋™์ผํ•œ ID์ด FindItem()์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

๋™์ž‘

  • ์ด ์…€์— ์žˆ๋Š” ์บ๋ฆญํ„ฐ ์ž์‹ ์„ ํฌํ•จํ•˜์—ฌ ์ง€์ƒ๊ณผ ๋ชจ๋ฐ”์ผ์— ์žˆ๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š์€ ์•„์ดํ…œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ๋ฐ ์ฐฉ์šฉ ์•„์ดํ…œ์˜ ๋‚ด์šฉ๋ฌผ์€ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์•„์ดํ…œ์˜ X/Y๋Š” ์„ธ๊ณ„ ์ขŒํ‘œ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ผ๋ จ๋ฒˆํ˜ธ๋Š” ๋ชฉ๋ก Ignore์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.
  • ์ฃผ์–ด์ง„ X/Y์˜ ๋ชจ๋“  ๋†’์ด Z๊ฐ€ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. FindDistance ๋ฐ FindVertical๋Š” ์ด ๊ฒ€์ƒ‰์„ ์ •ํ™•ํ•œ ์…€๋กœ ์ œํ•œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์„ธ๊ณ„์˜ ๋กœ๋“œ๋œ ๊ฐ์ฒด๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ’๊ฒฝ, ์ •์  ๋ฐ ๊ธฐํƒ€ ์ง€๋„๋Š” ๋กœ๋“œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒจํ‚ท์ด ์ „์†ก๋˜์ง€ ์•Š๊ณ , ๋Œ€์ƒ์ด ์—ด๋ฆฌ์ง€ ์•Š์œผ๋ฉฐ, ํ•ญ๋ชฉ์ด ์ด๋™๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ฐ ํ˜ธ์ถœ์€ ๋จผ์ € ์ด์ „ ๊ฒ€์ƒ‰์„ ์ง€์›๋‹ˆ๋‹ค. FindCount()๋Š” ๊ฐœ์ฒด ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , FindFullQuantity()๋Š” ์Šคํƒ์˜ ๋‹จ์œ„๋ฅผ ํ•ฉ์‚ฐํ•˜๊ณ (๋ชจ๋ฐ”์ผ์€ 1๊ฐœ ์ถ”๊ฐ€), GetFoundItems()๋Š” ์ฐพ์€ ํ•ญ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค serial. ํ•ญ๋ชฉ์ด ๋จผ์ € ๊ฒ€์ƒ‰๋œ ๋‹ค์Œ ๋ชจ๋ฐ”์ผ์ด ๊ฒ€์ƒ‰๋ฉ๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜ ๋‚ด์—์„œ๋Š” ํ˜„์žฌ ์—ด๊ฑฐ ์ˆœ์„œ๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๋‹ค์Œ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ๋ชฉ๋ก์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์œ„์˜ ์„ ํƒ ์ˆœ์„œ์™€ ํ•„ํ„ฐ๋Š” ์ด ํด๋ผ์ด์–ธํŠธ์˜ ๊ตฌํ˜„์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋ฅผ ์ €๋„์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋ฅผ bool๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐฐ์—ด์ด๋ฉด ์š”์†Œ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

var result = UO.FindAtCoord(1445, 1690);
UO.Print("FindAtCoord: " + Convert.ToString(result));

1. ํ•˜๋‚˜ ๋ฐ›๊ธฐ ID - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • 1445 ๋ฐ 1690๋Š” ์ „ ์„ธ๊ณ„ X/Y์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์…€๋กœ ๊ต์ฒดํ•˜์„ธ์š”. ID๋Š” ํ•˜๋‚˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค serial; HEX๋Š” 16์ง„์ˆ˜๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. != 0 ์ˆ˜๋Ÿ‰์ด ์•„๋‹Œ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
var id = UO.FindAtCoord(1445, 1690);
if (Truth(id != 0))
{
    UO.Print(Hex(id));
}
else
{
    UO.Print("No loaded object");
}

string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. ๋ชจ๋“  ๊ฐœ์ฒด๋ฅผ ๋ฌธ์ž ์‚ฌ๊ฐํ˜•์œผ๋กœ ๋ณด๊ธฐ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • x/y๋Š” ๋ฌธ์ž์—์„œ ์ฝํ˜€์ง‘๋‹ˆ๋‹ค. ids๋Š” ํ˜„์žฌ ๊ฒ€์ƒ‰ ๋ชฉ๋ก์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ID๋Š” ์ „์ฒด ์Šคํƒ์„ ํฌํ•จํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ฐœ์ฒด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. GetType(id)๋Š” graphic/body๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค. ํ•ญ๋ชฉ์ด ์„ ํƒ๋˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    var x = UO.GetX("self");
    var y = UO.GetY("self");
    UO.FindAtCoord(x, y);
    var ids = UO.GetFoundItems();
    foreach (var id in ids)
    {
        UO.Print(Hex(id) + " type=" + Hex(UO.GetType(id)));
    }

    return null;
}

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

3. ์ „์ฒด ๊ธฐ๋Šฅ CountGraphicAt - ์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • CountGraphicAt(x, y, graphic)๋Š” ์…€์„ ํ•œ ๋ฒˆ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ €์žฅ๋œ ID๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์›ํ•˜๋Š” ๊ทธ๋ž˜ํ”ฝ์ด ํฌํ•จ๋œ ๊ฐœ์ฒด์˜ ์ˆ˜๋ฅผ ์…‰๋‹ˆ๋‹ค. graphic=0x0EED โ€“ ๊ธˆ. true/false๊ฐ€ ์•„๋‹Œ ๊ฐœ์ฒด/์Šคํƒ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ๊ฐœ์ฒด/์Šคํƒ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์Šคํƒ์ด ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ Main ๋‹ค์Œ์— ์™„์ „ํžˆ ์ •์˜๋ฉ๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var count = CountGraphicAt(1445, 1690, 0x0EED);
        UO.Print("Objects/stacks: " + Convert.ToString(count));
        return null;
    }

    dynamic CountGraphicAt(dynamic x, dynamic y, dynamic graphic)
    {
        UO.FindAtCoord(x, y);
        var ids = UO.GetFoundItems();
        var count = 0;
        foreach (var id in ids)
        {
            if (Truth(UO.GetType(id) == graphic))
            {
                count += 1;
            }
        }

        return count;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.FindAtCoord(x, y) โ€” UO.FindAtCoord(Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: x (Any), y (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "findatcoord": return new InjectionValue(bridge.FindAtCoord(Arg(0), Arg(1)));

UO.FindByNotoriety

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

int UO.FindByNotoriety(object? distance, object? notoriety);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24, object? notoriety25);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24, object? notoriety25, object? notoriety26);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24, object? notoriety25, object? notoriety26, object? notoriety27);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24, object? notoriety25, object? notoriety26, object? notoriety27, object? notoriety28);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24, object? notoriety25, object? notoriety26, object? notoriety27, object? notoriety28, object? notoriety29);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24, object? notoriety25, object? notoriety26, object? notoriety27, object? notoriety28, object? notoriety29, object? notoriety30);
int UO.FindByNotoriety(object? distance, object? notoriety, object? notoriety2, object? notoriety3, object? notoriety4, object? notoriety5, object? notoriety6, object? notoriety7, object? notoriety8, object? notoriety9, object? notoriety10, object? notoriety11, object? notoriety12, object? notoriety13, object? notoriety14, object? notoriety15, object? notoriety16, object? notoriety17, object? notoriety18, object? notoriety19, object? notoriety20, object? notoriety21, object? notoriety22, object? notoriety23, object? notoriety24, object? notoriety25, object? notoriety26, object? notoriety27, object? notoriety28, object? notoriety29, object? notoriety30, object? notoriety31);

์ง€์ •๋œ ์•…๋ช… ์ƒํƒœ ์ค‘ ํ•˜๋‚˜์™€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋‹ค๋ฅธ ๋ฌธ์ž/NPC๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์ , ์•„๊ตฐ ๋˜๋Š” ๊ด€์ฐฐ๋œ ๋Œ€์ƒ์„ ์„ ํƒํ•œ ๋‹ค์Œ ๊ณต๊ฒฉํ• ์ง€ ์•„๋‹ˆ๋ฉด ๋”ฐ๋ผ๊ฐˆ์ง€ ๋ณ„๋„๋กœ ๊ฒฐ์ •ํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

  • distance โ€” ์…€์„ ํฌํ•จํ•œ ์ˆ˜ํ‰ ๋ฐ˜๊ฒฝ: 5๋Š” ๊ฑฐ๋ฆฌ 0..5๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ๋ฆฌ๋Š” max(abs(dx),abs(dy))์ด๋ฏ€๋กœ ์ธ์ ‘ํ•œ ๋Œ€๊ฐ์„ ๋„ 1์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆซ์ž๊ฐ€ ์Œ์ˆ˜์ธ ๊ฒฝ์šฐ์—๋Š” ๋ฌด์ œํ•œ ๊ฒ€์ƒ‰์ด ์•„๋‹Œ UO.FindDistance()์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. 0๋Š” ๋™์ผํ•œ X/Y ์…€์„ ๋‚จ๊น๋‹ˆ๋‹ค. ๊ฒฝ๋กœ์˜ ๊ธธ์ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์žฅ์• ๋ฌผ๊ณผ ๋ฐ”๋‹ฅ์€ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ™•์ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety โ€” ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ์บ๋ฆญํ„ฐ์™€์˜ ๊ด€๊ณ„ ์ƒํƒœ: 0 โ€” ์•Œ ์ˆ˜ ์—†์Œ, 1 โ€” ๋ฌด์ฃ„, 2 โ€” ๋™๋งน, 3 โ€” ํšŒ์ƒ‰, 4 โ€” ๋ฒ”์ฃ„, 5 โ€” ์ , 6 โ€” ์‚ด์ธ์ž, 7 - ๋ฌด์ ์ž…๋‹ˆ๋‹ค. ์ˆซ์ž๋Š” ํ•˜๋‚˜์˜ ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. "5|6" ๋˜๋Š” ์ˆซ์ž ๋ฐฐ์—ด - ์œ„ ํ•ญ๋ชฉ ์ค‘ ํ•˜๋‚˜. ์˜ท์˜ ์ƒ‰๊น”์ด๋‚˜ ์ˆ˜์—…์˜ ์ƒ‰๊น”์ด ์•„๋‹™๋‹ˆ๋‹ค. ์Œ์ˆ˜(๋ณดํ†ต -1), 0xFFFF, "any", ๋นˆ ๋ฌธ์ž์—ด ๋˜๋Š” ๋นˆ ๋ฐฐ์—ด์€ ์ด ํ•„ํ„ฐ๋ฅผ ๋ณ„๋„๋กœ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์œ ํšจํ•œ ์ˆซ์ž๊ฐ€ ์—†๋Š” ์ž˜๋ชป๋œ ๋ฌธ์ž์—ด์€ ๋ˆ„๊ตฌ๋„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ƒํƒœ ์ˆœ์„œ์— ๋”ฐ๋ผ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 5 ํ•„ํ„ฐ๋Š” NPC/๋ชฌ์Šคํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์„ ํƒํ•˜๋Š” ๋Œ€์‹  ์ ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ๊ฐ’์€ ์„œ๋ฒ„์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐ’์€ OR(์ˆซ์ž 5, ๋ฌธ์ž์—ด "5|6" ๋˜๋Š” ์ˆซ์ž/์ˆซ์ž ๋ฌธ์ž์—ด์˜ ๋‹จ์ˆœ ๋ฐฐ์—ด)๋กœ ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค. ํ‰๋ฉด ๋ฐฐ์—ด๊ณผ ๊ฐœ๋ณ„ ์ธ์ˆ˜๋ฅผ ํ˜ผํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ’์˜ ์ˆœ์„œ๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ํ† ํฐ์€ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ์™„์ „ํžˆ ์ž˜๋ชป๋œ ๋งˆ์Šคํฌ๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ฐพ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ค‘์ฒฉ ๋ฐฐ์—ด์€ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์ž˜๋ชป๋œ ์š”์†Œ๋กœ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์ฐจ์› ๋งˆ์Šคํฌ๋Š” ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety2 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety3 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety4 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety5 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety6 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety7 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety8 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety9 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety10 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety11 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety12 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety13 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety14 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety15 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety16 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety17 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety18 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety19 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety20 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety21 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety22 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety23 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety24 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety25 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety26 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety27 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety28 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety29 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety30 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • notoriety31 - ์„ ํƒ์ ์ธ ์ถ”๊ฐ€ ์•…๋ช… ๋งˆ์Šคํฌ; ์•…๋ช…๊ณผ ๊ฐ™์€ ํ˜•ํƒœ. OR์„ ํ†ตํ•ด ์ด์ „ ๊ฒƒ๋“ค๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉฐ ๋ณ„๋„์˜ ๋ฐ˜๊ฒฝ, hue, Z ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

int - ์„ ํƒํ•œ mobile์˜ serial ๋˜๋Š” ์ ํ•ฉํ•œ ํ•ญ๋ชฉ์ด ์—†๋Š” ๊ฒฝ์šฐ 0. ์ด๋Š” graphic/type, ๋ฐœ๊ฒฌ๋œ ๊ฐœ์ฒด ์ˆ˜ ๋˜๋Š” true/false๊ฐ€ ์•„๋‹Œ ID์ž…๋‹ˆ๋‹ค. if (found != 0) { ... }, notfound == true๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ๋ฐœ๊ฒฌ๋œ ID๋Š” UO.AddObject, UO.Attack ๋˜๋Š” UO.Follow๋กœ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐ ๊ฒŒ์ž„ ์ž‘์—…์€ ๋ณ„๋„๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋™์ž‘

  • ๊ฒ€์ƒ‰์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฏธ ๋‹ค์šด๋กœ๋“œํ•œ ๋ชจ๋ฐ”์ผ๋งŒ ์ฝ์Šต๋‹ˆ๋‹ค. ํŒŒ๊ธฐ๋œ ๊ธฐ๋ก๊ณผ Ignore๋Š” ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ํ˜ธ์ถœ ์ž์ฒด๋Š” ๋Œ€์ƒ์„ ์—ด์ง€ ์•Š๊ณ , ๊ณต๊ฒฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋Œ€์ƒ์œผ๋กœ ์ด๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์„œ๋ฒ„์— ์›๊ฒฉ ๊ฐœ์ฒด๋ฅผ ์š”์ฒญํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ฑฐ๋ฆฌ๋Š” ๊ฒฝ๋กœ ๊ธธ์ด๊ฐ€ ์•„๋‹Œ ๊ธฐํ•˜ํ•™์  max(abs(dx),abs(dy))์ž…๋‹ˆ๋‹ค. ๊ทผ์ ‘์„ฑ์ด ์žˆ๋‹ค๊ณ  ํ•ด์„œ ๋ฒฝ์ด ์—†๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ธต์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ฑ์ด ๋ณด์žฅ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฐ˜ํ’ˆ ์‹œ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒ๋ช…, ์Šคํ…”์Šค, ์‹œ์•ผ๋Š” ์ž๋™์œผ๋กœ ํ™•์ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ค‘์š”ํ•˜๋‹ค๋ฉด GetMobiles๋ฅผ aliveOnly/visibleOnly์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ง์ ‘ ํ™•์ธํ•˜์„ธ์š”. ์  ์ƒํƒœ์˜ ์„œ๋ฒ„๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด์„œ NPC๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
  • FindItem, FindCount ๋˜๋Š” GetFoundItems๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ํ•„๋“œ์—๋Š” ์ด์ „ ๋‹ค๋ฅธ ๋ช…๋ น์˜ ๊ฒฐ๊ณผ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜๋œ ID๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • ์ตœ์†Œํ•œ ๋‘ ๊ฐ€์ง€ ์ฃผ์žฅ: ๊ฑฐ๋ฆฌ, ์•…๋ช…. ์ตœ๋Œ€ 32: ๋ฐ˜๊ฒฝ ๋ฐ ์ตœ๋Œ€ 31 ๋งˆ์Šคํฌ. ๋” ๋งŽ์€ ๊ฐ’์„ ์–ป์œผ๋ ค๋ฉด ํ‰๋ฉด ๋ฐฐ์—ด์„ ํ•˜๋‚˜์˜ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜์„ธ์š”. ํ•„ํ„ฐ ์ œ๊ฑฐ: -1/any/0xFFFF/๋นˆ ๋ฌธ์ž์—ด ๋˜๋Š” ๋นˆ ๋ฐฐ์—ด์„ ๋ณ„๋„๋กœ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ์ฝ”๋“œ๊ฐ€ ๋‚˜๋ž€ํžˆ ๋‚˜์—ด๋˜์–ด ์žˆ์œผ๋ฉด ์ œํ•œ ์‚ฌํ•ญ์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
  • self๋Š” ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ์ฐจ์ด Z์˜ ํ•œ๊ณ„๋กœ UO.FindVertical()๋ฅผ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์—๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ maxZ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ๊ฒฝ์šฐ ํ•ญ์ƒ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒƒ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค(๋” ์ž‘์€ ๊ฒƒ serial). ์•…๋ช… ์ดํ›„์˜ ๋…ผ์Ÿ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์•…๋ช…์ด๋ฉฐ ๊ฐ€์žฅ ๊ฐ€๊น์ง€๋„ ์•Š๊ณ  body๋„ ์•„๋‹™๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋ฅผ ์ €๋„์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋ฅผ bool๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐฐ์—ด์ด๋ฉด ์š”์†Œ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

var result = UO.FindByNotoriety(12, "5|6");
UO.Print("FindByNotoriety: " + Convert.ToString(result));

1. ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋Œ€์ƒ์„ ์„ ํƒํ•˜๊ณ  ์ด๋ฆ„์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ์ €์žฅ๋œ ์ƒ๋Œ€๋Š” ๋‚˜์ค‘์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ˆ๋Š” ๊ณต๊ฒฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ FindVertical๋Š” ํƒ€๊ฒŸ์ด X/Y ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๊นŒ์ด ์žˆ์–ด๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
var found = UO.FindByNotoriety(12, "5|6");
if (Truth(found != 0))
{
    UO.AddObject("opponent", found);
    UO.Print("Selected: " + UO.GetName(found));
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. ๋ฐฐ์—ด์˜ ์ƒํƒœ ๋ชฉ๋ก๊ณผ ๋ณ„๋„์˜ ์ฝ”๋“œ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ํ—ˆ์šฉ๋˜๋Š” ์ ์—๋Š” ๋ณ„๋„์˜ 6๊ฐ€ ์‚ด์ธ์ž๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ƒํƒœ๋Š” ์šฐ์„ ์ˆœ์œ„๋ณ„๋กœ ์ •๋ ฌ๋˜์ง€ ์•Š๊ณ  ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ๋Š” ์‚ด์•„์žˆ๋Š” ์ฑ„๋กœ ๋ฐœ๊ฒฌ๋œ ์‚ฌ๋žŒ์— ๋Œ€ํ•œ ๊ณต๊ฒฉ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค mobile; ์„œ๋ฒ„ ๊ทœ์น™์€ ํ—ˆ์šฉ๋˜๋Š” ์‚ฌํ•ญ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    dynamic[] allowed = new dynamic[checked((int)(0) + 1)];
    allowed[0] = 5;
    var found = UO.FindByNotoriety(8, allowed, 6);
    if (Truth(found != 0) && !(Truth(UO.IsDead(found))))
    {
        UO.Attack(found);
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. ์™„์ „ํ•œ ๋™์ผ ๋†’์ด ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ - ์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ๋ฐ˜๊ฒฝ โ€” ์…€์˜ ๋ฐ˜๊ฒฝ X/Y. FindVertical(0)์—๋Š” ๋™์ผํ•œ Z๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฐ”๋‹ฅ์ด๋‚˜ ๋ฒฝ ๊ฒ€์‚ฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ID/0๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์„ค์ •์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var found = FindOpponentAtSameLevel(10);
        if (Truth(found != 0))
        {
            UO.AddObject("same_level", found);
        }

        return null;
    }

    dynamic FindOpponentAtSameLevel(dynamic radius)
    {
        var previous = UO.FindVertical();
        try
        {
            UO.FindVertical(0);
            return UO.FindByNotoriety(radius, "5|6");
        }
        finally
        {
            UO.FindVertical(previous);
        }
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.FindByNotoriety(distance, notoriety) โ€” UO.FindByNotoriety(Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2) โ€” UO.FindByNotoriety(Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3) โ€” UO.FindByNotoriety(Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24, notoriety25) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any), notoriety25 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24, notoriety25, notoriety26) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any), notoriety25 (Any), notoriety26 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24, notoriety25, notoriety26, notoriety27) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any), notoriety25 (Any), notoriety26 (Any), notoriety27 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24, notoriety25, notoriety26, notoriety27, notoriety28) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any), notoriety25 (Any), notoriety26 (Any), notoriety27 (Any), notoriety28 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24, notoriety25, notoriety26, notoriety27, notoriety28, notoriety29) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any), notoriety25 (Any), notoriety26 (Any), notoriety27 (Any), notoriety28 (Any), notoriety29 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24, notoriety25, notoriety26, notoriety27, notoriety28, notoriety29, notoriety30) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any), notoriety25 (Any), notoriety26 (Any), notoriety27 (Any), notoriety28 (Any), notoriety29 (Any), notoriety30 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindByNotoriety(distance, notoriety, notoriety2, notoriety3, notoriety4, notoriety5, notoriety6, notoriety7, notoriety8, notoriety9, notoriety10, notoriety11, notoriety12, notoriety13, notoriety14, notoriety15, notoriety16, notoriety17, notoriety18, notoriety19, notoriety20, notoriety21, notoriety22, notoriety23, notoriety24, notoriety25, notoriety26, notoriety27, notoriety28, notoriety29, notoriety30, notoriety31) โ€” UO.FindByNotoriety(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: distance (Any), notoriety (Any), notoriety2 (Any), notoriety3 (Any), notoriety4 (Any), notoriety5 (Any), notoriety6 (Any), notoriety7 (Any), notoriety8 (Any), notoriety9 (Any), notoriety10 (Any), notoriety11 (Any), notoriety12 (Any), notoriety13 (Any), notoriety14 (Any), notoriety15 (Any), notoriety16 (Any), notoriety17 (Any), notoriety18 (Any), notoriety19 (Any), notoriety20 (Any), notoriety21 (Any), notoriety22 (Any), notoriety23 (Any), notoriety24 (Any), notoriety25 (Any), notoriety26 (Any), notoriety27 (Any), notoriety28 (Any), notoriety29 (Any), notoriety30 (Any), notoriety31 (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(FindFilteredMobileSerial(-1, CombineMask(values, 1),

                        NumberConversions.ToInt(values[0]), true, bridge.GetFindVertical(), -1, false))

UO.FindCount

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

int UO.FindCount();
int UO.FindCount(object? id);

ID๊ฐ€ ์ „๋‹ฌ๋˜๋ฉด ์ง€์ •๋œ ์Šคํƒ์— ์žˆ๋Š” 1์˜ ๊ฐœ์ˆ˜๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ์—†๋Š” ํ˜•์‹์€ ๋งˆ์ง€๋ง‰ ๊ฒ€์ƒ‰์˜ ๊ฐœ์ฒด ์ˆ˜๋ผ๋Š” ๋ณ„๋„์˜ ์˜๋ฏธ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

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

  • id โ€” ํŠน์ • ๊ฐœ์ฒด์˜ ์ผ๋ จ๋ฒˆํ˜ธ/ID: int, 10์ง„์ˆ˜/16์ง„์ˆ˜ ๋ฌธ์ž์—ด ๋˜๋Š” ๋ณ„์นญ ์„ค์ • self, backpack, lasttarget, lastobject ๋˜๋Š” ์ด๋ฆ„ AddObject. ์ด๊ฒƒ์€ graphic/type์ด ์•„๋‹™๋‹ˆ๋‹ค. ์„ ํƒ์  ์ธ์ˆ˜. ID๊ฐ€ ์ „๋‹ฌ๋˜๋ฉด ์ด ํŠน์ • ํ•ญ๋ชฉ์˜ ํ˜„์žฌ ๊ธˆ์•ก์„ ์ฝ์Šต๋‹ˆ๋‹ค. finditem ๋ณ„์นญ์€ ์ฒซ ๋ฒˆ์งธ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ์—†์œผ๋ฉด ๋ฐœ๊ฒฌ๋œ ๊ฐœ์ฒด ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

int: FindCount(id) โ€” ์ง€์ •๋œ ์Šคํƒ์— ์žˆ๋Š” ๋‹จ์œ„ ์ˆ˜(Amount); ์ผ๋ฐ˜์ ์ธ ๋‹จ์ผ ํ•ญ๋ชฉ์€ 1์„ ์ œ๊ณตํ•˜๊ณ , ์•Œ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ œ๊ฑฐ๋œ ํ•ญ๋ชฉ, ์ž˜๋ชป๋œ ๋ณ„์นญ ๋˜๋Š” ๋ชจ๋ฐ”์ผ์€ 0์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ID๊ฐ€ ์—†๋Š” FindCount()๋Š” ๋งˆ์ง€๋ง‰ ๊ฒ€์ƒ‰์˜ ๊ฐœ์ฒด ์ˆ˜์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์Šคํƒ์€ ์–‘์— ๊ด€๊ณ„์—†์ด ํ•˜๋‚˜์˜ ๊ฐœ์ฒด๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 20, 50 ๋ฐ 100์˜ 3๊ฐœ ์Šคํƒ: FindCount()=3, FindCount(๋‘ ๋ฒˆ์งธ ์Šคํƒ์˜ ID)=50, FindFullQuantity()=170.

๋™์ž‘

  • FindCount(id)๋Š” GetQuantity(id)๋ฅผ ์ฝ๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋ฉฐ ๊ฒ€์ƒ‰์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉฐ FindItem/FindCount()/FindFullQuantity/GetFoundItems๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ID๋Š” type๊ฐ€ ์•„๋‹Œ ํŠน์ • ํ•ญ๋ชฉ์˜ serial๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ๋œ ์ˆ˜๋Ÿ‰์€ ๋‹ค์Œ FindCount(id) ํ˜ธ์ถœ ์‹œ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ์ œ๊ฑฐ๋œ ํ’ˆ๋ชฉ์˜ ์ˆ˜๋Ÿ‰์€ 0์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์Šคํƒ์„ ์ž๋™์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ธ์ˆ˜๊ฐ€ ์—†๋Š” ์›๋ž˜ ํ˜ธํ™˜์„ฑ์€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. FindCount()๋Š” ๊ฐœ์ฒด ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. FindQuantity()๋Š” ๋ฐœ๊ฒฌ๋œ ์Šคํƒ ํ•˜๋‚˜๋ฅผ ์ฝ๊ณ , FindFullQuantity()๋Š” ๋งˆ์ง€๋ง‰ ๊ฒ€์ƒ‰์—์„œ ๋‹จ์œ„๋ฅผ ํ•ฉ์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋Š” ์ด ์Šคํฌ๋ฆฝํŠธ์˜ ๋งˆ์ง€๋ง‰ ์ผ๋ฐ˜ ๊ฒ€์ƒ‰์— ์†ํ•ฉ๋‹ˆ๋‹ค. FindType๋Š” 1โ€“5 ์ธ์ˆ˜, FindTypeEx, Count/CountEx/CountGround๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ด ์Šค๋ƒ…์ƒท์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ๋Š” ๊ณ ๊ธ‰ ํ•„ํ„ฐ๋ง๋œ ๋ฌธ์ž ๋ช…๋ น์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์—†๋Š” ์ƒˆ ๊ฒ€์ƒ‰์—์„œ๋Š” FindItem, FindCount ๋ฐ FindFullQuantity๊ฐ€ ์ง€์›Œ์ง€๊ณ  GetFoundItems๊ฐ€ ์ง€์›Œ์ง‘๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋ฅผ ์ฝ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ƒˆ๋กœ์šด ๊ฒ€์ƒ‰์ด ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋ฅผ ์ €๋„์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋ฅผ bool๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐฐ์—ด์ด๋ฉด ์š”์†Œ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

UO.FindType(0x0EED, -1, "backpack");
var result = UO.FindCount();
UO.Print("FindCount: " + Convert.ToString(result));

1. ID์— ์˜ํ•œ ํŠน์ • ์Šคํƒ์˜ ์ˆ˜๋Ÿ‰ - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • id=0x40001234๋Š” serial ์Šคํƒ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. ํ•ญ๋ชฉ์˜ ID๋ฅผ ๊ท€ํ•˜์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.
  • 50 ๋‹จ์œ„ ์Šคํƒ์€ 50๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ํ•ญ๋ชฉ - 1; ์•Œ ์ˆ˜ ์—†์Œ ID - 0.
var amount = UO.FindCount("0x40001234");
UO.Print("Units: " + Convert.ToString(amount));

2. ํ•ญ๋ชฉ ์ฐพ๊ธฐ ๋ฐ ์ˆ˜๋Ÿ‰ ์ฝ๊ธฐ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • FindType๋Š” type ๊ณจ๋“œ 0x0EED, ๋ชจ๋“  hue=-1, ์ง€์—ญ backpack์„ ๋ฐ›๊ณ  serial๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ˜ํ™˜๋œ serial ํ•ญ๋ชฉ์€ FindCount๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. type 0x0EED ์ž์ฒด๋Š” ์—ฌ๊ธฐ๋กœ ์ „์†กํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    var item = UO.FindType(0x0EED, -1, "backpack");
    if (Truth(item != ""))
    {
        var units = UO.FindCount(item);
        UO.Print(Convert.ToString(units));
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. ๋งˆ์ง€๋ง‰ ๋Œ€์ƒ์˜ ์ˆ˜๋Ÿ‰๊ณผ ์ €์žฅ๋œ ์ด๋ฆ„์˜ ์ˆ˜๋Ÿ‰์€ ์‹œ๋‚˜๋ฆฌ์˜ค ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • lasttarget ์ฃผ์ œ๋ฅผ ๊ฐ€๋ฆฌ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. AddObject ์ด๊ฒƒ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค serial selected_stack์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ.
  • FindCount๋Š” ์ด๋ฆ„์„ ID๋กœ ํ™•์ธํ•˜๊ณ  ๊ธˆ์•ก์„ ์ฝ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ž ๋Œ€์ƒ์„ ์„ ํƒํ•˜๋ฉด 0๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var item = UO.GetSerial("lasttarget");
        if (Truth(UO.Exists(item)))
        {
            UO.AddObject("selected_stack", item);
            UO.Print(Convert.ToString(UO.FindCount("selected_stack")));
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

4. ๊ธˆ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ธก์ • - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • type=0x0EED โ€“ ๊ธˆ; color=-1 โ€” ๋ชจ๋“  hue; backpack - ์ด ํ˜•์‹์—๋Š” ๋ฐฐ๋‚ญ์˜ ์ง์ ‘์ ์ธ ๋‚ด์šฉ๋งŒ FindType๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • int โ€” ๋ฐœ๊ฒฌ๋œ ํ•ญ๋ชฉ/๋ฌธ์ž ์ˆ˜, 0 ์ผ์น˜ ํ•ญ๋ชฉ ์—†์Œ. 1000 ์œ ๋‹› 1๊ฐœ ์Šคํƒ์€ ํ•˜๋‚˜์˜ ๊ฐœ์ฒด๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹จ์œ„์˜ ํ•ฉ์ด ์•„๋‹™๋‹ˆ๋‹ค. FindFullQuantity๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
var found = UO.FindType(0x0EED, -1, "backpack");
var value = UO.FindCount();
UO.Print(Convert.ToString(value));

5. ํ’ˆ๋ชฉ ๋ฐ ๋‹จ์œ„ ๋น„๊ต - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • 4๊ฐœ์˜ ์ฝ๊ธฐ๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ๊ฒ€์ƒ‰์ด ํ˜ธ์ถœ๋  ๋•Œ๊นŒ์ง€ ํ•˜๋‚˜์˜ ๊ฒ€์ƒ‰์— ์†ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, 50 ๋‘ ๊ฐœ์˜ ์Šคํƒ: Items=2, ์ฒซ ๋ฒˆ์งธ ์Šคํƒ=50, ๋ชจ๋“  ์œ ๋‹›=100; ์ฒซ ๋ฒˆ์งธ ID์—๋Š” ํ•œ ์Šคํƒ์˜ ๊ณ ์œ ํ•œ ID์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    var found = UO.FindType(0x0EED, -1, "backpack");
    UO.Print("Items: " + Convert.ToString(UO.FindCount()));
    UO.Print("First stack: " + Convert.ToString(UO.FindQuantity()));
    UO.Print("All units: " + Convert.ToString(UO.FindFullQuantity()));
    UO.Print("First ID: 0x" + Hex(UO.FindItem()));
    return null;
}

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

6. ๋‹ค์Œ ๊ฒ€์ƒ‰๊นŒ์ง€ ๊ฒฐ๊ณผ ์ €์žฅ - ์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ์ฒซ ๋ฒˆ์งธ type๋Š” ๊ธˆ์ด๊ณ , ๋‘ ๋ฒˆ์งธ 0x0F7A๋Š” ๋ณ„๋„์˜ ์‹œ์•ฝ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ํŒ€์€ ์ „์ฒด์ ์ธ ์ƒท์„ ๋ฐ”๊พผ๋‹ค.
  • ์ €์žฅ๋œ ๋ฒˆํ˜ธ๋Š” ์ฒซ ๋ฒˆ์งธ ๊ฒ€์ƒ‰์˜ ๋ฒˆํ˜ธ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ํŒ๋…๊ฐ’์€ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์—†๋”๋ผ๋„ ์‹œ์•ฝ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var found = UO.FindType(0x0EED, -1, "backpack");
        var saved = UO.FindCount();
        found = UO.FindType(0x0F7A, -1, "backpack");
        UO.Print("Saved: " + Convert.ToString(saved));
        UO.Print("Current: " + Convert.ToString(UO.FindCount()));
        return null;
    }
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.FindCount() โ€” UO.FindCount()

๋งค๊ฐœ๋ณ€์ˆ˜: ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

public int FindCount() => bridge.FindCount();

UO.FindCount(id) โ€” UO.FindCount(Any)

๋งค๊ฐœ๋ณ€์ˆ˜: id (Any)

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

public int FindCount(InjectionValue id) => bridge.GetQuantity(GetObject(id));

UO.FindDistance

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

int UO.FindDistance();
void UO.FindDistance(object? value);

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

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

  • value - ์„ ํƒ์‚ฌํ•ญ int. ๋…ผ์Ÿ ์—†์ด - ์ฝ๊ธฐ; ๊ฐ’ - ์„ค์ •. ๊ฐ’์€ 0..255 ๋ฒ”์œ„๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์Œ์ˆ˜๋Š” ๋ฌด์ œํ•œ์ด ์•„๋‹Œ 0๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋Ÿฐํƒ€์ž„: 18; ๋ณต์›๋œ ์ƒํƒœ์—๋Š” ๋‹ค๋ฅธ ๊ฐ’์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„์ˆ˜๋Š” 0์œผ๋กœ ์ž˜๋ฆฝ๋‹ˆ๋‹ค. ์ˆซ์ž ๋ฌธ์ž์—ด double/0x๋„ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ์•”์‹œ์  ๋ณ€ํ™˜์„ ํ”ผํ•˜๋ ค๋ฉด int๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋ฐ˜ํ™˜๊ฐ’

์ธ์ˆ˜ ์—†์Œ: int๋Š” ํ˜„์žฌ ์ œํ•œ(์…€์˜ ๊ฑฐ๋ฆฌ)์ด๋ฉฐ ์ฐพ์„ ์ˆ˜ ์—†์Œ ID, ๊ฐœ์ฒด ์ˆ˜ ๋˜๋Š” bool์ž…๋‹ˆ๋‹ค. 0๋Š” ์‹คํŒจ๊ฐ€ ์•„๋‹Œ ์ œ๋กœ ํ•œ๊ณ„๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’ ํฌํ•จ: void - ๊ฐ’ ์—†์Œ; ์ด๊ฒƒ์€ true/false ๋˜๋Š” ์ด์ „ ์„ค์ •์ด ์•„๋‹™๋‹ˆ๋‹ค. ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด FindDistance()์„ ์ฝ์–ด ์ €์žฅ๋œ ๊ฐ’์„ ์•Œ์•„๋ณด์„ธ์š”.

๋™์ž‘

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

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋ฅผ ์ €๋„์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋ฅผ bool๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐฐ์—ด์ด๋ฉด ์š”์†Œ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

var result = UO.FindDistance();
UO.Print("FindDistance: " + Convert.ToString(result));

1. ์ฝ๊ธฐ, ์„ค์ • ๋ฐ ๋ฒ”์œ„ ์ œํ•œ - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ์ด์ „ ์‹ค์ œ ์„ค์ •์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. value:=5๋Š” ์ •์ƒ ํ•œ๊ณ„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 1000๋Š” 255๊นŒ์ง€์˜ ํ•œ๊ณ„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. Print๋Š” ์ธ์ˆ˜ ์—†์ด ๋ณ„๋„์˜ ํ˜ธ์ถœ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ด์ „์„ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.
var previous = UO.FindDistance();
try
{
    UO.FindDistance(5);
    UO.Print(Convert.ToString(UO.FindDistance()));
    UO.FindDistance(1000);
    UO.Print(Convert.ToString(UO.FindDistance()));
}
finally
{
    UO.FindDistance(previous);
}

2. ์ž„์‹œ ์ง€์ƒ ์ˆ˜์ƒ‰ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ์ด์ „ ํ˜ธ์ถœ ์ฝ”๋“œ์˜ ์„ค์ •์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. 5๋Š” FindDistance๋งŒ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ํ•œ๋„๋Š” ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. 0x0EED - ๊ณจ๋“œ ๊ทธ๋ž˜ํ”ฝ, -1 - ๋ชจ๋“  hue, Container=-1 - ์›”๋“œ, false - ์ปจํ…Œ์ด๋„ˆ ์žฌ๊ท€ ์—†์Œ. id - ํ•˜๋‚˜ serial; != 0 ๊ฐ€์šฉ์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. FindCount ์ „์ฒด ๊ฐœ์ฒด/์Šคํƒ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ ๊ฒฐ๊ณผ ๋ชฉ๋ก์ด ์•„๋‹Œ ์„ค์ •์„ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    var previous = UO.FindDistance();
    try
    {
        UO.FindDistance(5);
        var id = UO.FindTypeEx(0x0EED, -1, -1, false);
        if (Truth(id != 0))
        {
            UO.Print(Hex(id) + ":" + Convert.ToString(UO.FindCount()));
        }
        else
        {
            UO.Print("0");
        }
    }
    finally
    {
        UO.FindDistance(previous);
    }

    return null;
}

string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. ์ „์ฒด ๊ธฐ๋Šฅ CountGroundInRange - ์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • CountGroundInRange(graphic, radius, height)๋Š” ๋‘ ์ œํ•œ์„ ๋ชจ๋‘ ์ €์žฅํ•˜๊ณ , radius=5 ๋ฐ height=10๋ฅผ ์„ค์ •ํ•˜๊ณ , graphic=0x0EED๋ฅผ ์ฐพ์•„ FindCount()๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ์€ ํ•˜๋‚˜์˜ ๊ฐœ์ฒด๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์ „์ฒด ๊ธฐ๋Šฅ์€ Main ๋‹ค์Œ์— ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฆฌํ„ด์„ ํ†ตํ•ด ์ข…๋ฃŒํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋‘ ์ œํ•œ์„ ๋ชจ๋‘ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋Š” ๊ณ„์† ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var count = CountGroundInRange(0x0EED, 5, 10);
        UO.Print(Convert.ToString(count));
        return null;
    }

    dynamic CountGroundInRange(dynamic graphic, dynamic radius, dynamic 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);
        }
    }
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.FindDistance() โ€” UO.FindDistance()

๋งค๊ฐœ๋ณ€์ˆ˜: ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ: int / Integer.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "finddistance":

                    if (arguments.Length > 0) { bridge.SetFindDistance(Arg(0)); return InjectionValue.Unit; }

                    return new InjectionValue(bridge.GetFindDistance());

UO.FindDistance(value) โ€” UO.FindDistance(Any)

๋งค๊ฐœ๋ณ€์ˆ˜: value (Any)

๊ฒฐ๊ณผ: void / Unit.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "finddistance":

                    if (arguments.Length > 0) { bridge.SetFindDistance(Arg(0)); return InjectionValue.Unit; }

                    return new InjectionValue(bridge.GetFindDistance());

UO.FindFullQuantity

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

dynamic UO.FindFullQuantity();

๋งˆ์ง€๋ง‰ ๊ฒ€์ƒ‰ ์Šค๋ƒ…์ƒท์˜ ์ด ๋‹จ์œ„ ์ˆ˜๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค.

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

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

int โ€” ๋ฐœ๊ฒฌ๋œ ํ•ญ๋ชฉ์˜ ์ตœ๋Œ€ ํ•ฉ๊ณ„(1, Amount); ๋ฐœ๊ฒฌ๋œ ๊ฐ ๋ฌธ์ž๋Š” 1๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. 0 ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์—†์Šต๋‹ˆ๋‹ค. 50 ๋‘ ๋ฌถ์Œ์€ 100๋ฅผ ์‚ฐ์ถœํ•˜๊ณ , FindCount๋Š” 2์„ ์‚ฐ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ธˆ์•ก์ด ์•„๋‹Œ ๊ฒ€์ƒ‰ ๋‹น์‹œ์˜ ์Šค๋ƒ…์ƒท์ž…๋‹ˆ๋‹ค.

๋™์ž‘

  • ๋ฐ์ดํ„ฐ๋Š” ์ด ์Šคํฌ๋ฆฝํŠธ์˜ ๋งˆ์ง€๋ง‰ ์ผ๋ฐ˜ ๊ฒ€์ƒ‰์— ์†ํ•ฉ๋‹ˆ๋‹ค. FindType๋Š” 1โ€“5 ์ธ์ˆ˜, FindTypeEx, Count/CountEx/CountGround๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ด ์Šค๋ƒ…์ƒท์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ๋Š” ๊ณ ๊ธ‰ ํ•„ํ„ฐ๋ง๋œ ๋ฌธ์ž ๋ช…๋ น์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์—†๋Š” ์ƒˆ ๊ฒ€์ƒ‰์—์„œ๋Š” FindItem, FindCount ๋ฐ FindFullQuantity๊ฐ€ ์ง€์›Œ์ง€๊ณ  GetFoundItems๊ฐ€ ์ง€์›Œ์ง‘๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋ฅผ ์ฝ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ƒˆ๋กœ์šด ๊ฒ€์ƒ‰์ด ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋ฅผ ์ €๋„์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋ฅผ bool๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐฐ์—ด์ด๋ฉด ์š”์†Œ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

UO.FindType(0x0EED, -1, "backpack");
object? result = UO.FindFullQuantity();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. ๊ธˆ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ธก์ • - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • type=0x0EED โ€“ ๊ธˆ; color=-1 โ€” ๋ชจ๋“  hue; backpack - ์ด ํ˜•์‹์—๋Š” ๋ฐฐ๋‚ญ์˜ ์ง์ ‘์ ์ธ ๋‚ด์šฉ๋งŒ FindType๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • int โ€” ๋ฐœ๊ฒฌ๋œ ํ•ญ๋ชฉ์˜ ์ตœ๋Œ€ ํ•ฉ๊ณ„(1, Amount); ๋ฐœ๊ฒฌ๋œ ๊ฐ ๋ฌธ์ž๋Š” 1๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. 0 ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์—†์Šต๋‹ˆ๋‹ค. 50 ๋‘ ๋ฌถ์Œ์€ 100๋ฅผ ์‚ฐ์ถœํ•˜๊ณ , FindCount๋Š” 2์„ ์‚ฐ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ธˆ์•ก์ด ์•„๋‹Œ ๊ฒ€์ƒ‰ ๋‹น์‹œ์˜ ์Šค๋ƒ…์ƒท์ž…๋‹ˆ๋‹ค.
var found = UO.FindType(0x0EED, -1, "backpack");
var value = UO.FindFullQuantity();
UO.Print(Convert.ToString(value));

2. ํ’ˆ๋ชฉ ๋ฐ ๋‹จ์œ„ ๋น„๊ต - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • 4๊ฐœ์˜ ์ฝ๊ธฐ๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ๊ฒ€์ƒ‰์ด ํ˜ธ์ถœ๋  ๋•Œ๊นŒ์ง€ ํ•˜๋‚˜์˜ ๊ฒ€์ƒ‰์— ์†ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, 50 ๋‘ ๊ฐœ์˜ ์Šคํƒ: Items=2, ์ฒซ ๋ฒˆ์งธ ์Šคํƒ=50, ๋ชจ๋“  ์œ ๋‹›=100; ์ฒซ ๋ฒˆ์งธ ID์—๋Š” ํ•œ ์Šคํƒ์˜ ๊ณ ์œ ํ•œ ID์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    var found = UO.FindType(0x0EED, -1, "backpack");
    UO.Print("Items: " + Convert.ToString(UO.FindCount()));
    UO.Print("First stack: " + Convert.ToString(UO.FindQuantity()));
    UO.Print("All units: " + Convert.ToString(UO.FindFullQuantity()));
    UO.Print("First ID: 0x" + Hex(UO.FindItem()));
    return null;
}

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

3. ๋‹ค์Œ ๊ฒ€์ƒ‰๊นŒ์ง€ ๊ฒฐ๊ณผ ์ €์žฅ - ์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ์ฒซ ๋ฒˆ์งธ type๋Š” ๊ธˆ์ด๊ณ , ๋‘ ๋ฒˆ์งธ 0x0F7A๋Š” ๋ณ„๋„์˜ ์‹œ์•ฝ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ํŒ€์€ ์ „์ฒด์ ์ธ ์ƒท์„ ๋ฐ”๊พผ๋‹ค.
  • ์ €์žฅ๋œ ๋ฒˆํ˜ธ๋Š” ์ฒซ ๋ฒˆ์งธ ๊ฒ€์ƒ‰์˜ ๋ฒˆํ˜ธ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ํŒ๋…๊ฐ’์€ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์—†๋”๋ผ๋„ ์‹œ์•ฝ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var found = UO.FindType(0x0EED, -1, "backpack");
        var saved = UO.FindFullQuantity();
        found = UO.FindType(0x0F7A, -1, "backpack");
        UO.Print("Saved: " + Convert.ToString(saved));
        UO.Print("Current: " + Convert.ToString(UO.FindFullQuantity()));
        return null;
    }
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.FindFullQuantity() โ€” UO.FindFullQuantity()

๋งค๊ฐœ๋ณ€์ˆ˜: ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ: dynamic / Any.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "findfullquantity": return new InjectionValue(bridge.FindFullQuantity());

UO.FindItem

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

dynamic UO.FindItem();

๋งˆ์ง€๋ง‰ ์ •๊ทœ ๊ฒ€์ƒ‰์˜ ์ฒซ ๋ฒˆ์งธ ๊ฒฐ๊ณผ์˜ serial๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค.

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

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

int - ์ฒ˜์Œ ๋ฐœ๊ฒฌํ•œ ๊ฐ์ฒด์˜ serial/ID, ๊ฒฐ๊ณผ๊ฐ€ ์—†์œผ๋ฉด 0. ์ด๋Š” ์ˆซ์ž serial์ธ ๋ฐ˜๋ฉด, FindType๋Š” 16์ง„์ˆ˜ ๋ฌธ์ž์—ด ๋˜๋Š” ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. type๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋™์ž‘

  • ๋ฐ์ดํ„ฐ๋Š” ์ด ์Šคํฌ๋ฆฝํŠธ์˜ ๋งˆ์ง€๋ง‰ ์ผ๋ฐ˜ ๊ฒ€์ƒ‰์— ์†ํ•ฉ๋‹ˆ๋‹ค. FindType๋Š” 1โ€“5 ์ธ์ˆ˜, FindTypeEx, Count/CountEx/CountGround๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ด ์Šค๋ƒ…์ƒท์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ๋Š” ๊ณ ๊ธ‰ ํ•„ํ„ฐ๋ง๋œ ๋ฌธ์ž ๋ช…๋ น์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์—†๋Š” ์ƒˆ ๊ฒ€์ƒ‰์—์„œ๋Š” FindItem, FindCount ๋ฐ FindFullQuantity๊ฐ€ ์ง€์›Œ์ง€๊ณ  GetFoundItems๊ฐ€ ์ง€์›Œ์ง‘๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋ฅผ ์ฝ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ƒˆ๋กœ์šด ๊ฒ€์ƒ‰์ด ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋ฅผ ์ €๋„์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋ฅผ bool๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐฐ์—ด์ด๋ฉด ์š”์†Œ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

UO.FindType(0x0EED, -1, "backpack");
object? result = UO.FindItem();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. ๊ธˆ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ธก์ • - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • type=0x0EED โ€“ ๊ธˆ; color=-1 โ€” ๋ชจ๋“  hue; backpack - ์ด ํ˜•์‹์—๋Š” ๋ฐฐ๋‚ญ์˜ ์ง์ ‘์ ์ธ ๋‚ด์šฉ๋งŒ FindType๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • int - ์ฒ˜์Œ ๋ฐœ๊ฒฌํ•œ ๊ฐ์ฒด์˜ serial/ID, ๊ฒฐ๊ณผ๊ฐ€ ์—†์œผ๋ฉด 0. ์ด๋Š” ์ˆซ์ž serial์ธ ๋ฐ˜๋ฉด, FindType๋Š” 16์ง„์ˆ˜ ๋ฌธ์ž์—ด ๋˜๋Š” ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. type๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
var found = UO.FindType(0x0EED, -1, "backpack");
var value = UO.FindItem();
UO.Print(Convert.ToString(value));

2. ํ’ˆ๋ชฉ ๋ฐ ๋‹จ์œ„ ๋น„๊ต - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • 4๊ฐœ์˜ ์ฝ๊ธฐ๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ๊ฒ€์ƒ‰์ด ํ˜ธ์ถœ๋  ๋•Œ๊นŒ์ง€ ํ•˜๋‚˜์˜ ๊ฒ€์ƒ‰์— ์†ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, 50 ๋‘ ๊ฐœ์˜ ์Šคํƒ: Items=2, ์ฒซ ๋ฒˆ์งธ ์Šคํƒ=50, ๋ชจ๋“  ์œ ๋‹›=100; ์ฒซ ๋ฒˆ์งธ ID์—๋Š” ํ•œ ์Šคํƒ์˜ ๊ณ ์œ ํ•œ ID์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    var found = UO.FindType(0x0EED, -1, "backpack");
    UO.Print("Items: " + Convert.ToString(UO.FindCount()));
    UO.Print("First stack: " + Convert.ToString(UO.FindQuantity()));
    UO.Print("All units: " + Convert.ToString(UO.FindFullQuantity()));
    UO.Print("First ID: 0x" + Hex(UO.FindItem()));
    return null;
}

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

3. ๋‹ค์Œ ๊ฒ€์ƒ‰๊นŒ์ง€ ๊ฒฐ๊ณผ ์ €์žฅ - ์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ์ฒซ ๋ฒˆ์งธ type๋Š” ๊ธˆ์ด๊ณ , ๋‘ ๋ฒˆ์งธ 0x0F7A๋Š” ๋ณ„๋„์˜ ์‹œ์•ฝ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ํŒ€์€ ์ „์ฒด์ ์ธ ์ƒท์„ ๋ฐ”๊พผ๋‹ค.
  • ์ €์žฅ๋œ ๋ฒˆํ˜ธ๋Š” ์ฒซ ๋ฒˆ์งธ ๊ฒ€์ƒ‰์˜ ๋ฒˆํ˜ธ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ํŒ๋…๊ฐ’์€ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์—†๋”๋ผ๋„ ์‹œ์•ฝ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var found = UO.FindType(0x0EED, -1, "backpack");
        var saved = UO.FindItem();
        found = UO.FindType(0x0F7A, -1, "backpack");
        UO.Print("Saved: " + Convert.ToString(saved));
        UO.Print("Current: " + Convert.ToString(UO.FindItem()));
        return null;
    }
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.FindItem() โ€” UO.FindItem()

๋งค๊ฐœ๋ณ€์ˆ˜: ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ: dynamic / Any.

ํ˜ธ์ถœ ์‹œ:

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

case "finditem": return new InjectionValue(bridge.FindItem);

UO.FindList

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C# ์‹œ๊ทธ๋‹ˆ์ฒ˜

string UO.FindList(object? list);
string UO.FindList(object? list, object? container);
string UO.FindList(object? list, object? container, object? distance);
string UO.FindList(object? list, object? container, object? distance, object? notoriety);
string UO.FindList(object? list, object? container, object? distance, object? notoriety, object? nearest);
string UO.FindList(object? list, object? container, object? distance, object? notoriety, object? nearest, object? maxZ);
string UO.FindList(object? list, object? container, object? distance, object? notoriety, object? nearest, object? maxZ, object? includeIgnored);

์—ฌ๋Ÿฌ type/hue์—์„œ ๋‹ค์šด๋กœ๋“œํ•œ ํ•ญ๋ชฉ์ด๋‚˜ ๋ชจ๋ฐ”์ผ์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ serial๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๊ณ  FindItem, FindCount ๋ฐ GetFoundItems์— ๋Œ€ํ•ด ์ •๋ ฌ๋œ ์ „์ฒด ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

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

  • list โ€” ๋น„์–ด ์žˆ์ง€ ์•Š์€ ์ง‘ํ•ฉ์˜ ์ด๋ฆ„ AddFindList; ๋˜๋Š” ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋œ ํ‰๋ฉด ๋ฐฐ์—ด type; ๋˜๋Š” "0x0EED|0x0F7A"์™€ ๊ฐ™์ด |, ์‰ผํ‘œ, ์„ธ๋ฏธ์ฝœ๋ก  ๋˜๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ์œ ํ˜•์˜ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด/๋ฌธ์ž์—ด ์œ ํ˜•์€ hue๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด ๋‚ด์˜ [type,hue] ์Œ์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. hue์˜ ๊ฒฝ์šฐ ๋ช…๋ช…๋œ ์„ธํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํ•ญ๋ชฉ์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ํ•ญ๋ชฉ์˜ ๊ทธ๋ž˜ํ”ฝ/type์€ serial์ด ์•„๋‹Œ body mobile์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ int 0..65535(0x0EED ํฌํ•จ); -1 ๋˜๋Š” 0xFFFF๋Š” ๊ฒ€์ƒ‰ ์‹œ type๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ•ญ๋ชฉ๋‹น ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค. ์—ฌ๋Ÿฌ ์œ ํ˜•์ด ๋ณ„๋„์˜ ํ˜ธ์ถœ๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  • container โ€” ๊ธฐ๋ณธ๊ฐ’ -1: ๋ฃจํŠธ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฌธ์ž์ธ ์•„์ดํ…œ(์ค‘์ฒฉ๋œ ๊ฐ€๋ฐฉ ๋ฐ ์žฅ๋น„ ํฌํ•จ) "my" = -1. ground, "ground", UO.Ground(), ์ˆซ์ž 0 ๋˜๋Š” 1 ์„ธ๊ณ„ ์„ ํƒ: self๋ฅผ ์ œ์™ธํ•œ ์ง€์ƒ ๋ฐ ๋ชจ๋ฐ”์ผ ์•„์ดํ…œ. ์ปจํ…Œ์ด๋„ˆ์˜ "backpack" ๋˜๋Š” serial >1 ์žฌ๊ท€ ์—†์ด ์ง์ ‘ ์ฝ˜ํ…์ธ ๋งŒ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ฒด ๋ณ„์นญ์€ serial๋กœ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ๋ณ„์นญ์€ 0๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฏธ๋ฆฌ GetSerial๋กœ ํ™•์ธํ•˜์„ธ์š”.
  • distance โ€” max(abs(dx),abs(dy))์— ๋”ฐ๋ฅธ ์Œ์ˆ˜๊ฐ€ ์•„๋‹Œ ์…€ ๋ฐ˜๊ฒฝ; ๋Œ€๊ฐ์„  - ํ•˜๋‚˜์˜ ์…€. ๊ฒ€์ƒ‰์— ์œ ํšจํ•จ ground; ์ปจํ…Œ์ด๋„ˆ์˜ ์ง์ ‘์ ์ธ ๋‚ด์šฉ๋ฌผ์€ ๊ฑฐ๋ฆฌ์— ์˜ํ•ด ์ œํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์Œ์ˆ˜ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด UO.FindDistance()๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. 0 - ๋™์ผ X/Y.
  • notoriety โ€” ๊ธฐ๋ณธ๊ฐ’ - 1, ๋ชจ๋“  ์ฝ”๋“œ. ๋‹จ์ผ ์ˆซ์ž, ๋ฌธ์ž์—ด "5|6" ๋˜๋Š” ๋‹จ์ˆœ ์ˆซ์ž ๋ฐฐ์—ด์€ ํ—ˆ์šฉ๋˜๋Š” ํœด๋Œ€ํฐ ์ฝ”๋“œ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ญ๋ชฉ์ด ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ: 0 ์•Œ ์ˆ˜ ์—†์Œ, 1 ๊ฒฐ๋ฐฑ, 2 ๋™๋งน, 3 ํšŒ์ƒ‰, 4 ๋ฒ”์ฃ„์ž, 5 ์ , 6 ์‚ด์ธ์ž, 7 ๋ฌด์ ; ๊ด€๊ณ„์˜ ์˜๋ฏธ๋Š” ์„œ๋ฒ„์— ์˜ํ•ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ํŠน์ • ์ฝ”๋“œ๊ฐ€ ์—†๋Š” ๋นˆ ๋งˆ์Šคํฌ /any/-1๋Š” ์ œํ•œ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™€์ผ๋“œ์นด๋“œ์™€ ์ฝ”๋“œ๋ฅผ ํ˜ผํ•ฉํ•˜๋Š” ๊ฒฝ์šฐ ํŠน์ • ์ฝ”๋“œ์—๋Š” ์ œํ•œ์ด ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ํ† ํฐ์€ ์œ ํšจํ•œ ํ† ํฐ ์˜†์— ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ํ† ํฐ์œผ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๋งˆ์Šคํฌ๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ฐพ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.
  • nearest โ€” ๊ธฐ๋ณธ๊ฐ’ false. false/0: ํ•ญ๋ชฉ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋จผ์ € ๋‚˜์—ดํ•œ ๋‹ค์Œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚ฎ์ถฅ๋‹ˆ๋‹ค serial. true/1: ๊ฑฐ๋ฆฌ ์šฐ์„ , ๋…นํ™” ์šฐ์„ ์ˆœ์œ„, serial ์ˆœ์ž…๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ํ•„ํ„ฐ๊ฐ€ ์•„๋‹Œ ์ฃผ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • maxZ โ€” Z์™€ ๋ฌธ์ž ์‚ฌ์ด์— ํ—ˆ์šฉ๋˜๋Š” ์ ˆ๋Œ€ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋˜๋Š” ์Œ์ˆ˜ ์ธ์ˆ˜๋Š” UO.FindVertical()์ž…๋‹ˆ๋‹ค. 0๋Š” ๋™์ผํ•œ Z๋งŒ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ช…์‹œ์ ์ธ serial ์ปจํ…Œ์ด๋„ˆ >1์˜ ๊ฒฝ์šฐ ๋กœ๋“œ๋œ ์ปจํ…Œ์ด๋„ˆ์˜ Z๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค(์•„๋ฌด๊ฒƒ๋„ ์—†์œผ๋ฉด Z ํ•ญ๋ชฉ). ๋‹ค๋ฅธ ๋ชจ๋“œ์˜ ๊ฒฝ์šฐ - Z ํ›„๋ณด. Gump์— ์žˆ๋Š” ์‚ฌ๋ฌผ์˜ ์ขŒํ‘œ๋Š” ์„ธ๊ณ„์˜ ๋†’์ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
  • includeIgnored โ€” ๊ธฐ๋ณธ์ ์œผ๋กœ false: ์ด ๋Ÿฐํƒ€์ž„์˜ Ignore์—์„œ serial๊ฐ€ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. true/1๋Š” ์ด ๊ฒ€์ƒ‰์—๋งŒ ํฌํ•จ๋˜๋ฉฐ Ignore๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

string: ์ฒซ ๋ฒˆ์งธ ๊ฒฐ๊ณผ์˜ 16์ง„์ˆ˜-serial(์˜ˆ: "0x40000011") ๋˜๋Š” ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์—†๋Š” ๊ฒฝ์šฐ ๋นˆ ๋ฌธ์ž์—ด ""์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ type์ด ์•„๋‹Œ ID, bool์ด ์•„๋‹Œ ์ˆ˜๋Ÿ‰์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜์„ธ์š” != "", ๊ฒฐ๊ณผ == true๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋น„์–ด ์žˆ์ง€ ์•Š์€ ์ผ๋ฐ˜์ ์ธ ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ FindItem๋Š” ๋™์ผํ•œ ID ์ˆซ์ž, FindCount() - ๊ฐœ๋ณ„ ๊ฐ์ฒด์˜ ์ˆ˜, GetFoundItems() - ์ˆซ์ž ๋ฐฐ์—ด serial์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋™์ž‘

  • 1 ~ 7 ์œ„์น˜ ์ธ์ˆ˜; ๊ผฌ๋ฆฌ๋งŒ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. maxZ๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด ์•ž์˜ ์ธ์ˆ˜๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ „๋‹ฌํ•˜์„ธ์š”. ๊ฒ€์ƒ‰์€ ๋กœ์ปฌ๋กœ ๋กœ๋“œ๋œ ์ƒํƒœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™๊ธฐ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์ฆ‰, ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์—ด์ง€ ์•Š๊ณ , ์ฝ˜ํ…์ธ ๋ฅผ ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ , ์‹œ์„ /๊ฐ€์šฉ์„ฑ์„ ํ™•์ธํ•˜์ง€ ์•Š๊ณ , ๊ณต๊ฒฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์—ฌ๋Ÿฌ ๊ทœ์น™๊ณผ ์ผ์น˜ํ•˜๋”๋ผ๋„ ๊ฐ ๊ฐœ์ฒด๋Š” ํ•œ ๋ฒˆ๋งŒ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„๋Š” ์ผ์น˜ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค. ์•Œ ์ˆ˜ ์—†๋Š” ์ด๋ฆ„์€ ์œ ํ˜• ๋ฌธ์ž์—ด๋กœ ๊ตฌ๋ฌธ ๋ถ„์„์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ฝ์„ ์ˆ˜ ์—†๋Š” type/hue๋กœ ์ธํ•ด ๋ณ€ํ™˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„์–ด ์žˆ์ง€ ์•Š์€ ์ฟผ๋ฆฌ๋Š” ์„ ํƒ ์ „ ์ด์ „ FindItem/FindCount/GetFoundItems๋ฅผ ์ง€์›๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์—†์œผ๋ฉด ๋นˆ ๊ฒฐ๊ณผ๊ฐ€ ๋‚จ์Šต๋‹ˆ๋‹ค. ์˜ˆ์™ธ: ๋นˆ ๋ฐฐ์—ด ๋˜๋Š” ๋นˆ ๋ฌธ์ž์—ด ๋ชฉ๋ก์€ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์ „์— ""๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ด์ „ ๊ฒฐ๊ณผ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ˜ธ์ถœ ํ›„์—๋Š” FindCount๋ฅผ ์ƒˆ๋กœ์šด ๊ฒฐ๊ณผ๋กœ ๊ฐ„์ฃผํ•˜์ง€ ๋งˆ์„ธ์š”.
  • AddFindList/ClearFindList/DeleteFindList ์ •์˜๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ์ด๋ฏธ ๋ฐœ๊ฒฌ๋œ ์„ธํŠธ๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋Ÿฐํƒ€์ž„์˜ ๋‹ค๋ฅธ ๊ฒ€์ƒ‰์€ FindItem ๋ฐ ์ „์ฒด ๋ฐฐ์—ด์„ ๋Œ€์ฒดํ•˜๋ฏ€๋กœ ์ค‘์ฒฉ ๊ฒ€์ƒ‰ ์•ž์— GetFoundItems๋ฅผ ์ €์žฅํ•˜์„ธ์š”.
  • ์ •์˜๋Š” ์ง€์ •๋œ ์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„ ์ƒํƒœ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋…๋ฆฝ์ ์ธ ๋‹ค๋ฅธ ๋Ÿฐํƒ€์ž„์—๋Š” ์ž์ฒด ์„ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. IDE ์ฐฝ์„ ๋‹ซ์•„๋„ ์ด๋Ÿฌํ•œ ๊ทœ์น™์€ ์ง€์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์„ค์ • ํŒŒ์ผ์ด๋‚˜ ์ „์—ญ ๊ฒŒ์ž„ ๊ฐœ์ฒด ๋ชฉ๋ก์ด ์•„๋‹™๋‹ˆ๋‹ค.
  • AddFindList ํ•ญ๋ชฉ์„ ๋์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณต์€ ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‚คํŠธ๋ฅผ ๋‹ค์‹œ ํ”„๋กœ๋น„์ €๋‹ํ•˜๋ ค๋ฉด ๋จผ์ € ClearFindList("name")์œผ๋กœ ์ „ํ™”ํ•˜์„ธ์š”. ์ •์˜๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ์ด๋ฏธ ์ˆ˜์‹ ๋œ FindItem/FindCount/GetFoundItems๋Š” ์ง€์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ ˆ์ฝ”๋“œ๋Š” ํ…์ŠคํŠธ ํ•„๋“œ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด 0x0EED์€ "3821"๋กœ ์ €์žฅ๋˜๊ณ , ๋ฌธ์ž์—ด "0x0EED"์€ "0x0EED"๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰์€ ๋‘ ์˜ต์…˜์„ ๋ชจ๋‘ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  DeleteFindList๋Š” ์ €์žฅ๋œ ํ…์ŠคํŠธ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ์‹œ์—๋„ ๋™์ผํ•œ ์–‘์‹์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • FindList์˜ ์•Œ ์ˆ˜ ์—†๋Š” ์ด๋ฆ„์€ ๋นˆ ๋“ฑ๋ก ์„ธํŠธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์—”์ง„์€ ์ด๋ฅผ ์ˆซ์ž ์œ ํ˜• ๋ชฉ๋ก์œผ๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€ํ™˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•œ ํ›„ ํ•ด๋‹น ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์ „์— ์ƒˆ ์„ธํŠธ๋ฅผ ๋งŒ๋“œ์‹ญ์‹œ์˜ค.

๋…๋ฆฝ ์‹คํ–‰ C# ์Šคํฌ๋ฆฝํŠธ

๊ฐ ์˜ˆ์ œ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ .csx๋กœ ์ €์žฅํ•˜๊ณ  IDE์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UO ๊ฐœ์ฒด์™€ ๋Œ€๊ธฐ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ฒŒ์ž„ ์„ธ์…˜์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ serial ์ด๋ฆ„, ์ขŒํ‘œ, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

์ด ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .csx ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”. ์ธ์ˆ˜๋Š” ํ˜ธ์ถœ์— ์ง์ ‘ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์ด๋ฆ„, serial, ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋ฅผ ์ €๋„์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋ฅผ bool๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐฐ์—ด์ด๋ฉด ์š”์†Œ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

var result = UO.FindList(new[] { 0x0EED }, "backpack");
UO.Print("FindList: " + Convert.ToString(result));

1. ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ๋ฆฌ์†Œ์Šค๋ฅผ ์„ ํƒํ•˜๊ณ  ํ•˜๋‚˜์˜ ์Šคํƒ์„ ์ „์†ก - ์ง์ ‘ ์Šคํฌ๋ฆฝํŠธ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • false์—์„œ๋Š” ๋” ๋จผ ๊ฑฐ๋ฆฌ์—์„œ๋„ ๊ธˆ์ด ๋‘ ๋ฒˆ์งธ type๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๊ฒฝ 2 ๋ฐ maxZ=5๋Š” ํ›„๋ณด๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋ฌผ๊ฑด์„ ์ง‘์„ ๊ถŒ๋ฆฌ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ์€ ์‹ค์ œ ๊ฒŒ์ž„ ๋™์ž‘์ž…๋‹ˆ๋‹ค. ๋ฐœ๊ฒฌ๋œ ์ฒซ ๋ฒˆ์งธ ๊ฐœ์ฒด๋งŒ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ MoveItem๋Š” ์„œ๋ฒ„๊ฐ€ ์ „์ฒด ์ด๋™์„ ํ™•์ธํ–ˆ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.
BuildLoot();
var item = UO.FindList("loot", "ground", 2, -1, false, 5);
if (Truth(item == ""))
{
    return null;
}
var accepted = UO.MoveItem(item, 0, "backpack");
if (Truth(accepted == 0))
{
    UO.Print("Move was not accepted");
}

void BuildLoot()
{
    UO.ClearFindList("loot");
    UO.AddFindList("loot", 0x0EED, -1);
    UO.AddFindList("loot", 0x0F7A, -1);
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. ๋‘ ์•…๋ช… ์ค‘ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด mobile ์ €์žฅ - ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • 7๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜: 2๊ฐœ์˜ body, ์„ธ๊ณ„, ๋ฐ˜๊ฒฝ 12, ์ฝ”๋“œ 5 ๋˜๋Š” 6, ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒƒ๋ถ€ํ„ฐ, ์ฐจ์ด Z 10 ์ดํ•˜, ๋ฌด์‹œ ์ œ์™ธ. ์„ ํƒ๊ณผ ์ €์žฅ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ ์Šคํฌ๋ฆฝํŠธ๋Š” ์ ์ ˆํ•œ ์กฐ๊ฑด์„ ๋ณ„๋„๋กœ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
return  RunScenario();
 object? RunScenario()
{
    var target = UO.FindList("0x0190|0x0191", "ground", 12, "5|6", true, 10, false);
    if (Truth(target != ""))
    {
        UO.AddObject("candidate", target);
        UO.Print("Candidate: " + UO.GetName(target));
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. ๋ฐฐ์—ด์—์„œ ์—ฌ๋Ÿฌ ์œ ํ˜•์˜ ์ฃผ์‹ ๊ณ„์‚ฐ - ์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์‹คํ–‰ ํ๋ฆ„:

  • ๋ณ€์ˆ˜ ์œ ํ˜•[1]์„ ์„ ์–ธํ•˜๋ฉด ์ด ์—”์ง„์—์„œ ์ธ๋ฑ์Šค 0 ๋ฐ 1๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์Šคํƒ ์ˆ˜๊ฐ€ ์•„๋‹Œ ๋‘ ์œ ํ˜•์˜ ๋‹จ์œ„๋ฅผ ํ•ฉ์‚ฐํ•ฉ๋‹ˆ๋‹ค. backpack ์ง์ ‘ ์ฝ˜ํ…์ธ ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์‚ฝ์ž…๋œ ๊ฐ€๋ฐฉ์€ ์—ฌ๊ธฐ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        dynamic[] types = new dynamic[checked((int)(1) + 1)];
        types[0] = 0x0EED;
        types[1] = 0x0F7A;
        var first = UO.FindList(types, "backpack");
        var total = 0;
        if (Truth(first != ""))
        {
            var items = UO.GetFoundItems();
            foreach (var item in items)
            {
                total += UO.FindCount(item);
            }
        }

        if (Truth(total < 100))
        {
            UO.Print("Stock below limit: " + Convert.ToString(total));
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

๋ช…๋ น ๊ตฌํ˜„

C#์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ UO ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž ํ”Œ๋ž˜๊ทธ๋Š” 0๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด bool์ผ ๋•Œ๋งŒ bool์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

UO.FindList(list) โ€” UO.FindList(Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any)

๊ฒฐ๊ณผ: string / String.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(CompactFindList(values))

UO.FindList(list, container) โ€” UO.FindList(Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any), container (Any)

๊ฒฐ๊ณผ: string / String.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(CompactFindList(values))

UO.FindList(list, container, distance) โ€” UO.FindList(Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any), container (Any), distance (Any)

๊ฒฐ๊ณผ: string / String.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(CompactFindList(values))

UO.FindList(list, container, distance, notoriety) โ€” UO.FindList(Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any), container (Any), distance (Any), notoriety (Any)

๊ฒฐ๊ณผ: string / String.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(CompactFindList(values))

UO.FindList(list, container, distance, notoriety, nearest) โ€” UO.FindList(Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any), container (Any), distance (Any), notoriety (Any), nearest (Any)

๊ฒฐ๊ณผ: string / String.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(CompactFindList(values))

UO.FindList(list, container, distance, notoriety, nearest, maxZ) โ€” UO.FindList(Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any), container (Any), distance (Any), notoriety (Any), nearest (Any), maxZ (Any)

๊ฒฐ๊ณผ: string / String.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(CompactFindList(values))

UO.FindList(list, container, distance, notoriety, nearest, maxZ, includeIgnored) โ€” UO.FindList(Any,Any,Any,Any,Any,Any,Any)

๋งค๊ฐœ๋ณ€์ˆ˜: list (Any), container (Any), distance (Any), notoriety (Any), nearest (Any), maxZ (Any), includeIgnored (Any)

๊ฒฐ๊ณผ: string / String.

ํ˜ธ์ถœ ์‹œ:

ํ˜ธ์ถœ ์‹œ ์ €์žฅ๋œ ์ฒ˜๋ฆฌ๊ธฐ delegate๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก ๋ฉ”์„œ๋“œ๋Š” API๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด delegate๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ์ด๋ฉฐ ๋…๋ฆฝ ์Šคํฌ๋ฆฝํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

values => new InjectionValue(CompactFindList(values))
โš ๏ธ **GitHub.com Fallback** โš ๏ธ