Skip to content

API UO GetShopList ko

Codex edited this page Sep 23, 2026 · 1 revision

UO.GetShopList

ClassicUO / Basic IDE

Home · API · Trading

최근 활성 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는 같은 상태를 표시하며 분리 시 수량과 스크롤을 보관합니다. 서버 종료에는 다시 응답하지 않습니다.

1. GetShopList

먼저 원하는 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.

2. SessionShop.GetItems

읽기는 패킷을 보내지 않습니다. 받은 데이터의 스냅샷이며 현재 재고를 보장하지 않습니다. 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개 구매

# 가격 제한으로 붕대 최대 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 / Списки покупки и продажи

Shop lists / Списки покупки и продажи

Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Clone this wiki locally