重制版SCR不再使用 patch_rt.mpq底层是 CASC 包直接替换 patch_rt.mpq 无效让大和能一次攻击发射三次以让大和能攻击多个敌人像星际2那样为例弃用CASC 不能直接写入修改这是底层架构决定的不是工具问题CASCView/CASCExplorer只能提取导出文件不能直接修改、打包回写进 CASC 容器没有成熟的写入工具可以把改好的units.dat/weapons.dat/iscript.bin塞回游戏本体 CASC 存档里。但是可以实现类似效果“全局生效、不用每次开 Samase 加载 mod」的替代方案CASC 本地文件劫持不是修改 CASC 容器”一、准备工具CASCExplorer从重制版 CASC 导出原版units.dat、weapons.dat、iscript.binPyDAT2.7编辑units.dat/weapons.datPyICEv1.2.1iscript.bin 脚本编辑器编译 iscript安装 PyDAT、PyICE作者poiuy_qwert原版 PyMS包含 PyDAT、PyICE、PyMPQ 等全套 BW 修改工具https://github.com/poiuyqwert/PyMS点击选择Download ZIP把整个项目源码下载到本地硬盘。把下载的PyMS-master.zip解压到纯英文无空格路径*我的路径安装 Python 2.7.1232 位下载地址https://www.python.org/ftp/python/2.7.12/python-2.7.12.msi*安装时勾选Add python.exe to Path添加到系统 PATH 环境变量*推荐安装路径C:\Python27除特别说明外全部next找到列表里的Add python.exe to Path点击它前面那个带红色叉号的图标在弹出菜单选择Will be installed on local hard driveNext验证 Python2.7 是否正常按下Win R输入cmd回车打开命令提示符python --version成功安装 Pillow 依赖库继续在当前 cmd 窗口输入下面命令回车执行python -m pip install pillow出现错误C:\Users\glsmaset PYTHONIOENCODINGutf-8 C:\Users\glsmaset PIP_NO_CACHE_DIR1 C:\Users\glsmapython -m pip install pillow4.3.0 Exception: Traceback (most recent call last): File C:\Python27\lib\site-packages\pip\basecommand.py, line 209, in main status self.run(options, args) File C:\Python27\lib\site-packages\pip\commands\install.py, line 249, in run with self._build_session(options) as session: File C:\Python27\lib\site-packages\pip\basecommand.py, line 69, in _build_session if options.cache_dir else None File C:\Python27\lib\ntpath.py, line 65, in join result_drive, result_path splitdrive(path) File C:\Python27\lib\ntpath.py, line 115, in splitdrive if len(p) 1: TypeError: object of type int has no len() Traceback (most recent call last): File C:\Python27\lib\runpy.py, line 174, inrun_module_as_main main, fname, loader, pkg_name) File C:\Python27\lib\runpy.py, line 72, inrun_code exec code in run_globals File C:\Python27\lib\site-packages\pip_main.py, line 19, in sys.exit(pip.main()) File C:\Python27\lib\site-packages\pip_init.py, line 217, in main return command.main(cmd_args) File C:\Python27\lib\site-packages\pip\basecommand.py, line 245, in main timeoutmin(5, options.timeout)) as session: File C:\Python27\lib\site-packages\pip\basecommand.py, line 69, in _build_session if options.cache_dir else None File C:\Python27\lib\ntpath.py, line 65, in join result_drive, result_path splitdrive(path) File C:\Python27\lib\ntpath.py, line 115, in splitdrive if len(p) 1: TypeError: object of type int has no len()结论Python2.7 自带的 pip 版本太老存在底层 bug继续硬扛 pip 安装 Pillow 会持续报错。一工具下载CASCExplorer用于提取游戏资源DatEditdat 编辑器SCMDraft2地图 iscript 脚本编辑器ICEICE XPMPQ Editor官网下载页面 http://www.zezula.net/en/mpq/download.html打开页面后分 32 位 / 64 位版本一般选64-bit MPQ Editor。 下载的是 zip 压缩包解压就能直接运行不需要安装。语言自选笔者选的Chinese在 D 盘SC_MOD文件夹里面新建文件夹tools再在 tools 里新建MPQEditor解压到D:\SC_MOD\tools\MPQEditorCASCExplorer 下载困难我们直接用社区已经提取好的原版文件省去读取游戏 CASC 资源包这一步完全不影响 MOD 制作。需要的三个文件arr/units.dat arr/weapons.dat scripts/iscript.binCascViewCASCExplorer 的替代下载地址http://www.zezula.net/en/casc/main.html直接的下载链接http://www.zezula.net/download/cascview_en.zip解压cascview_en.zip放到无中文路径启动此应用点右下角取消关掉 CascView Options 弹窗点左上角黄色文件夹图标Open Storage在弹出窗口里选中你星际重制版目录下的Data 文件夹不是 StarCraft.exe是 Data 文件夹点确定加载。图为成功加载双击打开arr文件夹在里面找到units.dat weapons.dat选中这两个文件 → 右键 → Extract保持所有选项默认只改输出路径。导出目标文件夹选D:\SC_MOD\arr提前建好这个文件夹提取 scripts 里的 iscript.bin双击打开scripts文件夹找到iscript.bin右键 → Extract导出到D:\SC_MOD\scripts二、新建MOD 工作目录路径不要中文提取完成后文件夹结构图不含tools实际有三、DatEdit 修改 weapons.dat大和与武器属性打开 DatEdit → File → Open →D:\SC_MOD\arr\weapons.dat使用前备份要打开文件防止保存损坏打开文件后点击左侧树显示具体数据ATS Laser Battery (Normal) Battlecruiser对地武器GroundATA Laser Battery (Normal) Battlecruiser对空武器Air修改后保存这里只能修改数据四ICE-cc打开大和 iscript动画逻辑*例一次射三发子弹ICE Iscript Compiler Editor是星际争霸 1 专用的iscript.bin 可视化编辑器专门修改单位动画脚本 iscript.bin。也就是现在要改大和三连发射击的工具。IceXP 使用注意事项1.解压路径不要有中文放在纯英文目录2.右键ICEXp.exe→ 属性 → 兼容性勾选Windows XP (Service Pack3)管理员运行3.加载 iscript 之前先备份原版 iscript.bin防止保存损坏。有概率损坏*重制版无法使用IceXPIceCC使用及其注意事项IceCC 不读 MPQ只对单独的 iscript.bin 文件做反编译 / 编译完美适配重制版不会损坏文件。打开 IceCC加载前面提取出来的iscript.bin图形界面加载提取好的iscript.bin点Open:右边的Browse...选中提前从重制版 patch_rt.mpq 提取出来的iscript.bin*原版 iscript.bin 永远不要直接覆盖每次编译输出用新名字。这里用了新名字iscriptt.bin找到12 TerranBattlecruiser直接点击这一行文字打上勾选标记点击右下角Decompile按钮开始反编译。 等待执行完成会生成iscriptt.bin对应的 is 源码文件。反编译完成后点Open in Editor记事本打开源码。原代码BattlecruiserGndAttkInit: imgol 446 0 0 # BCLaserFireOverlay (thingy\elbBat.grp) goto BattlecruiserLocal00 BattlecruiserLocal00: wait 1 attackwith 1 gotorepeatattk goto BattlecruiserGndAttkToIdle替换成BattlecruiserGndAttkInit: imgol 446 0 0 # BCLaserFireOverlay 第1发激光 attackwith 1 wait 4 imgol 446 0 0 # BCLaserFireOverlay 第2发激光 attackwith 1 wait 4 imgol 446 0 0 # BCLaserFireOverlay 第3发激光 attackwith 1 wait 8 gotorepeatattk goto BattlecruiserGndAttkToIdle*缩进用 Tab和原文对齐防止编译报错保存这个记事本文件切回 IceCCUI切换到顶部【Compiler】标签页编译页面*先确认Merge with default iscript.bin 保持勾选 ✔*只导入修改的大和脚本其余所有单位的 iscript 脚本都从原版默认 iscript 合并进来不然编译出来只有大和其他单位全部失效点Add按钮 浏览选中你刚才修改、保存好的.is源码文件就是刚才记事本编辑的那个Save to右侧点 Browse设置输出文件 命名iscript_mod.bin选好保存目录。*可以覆盖 iscriptt.bin 吗*可以覆盖iscriptt.bin但不推荐。iscriptt.bin是你反编译出来的源码文件.is不是最终编译后的 iscript.bin 二进制文件。如果在这里 Save to 填iscriptt.bin编译出来的二进制 iscript 会直接覆盖掉源码文本源码就丢失了后续想二次修改就没地方改了。*iscript.bin 原版备份不动*iscriptt.bin 你的源码文本保留后续改脚本直接打开这个*iscript_mod.bin 编译出来的成品二进制用来打包进 MPQ保存之后回到 Compiler 界面点击出现问题添加进 Source Files 的文件选错了把iscriptt.bin这是二进制 bin 文件当成源码加进去了。 IceCC Compiler 需要加载的是文本源码文件.is记事本写的脚本不能加载 bin 二进制文件。因此回到笔记本另存为.is回到IceCC Compiler 页面Remove 删掉列表里旧的文件Add选中刚保存好的iscriptt.isMerge with default iscript.bin 保持勾选Save to 输出D:\SC_MOD\scripts\iscriptt_mod.bin这是我的地址点 Compile 编译五游玩改动的设置处理成品 iscript到D:\SC_MOD\scripts\找到iscriptt_mod.bin复制一份重命名为iscript.bin这是放进 MPQ 里的文件MPQ 打包步骤MPQ Editor进入x64文件夹找到 MPQEditor.exe双击打开点左上角蓝色的新建 MPQ按钮,新建一个 mpq 文件点第一行输入框右边的...浏览按钮→定位到D:\SC_MOD\文件夹→文件名填写bc_mod.mpq自己命名保存→【下一页 (N)】兼容性改为星际争霸保存→【下一页 (N)】效果图创建 (attributes) 文件否这个要改成【是】不然重制版可能加载失败但是这个界面无法修改此选项所以点完成建好 mpq 之后手动添加 attributes 文件。顶部工具栏点确定现在看主界面文件列表里只有(listfile 文件)还没出现 (attributes)。原因这个窗口只是开启 attributes 支持并不会立刻生成文件要等你往 MPQ 里添加第一个文件之后才会自动写入。做文件夹在右侧空白区域右键 →新建文件夹名称输入scripts回车确认。在列表里双击打开刚建好的scripts文件夹。点顶部绿色加号【添加文件】选中上一步改完名后的iscript.bin添加完成后顶部菜单【操作】会自动完成保存验证关闭当前文件后再点顶部【打开 MPQ】重新打开D:\SC_MOD\bc_mod.mpq图为阶段成功效果图arr|——units.dat|——weapons.dat如法炮制图为成功效果图弃用Firegraft使用Firegraft 本身可以直接加载单个文件补丁不用新建 mpq更省事*不能用于星际重制版进游戏游玩替换.mpq原版行重置版不行打开星际重制版游戏根目录找到原文件patch_rt.mpq把你打包好的bc_mod.mpq复制到游戏目录重命名为patch_rt.mpq直接覆盖原文件直接运行StarCraft.exe启动游戏*记得备份原文件日后好恢复星际重制版 1.23 版本底层改成 CASC 打包不再读取patch_rt.mpq所以你在文件夹里找不到这个文件直接替换 patch_rt 的方法失效MPQDraft挂载失败替代方案MPQDraft用来临时挂载bc_mod.mpq打开MPQDraft点LOAD MPQ PATCH点右下角Browse按钮手动浏览找到星际重制版的 .exe点右下角Browse for MPQs找到打包好的bc_mod.mpq选中导入。*列表里越靠上的 MPQ 优先级越高想玩的.mpq 要放在最顶部这样里面的scripts/iscript.bin才会优先覆盖游戏原版文件。导入完成选中它点下一页 (N)直接点右下角完成。 插件这一页不需要添加任何插件保持空白就够用MPQ 挂载功能不需要额外插件。MPQDraft 检测到星际重制版CASC 架构不再使用 MPQ 资源系统MPQDraft 是很老的工具只支持原版星际 11.16 及更早使用 MPQ 打包不支持重制版所以直接报错无法挂载。CASC 补丁失败重制版资源都在Data文件夹下的 CASC 存档里。 要用CascView工具导出 CASC 里的原始文件把编译好的iscript.bin替换进去然后打包成本地 CASC 补丁。SAMASE 加载器失败下载SAMASE重制版底层 CASC 是按哈希存储文件不是路径不能直接用 CascView 替换文件。SAMASE 是专门给星际重制版做的内存级 Mod 注入工具可以直接加载本地松散文件优先读取scripts/iscript.bin不需要修改游戏 Data 目录里的 CASC 原始数据单机断网可用完美适配已经编译好的iscript.bin主帖地址内含 SAMASE 压缩包附件Samase (Topic)Github 镜像仓库Neiv 开发源 sezam/bin at main · BoneHorror/sezam · GitHub点samase64.exe进入文件预览页右边点Download直接下载这个 exe复制samase64.exe放到StarCraft\x86_64\文件夹星际争霸游戏的文件夹和游戏本体StarCraft.exe放在一起。创建 mod 资源文件夹进入StarCraft\x86_64\新建文件夹名字必须小写mymod名称自取进入mymod再新建子文件夹名字小写scripts把编译好的iscript.bin放进scripts文件夹里。图为目录结构创建启动批处理文件在x86_64文件夹空白处右键 → 新建文本文档打开粘贴下面代码echo off samase64.exe mymod pause把新建文本文档.txt修改为start_mod.bat开始游戏双击start_mod.bat开始游戏报错原因samase64 默认会读取注册表来找星际重制版的安装路径但单机游戏是手动拷贝的绿色版不是战网安装没有写入注册表所以找不到游戏。修复方案直接在 bat 里指定 StarCraft.exe 完整路径失败修复方案给星际写入注册表新建文本粘贴下面注册表代码保存为sc_reg.reg双击导入注册表。*.reg文件必须用ANSI 编码保存如果用 UTF-8中文导入注册表就会乱码Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Blizzard Entertainment\StarCraft] InstallPathC:\\Users\\glsma\\Desktop\\GAME\\Starr\\StarCraft\\x86_64\\校验WinR 输入regedit打开注册表手动展开HKEY_LOCAL_MACHINE\SOFTWARE\Blizzard Entertainment\StarCraft看 InstallPath 的值是否正确。注意路径是否有乱码无乱码再运行batbat卡死了没招了路全走不通先暂时搁置一段时间吧