远帆97
远帆97
关注数: 29
粉丝数: 292
发帖数: 4,492
关注贴吧数: 16
脚本编译器v0.9.8已更新 v0.9.8修改内容: 修复了预设变量(intv)赋值可能出错的问题。 修复了异步调用函数类型推断可能出错的问题。 新增【全局变量支持】:可在函数外定义全局变量,不必再管理全局变量编号。各 so 文件的全局变量互不冲突。 新增了【跨 so 异步调用函数】的语法:可用 extern 关键字声明外部函数(如在 system 脚本中调用 magic 脚本的 InitializeBattle() 。) 少许调整了对 float * 型进行内存操作的逻辑。 经B站 @左谷公 大神证实,群英系列的脚本字节码格式完全相同,故本编译器改名为【三国 Smart Script 编译器】。 理论上,本编译器(以及注册汇编器)可以支持群英任意代数的脚本编译。笔者没有修改群英其它代的经验;希望本编译器能为群英其它代的修改提供一些帮助。 汇编器更新:原未命名指令和含义不清的指令,均使用新的助记符。原助记符仍保留向下兼容。 目录下新增【反汇编器程序】,可用于将 so 文件反汇编为汇编代码文件。 本次更新基于于B站 @左谷公 大神的宝贵工作;向您致以敬意。
【修改】修复华斩倒飞问题 一楼
【修改】SHP文件的修改和偏移量的设置:基于SangoTool的教程 一楼
【适配正版】三国群英传2 1.05+ 非官方Steam更新档 一楼
【修改基础】PAK文件的解包、打包和INI修改 一楼
【恢复】群英2,PAK中ini文件的详细注释(作者:邯郸_最美) 一楼
【重新发布】三国群英传2 修正版1.05+ 一楼祭天
关于多个so文件的同名函数会引起冲突的问题 反编译system脚本发现,system脚本里有一个EnterBattle函数会asynccall一个叫InitializeBattle的函数,查了半天查不到这个函数 结果一想不对,查magic脚本,果然,这个InitializeBattle函数在magic里 结论是,多个so文件同名函数会冲突原来不是个BUG,是个特性,设计上就可以跨so调用函数
修正版1.05+测试(2020.8.23) 本次测试更新了以下附加内容: 1. 大地图随时存档; 2. 战场右键敌方头像显示武将属性; 3. 按H在征兵/招降/使用物品画面显示武将属性。 惯例,先测试一段时间。没有问题的话,新制作的1.05+将替换原来的版本。
修正版1.05+测试 如题。 本次从蝈蝈的1.05免CD出发重新制作了修正版EXE。因为调整内容比较多,所以暂时先非正式发布测试一下,看看有没有问题。 本次调整内容包括: (1) 支持“设定选项”中调节音乐音量。注意:“音效音量”实际上是主音量,调节“音效音量”会影响音乐音量。目前还没有找到单独调节音效音量的办法。 (2) 原 11. 修复大地图地形不随季节变化的BUG 已移入附加内容;目前大地图地形在四个季节中保持不变。 (3) INI武将顺序改回了原版设定。因此,原 24. 修复血缘武将的读取问题 已移入附加内容。该附加内容通过修改EXE使得血缘武将可以被正确读取。 (4) “血缘补全”补丁经过重新制作,仍遵照了原版INI顺序。因此,需要打上“修复血缘武将的读取问题”的附加内容补丁才会完全生效。目前,存在三档血缘:本体为(a)完全原汁原味;本体基础上使用“修复血缘武将的读取问题”得到(b)修复原版失效的血缘;在此基础上进一步使用“修复并补全原版人物之间的真实血缘”(即原“血缘补全”)得到(c)血缘按照历史和演义重新设置。 (5) 为避免原1.05+存档出现问题,经考虑后,决定本体的书籍智力仍保留原版显示效果,即7-10-13-17-20。需要原汁原味(13-15-17-18-20)设定的,请使用附加内容自行调整。 (6) 新增附加内容:锁定窗口化时的长宽比。之前估计有误,目前的代码空间并不足以支持根据用户拖动的长宽比动态调整窗口大小;因此,目前窗口大小的锁定总是以长边为准,请按住左/右边界往左/右拖动以调整窗口大小。按住上/下边界往上/下拖动将无效。 (7) 新增附加内容:修复LOYALKING字段的效力。 (8) 更改了所有补丁的显示逻辑。目前,所有带文字提示的补丁,均以 英文 / GBK简体 / Big5繁体 的格式进行说明。若看到所有内容均是乱码,请参考英文说明,或在命令行下使用chcp 936调整操作系统代码页为GBK。 (9) 恢复主程序标题为"SANGO II"。
【测试】锁定窗口化时的长宽比 如题。 试出了一个结果,但感觉心底有点虚,毕竟Windows编程我是门外汉,全靠谷歌和百度。 同时,因为目标函数的功能太关键,有一些担心在已有的其它修改版上的兼容性。 希望各个版本的朋友都帮忙测试一下有没有问题。
【脚本基础教程】第十章:特殊武将技和深入话题 一楼
【脚本基础教程】第九章(下):士兵技(骑兵冲锋)
【脚本基础教程】第九章(上):必杀技(大喝)
【脚本基础教程】第八章:数组(武将技:升天)
求证:原版有见过生死门吸将吗? 如题。 之前试图“修复”过一次。这次反汇编完成后,重新看生死门武将技的代码,发现原版就有对目标是否为敌方主将的明确判断,似乎不可能有问题。修改版使用EXE组合武将技/触发武将技式必杀技,可能导致吸将,因为在武将技施放过程中突然触发必杀技有可能导致预设变量被重置,而原版生死门没有对目标是否为我方主将的判断。但原版似乎不可能出现这种情况。 因此向各位求证一下。
【脚本基础教程】第七章:物理引擎(地火 / 地焰涌 / 地焰星燃)
【脚本基础教程】第六章:异步与回调(武将技:毒箭)
【脚本基础教程】第五章:摄像机与标记(武将技:前后伏兵)
【脚本基础教程】第四章:图形与战场(武将技:大喝) 一楼
【脚本基础教程】你好,世界:视频演示
【脚本基础教程】第一至三章:你好,世界 & 基础语法 & 控制流程 一楼
【有生之年】三国2脚本基础教程(目录贴) 一楼祭天
【有生之年】magic.so向C风格代码的完整反编译结果 如题。 总算是把goto都去掉了。
三国2脚本伪代码编译器v0.9.5已发布 如题。 可到我的网盘下载,或见楼下。
调查一下:三国2脚本教程是否应假定读者有编程基础 我现在在写三国2脚本的教程。 目前有一些犹豫,是否要保留较为详细的、有关基础编程内容的说明,比如变量定义、函数定义、if结构、for循环之类的内容。因为这部分已经写完,但是读了一遍之后,感觉有点不上不下,对编程新手来说可能有点太快,而对有编程基础的读者来说又有点废话。 换而言之就是,编写教程时,是否应假定读者有编程基础。当然,不可能写成编程入门教程,只是快速地把要点过一遍。 在此做个调查,希望大家给点意见。
修正版1.05+已更新(望手机模拟器玩家多多反馈) 本次更新了以下内容: 1. 实装使用S1-S9 进行变速。在游戏中任意时刻,键盘输入SX (X为具体数字)即可调整为X倍速。 2. 新增附加内容(可选):大地图时间冻结。打补丁后,在大地图上按P会使得部队停止运动,时间不走,可以出兵和调整部署;按O恢复时间流逝。 3. 新增附加内容(可选):修复LOYALKING字段的效力。 以及下面一项调整: 4. 由于接到许多吧友反馈模拟器上出现的弹出现象,PAK包内脚本目前全面取消内存操作。其中,“修复多人成年时显示错误的问题”采用了新的修改方法,system脚本文件移入PAK包内(代价是,目前一次内政同时成年人数不能超过17人);PAK包内的magic脚本不再支持防止生死门吸将的功能,相关功能保留在PAK包外的脚本文件中,并且总是使用新的脚本内存存取方式。 由于手头没有测试环境,希望各位安卓模拟器玩家多多反馈。如果模拟器运行时生死门仍出现弹出,请先删除游戏目录下的Script文件夹,以确保执行的是PAK包内的脚本。 修改内容说明同步更新。下载地址见原帖,或如下。
【测试】大地图时间暂停 一楼喂熊
【修改】修复原版无法变速的BUG 注:非原创 拖了很久,总算有空余时间想起来看看这个怎么改。出人意料地简单。 最初作者可能已不可考。我印象中@一马双跨到西凉 曾经明确提过怎么改,@醉听西风的工具代码里应该也有,不过没有仔细查。再往前,隐约有印象注册似乎提过,但是已经无法记清了。 原版无法变速的原因其实还挺……蠢的。变速的作弊代码设置为SPEED## ,其中## 是两位数的速度倍数值。然而,Cheat_SetSpeed(405002)函数中,却从输入作弊码的第2位开始读取数字,结果自然是读到"PEED##",读不出来了。 解决方案1:UE打开EXE,843C8和843D0两处改为53 23 00 00 00 00 00 00。其实就是你想要的快捷键,这里设置为S# ,比如输入S4就是4倍速。 解决方案2:0440B地址改为05。这样会使得EXE从作弊码的第6位开始读取数字。变速快捷键维持SPEEDXX不变,例如SPEED04就是4倍速。 只改一处即可。不用DALL或KKON也可生效。 计划之后把这个应用到1.05+上。心急的朋友可以自行修改。
修正版1.05+已更新:BUG修复 感谢@roberts99 前辈的提醒(抱歉拖了很久),原修复项 “10. 修复唯一物品重开游戏时无法搜到” 在修复时不慎引入一项新BUG,ini文件预设的武将自带唯一物品在开局后仍可搜到。这是由于PreparePeriod(42E233)函数中追加初始化唯一物品字段时,误将其放在了初始化武将自带唯一物品部分的后面。已经调整函数调用顺序,该BUG已修复。 可到原贴地址下载,或见楼下。修改内容说明中的对应补丁及其说明同步更新。
现在wapp也访问不了老贴了? RT
【迟来的BUG修复】三国2脚本伪代码编译器v0.9.4已更新 实在是抱歉,刚刚才发现SetGlobal指令会被错误地编译为INST_53(实际应为INST_52),这会导致所有全局变量的设置失效或崩溃。不得已发布一个新的版本号来修复此BUG。 还望各位谅解。 可到原帖下载。原帖见https://tieba.baidu.com/p/5528159286
三国2脚本伪代码编译器v0.9.3已更新 如题。可到原贴地址下载。 该文件可以编译magic_with_goto.cpp,不过限于精力,生成的magic.so文件还没放群2里跑过。有兴趣的朋友可以测试一下。 v0.9.3修改内容: 修复了内存溢出的BUG。 修复了switch语句末尾在没有default case时,无法跳转至switch块末尾的BUG。 修复了用户自定义定义标签无法正确输出的BUG。 修改了堆栈增长时的处理。现在,若一条语句结束处有圌意外的堆栈增长,将会把多余堆栈内容弹栈。 屏圌蔽了向未定义标签跳转时抛出的警告;请在使用goto语句时自行判断安全性。 调整了默认输出文件名。现在,默认输出文件名为与源文件同名的ASΜ文件,而非ss.ASΜ。 调整了系统输出标签格式。现在,只有当config.ini中 use_timed_label = 1 时,才会输出带时间戳的标签,且为防止标签过长,时间戳以从1970年1月1日0:00:00开始计算的总分钟数为单位,而非之前的秒数。 增加了向控圌制台的输出信息,显示编译器名称、编译器版本号和编译是否完成。 增加了-auto (可写作-a)指令,会调用同目录下的sg2ASΜ.exe,一步到位生成和输出ASΜ文件同名的.so文件。如果同名.so文件存在,该文件将被替换。生成的.lst文件会被圌删除。例如:ss magic_with_goto.cpp -a 会生成 magic_with_goto.ASΜ 和 magic_with_goto.so 两个文件。
【临时】magic.so向C风格代码的反编译结果(未结构化) 如题。 这是一个临时结果:保留所有goto语句,暂未恢复if, if-else, while, switch等分支结构。 注意:可能由于编译器现存的内存溢出问题,此文件无法直接编译。如需使用,请将需要的函数替换magic.cpp中对应函数。我正在修bug,C++的内存管理实在是太容易出问题了…… 编译时,编译器会甩出一堆标签未定义的警告,可以无视。堆栈增长警告一般在未保存函数返回值时发生,酌情处理。
【丢图跑】现在在做的事情 注:这个是八门金锁
修正版1.05+附加内容已更新 新增两项附加内容(可选,未包含在本体中): 1. 战后有人投降时,败军不再往攻方城池逃窜; 2. 开局时,电脑不再自动设置城池内智力最高者为军师。(这样就和原版1.0相同了。) 更新一项附加内容: 繁体字体包中,包括了更换菜单字体为繁体。 (注:此项功能仍有瑕疵,主菜单的四个按钮,当鼠标移到上面时有显示上的瑕疵。彻底修改需动EXE,暂时懒了,反正也不是非常有碍观瞻。) 有需要以上内容的朋友可以到原地址下载新的附加内容。 另:感谢吧主@剑心-子龙 提醒,为照顾无法打开7z格式压缩包的朋友,各压缩包重新以zip格式打包。缺点是压缩包大小有明显增大,不过大多数时候不是个大问题。
【水】吐槽速攻
统计:血缘修复 一楼祭天
修正版1.05+修改内容的具体说明 一楼祭天
【正式发布】三国群英传2 修正版1.05+ 一楼祭天
试试水:显示竖排技能等级(勿精,之后会和其他补丁一齐发布) 一楼给西凉大神
修正版1.05+进度说明 一楼
请教:关于LoyalKing字段的效力 @G仔童鞋 我看到新主程序EXE中提到修复LoyalKing字段的读取的同时,还提到了搜索时非LoyalKing君主也可搜索到该武将。请教一下大神,涉及LoyalKing的函数只有 00426C69(SearchGeneral_0)和 00404344(DoZhaoXiang)么?如果是的话我就直接把那两个je改成jmp了事了……
【发布】三国2脚本伪代码编译器 一楼惯例王司徒。 请吧主撤销原帖精品。
有往SYSCALL列表加新函数(改动420D52函数)的先例么? 看到最后有0x10个字节,想搞点事情……
1
下一页