GO(Golang)系传奇服务端(GOM/3K/Hero/翎风等共用一套约定)的时装系统不是独立子系统,而是“物品DB标识+装备槽位+客户端补丁+NPC脚本命令+QF事件钩子”五段拼起来的外观层。属性走普通装备字段(AC/DC/MAC/MC/SC/DuraMax),外观走Shape/Looks→客户端wzl/pak索引,外显开关走ShowFashion/ESPSHOWFASHION命令,穿戴事件走[@TakeOn17]/[@TakeOff18]这类位置回调。任一段断开,结果就是“有属性没模型”或“有模型全服强制显示”。
一、物品DB层:StdMode与位置代码对照(StdItems.DB/Items.DB)
时装不单建表,沿用StdItems.DB,靠StdMode+Shape(位置代码)区分:
位置代码(装备槽):17时装衣、18时装武器、19时装项链、20时装头盔、21时装左镯、22时装右镯、23时装左戒、24时装右戒、25时装勋章、26时装腰带、27时装鞋、28时装宝石
StdMode分类:
•66男时装衣/67女时装衣
•68男时装武器/69女时装武器
•75/76/77时装项链、78时装头盔、79/80时装手镯、81/82时装戒指、83时装勋章、84/85腰带、86/87鞋、88/89宝石
其余字段(Name、DC、MC、SC、AC、MAC、Weight、DuraMax、Shape、Looks、Reserved)与普通装备一致;Shape填客户端时装模型索引,Looks填特效编号;名称前加[时装]前缀需在!Setup.txt声明FashionPreFix=[时装]
二、客户端补丁与界面资源(表现层)
•人物/武器外观:wzl/pak内mon/hero系列索引,Shape直接映射
•界面背景图:NewopUI.pak内1590~1591主角时装界面、1592~1593英雄时装界面、1594~1595连击界面、1596~1597归来界面,UI编辑器改不了,只能PAK工具替换
-M2开关:M2→选项→客户端设置→内控制(二)→“隐藏时装”切勿勾选,勾了整个时装界面不渲染
三、穿戴/卸下事件钩子(QF/QuestDiary)
佩戴时装衣(槽17)触发[@TakeOn17],卸下触发[@TakeOff17];时装武器(槽18)对应[@TakeOn18]/[@TakeOff18]。可在此挂属性追加、特效、公告、限时时装倒计时:
[@TakeOn17]
#IF
CHECKITEMTYPE1766
#ACT
SENDMSG6你穿上了时装[<$STR(S0)>],属性已生效!
SET[HUMAN时装状态]1
[@TakeOff17]
#ACT
SENDMSG6时装已脱下,外观恢复默认。
SET[HUMAN时装状态]0
CHECKITEMTYPE1766表示“当前17槽物品StdMode=66(男时装衣)”,用于多槽位分支判断。
四、外显总开关:ShowFashion/ESPSHOWFASHION
核心命令(NPC#ACT段执行):
-ShowFashion1开人物时装外显/ShowFashion0关
•HeroShowFashion1|0英雄(英雄版)外显开关
-ESPSHOWFASHION1|0部分ESP插件扩展命令,效果同ShowFashion,仅切显示不脱装备不丢属性
切换即时生效,周围玩家客户端重发SM_CHARSTATUSCHANGED/外观包刷新。
QF联动钩子(M2内控制勾选“外显时装生效触发QF”后激活):
•开显:人物@ShowFashion、英雄@HeroShowFashion
-关显:人物@NotShowFashion、英雄@HeroNotShowFashion
五、完整NPC实战:时装领取+试穿+外显切换
文件:Envir\Market_Def\时装管理员-0.txt,Merchant.txt注册到土城安全区
[@Main]
时装管理员\\
<领取[烈焰凤羽]时装衣/@GetFashionCoat>\
<领取[苍穹斩月]时装武器/@GetFashionWeapon>\
<试穿当前时装/@TryShow>\
<隐藏时装外观/@HideFashion>\
<恢复时装外观/@ShowFashionBack>\
<离开/@Exit>\
[@GetFashionCoat]
#IF
CHECKVARHUMAN已领时装衣1
#ACT
SENDMSG6你已领取过时装衣!
CLOSE
#ELSE
#ACT
GIVE烈焰凤羽1
SET[HUMAN已领时装衣]1
SENDMSG6已获得时装衣[烈焰凤羽],双击穿戴!
CLOSE
[@GetFashionWeapon]
#IF
CHECKVARHUMAN已领时装武1
#ACT
SENDMSG6你已领取过时装武器!
CLOSE
#ELSE
#ACT
GIVE苍穹斩月1
SET[HUMAN已领时装武]1
SENDMSG6已获得时装武器[苍穹斩月],双击穿戴!
CLOSE
[@TryShow]
#ACT
ShowFashion1
SENDMSG6时装外显已开启,周围玩家可见!
CLOSE
[@HideFashion]
#ACT
ShowFashion0
SENDMSG6时装外显已隐藏,仅自己可见属性!
CLOSE
[@ShowFashionBack]
#ACT
ShowFashion1
CLOSE
QF(QFunction-0.txt)追加:
[@ShowFashion]
#ACT
SENDMSG6外显状态:开
[@NotShowFashion]
#ACT
SENDMSG6外显状态:关
六、限时时装与商业化扩展
DB加字段或借Human变量存到期时间戳,登录钩子(QManage.txt[@Login])判定:
#IF
CHECKTIME<$DATETIME><$STR(HUMAN时装到期)]
#ACT
TAKE烈焰凤羽1
ShowFashion0
SENDMSG6限时时装已过期自动回收。
染色、套装光效、英雄独立时装同理挂变量+QF。
七、排错硬点
•穿上有属性但别人看不见:M2内控制(二)“隐藏时装”被勾、或ShowFashion0、或NewopUI.pak缺1590+资源
-槽位错乱:位置代码必须17~28连续,跳号客户端渲染异常
•StdMode写反:男角色穿StdMode=67(女衣)不进[@TakeOn17]或模型错位
•Shape指向空图:客户端缺wzl/pak索引,显示透明或默认布衣
-英雄不显:忘了发HeroShowFashion1,人物ShowFashion不影响英雄
•前缀不显示:[!Setup.txt]漏写FashionPreFix=[时装]
时装系统的本质是把“装备属性”和“渲染模型”拆成两条线——DB的StdMode/Shape决定它是什么、穿在哪,ShowFashion决定别人看不看得到,[@TakeOn17]决定穿脱时跑什么逻辑;三线对齐,外显、属性、事件才同步。
一、物品DB层:StdMode与位置代码对照(StdItems.DB/Items.DB)
时装不单建表,沿用StdItems.DB,靠StdMode+Shape(位置代码)区分:
位置代码(装备槽):17时装衣、18时装武器、19时装项链、20时装头盔、21时装左镯、22时装右镯、23时装左戒、24时装右戒、25时装勋章、26时装腰带、27时装鞋、28时装宝石
StdMode分类:
•66男时装衣/67女时装衣
•68男时装武器/69女时装武器
•75/76/77时装项链、78时装头盔、79/80时装手镯、81/82时装戒指、83时装勋章、84/85腰带、86/87鞋、88/89宝石
其余字段(Name、DC、MC、SC、AC、MAC、Weight、DuraMax、Shape、Looks、Reserved)与普通装备一致;Shape填客户端时装模型索引,Looks填特效编号;名称前加[时装]前缀需在!Setup.txt声明FashionPreFix=[时装]
二、客户端补丁与界面资源(表现层)
•人物/武器外观:wzl/pak内mon/hero系列索引,Shape直接映射
•界面背景图:NewopUI.pak内1590~1591主角时装界面、1592~1593英雄时装界面、1594~1595连击界面、1596~1597归来界面,UI编辑器改不了,只能PAK工具替换
-M2开关:M2→选项→客户端设置→内控制(二)→“隐藏时装”切勿勾选,勾了整个时装界面不渲染
三、穿戴/卸下事件钩子(QF/QuestDiary)
佩戴时装衣(槽17)触发[@TakeOn17],卸下触发[@TakeOff17];时装武器(槽18)对应[@TakeOn18]/[@TakeOff18]。可在此挂属性追加、特效、公告、限时时装倒计时:
[@TakeOn17]
#IF
CHECKITEMTYPE1766
#ACT
SENDMSG6你穿上了时装[<$STR(S0)>],属性已生效!
SET[HUMAN时装状态]1
[@TakeOff17]
#ACT
SENDMSG6时装已脱下,外观恢复默认。
SET[HUMAN时装状态]0
CHECKITEMTYPE1766表示“当前17槽物品StdMode=66(男时装衣)”,用于多槽位分支判断。
四、外显总开关:ShowFashion/ESPSHOWFASHION
核心命令(NPC#ACT段执行):
-ShowFashion1开人物时装外显/ShowFashion0关
•HeroShowFashion1|0英雄(英雄版)外显开关
-ESPSHOWFASHION1|0部分ESP插件扩展命令,效果同ShowFashion,仅切显示不脱装备不丢属性
切换即时生效,周围玩家客户端重发SM_CHARSTATUSCHANGED/外观包刷新。
QF联动钩子(M2内控制勾选“外显时装生效触发QF”后激活):
•开显:人物@ShowFashion、英雄@HeroShowFashion
-关显:人物@NotShowFashion、英雄@HeroNotShowFashion
五、完整NPC实战:时装领取+试穿+外显切换
文件:Envir\Market_Def\时装管理员-0.txt,Merchant.txt注册到土城安全区
[@Main]
时装管理员\\
<领取[烈焰凤羽]时装衣/@GetFashionCoat>\
<领取[苍穹斩月]时装武器/@GetFashionWeapon>\
<试穿当前时装/@TryShow>\
<隐藏时装外观/@HideFashion>\
<恢复时装外观/@ShowFashionBack>\
<离开/@Exit>\
[@GetFashionCoat]
#IF
CHECKVARHUMAN已领时装衣1
#ACT
SENDMSG6你已领取过时装衣!
CLOSE
#ELSE
#ACT
GIVE烈焰凤羽1
SET[HUMAN已领时装衣]1
SENDMSG6已获得时装衣[烈焰凤羽],双击穿戴!
CLOSE
[@GetFashionWeapon]
#IF
CHECKVARHUMAN已领时装武1
#ACT
SENDMSG6你已领取过时装武器!
CLOSE
#ELSE
#ACT
GIVE苍穹斩月1
SET[HUMAN已领时装武]1
SENDMSG6已获得时装武器[苍穹斩月],双击穿戴!
CLOSE
[@TryShow]
#ACT
ShowFashion1
SENDMSG6时装外显已开启,周围玩家可见!
CLOSE
[@HideFashion]
#ACT
ShowFashion0
SENDMSG6时装外显已隐藏,仅自己可见属性!
CLOSE
[@ShowFashionBack]
#ACT
ShowFashion1
CLOSE
QF(QFunction-0.txt)追加:
[@ShowFashion]
#ACT
SENDMSG6外显状态:开
[@NotShowFashion]
#ACT
SENDMSG6外显状态:关
六、限时时装与商业化扩展
DB加字段或借Human变量存到期时间戳,登录钩子(QManage.txt[@Login])判定:
#IF
CHECKTIME<$DATETIME><$STR(HUMAN时装到期)]
#ACT
TAKE烈焰凤羽1
ShowFashion0
SENDMSG6限时时装已过期自动回收。
染色、套装光效、英雄独立时装同理挂变量+QF。
七、排错硬点
•穿上有属性但别人看不见:M2内控制(二)“隐藏时装”被勾、或ShowFashion0、或NewopUI.pak缺1590+资源
-槽位错乱:位置代码必须17~28连续,跳号客户端渲染异常
•StdMode写反:男角色穿StdMode=67(女衣)不进[@TakeOn17]或模型错位
•Shape指向空图:客户端缺wzl/pak索引,显示透明或默认布衣
-英雄不显:忘了发HeroShowFashion1,人物ShowFashion不影响英雄
•前缀不显示:[!Setup.txt]漏写FashionPreFix=[时装]
时装系统的本质是把“装备属性”和“渲染模型”拆成两条线——DB的StdMode/Shape决定它是什么、穿在哪,ShowFashion决定别人看不看得到,[@TakeOn17]决定穿脱时跑什么逻辑;三线对齐,外显、属性、事件才同步。

