####一、核心问题定位:杀人次数变量未正确触发或调用
根据您描述的情况,脚本仅显示**被杀次数(如"HUMAN.被杀总数")**而缺失**杀人次数(如"HUMAN.PK总数")**,本质是以下三处脚本逻辑存在缺失或错误:
1.**杀人触发事件未绑定**:未在QF脚本中建立`[@KillPlay]`段落(玩家击杀他人时的响应入口)
2.**变量操作未同步**:杀人次数的`CALCVAR`计算或`SAVEVAR`保存路径错误
3.**封号显示脚本未调用双变量**:封号显示代码仅引用了被杀变量(如"<$HUMAN(被杀总数)>")
---
####二、分步骤修复方案(以BLUE/LEGEND引擎为例)
#####1.**检查QFunction-0.txt中的双触发机制**
进入服务端目录:`Mir200\Envir\Market_Def\QFunction-0.txt`
添加以下核心段落(注:`#IF`条件判断可根据需求调整):
```lua
;-----------被杀次数记录-----------
[@PlayDie];玩家死亡时触发
#IF
CheckKillerHuman;检测是否被玩家击杀
#ACT
CalcVarHUMAN被杀总数+1;被杀计数器+1
SaveVarHUMAN被杀总数..\QuestDiary\封号系统\被杀记录.txt;保存路径需存在
SendMsg7"[死亡提示]您已被击杀<$HUMAN(被杀总数)>次"
;-----------杀人次数记录-----------
[@KillPlay];玩家击杀他人时触发
#IF
!CheckContainsText<$KILLPLAYER><$USERNAME>;防止自杀计数
#ACT
CalcVarHUMANPK总数+1;杀人计数器+1
SaveVarHUMANPK总数..\QuestDiary\封号系统\杀人记录.txt;独立文件避免冲突
SendMsg7"[战绩提示]您已累计击杀<$HUMAN(PK总数)>名玩家"
```
**关键点验证**:
-确认`QuestDiary`目录下存在`封号系统`文件夹,并已创建`被杀记录.txt`和`杀人记录.txt`空文件
-使用`ReloadNpc`命令重载脚本后,击杀测试是否触发SendMsg提示
#####2.**封号显示脚本的双变量调用**
进入封号系统脚本:`Mir200\Envir\QuestDiary\封号系统\封号显示.txt`
修改显示逻辑为双变量并行:
```lua
[@Main]
#IF
CHECKVARHUMANPK总数>0;检测是否存在击杀记录
CHECKVARHUMAN被杀总数>0
#ACT
SETRANKLEVELNAME%s\【杀神】击杀<$HUMAN(PK总数)>人丨死亡<$HUMAN(被杀总数)>次;分隔符建议用丨避免乱码
break
```
**高级扩展**:可增加多级封号显示(根据击杀数动态变化):
```lua
#IF
CHECKVARHUMANPK总数>100
#ACT
SETRANKLEVELNAME%s\【战神】斩敌<$HUMAN(PK总数)>人丨陨落<$HUMAN(被杀总数)>次
#ELSEACT
SETRANKLEVELNAME%s\【新兵】战绩<$HUMAN(PK总数)>杀丨阵亡<$HUMAN(被杀总数)>次
```
#####3.**变量初始化与异常排查**
在**登陆脚本(QManage.txt)**中增加变量初始化逻辑,防止首次登录报错:
```lua
[@Login]
#IF
CHECKVARHUMANPK总数=0;检测变量是否初始化
#ACT
CALCVARHUMANPK总数=0;强制归零
SAVEVARHUMANPK总数..\QuestDiary\封号系统\杀人记录.txt
CALCVARHUMAN被杀总数=0
SAVEVARHUMAN被杀总数..\QuestDiary\封号系统\被杀记录.txt
```
---
####三、常见故障排查表
|现象|可能原因|解决方案|
|---------------------|-------------------------|-----------------------------------------|
|击杀后无SendMsg提示|QF脚本未重载/段落名称错误|1.检查段落是否为`[@KillPlay]`<br>2.执行`ReloadNpc`|
|变量值不保存|文件路径权限不足|1.检查txt文件是否设置为"可写入"<br>2.关闭杀毒软件拦截|
|封号显示乱码|特殊符号编码冲突|1.改用全角符号(※★◆)<br>2.避免使用斜杠/反斜杠|
|仅显示0次击杀|变量未初始化|1.在QManage.txt增加初始化段落<br>2.删除txt文件后重启|
---
####四、进阶调试技巧
#####1.**实时变量监控法**
在游戏中输入`<测试命令>`查看变量状态(需开启GM权限):
```lua
[@Main]
#ACT
GMExecute查看变量HUMANPK总数
GMExecute查看变量HUMAN被杀总数
```
或在M2Server的**管理-在线人物**中,双击玩家名称直接查看变量值。
#####2.**日志追踪法**
在`M2Server->选项->调试信息->记录到文件`中勾选:
-脚本运行错误日志
-变量修改记录
通过分析`Log\ScriptLog.txt`定位未触发的脚本段落。
#####3.**外置计数器验证**
建立备用统计NPC,手动显示双变量:
```lua
[@战绩查询]
#ACT
SendMsg6"您当前战绩:击杀[<$HUMAN(PK总数)>]人,死亡[<$HUMAN(被杀总数)>]次"
```
---
####五、引擎兼容性说明
1.**GOM/GEE引擎**需改用`<$KILLPLAYERNAME>`获取击杀者名称,并配合`AddTextList`命令记录
2.**翎风引擎**需使用`<$KILLMONBURSTRATE>`等专用变量,建议参考引擎手册调整
3.**HeroM2引擎**存在`KILL`命令冲突,需在`!Setup.txt`中关闭默认击杀统计
---
####六、安全防护建议
1.**定期备份变量文件**:将`杀人记录.txt`和`被杀记录.txt`加入服务器自动备份计划
2.**防刷量机制**:在QF脚本中增加击杀频率检测(如1秒内击杀超过5人视为异常)
3.**数据库存储升级**:高端版本建议改用SQL数据库存储战绩,通过`ADOConnect`实现
根据您描述的情况,脚本仅显示**被杀次数(如"HUMAN.被杀总数")**而缺失**杀人次数(如"HUMAN.PK总数")**,本质是以下三处脚本逻辑存在缺失或错误:
1.**杀人触发事件未绑定**:未在QF脚本中建立`[@KillPlay]`段落(玩家击杀他人时的响应入口)
2.**变量操作未同步**:杀人次数的`CALCVAR`计算或`SAVEVAR`保存路径错误
3.**封号显示脚本未调用双变量**:封号显示代码仅引用了被杀变量(如"<$HUMAN(被杀总数)>")
---
####二、分步骤修复方案(以BLUE/LEGEND引擎为例)
#####1.**检查QFunction-0.txt中的双触发机制**
进入服务端目录:`Mir200\Envir\Market_Def\QFunction-0.txt`
添加以下核心段落(注:`#IF`条件判断可根据需求调整):
```lua
;-----------被杀次数记录-----------
[@PlayDie];玩家死亡时触发
#IF
CheckKillerHuman;检测是否被玩家击杀
#ACT
CalcVarHUMAN被杀总数+1;被杀计数器+1
SaveVarHUMAN被杀总数..\QuestDiary\封号系统\被杀记录.txt;保存路径需存在
SendMsg7"[死亡提示]您已被击杀<$HUMAN(被杀总数)>次"
;-----------杀人次数记录-----------
[@KillPlay];玩家击杀他人时触发
#IF
!CheckContainsText<$KILLPLAYER><$USERNAME>;防止自杀计数
#ACT
CalcVarHUMANPK总数+1;杀人计数器+1
SaveVarHUMANPK总数..\QuestDiary\封号系统\杀人记录.txt;独立文件避免冲突
SendMsg7"[战绩提示]您已累计击杀<$HUMAN(PK总数)>名玩家"
```
**关键点验证**:
-确认`QuestDiary`目录下存在`封号系统`文件夹,并已创建`被杀记录.txt`和`杀人记录.txt`空文件
-使用`ReloadNpc`命令重载脚本后,击杀测试是否触发SendMsg提示
#####2.**封号显示脚本的双变量调用**
进入封号系统脚本:`Mir200\Envir\QuestDiary\封号系统\封号显示.txt`
修改显示逻辑为双变量并行:
```lua
[@Main]
#IF
CHECKVARHUMANPK总数>0;检测是否存在击杀记录
CHECKVARHUMAN被杀总数>0
#ACT
SETRANKLEVELNAME%s\【杀神】击杀<$HUMAN(PK总数)>人丨死亡<$HUMAN(被杀总数)>次;分隔符建议用丨避免乱码
break
```
**高级扩展**:可增加多级封号显示(根据击杀数动态变化):
```lua
#IF
CHECKVARHUMANPK总数>100
#ACT
SETRANKLEVELNAME%s\【战神】斩敌<$HUMAN(PK总数)>人丨陨落<$HUMAN(被杀总数)>次
#ELSEACT
SETRANKLEVELNAME%s\【新兵】战绩<$HUMAN(PK总数)>杀丨阵亡<$HUMAN(被杀总数)>次
```
#####3.**变量初始化与异常排查**
在**登陆脚本(QManage.txt)**中增加变量初始化逻辑,防止首次登录报错:
```lua
[@Login]
#IF
CHECKVARHUMANPK总数=0;检测变量是否初始化
#ACT
CALCVARHUMANPK总数=0;强制归零
SAVEVARHUMANPK总数..\QuestDiary\封号系统\杀人记录.txt
CALCVARHUMAN被杀总数=0
SAVEVARHUMAN被杀总数..\QuestDiary\封号系统\被杀记录.txt
```
---
####三、常见故障排查表
|现象|可能原因|解决方案|
|---------------------|-------------------------|-----------------------------------------|
|击杀后无SendMsg提示|QF脚本未重载/段落名称错误|1.检查段落是否为`[@KillPlay]`<br>2.执行`ReloadNpc`|
|变量值不保存|文件路径权限不足|1.检查txt文件是否设置为"可写入"<br>2.关闭杀毒软件拦截|
|封号显示乱码|特殊符号编码冲突|1.改用全角符号(※★◆)<br>2.避免使用斜杠/反斜杠|
|仅显示0次击杀|变量未初始化|1.在QManage.txt增加初始化段落<br>2.删除txt文件后重启|
---
####四、进阶调试技巧
#####1.**实时变量监控法**
在游戏中输入`<测试命令>`查看变量状态(需开启GM权限):
```lua
[@Main]
#ACT
GMExecute查看变量HUMANPK总数
GMExecute查看变量HUMAN被杀总数
```
或在M2Server的**管理-在线人物**中,双击玩家名称直接查看变量值。
#####2.**日志追踪法**
在`M2Server->选项->调试信息->记录到文件`中勾选:
-脚本运行错误日志
-变量修改记录
通过分析`Log\ScriptLog.txt`定位未触发的脚本段落。
#####3.**外置计数器验证**
建立备用统计NPC,手动显示双变量:
```lua
[@战绩查询]
#ACT
SendMsg6"您当前战绩:击杀[<$HUMAN(PK总数)>]人,死亡[<$HUMAN(被杀总数)>]次"
```
---
####五、引擎兼容性说明
1.**GOM/GEE引擎**需改用`<$KILLPLAYERNAME>`获取击杀者名称,并配合`AddTextList`命令记录
2.**翎风引擎**需使用`<$KILLMONBURSTRATE>`等专用变量,建议参考引擎手册调整
3.**HeroM2引擎**存在`KILL`命令冲突,需在`!Setup.txt`中关闭默认击杀统计
---
####六、安全防护建议
1.**定期备份变量文件**:将`杀人记录.txt`和`被杀记录.txt`加入服务器自动备份计划
2.**防刷量机制**:在QF脚本中增加击杀频率检测(如1秒内击杀超过5人视为异常)
3.**数据库存储升级**:高端版本建议改用SQL数据库存储战绩,通过`ADOConnect`实现

