传奇封号显示杀人次数脚本正确排序与修正版

来源: 作者: 点击:
你提供的脚本框架基本能用,但顺序有乱的地方,变量定义也有重复,还有些多余的段落需要清理。下面按照脚本执行的先后逻辑,把整个脚本重新捋一遍,从登录加载、杀人计数到封号显示,每一步该放哪个文件、怎么写,全部整理好。

**第一步:在QManage.txt里定义变量并加载数据**

这个文件是玩家登录时第一个执行的脚本。你要做的有两件事:一是定义杀人(RWSR)和被杀(RWSW)这两个变量,二是把保存在文本里的数据加载进变量。

打开 `D:\MirServer\Mir200\Envir\MapQuest_Def\QManage.txt`,找到 `[@Login]` 段,在它下面加上这段:

```
[@Login]
#IF
CHECKLEVELEX > 0
#ACT
VAR Integer HUMAN RWSR
VAR Integer HUMAN RWSW
LOADVAR HUMAN RWSR ..\QuestDiary\5uwlnet\游戏数据.txt
LOADVAR HUMAN RWSW ..\QuestDiary\5uwlnet\游戏数据.txt
```

**解释一下**:
- `CHECKLEVELEX > 0` 意思是只要等级大于0的玩家(也就是所有登录的玩家)都执行后面操作。
- `VAR Integer` 是定义变量,HUMAN 表示这个变量是个人变量,每个玩家独立拥有。
- `RWSR` 是你设定的杀人次数变量名,`RWSW` 是被杀次数变量名。
- `LOADVAR` 是从指定文本里读取数据,路径里的 `..` 代表服务端根目录,你要确保 `\QuestDiary\5uwlnet\` 这个文件夹存在,并且里面有 `游戏数据.txt` 这个文件。如果没有,系统会自动创建。

**第二步:在QFunction-0.txt里写杀人触发**

玩家杀死另一个玩家时,系统会触发 `[@KillPlay]` 段。你需要在这里把杀人次数加1,并且保存到文本里。

打开 `D:\MirServer\Mir200\Envir\Market_Def\QFunction-0.txt`,在文件末尾或合适位置加上:

```
[@KillPlay]
#if
#ACT
CALCVAR HUMAN RWSR + 1
SAVEVAR HUMAN RWSR ..\QuestDiary\5uwlnet\游戏数据.txt
SENDMSG 7 提示:你在游戏里面杀死了你的对手,累计杀人:<$HUMAN(RWSR)>
```

**解释一下**:
- `CALCVAR HUMAN RWSR + 1` 意思是把RWSR这个变量的值增加1。
- `SAVEVAR` 是把增加后的新数值保存回文本文件,这样下次登录时还能读到。
- `SENDMSG 7` 是发送一条系统提示给玩家,让他知道自己杀了多少人。`<$HUMAN(RWSR)>` 是显示当前杀人次数。

**第三步:在封号文件里修改称号显示**

你提到的“封号文件”通常指的是通过 `SETRANKLEVELNAME` 命令修改玩家头顶封号的脚本。这个脚本一般放在 `QFunction-0.txt` 或者专门的称号脚本里。假设你的封号是通过某个NPC点击触发的,或者通过检测条件自动授予的,写法如下:

```
#IF
checknamelist ..\QuestDiary\5uwlnet\群英名单.txt
#ACT
SETRANKLEVELNAME %s\武林至尊PK王\已有[<$HUMAN(RWSR)>]人死于其魔掌
break
```

**解释一下**:
- `checknamelist` 是检测玩家名字是否在 `群英名单.txt` 这个名单里。如果在,就执行后面的封号修改。
- `SETRANKLEVELNAME` 是修改玩家头顶封号的命令。`%s` 代表玩家原来的名字。`\武林至尊PK王\` 是封号显示格式,通常第一个`\`前面是名字,两个`\`中间是封号文字,后面是封号后面的后缀。
- 显示效果:如果玩家叫“张无忌”,头顶会显示“张无忌武林至尊PK王已有[18]人死于其魔掌”。
- `<$HUMAN(RWSR)>` 就是取出这个玩家的杀人次数,显示在封号里。

如果想让所有达到条件的玩家都自动获得这个封号,可以把这段脚本放在 `QManage.txt` 的 `[@Login]` 段下面,跟在加载变量后面,这样玩家一登录就自动检测并修改封号。

**第四步:去掉多余和重复的代码**

你提供的原脚本里有几处需要清理:
1. `set [450] 0` 和 `set [450] 1` 这两行,跟杀人次数显示没有直接关系,除非你其他地方用了这个个人标识来控制别的功能,否则可以删掉。
2. 原脚本里在 `[@Login]` 段重复写了 `VAR Integer HUMAN RWSW` 和 `VAR Integer HUMAN RWSR`,以及重复的 `LOADVAR`,整理成一个就行。
3. 原脚本里 `SETRANKLEVELNAME` 那行用了 `%s\武林至尊PK王\已有[<$HUMAN(RWSR)>]人死于其魔掌`,注意格式符号要统一,有些引擎要求用`\`分隔,有些用其他符号,根据你引擎的实际要求调整。

**第五步:完整的脚本顺序整理**

把上面三步拼起来,一个完整的杀人次数记录与封号显示脚本应该是这样的:

**文件一:QManage.txt**
```
[@Login]
#IF
CHECKLEVELEX > 0
#ACT
VAR Integer HUMAN RWSR
VAR Integer HUMAN RWSW
LOADVAR HUMAN RWSR ..\QuestDiary\5uwlnet\游戏数据.txt
LOADVAR HUMAN RWSW ..\QuestDiary\5uwlnet\游戏数据.txt

#IF
checknamelist ..\QuestDiary\5uwlnet\群英名单.txt
#ACT
SETRANKLEVELNAME %s\武林至尊PK王\已有[<$HUMAN(RWSR)>]人死于其魔掌
```

**文件二:QFunction-0.txt**
```
[@KillPlay]
#if
#ACT
CALCVAR HUMAN RWSR + 1
SAVEVAR HUMAN RWSR ..\QuestDiary\5uwlnet\游戏数据.txt
SENDMSG 7 提示:你在游戏里面杀死了你的对手,累计杀人:<$HUMAN(RWSR)>
```

**第六步:测试前的检查清单**

1. 确保 `\QuestDiary\5uwlnet\` 这个文件夹存在,如果没有就手动创建。
2. 确保 `游戏数据.txt` 文件存在,如果没有,脚本运行时会自动创建。
3. 确保 `群英名单.txt` 文件存在,里面一行一个玩家名字,只有在这个名单里的玩家才会获得那个封号。
4. 所有路径分隔符用双反斜杠 `\\` 或者单反斜杠 `/`,根据你引擎的实际情况统一。
5. 修改完脚本后,重启M2服务器让脚本生效,或者在M2上直接加载所有脚本。