- 好友
- 12
- 在线时间
- 486 小时
- 最后登录
- 2026-10-19
子爵[版主]
  
- UID
- 2893127
- 第纳尔
- 14957
- 精华
- 0
- 互助
- 97
- 荣誉
- 21
- 贡献
- 325
- 魅力
- 1415
- 注册时间
- 2017-11-5
 鲜花( 445)  鸡蛋( 0)
|
## 六、重点代码知识
这一节把「看懂脚本、改对参数」需要的通用代码知识集中讲一遍;只想用基本功能的读者可以先跳过,不影响前面的操作。
### (一)骑砍脚本 txt 长什么样
本 mod 的脚本文件是编译后的数字流,三段式脚本的形状是:第一行是段名(名字 -1),第二行是一整行数字,第三行是下一段的段名。第二行里,第一个数字是这一段的指令条数,之后按「opcode + 参数个数 + 参数」一条指令接一条指令排下去。例如:
exroletemp2 -1
158 1 1 936748722493063836 2124 1 1000 1700 1 1224979098644774912 ...
exroletemp3 -1
反编译就是把每条指令的数字换成可读名字,写成标准 Module System 写法,每行一条、以逗号结尾:
510 3 reg0 102 740 -> (scene_prop_set_slot, reg0, 102, 740),
几个书写要点:
- 行的形状固定是「(操作名, 参数1, 参数2, ...),」,最外层括号、逗号、行尾逗号都不能少;
- 操作名前面可以带 neg|(这一条取反)或 this_or_next|(与下一条二选一);
- 参数可以是数字、寄存器 reg0、局部变量 :var_0、全局变量 $变量名、双引号包起来的 ID 名字(如 "script_xxx");
- ID 名字是从 mod 自己的 txt 里还原出来的:item_kinds1.txt 对应 itm_ 开头,scene_props.txt 对应 spr_ 开头,troops.txt 对应 trp_ 开头,scripts.txt 对应 script_ 开头。所以「ID 名称表没读全」时反编译会显示成 spr(数字) 而不是名字——这不是工具坏了,是 mod 目录没认对。
### (二)常用 opcode 速查(动画 / 技能最常用的几个)
- 2610 prop_instance_deform_to_time:直接跳到某个帧时刻,不播放;
- 2611 prop_instance_deform_in_range:从起帧时刻播到止帧时刻,播完停在止帧;
- 2612 prop_instance_deform_in_cycle_loop:在起止区间内循环播放;
- 2615 prop_instance_get_current_deform_progress:已播放百分比(0 到 100);
- 2616 prop_instance_get_current_deform_frame:取当前帧时刻(用来判断落在哪个动作区间,是做动作切换判断的关键);
- 2617 prop_instance_set_material:换某个子网格的贴图(子网格填 -1 表示全部);
- 510 scene_prop_set_slot:写场景物的 slot —— 动作帧区间、播放时长这些参数就是它写进去的;
- 520 troop_get_slot / 521 troop_set_slot:读 / 写兵种 slot(玩家数值、技能图标编号走这里);
- try_begin / try_end:条件块(成对出现,块内条件成立就执行);注意反编译里的缩进只是给人看的,真正决定层级的是指令顺序本身。
编写思路一句话:用 2616 拿当前帧时刻,判断剪在哪段动作区间里,再用 2611(打断 / 接续)或 2612(循环)切过去。
### (三)关键 slot 速查(人物动画)
先记住刻度:帧序号 × 10 = 帧时刻,从 0 开始计(第 0 帧是 0,第 1 帧是 10,第 2 帧是 20……)。代码里 op 2611 / 2612 填的都是「帧时刻」。
动作区间(起 / 止成对):
- 101 / 102:待机 idle;103 / 104:待机-特殊
- 105 / 106:移动 / 奔跑 run;107 / 108:移动-特殊
- 109 / 110:攻击1;111 / 112:攻击2;113 / 114:连击
- 115 / 116:技能1;117 / 118:技能2;119 / 120:技能3;121 / 122:技能4
- 123 / 124:嘲讽;125 / 126:死亡
- 127 到 134:召唤物(待机 / 移动 / 攻击 / 待机2)
其它:
- 135 到 143:各动作的播放时长(待机 / 移动 / 攻击 / 技能1-4 / 嘲讽 / 死亡),单位毫秒,正好对应 op 2611 / 2612 的时长参数;
- 144 到 147:效果持续时间 1 到 4(毫秒);
- 数值 89990 或 99990 是「不存在或镜像」的占位记号,工具会识别并禁止预览该动作;
- 503 / 504 / 505 / 506:四个英雄技能槽(技能1 到 技能4);技能N 对应槽 50N、对应技能CD变量 $ccdN,是一一联动的;
- 650:人物头像贴图编号;652 到 655:四个技能图标贴图编号;
- 能力数值(写在兵种 / 单位 slot 上):729 到 732 四大基础伤害(玩家攻击 / 持续类 / 小单体 / 大招)、738 减伤、744 到 750 速度相关、679 神杖、336 速度屏蔽开关、601 到 604 击飞 / 滞空。
### (四)参数是怎么对准代码的(不会错位)
改 slot 参数不是按行号、也不是按「第几个数字」去改的,而是按 slot 号语义定位:找到 scene_prop_set_slot 这条指令,看它第 2 个参数是不是目标 slot 号,是才改它第 3 个参数那一个数字。所以脚本里其它代码怎么增删、行数怎么变,都不影响定位;脚本头部的「指令条数」也不会被动到(因为只换数字、不增减指令)。
## 七、模型与动画重点知识
这一节讲模型与动画的重点规则:帧时刻怎么算、模型怎么导进来、编号与贴图有哪些约定。
### (一)顶点动画与帧时刻
骑砍的顶点动画模型(BRF 格式)是「把每一帧的顶点位置直接存下来」,播到第几帧就用第几帧的顶点。本工具产出的顶点动画里:帧时刻 = 帧序号 × 10。所以你在预览里看到的「帧时刻」,和写进 slot 的数字是同一套刻度。模型里最后一个动作区间的终点,一般正好等于「总帧数减一」乘以 10(比如 375 帧的模型,最后帧时刻是 3740)。
### (二)导入魔兽模型(MDX)
点「导入动画模型(mdx)替换 samuro…」之后,流程是:
1. 选 .mdx 文件(位置随便放),贴图找不到时在「贴图搜索目录」里写上几个目录(可加多个);
2. 工具解析骨骼动画,逐帧烘焙成骑砍的顶点动画;
3. 按补丁里的参考人体(ckmodel101)统一归一化:身高统一成 1.8155、双脚落在 Y≈0 的地面、左右居中——这样导入后在游戏里的观感和原角色一致;
4. 「初始朝向」用 0 / 90 / 180 / 270 试,右边小窗立刻看到效果,还有左右镜像开关;
5. 「帧数上限」默认 700:核心帧数超过上限时自动隔帧抽稀。它影响生成体积(帧数 × 顶点数 × 24 字节,不限制可能到几百 MB)和播放总时长(每帧固定 10 单位,抽稀后相当于变快),但不影响动作区间与 slot 的对应关系(每个动作至少保留首尾帧)。想 1:1 全保留,把上限设成不低于本次选中动作的关键帧总数;
6. 转换完弹「生成信息确认」窗(生成体积、帧数、分部模型、动作帧区间、用了哪几张贴图),过目后点「确定,按这个写」才真正写入。
写入范围只有三处,全在人物补丁目录里(原文件都会先备份):
- 补丁 Resource 里的 .brf:只换 mesh 段,材质、贴图段一个字节不动;
- 补丁 Textures 里的 9000xx.dds:源贴图(BLP / DDS / PNG / TGA 等)自动转成 DDS;
- 补丁 Resource 里的动作帧区间 txt:动作与帧时刻对照表。
导入 FBX 模型:先转成 MD3 顶点动画(「内置转换」推荐、无损,不需要外部程序;也可切「外部转换器」用老的 openmodtool / Noesis 那条路),之后和 MDX 完全同样的要求写进补丁。FBX / MD3 不含动作划分,整段动画一起导入,「动作 → slot 联动」由你在 ② 页右侧自己填。
### (三)导入用途:人物角色 与 3D 特效
导入窗口最上面先选「导入用途」:
- 人物角色(默认):替换补丁里的人物主模型,命名沿用 samuro.0、samuro.1……(基名 samuro 带上 .分部号);贴图沿用补丁里已有的 900091 到 900100。
- 3D 特效模型:新增特效网格,原有模型一个都不动;从 propskill80 到 propskill120 里挑一个没被占用的基号命名,同一个 MDX 的各分部写成 propskill80.0、propskill80.1……;贴图从 900121 起依次新建(贴图和材质一起建,材质沿用 900101 那套粒子着色器与参数,这样特效才能正常显示、叠色)。
- 两种用途的「大小 / 朝向 / 落位」是同一套归一化,换用途只换名字,不动几何、缩放和位置。
- 一个小提醒:高度是按第 0 帧的上下跨度统一缩放的,所以第 0 帧很扁很小的特效(地面光圈、冲击波)会被算得比较大,属已知情况。
### (四)动作 → slot 联动(自动写动作区间)
导入对话框下半部分能把「起止帧时刻」直接写进控制脚本的 slot,省得手工抄帧号:
- 工具先按动作名相似度猜归属:待机 idle > stand;移动 run > walk;攻击 attack;技能 skill > spell;死亡 die > death;嘲讽 laugh > taunt / victory……同一家族里修饰语越少的越靠前(Stand 优先于 Stand Ready);一个家族多出来的动作依次给「待机-特殊 / 移动-特殊 / 连击 / 技能2-4」等空位。这只是初始猜测,猜到哪一行都能自己改。
- 17 个标准动作全部可以自由选,没有任何禁止项;允许多行选同一个魔兽动作。
- 只改「起 / 止」两个 slot;播放时长 slot(135 到 143)一律不动。
- 目标脚本可选「补丁的 exrolectrl.txt」或「mod 的 scripts.txt」,写前自动备份;写完关窗后 ② 页会自动重读,动作区间下拉框和参数表立刻反映新结果。
### (五)绑定特效 samuro.N(skilltemp 11 / 12 / 14 / 17 / 18 / 19)
这几个技能模板的 para2 填的是「用英雄模型自己的第 N 个 mesh」当跟随玩家的绑定特效(也就是人物补丁里的 samuro.N)。要点:
- 这个绑定特效模型必须有动画,且帧数不低于主模型,否则该技能代码会报错;
- skilltemp11 到 19 之间,samuro.N 的 N 值不得重复(工具会当场查出重复);
- 缺模型时弹框里可以选「自动复制」:工具把 brf 里的 samurobk 备用模型复制一份、改名为 samuro.N 写回去(只往网格段尾部追加一条,其它段不动,写前备份);目标序号被占用时按「已有最大值 + 1」取,不超过 9。
### (六)贴图号段与材质约定(本 mod 约定)
- 900091 到 900100:人物贴图预设(其中 900100 是隐身影身,尽量别覆盖);
- 900101 到 900110:技能特效模板预设(当参数模板读,编辑器不覆盖、不复用);
- 900111 到 900120:技能 UI 图标预设(④ 页更换头像 / 技能图标用);
- 900121 到 900140:人物贴图不够时的增补段;
- 900141 起:特效新增段(特效一律另起新号)。
- 材质参数约定:人物用 simple_shader + 0(参照 900091);特效用 soft_particle_modulate + 6000108(参照 900101)。
- 图标尺寸:英雄头像 900115 是 512;四个技能图标 900111 到 900114 是 256。
### (七)贴图格式小知识
- DDS 是骑砍用的贴图格式,常见压缩格式有 DXT1(无透明)、DXT1A(1 位透明)、DXT3、DXT5(带透明度通道);本工具转换与替换时都支持。
- BLP 是魔兽的贴图格式(BLP1 / BLP2 都能读),可以直接拿来用,工具自动转成 DDS;「贴图 / 预览修正」后的转换默认「完整缩放、不裁切」,按原图尺寸转(向上补到 4 的倍数),质量最好。
- 半透明像素(alpha 在 8 到 127 之间)在 DXT3 / DXT5 里是真正会画出来的,涉及透明通道的贴图选 DXT3 / DXT5;纯不透明选 DXT1 最省。
## 八、常见问题
- 双击没反应 / 一闪而过:多半在放开屏动画,等几秒或点一下画面;还不行就用「启动工具.bat」启动,它会多给一些提示。
- ① 页提示「这里没有 scripts.txt / exrolectrl.txt」:目录选错了。mod 目录要选到含 scripts.txt 的那一层;人物补丁目录要选到含 exrolectrl.txt 的那一层。
- ② 页看不到模型 / 一片黑:模型没载入(点「从补丁目录加载」或「浏览…」);或一块网格都没勾(点「全选」);或贴图没找到(把贴图放进补丁的 Textures 文件夹)。
- 预览很卡:画质切「流畅」,勾上「播放时自动切到流畅」;还卡就把窗口缩小一点(画布越大越吃性能)。
- ③ / ④ 页显示「找不到脚本段」:这一段在你选的这份文件里不存在,先确认 ① 页目录选对。
- 装完补丁进游戏没变化:检查 ① 页两个目录、「一键加装补丁」是不是真的点了(扫描不会装)、补丁里有没有 exrolectrl.txt、游戏读的是不是这个 mod 目录。
- 改完参数没生效:只改了界面没点「应用」;点「应用技能配置」或对应的应用按钮,确认弹窗里显示的内容。
- 把补丁换到别的电脑 / 目录后,看到的位置不对:工具记的是上一次的路径,重新在 ① 页选一遍目录即可。
关于本工具
- 本工具由古华夏掌管骑砍战团MOD制作的神killyouready制作。
- 想进一步交流的可加骑砍魔兽 mod 的 QQ 群:759523711。
- 工具为免安装单文件版,对外分享时只发一个 exe 即可;使用中遇到问题,欢迎带着截图和目录情况到群里反馈。 |
|