# 状态栏系统

OMate 的状态栏系统允许您在聊天中跟踪和管理各种状态值,如角色属性、资源数量、进度等。状态栏与事件系统紧密集成,可以实现基于状态变化的自动化交互。

# 状态栏概述

状态栏是一个动态显示系统,可以在聊天界面中实时展示各种状态信息。这些状态值可以:

  • 显示角色的各种属性(健康、魔法、经验等)
  • 跟踪资源数量(金币、道具、材料等)
  • 记录进度信息(任务完成度、关系等级等)
  • 触发基于状态的事件和交互

# 状态栏语法

# 基本格式

状态栏使用特殊的 XML 标签格式,需要在 AI 回复中包含:

<statusBar>
<状态名称>图标|数值</状态名称>
<状态名称>图标|数值</状态名称>
</statusBar>

# 语法说明

  • 外层标签<statusBar></statusBar> 包围所有状态项
  • 状态项格式<状态名称>图标|数值</状态名称>
  • 状态名称:可以是任意中文或英文名称
  • 图标:使用 Emoji 或特殊符号来直观表示状态类型
  • 数值:可以是数字、文本或组合形式
  • 分隔符:使用竖线 | 分隔图标和数值

# 示例

<statusBar>
<健康>❤️|85</健康>
<魔法>💙|120</魔法>
<金币>💰|1500</金币>
<经验>⭐|2340</经验>
<等级>🏆|15</等级>
</statusBar>

# 常用状态类型

# 角色属性

<statusBar>
<生命值>❤️|100</生命值>
<魔法值>💙|80</魔法值>
<体力>⚡|90</体力>
<精神>🧠|75</精神>
<力量>💪|85</力量>
<敏捷>🏃|70</敏捷>
<智力>📚|95</智力>
</statusBar>

# 资源和物品

<statusBar>
<金币>💰|2500</金币>
<宝石>💎|12</宝石>
<食物>🍖|8</食物>
<药水>🧪|5</药水>
<武器>⚔️|铁剑</武器>
<护甲>🛡️|皮甲</护甲>
</statusBar>

# 关系和进度

<statusBar>
<亲密度>💕|75</亲密度>
<信任度>🤝|60</信任度>
<声望>👑|高</声望>
<任务进度>📋|3/5</任务进度>
<完成度>📊|80%</完成度>
</statusBar>

# 环境和时间

<statusBar>
<天气>☀️|晴朗</天气>
<时间>🕐|下午3点</时间>
<季节>🌸|春天</季节>
<位置>📍|王都</位置>
</statusBar>

# 状态栏的使用方法

# 在提示词注入中设置

要让 AI 自动输出状态栏,您可以在「提示词注入」中添加相关指令:

  1. 进入「提示词注入」页面
  2. 创建一个新的提示词注入
  3. 设置为「手动启用」
  4. 位置选择「聊天记录」
  5. 深度设置为 1
  6. 在对话中启用

示例提示词内容:

每次对话后,在最后输出本次对话更新的状态值,格式请参考:
<statusBar>
<亲密度>❤️|30</亲密度>
</statusBar> 
亲密度初始值为30,每次对话增加10

# 手动添加状态栏

您也可以在角色设定或对话中直接要求 AI 输出状态栏:

请在回复末尾显示当前的角色状态,包括健康值、魔法值和金币数量。

# 与事件系统的集成

状态栏与事件书系统紧密集成,可以实现基于状态变化的自动事件触发。

# 状态条件事件

在事件书中,您可以设置「状态值条件」类型的完成条件,当状态栏中的值满足特定条件时,事件会自动完成。

支持的比较操作符:

  • 等于 (eq):状态值等于指定值
  • 不等于 (neq):状态值不等于指定值
  • 大于 (gt):状态值大于指定值
  • 小于 (lt):状态值小于指定值
  • 大于等于 (gte):状态值大于或等于指定值
  • 小于等于 (lte):状态值小于或等于指定值
  • 包含 (contains):状态值包含指定文本
  • 不包含 (notcontains):状态值不包含指定文本
  • 为空 (empty):状态值为空
  • 不为空 (notempty):状态值不为空

# 示例场景

健康值低触发事件:

{
  "key": "健康",
  "op": "lt",
  "value": 20
}

金币达到目标触发事件:

{
  "key": "金币",
  "op": "gte",
  "value": 1000
}

获得特定装备触发事件:

{
  "key": "武器",
  "op": "contains",
  "value": "传说"
}

# 状态栏的显示和管理

# 自动提取

系统会自动从 AI 回复中提取状态栏信息,并在聊天界面中显示。状态栏通常显示在消息的特定位置,方便用户查看当前状态。

# 状态持久化

状态值会在对话过程中保持,新的状态栏会更新相应的值,未提及的状态保持不变。这确保了状态的连续性和一致性。

# 语音过滤

在语音朗读功能中,状态栏标签及其内容会被自动过滤,不会被朗读出来,确保语音体验的流畅性。

# 最佳实践

# 状态设计原则

  1. 简洁明了:使用直观的图标和简短的名称
  2. 一致性:在整个对话中保持状态名称和格式的一致
  3. 相关性:只显示与当前情境相关的状态
  4. 适度更新:不要在每条消息中都更新所有状态

# 图标选择建议

  • 生命/健康❤️ 💗 💖
  • 魔法/能量💙 🔋
  • 金钱/财富💰 💵 💎
  • 经验/等级 🌟
  • 物品/装备⚔️ 🛡️ 🏹
  • 关系/情感💕 💖 🤝
  • 进度/完成📊 📈
  • 时间/环境🕐 ☀️ 🌙

# 数值格式建议

  • 纯数字851500
  • 分数形式3/580/100
  • 百分比75%100%
  • 等级描述中等
  • 组合形式85/100 (85%)

# 常见问题

Q: 状态栏不显示怎么办? A: 检查 XML 标签格式是否正确,确保使用了正确的开始和结束标签。

Q: 可以使用中文状态名称吗? A: 可以,系统完全支持中文状态名称。

Q: 状态值可以是文本吗? A: 可以,状态值支持数字、文本或组合形式。

Q: 如何重置所有状态? A: 可以输出一个新的完整状态栏来覆盖之前的所有状态。

通过合理使用状态栏系统,您可以创建更加丰富和互动的聊天体验,让对话具有游戏化的元素和动态的状态跟踪功能。