- 好友
- 12
- 在线时间
- 486 小时
- 最后登录
- 2026-10-19
子爵[版主]
  
- UID
- 2893127
- 第纳尔
- 14957
- 精华
- 0
- 互助
- 97
- 荣誉
- 21
- 贡献
- 325
- 魅力
- 1415
- 注册时间
- 2017-11-5
 鲜花( 445)  鸡蛋( 0)
|
## 五、注意事项(重要,操作前过一遍)
1. 目录先选对再动手:要选到含 scripts.txt 的那一层;目录选错,改的就是别的文件。工具不会乱猜目录:路径丢了、不合格,它会留空并提示你重选。
2. 界面上改了东西,都要点对应的「写入 / 应用」按钮才会真正进文件;只改界面不点按钮,文件不会变。
3. 工具会改的文件就这几类:
- scripts.txt:你点「写入 scripts.txt」时;导入模型时(「同时改 csanim 的 slot 301-308」勾着时);
- item_kinds1.txt 与 languages\cns、languages\cnt 下的 item_kinds.csv:你改枪名时;
- Textures\*.dds:你在 ③ 页点「转换并覆盖 mod 贴图」、或导入模型转贴图时;
- Resource\*.brf:只有你在 ② 页点「导入模型替换…」并写入时。
4. 写之前一律自动备份,备份都在 mod 目录下的 .csgoedit_backup\ 里(文件名带时间戳,如 scripts.txt.bak_20260920_171500)。出问题就把对应文件改回原名覆盖回去即可。注意这个文件夹会随每次写入累积,请定期清理。
5. 不要同时开两个工具窗口改同一份文件,会互相盖掉。
6. 导入模型会改 brf 素材,写入前工具会备份、写完会核对;还是建议自己把要动的 brf 先另存一份。
7. 导入 MDL 时体积看两个地方:动作映射里每段「最多 N 帧」、部件里的「只留枪身」;一把全烘的 AK 能到 100 MB 量级,别全烘。单次写入体积超过 60 MB 时工具会提醒你。
8. 有参考模型(propskilltemp)时不要手动改倍率(默认 1.0 就是对的,强改反而会把大小弄错)。
9. 预览卡就把画质切「流畅」,或保持「播放时自动切到流畅」勾着;「导出图片…」走的还是精细档,不受影响。
10. 别拿别的 propskill 数字系列当校准标准(那些是被旧编辑器改乱过的);参考只认 propskilltemp。
11. ④ 页的三道闸(标红 / 拦 ID / 强制往返)是保护你的,被拦下就按提示改,别绕过。
12. 导出物(反编译代码 / 自检报告 / 预览 PNG / 枪模清单)存哪都行,工具不会去动那些文件。
## 六、重点代码知识
这一节讲「看懂脚本、改对参数」要用的代码知识;只想用基本功能的读者可以跳过。
### (一)骑砍脚本 txt 的「数字流」长什么样
mod 里的 scripts.txt、triggers.txt 这些是编译后的数字流。以脚本段为例,形状是:第一行是段名(名字 -1),第二行是一整行数字,第三行是下一段的段名。第二行里第一组数字是「指令条数」,后面全是指令序列。
反编译就是把每条指令的数字换成可读名字,写成标准写法,每行一条、以逗号结尾。例如:
510 3 reg0 102 740 → (scene_prop_set_slot, reg0, 102, 740),
几个书写要点:
- 行的形状固定是「(操作名, 参数1, 参数2, …),」,最外层括号、逗号、行尾逗号都不能少;
- 操作名前面可以带 neg|(这一条取反)或 this_or_next|(与下一条二选一);
- 参数可以是数字、寄存器 reg0、局部变量 :var_0、全局变量 $变量名、双引号包起来的 ID 名字;
- ID 名字是从 mod 自己的 txt 里还原出来的:item_kinds1.txt 对应 itm_ 前缀、troops.txt 对应 trp_、scripts.txt 对应 script_ 等。名字还原不出来的(比如同名多条的记录),显示成 str(171) 这类序号形式。
### (二)枪模的 slot 参数表(② 页读写的就是这些)
四个动作的区间和时长,由 csanim0 / csanim1 / csanim2 三段脚本写进枪模的 slot(csanim3 保留、暂未启用),再由核心控制脚本 sj5 读出并驱动顶点动画:
- 301 / 302:巡检待机 起 / 止 帧时刻;
- 303 / 304:开枪 起 / 止;
- 305 / 306:换弹 起 / 止;
- 307 / 308:换枪 起 / 止;
- 309:巡检待机 播放时长(ms);
- 310:开枪 播放时长(ms);
- 311:换弹 播放时长(ms);
- 312:换枪 播放时长(ms);
- 313:0 = 单发枪 / 1 = 连发枪;
- 711(agent slot):默认 2,四个分支末尾恒定写 2,不用改。
刻度要记住:帧时刻 = 帧序号 × 10,从 0 开始。比如 293 帧的枪模,帧时刻范围是 0 到 2920。「待机 0–500」这类填法的意思就是「从第 0 帧播到第 50 帧」。
### (三)csanim 系列与 sj5
- csanim0:CSGO 系列(16 个分支);
- csanim1:CS 二战系列(13 个分支);
- csanim2:CS 恶搞系列(6 个分支);
- csanim3:保留(暂未启用);
- sj5:顶点动画控制核心,四个动作的变形指令都在这里。
### (四)顶点动画用的几个 opcode(在 sj5 里能看到)
- 2610:跳到某个帧时刻(不播放);
- 2611:从起帧时刻播到止帧时刻(动作区间);
- 2612:在区间内循环播放;
- 2616:取当前帧时刻(用来判断现在播到哪了);
- 2617:换某个子网格的贴图;
- 510 scene_prop_set_slot:写场景物的 slot——上面 301–313 的参数就是它写进去的。
### (五)csanim 脚本反编译出来长什么样
以 csanim0 为例(每把枪一个分支,靠 item 名定位):
(store_script_param, ":var_0", 1), ← 枪模物品 id
(store_script_param, ":var_1", 2), ← agent
(try_begin),
(eq, ":var_0", "itm_propskill0"), ← 分支锚点:这是哪把枪
(scene_prop_set_slot, reg0, 301, 1500), ← 该分支的 slot 赋值(301..313 共 13 条)
...
(agent_set_slot, ":var_1", 711, 2),
(else_try),
(eq, ":var_0", "itm_propskill1"),
...
(try_end),
一句话理解:csanim 系列把「每把枪的动作区间和时长」写进 slot,sj5 拿着这些参数驱动枪模的顶点动画播放。② 页改的就是上面 (scene_prop_set_slot, reg0, 301, 1500) 这一批数值;写回时只动这些数值,别的字节一个都不碰。 |
|