当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇GO服务端时装系统深度解析:NPC命令到外显控制完整实现链路

热度:
GO服务端时装系统采用“DB物品定义+M2引擎槽位识别+NPC脚本控制+客户端补丁渲染”的四层协同结构,核心由位置代码(17-28)、StdMode(66-89)、ShowFashion开关与QF触发标签共同驱动。下面按实际配置顺序拆开讲。

一、装备位置代码与StdMode对照关系
客户端与服务端约定时装占用12个独立槽位,位置代码必须从17起连续分配,跳号会导致角色裸模或渲染异常:
•17时装衣服→StdMode66(男)/67(女)

-18时装武器→StdMode68/69
•19时装项链→StdMode75/76/77

•20时装头盔→StdMode78

•21时装左手镯/22时装右手镯→StdMode79/80

-23时装左戒指/24时装右戒指→StdMode81/82
•25时装勋章→StdMode83

•26时装腰带→StdMode84/85

•27时装鞋子→StdMode86/87

-28时装宝石→StdMode88/89

DB字段中Shape填写对应位置代码(衣服填17、武器填18),Looks填写客户端外观特效编号,AC/DC/MC/SC/MAC/DuraMax等沿用普通装备写法即可。

二、!Setup.txt与前缀声明
在Mir200\!Setup.txt的[Setup]段加入:
FashionPreFix=[时装]
物品名称带此前缀后,引擎才将其纳入时装逻辑处理;同时进入M2→选项→客户端设置→内控制(二),确认“隐藏时装”未勾选,否则角色面板不显示时装页签。

三、NPC对话框命令控制外显开关
核心命令为ShowFashion,在Merchant脚本里直接调用:
[@main]
开启时装外显<开启/@OpenFashion>
关闭时装外显<关闭/@CloseFashion>

[@OpenFashion]
ACT

ShowFashion1
SENDMSG6时装外显已开启

[@CloseFashion]
ACT

ShowFashion0
SENDMSG6时装外显已关闭

ShowFashion1=对其他玩家显示身上已穿戴时装模型;0=仅保留属性,不渲染外观。该状态写入角色运行期变量,重登不变,直到再次执行命令。

四、QF触发标签链路(QFunction-0.txt/QF脚本)
穿戴/脱下以及外显勾选变化都会回调固定标签,可在此挂属性、公告、特效、任务进度:

人物穿戴时装衣服:[@TakeOn17]
人物脱下时装衣服:[@TakeOff17]
人物穿戴时装武器:[@TakeOn18]
人物脱下时装武器:[@TakeOff18]
(其余槽位以此类推TakeOn19/TakeOff19…TakeOn28/TakeOff28)

勾选外显触发:[@ShowFashion]
取消外显触发:[@NotShowFashion]
英雄勾选外显:[@HeroShowFashion]
英雄取消外显:[@HeroNotShowFashion]

示例——穿戴时装武器附加攻速并广播:
[@TakeOn18]
IF

ACT

ChangeMode181
SENDMSG0玩家<$USERNAME>唤醒时装武器形态
BREAK

[@NotShowFashion]
IF

ACT

SENDMSG6你已隐藏时装外形,属性依然生效

注意:属性类加成建议在TakeOn里INC/MOV,在TakeOff或NotShow分支做回收,避免重复叠加。

五、脚本内物品位置判定
校验玩家是否穿戴某部位时装可用:
CHECKITEMTYPE物品位置物品类型
例:CHECKITEMTYPE1766(检测是否穿男时装衣服)
配合CHECKITEMW检测身上装备、CheckEquipSlot检测槽位,用来做套装集齐判定、外观切换条件等。

六、客户端补丁与UI绑定
外观素材走NewopUI.pak与对应Wil/Wix资源:
•1590~1591主角13周年界面时装背景

•1592~1593英雄13周年界面时装背景

•1594~1595连击界面时装背景

•1596~1597连击界面英雄时装背景

•1598~1599归来界面时装背景

替换这些索引即改面板底图,UI编辑器动不了,必须进Pak替换。角色本体模型由Looks编号指向Wil内帧序列,Weapon/Body补丁需保证索引连续。

七、常见落地故障排查
1.面板看不到时装页签→M2内控制(二)“隐藏时装”被勾选,或!Setup.txt缺FashionPreFix。
2.穿上不显示模型→Shape没填位置代码、Looks对应Wil缺帧、StdMode写错性别段。
3.位置跳号(如25直接跳30)→客户端槽位映射断裂,必须17-28连续。
4.ShowFashion无效→NPC脚本未重载、命令拼错大小写、角色变量被其他脚本强制写回。
5.脱下后属性残留→TakeOff分支未做变量归零或ChangeMode回收。

整套链路串起来就是:DB定物品(StdMode+Shape+Looks)→M2识别槽位→玩家穿戴触发TakeOn→NPC用ShowFashion切外显→QF里挂属性与广播→客户端按Looks拉NewopUI.pak/Wil渲染。改动任一层都要同步校验另外三层,否则就会出现有属性无模型、有模型不切显、面板不出页签这三类中频毛病。
[顶部]