-
Notifications
You must be signed in to change notification settings - Fork 0
API UO GetShopList ko
ClassicUO / Basic IDE
최근 활성 NPC 상점 제안의 상품을 읽어 구매·판매 전 종류, 수량, 가격을 확인합니다.
UO.GetShopList() -> Any
매개변수가 없습니다.
Array of String, 인덱스는 0부터. 행은 serial|graphic|hue|amount|price|name입니다. serial은 항목 ID, graphic은 종류, hue는 색이며 세 필드는 0x 형식입니다. amount는 제안 수량에서 창의 초안 선택을 뺀 단위 수, price는 단가입니다. 제안이 없으면 빈 배열이며 Boolean이 아닙니다. 처음 다섯 |만 구분자이며 이후는 이름으로 |가 들어갈 수 있습니다.
- 먼저 원하는 NPC의 구매 또는 판매를 열고 서버 제안을 기다리세요. 상인 검색, 거래 시작, 개인 vendor 가격 지정, 상자 간 이동은 하지 않습니다. 상인 ID 인수는 없으며 최근 제안을 사용합니다.
- 관리자는 그래픽 없이도 세션에 제안과 초안을 보관하고 다시 열면 창을 복원합니다. 상점 자체 닫기, 응답, 서버 종료 통지, 연결 해제는 제안을 없앱니다. Bad Newbie 자동 구매·판매가 스크립트보다 먼저 처리할 수 있습니다.
- 읽기는 패킷을 보내지 않습니다. 받은 데이터의 스냅샷이며 현재 재고를 보장하지 않습니다. amount는 단위 수, GetArrayLength(rows)는 항목 수입니다. SendShopReply는 가격을 받지 않습니다.
- 명시 목록은 초안을 대체합니다. 같은 serial의 수량은 합산하며 전체 제안 수량으로 제한합니다. 알 수 없는 ID, 잘못되거나 0 이하 수량은 전송 전 전체 응답을 거절하고 제안을 유지합니다. 제안이 없는 SendShopReply는 오류입니다. "0"은 취소가 아니며 ""를 사용하세요.
SessionShops가 전체 목록·가격을 검사하고 저장하며 bridge는 세션 스레드에서 실행합니다. GetItems는 행 생성, ParseSelection은 선택 검사, Reply는 구매 0x3B 또는 판매 0x9F 전송 후 닫기를 수행합니다. ShopGump는 같은 상태를 표시하며 분리 시 수량과 스크롤을 보관합니다. 서버 종료에는 다시 응답하지 않습니다.
먼저 원하는 NPC의 구매 또는 판매를 열고 서버 제안을 기다리세요. 상인 검색, 거래 시작, 개인 vendor 가격 지정, 상자 간 이동은 하지 않습니다. 상인 ID 인수는 없으며 최근 제안을 사용합니다.
Array of String, 인덱스는 0부터. 행은 serial|graphic|hue|amount|price|name입니다. serial은 항목 ID, graphic은 종류, hue는 색이며 세 필드는 0x 형식입니다. amount는 제안 수량에서 창의 초안 선택을 뺀 단위 수, price는 단가입니다. 제안이 없으면 빈 배열이며 Boolean이 아닙니다. 처음 다섯 |만 구분자이며 이후는 이름으로 |가 들어갈 수 있습니다.
프로젝트 소스: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; 함수 GetShopList.
읽기는 패킷을 보내지 않습니다. 받은 데이터의 스냅샷이며 현재 재고를 보장하지 않습니다. amount는 단위 수, GetArrayLength(rows)는 항목 수입니다. SendShopReply는 가격을 받지 않습니다.
관리자는 그래픽 없이도 세션에 제안과 초안을 보관하고 다시 열면 창을 복원합니다. 상점 자체 닫기, 응답, 서버 종료 통지, 연결 해제는 제안을 없앱니다. Bad Newbie 자동 구매·판매가 스크립트보다 먼저 처리할 수 있습니다.
프로젝트 소스: src/ClassicUO.Client/Game/Managers/SessionShops.cs; 함수 SessionShop.GetItems.
읽기는 패킷을 보내지 않습니다. 받은 데이터의 스냅샷이며 현재 재고를 보장하지 않습니다. amount는 단위 수, GetArrayLength(rows)는 항목 수입니다. SendShopReply는 가격을 받지 않습니다.
# 첫 항목 읽기
#
# 최근 활성 NPC 상점 제안의 상품을 읽어 구매·판매 전 종류, 수량, 가격을 확인합니다.
#
# Array of String, 인덱스는 0부터. 행은 serial|graphic|hue|amount|price|name입니다. serial은 항목 ID, graphic은
# 종류, hue는 색이며 세 필드는 0x 형식입니다. amount는 제안 수량에서 창의 초안 선택을 뺀 단위 수, price는 단가입니다. 제안이 없으면 빈 배열이며
# Boolean이 아닙니다. 처음 다섯 |만 구분자이며 이후는 이름으로 |가 들어갈 수 있습니다.
SUB Main()
# GetWord: 0 serial, 1 graphic, 2 hue, 3 수량, 4 가격. rows[0] 전에 길이를 확인합니다.
VAR rows = UO.GetShopList()
IF GetArrayLength(rows) = 0 THEN
RETURN
END IF
VAR serial = GetWord(rows[0], 0, "|")
VAR itemType = GetWord(rows[0], 1, "|")
VAR amount = CInt(GetWord(rows[0], 3, "|"))
VAR price = CDbl(GetWord(rows[0], 4, "|"))
UO.Print(serial + " / " + itemType + " / " + CStr(amount) + " / " + CStr(price))
END SUB매개변수 및 실행 설명:
- GetWord: 0 serial, 1 graphic, 2 hue, 3 수량, 4 가격. rows[0] 전에 길이를 확인합니다.
# 가격 제한으로 붕대 최대 10개 구매
#
# 최근 활성 NPC 상점 제안의 상품을 읽어 구매·판매 전 종류, 수량, 가격을 확인합니다.
#
# Array of String, 인덱스는 0부터. 행은 serial|graphic|hue|amount|price|name입니다. serial은 항목 ID, graphic은
# 종류, hue는 색이며 세 필드는 0x 형식입니다. amount는 제안 수량에서 창의 초안 선택을 뺀 단위 수, price는 단가입니다. 제안이 없으면 빈 배열이며
# Boolean이 아닙니다. 처음 다섯 |만 구분자이며 이후는 이름으로 |가 들어갈 수 있습니다.
SUB Main()
# 이미 열린 구매 제안 전용. 0x0E21 붕대, 단가 상한 5, 수량 상한 10. 첫 일치 항목의 실제 serial을 씁니다.
VAR rows = UO.GetShopList()
FOR VAR i = 0 TO GetArrayLength(rows) - 1
VAR row = rows[i]
IF GetWord(row, 1, "|") = "0x0E21" THEN
VAR price = CDbl(GetWord(row, 4, "|"))
VAR amount = CInt(GetWord(row, 3, "|"))
IF price > 0 AND price <= 5 AND amount > 0 THEN
IF amount > 10 THEN
amount = 10
END IF
UO.SendShopReply(GetWord(row, 0, "|") + ":" + CStr(amount))
RETURN
END IF
END IF
NEXT
END SUB매개변수 및 실행 설명:
- 이미 열린 구매 제안 전용. 0x0E21 붕대, 단가 상한 5, 수량 상한 10. 첫 일치 항목의 실제 serial을 씁니다.
# 종류별 재고 합산
#
# 최근 활성 NPC 상점 제안의 상품을 읽어 구매·판매 전 종류, 수량, 가격을 확인합니다.
#
# Array of String, 인덱스는 0부터. 행은 serial|graphic|hue|amount|price|name입니다. serial은 항목 ID, graphic은
# 종류, hue는 색이며 세 필드는 0x 형식입니다. amount는 제안 수량에서 창의 초안 선택을 뺀 단위 수, price는 단가입니다. 제안이 없으면 빈 배열이며
# Boolean이 아닙니다. 처음 다섯 |만 구분자이며 이후는 이름으로 |가 들어갈 수 있습니다.
SUB Main()
# 전체 보조 함수가 같은 종류의 모든 amount를 합산하며 비어 있으면 0입니다. 소지품·동물 수가 아닌 이용 가능 단위 수입니다.
VAR available = CountOfferedType("0x0E21")
IF available < 10 THEN
UO.Print("Bandage stock below 10: " + CStr(available))
END IF
END SUB
FUNCTION CountOfferedType(itemType)
VAR total = 0
VAR rows = UO.GetShopList()
FOR VAR i = 0 TO GetArrayLength(rows) - 1
IF GetWord(rows[i], 1, "|") = itemType THEN
total = total + CInt(GetWord(rows[i], 3, "|"))
END IF
NEXT
RETURN total
END FUNCTION매개변수 및 실행 설명:
- 전체 보조 함수가 같은 종류의 모든 amount를 합산하며 비어 있으면 0입니다. 소지품·동물 수가 아닌 이용 가능 단위 수입니다.
Shop lists / Списки покупки и продажи
Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь