3C传奇引擎人物NPC怪物头顶花翎SetIcon脚本示例与Icon补丁配置排错

来源: 作者: 点击:
3C引擎头顶花翎通常用SetIcon给人物挂Icon.wil里的连续图片,支持0到4共五个位置,命令格式写成:

SetIcon 位置 起始图号 图片数量 X Y

位置0代表第一层花翎,1到4往上叠。起始图号填Icon.wil里的图片编号,图片数量填连续播放几张,X正数向右、负数向左,Y正数向下、负数向上。示例:

SetIcon 0 210 8 -6 -85

意思是0号位置调用Icon.wil第210张开始共8张图,X偏移-6、Y偏移-85。花翎偏左就把X调大,偏右调小;整体太高把Y绝对值改小,太低把Y绝对值改大。

人物佩戴触发脚本

花翎按物品戴头触发,最简单在QuestDiary里建花翎目录,例如Envir\QuestDiary\花翎系统\佩戴.txt,NPC用[@main]做菜单,点领取或检测背包物品后SetIcon。

[@main]
\ \
花翎系统\
佩戴不同花翎显示头顶图标\
\ \
一品花翎 @YiPin \
三品花翎 @SanPin \
清除花翎 @ClearIcon \

[@YiPin]
IF CheckItem 一品花翎 1

ACT SetIcon 0 210 8 -6 -85

SetIcon 1 220 6 0 -120
SENDMSG 1 已佩戴一品花翎!
ELSEACT

SENDMSG 1 没有一品花翎物品!

[@SanPin]
IF CheckItem 三品花翎 1

ACT SetIcon 0 230 10 -6 -85

SetIcon 1 240 8 0 -125
SENDMSG 1 已佩戴三品花翎!
ELSEACT

SENDMSG 1 没有三品花翎物品!

[@ClearIcon]
IF

ACT SetIcon 0 -1

SetIcon 1 -1
SetIcon 2 -1
SetIcon 3 -1
SetIcon 4 -1
SENDMSG 1 已清除全部头顶花翎!

0号位置放主花翎,1号往上再叠副花翎。清除用位置-1,一次把所有位置都写-1,避免只清一层留下残图。

登录自动恢复花翎

角色重新上线要按已拥有花翎重新挂图标,不要等玩家再点NPC。QManage.txt的[@Login]里按拥有物品或个人变量调用:

[@Login]
IF CheckItem 一品花翎 1

ACT SetIcon 0 210 8 -6 -85

IF CheckItem 三品花翎 1

ACT SetIcon 0 230 10 -6 -85

如果用个人变量记录品级,把CheckItem换成检查变量。比如用Hvar或Dvar记录花翎等级,登录判断等级后只挂对应图号,避免重复挂多个花翎。3C若对变量作用域有特殊要求,按本版本变量说明把登录段变量先初始化再判断。

按品级自动选图示例

花翎分多品级时,用变量比CheckItem更干净。假设用D0记录花翎品级,1是一品、2是二品、3是三品:

[@HuaLingShow]
IF EQUAL D0 1

ACT SetIcon 0 210 8 -6 -85

IF EQUAL D0 2

ACT SetIcon 0 215 8 -6 -85

IF EQUAL D0 3

ACT SetIcon 0 220 10 -6 -85

SetIcon 1 230 6 0 -120

NPC佩戴时先Mov D0 品级,再GOTO [@HuaLingShow],登录也GOTO同一个标签,保证上下线显示一致。多花翎叠层时0号放主品级、1号放活动花翎、2号放结婚或行会花翎,坐标依次上移。

带特效的完整SetIcon写法

部分3C补丁或兼容脚本支持扩展参数,格式:

SetIcon 位置 WIL序号 图片序号 X Y 播放张数 播放效果 播放速度 是否仅自己可见

例如人物头顶放动态特效花翎:

SetIcon 0 3 90 0 -75 12 1 200 0

0号位置,WIL序号3,图片90,X0、Y-75,播12张,效果1为特效,速度200毫秒,0为所有人可见。纯图片花翎把效果改0;只自己看把最后一位改1。若3C只认简化四参,就把后面参数去掉,只留SetIcon 0 90 12 0 -75,具体以本服M2命令帮助为准。

NPC头顶花翎文件式

NPC花翎可不写进对话脚本,改用Envir\NpcIcons目录。MerChant.txt里NPC路径决定图标文件位置,例如NPC配置:

花翎大使 3 330 330 1 0 0

脚本文件在Market_Def,对应NpcIcons建:

Envir\NpcIcons\3\花翎大使-3.txt

文件内容按行写WIL序号、图片序号、张数、X、Y、效果、速度,示例:

3 90 12 0 -75 1 200
3 95 8 0 -110 0 300

第一行主花翎,第二行叠加花翎。NPC不说话也能常驻头顶图。改完重读NpcIcons或重启M2,进游戏点开NPC附近就能看到。多地图同名NPC要按地图号和文件名区分,避免A地图花翎写到B地图NPC头上。

怪物头顶花翎文件式

怪物花翎走Envir\MonIcons,文件名用怪物DB名称。白野猪示例建:

Envir\MonIcons\白野猪.txt

内容:

3 1 5 0 -30 0 300

含义WIL序号3、图片1、播5张、X0、Y-30、普通效果、速度300毫秒。多个怪物不同花翎就建多个MonIcons文件,文件名严格等于怪物名称。人形BOSS想戴花翎,名称必须与DB的Name一致,包含空格、括号也要一致,否则不读文件。

物品DB与花翎绑定

花翎物品在StdItems.DB加好,名称如一品花翎、三品花翎。Stdmode按本引擎头饰或材料规则填,若只做显示不占装备位,可做成消耗品,由NPC检测后SetIcon;若做戴头装备,用穿戴触发脚本检测EquipItem或CheckItemW,在换装标签里挂花翎。佩戴触发示例:

[@TakeOnHuaLing]
IF CheckItemW 一品花翎 1

ACT SetIcon 0 210 8 -6 -85

IF CheckItemW 三品花翎 1

ACT SetIcon 0 230 10 -6 -85

卸下清除示例:

[@TakeOffHuaLing]
IF

ACT SetIcon 0 -1

SetIcon 1 -1

换装脚本文件按引擎挂QFunction或装备触发段。3C若用独立OnTakeItem/OnDropItem段,把清除写进对应段,避免脱了装备头花还留着。

活动时间限制花翎

活动花翎用个人变量记录到期时间,登录和定时脚本检测。假设用D1存活动花翎剩余秒数,定时器每秒减1,为0清图标:

[@HuaLingTimer]
IF LARGE D1 0

ACT Dec D1 1

IF EQUAL D1 0

ACT SetIcon 1 -1

SENDMSG 1 活动花翎已过期!

NPC领取活动花翎时Mov D1 3600,并SetIcon 1 240 8 0 -120。机器人或M2定时事件每秒调用[@HuaLingTimer],实现自动消失。若3C机器人不支持Dec个人变量,改用全局时间比对或M2内置计时。

多花翎位置规划

0号主花翎:品级、职业、VIP类长期图
1号副花翎:活动、节日、限时图
2号行会花翎:行会职位、行会战图
3号特殊花翎:结婚、师徒、成就图
4号临时花翎:狂暴、双倍、临时buff图

坐标从Y-85开始,每加一层再上移约35到45。X保持-6到0,避免不同层左右错位。五个位置全用也别把图片数量设太大,否则头顶动画卡顿。

Icon.wil补丁制作

花翎图片打进Icon.wil,按引擎图片查看器确认起始编号。210号开始放一品花翎8张连帧,220号放二品,230号放三品,逐品级留连续空间。图片尺寸按头像花翎标准,透明底PNG转WIL后检查偏移;若游戏里整体偏左下,X加正值、Y减负值绝对值。客户端登录器必须包含新版Icon.wil,微端把Icon资源加进更新列表,否则新号第一次看不到花翎。

排错顺序

1. 戴物品点NPC没反应:查Market_Def脚本路径、NPC地图号坐标、CheckItem名称是否与DB完全一致。
2. 有提示但不显示花翎:查SetIcon命令格式,3C简化版不要多写WIL序号;完整版不要少张数参数。
3. 显示错图:Icon.wil起始编号填错,用图片查看器重新数210、220、230实际位置。
4. 花翎偏头:X、Y不对,先改Y绝对值,再微调X;多人叠加层把每层Y差距拉大。
5. 下线再上没花翎:QManage[@Login]没写恢复,或变量没落盘,登录段按物品或变量重挂。
6. NPC没花翎:NpcIcons路径与MerChant.txt脚本路径不一致,文件名、地图号、NPC名要对上。
7. 怪物没花翎:MonIcons文件名不等于怪物DB名,或怪物Race不被读取图标。
8. 清除不干净:只写SetIcon 0 -1,要把1到4都写-1;若用了完整参数清图标,位置写-1即可。
9. 特效能播但普通图不动:播放张数写1会只显示单帧,动态花翎把张数按实际连帧数填。
10. 只有自己能看到:完整SetIcon最后可见参数写成1,改0让所有人可见。

替代命令说明

部分版本不用SetIcon而用SETHUMICON,格式:

SETHUMICON 位置 补丁ID 起始图号 图片数量 间隔 是否特效 X Y

例如:

SETHUMICON 0 3 1165 15 10 0 35 -8

位置0到6,补丁ID按Face类补丁配置,数量0表示取消。清除写:

SETHUMICON 0 0 0 0

3C若实测SetIcon不生效但M2文档有SETHUMICON,按本服文档换命令,坐标和图片库对应关系以补丁说明为准。

最小可运行示例

NPC文件Market_Def\花翎大使-3.txt:

花翎大使 3 330 330 1 0 0
[@main]
\ \
花翎大使\
提交花翎令领取头顶花翎\
\ \
一品 @One \
二品 @Two \
清除 @Clear \

[@One]
IF CheckItem 花翎令 1

ACT Take 花翎令 1

SetIcon 0 210 8 -6 -85
SENDMSG 1 获得一品头顶花翎!
ELSEACT

SENDMSG 1 需要花翎令1个!

[@Two]
IF CheckItem 花翎令 2

ACT Take 花翎令 2

SetIcon 0 215 8 -6 -85
SetIcon 1 220 6 0 -120
SENDMSG 1 获得二品头顶花翎!
ELSEACT

SENDMSG 1 需要花翎令2个!

[@Clear]
IF

ACT SetIcon 0 -1

SetIcon 1 -1
SENDMSG 1 已清除头顶花翎!

QManage[@Login]加:

IF CheckItem 一品花翎 1

ACT SetIcon 0 210 8 -6 -85

IF CheckItem 二品花翎 1

ACT SetIcon 0 215 8 -6 -85

SetIcon 1 220 6 0 -120

Icon.wil放入210到225一品连帧、215到222二品连帧、220到225二品副花翎,客户端更新后进3地图点NPC提交花翎令即可看到头顶动画。改图号、坐标、张数按实际补丁重新核对,不混用其他引擎的WIL序号规则。