忆三国游戏网整理发布@star175制作的曹操传6.3版新引擎和形象指定器,此版本改动和说明具体查看下方详细说明。
曹操传6.3版新引擎说明
一、 专属一览和套装一览
新增一个对话框用来显示专属一览和套装一览,通过情报菜单里增加的新菜单项装备情报来查看。
道具对话框也增加了专属与套装的说明
这就是个纯粹的显示界面,并不会对数据的合理性进行判断,比如你可以把套装的三件装备全设为武器,那么在游戏里是无法正常的这样装备,但也依然会显示出来,另外如果数据超出了装备的实际编号会闪退,所以在写剧本的时候应注意避免这种情况。
此外,6.2发补贴介绍过用 72指令来设置专属和套装的方法,如果设置好了,以后又想取消,那么要再写一个一样的指令,并把装备编号,人物DATA号,效果值这几项全部写0即可。
二、特殊效果号的进一步扩充
A:分离装备效果号和道具效果号
之前装备效果号是1A-46,59-7F,而中间的47-58为道具效果,这次对其进行了分离,分离后装备效果号和道具效果号都是从1A-7F,这么一来装备效果号又增加了18个,道具效果号则调整成从1A(即以前的47效果号调整为1A效果号,其他的依次类推)开始计算。
分离效果号还要设置一下data,用本次的形象指定器打开data或star:
武器和护具可以不动,
辅助依次点击并保存,
道具依次重新设置一下效果号和效果值(可突破255)并保存;
star.e5里的热兵器依次重新设置一下效果号,修改价值和图标,并保存。
以上几点很重要,必须先完成后才能正常运行exe,其他的配套文件用6.2的即可。
B:人物特效号扩充至8F
三、武将情报框显示人物特性
点击条目可点击弹出说明,说明使用了原版人物列传
用形象指定器打开exe,点兵种特效按钮,双击效果列表,可编辑对应条目的imsg说明
四、 新增11个特效
76 远距攻击4 要设置特效值(1 攻击2策略 3 all) 物理和策略的攻击范围增大一格,当然,部分本就很大的攻击范围再带这个没有效果,如全屏
77 策略追击 要设置特效值 进行物理攻击后追加一次策略攻击,如果无法进行策略追击则进行物理追击
78 策略先手 要设置特效值 在受到物理或策略攻击时,先手进行一次策略攻击
79 策略反击 要设置特效值 被物理攻击后用策略进行反击,如果无法进行策略反击则进行物理反击
以上三个和策略有关的特效值就是使用的策略编号,这个策略和平常用策略一样会受到天气、地形、禁咒混乱状态、MP存量等影响,因此存在放不出策略的情况,建议使用不受天气和地形影响的策略,如雷系、吸血或者各种状态类策略。
这三个效果没有7级提升但可以设置10级效果。
7A 忽视能力 要设置特效值 战斗中无视对方20%的能力
7B 能力辅助 要设置特效值 箭头左边能力的20%附加到箭头右边
7C 能力替换 要设置特效值 箭头左边能力替换到箭头右边
特效值设置方法参考:用形象指定器打开exe,点兵种特效按钮。这三个效果没有7级提升但可以设置10级效果。
47 铁索横江 不要设置特效值 周围4格的敌对方不能进行移动,但恶路移动和穿越移动免疫此效果。
48 末日审判 要设置特效值 取值1 攻击 2 策略 3 All
固定造成对方HPmax的20%*N(N是1-5之间的整数)的伤害,运气好就是秒杀,如果本次伤害低于实际伤害,则以实际伤害为准。
49 无视暴防 不要设置特效值 顾名思义,不解释
58 戮力同心 要设置特效值,效果值就是攻击次数
这个其实就是同仇敌忾的防御版,在防御阶段,友军遭到物理攻击后,如果发起攻击者也在此装备者的攻击范围内,则装备者可对其进行攻击。
五、 整形变量4032(505F00)控制4个按钮的显示状况
默认0(4个全显示)
这个是来自godtype的修改,有这种需求的人估计不多,但还是加上了,godtype是用4个变量来控制,这里是用1个,所以设置方法有些不同:
1个4位的二进制数最大为1111,从左到右依次标示4个按钮(出兵 装备 买进 卖出),0显示 1 不显示
如: 现在想把装备按钮隐藏掉,那么就应该是0100 ,把这个二进制数转为10进制就是4
因此设置4032=4就可以实现了
这种设置会一直保留,即使到下一关战前装备按钮依然不会出现,除非重新设置4032的值。
六、 78指令变量赋值的武将行动标示 调整为 杀敌数
信息传送21 为调整武将行动标示
78指令有一项设置战场行动标示的功能,但此项功能有bug,使用过的部队可能会出现倒着走路的情况,修正这个bug需要比较多的代码,因此改用信息传送来实现,而设置战场行动标示的功能调整为设置(获取)杀敌数。
信息传送的用法
数字信息必须填21
第一个数字取值0(获取行动标示)或1(设置行动标示)
第二个数字部队的战场编号
第三个数字根据第一个数字的取值,其意义也不同
当第一个数字为0(获取)时,第三个数字表示用来存放行动标示的整形变量编号(得到0未行动 、 1 已行动)
当第一个数字为1(设置)时
第三个数字 0 设置为未行动 1 设置为已行动
七、72指令开始支持格式化的整形变量
格式化文字为 *整形变量编号
还是用上面的例子,如果想改变多个部队的行动标示为已行动,那么就要写多条指令来实现
如果使用格式化的整形变量就可用一组循环指令来实现
剧本不难理解,但还是要解释一下
第一个77指令设置整形变量0= 0
79指令用来判断 整形变量0是否小于<=15
如果<=15,则执行72指令,注意这里72这里的第二个参数是 *0,表示取整形变量0的值,第一次的时候就是0,所以就把我方第一个出场武将设置为已行动
然后77指令 整形变量0+1=1,无条件跳转到 子事件设定处,进行下一轮循环,依次把我方出场武将设置为已行动,等循环全部结束后,我方出场的16(出场编号0-15)个武将全部被设置为已行动。
72指令可以认为是对原有指令的扩充,现在写了比较多,我也没有逐条进行测试,所以可能有些还不能支持格式化的整形变量,等遇到有bug再修正吧。
此外,以前79指令在进行 <= 测试时,实际是测试<,这次也修正了。
八、 修正S剧本第一回合我方阶段的事件不能立即触发的bug
这也是一个古老的bug了,放在这里的事件以前都要先随便操作一下部队才能触发,修正后可立即触发。
九、进一步完善历史情报
A 解决了WIN11中的乱码问题??
这个并非本人亲测,而是由网友代测,反馈信息表示已经正常,但是系统不同可能结果也不一样
B 在工具条上增加了历史情报按钮
C 可以对文字再次配色
之前的历史情报只能把整句设置为一种颜色,而且也仅有四种颜色可选,现在可以把一句里的部分文字或者整句重新定义为别的颜色。之前的四种颜色的区别更主要用来进行分类和筛选。
以上剧本运行后的效果如下
这里配色代码和以前的对话文字配色代码相同,其实也就是174色调色板中的颜色
十、0f指令的替代指令以及特效请求2
这个是为了配合多周目游戏进行的修改。
0f指令基本上要作4件事:获得一只铜雀、播放结局动画、展示制作群、结束游戏。
进行多周目游戏目前有2种方法
1、 一周目用0F结束后重开。
在这种情况下玩多周目就必须重开,并且要用许字将指导来得到是否全宝和铜雀数量,再利用指针变量来获取拿到的铜雀数量来判断,这种情况下,一周目培养的能力和获得的装备都会没有。而且有时只想要获取铜雀数量和是否全宝,又不想要其他的指导,这样还得用OB去改许字将指导。
所以这次增加了特效请求2,运行后仅获取铜雀数量和是否全宝
是否全宝在H4B2C08(0 不全1 齐全)
铜雀数量在H4B2C10 (数字表示获得铜雀的数量)
2、还有一种方法是不用0f指令,用剧本跳转重开游戏,这样可以保留一周目的各种数据,但不用0f指令又拿不到铜雀(不修改),为了保证游戏的完整性,所以搞了一个信息传送22来代替0F指令
特别说明一下,其实第一个数字也可以用3,表示不拿铜雀。
然后在这个指令后面加上剧本跳转指令,进行多周目游戏。
十一、在战斗窗口用方向键调整窗口大小
参考筱小白发的自定义战斗窗口大小的修改方法,不过那个还是要在环境设定里去调,用起来仍嫌不便,所以改成了用键盘方向键直接调整的方式,同时也修正了战场黑边。
十二、调整出战选人界面
这个也是来自筱小白的修改,调整后可显示30个武将,4个汉字的武将也显示正常了。
需要导出U_select.e5的第4和第5图,调整尺寸为512*296、512*128,再导入回去
话说这2个图真是又老又丑,有没有好看一点的?
十二、新增几个战场可选显示项目
e键 点击可控单位 在显示移动范围的情况下 显示所有不可控单位的行动顺序
f键 点击不可控单位在显示移动范围的情况下 显示这个单位对其敌对方势力的仇恨值(物理和策略只显示更高的)
g键 点击可控单位 用红色半透明显示此单位处于哪些敌方势力的攻击范围内(敌对方在原地或仅需移动一次就可以攻击到)
以上默认关闭,按键切换开关
十三、存取档对话框增加了一列,用来显示存档时间
这个和旧存档不兼容,所以要先把sv文件夹清空,否则闪退
以及修正一些历史bug
最后是关于扳手的修改
0040397B |. 68 69B74100 PUSH 41B769 ;兵种名称数量
00404CFA |. 68 77114000 PUSH CCZEdite.00401177 ; |特性 地址
00404D11 |. 68 86F44000 PUSH CCZEdite.0040F486 ; |特性 数量
00404D23 66:817C24 0E 80F9 CMP WORD PTR SS:[ESP+E],0F980
004084C1 . 68 88F44000 PUSH CCZEdite.0040F488 ; |特性数量
00408509 . 8D96 7AFF0400 LEA EDX,DWORD PTR DS:[ESI+4FF7A] ; |
正确获取消耗品名字
004016D8 |. 8D4D 14 LEA ECX,DWORD PTR SS:[EBP+14]
0040170B |. 3C 03 |CMP AL,3
0040170D |. 90 |NOP
0040170E |. 90 |NOP
0040170F |. 90 |NOP
00401710 |. 90 |NOP
00401711 |. 90 |NOP
00401712 |. 90 |NOP
00401713 |. 90 |NOP
00401714 |. 90 |NOP
00401715 |. 90 |NOP
00401716 |. 90 |NOP
00401717 |. 90 |NOP
00401718 |. 90 |NOP
00401719 |. 90 |NOP
0040171A |. 90 |NOP
0040171B |. 90 |NOP
0040171C |. 90 |NOP
0040171D |. 90 |NOP
0040171E |. 90 |NOP
0040171F |. 90 |NOP
00401720 |. 90 |NOP
00401721 |. 90 |NOP
00401722 |. 90 |NOP
00401723 |. 90 |NOP
00401724 |. 90 |NOP
00401725 |. 90 |NOP
00401726 |. 90 |NOP
00401727 |. 90 |NOP
00401728 |. 90 |NOP
00401729 |. 90 |NOP
0040172A |. 90 |NOP
0040172B |. 90 |NOP
0040172C |. 90 |NOP
0040172D |. 90 |NOP
004015B6 |. 8D4E 14 LEA ECX,DWORD PTR DS:[ESI+14]
004015E0 |. 3C 03 |CMP AL,3
004015E2 |. 90 |NOP
004015E3 |. 90 |NOP
004015E4 |. 90 |NOP
004015E5 |. 90 |NOP
004015E6 |. 90 |NOP
004015E7 |. 90 |NOP
004015E8 |. 90 |NOP
004015E9 |. 90 |NOP
004015EA |. 90 |NOP
004015EB |. 90 |NOP
004015EC |. 90 |NOP
004015ED |. 90 |NOP
004015EE |. 90 |NOP
004015EF |. 90 |NOP
004015F0 |. 90 |NOP
004015F1 |. 90 |NOP
004015F2 |. 90 |NOP
004015F3 |. 90 |NOP
004015F4 |. 90 |NOP
004015F5 |. 90 |NOP
004015F6 |. 90 |NOP
004015F7 |. 90 |NOP
004015F8 |. 90 |NOP
004015F9 |. 90 |NOP
004015FA |. 90 |NOP
004015FB |. 90 |NOP
004015FC |. 90 |NOP
004015FD |. 90 |NOP
004015FE |. 90 |NOP
004015FF |. 75 43 |JNZ SHORT CCZEdite.00401644
人物选项卡的三个装备下拉列表正确获得装备名称
004070AC |. 8D45 14 LEA EAX,DWORD PTR SS:[EBP+14]
004070DC |. 3C 03 |CMP AL,3
004070DE |. 90 |NOP
004070DF |. 90 |NOP
004070E0 |. 90 |NOP
004070E1 |. 90 |NOP
004070E2 |. 90 |NOP
004070E3 |. 90 |NOP
004070E4 |. 90 |NOP
004070E5 |. 90 |NOP
004070E6 |. 90 |NOP
004070E7 |. 90 |NOP
004070E8 |. 90 |NOP
004070E9 |. 90 |NOP
004070EA |. 90 |NOP
004070EB |. 90 |NOP
004070EC |. 90 |NOP
004070ED |. 90 |NOP
004070EE |. 90 |NOP
004070EF |. 90 |NOP
004070F0 |. 90 |NOP
004070F1 |. 90 |NOP
004070F2 |. 90 |NOP
004070F3 |. 90 |NOP
004070F4 |. 90 |NOP
004070F5 |. 90 |NOP
004070F6 |. 90 |NOP
004070F7 |. 90 |NOP
004070F8 |. 90 |NOP
004070F9 |. 90 |NOP
004070FA |. 90 |NOP
004070FB |. 90 |NOP
004070FC |. 90 |NOP
004070FD |. 90 |NOP
004070FE |. 90 |NOP
仓库全宝物
0040191F . 8D56 02 LEA EDX,DWORD PTR DS:[ESI+2]
00401937 . 3C 03 CMP AL,3
00401939 . 0F84 D1000000 JE CCZEdite.00401A10
0040193F . 90 NOP
00401940 . 90 NOP
00401941 . 90 NOP
00401942 . 90 NOP
00401943 . 90 NOP
00401944 . 90 NOP
00401945 . 90 NOP
00401946 . 90 NOP
00401947 . 90 NOP
00401948 . 90 NOP
00401949 . 90 NOP
0040194A . 90 NOP
0040194B . 90 NOP
0040194C . 90 NOP
0040194D . 90 NOP
0040194E . 90 NOP
0040194F . 90 NOP
00401950 . 90 NOP
00401951 . 90 NOP
00401952 . 90 NOP
00401953 . 90 NOP
00401954 . 90 NOP
00401955 . 90 NOP
00401956 . 90 NOP
00401957 . 90 NOP
00401958 . 90 NOP
00401959 . 90 NOP
0040195A . 90 NOP
0040195B . 90 NOP
0040195C . 90 NOP
0040195D . 90 NOP
0040195E . 6A 00 PUSH 0 ; /pBytesRead = NULL
00401960 . 8D4C24 17 LEA ECX,DWORD PTR SS:[ESP+17] ; |
00401964 . 6A 01 PUSH 1 ; |BytesToRead = 1
00401966 . 51 PUSH ECX ; |Buffer
00401967 . 8D56 06 LEA EDX,DWORD PTR DS:[ESI+6] ; |
0040196A . 52 PUSH EDX ; |pBaseAddress
0040196B . FF35 1C174100 PUSH DWORD PTR DS:[41171C] ; |hProcess = NULL
00401971 . FF15 44E04000 CALL DWORD PTR DS:[<&KERNEL32.ReadPr>; ReadProcessMemory
00401977 . 807C24 13 01 CMP BYTE PTR SS:[ESP+13],1