aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/examples/README.md
blob: d823f5bf8077804fff9b9e22bc327e5b01c26675 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# ConventionalRP 示例

本目录包含 ConventionalRP SDK 的使用示例。

## 目录结构

```
examples/
├── basic_usage.py          # 基础使用示例
├── custom_plugin.py        # 自定义插件示例
├── rules/                  # 规则文件
│   └── dnd5e_rules.json5  # D&D 5E 解析规则
├── logs/                   # 示例日志文件
│   ├── sample_session.txt # 完整会话日志
│   └── combat_log.txt     # 战斗日志
└── output/                 # 输出文件目录(自动生成)
```

## 快速开始

### 1. 基础使用示例

演示如何解析 TRPG 日志并以多种格式输出:

```bash
cd examples
python basic_usage.py
```

**输出:**
- `output/session_output.json` - JSON 格式
- `output/session_output.html` - HTML 格式
- `output/session_output.md` - Markdown 格式

### 2. 自定义插件示例

演示如何创建自定义插件进行数据分析:

```bash
python custom_plugin.py
```

**功能:**
- 骰子统计分析
- 对话提取
- 角色行为分析

## 规则文件格式

规则文件使用 JSON5 格式(支持注释和尾随逗号):

```json5
{
  metadata: [{
    type: "metadata",
    patterns: ["正则表达式"],
    groups: ["字段名"],
    priority: 100
  }],
  
  content: [{
    type: "内容类型",
    match_type: "匹配模式",  // enclosed, prefix, suffix
    patterns: ["正则表达式"],
    groups: ["提取字段"],
    priority: 90
  }]
}
```

### 匹配模式说明

- **enclosed**: 封闭匹配(如 `**动作**`、`「对话」`)
- **prefix**: 前缀匹配(如 `[系统]消息`)
- **suffix**: 后缀匹配(文本结尾)

### 优先级

- 数字越大优先级越高
- 建议范围:1-100
- 元数据通常设置为最高优先级(100)

## 日志文件格式

标准 TRPG 日志格式:

```
[时间戳] <角色名> 内容
```

**示例:**

```
[2025-10-24 14:30:01] <艾莉娅> 「我要检查这扇门」
[2025-10-24 14:30:05] <DiceBot> 检定结果: [d20 = 18]
[2025-10-24 14:30:10] <DM> 你发现了陷阱
```

## 自定义规则

你可以为不同的游戏系统创建自定义规则:

### D&D 5E

已提供 `rules/dnd5e_rules.json5`

### 其他系统

创建新的规则文件,参考 D&D 5E 规则的结构:

```bash
cp rules/dnd5e_rules.json5 rules/my_system_rules.json5
# 然后编辑 my_system_rules.json5
```

## 创建自定义插件

插件是用于扩展功能的 Python 类:

```python
class MyPlugin:
    def __init__(self):
        self.name = "My Plugin"
    
    def process(self, parsed_data):
        # 你的处理逻辑
        return result
```

查看 `custom_plugin.py` 了解完整示例。

## 常见模式

### 1. 骰子投掷

- `[d20 = 18]` - 简单投掷结果
- `.r1d20+5` - 投掷命令
- `(1d20+5 = 18)` - 完整投掷信息

### 2. 角色动作

- `*动作描述*` - 单星号
- `**重要动作**` - 双星号

### 3. 对话

- `「对话内容」` - 中文引号
- `"对话内容"` - 英文引号
- `"对话内容"` - 弯引号

### 4. OOC(脱戏)

- `((OOC内容))` - 双括号
- `//OOC注释` - 双斜杠

### 5. 系统消息

- `[系统]消息内容`
- `[System]Message`

## 疑难解答

### 问题:规则文件加载失败

**解决方案:**
1. 确保文件是有效的 JSON5 格式
2. 检查正则表达式是否转义正确(使用 `\\` 而不是 `\`)
3. 验证文件编码为 UTF-8

### 问题:解析结果不正确

**解决方案:**
1. 调整规则的优先级
2. 测试正则表达式(使用 https://regex101.com/)
3. 检查 match_type 是否正确

### 问题:中文字符显示异常

**解决方案:**
- 确保所有文件使用 UTF-8 编码
- 在打开文件时指定 `encoding='utf-8'`

## 更多示例

访问项目文档查看更多示例:
https://crp.hydroroll.team/

## 贡献

欢迎提交新的示例和规则文件!请参考 CONTRIBUTING.md