스택
Important
이제 Economy v2가 일반 공급됩니다. 지원 및 피드백을 받으려면 PlayFab 포럼으로 이동하세요.
Economy V2 인벤토리 서비스는 재고 요구 사항에 대한 더 큰 유연성과 지원을 추가할 수 있는 스택의 개념을 소개합니다. 스택을 사용하면 동일한 항목의 개별 인스턴스가 동일한 인벤토리 내에 존재할 수 있습니다. 이 기능을 사용하면 게임 내 조직 시나리오, 다양한 아이템 속성 등을 설정할 수 있습니다.
동일한 Id
의 항목은 각각 고유한 양으로 항목의 스택으로 저장하고 StackId
(으)로 구분할 수 있습니다. 지정하지 않으면 인벤토리 작업은 일반적으로 StackId가 있는 기본 스택을 사용합니다. default
스택은 삭제할 수 없습니다. 다음에 StackId 없이 추가/전송이 수행되거나 기본 StackId를 사용하면 기본 스택이 다시 만들어집니다.
인벤토리 및 스택 관리
다음은 인벤토리 API 및 스택과의 상호 작용에 대한 자세한 분석입니다.
인벤토리 아이템 추가
AddInventoryItems
API에서 Item
매개 변수에서를 StackId
을(를) 정의할 수 있습니다. 이 매개 변수는 증가하는 스택 또는 생성되는 새 스택의 ID를 정의합니다.
StackId
(을)를 이용한 요청 예제AddInventoryItems
:
{
"Entity": {
"Type": "title_player_account",
"Id": "ABCD12345678"
},
"Item": {
"Id": "0b440353-bdbc-48d8-8873-f0988c1f9d8b",
"StackId": "NewStack"
},
"Amount": 5,
}
위의 요청은 크기가 5이고 StackId가 NewStack
인 항목의 새 스택을 만들거나 기존에 이미 있는 경우 NewStack
에 5를 추가합니다.
인벤토리 아이템 빼기
SubtractInventoryItems
API에서 StackId는 빼는 스택을 정의하는 데 사용됩니다. 또한 빼면 스택 크기가 0인 경우 스택을 삭제하는 DeleteEmptyStacks
부울을 설정할 수 있습니다.
스택에서 현재 스택 크기보다 더 많이 빼려고 하면 오류가 발생합니다.
StackId를 사용하는 요청 예제 SubtractInventoryItems
:
{
"Entity": {
"Type": "title_player_account",
"Id": "ABCD12345678"
},
"Item": {
"Id": "0b440353-bdbc-48d8-8873-f0988c1f9d8b",
"StackId": "NewStack"
},
"Amount": 5,
"DeleteEmptyStacks": true,
}
위의 요청은 ID가 NewStack
인 스택에서 5를 빼고 정확히 5인 경우 스택을 삭제합니다.
인벤토리 아이템 업데이트
UpdateInventoryItems
API에서 Item
매개 변수에서를 StackId
을(를) 정의할 수 있습니다. 이 매개 변수는 업데이트중인 스택 또는 생성되는 새 스택의 ID를 정의합니다.
예제 UpdateInventoryItems
요청:
{
"Entity": {
"Type": "title_player_account",
"Id": "ABCD12345678"
},
"Item": {
"Id": "0b440353-bdbc-48d8-8873-f0988c1f9d8b",
"StackId": "NewStack",
"Amount": 5
}
}
위의 요청은 크기가 5이고 StackId가 NewStack
인 항목의 새 스택을 만들거나 기존에 이미 있는 경우 NewStack
의 양을 5로 설정합니다.
인벤토리 아이템 삭제
DeleteInventoryItems
API는 플레이어의 인벤토리에서 아이템의 전체 스택을 삭제하는 데 사용됩니다.
StackId
(을)를 제공하여 삭제할 항목의 특정 스택을 정의할 수 있습니다.
예제 DeleteInventoryItems
요청:
{
"Entity": {
"Type": "title_player_account",
"Id": "ABCD12345678"
},
"Item": {
"Id": "0b440353-bdbc-48d8-8873-f0988c1f9d8b",
"StackId": "NewStack"
},
}
인벤토리 아이템 구매
PurchaseInventoryItems
API는 아이템의 카탈로그에 정의된 가격을 사용하고 플레이어의 인벤토리에서 비용을 공제하고 원하는 양의 아이템과 교환합니다. 구매할 Item
과 구매하려는 아이템의 Amount
를 지정해야 합니다.
스택을 사용하여 구매하는 경우 다음과 같은 몇 가지 매개 변수가 있습니다.
-
PriceAmounts
의 경우 각 가격 항목(즉, 소비되는 항목)에 대한 선택적StackId
을(를) 정의하여 지출된 항목이 공제되는 스택을 정의할 수 있습니다. -
Item
개체의 경우 수신 항목이 배치될 스택을 나타내는 선택적StackId
을(를) 정의할 수 있습니다. - 빼면 스택 크기가 0인 경우 스택을 삭제하는
DeleteEmptyStacks
부울을 설정할 수 있습니다.
TODO 링크 추가
스택이 있는 PurchaseInventoryItems
요청 예제:
{
"Entity": {
"Type": "title_player_account",
"Id": "ABCD12345678"
},
"Item": {
"Id": "LaserSword",
"StackId": "MyLaserSwordStack"
},
"Amount": 10,
"PriceAmounts": [
{
"ItemId": "0b440353-bdbc-48d8-8873-f0988c1f9d8b",
"Amount": 5,
"StackId": "MyNewStack",
}
],
"DeleteEmptyStacks": true,
}
인벤토리 아이템 전송
스택과 함께 TransferInventoryItems
API를 사용하는 경우 다음과 같은 몇 가지 관련 매개 변수가 있습니다.
-
GivingItem
개체의 경우 지정된 항목을 가져올 스택을 나타내는 선택적StackId
을(를) 정의할 수 있습니다. -
ReceivingItem
개체에서 수신 항목이 배치될 스택을 나타내는 선택적StackId
을(를) 정의할 수 있습니다. -
GivingItem
크기로 인해 스택 크기가 0인 경우 스택을 삭제하는DeleteEmptyStacks
부울을 설정할 수 있습니다.
스택이 있는 TransferInventoryItems
요청 예제:
{
"GivingEntity": {
"Type": "title_player_account",
"Id": "ABCD12345678"
},
"ReceivingEntity": {
"Type": "title_player_account",
"Id": "ABCD12345678"
},
"GivingItem": {
"Id": "0b440353-bdbc-48d8-8873-f0988c1f9d8b",
"StackId": "default",
},
"ReceivingItem": {
"Id": "0b440353-bdbc-48d8-8873-f0988c1f9d8b",
"StackId": "MyNewStack",
},
"Amount": 10,
"DeleteEmptyStacks": true
}
ExecuteInventoryOperations API
ExecuteInventoryOperations
API의 Operation
개체에서 StackId
및 DeleteEmptyStacks
매개 변수를 사용할 수 있습니다. 이러한 매개 변수를 사용하면 스택을 사용하여 여러 인벤토리 작업을 일괄 처리할 수 있습니다.
스택이 있는 ExecuteInventoryOperations
요청 예제:
"Entity": {
"Type": "title_player_account",
"Id": "ABCD12345678"
},
"Operations": [
{
"Update": {
"Item": {
"Id": "0b440353-bdbc-48d8-8873-f0988c1f9d8b",
"StackId": "default",
"Amount": 10
}
}
},
{
"Subtract": {
"Item": {
"Id": "0b440353-bdbc-48d8-8873-f0988c1f9d8b",
"StackId": "MyNewStack"
},
"Amount": 5
}
}
]
DisplayProperties 및 NewStackValues를 사용하여 사용자 지정 속성 추가
DisplayProperties
매개 변수를 사용하여 사용자 지정 항목 속성을 인벤토리 항목으로 설정할 수 있습니다. 속성 설정은 AddInventoryItems
, PurchaseInventoryItems
및 TransferInventoryItems
API에서 수행할 수 있지만 새 스택을 만들 때만 가능합니다. 새 아이템에 대한 디스플레이 속성을 설정하려면 API 요청에서 NewStackValues
매개 변수를 설정해야 합니다.
NewStackValues
를 이용한 요청 예제AddInventoryItems
:
{
"Entity": {
"Type": "title_player_account",
"Id": "ABCD12345678"
},
"Item": {
"Id": "20a645ce-a3bf-4fcb-8e67-36aa7bf0331d",
"StackId": "NewStack"
},
"Amount": 15,
"NewStackValues": {
"DisplayProperties": {
"DifficultyRating":5,
"IsMagic": true,
"Rarity": "Legendary"
}
}
}
기존 아이템에 디스플레이 속성을 업데이트하기 위해 UpdateInventoryItems
API를 사용하여 속성을 직접 수정할 수 있습니다.