447 lines
20 KiB
Markdown
447 lines
20 KiB
Markdown
好的,我将把我们讨论过的**所有细节**,包括灵根类型、双轨制突破、所有保护机制、数据库设计、Redis 方案和防封策略,全部汇总成一份详尽的、可直接用于开发的 Markdown 研发文档。
|
||
|
||
-----
|
||
|
||
# 🚀 (终稿) 群聊文字修仙Bot - 综合研发文档
|
||
|
||
## 1\. 核心设计原则
|
||
|
||
本项目旨在实现一个功能完整、可玩性高、同时严格遵守平台规则的文字修仙 Bot。
|
||
|
||
1. **简化交互 (防封/防骚扰):** 杜绝一切“问答式”或“多步骤”指令。所有指令都必须是原子操作(一次性完成)。通过强制冷却 (Cooldown) 和清晰的玩家状态机来防止刷屏和恶意PVP。
|
||
2. **高性能:** 核心热数据(玩家状态、排行榜)必须由 Redis 管理,数据库 (MariaDB) 仅作为持久化存储。
|
||
3. **策略深度:** 玩家有明确的“策略分支”,例如【丹药 vs 强行】突破,【PVE vs PVP】资源获取,【灵根天赋】带来的个体差异。
|
||
好的,道友。修行之路漫漫,境界划分乃是天道之基石。
|
||
|
||
这里为你拟定一份详尽的、以“每阶10层”为基础的修炼级别体系。此体系平衡了前期“凡人”到“修士”的过渡,以及中后期“成仙”的漫长道路。
|
||
|
||
---
|
||
|
||
### 凡人篇 (Mortal Phase)
|
||
|
||
* **凡人 (Mortal)**
|
||
* (无层级之分,尚未感应灵气)
|
||
|
||
### 人仙篇 (Human Immortal Path)
|
||
|
||
#### 第 1 境:练气 (Lianqi / Qi Refining)
|
||
* *描述:* 感应灵气,引气入体,淬炼肉身,开辟丹田。此为修行之始。
|
||
* *层级:* **练气 1 层 ~ 练气 10 层 (大圆满)**
|
||
* *瓶颈:* 10层大圆满后,需冲击 **筑基** 瓶颈。
|
||
|
||
#### 第 2 境:筑基 (Zhuji / Foundation Establishment)
|
||
* *描述:* 灵气化液,在丹田内筑下道基。神识诞生,寿命大涨。
|
||
* *层级:* **筑基 1 层 ~ 筑基 10 层 (大圆满)**
|
||
* *瓶颈:* 10层大圆满后,需碎丹田道基,凝结 **金丹**。
|
||
|
||
#### 第 3 境:金丹 (Jindan / Golden Core)
|
||
* *描述:* 灵液归一,结成金丹。丹成无悔,自此踏入修仙坦途,可御空飞行。
|
||
* *层级:* **金丹 1 层 ~ 金丹 10 层 (大圆满)**
|
||
* *瓶颈:* 10层大圆满后,需碎丹,使丹中“真灵”化为 **元婴**。
|
||
|
||
#### 第 4 境:元婴 (Yuanying / Nascent Soul)
|
||
* *描述:* 金丹破碎,元婴出世。元婴为修士“第二性命”,可神魂出窍,夺舍重生。
|
||
* *层级:* **元婴 1 层 ~ 元婴 10 层 (大圆满)**
|
||
* *瓶颈:* 10层大圆满后,需元婴与神魂合一,领悟天地法则,是为 **化神**。
|
||
|
||
#### 第 5 境:化神 (Huashang / Spirit Transformation)
|
||
* *描述:* 神游太虚,领悟法则。元神合一,开始真正掌控天地灵气,法力无边。
|
||
* *层级:* **化神 1 层 ~ 化神 10 层 (大圆满)**
|
||
* *瓶颈:* 10层大圆满后,需元神与肉身彻底融合,达 **合体** 之境。
|
||
|
||
---
|
||
|
||
### 地仙篇 (Earthly Immortal Path)
|
||
|
||
*(后续境界通常更为艰难,可作为游戏的后期内容)*
|
||
|
||
#### 第 6 境:合体 (Heti / Integration)
|
||
* *描述:* 元神与肉身完美融合,不分彼此。举手投足引动天地之力,肉身不朽。
|
||
* *层级:* **合体 1 层 ~ 合体 10 层 (大圆满)**
|
||
|
||
#### 第 7 境:大乘 (Dacheng / Mahayana)
|
||
* *描述:* 法则大成,法力无边,已是人界巅峰。开始为飞升仙界做最后准备,积累底蕴。
|
||
* *层级:* **大乘 1 层 ~ 大乘 10 层 (大圆满)**
|
||
|
||
#### 第 8 境:渡劫 (Dujie / Tribulation)
|
||
* *描述:* 积累圆满,引动天劫(雷劫、心魔劫等)。此为成仙最后一道门槛,九死一生。
|
||
* *层级:* **渡劫 1 层 ~ 渡劫 10 层 (大圆满)**
|
||
*(注:此处 10 层可理解为承受“十重天劫”,或积累底蕴的十个阶段)*
|
||
|
||
### 真仙 (True Immortal)
|
||
* *描述:* 成功渡过天劫,飞升上界。
|
||
* *(游戏终点或新篇章起点)*
|
||
|
||
---
|
||
|
||
## 📖 玩家用户手册(如何玩)
|
||
|
||
### 快速开始
|
||
- 注册角色:发送 `注册修仙 道号`
|
||
- 查看状态:发送 `我的状态`
|
||
- 开始修炼:发送 `闭关`(进入闭关状态,安全不可被劫掠)
|
||
- 结束修炼:适时发送 `出关`(获得修为,进入“气息不稳”短暂状态)
|
||
- 聚灵提升:发送 `聚灵 数量`(消耗灵石,提升修为)
|
||
- 查看帮助:发送 `修仙帮助`(或 `帮助`、`help`、`修仙指令`、`指令`)
|
||
|
||
### 日常玩法
|
||
- 签到领石:`修仙签到`(每日一次,获得灵石)
|
||
- 坊市购物:
|
||
- 查看商品:`坊市`
|
||
- 购买物品:`购买 物品名称 数量`
|
||
- 查看背包:`乾坤袋`
|
||
- 积分兑换灵石:`积分购石 积分数`
|
||
- 比例:`10 积分 = 1 灵石`
|
||
- 示例:`积分购石 100` → 获得 `10` 灵石
|
||
|
||
### 境界与修炼
|
||
- 境界层数:每个境界均为 1–10 层,达到 `10 层`为瓶颈(如 `炼气10层`)
|
||
- 自动层提升:修为达到阈值自动提升层数(不跨瓶颈)。不同境界阈值不同:
|
||
- 炼气:每层约需 `1000` 修为
|
||
- 筑基:每层约需 `5000` 修为
|
||
- 金丹:每层约需 `50000` 修为
|
||
- 突破瓶颈:当到达 `当前境界10层` 可发起突破:
|
||
- 丹药突破:`突破`(需丹药,如 `筑基丹`,成功率较高、修为消耗较低)
|
||
- 强行突破:`强行突破`(不需丹药,成功率较低、修为消耗较高)
|
||
- 成功则进入下一境界;失败则保留当前境界与修为变动
|
||
|
||
### 门派系统
|
||
- 创建门派:`创建门派 名称`(`元婴期及以上`)
|
||
- 加入门派:`加入门派 名称`
|
||
- 退出门派:`退出门派`
|
||
- 同门规则:仅同门可 `赠与 灵石`、`赠送 物品`;不可劫掠同门
|
||
|
||
### PVP 劫掠
|
||
- 发起劫掠:`劫掠 目标wxid`
|
||
- 限制与保护:
|
||
- 新手保护:`炼气期`目标不可劫掠
|
||
- 状态保护:`闭关`或`受伤保护`中不可被劫掠
|
||
- 群限制:仅限同一群内劫掠
|
||
- 门派限制:不可劫掠同门
|
||
- 结果:成功夺取对方约 `20%` 灵石,对方进入 `受伤保护`;失败无收益
|
||
|
||
### 排行榜
|
||
- 修为榜:`排行榜`(Top10);可能开启境界分值榜(按境界映射分加层数)
|
||
|
||
### 冷却与撤回
|
||
- 指令独立冷却(如 `闭关/出关≈5s`、`聚灵≈30s`、`突破≈60s`)
|
||
- 消息自动撤回:错误提示≈`5s`,成功提示≈`10s`,列表展示≈`20–30s`
|
||
|
||
### 常用示例
|
||
- 注册:`注册修仙 张三`;状态:`我的状态`
|
||
- 闭关/出关:`闭关` → `出关`
|
||
- 聚灵:`聚灵 10`
|
||
- 坊市:`坊市` → `购买 筑基丹 1` → `乾坤袋`
|
||
- 积分换石:`积分购石 100`(得 10 灵石)
|
||
- 突破:`突破`(需 `筑基丹`)或 `强行突破`
|
||
- 赠与:`赠与 @wxid_xxx 50`;赠送:`赠送 @wxid_xxx 筑基丹 1`
|
||
- 劫掠:`劫掠 @wxid_xxx`
|
||
- 门派:`创建门派 凌霄阁`、`加入门派 凌霄阁`、`退出门派`
|
||
- 排行:`排行榜`
|
||
|
||
### 常见问题
|
||
- “未注册”:先发送 `注册修仙 道号`
|
||
- “命令格式错误”:参考 `修仙帮助` 用法提示
|
||
- 积分不足/灵石不足:指令会提示当前剩余或不足原因
|
||
- 未到瓶颈:请先提升到 `当前境界10层`
|
||
- 强行突破失败:属正常设定,建议用丹药或补足修为
|
||
|
||
## 2\. 🛠️ 技术栈
|
||
|
||
| 类别 | 技术 | 备注 |
|
||
| :--- | :--- | :--- |
|
||
| 语言 | **Python 3.10+** | 异步 (asyncio) |
|
||
| Bot框架 | **NoneBot2** / **python-telegram-bot** | |
|
||
| 数据库 | **MariaDB 10.5+** | (InnoDB, utf8mb4) |
|
||
| ORM | **SQLAlchemy 2.0 (Async)** | |
|
||
| 缓存/限流 | **Redis** | 性能与防封的核心 |
|
||
|
||
## 3\. 💾 数据库设计 (MariaDB)
|
||
|
||
### 表 1: `t_xiuxian_player` (玩家核心表)
|
||
|
||
```sql
|
||
CREATE TABLE t_xiuxian_player (
|
||
-- 核心ID
|
||
user_id VARCHAR(100) NOT NULL COMMENT '平台用户ID',
|
||
group_id VARCHAR(100) NOT NULL COMMENT '主要所在群ID',
|
||
|
||
-- 基础信息
|
||
dao_name VARCHAR(100) NOT NULL COMMENT '道号',
|
||
realm VARCHAR(50) DEFAULT '凡人' COMMENT '境界 (如: 炼气1层, 筑基2层)',
|
||
spirit_root VARCHAR(50) DEFAULT '凡灵根' COMMENT '灵根天赋',
|
||
clan_id BIGINT DEFAULT NULL COMMENT '所属门派ID (外键)',
|
||
|
||
-- 资源
|
||
cultivation_points BIGINT DEFAULT 0 COMMENT '修为',
|
||
spirit_stone BIGINT DEFAULT 0 COMMENT '灵石 (对接你的积分系统)',
|
||
|
||
-- 状态机
|
||
status VARCHAR(20) DEFAULT 'Idle' COMMENT '玩家状态: Idle, Cultivating, Unstable_Qi, Injured',
|
||
status_until DATETIME DEFAULT NULL COMMENT '状态到期时间',
|
||
last_cultivate_time DATETIME DEFAULT NULL COMMENT '上次闭关开始时间',
|
||
|
||
PRIMARY KEY (user_id),
|
||
KEY idx_clan_id (clan_id),
|
||
KEY idx_realm (realm),
|
||
CONSTRAINT fk_clan_id FOREIGN KEY (clan_id) REFERENCES t_xiuxian_clan(clan_id) ON DELETE SET NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='玩家核心数据表';
|
||
```
|
||
|
||
### 表 2: `t_xiuxian_clan` (门派表)
|
||
|
||
```sql
|
||
CREATE TABLE t_xiuxian_clan (
|
||
clan_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '门派ID',
|
||
clan_name VARCHAR(100) NOT NULL COMMENT '门派名称',
|
||
group_id VARCHAR(100) NOT NULL COMMENT '所属群ID',
|
||
leader_user_id VARCHAR(100) NOT NULL COMMENT '掌门ID',
|
||
|
||
PRIMARY KEY (clan_id),
|
||
UNIQUE KEY uk_group_clan_name (group_id, clan_name) COMMENT '同一群内门派名唯一'
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='门派表';
|
||
```
|
||
|
||
### 表 3: `t_xiuxian_item` (物品表 - 静态)
|
||
|
||
```sql
|
||
CREATE TABLE t_xiuxian_item (
|
||
item_id INT NOT NULL AUTO_INCREMENT COMMENT '物品ID',
|
||
name VARCHAR(100) NOT NULL COMMENT '物品名称',
|
||
type VARCHAR(50) NOT NULL COMMENT '物品类型 (丹药, 材料)',
|
||
description TEXT COMMENT '物品描述',
|
||
|
||
PRIMARY KEY (item_id),
|
||
UNIQUE KEY uk_name (name)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物品定义表 (静态数据)';
|
||
```
|
||
|
||
*注:开发初期,此表内容可硬编码在 `Config` 中。*
|
||
|
||
### 表 4: `t_xiuxian_inventory` (玩家背包表)
|
||
|
||
```sql
|
||
CREATE TABLE t_xiuxian_inventory (
|
||
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '背包条目ID',
|
||
user_id VARCHAR(100) NOT NULL COMMENT '玩家ID (外键)',
|
||
item_id INT NOT NULL COMMENT '物品ID (外键)',
|
||
quantity INT NOT NULL DEFAULT 0 COMMENT '数量',
|
||
|
||
PRIMARY KEY (id),
|
||
UNIQUE KEY uk_user_item (user_id, item_id) COMMENT '同一玩家同种物品只有一条记录',
|
||
CONSTRAINT fk_inv_user FOREIGN KEY (user_id) REFERENCES t_xiuxian_player(user_id) ON DELETE CASCADE,
|
||
CONSTRAINT fk_inv_item FOREIGN KEY (item_id) REFERENCES t_xiuxian_item(item_id) ON DELETE CASCADE
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='玩家背包表';
|
||
```
|
||
|
||
-----
|
||
|
||
## 4\. ⚙️ 核心系统配置 (Config)
|
||
|
||
这是游戏平衡性的核心,**必须**以配置文件 (如 `config.py`) 存在,**严禁**硬编码在逻辑中。
|
||
|
||
### 4.1. 灵根配置 (`SPIRIT_ROOT_CONFIG`)
|
||
|
||
用于 `/注册修仙` 和 `/出关`。
|
||
|
||
```python
|
||
# 灵根名称: (出现权重, 修为加成乘数)
|
||
SPIRIT_ROOT_CONFIG = {
|
||
"废灵根": (40, 0.8), # 40% 概率抽到, 修为效率 0.8x
|
||
"凡灵根": (30, 1.0), # 30% 概率, 基础效率 1.0x
|
||
"真灵根": (15, 1.2), # 15% 概率, 效率 1.2x
|
||
"异灵根": (10, 1.5), # 10% 概率, 效率 1.5x
|
||
"天灵根": (5, 2.0), # 5% 概率, 效率 2.0x
|
||
}
|
||
|
||
# 基础修为速率 (每小时)
|
||
BASE_CULTIVATION_RATE = 100
|
||
```
|
||
|
||
### 4.2. 突破配置 (`BREAKTHROUGH_CONFIG`)
|
||
|
||
用于 `/突破` 和 `/强行突破`。这是**双轨制**设计的核心。
|
||
|
||
```python
|
||
# Key 是玩家当前境界
|
||
BREAKTHROUGH_CONFIG = {
|
||
"炼气10层": {
|
||
"path_pill": {
|
||
"name": "丹药突破",
|
||
"required_item_id": 101, # 物品ID (筑基丹)
|
||
"required_item_name": "筑基丹",
|
||
"cultivation_cost": 5000, # 消耗修为 (低)
|
||
"base_success_rate": 0.4, # 成功率 (高)
|
||
"target_realm": "筑基1层" # 成功后的境界
|
||
},
|
||
"path_hard": {
|
||
"name": "强行突破",
|
||
"cultivation_cost": 20000, # 消耗修为 (非常高)
|
||
"base_success_rate": 0.1, # 成功率 (非常低)
|
||
"target_realm": "筑基2层" # 成功后的境界 (奖励更高!)
|
||
}
|
||
},
|
||
"筑基10层": {
|
||
"path_pill": {
|
||
"name": "丹药突破",
|
||
"required_item_id": 102, # 物品ID (金元丹)
|
||
"required_item_name": "金元丹",
|
||
"cultivation_cost": 50000,
|
||
"base_success_rate": 0.2,
|
||
"target_realm": "金丹1层"
|
||
},
|
||
"path_hard": {
|
||
"name": "强行突破",
|
||
"cultivation_cost": 200000,
|
||
"base_success_rate": 0.05,
|
||
"target_realm": "金丹2层"
|
||
}
|
||
}
|
||
# ... 更多境界
|
||
}
|
||
```
|
||
|
||
## 5\. 🚀 核心系统设计
|
||
|
||
### 5.1. Redis 集成 (性能 & 防封)
|
||
|
||
1. **玩家数据缓存 (Cache-Aside):**
|
||
|
||
* **Key:** `xiuxian:cache:player:{user_id}`
|
||
* **Value:** `t_xiuxian_player` 数据的 JSON 序列化。
|
||
* **读取:** 99% 的指令(如 `/我的状态`, `/劫掠` 检查)**必须**先读 Redis。
|
||
* **写入:** 所有修改 `Player` 数据的操作(如 `/出关`),在写入 **MariaDB** 成功后,**必须** `DEL` 对应的 Redis 缓存键 (`...player:{user_id}`),实现“写后失效”。
|
||
|
||
2. **指令冷却 (Rate Limiting) - 防封核心:**
|
||
|
||
* **Key:** `xiuxian:rate_limit:user:{user_id}:cmd:{command_name}`
|
||
* **逻辑:** 在执行**任何**指令前,检查此 Key。如果存在,静默失败或回复“操作过于频繁”。如果不存在,执行指令,并 `SET` 此 Key,设置 `EXPIRE`。
|
||
* *( cooldown 时间见下方指令清单)*
|
||
|
||
3. **排行榜 (Leaderboard):**
|
||
|
||
* **Key:** `xiuxian:zset:leaderboard:realm` (Sorted Set)
|
||
* **逻辑:** 玩家 `/突破` 成功时,更新其 `Score` (可用境界等级量化)。
|
||
|
||
### 5.2. 玩家状态机 (防骚扰核心)
|
||
|
||
这是 `t_xiuxian_player.status` 字段的流转设计,用于平衡 PVP 和 PVE。
|
||
|
||
| 状态 | 描述 | 能否被劫掠? | 能否 `/闭关`? |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **`Idle`** (空闲) | 默认状态。 | ✅ **是** (危险) | ✅ **是** |
|
||
| **`Cultivating`** (闭关中)| `/闭关` 后进入。 | ❌ **否** (安全) | ❌ 否 |
|
||
| **`Unstable_Qi`** (气息不稳)| `/出关` 后进入,持续15分钟。 | ✅ **是** (强制暴露) | ❌ **否** (强制CD) |
|
||
| **`Injured`** (受伤中) | 被 `/劫掠` 成功后进入,持续1小时。| ❌ **否** (PVP保护) | ✅ **是** |
|
||
|
||
**状态自动流转 (重要):**
|
||
所有指令在执行前,都必须调用一个 `check_status_update(user_id)` 函数。
|
||
此函数检查玩家 `status` 是否为 `Unstable_Qi` 或 `Injured`,并检查 `status_until` 是否已过期。如果已过期,自动将其 `status` 改回 `Idle` (并更新DB和缓存)。
|
||
|
||
### 5.3. 玩家PVE循环 (成长)
|
||
|
||
* **`/注册修仙 [道号]`**
|
||
1. 检查 `user_id` 是否已存在。
|
||
2. 根据 `SPIRIT_ROOT_CONFIG` 的**权重**,为玩家随机抽取一个 `spirit_root`。
|
||
3. `INSERT` 到 `t_xiuxian_player`。
|
||
4. 回复:"一道灵光注入你的体内...经检测,你的灵根为:**【天灵根】**!"
|
||
* **`/闭关`**
|
||
1. 调用 `check_status_update()`。
|
||
2. 检查 `status` 必须是 `Idle` 或 `Injured`。
|
||
3. `UPDATE Player SET status='Cultivating', last_cultivate_time=now()`。
|
||
4. 回复:"你已进入闭关,修行期间无法被劫掠。"
|
||
* **`/出关`**
|
||
1. 检查 `status` 必须是 `Cultivating`。
|
||
2. **[平衡点1]** `duration = min(now() - last_cultivate_time, 8 hours)` (8小时收益上限)。
|
||
3. **[平衡点2]** `rate = BASE_CULTIVATION_RATE * spirit_root_multiplier` (灵根加成)。
|
||
4. `total_gain = duration * rate`。
|
||
5. **[平衡点3]** `UPDATE Player SET cultivation_points += total_gain, status='Unstable_Qi', status_until=now()+15 minutes`。
|
||
6. 回复:"你结束了闭关,获得了 X 点修为。你刚出关气息不稳,15分钟内无法再次闭关。"
|
||
* **`/聚灵 [数量]`**
|
||
1. 检查 `spirit_stone` (灵石) 是否 \> `[数量]`。
|
||
2. `UPDATE Player SET spirit_stone -= [数量], cultivation_points += ([数量] * 10)` (比例可调)。
|
||
* **`/突破` (丹药路径)**
|
||
1. 从 `BREAKTHROUGH_CONFIG` 获取当前 `realm` 的 `path_pill` 配置。
|
||
2. 检查 `cultivation_points` 和 `背包` (是否有 `required_item_id`)。
|
||
3. (不满足) 回复:"丹药突破需:[筑基丹]x1, 修为x5000。你条件不足。"
|
||
4. (满足) 扣除资源。Roll点 (按 `base_success_rate`)。
|
||
5. (成功) `UPDATE Player SET realm = '筑基1层'`。回复:"【突破成功!】..."
|
||
6. (失败) 回复:"【突破失败!】..."
|
||
* **`/强行突破` (无丹药路径)**
|
||
1. 从 `BREAKTHROUGH_CONFIG` 获取 `path_hard` 配置。
|
||
2. 检查 `cultivation_points`。
|
||
3. (不满足) 回复:"强行突破需:修为x20000。你条件不足。"
|
||
4. (满足) 扣除修为。Roll点 (按 `base_success_rate`)。
|
||
5. (成功) `UPDATE Player SET realm = '筑基2层'`。回复:"【天道酬勤!】你强行突破成功,直达 **筑基2层**!"
|
||
6. (失败) 回复:"【突破失败!】灵气反噬,你身受重伤!" (可选惩罚:`status` -\> `Injured`)
|
||
|
||
### 5.4. 经济与PVP/GvG循环
|
||
|
||
* **`/签到`**
|
||
* (对接你的积分系统) 奖励 `spirit_stone`。
|
||
* **`/坊市`, `/购买`, `/背包`**
|
||
* 常规的 `Item` 和 `Inventory` 表的 `CRUD` 操作。
|
||
* **`/劫掠 @某人`**
|
||
1. (调用 `check_status_update()` 检查自己和目标的状态)。
|
||
2. **[保护1]** 检查目标 `realm` (例如:必须 "筑基" 以上,新手保护)。
|
||
3. **[保护2]** 检查目标 `status` (必须是 `Idle` 或 `Unstable_Qi`)。
|
||
4. **[保护3]** 检查 `clan_id` (双方 `clan_id` 相同且不为 `NULL` 则禁止同门相残)。
|
||
5. (通过) 判定:根据双方 `realm` 计算成功率。
|
||
6. (成功) 转移 `spirit_stone`。`UPDATE Target SET status='Injured', status_until=now()+1 hour`。
|
||
* **`/赠与 @某人 [数量]` (灵石)**
|
||
1. **限制:** 双方 `clan_id` 必须相同且不为 `NULL`。
|
||
2. **操作:** 转移 `t_xiuxian_player.spirit_stone`。
|
||
* **`/赠送 @某人 [物品] [数量]` (丹药/物品)**
|
||
1. **限制:** 无限制(自由交易)。
|
||
2. **操作:** 转移 `t_xiuxian_inventory` 记录 (**必须使用数据库事务**)。
|
||
* **`/创建门派`, `/加入门派`, `/退出门派`**
|
||
* 常规的 `Clan` 表和 `Player.clan_id` 的 `CRUD` 操作。
|
||
|
||
-----
|
||
|
||
## 6\. 📋 最终指令清单 (附防封冷却)
|
||
|
||
| 类别 | 指令 | 冷却 (建议) | 备注 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **核心** | `/注册修仙 [道号]` | 1次/天 | 随机灵根 |
|
||
| | `/我的状态` | 5 秒 | 显示核心数据 (含灵根) |
|
||
| **修行** | `/闭关` | 10 秒 | `status` -\> `Cultivating` (安全) |
|
||
| | `/出关` | 10 秒 | 结算修为 (8h上限)。`status` -\> `Unstable_Qi` (危险) |
|
||
| | `/聚灵 [数量]` | 30 秒 | (消耗灵石) 灵石 -\> 修为 |
|
||
| **突破** | `/突破` | 60 秒 | **[简化]** 丹药路径 (稳妥) |
|
||
| | `/强行突破` | 60 秒 | **[简化]** 无丹药路径 (高风险高回报) |
|
||
| **经济** | `/签到` | 1次/天 | 获得灵石 |
|
||
| | `/坊市` | 10 秒 | 查看商店 |
|
||
| | `/购买 [物品] [数量]`| 5 秒 | 灵石 -\> 物品 |
|
||
| | `/背包` | 5 秒 | 查看物品 |
|
||
| **社交** | `/劫掠 @某人` | 30 秒 | 抢夺灵石 (PVP) |
|
||
| | `/赠与 @某人 [数量]` | 10 秒 | **(同门)** 赠送灵石 |
|
||
| | `/赠送 @某人 [物品] [数量]`| 10 秒 | **(自由)** 赠送物品/丹药 |
|
||
| **门派** | `/创建门派 [名称]` | 1次/天 | |
|
||
| | `/加入门派 [名称]` | 1次/周 | |
|
||
| | `/退出门派` | 1次/周 | |
|
||
| **信息** | `/排行榜` | 60 秒 | 从 Redis 读取 |
|
||
|
||
-----
|
||
|
||
## 7\. 🛣️ 建议的开发路线图
|
||
|
||
1. **Step 1: 基础建设 (V0.1)**
|
||
* 搭建数据库 (4个表)。
|
||
* 创建 `Config` 文件 (灵根, 突破)。
|
||
* 实现 Redis 缓存 `Player` 数据的 `getter/setter`。
|
||
2. **Step 2: PVE 核心循环 (V0.5)**
|
||
* 实现 `/注册修仙`, `/我的状态`。
|
||
* 实现 `/闭关`, `/出关` (包含灵根加成 和 8小时上限)。
|
||
* 实现 `check_status_update()` 函数和 `Unstable_Qi` 状态流转。
|
||
3. **Step 3: 经济与突破 (V0.8)**
|
||
* 实现 `/坊市`, `/购买`, `/背包`。
|
||
* 实现 `/聚灵`。
|
||
* 实现 `/突破` 和 `/强行突破` (双轨制)。
|
||
4. **Step 4: PVP 与社交 (V1.0)**
|
||
* 对接 `/签到` 和 `/劫掠` (包含所有保护机制)。
|
||
* 实现 `/创建门派`, `/加入门派`。
|
||
* 实现 `/赠与` (灵石) 和 `/赠送` (物品)。
|
||
5. **Step 5: 优化 (V1.1)**
|
||
* 实现所有指令的 Redis 冷却 (防封)。
|
||
* 实现 `/排行榜` (Redis Sorted Set)。 |