> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Economy (舊版) 中的掉落表

> 使用 Game Manager 在 PlayFab 舊版 Economy 中建立加權和循序掉落表，以從您的目錄授與隨機戰利品和玩家獎勵。

# 掉落表 (舊版 Economy)

<Info>
  Economy v1 API 處於維護模式，不會再推出任何新功能，只會修正錯誤。\*\*v1 API 在可預見的未來仍會持續維護。\*\*請參閱 [Economy v2 概觀](/zh-TW/services/playfab/economy-monetization/economy-v2/overview)，深入了解下一版的 PlayFab Economy！
</Info>

本教學課程說明使用 PlayFab Game Manager 建立掉落表的步驟。

掉落表可讓您隨機產生[庫存物品](/zh-TW/services/playfab/player-progression/player-data/player-inventory)，而*循序*掉落表可為玩家獎勵提供一些隨機性。

* 我們假設您已熟悉[目錄](/zh-TW/services/playfab/economy-monetization/economy/items/catalogs)、[庫存](/zh-TW/services/playfab/player-progression/player-data/player-inventory)和 PlayFab [Game Manager](/zh-TW/services/playfab/live-service-management/gamemanager/quickstart)。
* 您必須有一個*主要目錄*，其中包含標準的非組合包/非容器物品。
* 您必須已定義至少*一種*虛擬貨幣，您將使用它作為「免費」的遊戲內貨幣。

您可以使用自己的物品集，但我們的目標是建立重疊的物品分類。

舉例來說，我們將使用下列物品表：

| | 飾品 | 盔甲 | 劍 |
| - | :- | :- | :- |
| **Common** | Common Accessory | Common Armor | Common Sword |
| **Uncommon** | Uncommon Accessory | Uncommon Armor | Uncommon Sword |
| **Rare** | Rare Accessory | Rare Armor | Rare Sword |
| **Legendary** | Legendary Accessory | Legendary Armor | Legendary Sword |

在目錄中設定類似的物品集來使用之後，我們就可以開始建置掉落表。

## 建置掉落表

在 Game Manager 中：

1. 瀏覽至您的 **Title**。
2. 從左側功能表選取 **Economy**。
3. 移至 **Catalogs** 索引標籤，並選擇您的主要目錄。
4. 選取 **Drop Tables**。

您的畫面應與此範例類似。

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/game-manager-catalogs-drop-tables.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=3ee2c6e31f0afbd822a1117ad70f1d79" alt="Game Manager - 目錄 - 掉落表" width="943" height="488" data-path="images/playfab/economy-monetization/economy/tutorials/game-manager-catalogs-drop-tables.png" />

根據每個物品描述元開始建置 **Drop Tables**。我們的第一個分類是 **Equipment Type**，因此我們將建立名為 **Accessories** 的新 **Drop Table**。

1. 選取 **New Drop Table** 按鈕。

2. 將 **Table Id** 設定為 **Accessories**。

3. 選取 **ADD TO DROP TABLE**。**Pick multiple items** 快顯視窗隨即出現。

4. 選取這些物品 **ID** 旁的 **Add** 按鈕來新增物品：
   * **Common Accessory**
   * **Uncommon Accessory**
   * **Rare Accessory**
   * **Legendary Accessory**

5. 選取 **Close** 按鈕。

6. 根據稀有度調整物品的 **Weight** 值：

   * **Common**：1000
   * **Uncommon**：100
   * **Rare**：10
   * **Legendary**：1

   權數表示物品彼此相較之下應該掉落的頻率。在此處顯示的範例中，每掉落一個 **Legendary**，大約會掉落 **1000 個 Common**。

7. 選取 **SAVE DROP TABLE**。

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/game-manager-drop-table-edit-accessories.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=3bcb2b90132d3dec3eafdaef771461ab" alt="Game Manager - 掉落表 - 編輯 Accessories" width="1280" height="900" data-path="images/playfab/economy-monetization/economy/tutorials/game-manager-drop-table-edit-accessories.png" />

完成 **Accessories** 之後，請依照相同步驟建立 **Armors** 和 **Weapons** 的掉落表。

我們的另一個分類是依稀有度，因此我們將建立另一組表格，從 **Common Equipment** 開始。

1. 選取 **New Drop Table** 按鈕。

2. 將 **Table Id** 設定為 **Common Equipment**。

3. 選取 **ADD TO DROP TABLE**。**Pick multiple items** 快顯視窗隨即出現。

4. 選取這些物品 **ID** 旁的 **Add** 按鈕來新增物品：
   * **Common Accessory**
   * **Common Armor**
   * **Common Sword**

5. 選取 **Close** 按鈕。

6. 根據 **Common Equipment** 選項在該欄位中的出現方式，調整物品的 **Weight** 值：

   * **Common Accessory**：1
   * **Common Armor**：4
   * **Common Sword**：5

7. 選取 **SAVE DROP TABLE**。

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/game-manager-drop-table-edit-common-equipment.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=e82dae21d2162de31f53bbf112c2d225" alt="Game Manager - 掉落表 - 編輯 Common Equipment" width="1280" height="900" data-path="images/playfab/economy-monetization/economy/tutorials/game-manager-drop-table-edit-common-equipment.png" />

### 使用掉落表

您可以使用下列兩個 PlayFab 伺服器 API 方法，以程式設計方式存取掉落表：

1. [GetRandomResultTables](xref:titleid.playfabapi.com.server.playeritemmanagement.getrandomresulttables)
2. [EvaluateRandomResultTable](xref:titleid.playfabapi.com.server.playeritemmanagement.evaluaterandomresulttable)

使用 [GetRandomResultTables](xref:titleid.playfabapi.com.server.playeritemmanagement.getrandomresulttables)，您可以讀取我們在 Game Manager 中輸入的原始掉落表資料。

<Note>
  **`GetRandomResultTables`** *不會*擲出隨機值或授與結果。此 API 可讓您讀取資料，並以您認為適當的任何方式剖析資訊。
</Note>

### 選項 1

```csharp theme={null}
public void ReadDropTableData() {
    PlayFabServerAPI.GetRandomResultTables(new GetRandomResultTablesRequest() {
        TableIDs = new List<string> { "Accessories", "Common Equipment" }
    }, result => {
        Debug.Log("Completed getting drop tables");
    }, error => {
        Debug.LogError(error.GenerateErrorReport());
    });
}
```

結果處理常式會接收我們所建立之掉落表的結構資訊，其格式為 [GetRandomResultTablesResult](xref:titleid.playfabapi.com.server.playeritemmanagement.getrandomresulttables#getrandomresulttablesresult)。

或者，您可以讓 PlayFab *替*您評估表格，並使用 [EvaluateRandomResultTable](xref:titleid.playfabapi.com.server.playeritemmanagement.evaluaterandomresulttable) API 提供單一物品結果。這樣做會傳回可用來產生單一物品的 `itemId`，該物品是根據提供的權數擲出的。

接著您可以發出第二個呼叫，以建立物品並將其提供給玩家。

### 選項 2

```csharp theme={null}
public void Grant(string playFabId, string tableId) {
    // First, roll a random number and evaluate the drop table
    PlayFabServerAPI.EvaluateRandomResultTable(new EvaluateRandomResultTableRequest()
    {
        TableId = tableId
    }, result => OnRandomResultTableResponse(result, playFabId), OnError);
}

public void OnRandomResultTableResponse(EvaluateRandomResultTableResult tableResult, string playFabId) {
    // Second, take the result and grant it to the player
    PlayFabServerAPI.GrantItemsToUser(new GrantItemsToUserRequest {
        PlayFabId = playFabId,
        ItemIds = new List<string> { tableResult.ResultItemId }
    }, result =>
    {
        // Handle Result
    }, OnError);
}

public void OnError(PlayFabError error) {
    Debug.LogError(error.GenerateErrorReport());
}
```

總結如下：

**選項 1** - 可讓您載入資料一次、加以快取，並在您自己的遊戲伺服器上*自行*執行擲骰。由於對 PlayFab 的呼叫較少，此選項的延遲較低，並可讓您根據遊戲特定的邏輯自訂擲骰。

**選項 2** - 讓 PlayFab 執行更多工作，但請記住，多個 API 呼叫代表*較高*的延遲。

### 進階掉落表用法 (設定戰利品箱)

掉落表可以從組合包和容器連結。組合包非常適合虛擬貨幣商店，單次購買即可產生一疊隨機物品。

例如，假設我們有一個具有特定掉落規則的 **11 物品組合包**。在此案例中，保證一個傳說物品是面向客戶的賣點。我們也會*限制*它，讓玩家不會*太過*幸運而獲得 **11 個傳說物品**。

### 新增掉落表

讓我們建置一個實際上可以掉落*任何東西*的掉落表，事實上，我們會直接將它命名為 **Anything**。

建立此掉落表時，請將*其他*掉落表作為其選項 (在 **Pick multiple items** 快顯視窗上，選取 **Drop Tables** 索引標籤以新增其他掉落表)，並為其指派適當的權數。

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/game-manager-new-drop-table.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=91467936c149620be0008ee13b429ca4" alt="Game Manager - 新增掉落表" width="1280" height="900" data-path="images/playfab/economy-monetization/economy/tutorials/game-manager-new-drop-table.png" />

## 新增組合包

此時，我們已完成掉落表，接著將新增 **Bundle**。

1. 從左側功能表選取 **Economy**。
2. 移至 **Catalogs** 索引標籤，並選擇您的主要目錄。
3. 選取 **Bundles**，然後選擇 **New Bundle**。
4. 將 **Item Id** 設定為 **11-Item Drop**，選取 **Consumable**，然後選擇 **By time** **15 Seconds**。
5. 選取 **ADD TO BUNDLE**。
6. 在 **Pick multiple items** 快顯視窗中，選取 **Drop tables** 索引標籤。
7. 選取掉落表 **ID** 旁的 **Add** 按鈕來新增掉落表。
8. 將 **Quantity** 欄位設定為下圖所示的值。
9. 選取 **SAVE BUNDLE**。

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/game-manager-new-catalog-bundle.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=32e531cbb1e6833a2214055427c0c133" alt="Game Manager - 新增目錄組合包" width="1280" height="1500" data-path="images/playfab/economy-monetization/economy/tutorials/game-manager-new-catalog-bundle.png" />

我們為此範例建立的 **Bundle** 使用了數項功能：

* *任何*類型的所有物品都必須有 **Item ID**。
* **Bundle** 本身也算是一個物品，其內容會在授與時同時傳遞。因此，我們讓 **Bundle** 本身成為消耗性物品，並在傳遞 15 秒後到期。
* 我們以不同數量新增不同的 **Drop tables**，以確保傳遞 **11 個物品**，但不同的物品會在不同的表格上擲骰。
  * 首先，我們保證至少有 **1 個傳說物品**，因此第一個欄位會在 **Legendary Equipment** 上擲骰。
  * 接下來的 3 個欄位會在 **Anything** 上擲骰，可能會擲出更多 **Legendaries**，也可能擲出較不理想的普通裝備。這些擲骰將決定*好*的擲骰與*差*的擲骰，因為這三個物品的差異可能很大。
  * 最後，我們以保證的 **Rare** 和 **Uncommon** 物品填滿剩餘的欄位，確保 **11 個物品**的擲骰不會*太*好或太差。

## 結論

掉落表會從潛在物品和權數清單中隨機產生單一物品。組合包和容器可能是使用掉落表將一或多個物品傳遞給玩家的最簡單方式之一。

您可以使用下列其中一個伺服器 API 方法，從 [CloudScript](/zh-TW/services/playfab/live-service-management/service-gateway/automation/cloudscript/writing-custom-cloudscript) 手動使用掉落表：

1. [GetRandomResultTables](xref:titleid.playfabapi.com.server.playeritemmanagement.getrandomresulttables)
2. [EvaluateRandomResultTable](xref:titleid.playfabapi.com.server.playeritemmanagement.evaluaterandomresulttable)


## Related topics

- [Economy v2 中的掉落表和隨機戰利品](/zh-TW/services/playfab/economy-monetization/economy-v2/tutorials/drop-tables-and-randomized-loot.md)
- [目錄 (舊版 Economy)](/zh-TW/services/playfab/economy-monetization/economy/items/catalogs.md)
- [Economy (舊版) 中的商店與促銷](/zh-TW/services/playfab/economy-monetization/economy/tutorials/stores-and-sales.md)
- [Economy (舊版) 中的優待券和促銷活動](/zh-TW/services/playfab/economy-monetization/economy/tutorials/coupons-and-promotions.md)
- [Economy (舊版) 快速入門](/zh-TW/services/playfab/economy-monetization/economy/quickstart.md)
