## 转生系统的核心构成
GEE引擎里的转生系统由三部分构成:**转生变量**(记录玩家转生次数)、**转生NPC**(玩家交互界面)、**转生功能脚本**(控制属性加成、称号显示等)。下面按搭建顺序把每个环节拆开讲。
## 第一步:在QM文件里定义转生变量
转生变量必须放在登录脚本里,每次玩家上线时读取和初始化。打开 `D:\MirServer\Mir200\Envir\MapQuest_Def\QManage.txt`,在 `[@Login]` 段里添加变量定义。
```text
[@Login]
#IF
#ACT
;检测并初始化转生变量,U40用来记录转生次数
;如果U40没有值(新号),自动赋值为0
#IF
CHECKVAR HUMAN 转生 =
#ACT
MOV HUMAN 转生 0
SENDMSG 6 你的转生系统已初始化,当前转生次数:0
#IF
#ACT
;调用转生属性加成脚本(后面会写)
CALL 转生系统\转生属性加成.txt
```
**变量说明**:HUMAN类型变量是玩家个人变量,下线保存,适合存转生次数。U40是另一种常用变量格式,看你习惯用哪种。CHECKVAR HUMAN 转生 = 的意思是检查这个变量是否存在,不存在就创建。
## 第二步:创建转生NPC脚本
在 `D:\MirServer\Mir200\Envir\Market_Def\` 文件夹里新建一个文本文档,重命名为 `转生使者-3.txt`(-3代表NPC在土城)。写入以下脚本:
```text
[@main]
欢迎来到转生系统\
当前你的转生等级:<$HUMAN(转生)>转\
\
<查看转生属性/@查看属性>\
<进行转生/@转生>\
<领取转生称号/@领取称号>\
<关闭/@exit>
[@查看属性]
#IF
#ACT
#SAY
当前转生等级属性加成:\
攻击:+ <$STR(U41)>%\
防御:+ <$STR(U42)>%\
血量:+ <$STR(U43)>%\ \
<返回/@main>
[@转生]
#IF
CHECKLEVEL > 49 ;需要50级才能一转
CHECKGAMEGOLD > 49999 ;需要5万元宝
#ACT
MOV HUMAN 转生 1 ;转生次数设为1
GAMEGOLD - 50000
CHANGELEVEL - 1 ;转生降1级(可选)
SENDMSG 0 250 251 玩家【%s】成功转生,成为【1转】强者!
SENDMSG 6 恭喜你完成转生,获得属性加成!
CALL 转生系统\转生属性加成.txt
goto @main
#ELSESAY
转生条件不足!\
需要等级50级,元宝50000\ \
<返回/@main>
```
这个是最简单的一转脚本。如果你想做多转,需要在转生段里加判断,比如:
```text
[@转生]
#IF
EQUAL HUMAN 转生 0
CHECKLEVEL > 49
CHECKGAMEGOLD > 49999
#ACT
MOV HUMAN 转生 1
GAMEGOLD - 50000
CHANGELEVEL - 1
SENDMSG 0 250 251 玩家【%s】成功转生,成为【1转】强者!
#IF
EQUAL HUMAN 转生 1
CHECKLEVEL > 59
CHECKGAMEGOLD > 99999
#ACT
MOV HUMAN 转生 2
GAMEGOLD - 100000
CHANGELEVEL - 1
SENDMSG 0 250 251 玩家【%s】成功转生,成为【2转】强者!
;后面继续写3转、4转...
```
## 第三步:创建转生属性加成脚本
在 `D:\MirServer\Mir200\Envir\QuestDiary\转生系统\` 文件夹里新建 `转生属性加成.txt`,写入以下内容:
```text
[@转生属性加成]
#IF
EQUAL HUMAN 转生 0
#ACT
MOV U41 0 ;攻击加成0%
MOV U42 0 ;防御加成0%
MOV U43 0 ;血量加成0%
#IF
EQUAL HUMAN 转生 1
#ACT
MOV U41 5 ;1转攻击+5%
MOV U42 5 ;1转防御+5%
MOV U43 10 ;1转血量+10%
#IF
EQUAL HUMAN 转生 2
#ACT
MOV U41 10
MOV U42 10
MOV U43 20
;继续写到10转或更多
#IF
#ACT
;调用属性刷新命令(GEE专用)
RefreshValue 攻击百分比 <$STR(U41)>
RefreshValue 防御百分比 <$STR(U42)>
RefreshValue HP百分比 <$STR(U43)>
```
`RefreshValue` 是GEE引擎的专用命令,用来实时刷新人物属性。如果不支持这个命令,可以用传统的 `USEBONUSPOINT` 或其他方式,但GEE最推荐用这个。
## 第四步:添加转生称号和变色效果
GEE引擎支持称号系统和人物变色,让高转玩家看起来不一样。
在 `转生使者-3.txt` 里添加领取称号的脚本段:
```text
[@领取称号]
#IF
EQUAL HUMAN 转生 1
#ACT
ADDTITLE 1转称号
SENDMSG 6 获得称号:一转凡人
#IF
EQUAL HUMAN 转生 2
#ACT
ADDTITLE 2转称号
SENDMSG 6 获得称号:二转脱俗
;继续写更多转生称号
```
如果要让人物变色,可以在登录触发里加身体颜色命令:
```text
;在QManage.txt的[@Login]里添加
#IF
LARGE HUMAN 转生 0
#ACT
SetBodyColor 151 0 1 ;151是七彩颜色,0表示永久,1表示转生变色模式
```
`SetBodyColor` 命令的参数说明:颜色值1-255,时间0为永久,类型1为转生变色模式。
## 第五步:在QF文件里添加转生触发功能
打开 `D:\MirServer\Mir200\Envir\QFunction-0.txt`,添加杀怪触发,让高转玩家打怪有经验加成:
```text
[@KillMon]
#IF
LARGE HUMAN 转生 0
#ACT
;根据转生次数增加经验倍数
MUL N1 <$HUMAN(转生)> 10 ;每转多10%经验
INC N1 100 ;基础100%
KILLMONEXPRATE <$STR(N1)> 0
```
## 第六步:设置转生限制(进入地图、穿戴装备)
如果你想限制某些地图只有高转玩家能进,在 `MapInfo.txt` 里对应的地图后面加参数,或者在NPC传送脚本里加判断:
```text
[@进入高级地图]
#IF
LARGE HUMAN 转生 2 ;需要2转以上
#ACT
map G100
#ELSESAY
你转生等级不足,需要2转才能进入!
```
限制穿戴装备:在装备数据库里设置 `Need=100` 表示需要转生等级,`NeedLevel` 字段填需要的转生次数。
## 第七步:在M2里配置转生相关参数
1. 打开 **M2Server.exe** → **选项** → **功能设置** → **转生系统**
2. 设置转生属性加成系数(比如每转增加多少攻击、防御)
3. 设置转生所需等级、元宝、材料
4. 设置转生后的等级变化(降级、保留等级、或额外送等级)
不同版本的GEE引擎界面略有不同,但转生相关配置基本都在这个菜单里。
## 第八步:完整调用关系梳理
文件路径 | 作用
---|---
`QManage.txt` | 玩家登录时初始化转生变量,调用属性加成脚本
`Market_Def\转生使者-3.txt` | NPC主界面,玩家点转生时修改转生变量
`QuestDiary\转生系统\转生属性加成.txt` | 根据转生变量计算属性加成,调用RefreshValue刷新
`QFunction-0.txt` | 杀怪触发、升级触发等,给转生玩家额外效果
`Castle\` 或其他数据库 | 如果需要保存转生数据,HUMAN变量会自动存
## 常见问题排查
**问题1:转生了但属性没加**
检查 `RefreshValue` 命令是否执行成功,可以在属性加成脚本里加一段 `SENDMSG 6 当前攻击加成:<$STR(U41)>%` 来调试,看U41变量是否被正确赋值。
**问题2:转生后称号不显示**
检查 `ADDTITLE` 命令里的称号名称是否在 `Title.txt` 文件里配置过。称号配置文件在 `Envir\Title.txt`。
**问题3:转生次数不保存**
HUMAN变量默认是保存的,如果没保存,在 `QManage.txt` 的 `[@Login]` 段前面加上 `VAR STRING HUMAN 转生` 强制声明变量。
**问题4:NPC点了没反应**
检查文件编码是不是ANSI,文件路径有没有放对,MerChant.txt里有没有添加这个NPC的配置。
**问题5:转生条件判断不准确**
用 `EQUAL HUMAN 转生 0` 判断时,确保HUMAN变量确实有值。可以先在脚本里加一段显示当前转生次数的文字,确认变量正常。

