传奇行会全员名字变色NPC脚本编写教程

来源: 作者: 点击:
实现行会老大一键统一成员名字颜色,核心在于脚本中的CHANGENAMECOLOR命令与行会遍历逻辑。以下提供标准NPC脚本写法、关键参数说明及常见引擎适配方案。

一、标准NPC脚本示例(Hero/翎风引擎)

将以下脚本写入服务端 Envir\Market_Def 目录下的NPC脚本文件(如 行会服务-3.txt)。
[@main]
#IF
ISGUILDMASTER ;检测是否为行会老大
#SAY
欢迎行会老大 <$USERNAME>。\
请选择为全体成员统一的名字颜色:\
<蓝色/@blue> <绿色/@green> <红色/@red> <紫色/@purple>\
<黄色/@yellow> <白色/@white> <还原默认/@reset>\
#ELSESAY
你不是行会老大,无权使用此功能。\
<关闭/@exit>

[@blue]
#IF
ISGUILDMASTER
#ACT
GuildMemberNameColor 252 ;给所有行会成员设置颜色代码252(蓝)
SENDMSG 6 行会成员名字已变为蓝色,部分成员需小退重登生效。
break

[@green]
#IF
ISGUILDMASTER
#ACT
GuildMemberNameColor 250 ;颜色代码250(绿)
SENDMSG 6 行会成员名字已变为绿色。
break

[@red]
#IF
ISGUILDMASTER
#ACT
GuildMemberNameColor 249 ;颜色代码249(红)
SENDMSG 6 行会成员名字已变为红色。
break

[@purple]
#IF
ISGUILDMASTER
#ACT
GuildMemberNameColor 253 ;颜色代码253(紫)
SENDMSG 6 行会成员名字已变为紫色。
break

[@yellow]
#IF
ISGUILDMASTER
#ACT
GuildMemberNameColor 251 ;颜色代码251(黄)
SENDMSG 6 行会成员名字已变为黄色。
break

[@white]
#IF
ISGUILDMASTER
#ACT
GuildMemberNameColor 255 ;颜色代码255(白)
SENDMSG 6 行会成员名字已变为白色。
break

[@reset]
#IF
ISGUILDMASTER
#ACT
GuildMemberNameColor 255 ;还原通常为白色255
SENDMSG 6 行会成员名字已还原默认。
break


二、核心命令与参数详解

1. 关键命令:GuildMemberNameColor
◦ 这是Hero、翎风等主流引擎中专用于遍历行会成员并修改名字颜色的命令。它会对行会名单中的每一个成员执行 CHANGENAMECOLOR 操作。

◦ 若引擎不支持此命令,需改用 CHANGENAMECOLOR 配合循环脚本逐个修改,逻辑复杂且易卡服,不推荐。

2. 颜色代码表(常用)
颜色 代码 备注
白色 255 默认颜色
红色 249 通常用于醒目提示
绿色 250
蓝色 252
黄色 251
紫色 253
灰色 254

3. 生效机制
◦ 立即生效:脚本执行后,在线成员的名字颜色会立即改变。

◦ 小退生效:部分引擎或离线成员,需小退重登后才会刷新名字颜色。

三、不同引擎的适配与修改

1. GOM / GEE 引擎
◦ 上述脚本通常兼容。若 GuildMemberNameColor 无效,可尝试改用 SETNAMECOLOR 命令(需注意GOM的 SETNAMECOLOR 参数可能包含时间,如 SETNAMECOLOR 252 65535)。

◦ 部分GOM版本需在 !Setup.txt 中开启相关功能开关。

2. 3K / 合击引擎
◦ 老版本3K引擎可能不支持 GuildMemberNameColor。替代方案是使用 CHANGENAMECOLOR 配合 GUILDMEMBER 变量进行循环遍历,但脚本较为复杂。

四、常见问题排查(为什么用了没反应?)

1. 权限检测失败:脚本开头必须包含 ISGUILDMASTER 检测。若角色不是行会老大,或没有行会,脚本不会执行。
2. 命令不支持:输入 @GMEXEC 命令查看引擎是否支持 GuildMemberNameColor。若不支持,需更换引擎或使用插件。
3. 颜色代码错误:代码范围通常为0-255,输入不存在的代码(如300)会导致脚本执行失败。
4. M2限制:检查M2Server的“功能设置”中是否限制了玩家名字变色功能。

五、进阶功能:添加消耗与日志

可在变色脚本中增加元宝消耗和日志记录,防止滥用。
[@blue]
#IF
ISGUILDMASTER
CHECKGAMEGOLD > 999 ;检测元宝是否大于1000
#ACT
GAMEGOLD - 1000 ;扣除1000元宝
GuildMemberNameColor 252
SENDMSG 0 【<$GUILDNAME>】会长 <$USERNAME> 消耗1000元宝将会员名字变为蓝色。
break
#ELSESAY
元宝不足1000,无法操作。\


注意:修改脚本后,必须在M2Server中点击“重读NPC”或重启服务端才能生效。