# 记录击杀数量的物品

## 前置知识

* [shu-ju-data](https://cloudstack.gitbook.io/azureflow/he-xin-gong-neng/ji-chu-wu-pin-pei-zhi/shu-ju-data "mention")
* [yang-shi-display](https://cloudstack.gitbook.io/azureflow/he-xin-gong-neng/ji-chu-wu-pin-pei-zhi/yang-shi-display "mention")
* [onkill](https://cloudstack.gitbook.io/azureflow/wen-dang-su-cha/chu-fa-qi-trigger/onkill "mention")
* [she-zhi-shu-ju-setdata](https://cloudstack.gitbook.io/azureflow/wen-dang-su-cha/dong-zuo-action/wu-pin-xiang-guan/she-zhi-shu-ju-setdata "mention")

## 示例

首先，在 AzureFlow/items/ 文件夹下，创建一个名为 `KillCount.yml`的文件，创建完成后，让我们正式步入主题。

在制作记录击杀数量的物品之前，我们不妨先设想一下，既然需要记录击杀数量，那么不可或缺的需要一个数据来存储这个值，由此，我们使用 data 配置项定义一个名为 kill\_count 的数据，其初始值为0，编写配置如下：

```yaml
data:
  kill_count: 0
```

与此同时，我还们希望将这个数据能够展示到物品上，因此，使用 display.name 配置项完成需求，编写配置如下：

<pre class="language-yaml"><code class="lang-yaml">display:
  material: diamond_sword
  name: '&#x26;7已击杀: &#x26;e${<a data-footnote-ref href="#user-content-fn-1">kill_count</a>}'
</code></pre>

现在，然后输入`af reload`，将物品加载到服务器中，此时 AzureFlow将自动为我们生成 uuid 编码，生成后的配置如下：

<pre class="language-yaml"><code class="lang-yaml">data:
  kill_count: 0

display:
  material: diamond_sword
  name: '&#x26;7已击杀: &#x26;e${kill_count}'
  
<strong>internal:
</strong><strong>  # 每个物品的唯一标识不一样，你实际生成的值与文档可能会不一样
</strong><strong>  uuid: fabb6460-38ed-411f-a0e2-18c19511090e
</strong></code></pre>

同时，为了方便我们后续获取到该物品，我们为其添加别名 `kill_count_item`，定义配置如下：

<pre class="language-yaml"><code class="lang-yaml">data:
  kill_count: 0

display:
  material: diamond_sword
  name: '&#x26;7已击杀: &#x26;e${kill_count}'
  
internal:
  uuid: fabb6460-38ed-411f-a0e2-18c19511090e
<strong>  alias: [kill_count_item]
</strong></code></pre>

现在，让我们回到服务器中，重载插件后输入`af get kill_count_item`即可获得该物品。

<figure><img src="https://3060550947-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMMwEBOG4IWLy6kwrWTTw%2Fuploads%2F1zPaMat9n8s7vnGkfWeE%2Fimage.png?alt=media&#x26;token=c981787c-610c-4994-b813-132df26113d6" alt=""><figcaption><p>kill_count_item_0</p></figcaption></figure>

接下来，我们着手实现，在玩家使用该物品击杀怪物后，修改击杀计数的数据值同时更新物品。首先，既然是需要在玩家击杀后触发动作，因此我们毫无意外的使用 `onKill` 触发器，同时在触发器内编写动作，如 设置击杀计数的值加一、更新物品，基于上述思路，编写配置如下：

<pre class="language-yaml"><code class="lang-yaml">data:
  kill_count: 0

display:
  material: diamond_sword
  name: '&#x26;7已击杀: &#x26;e${kill_count}'
  
<strong>action:
</strong><strong>  # 为了方便测试, 我们在这里额外使用 onAttack 触发器, 并且设置伤害为10000, 即秒杀怪物
</strong><strong>  onAttack:
</strong><strong>    - 'run: event.damage = 10000'
</strong><strong>  onKill:
</strong><strong>    - 'set-data: <a data-footnote-ref href="#user-content-fn-2">kill_count</a> + 1'
</strong><strong>    - 'update'
</strong>  
internal:
  uuid: fabb6460-38ed-411f-a0e2-18c19511090e
  alias: [kill_count_item]
</code></pre>

现在，让我们回到服务器中，使用手中的物品击杀几个怪物，不出所料，我们成功完成了记录击杀数量的物品。

<figure><img src="https://3060550947-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMMwEBOG4IWLy6kwrWTTw%2Fuploads%2FyvsIHU8pTTagqbd736le%2F1.gif?alt=media&#x26;token=4a42ea08-2427-41e2-8339-d625d9b8903b" alt="" width="375"><figcaption><p>击杀物品实现</p></figcaption></figure>

[^1]: 此处引用定义好的 击杀个数 数据

[^2]: 此处修改了 击杀数据 数据
