> ## 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.

# 建立事件型成就的情境

> 事件型 XBOX Live 成就的常見模式，涵蓋 AND/OR 邏輯、重複動作、收集、個人最佳成績與布林旗標。

本主題說明建立成就的一些常見情境。

<Note>如果您目前正在使用事件型成就 (Achievements 2013)，且想繼續使用跨平台進度，則適用本主題。否則，建議您使用[遊戲管理型成就](/zh-TW/services/xbox-services/player-data/achievements/title-managed/live-achievements-tm-overview)。</Note>

* [多個條件的 AND/OR 邏輯](#scenario-1)
* [重複動作](#scenario-2)
* [動作集合](#scenario-3)
* [個人最佳成績](#scenario-4)
* [表示已符合條件的二進位值](#scenario-5)

<a id="scenario-1" />

## 多個條件的 AND/OR 邏輯

成就有兩種常見的 AND 情境：同步 AND 與非同步 AND。

### 非同步 AND

非同步 AND 邏輯所定義的成就，會在所有成就規則都已滿足時解鎖。使用者可以在不同的時間點，彼此獨立地滿足每個規則。

此類成就的範例是「擊殺 10 隻殭屍與 20 隻幽靈」。若要定義此成就，請如下表所示設定多個成就規則。

| 欄位 | 值 |
| - | - |
| **規則 #1 名稱** | **擊殺 10 隻殭屍** |
| 統計資料 | Kills.EnemyType.Zombie |
| 動作 | SUM |
| 閾值 | 10 |
| **規則 #2 名稱** | **擊殺 20 隻幽靈** |
| 統計資料 | Kills.EnemyType.Ghost |
| 動作 | SUM |
| 閾值 | 20 |

### 同步 AND

同步 AND 邏輯所定義的成就，會在所有成就規則都已滿足時解鎖，且使用者必須同時滿足每個條件。此類成就的範例是「以 Johnny 進行遊戲時，用球棒擊殺 10 隻殭屍」。

同步 AND 規則無法單純以分別擷取每個條件的多個成就規則來定義。這樣做無法如預期運作，因為每個成就規則都可以獨立地被滿足。如果使用者執行了下列動作，範例成就就會被錯誤地解鎖：

* 星期一：以 Johnny 進行遊戲，擊殺數為零。
* 星期二：以 Sam 進行遊戲，擊殺 10 隻殭屍。
* 星期五：以 Tim 進行遊戲，用球棒擊殺五隻骷髏。

若要定義這樣的成就，您必須定義涵蓋每個條件的統計資料規則。只有事件包含使用者活動的完整內容，因為事件會確切表達某個時刻在遊戲中發生的事情。統計資料繼承自事件，而成就繼承自統計資料。您必須將成就條件定義為統計資料，以保存與成就相關的任何內容。只有在透過包含您所需確切值的特定統計資料執行個體達到閾值時，成就才會解鎖。下列設定定義了範例成就。

| 欄位 | 值 |
| - | - |
| **規則 #1 名稱** | 以 Johnny 進行遊戲時，用球棒擊殺 10 隻殭屍 |
| 統計資料 | Kills.EnemyType.Zombie.WeaponType.Bat.PlayerCharacter.Johnny |
| 動作 | SUM |
| 閾值 | 10 |

### 成就的 OR 邏輯

成就最常見的 OR 情境，是將特定目標描述為一組不同的、明確列舉的可能方式。成就可以透過這種方式或那種方式來解鎖。

您無法透過定義多個成就規則 (每個目標一個) 來實作此情境。成就上的多個規則會以邏輯 AND 的方式運作，因此必須滿足每個規則才能解鎖成就。針對「在賽道 A 上以三分鐘內完成比賽」使用一個成就規則，並針對「在賽道 B 上行駛 1,000 英里」使用第二個成就規則，會產生一個只有在使用者同時達成這兩個目標時才會解鎖的成就。

相反地，若要定義具有 OR 邏輯的成就，您必須將單一成就規則設定為以多個統計資料執行個體為基礎，其中每個統計資料執行個體追蹤一種可接受的方式。

#### 使用 MIN 或 MAX 規則

此案例的範例是「在賽道 A、賽道 B 或賽道 F 上以三分鐘內完成比賽」。此成就的設定如下表所示。

| 欄位 | 值 |
| - | - |
| **規則 #1 名稱** | 在賽道 A、B 或 F 上以三分鐘內完成比賽 |
| 統計資料 | FinishTimeInSeconds.TrackId.A |

FinishTimeInSeconds.TrackId.B

FinishTimeInSeconds.TrackId.F
動作 | MIN
閾值 | 180

由於此成就規則使用 MIN 規則動作，因此只要列出的任何統計資料執行個體達到閾值，成就就會解鎖。例如，如果 `FinishTimeInSeconds.TrackId.A is 220`、`FinishTimeInSeconds.TrackId.B is 163`，且 `FinishTimeInSeconds.TrackId.F` 為 199，成就就會解鎖，因為使用者在賽道 B 上的完賽時間優於閾值。

#### 使用 SUM 規則

此案例的範例是「在賽道 A、賽道 B 或賽道 F 上累計行駛 1,000 英里」。此成就的設定如下表所示。

| 欄位 | 值 |
| - | - |
| **規則 #1 名稱** | 在賽道 A、B 或 F 上行駛 1,000 英里以上 |
| 統計資料 | MilesDriven.TrackId.A |

MilesDriven.TrackId.B

MilesDriven.TrackId.F
動作 | SUM
閾值 | 1000

由於此成就規則使用 SUM 規則動作，因此當列出的統計資料執行個體彙總後的組合達到閾值時，成就就會解鎖。例如，如果 `MilesDriven.TrackId.A is 900`、`MilesDriven.TrackId.B is 115`，且 `MilesDriven.TrackId.F is 0`，成就就會解鎖，因為使用者在這三個統計資料上的彙總總計超過了閾值。

#### 達成這個目標或那個目標

不支援的成就情境是要求使用者完成數個不同目標中的其中一個。例如：「在賽道 A 上以三分鐘內完成比賽，或在賽道 B 上行駛 1000 英里」。

成就邏輯目前不支援此成就情境。您無法透過定義多個成就規則 (每個目標一個) 來達成此目的。成就上的多個規則會以邏輯 AND 的方式運作，因此必須滿足每個規則，成就才會解鎖。針對「在賽道 A 上以三分鐘內完成比賽」使用一個成就規則，並針對「在賽道 B 上行駛 1,000 英里」使用第二個成就規則，會產生一個只有在使用者同時滿足這兩個規則時才會解鎖的成就。

<a id="scenario-2" />

## 重複動作

使用此模式來定義需要使用者重複某個動作超過一次的成就。

### 範例 1：贏得 50 場多人遊戲對戰

| 欄位 | 值 |
| - | - |
| **規則名稱** | 贏得 50 場多人遊戲對戰 |
| 統計資料 | MatchesCompleted.Result.1.Mode.Multiplayer |
| 動作 | SUM |
| 閾值 | 50 |

### 範例 2：上傳 10 部影片並評分 100 部影片

| 欄位 | 值 |
| - | - |
| **規則 #1 名稱** | **上傳 10 部影片** |
| 統計資料 | VideosUploaded |
| 動作 | SUM |
| 閾值 | 10 |
| **規則 #2 名稱** | **評分 100 部影片** |
| 統計資料 | VideosRated |
| 動作 | SUM |
| 閾值 | 100 |

如需設計使用者統計資料的詳細資訊，請參閱[使用計數器追蹤累計值](/zh-TW/services/xbox-services/player-data/stats-leaderboards/event-based/config/live-user-stats-scenarios#ucfcv)。

<a id="scenario-3" />

## 動作集合

### 目標：找到 Y 個物品中的 X 個

使用此模式來定義需要使用者對特定集合中的所有 (或部分) 成員採取動作的成就。

### 範例 1：以 Hardcore 難度完成所有關卡

| 欄位 | 值 |
| - | - |
| **規則 #1 名稱** | **以 Hardcore 難度完成第 1 關** |
| 統計資料 | LevelCompleted.Mode.3.LevelId.1 |
| 動作 | SUM |
| 閾值 | 1 |
| **規則 #2 名稱** | **以 Hardcore 難度完成第 2 關** |
| 統計資料 | LevelCompleted.Mode.3.LevelId.2 |
| 動作 | SUM |
| 閾值 | 1 |
| **規則 #3 名稱** | **以 Hardcore 難度完成第 3 關** |
| 統計資料 | LevelCompleted.Mode.3.LevelId.3 |
| 動作 | SUM |
| 閾值 | 1 |

### 範例 2：在三分鐘內完成任一歐洲賽道

此成就可以定義為個別賽道完賽時間的最小值，或使用一組賽道的最佳完賽時間來定義。請使用下列其中一種方法，但不要同時使用兩種。

#### 方法 1

| 欄位 | 值 |
| - | - |
| **規則名稱** | 在三分鐘內完成任一歐洲賽道 |
| 統計資料 | LastFinishTimeInSeconds.TrackId.21 |

LastFinishTimeInSeconds.TrackId.22

LastFinishTimeInSeconds.TrackId.23

LastFinishTimeInSeconds.TrackId.24

LastFinishTimeInSeconds.TrackId.25

LastFinishTimeInSeconds.TrackId.26
動作 | MIN
閾值 | 180

#### 方法 2

| 欄位 | 值 |
| - | - |
| **規則名稱** | 在三分鐘內完成任一歐洲賽道 |
| 統計資料 | BestFinishTimeInSeconds.TrackSet.Europe |
| 動作 | MIN |
| 閾值 | 180 |

若要設計相關聯的使用者統計資料，請參閱[追蹤最近一次的值](/zh-TW/services/xbox-services/player-data/stats-leaderboards/event-based/config/live-user-stats-scenarios#ttmr)與[追蹤個人最佳成績](/zh-TW/services/xbox-services/player-data/stats-leaderboards/event-based/config/live-user-stats-scenarios#tapb)。

<a id="scenario-4" />

## 個人最佳成績

使用此模式來定義需要使用者在單一工作階段或單次遊玩中超越目標的成就。此成就無法透過彙總的努力 (例如多次遊玩) 來達成。

#### 範例 1：以五次或更少的死亡次數完成遊戲

| 欄位 | 值 |
| - | - |
| **規則名稱** | 以五次或更少的死亡次數完成遊戲 |
| 統計資料 | PlaythroughDeaths.GameResultId.1 |
| 動作 | MIN |
| 閾值 | 5 |

#### 範例 2：以 Lebron James 進行比賽，得到至少 50 分並贏得比賽

| 欄位 | 值 |
| - | - |
| **規則名稱** | 贏得比賽，且以 Lebron 進行遊戲，且得到至少 50 分 |
| 統計資料 | BestScore.PlayerId.3056.MatchResultId.1 |
| 動作 | SUM |
| 閾值 | 10 |

<a id="scenario-5" />

## 表示已符合條件的二進位值

使用此模式來定義需要使用者完成複雜活動的成就，而這些活動無法輕易透過 XBOX 服務統計資料追蹤，或不受其他 XBOX 服務成就設定選項支援。

### 範例：用霰彈槍擊殺 90 次或用狙擊槍擊殺 10 次

| 欄位 | 值 |
| - | - |
| **規則名稱** | 霰彈槍擊殺 90 次或狙擊槍擊殺 10 次 |
| 統計資料 | AchievementUnlocked.UnlockId.9010 |
| 動作 | SUM |
| 閾值 | 1 |

<Info>此成就設定不會追蹤霰彈槍擊殺數或狙擊槍擊殺數。它只會記錄這兩個條件之一已滿足的事實。由於 Data Platform 不支援此情境，因此必須由遊戲來設定此成就。</Info>


## Related topics

- [事件型成就概念](/zh-TW/services/xbox-services/player-data/achievements/event-based/concepts/live-achievements-eb-concepts-nav.md)
- [概念](/zh-TW/services/xbox-services/player-data/achievements/event-based/concepts/index.md)
- [事件型成就的入口網站設定](/zh-TW/services/xbox-services/player-data/achievements/event-based/config/live-achievements-eb-portal.md)
- [事件型成就](/zh-TW/services/xbox-services/player-data/achievements/event-based/live-achievements-eb-nav.md)
- [取得事件型成就](/zh-TW/services/xbox-services/player-data/achievements/event-based/how-to/live-getting-event-based-achievements.md)
