传奇改变人物与英雄图标显示脚本编写完整方法详解

来源: 作者: 点击:
改变人物或英雄身上的图标显示,涉及两类命令体系和三种应用场景。SetIcon命令用于在角色头顶位置添加自定义图标或称号效果,TURNMARKER命令用于替换角色身上内置的界面图标样式。两者写入位置、参数格式和效果范围各不相同。以下从命令参数、脚本编写、英雄专用写法、素材对应和排查五个环节逐一说明。

## 一、SetIcon命令完整参数与格式

SetIcon是角色头顶图标显示的核心命令,功能为在人物头顶指定位置显示一个自定义图片。不同引擎版本的参数数量存在差异,GOM和GEE引擎支持完整的十二参数格式。

通用格式为:SetIcon 位置 WIL文件序号 图片序号 X Y 播放张数 播放效果 播放顺序 播放速度 是否仅自己可见

位置参数取值范围0至9,对应角色头顶的十个图标显示槽位。同一位置同时只能显示一个图标,重复设置同一位置会覆盖前一个图标。编号65534为城主封号专用,编号65535为精英封号专用,这两个编号在Icon.wil中固定保留。

WIL文件序号对应M2引擎查看菜单列表信息二中配置的WIL资源编号,从0开始依次编号。Icon.wil的WIL文件序号通常为1,NewopUI.Pak为2,prguse2.wzl为3。

图片序号为WIL文件中目标图片的编号,取值范围0至65535。X和Y为图标在角色头顶的偏移坐标,X为正数向右偏移,Y为负数向上偏移。播放张数为图标素材的总帧数,静态图标填写1,动态图标填写实际帧数。播放效果0为普通显示,1为特效显示,出现黑边时改为1,显示异常时改为0。播放顺序0或空表示在角色前面显示,非0表示在角色后面显示。播放速度单位为毫秒,为空时默认300毫秒。是否仅自己可见参数中,0或空为所有人可见,1为仅自己可见。

以下为人物头顶图标的脚本范例:

```
[@main]
#ACT
SETICON 0 3 1 30 -30 0 0 0 300
SETICON 1 3 2 -30 -30
SETICON 2 3 3 -60 -30 3
```

该脚本在位置0、1、2三个槽位分别显示三张不同的图片,坐标依次偏移。清除图标时将WIL文件序号设置为-1即可:

```
[@清除图标]
#ACT
SETICON 0 -1
SETICON 1 -1
SETICON 2 -1
```

## 二、SetIcon脚本的编写位置

SetIcon命令可写入三个主要位置,不同位置触发时机不同。

登录触发脚本是最常用的部署位置。打开服务端Mir200\Envir\MapQuest_def目录下的QManage.txt文件,在[@Login]标签下方写入SetIcon命令。玩家每次上线时自动加载头顶图标效果。该位置适合设置VIP称号、会员标识等需要上线即显示的效果。

NPC对话脚本用于玩家主动触发图标切换。在NPC脚本的#ACT段落中调用SetIcon命令,玩家点击对应按钮即可切换图标样式。

按钮开关脚本配合CHECK命令和条件变量使用,可实现图标的动态开启和关闭。以下为带开关控制的完整范例:

```
[@图标开关]
#IF
CHECK [100] 1
#ACT
SETICON 0 -1
SET [100] 0
SENDMSG 6 头顶图标已关闭
BREAK
#IF
#ACT
SETICON 0 3 1 30 -30 0 0 0 300
SET [100] 1
SENDMSG 6 头顶图标已开启
```

该脚本使用全局变量[100]记录图标的开关状态,CHECK命令检测变量值,条件成立时执行SETICON 0 -1清除图标并将变量置0,条件不成立时重新设置图标并将变量置1。

定时器刷新脚本适用于图标需要动态变化的效果。在QFunction-0.txt的定时器触发标签中调用SetIcon命令,按时间间隔刷新图标显示。

## 三、英雄图标专用命令H.SETICON

英雄头顶图标的设置使用H.SETICON命令,参数格式与SetIcon完全一致,仅在命令前添加H.前缀以区分操作对象为英雄而非人物。

以下为英雄图标设置脚本范例:

```
[@英雄图标]
#ACT
H.SETICON 0 3 1 30 -30
H.SETICON 1 3 2 -30 -30
H.SETICON 2 3 3 -60 -30 3
```

该脚本为英雄头顶的位置0、1、2分别设置图标。清除英雄图标时同样将WIL文件序号设置为-1:

```
[@清除英雄图标]
#ACT
H.SETICON 0 -1
H.SETICON 1 -1
H.SETICON 2 -1
```

人物和英雄的图标互不影响,人物使用SetIcon设置,英雄使用H.SETICON设置,两者可独立控制。

## 四、TURNMARKER命令改变角色图标样式

TURNMARKER命令的功能是改变人物或英雄身上已存在的内置图标显示样式,仅对Prguse_16文件中的图片位置生效。该命令的参数格式为:TURNMARKER 符号 数值

符号支持+、-、=三种操作符。+表示在当前图标位置基础上向后偏移,-表示向前偏移,=表示直接定位到指定图标位置。

以下为人物图标改变的脚本范例:

```
#IF
#ACT
TURNMARKER = 1100
MESSAGEBOX 你已经恢复到最开始的图标样式。
BREAK
```

该脚本将人物图标样式定位到Prguse_16文件中1100位置对应的图片。符号=表示直接设置到该位置,而非偏移计算。

英雄图标改变时在命令末尾添加HERO参数:

```
#IF
#ACT
TURNMARKER = 1100 HERO
MESSAGEBOX 你英雄的图标样子已经改变。
BREAK
```

该脚本将英雄的图标样式设置为Prguse_16文件中1100位置的图片。

使用+和-符号的偏移写法示例:

```
[@偏移改变]
#ACT
TURNMARKER + 10
MESSAGEBOX 图标向后偏移10个位置
BREAK
```

该脚本在当前图标位置基础上向后偏移10个图片位置。偏移量超过Prguse_16文件中的有效图片范围时,图标显示会异常或消失。

## 五、图标素材补丁与WIL文件对应

人物头顶图标素材存储在客户端Icon.wil文件中,该文件是头顶称号显示的专用补丁文件,修改时使用GOM或GEE引擎自带的WIL编辑器。WIL文件序号在M2引擎的查看菜单中进入列表信息二,在WIL资源列表中查看和配置。序号从0开始编号,不同客户端配置的序号可能有差异,脚本中填写的WIL文件序号必须与该列表中的实际编号一致。

TURNMARKER命令涉及的Prguse_16文件是客户端Prguse系列补丁的一部分,存储角色身上的内置图标素材,包括状态图标、组队图标等界面元素。修改该文件中图片的位置编号会直接影响角色身上图标的显示样式。

图标显示位置不对时,调整SetIcon命令中的X和Y参数。X为正数向右偏移,X为负数向左偏移,Y为正数向下偏移,Y为负数向上偏移。图标显示过大或过小属于素材本身尺寸问题,需要在WIL编辑器中调整素材图片尺寸后重新导入。

播放张数参数与图标素材总帧数不匹配时,动态图标会显示不完整或重复播放。使用WIL编辑器查看目标图片的帧数,将播放张数设置为实际帧数。播放效果参数中,0为普通模式,1为特效模式,动态图标出现黑边时尝试将播放效果改为1,静态图标出现异常时改为0。

## 六、常见问题与排查

SetIcon命令执行后图标不显示。首先检查WIL文件序号是否与M2引擎列表信息二中的实际编号一致。其次确认图片序号在Icon.wil文件的有效范围内,超出文件实际包含的图片数量时命令静默失败。最后检查坐标参数是否使图标偏移到了屏幕可视区域之外。

人物图标显示正常但英雄图标不显示。确认使用的是H.SETICON命令而非SetIcon命令。检查英雄是否已经召唤出场,未召唤英雄时英雄图标命令不会执行。部分引擎版本中英雄图标命令需要在英雄召唤触发标签中调用。

图标显示位置与预期不符。检查Y坐标是否为负值,头顶图标通常需要将Y设置为负值使图标向上偏移。X坐标的正负决定左右偏移方向。

脚本修改后图标效果未更新。在M2引擎控制面板中执行脚本重载操作使修改生效。SetIcon命令写入QManage.txt的[@Login]标签时,玩家需要重新登录才能触发上线图标加载。部分引擎需要重启M2Server进程才能使脚本修改完全生效。

TURNMARKER命令执行后图标无变化。确认Prguse_16文件中是否存在参数指定的图片位置编号。符号使用是否正确,+和-为偏移操作,=为定位操作。英雄图标使用时确认命令末尾添加了HERO参数。

Icon.wil文件缺失或损坏会导致所有SetIcon命令失效。检查客户端Data目录下是否存在Icon.wil文件,使用WIL编辑器打开确认文件结构完整。文件损坏时需要从服务端的登录器补丁文件夹中重新复制一份完整的Icon.wil文件到客户端Data目录。