传奇里“衣服染色”通常有三种需求:第一种是改装备外观,让玩家穿上不同颜色的衣服模型;第二种是改装备名字颜色,让装备名显示成红、紫、金等颜色;第三种是记录染色状态,让玩家下次上线仍保持染色效果。不同引擎命令差异较大,下面按可直接套用的思路写示例,命令以常见 GOM/GEE 类引擎结构为例,其他引擎需要对照自身说明替换。
第一种:NPC 对话修改衣服外观
这种写法适合做“衣服染色师”“时装染色”“装备外观替换”等玩法。玩家与 NPC 对话后,把当前衣服外观改成指定模型。
示例:
[@衣服染色]
IF
CHECKITEM 染色宝石 1
ACT
TAKE 染色宝石 1
CHANGEITEMLOOKS 3 = 1001
SENDMSG 6 衣服已染成红色外观
ELSESAY
背包内没有染色宝石
这里 3 通常代表衣服装备位置,1001 代表新的外观模型编号。不同版本衣服位置可能写在 3、4 或 10 附近,需要对照当前引擎装备位置表确认。如果希望玩家选择颜色,可以做成多分支:
[@选择颜色]
IF
CHECKITEM 染色宝石 1
ACT
GOTO @颜色列表
ELSESAY
背包内没有染色宝石
[@颜色列表]
SAY
<红色/@染红>\
<蓝色/@染蓝>\
<金色/@染金>\
<还原/@还原外观>
[@染红]
IF
CHECKITEM 染色宝石 1
ACT
TAKE 染色宝石 1
CHANGEITEMLOOKS 3 = 1001
SENDMSG 6 衣服已染成红色
[@染蓝]
IF
CHECKITEM 染色宝石 1
ACT
TAKE 染色宝石 1
CHANGEITEMLOOKS 3 = 1002
SENDMSG 6 衣服已染成蓝色
[@还原外观]
IF
CHECKITEM 还原宝石 1
ACT
TAKE 还原宝石 1
CHANGEITEMLOOKS 3 = 0
SENDMSG 6 衣服外观已还原
如果版本支持 OK 框选中物品染色,可以把位置写成 -1,让玩家先选中要染色的衣服:
[@选中染色]
IF
CHECKITEM 染色宝石 1
ACT
TAKE 染色宝石 1
CHANGEITEMLOOKS -1 = 1001
SENDMSG 6 选中衣服已染色
第二种:修改装备名字颜色
如果“染色”不是改模型,而是让装备名字显示不同颜色,可以使用名字颜色命令。GOM 类引擎常见命令为 ChangeItemNameColor,可修改装备名字显示颜色。
示例:
[@名字染色]
IF
CHECKITEM 染色宝石 1
ACT
TAKE 染色宝石 1
CHANGEITEMNAMECOLOR 3 253
SENDMSG 6 衣服名字已变成紫色
颜色值一般在 0 到 255 之间,0 通常表示恢复默认颜色。 不同引擎颜色编号可能不同,需要先在测试服查看实际显示效果。
如果要让玩家选择名字颜色,可以这样写:
[@名字颜色选择]
IF
CHECKITEM 染色宝石 1
ACT
TAKE 染色宝石 1
GOTO @颜色菜单
ELSESAY
背包内没有染色宝石
[@颜色菜单]
SAY
<紫色/@名字紫>\
<黄色/@名字黄>\
<绿色/@名字绿>\
<还原/@名字还原>
[@名字紫]
IF
ACT
CHANGEITEMNAMECOLOR 3 253
SENDMSG 6 衣服名字已变成紫色
[@名字还原]
IF
ACT
CHANGEITEMNAMECOLOR 3 0
SENDMSG 6 衣服名字颜色已还原
第三种:用自定义属性记录染色状态
如果希望染色后下线不丢失,建议把染色编号写入装备自定义属性。这样玩家重新上线时,可以通过脚本读取染色状态并恢复外观。
写入染色状态示例:
[@写入染色]
IF
CHECKITEM 染色宝石 1
ACT
TAKE 染色宝石 1
CHANGEITEMLOOKS 3 = 1001
SETNEWCUSTOMITEMVALUE 3 0 1 = 1001
SENDMSG 6 衣服已染色并保存
读取染色状态示例:
[@读取染色]
IF
CHECKNEWCUSTOMITEMVALUE 3 0 1 = 1001
ACT
CHANGEITEMLOOKS 3 = 1001
SENDMSG 6 已恢复衣服染色外观
这里 3 代表衣服装备位置,0 代表自定义属性槽位,1 代表该槽位中的变量位置。 不同引擎对槽位和变量位置定义不同,正式使用前需要先在 M2 或引擎配置中确认自定义属性是否开启。
第四种:物品触发自动染色
如果希望玩家双击染色宝石直接给衣服染色,可以把脚本绑定到物品触发。物品触发脚本通常放在引擎指定的物品触发目录中,触发标签多为 @Use:。
示例:
@Use:
IF
CHECKUSEITEM 3
ACT
CHANGEITEMLOOKS 3 = 1001
SETNEWCUSTOMITEMVALUE 3 0 1 = 1001
SENDMSG 6 衣服已染色
如果玩家没有穿衣服,可以先提示:
@Use:
IF
CHECKUSEITEM 3
ACT
CHANGEITEMLOOKS 3 = 1001
SENDMSG 6 衣服已染色
ELSEACT
SENDMSG 6 请先穿上衣服再使用
第五种:防止重复染色和刷外观
直接改外观时,建议加一层检测,避免玩家反复使用宝石却只改变外观而不扣除道具。
示例:
[@衣服染色检测]
IF
CHECKITEM 染色宝石 1
CHECKNEWCUSTOMITEMVALUE 3 0 1 = 1001
ACT
SENDMSG 6 衣服已经是该颜色
ELSEACT
TAKE 染色宝石 1
CHANGEITEMLOOKS 3 = 1001
SETNEWCUSTOMITEMVALUE 3 0 1 = 1001
SENDMSG 6 衣服染色成功
如果引擎不支持自定义属性,也可以用玩家可保存变量记录染色编号,例如 U0、T0 或自定义变量。 但变量记录只能表示玩家当前染色状态,不能精确绑定到某件装备。换衣服后需要重新判断。
第六种:染色还原与多套外观切换
多套外观切换可以先检测玩家是否拥有对应外观权限,再切换模型。
示例:
[@切换外观]
IF
CHECKITEM 染色宝石 1
ACT
TAKE 染色宝石 1
GOTO @外观选择
ELSESAY
背包内没有染色宝石
[@外观选择]
SAY
<默认/@外观默认>\
<烈焰/@外观烈焰>\
<冰霜/@外观冰霜>\
<暗黑/@外观暗黑>
[@外观烈焰]
IF
ACT
CHANGEITEMLOOKS 3 = 1001
SETNEWCUSTOMITEMVALUE 3 0 1 = 1001
SENDMSG 6 已切换烈焰外观
[@外观默认]
IF
ACT
CHANGEITEMLOOKS 3 = 0
SETNEWCUSTOMITEMVALUE 3 0 1 = 0
SENDMSG 6 已还原默认外观
部署时需要注意脚本存放位置。NPC 对话脚本一般放在 Market_Def 对应 NPC 文件中;物品触发脚本放在引擎规定的物品触发目录;装备属性读取可放在登录触发或穿装备触发中。修改后保存为 ANSI 编码,并在 M2 中重新加载脚本。
调试时先确认三个点:衣服装备位置编号是否正确,外观模型编号是否存在,自定义属性是否已开启并可保存。如果染色后客户端没有变化,多半是外观模型编号缺失或客户端补丁不完整;如果下线后染色丢失,需要检查自定义属性或玩家变量是否正确写入与读取;如果名字颜色不变化,需要确认当前引擎是否支持 ChangeItemNameColor 以及颜色编号范围。
独特传奇衣服染色脚本:装备外观、名字颜色与自定义属性三套实现
来源:
作者:
点击:

