独特传奇衣服染色脚本:装备外观、名字颜色与自定义属性三套实现

来源: 作者: 点击:
传奇里“衣服染色”通常有三种需求:第一种是改装备外观,让玩家穿上不同颜色的衣服模型;第二种是改装备名字颜色,让装备名显示成红、紫、金等颜色;第三种是记录染色状态,让玩家下次上线仍保持染色效果。不同引擎命令差异较大,下面按可直接套用的思路写示例,命令以常见GOM/GEE类引擎结构为例,其他引擎需要对照自身说明替换。

第一种:NPC对话修改衣服外观

这种写法适合做“衣服染色师”“时装染色”“装备外观替换”等玩法。玩家与NPC对话后,把当前衣服外观改成指定模型。

示例:

[@衣服染色]
IF
CHECKITEM染色宝石1
ACT
TAKE染色宝石1
CHANGEITEMLOOKS3=1001
SENDMSG6衣服已染成红色外观
ELSESAY
背包内没有染色宝石

这里3通常代表衣服装备位置,1001代表新的外观模型编号。不同版本衣服位置可能写在3、4或10附近,需要对照当前引擎装备位置表确认。如果希望玩家选择颜色,可以做成多分支:

[@选择颜色]
IF
CHECKITEM染色宝石1
ACT
GOTO@颜色列表
ELSESAY
背包内没有染色宝石

[@颜色列表]
SAY
<红色/@染红>\
<蓝色/@染蓝>\
<金色/@染金>\
<还原/@还原外观>

[@染红]
IF
CHECKITEM染色宝石1
ACT
TAKE染色宝石1
CHANGEITEMLOOKS3=1001
SENDMSG6衣服已染成红色

[@染蓝]
IF
CHECKITEM染色宝石1
ACT
TAKE染色宝石1
CHANGEITEMLOOKS3=1002
SENDMSG6衣服已染成蓝色

[@还原外观]
IF
CHECKITEM还原宝石1
ACT
TAKE还原宝石1
CHANGEITEMLOOKS3=0
SENDMSG6衣服外观已还原

如果版本支持OK框选中物品染色,可以把位置写成-1,让玩家先选中要染色的衣服:

[@选中染色]
IF
CHECKITEM染色宝石1
ACT
TAKE染色宝石1
CHANGEITEMLOOKS-1=1001
SENDMSG6选中衣服已染色

第二种:修改装备名字颜色

如果“染色”不是改模型,而是让装备名字显示不同颜色,可以使用名字颜色命令。GOM类引擎常见命令为ChangeItemNameColor,可修改装备名字显示颜色。

示例:

[@名字染色]
IF
CHECKITEM染色宝石1
ACT
TAKE染色宝石1
CHANGEITEMNAMECOLOR3253
SENDMSG6衣服名字已变成紫色

颜色值一般在0到255之间,0通常表示恢复默认颜色。不同引擎颜色编号可能不同,需要先在测试服查看实际显示效果。

如果要让玩家选择名字颜色,可以这样写:

[@名字颜色选择]
IF
CHECKITEM染色宝石1
ACT
TAKE染色宝石1
GOTO@颜色菜单
ELSESAY
背包内没有染色宝石

[@颜色菜单]
SAY
<紫色/@名字紫>\
<黄色/@名字黄>\
<绿色/@名字绿>\
<还原/@名字还原>

[@名字紫]
IF
ACT
CHANGEITEMNAMECOLOR3253
SENDMSG6衣服名字已变成紫色

[@名字还原]
IF
ACT
CHANGEITEMNAMECOLOR30
SENDMSG6衣服名字颜色已还原

第三种:用自定义属性记录染色状态

如果希望染色后下线不丢失,建议把染色编号写入装备自定义属性。这样玩家重新上线时,可以通过脚本读取染色状态并恢复外观。

写入染色状态示例:

[@写入染色]
IF
CHECKITEM染色宝石1
ACT
TAKE染色宝石1
CHANGEITEMLOOKS3=1001
SETNEWCUSTOMITEMVALUE301=1001
SENDMSG6衣服已染色并保存

读取染色状态示例:

[@读取染色]
IF
CHECKNEWCUSTOMITEMVALUE301=1001
ACT
CHANGEITEMLOOKS3=1001
SENDMSG6已恢复衣服染色外观

这里3代表衣服装备位置,0代表自定义属性槽位,1代表该槽位中的变量位置。不同引擎对槽位和变量位置定义不同,正式使用前需要先在M2或引擎配置中确认自定义属性是否开启。

第四种:物品触发自动染色

如果希望玩家双击染色宝石直接给衣服染色,可以把脚本绑定到物品触发。物品触发脚本通常放在引擎指定的物品触发目录中,触发标签多为@Use:。

示例:

@Use:
IF
CHECKUSEITEM3
ACT
CHANGEITEMLOOKS3=1001
SETNEWCUSTOMITEMVALUE301=1001
SENDMSG6衣服已染色

如果玩家没有穿衣服,可以先提示:

@Use:
IF
CHECKUSEITEM3
ACT
CHANGEITEMLOOKS3=1001
SENDMSG6衣服已染色
ELSEACT
SENDMSG6请先穿上衣服再使用

第五种:防止重复染色和刷外观

直接改外观时,建议加一层检测,避免玩家反复使用宝石却只改变外观而不扣除道具。

示例:

[@衣服染色检测]
IF
CHECKITEM染色宝石1
CHECKNEWCUSTOMITEMVALUE301=1001
ACT
SENDMSG6衣服已经是该颜色
ELSEACT
TAKE染色宝石1
CHANGEITEMLOOKS3=1001
SETNEWCUSTOMITEMVALUE301=1001
SENDMSG6衣服染色成功

如果引擎不支持自定义属性,也可以用玩家可保存变量记录染色编号,例如U0、T0或自定义变量。但变量记录只能表示玩家当前染色状态,不能精确绑定到某件装备。换衣服后需要重新判断。

第六种:染色还原与多套外观切换

多套外观切换可以先检测玩家是否拥有对应外观权限,再切换模型。

示例:

[@切换外观]
IF
CHECKITEM染色宝石1
ACT
TAKE染色宝石1
GOTO@外观选择
ELSESAY
背包内没有染色宝石

[@外观选择]
SAY
<默认/@外观默认>\
<烈焰/@外观烈焰>\
<冰霜/@外观冰霜>\
<暗黑/@外观暗黑>

[@外观烈焰]
IF
ACT
CHANGEITEMLOOKS3=1001
SETNEWCUSTOMITEMVALUE301=1001
SENDMSG6已切换烈焰外观

[@外观默认]
IF
ACT
CHANGEITEMLOOKS3=0
SETNEWCUSTOMITEMVALUE301=0
SENDMSG6已还原默认外观

部署时需要注意脚本存放位置。NPC对话脚本一般放在Market_Def对应NPC文件中;物品触发脚本放在引擎规定的物品触发目录;装备属性读取可放在登录触发或穿装备触发中。修改后保存为ANSI编码,并在M2中重新加载脚本。

调试时先确认三个点:衣服装备位置编号是否正确,外观模型编号是否存在,自定义属性是否已开启并可保存。如果染色后客户端没有变化,多半是外观模型编号缺失或客户端补丁不完整;如果下线后染色丢失,需要检查自定义属性或玩家变量是否正确写入与读取;如果名字颜色不变化,需要确认当前引擎是否支持ChangeItemNameColor以及颜色编号范围。
[顶部]