当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

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

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

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

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

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

```
[@Login]
#IF
CHECKLEVELEX>0
#ACT
VARIntegerHUMANRWSR
VARIntegerHUMANRWSW
LOADVARHUMANRWSR..\QuestDiary\5uwlnet\游戏数据.txt
LOADVARHUMANRWSW..\QuestDiary\5uwlnet\游戏数据.txt
```

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

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

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

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

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

**解释一下**:
-`CALCVARHUMANRWSR+1`意思是把RWSR这个变量的值增加1。
-`SAVEVAR`是把增加后的新数值保存回文本文件,这样下次登录时还能读到。
-`SENDMSG7`是发送一条系统提示给玩家,让他知道自己杀了多少人。`<$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]`段重复写了`VARIntegerHUMANRWSW`和`VARIntegerHUMANRWSR`,以及重复的`LOADVAR`,整理成一个就行。
3.原脚本里`SETRANKLEVELNAME`那行用了`%s\武林至尊PK王\已有[<$HUMAN(RWSR)>]人死于其魔掌`,注意格式符号要统一,有些引擎要求用`\`分隔,有些用其他符号,根据你引擎的实际要求调整。

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

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

**文件一:QManage.txt**
```
[@Login]
#IF
CHECKLEVELEX>0
#ACT
VARIntegerHUMANRWSR
VARIntegerHUMANRWSW
LOADVARHUMANRWSR..\QuestDiary\5uwlnet\游戏数据.txt
LOADVARHUMANRWSW..\QuestDiary\5uwlnet\游戏数据.txt

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

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

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

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