Board logo

标题: 猪猪版三国志孔明传的兵种攻防升级能力修改(附修改器下载) [打印本页]

作者: lewulezo    时间: 2010-5-28 13:53     标题: 猪猪版三国志孔明传的兵种攻防升级能力修改(附修改器下载)

本贴讨论了关于孔明传中一些数据的存放位置,现在顶楼汇总一下。感谢各位大大的鼎力支持。

EXE文件:
请下载http://www.xycq.net/forum/thread-198087-1-1.html中的破解执行文件。
或者使用godtype大大的全兵种适用道具exe文件( http://www.xycq.net/forum/thread-210699-1-2.html )

一、兵种升级属性位置
0x4eb70~0x4eb90 武力
0x4eb91~0x4ebb1 智力
0x4ebb2~0x4ebd2 统御力
0x4ebd3~0x4ebf3 生命值
0x4ebf4~0x4ec17 策略值
0x4ec18~0x4ec3f 移动力

共有40个兵种,但是攻防智耐策等升级只定义前33个兵种的(到皇帝为止)。
移动力定义了前39个兵种,没有北狄兵的。
兵种的顺序:
第0~32
短兵、长兵、近卫兵、弓兵、弩兵
连弩兵、轻骑兵、重骑兵、亲卫队、轻战车
重战车、大战车、小炮车、大炮车、霹雳车
弓骑兵、弩骑兵、连弩骑兵、军师、明军师
大军师、山贼、义贼、武术家、大武术家
虎兵团、猛虎兵团、运粮队、物资队、军乐队
南蛮兵、南蛮骑兵、皇帝

第33~38
都督、藤甲兵、羌族兵、象兵团、蛇兵团、幻术师

第39
北狄兵

没有定义的兵种继承前32个兵种的升级属性
都督->皇帝
藤甲兵、羌族兵、北狄兵->南蛮兵
幻术师->军师
象兵团、蛇兵团未知

二、兵种的攻击范围
0x51F28H~0x51f4fH共计40个字节表示40个兵种的攻击范围
00 表示周围4格(骑兵)
01 表示周围8格(战车)
02 表示周围空一格的4格(弓兵)
03 表示周围空一格的全周范围(弩兵)
04 表示周围空两格的全周范围(炮车)

三、兵种的攻击速度
从0x51F50H~0x51F7H 是兵种的攻击速度,根据后来各位大大分析的结果,攻击速度关系到暴击率,连击率/被连击率。
短兵:4
长兵:5
近卫兵:6
弓兵:4
弩兵:5
连弩兵:6
轻骑兵:5
重骑兵:6
亲卫队:7
轻战车:3
重战车:3
大战车:3
小炮车:2
大炮车:2
霹雳车:2
弓骑兵:5
弩骑兵:6
连弩骑兵:7
军师:4
名军师:4
大军师:4
山贼:5
义贼:5
武术家:8
大武术家:10(这个BT)
虎兵团:6
猛虎兵团:8
运粮队:3
物资队:3
军乐队:3
南蛮兵:5
南蛮骑兵:7
皇帝:7
都督:7
藤甲兵:5
羌族兵:5
象兵团:2
蛇兵团:5
幻术师:4
北狄兵:5

四、兵种的地形移动力消耗
地形的顺序是:(一个循环23个字节)
平原 草原 树林 荒地 山地 城内 桥梁 村庄 鹿寨 兵营 粮仓 宝库 城池 关隘 民宅 城门 栅栏 河流 岩山 火焰 泥流 ?? ??
0x51cc0~0x51cdf 是地形移动力的兵种共用关系,一共有00~0c计13中类型。
0x51CF0~0x51E1A 是部队在地形的移动力消耗

默认兵种系的顺序是:
0x51CF0: 步兵、弓兵、军师、皇帝、都督、幻术师
0x51D07: 骑兵系、弓骑兵系
0x51D1E: 战车系
0x51D35: 炮车系
0x51D4C: 贼兵系
0x51D63: 武道家系
0x51D7A: 虎兵团系
0x51D91: 运输队、物资队、军乐队
0x51DA8: 南蛮兵、藤甲兵、羌族兵、北狄兵
0x51DBF: 南蛮骑兵
0x51DD6: 象兵
0x51DED: 皇帝/都督
0x51E04: 蛇兵

FF表示该地形下不能移动


五、兵种的地形加成
0x51e20~0x51e47 是地形加成的兵种共用关系,一共有00~0c计13中类型。
17种地形:平原 草原 树林 荒地 山地 城内 桥梁 村庄 鹿寨 兵营 粮仓 宝库 城池 关隘 民宅 城门 栅栏

默认兵种系的顺序是:
0x51e48 步兵、弓兵、军师、幻术师
0x51e59 骑兵系、运输队、物资队、军乐队
0x51e6a 战车系
0x51e7b 炮车系
0x51e8c 弓骑兵系
0x51e9d 贼兵系
0x51eae 武道家系
0x51ebf 虎兵团系
0x51ed0 南蛮兵、藤甲兵、羌族兵、北狄兵
0x51ee1 南蛮骑兵
0x51ef2 皇帝/都督
0x51f03 象兵
0x51f14 蛇兵

0A表示100%(无加成)
0B表示110%
09表示90%

六、兵种所适用的装备
请参照http://www.xycq.net/forum/thread-210699-1-2.html修改,或者下载godtype修改后的exe文件再进行设定

默认情况下:
00        低档剑
01        中档剑
02        高档剑
03        低档枪
04        中档枪
05        高档枪
06        低档弓
07        中档弓
08        高档弓
09        低档炮
0a        中档炮
0b        高档炮
0c        低档扇
0d        中档扇
0e        高档扇
0f        低档虎
10        高档虎
11        低档爪
12        高档爪
13        乐器
14        粮车
15        铠甲
16        盾
17        马匹
18        车辆

在UE中把0xC278位置的数字改小,可以让小于15H的武器变为防具,而数值上也会增加防御力。
0xC278: 定义为防具类别的道具种类最小值(小于此数字皆为武器)
0xC28d: 定义为防具类别的道具种类最大值(大于此数字后为车马)
0xC2A2: 定义为车马类别的道具种类最大值(大于此数字后就是辅助类)


七、商店出售物品
前26个城市有物品出售。每个商店15个字节对应最多15种商品出售
0x52448~0x525cc 武器屋
0x525d0~0x52755 道具屋
0x4fd20~0x4ffdd 城市名

八、bakdata中武将的初始数据
bakdata有每个武将的初始数据,以0x3af0H诸葛亮的数据开始
06  0A  18  2D  2C 00  28  00  12  01  00   88 ff ff ff ff ff ff ff ff ff ff ff ff ff ff
阵营  武力  统御力 智力  耐力     策略      职业  等级  经验值  15个道具位置(诸葛亮自带蒲扇)

九、策略相关

策略名文字地址:0x4d1f0~0x4d2af 。如果需要扩展策略名的字数,可以在这里改

策略名文字:0x4db5c~0x4dcdb

策略施放范围:0x4D2B0~0x4d2df

00 表示焦热范围
01 表示火龙范围
02 表示猛火范围
03 表示小补给范围

策略的消耗:0x4D2E0~0x4d30f

0x4d318~0x4da97 每个兵种学习到每种策略的等级。00为学不会
每个计策对应40种兵种,占用40个字节

策略的说明文字:0x4dcdc~0x4e46f

十、道具的说明文字

道具名在bakdata.e2中修改,比较直观。

道具的说明文字在exe文件中

0x4ffe0~0x5017b是说明文字的地址定义。如果想要让说明文字长度增加,可以考虑修改这里。
0x5017c~0x51247是说明文字的具体地址。

十一、剧本中的敌军出场设定

剧本破解请参照
http://www.xycq.net/forum/thread-193072-1-1.html
每关的敌军出场位置如下:
每场战役有多个位置的,表示战前的选项不同,敌军的出场位置会有不同。22 00是设定出场的code

SNR0D.E2
博望坡战役:0x1672 0x1C83 0x221f 0x295f
新野战役:0x356B 0x3975
江夏急行战:0x40b1
长坂坡之战:0x47ab

SNR1D.E2
赤壁之战I:0xf1e
赤壁之战II:0x1485 0x1809
荆州南部战:0x27dd
绵竹、葭萌关战役:0x36f5
汉水之战:0x463b
麦城之战:0x5951
彝陵之战:0x6e3f

SNR2D.E2
阳平关之战:0x7d1
益州南部战:0x1577
玉溪峰之战:0x210f 0x24c7
夹山谷之战:0x2ca4
泸水之战:0x3247 0x3d97 0x41f6
西耳湖战役:0x4d4c 0x51f8
秃龙洞战役:0x5c76 0x6223
三江城战役:0x6d65
蛮都战役:0x75d7
桃叶江战役:0x7ff2
盘蛇谷战役:0x8a21

SNR3D.E2
风鸣山之战:0xc7a 0x1145
南安安定之战:0x1910 0x1eaa
天水城之战:0x283e 0x2ccc
冀城之战:0x3505 0x3a25
祁山之战:0x46bd 0x4d69
西平关之战:0x5624 0x5c2f
街亭之战:0x69a1
汉中退却战:0x6f96

SNR4D.E2
陈仓祁山之战:0xb6c 0x1004
陈仓攻城战: 0x18b6 0x1d61
祁山追击战: 0x2796 0x2d0b
二谷道之战:0x3d98 0x42ac
祁山之战2:0x4bb2
渭水之战:0x649a 0x69ea
葫芦谷之战: 0x71ea 0x78c9
五丈原之战:0x81c4 0x8a05

SNR5D.E2
眉城战役: 0x841 0xd56
武功战役:0x1562 0x1a83
长安攻城战1:0x2c3a
巴西之战:0x3e8c[孟获为敌军] 0x40cd[孟获为我军]
白帝城之战:0x49b4 0x4f50
江陵之战:0x5769
建宁之战:0x5ff4
长安攻城战2:0x76f1
华山之战: 0x812e 0x863d
函谷关之战:0x8e53 0x9384
洛阳之战1:0x9da1
洛阳之战2:0xa446

打开剧本文件,找到武将出场的地方。距离说明泸水之战,孟获逃窜
B6 00  
武将ID :孟获

1b 10
横坐标,纵坐标

00 00 01
未知(似乎有面朝的方向)

00
直接出场(01表示隐藏)

06
将领AI,06表示逃窜

02 04
逃窜的目的地坐标(2,4)

1f
兵种:南蛮骑兵

0b
等级:11级

00 00 00 00 00 00
每个将领最后都有6位00分隔


目前已知的AI代码:
00:防守模式。如果移动范围+攻击范围内有我军就出击,否则不动。
01:攻击模式。如果移动范围+攻击范围内有我军就出击,否则向我军最近的目标移动。
02:坚守模式。不会移动,如果攻击范围内有我军就攻击。很多关敌军主将的AI。
03:追击模式。如果移动范围+攻击范围内有我军就出击,否则向指定的我军目标移动。后两个字节是追击的目标武将ID。比如说麦城之战追击关羽
04:行军模式。如果移动范围+攻击范围内有我军就出击,否则就向指定坐标移动,到达目标后切换为防守模式。后两个字节是目的地的坐标。敌军攻打我方城池采用的AI。
05:追随模式。如果移动范围+攻击范围内有我军就出击,否则向目标的坐标移动。后两个字节是跟随目标武将的ID。比如赤壁之战II中,曹军将领的AI
06:逃跑模式。不会主动攻击,只会朝指定目的地移动,如果没有路径可以通向目的地则原地发呆。后两个字节是逃跑的目的地坐标。比如说赤壁之战II的曹操。

————————————————————————————————————————————————————————————————————————————

我自己做了个修改器

我申请了个网盘在http://docs.baihui.com
用户名: lewulezo_share
密码: share

登录上去可以下载。

修改前请备份你的ekd2w95.exe和bakdata.e2,以及相关的剧本或存盘文件,否则改坏了我可不管哦。
因为我是用java写的,所以如果没有装java的话就要去装一个。(http://www.java.com)
点击ekd2mod.jar可以直接运行。

最新更新: 2010-07-27
1. 在现成的exe上打上godtype的"兵种装备自由设定补丁"的功能。如果要修改兵种属性也会提示打上补丁。
2. 在现成的exe上打上ctermiii 的"兵种相克自由设定补丁"的功能。如果要修改兵种相克属性也会提示打上补丁。
3. 提供兵种相克设定的功能。
4. 修改多处bug。

[ 本帖最后由 lewulezo 于 2010-8-1 08:55 编辑 ]

附件: 三国志孔明传修改器分卷.part1.rar (2010-7-27 08:31, 1.39 M) / 该附件被下载次数 45009
http://xycq.org.cn/forum/attachment.php?aid=99866

附件: 三国志孔明传修改器分卷.part2.rar (2010-7-27 08:31, 1.39 M) / 该附件被下载次数 28266
http://xycq.org.cn/forum/attachment.php?aid=99867

附件: 三国志孔明传修改器分卷.part3.rar (2010-7-27 08:31, 1.3 M) / 该附件被下载次数 49546
http://xycq.org.cn/forum/attachment.php?aid=99868
作者: lewulezo    时间: 2010-5-28 13:56

目前只发现了这些。期待高手能继续指点发现更新的内容,比如说

1. 兵种拥有的策略
2. 策略的习得等级
3. 装备能适用的兵种类型
4. 剧本的破解
作者: godtype    时间: 2010-5-28 15:10

我也提供一些吧

策略使用范围:4D2B0H开始
策略MP消耗:4D2E0H开始
全兵种学得策略等级:4D318H开始是第一个策略,4D340H开始是第二个策略……依次类推,不会的策略等级为0

剧本破解:
http://www.xycq.net/forum/thread-193072-1-1.html
这里有部分代码,但只可修改,不能增加。

装备能适用的兵种类型
只能用反汇编修改,UE是没办法看得明白的,代码直接贴出来,有兴趣可以改一下:
0040C371   $ 55                  PUSH EBP
0040C372   . 8BEC                MOV EBP,ESP
0040C374   . 83EC 14             SUB ESP,14
0040C377   . 53                  PUSH EBX
0040C378   . 56                  PUSH ESI
0040C379   . 57                  PUSH EDI
0040C37A   . 8B45 08             MOV EAX,DWORD PTR SS:[EBP+8]
0040C37D   . 8BC8                MOV ECX,EAX
0040C37F   . C1E0 04             SHL EAX,4
0040C382   . 8D8C08 18AA4600     LEA ECX,DWORD PTR DS:[EAX+ECX+46AA18]
0040C389   . E8 92D2FFFF         CALL 00409620
0040C38E   . 8845 F4             MOV BYTE PTR SS:[EBP-C],AL
0040C391   . 33C0                XOR EAX,EAX
0040C393   . 8A45 F4             MOV AL,BYTE PTR SS:[EBP-C]
0040C396   . 83F8 19             CMP EAX,19
0040C399   . 0F8C 0A000000       JL 0040C3A9
0040C39F   . B8 01000000         MOV EAX,1
0040C3A4   . E9 06040000         JMP 0040C7AF

0040C3A9   > 8B45 08             MOV EAX,DWORD PTR SS:[EBP+8]
0040C3AC   . 50                  PUSH EAX
0040C3AD   . E8 9FFEFFFF         CALL 0040C251
0040C3B2   . 83C4 04             ADD ESP,4
0040C3B5   . 8845 F8             MOV BYTE PTR SS:[EBP-8],AL
0040C3B8   . 8B45 0C             MOV EAX,DWORD PTR SS:[EBP+C]
0040C3BB   . 8D0440              LEA EAX,DWORD PTR DS:[EAX+EAX*2]
0040C3BE   . 03C0                ADD EAX,EAX
0040C3C0   . 8D8CC0 E8564500     LEA ECX,DWORD PTR DS:[EAX+EAX*8+4556E8]
0040C3C7   . E8 04CFFFFF         CALL 004092D0
0040C3CC   . 8845 FC             MOV BYTE PTR SS:[EBP-4],AL
0040C3CF   . 8B45 0C             MOV EAX,DWORD PTR SS:[EBP+C]
0040C3D2   . 50                  PUSH EAX
0040C3D3   . E8 E4FEFFFF         CALL 0040C2BC
0040C3D8   . 83C4 04             ADD ESP,4
0040C3DB   . 33C9                XOR ECX,ECX
0040C3DD   . 8AC8                MOV CL,AL
0040C3DF   . 894D F0             MOV DWORD PTR SS:[EBP-10],ECX
0040C3E2   . 33C0                XOR EAX,EAX
0040C3E4   . 8A45 F4             MOV AL,BYTE PTR SS:[EBP-C]
0040C3E7   . 8945 EC             MOV DWORD PTR SS:[EBP-14],EAX
0040C3EA   . E9 41030000         JMP 0040C730

0040C3EF   > 837D F0 00          CMP DWORD PTR SS:[EBP-10],0
0040C3F3   . 0F84 18000000       JE 0040C411
0040C3F9   . 837D F0 07          CMP DWORD PTR SS:[EBP-10],7
0040C3FD   . 0F84 0E000000       JE 0040C411
0040C403   . 33C0                XOR EAX,EAX
0040C405   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C408   . 83F8 1E             CMP EAX,1E
0040C40B   . 0F85 0A000000       JNZ 0040C41B
0040C411   > B8 01000000         MOV EAX,1
0040C416   . E9 02000000         JMP 0040C41D
0040C41B   > 33C0                XOR EAX,EAX
0040C41D   > E9 8D030000         JMP 0040C7AF
道具类型为0(低档剑)和16(盾),[EBP-10]是兵科编号,[EBP-4]是兵种编号,如果兵科是00(步兵系)或者07(山贼系),又或者是兵种1E(南蛮兵),输出值为1,表示可以装备。其他的兵种输出值为0,不可装备。

0040C422   > 33C0                XOR EAX,EAX
0040C424   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C427   . 83F8 01             CMP EAX,1
0040C42A   . 0F84 2A000000       JE 0040C45A
0040C430   . 33C0                XOR EAX,EAX
0040C432   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C435   . 83F8 02             CMP EAX,2
0040C438   . 0F84 1C000000       JE 0040C45A
0040C43E   . 33C0                XOR EAX,EAX
0040C440   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C443   . 83F8 16             CMP EAX,16
0040C446   . 0F84 0E000000       JE 0040C45A
0040C44C   . 33C0                XOR EAX,EAX
0040C44E   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C451   . 83F8 1E             CMP EAX,1E
0040C454   . 0F85 0A000000       JNZ 0040C464
0040C45A   > B8 01000000         MOV EAX,1
0040C45F   . E9 02000000         JMP 0040C466
0040C464   > 33C0                XOR EAX,EAX
0040C466   > E9 44030000         JMP 0040C7AF
道具类型为1(中档剑),只有兵种01、02、16、1E可以装备。

0040C46B   > 33C0                XOR EAX,EAX
0040C46D   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C470   . 83F8 02             CMP EAX,2
0040C473   . 0F85 0A000000       JNZ 0040C483
0040C479   . B8 01000000         MOV EAX,1
0040C47E   . E9 02000000         JMP 0040C485
0040C483   > 33C0                XOR EAX,EAX
0040C485   > E9 25030000         JMP 0040C7AF
道具类型为2(高档剑),只有兵种02可以装备。

0040C48A   > 837D F0 05          CMP DWORD PTR SS:[EBP-10],5
0040C48E   . 0F85 0A000000       JNZ 0040C49E
0040C494   . B8 01000000         MOV EAX,1
0040C499   . E9 11030000         JMP 0040C7AF
道具类型为15(甲)和17(马),这一段是兵科05(弓骑)可以装备。注意后面一段也是马甲的
0040C49E   > 837D F0 02          CMP DWORD PTR SS:[EBP-10],2
0040C4A2   . 0F84 18000000       JE 0040C4C0
0040C4A8   . 837D F0 03          CMP DWORD PTR SS:[EBP-10],3
0040C4AC   . 0F84 0E000000       JE 0040C4C0
0040C4B2   . 33C0                XOR EAX,EAX
0040C4B4   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C4B7   . 83F8 1F             CMP EAX,1F
0040C4BA   . 0F85 0A000000       JNZ 0040C4CA
0040C4C0   > B8 01000000         MOV EAX,1
0040C4C5   . E9 02000000         JMP 0040C4CC
0040C4CA   > 33C0                XOR EAX,EAX
0040C4CC   > E9 DE020000         JMP 0040C7AF
道具类型为15(甲)和17(马),只有兵科02(骑兵)03(战车)和1F(南蛮骑)可以装备。
同时,道具类型为03(低档枪),只有兵科02、03和兵种1F可以装备。

——这段代码差点看错。

0040C4D1   > 33C0                XOR EAX,EAX
0040C4D3   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C4D6   . 83F8 07             CMP EAX,7
0040C4D9   . 0F84 1C000000       JE 0040C4FB
0040C4DF   . 33C0                XOR EAX,EAX
0040C4E1   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C4E4   . 83F8 0A             CMP EAX,0A
0040C4E7   . 0F84 0E000000       JE 0040C4FB
0040C4ED   . 33C0                XOR EAX,EAX
0040C4EF   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C4F2   . 83F8 1F             CMP EAX,1F
0040C4F5   . 0F85 0A000000       JNZ 0040C505
0040C4FB   > B8 01000000         MOV EAX,1
0040C500   . E9 AA020000         JMP 0040C7AF
道具类型为04(中档枪),只有兵种07、0A、1F,以及下面的08、0B可以装备。
0040C505   > 33C0                XOR EAX,EAX
0040C507   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C50A   . 83F8 08             CMP EAX,8
0040C50D   . 0F84 0E000000       JE 0040C521
0040C513   . 33C0                XOR EAX,EAX
0040C515   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C518   . 83F8 0B             CMP EAX,0B
0040C51B   . 0F85 0A000000       JNZ 0040C52B
0040C521   > B8 01000000         MOV EAX,1
0040C526   . E9 02000000         JMP 0040C52D
0040C52B   > 33C0                XOR EAX,EAX
0040C52D   > E9 7D020000         JMP 0040C7AF
道具类型为05(高档枪),只有兵种08、0B可以装备。

0040C532   > 837D F0 01          CMP DWORD PTR SS:[EBP-10],1
0040C536   . 0F84 0A000000       JE 0040C546
0040C53C   . 837D F0 05          CMP DWORD PTR SS:[EBP-10],5
0040C540   . 0F85 0A000000       JNZ 0040C550
0040C546   > B8 01000000         MOV EAX,1
0040C54B   . E9 02000000         JMP 0040C552
0040C550   > 33C0                XOR EAX,EAX
0040C552   > E9 58020000         JMP 0040C7AF
道具类型为06(低档弓),只有兵科01(弓兵)05(弓骑)可以装备。

0040C557   > 33C0                XOR EAX,EAX
0040C559   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C55C   . 83F8 04             CMP EAX,4
0040C55F   . 0F84 0E000000       JE 0040C573
0040C565   . 33C0                XOR EAX,EAX
0040C567   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C56A   . 83F8 10             CMP EAX,10
0040C56D   . 0F85 0A000000       JNZ 0040C57D
0040C573   > B8 01000000         MOV EAX,1
0040C578   . E9 32020000         JMP 0040C7AF
道具类型为07(中档弓),兵种04、10,以及下面的05、11可以装备。
0040C57D   > 33C0                XOR EAX,EAX
0040C57F   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C582   . 83F8 05             CMP EAX,5
0040C585   . 0F84 0E000000       JE 0040C599
0040C58B   . 33C0                XOR EAX,EAX
0040C58D   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C590   . 83F8 11             CMP EAX,11
0040C593   . 0F85 0A000000       JNZ 0040C5A3
0040C599   > B8 01000000         MOV EAX,1
0040C59E   . E9 02000000         JMP 0040C5A5
0040C5A3   > 33C0                XOR EAX,EAX
0040C5A5   > E9 05020000         JMP 0040C7AF
道具类型为08(高档弓),兵种05、11可以装备。

0040C5AA   > 837D F0 04          CMP DWORD PTR SS:[EBP-10],4
0040C5AE   . 0F85 0A000000       JNZ 0040C5BE
0040C5B4   . B8 01000000         MOV EAX,1
0040C5B9   . E9 02000000         JMP 0040C5C0
0040C5BE   > 33C0                XOR EAX,EAX
0040C5C0   > E9 EA010000         JMP 0040C7AF
道具类型为09(低档炮),兵科04(炮车)可以装备。

0040C5C5   > 33C0                XOR EAX,EAX
0040C5C7   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C5CA   . 83F8 0D             CMP EAX,0D
0040C5CD   . 0F85 0A000000       JNZ 0040C5DD
0040C5D3   . B8 01000000         MOV EAX,1
0040C5D8   . E9 D2010000         JMP 0040C7AF
道具类型为0A(中档炮),兵种0D以及下面的0E可以装备。
0040C5DD   > 33C0                XOR EAX,EAX
0040C5DF   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C5E2   . 83F8 0E             CMP EAX,0E
0040C5E5   . 0F85 0A000000       JNZ 0040C5F5
0040C5EB   . B8 01000000         MOV EAX,1
0040C5F0   . E9 02000000         JMP 0040C5F7
0040C5F5   > 33C0                XOR EAX,EAX
0040C5F7   > E9 B3010000         JMP 0040C7AF
道具类型为0B(高档炮),兵种0E可以装备。

0040C5FC   > 837D F0 06          CMP DWORD PTR SS:[EBP-10],6
0040C600   . 0F85 0A000000       JNZ 0040C610
0040C606   . B8 01000000         MOV EAX,1
0040C60B   . E9 02000000         JMP 0040C612
0040C610   > 33C0                XOR EAX,EAX
0040C612   > E9 98010000         JMP 0040C7AF
道具类型为0C(低档扇),兵科06(军师)可以装备。

0040C617   > 33C0                XOR EAX,EAX
0040C619   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C61C   . 83F8 13             CMP EAX,13
0040C61F   . 0F85 0A000000       JNZ 0040C62F
0040C625   . B8 01000000         MOV EAX,1
0040C62A   . E9 80010000         JMP 0040C7AF
道具类型为0D(中档扇),兵种13以及下面的14可以装备。
0040C62F   > 33C0                XOR EAX,EAX
0040C631   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C634   . 83F8 14             CMP EAX,14
0040C637   . 0F85 0A000000       JNZ 0040C647
0040C63D   . B8 01000000         MOV EAX,1
0040C642   . E9 02000000         JMP 0040C649
0040C647   > 33C0                XOR EAX,EAX
0040C649   > E9 61010000         JMP 0040C7AF
道具类型为0E(高档扇),兵种14可以装备。

0040C64E   > 33C0                XOR EAX,EAX
0040C650   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C653   . 83F8 19             CMP EAX,19
0040C656   . 0F85 0A000000       JNZ 0040C666
0040C65C   . B8 01000000         MOV EAX,1
0040C661   . E9 49010000         JMP 0040C7AF
道具类型为0F(低档虎),兵种19以及下面的1A可以装备。
0040C666   > 33C0                XOR EAX,EAX
0040C668   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C66B   . 83F8 1A             CMP EAX,1A
0040C66E   . 0F85 0A000000       JNZ 0040C67E
0040C674   . B8 01000000         MOV EAX,1
0040C679   . E9 02000000         JMP 0040C680
0040C67E   > 33C0                XOR EAX,EAX
0040C680   > E9 2A010000         JMP 0040C7AF
道具类型为10(高档虎),兵种1A可以装备。

0040C685   > 33C0                XOR EAX,EAX
0040C687   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C68A   . 83F8 17             CMP EAX,17
0040C68D   . 0F85 0A000000       JNZ 0040C69D
0040C693   . B8 01000000         MOV EAX,1
0040C698   . E9 12010000         JMP 0040C7AF
道具类型为11(低档爪),兵种17以及下面的18可以装备。
0040C69D   > 33C0                XOR EAX,EAX
0040C69F   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C6A2   . 83F8 18             CMP EAX,18
0040C6A5   . 0F85 0A000000       JNZ 0040C6B5
0040C6AB   . B8 01000000         MOV EAX,1
0040C6B0   . E9 02000000         JMP 0040C6B7
0040C6B5   > 33C0                XOR EAX,EAX
0040C6B7   > E9 F3000000         JMP 0040C7AF
道具类型为12(高档爪),兵种18可以装备。

0040C6BC   > 33C0                XOR EAX,EAX
0040C6BE   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C6C1   . 83F8 1D             CMP EAX,1D
0040C6C4   . 0F85 0A000000       JNZ 0040C6D4
0040C6CA   . B8 01000000         MOV EAX,1
0040C6CF   . E9 02000000         JMP 0040C6D6
0040C6D4   > 33C0                XOR EAX,EAX
0040C6D6   > E9 D4000000         JMP 0040C7AF
道具类型为13(乐器),兵种1D可以装备。

0040C6DB   > 837D F0 04          CMP DWORD PTR SS:[EBP-10],4
0040C6DF   . 0F84 0A000000       JE 0040C6EF
0040C6E5   . 837D F0 03          CMP DWORD PTR SS:[EBP-10],3
0040C6E9   . 0F85 0A000000       JNZ 0040C6F9
0040C6EF   > B8 01000000         MOV EAX,1
0040C6F4   . E9 B6000000         JMP 0040C7AF
道具类型为18(车),兵科03(战车)04(炮车)以及下面的兵种1B、1C可以装备。
0040C6F9   > 33C0                XOR EAX,EAX
0040C6FB   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C6FE   . 83F8 1B             CMP EAX,1B
0040C701   . 0F84 0E000000       JE 0040C715
0040C707   . 33C0                XOR EAX,EAX
0040C709   . 8A45 FC             MOV AL,BYTE PTR SS:[EBP-4]
0040C70C   . 83F8 1C             CMP EAX,1C
0040C70F   . 0F85 0A000000       JNZ 0040C71F
0040C715   > B8 01000000         MOV EAX,1
0040C71A   . E9 02000000         JMP 0040C721
0040C71F   > 33C0                XOR EAX,EAX
0040C721   > E9 89000000         JMP 0040C7AF
道具类型为14(粮),只有兵种1B、1C可以装备。

0040C726   . E9 7D000000         JMP 0040C7A8
0040C72B   . E9 78000000         JMP 0040C7A8

0040C730   > 837D EC 18          CMP DWORD PTR SS:[EBP-14],18
0040C734   . 0F87 6E000000       JA 0040C7A8
0040C73A   . 8B45 EC             MOV EAX,DWORD PTR SS:[EBP-14]
0040C73D   . FF2485 44C74000     JMP DWORD PTR DS:[EAX*4+40C744]
0040C744   . EFC34000            DD 0040C3EF                         ;  Switch table used at 0040C73D
0040C748   . 22C44000            DD 0040C422
0040C74C   . 6BC44000            DD 0040C46B
0040C750   . 9EC44000            DD 0040C49E
0040C754   . D1C44000            DD 0040C4D1
0040C758   . 05C54000            DD 0040C505
0040C75C   . 32C54000            DD 0040C532
0040C760   . 57C54000            DD 0040C557
0040C764   . 7DC54000            DD 0040C57D
0040C768   . AAC54000            DD 0040C5AA
0040C76C   . C5C54000            DD 0040C5C5
0040C770   . DDC54000            DD 0040C5DD
0040C774   . FCC54000            DD 0040C5FC
0040C778   . 17C64000            DD 0040C617
0040C77C   . 2FC64000            DD 0040C62F
0040C780   . 4EC64000            DD 0040C64E
0040C784   . 66C64000            DD 0040C666
0040C788   . 85C64000            DD 0040C685
0040C78C   . 9DC64000            DD 0040C69D
0040C790   . BCC64000            DD 0040C6BC
0040C794   . F9C64000            DD 0040C6F9
0040C798   . 8AC44000            DD 0040C48A
0040C79C   . EFC34000            DD 0040C3EF
0040C7A0   . 8AC44000            DD 0040C48A
0040C7A4   . DBC64000            DD 0040C6DB
0040C7A8   > 33C0                XOR EAX,EAX
0040C7AA   . E9 00000000         JMP 0040C7AF
0040C7AF   > 5F                  POP EDI
0040C7B0   . 5E                  POP ESI
0040C7B1   . 5B                  POP EBX
0040C7B2   . C9                  LEAVE
0040C7B3   . C3                  RETN


全道具类型
00        剑
01        剑
02        剑
03        枪
04        枪
05        枪
06        弓
07        弓
08        弓
09        炮
0a        炮
0b        炮
0c        扇
0d        扇
0e        扇
0f        虎
10        虎
11        爪
12        爪
13        乐
14        粮
15        甲
16        盾
17        马
18        车
19        火策略书
1A        地策略书
1B        查看
1C        压迫
1D        骂声
1E        假情报
1F        反间
20        牵制
21        恢复HP
22        恢复MP
23        恢复
24        奋起
25        坚固
26        对策|回归
27        转职
28        果种
29        经验
2A        兵书

[ 本帖最后由 godtype 于 2010-5-29 10:37 编辑 ]
作者: godtype    时间: 2010-5-28 15:20

另外
1、谁有全物品代码,核对一下 514F9H--517B5H 或者 52457H--52755H 是否为商店售出的物品代码。
2、51F28H开始的是否全兵种攻击范围代码?
3、51CC6H开始的,到51F24H这一大段有点意思,会不会是地形消耗和效果?
作者: lewulezo    时间: 2010-5-28 20:06

我认为你说的不错
0x51F28H~0x51f4fH共计40个字节表示40个兵种的攻击范围
00 表示周围4格(骑兵)
01 表示周围8格(战车)
02 表示周围空一格的4格(弓兵)
03 表示周围空一格的全周范围(弩兵)
04 表示周围空两格的全周范围(炮车)
作者: lewulezo    时间: 2010-5-28 20:11

从0x51F50H~0x51F7H 我有点怀疑是兵种的攻击速度,类似于曹操传的爆发力,关系到命中率/回避率、双击率/被双击率。
短兵:4
长兵:5
近卫兵:6
弓兵:4
弩兵:5
连弩兵:6
轻骑兵:5
重骑兵:6
亲卫队:7
轻战车:3
重战车:3
大战车:3
小炮车:2
大炮车:2
霹雳车:2
弓骑兵:5
弩骑兵:6
连弩骑兵:7
军师:4
名军师:4
大军师:4
山贼:5
义贼:5
武术家:8
大武术家:10(这个BT)
虎兵团:6
猛虎兵团:8
运粮队:3
物资队:3
军乐队:3
南蛮兵:5
南蛮骑兵:7
皇帝:7
都督:7
藤甲兵:5
羌族兵:5
象兵团:2
蛇兵团:5
幻术师:4
北狄兵:5
作者: lewulezo    时间: 2010-5-28 23:00

0x51CF0H~0x51E1AH 经过验证是部队在地形的移动力消耗
地形的顺序是:(一个循环23个字节)
平原 草原 树林 荒地 山地 城内 桥梁 村庄 鹿寨 兵营 粮仓 宝库 城池 关隘 民宅 城门 栅栏 河流 岩山 火焰 泥流 ?? ??

FF表示该地形下不能移动

兵种系的顺序是:
51CF0H: 步兵系、弓兵系、军师系
51D07H: 骑兵系、弓骑兵系
51D1EH: 战车系
51D35H: 炮车系
51D4CH: 贼兵系
51D63H: 武道家系
51D7AH: 虎兵团系
51D91H: 运输队、物资队、军乐队
51DA8H: 南蛮兵
51DBFH: 南蛮骑兵
51DD6H: 象兵
51DEDH: 皇帝/都督
51E04H: 舰船

[ 本帖最后由 lewulezo 于 2010-5-28 23:02 编辑 ]
作者: lewulezo    时间: 2010-5-28 23:46

全物品列表:
00 焦热书 01 火龙书 02 猛火书 03 大焦热书 04 大火龙书 05 大猛火书
06 落石书 07 山崩书 08 山洪书 09 大落石书 0A 大山崩书 0B 大山洪书
0C 查看书 0D 侦查书 0E 谍报书 0F 压迫书 10 威压书 11 骂声书
12 挑拨书 13 假情报书 14 伪兵书 15 反间书 16 流言书 17 牵制书
18 止步书 19 恢复豆 1A 恢复麦 1B 恢复米 1C 恢复肉 1D 援队书
1E 援部书 1F 援军书 20 援国书 21 药 22 中药 23 华佗药
24 苏醒书 25 恢复书 26 释放书 27 轻功书 28 奋起书 29 鼓舞书
2A 坚固书 2B 强阵书 2C 对策书 2D 回归书 2E 没有 2F 封策书

30 短剑 31 刀 32 长刀 33 两刃剑 34 雌雄双剑 35 倚天剑
36 弯刀 37 斩马剑 38 三尖刀 39 神刀 3A 七星剑 3B 古淀刀
3C 大刀 3D 三色宝剑 3E 青釭剑  3F 古灵剑 40 英雄之剑 41 霸王之剑

42 棍棒 43 枪 44 钩 45 戟 46 蛇矛 47 青龙偃月刀
48 长枪 49 半月枪 4A 狼牙棒 4B 长戟 4C铁戟蛇矛 4D 铁蒺藜骨朵
4E 铁鞭 4F 大斧 50 流星锤 51 双铁戟 52 方天画戟 53 项羽矛

54 竹木弓 55 半弓 56 石弓 57 长弓 58 蛮弓 59 优弓
5A 良弓 5B 弹弓 5C 弩 5D 强弩 5E 连发弩 5F 元戎弩
60 名弓 61 十矢弩 62 诸葛弩 63 神弓 64 吕布弓 65 青龙弓

66 小石弹炮 67 石弹炮 68 手炮 69 泥弹炮 6A 岩石弹炮 6B 破裂弹炮
6C 火弹炮 6D 旋风炮 6E 玄武炮 6F 虎 70 黑虎 71 饿虎
72 猛虎 73 双眼虎 74 白虎 75 青铜爪牙 76 铁制爪牙 77 白银爪牙
78不败爪牙 79 大鹰爪牙 7A 朱雀爪牙 7B 笙 7C 征 7D 笛
7E 萧笛 7F 铜锣 80 鼓 81 单轮车 82 双轮车 83 三轮车
84 四轮车 85 木牛 86 流马 87 铁扇 88 蒲扇 89 阵扇
8A 银扇 8B 军扇 8C 鹤羽扇 8D 鹰羽扇 8E黑羽扇 8F 白羽扇

90 皮甲 91 青铜甲 92 锦铠 93 环锁铠 94 铁甲 95 两裆铠
96 赤甲 97 弥裆铠 98 明光铠 99 黑光铠 9A 筒袖铠 9B 将军铠
9C 白银制铠 9D 黄金制铠 9E 高祖铠 9F 蚩尤铠 A0 木制盾 A1小型盾
A2 皮盾 A3 滕盾 A4 青铜盾 A5 铁制盾 A6 大盾 A7 手牌
A8 圆牌 A9 燕尾牌 AA 推牌 AB 步兵旁牌 AC 无敌神牌 AD 神兽盾
AE 咒文盾 AF 鬼神盾 B0 粟毛马 B1 苇毛马 B2 黄骠马 B3 白马
B4 绝影 B5 爪黄飞电 B6 的卢 B7 赤兔马 B8 人车 B9 牛车
BA 大车 BB 马车 BC 轻车 BD 双牛车 BE 双马车 BF 疾风马车

C0 长兵器指南书 C1 近卫兵心得 C2 弩的奥秘 C3 连弩的奥秘 C4 马镫 C5 近卫马镫
C6 战车战术读本 C7 战车战术其二 C8投石机 C9 投石车 CA 弩骑兵镫 CB 连弩骑兵镫
CC 侠义精神 CD 武道全书 CE 猛虎鞭 CF 牙旗 D0 龙牙旗 D1 仁爱种
D2 武勇种 D3 智谋种 D4 根性种 D5 精神种 D6 经验种 D7 仁爱果
D8 武勇果 D9 智谋果 DA 根性果 DB 精神果 DC 经验果 DD 三略
DE 六韬 DF 孟德新书 E0 孙子兵法
作者: lewulezo    时间: 2010-5-28 23:52

52457H--52755H应该是商店出售的物品
作者: lewulezo    时间: 2010-5-29 00:16

我汇编知识匮乏,godtype大大的反汇编的那段代码实在很难读懂,能麻烦解释一下吗?
非常感谢!

[ 本帖最后由 lewulezo 于 2010-5-29 00:59 编辑 ]
作者: godtype    时间: 2010-5-29 10:38

已补说明。反汇编地址与UE地址的关系为400000H,即反汇编地址减400000H就是UE地址。

[ 本帖最后由 godtype 于 2010-5-29 10:55 编辑 ]
作者: 阿尔法孝直    时间: 2010-5-29 10:42     标题: 回复 #11 godtype 的帖子

最好要写清楚是400000H还是400000D
作者: godtype    时间: 2010-5-29 10:55     标题: 回复 #12 阿尔法孝直 的帖子

已改,不过实在不习惯加上H在后面。
作者: dimeterio    时间: 2010-5-29 17:17

坐等修改器问世……
作者: lewulezo    时间: 2010-5-29 23:10

多谢godtype解释 终于看懂了上面那段汇编的意思。

虽说看明白了,但是要想修改似乎并不容易。真没想到孔明传的兵种设定是这样hardcode的。
作者: lewulezo    时间: 2010-6-1 00:20

很想知道道具所屬的類別的代碼存在哪裡

比如說,哪幾類道具是武器,哪幾類是防具,哪幾類是車馬
或者說裝備提高的分別是什麽數值
作者: lewulezo    时间: 2010-6-2 12:50

我对PC版孔明传的一些兵种的平衡性,调整了一下。可能受了曹操传的影响比较大,很多兵种改造的和曹操传接近。

原版中假情报和伪兵实在过于强大,特削弱之。步兵、弓兵不再能学会假情报。而虎兵团可以假情报,不能再伪兵。
步兵:定位为高防御力,高血量的肉盾型兵种。削弱原来步兵的策略,去掉假情报,改为“牵制”。可以使用低级补给策略给友军回血。
弓兵:定位为低防御力,较高攻击力并拥有一定策略伤害的远程兵种。不再能假情报,参照GBA的设定,可以恢复友军的状态。
骑兵:定位为高攻击力,高移动力的兵种。大大削弱了骑兵的血量,使骑兵的血量低于步兵。依然不会策略。
弓骑兵:定位为高攻击,高移动力的远程兵种。削弱血量和骑兵相当。依然不会策略。
战车:定位为高防御力,在野战中的防御兵种。血量依然低于骑兵。会“止步”之类的妨害策略。
炮车:定位为远程大范围伤害兵种。削弱血量和防御力。不会策略。
削弱原来过于BT的武道家系,减少其攻击速度和血量。
增强贼兵系,使贼兵拥有更加灵活的攻击范围(周围八格),提升义贼的攻击力和血量。
削弱猛虎师团的策略,不再拥有“伪兵”策略。

所有状态回复类策略的范围都扩大为类似于"猛火"。原来要直接贴着才能行。

原版中对姜维设定为骑兵实在让人没法理解。我新设一个职业叫“军师将军”,为姜维量身定做。军师将军拥有接近于骑兵的攻防能力和大量策略。包括单体的伤害型策略,buff类和补给类。

因为只能利用现有的兵种进行修改,因此我只能忍痛放弃了军乐队。原有的军乐队的策略,“回归”给了物资队,恢复状态和buff类策略给了运输队。所有职业为军乐队的原有人物均重新设定其职业。

但是目前军师将军可以装备的道具上碰到了问题。我考虑把鼓类原来军乐队专有的武器改为宝剑类,军师将军专用。但是防具和车马还是没法解决。
作者: godtype    时间: 2010-6-2 12:59

道具在BAKDATA.E2(相当于曹操传的DATA)里面
从900H开始,看名称就知道了
其中+CH就是道具属性,+DH就是价格,+EH就是效果值,+FH应该是编号。

至于军师将军的装备问题,你可以写一下你需要的对应关系(附上编号),上传你的EXE,我可以改一下。
作者: Shadowleech    时间: 2010-6-2 13:01

战车其实和骑兵很冲突,一个城里乌龟,一个无计略不能斜砍。不如并成一个兵种好了。
如果象使、藤甲兵我方有就好了。直接拿修改器问题是不能装备武器。

[ 本帖最后由 Shadowleech 于 2010-6-2 13:02 编辑 ]
作者: Shadowleech    时间: 2010-6-2 13:06

军师的能力也可以适当削弱,主DPS。把牵制类的给幻术师。再把军乐运粮物资合并下,提高下他们在城市里的移动力。这样就和曹操传三文官职业差不多了。
骑兵血量削弱我觉得不合适,骑兵被远程克,又没有曹操传里的马铠和镜铠这样的道具,如果血再不多的话容易被狙杀,没什么大用了。

[ 本帖最后由 Shadowleech 于 2010-6-2 13:15 编辑 ]
作者: lewulezo    时间: 2010-6-2 17:27     标题: 回复 #20 Shadowleech 的帖子

过去数次玩孔明传,骑兵都是几乎无敌的,除了怕混乱以外,攻防都是很强的。说是被远程克制,可是却并不明显。原来骑兵的血量居然达到接近步兵的两倍多,所以觉得需要削弱一下血量。

另外骑兵是可以穿铠甲的,而弓兵和炮车不能装备任何护具。

我削弱了混乱的出场率,骑兵依然攻击力最强(武术家除外),步兵虽然耐打但是攻击力很差,这样就能保证骑兵的出场率。

[ 本帖最后由 lewulezo 于 2010-6-2 17:40 编辑 ]
作者: 阿尔法孝直    时间: 2010-6-2 17:32

孔明传的MOD要出世了咩
作者: lewulezo    时间: 2010-6-2 17:35



QUOTE:
原帖由 godtype 于 2010-6-2 12:59 发表
道具在BAKDATA.E2(相当于曹操传的DATA)里面
从900H开始,看名称就知道了
其中+CH就是道具属性,+DH就是价格,+EH就是效果值,+FH应该是编号。

+CH确实是道具属性,但是同时也就会限制了道具的适用范围。
比如说,想要改一件专门给弓箭手用的防具,就没法做到。

其实我现在想要做的是,让军师将军(原军乐队)也能穿铠甲,也能骑战马。光靠改bakdata.e2似乎没法解决。

目前我的解决方法是,暂时移花接木,委屈一下南蛮骑兵了。本来铠甲和战马适用南蛮骑兵,现在改为适用于军师将军。因为根据前面的汇编分析,可以把南蛮骑兵对应的兵种ID改到军师将军(原军乐队)上。不过这样一来南蛮骑兵就不能装备铠甲和战马了。。。反正他们会补给技能。

[ 本帖最后由 lewulezo 于 2010-6-2 17:39 编辑 ]
作者: lewulezo    时间: 2010-6-2 17:52     标题: 回复 #19 Shadowleech 的帖子

孔明传中的军师确实是计策大全。

不过考虑到孔明传和曹操传不同,孔明传中,军师是主角,因此应该具有某些OP的能力。而曹操传中,军师只是各类文官中的一种而已。所以我觉得出于考虑主角不能太平庸,还是留给孔明大部分的策略了。

幻术师这个兵种,目前没法做成三转,另外其攻防升级属性大多从别的兵种继承而来,而没法直接设定。

如果像英杰传那样,只有步骑弓三种兵种设置似乎太简单了一点。

我考虑关于战车和骑兵的定位,还是不同的。

首先骑兵是纯突击型的兵种,具有最高的攻击力。而战车则是偏向防守的兵种,由于不会像步兵那样受到骑兵的额外伤害,因此在野战中能发挥抵御敌人冲击(尤其是抵抗骑兵的冲击)的作用。战车的攻击力不如骑兵,但是比步兵强,总体来说是介于步兵和骑兵之间的兵种。

但是战车受到地形限制很严重,在城中效果不好,因此在野战中才能充分发挥作用。另外,战车虽然有着极高的防御力,但是血量偏少,相对来说对计策的抵抗力弱。(我甚至考虑取消各种车类后勤类在城中的移动力限制,免得开始培养的战车在最后几关攻城战中无用武之地)

[ 本帖最后由 lewulezo 于 2010-6-2 17:57 编辑 ]
作者: Shadowleech    时间: 2010-6-3 00:09

战车除了城市里移动力和相克问题。总体来说和骑兵的能力成长差不多。如果改掉移动力的话,其更大攻击范围和策略,多少会让骑兵变得比英杰传后期更尴尬毕竟进攻方面有更强悍的武术家和虎使。这也是曹操传里战车不再作为可选兵种的原因。
如果要削减骑兵血量,是否可以给近卫队斜线攻击来补偿呢?
考虑到PC版大部分时间就一个军师,不动问题也不大。我更喜欢藤甲兵象使这样的可选兵种。
作者: Shadowleech    时间: 2010-6-3 00:29

可能是我的体会有不同吧,我觉得孔明传原版里,除了赵云等级一直是拉开的外,其他魏延马超姜维等耐打程度也相当有限,加上攻击速度不如虎使和武术,不能斜打不会策略的劣势,也不能说BT。加上混乱可以说郁闷。当然看到LZ修改掉步弓混乱挺好。
其实曹操传基本就是弓步骑铁三角。其他除了炮车、军师和仙术,作用都要小不少。
作者: lewulezo    时间: 2010-6-3 08:14

武道家我也进行了一些削弱,至少攻击速度不至于那么BT了。毕竟作为我军唯一的一个出场的武道家张嶷,比起马超魏延这种传统悍将,不该有那么强势才对。另外也适当削弱武道家的一点防御力,加上没有护具,后期防御力会比骑兵差一些。

把亲卫队设置成周围八格攻击,像曹操传那样。

对猛虎队也略微削弱(砍血量+策略),后期的血量和防御比骑兵来说差距还是比较大。

目前大概是规划如下:

          攻击力 防御力 攻击速度 智力 血量 策略值
步兵    B        S         B          B      S      B          攻击范围改为周围8格。会小补给、中补给、牵制
弓兵    A        B        A           B      C      B          会火系策略、觉醒、康复等
骑兵    S        A        A           D     A      0          升到亲卫队后攻击范围为周围8格
弓骑兵 S        A        A           D     A      0
战车    A        S        C           C      B      C         会压迫、止步
炮车    A        B        C           D      C       0        
武道家 S        A        S           D      B       0
猛虎兵 S        B        A           B      B       B         会假情报、骂声
贼兵    A        B        B           B      A       B         攻击范围改为周围8格。会土系策略、奋起、坚固等
军师    C      C>B>A  C           S   C>B>A  S         会大部分策略和单体补给策略
运输队 C        C        C           A      C       S         会所有补给类技能和状态回复、攻防提升策略等
物资队 C        C        C           A      C       S         会所有攻防削弱技能、流言止步牵制、策略回复、单体补给和回归
军师将 A        A       A           A      A       A         会大部分攻击策略,谍报类、攻防提升和单体补给策略
皇帝    S        S        S           S      S       S         boss
都督    A        S        A          S      S       S          和军师一样

南蛮骑 参照骑兵,会小补给、中补给。策略提升为C。可以穿越树林。
南蛮兵 参照步兵,会土系策略。可以快速穿越树林。
蛇兵团 参照虎兵团,会伪兵。
藤甲兵 参照步兵。系统内置额外防御力,并且受到火系伤害提升

[ 本帖最后由 lewulezo 于 2010-6-3 08:25 编辑 ]
作者: Shadowleech    时间: 2010-6-3 08:26

挺好,GBA的军师将军很不成功就是因为物理法术难以互补,有BUFF类就强不少.
就希望藤甲兵/象使能可选赫赫.
作者: lewulezo    时间: 2010-6-3 12:55

想要藤甲兵只有设法让兀突骨加入了。。恐怕要修改剧本。
作者: Shadowleech    时间: 2010-6-3 13:18

恩,我只用修改器试过下,不能装备武器,但是物理免疫,雨天就是一怪物呀。
作者: Shadowleech    时间: 2010-6-4 08:44

貌似藤甲兵等对应的应该是南蛮的成长,幻术对应的应该是军师的成长.

我也试了改,把
贼兵和近卫队的攻击范围变成战车,义贼攻击成长增加到4。
近卫队和大战车的攻击成长增加了到4。
象兵的攻击到5,生命,统御成长,移动速度攻击速度都大大增加。
藤甲兵的攻击成长增加到5,生命增加。
步弓不再会假情报。
步兵和弓骑的三转防御成长一致,不会再下降。。
武术家的生命和防御下调。
移除了运输类兵种、战车和象兵在城市和桥梁的移动限制。


我现在除了剧情不能改(可以靠修改器加入)外就是不明白怎么改可用武器,看着反编译太复杂了。藤甲兵象使护具还好说,没武器攻击力总吃亏很多.不行的话考虑给他们更强一点的策略。

[ 本帖最后由 Shadowleech 于 2010-6-4 09:33 编辑 ]
作者: godtype    时间: 2010-6-4 09:17     标题: 回复 #31 Shadowleech 的帖子

汗啊,我这个就是为了你们而改的:
http://www.xycq.net/forum/thread-210699-1-1.html

武将加入可以拿一些不出场的人在剧本中替换掉,看3楼的链接。
作者: Shadowleech    时间: 2010-6-4 09:34

我不想再重新改次UE了,如果没有其他办法干脆不改了。象使的群体混乱攻击加上奋起和小中大补给,藤甲兵的奋起加上刀枪不入怎么也够狠了。
作者: Shadowleech    时间: 2010-6-4 09:35

那个帖子说的好像是成长啊,没看到怎么改人物加入。
哦后面的看到了,现在在考虑要不要改掉步兵和弓兵的猛火防止藤甲兵被秒。

汗我还是看不懂。

策略在UE里的具体排列能解释下么?

[ 本帖最后由 Shadowleech 于 2010-6-4 09:39 编辑 ]
作者: 阿尔法孝直    时间: 2010-6-4 09:49     标题: 回复 #34 Shadowleech 的帖子

其实用记事本打开破解后的EXE就可以看到下面这一段了:

QUOTE:
攻击    策略    道具    情报    待命    使用    交给    丢掉    观看    火计    山计    敌1部队    敌多部队    我方1部队  我方多部队  统御力  武力    智力    耐久力  策略值  焦热    火龙    猛火    大焦热  大火龙  大猛火  落石    山崩    山洪    大落石  大山崩  大山洪  查看    侦察    谍报    压迫    威压    骂声    挑拨    假情报  伪兵    反间    流言    牵制    止步    小补给  中补给  大补给  全补给  援队    援部    援军    援国    进言    献策    施策    觉醒    康复    解放    轻功    奋起    鼓舞    坚固    强阵    对策    回归    升格    封策   


作者: Shadowleech    时间: 2010-6-4 10:11

多谢啊,把BUFF类和治疗类基本都弄到猛火的范围了。就剩下看如何加入兀突骨了。
我把步弓的猛火都删了,火龙只有弓兵和高级别步兵才会,这样藤甲兵会不会太BT了?
象使不打算让木鹿王,让谁变好呢?
作者: Shadowleech    时间: 2010-6-4 10:20

或者这样,藤甲兵不作为可选兵种,兀突骨作为象使加入。反正他确实是骑大象的。
不过人物职业和加入如何修改,我还是不太明白,如果能指点下万分感激。
作者: Shadowleech    时间: 2010-6-5 02:07

策略的适用地形有么?
作者: lewulezo    时间: 2010-6-5 07:55

孔明传中的将领一般兵种也不能改变。我猜想修改了bakdata里面的人物初始兵种,加入时就会以相应兵种加入。具体倒也没试过。

bakdata有每个武将的初始数据,以0x3af0H诸葛亮的数据开始
06    0a   18       2D   2c 00 28   00 12    01    00 88 ff ff ff ff ff ff ff ff ff ff ff ff ff ff
阵营 武力 统御力 智力 耐力   策略      职业 等级     15个道具位置(诸葛亮自带蒲扇)
作者: lewulezo    时间: 2010-6-5 08:05



QUOTE:
原帖由 Shadowleech 于 2010-6-4 09:34 发表
我不想再重新改次UE了,如果没有其他办法干脆不改了。象使的群体混乱攻击加上奋起和小中大补给,藤甲兵的奋起加上刀枪不入怎么也够狠了。

依照刚刚 godtype 的帖子,可以在你现有的exe上面修改,不用盖掉你自己修改过的exe文件。

方法是:
第一步: 下载一个godtype修改后的exe文件,从0xC371H开始,一个一个字节复制到你自己的exe文件中,直到0xC3C7为止。这样,原来的装备兵种判定的代码就被覆盖掉了,变成装备可以任意设定适用什麽兵种。

第二步: 从0xC3C8开始,手动设定每种兵种是否适用每种道具种类。如果适用则用01,不适用则用00。一共40种兵种,循环25次(25种装备类型)。最后一个字节到0xc7af为止。我是先统统清零(道具都不能装备)后再设定的。这块区域原来是用来存放程序段的,现在程序被godtype简化了,所以留出了大片区域给你自由存放数据。

一个一个字节在UE里面改太累了,还容易出错,我自己是做了个修改器的。不过目前还是很粗燥,拿不出手。目前能支持修改兵种升级、策略和武将初始值。

[ 本帖最后由 lewulezo 于 2010-6-5 08:09 编辑 ]
作者: lewulezo    时间: 2010-6-6 10:07

自己做了个简单的修改器,可以修改exe文件和data文件。适用于godtype 的兵种全适用exe
目前还有些bug。

[ 本帖最后由 lewulezo 于 2010-6-6 18:24 编辑 ]

图片附件: [角色初始修改] sc_char.JPG (2010-6-6 10:07, 50.81 K) / 该附件被下载次数 186
http://xycq.org.cn/forum/attachment.php?aid=95551



图片附件: [兵种修改] sc_unittype.JPG (2010-6-6 10:07, 64.83 K) / 该附件被下载次数 186
http://xycq.org.cn/forum/attachment.php?aid=95552



图片附件: [道具修改] sc_item.JPG (2010-6-6 10:07, 48.29 K) / 该附件被下载次数 189
http://xycq.org.cn/forum/attachment.php?aid=95553



图片附件: [地形消耗修改] sc_terrain.JPG (2010-6-6 10:07, 40.03 K) / 该附件被下载次数 179
http://xycq.org.cn/forum/attachment.php?aid=95554



图片附件: [策略修改] sc_magic.JPG (2010-6-6 18:24, 56.47 K) / 该附件被下载次数 170
http://xycq.org.cn/forum/attachment.php?aid=95567


作者: Shadowleech    时间: 2010-6-6 12:26

哇这个太有用了。
作者: lewulezo    时间: 2010-6-6 15:30

我申请了个网盘在http://docs.baihui.com
用户名: lewulezo_share
密码: share

登录上去可以下载。
必须使用于godtype 的孔明传全兵种全装备随意指定版 详见http://www.xycq.net/forum/thread-210699-1-1.html
事先声明目前并不是稳定版本,修改前请备份你的ekd2w95.exe和bakdata.e2,否则改坏了我可不负责任哦。
因为我是用java写的,所以如果没有装java的话就要去装一个。(http://www.java.com)
点击ekd2mod.jar可以直接运行。

第一次做修改器,做的不好请多包涵。

[ 本帖最后由 lewulezo 于 2010-6-6 19:35 编辑 ]
作者: lewulezo    时间: 2010-6-8 11:10

新加了修改存档武将数据的功能,并提供一个根据武将初始值和exe文件里面对应的攻防等升级数字重算的五围参考值。

这样,即使玩了一半的存档,也可以随时根据最新的exe/bakdata修改的结果调整,不用每次修改了兵种属性后都从头再打一遍。
作者: lewulezo    时间: 2010-6-9 07:25

每关出场人物设定及其等级的代码:
一般从22 00 开始,每19个字节代表一个单位。
比如说玉溪峰之战的孟获 (SNR2D.E2 UE0x2111H)

B6 00  
武将ID

0D 15
横坐标,纵坐标

00 00 03 01 01 00 00
目前还没完全掌握,当中的03疑似是表示隐藏,触发剧情才出现。如改成01就是直接出场。

1f
兵种:南蛮骑兵

0A
等级:10级

00 00 00 00 00 00
每个将领最后都有6位00分隔
想把敌人改强改多,或者让敌人转职的话就在这里改。最多出场30个敌军。

[ 本帖最后由 lewulezo 于 2010-6-9 11:42 编辑 ]
作者: lewulezo    时间: 2010-6-9 07:58

每关的敌军出场位置如下:
每场战役有多个位置的,表示战前的选项不同,敌军的出场位置会有不同。

SNR0D.E2
博望坡战役:0x1672 0x1C83 0x221f 0x295f
新野战役:0x356B 0x3975 两个位置是火攻和守城
江夏急行战:0x40b1
长坂坡之战:0x47ab

SNR1D.E2
赤壁之战I:0xf1e
赤壁之战II:0x1485 0x1809
荆州南部战:0x27dd
绵竹、葭萌关战役:0x36f5
汉水之战:0x463b
麦城之战:0x5951
彝陵之战:0x6e3f

SNR2D.E2
阳平关之战:0x7d1
益州南部战:0x1577
玉溪峰之战:0x210f 0x24c7
夹山谷之战:0x2ca4
泸水之战:0x3247 0x3d97 0x41f6
西耳湖战役:0x4d4c 0x51f8
秃龙洞战役:0x5c76 0x6223
三江城战役:0x6d65
蛮都战役:0x75d7
桃叶江战役:0x7ff2
盘蛇谷战役:0x8a21

SNR3D.E2
风鸣山之战:0xc7a 0x1145
南安安定之战:0x1910 0x1eaa
天水城之战:0x283e 0x2ccc
冀城之战:0x3505 0x3a25
祁山之战:0x46bd 0x4d69
西平关之战:0x5624 0x5c2f
街亭之战:0x69a1
汉中退却战:0x6f96

SNR4D.E2
陈仓祁山之战:0xb6c 0x1004
陈仓攻城战: 0x18b6 0x1d61
祁山追击战: 0x2796 0x2d0b
二谷道之战:0x3d98 0x42ac
祁山之战2:0x4bb2
渭水之战:0x649a 0x69ea
葫芦谷之战: 0x71ea 0x78c9
五丈原之战:0x81c4 0x8a05

SNR5D.E2
眉城战役: 0x841 0xd56
武功战役:0x1562 0x1a83
长安攻城战1:0x2c3a
巴西之战:0x3e8c[孟获为敌军] 0x40cd[孟获为我军]
白帝城之战:0x49b4 0x4f50
江陵之战:0x5769
建宁之战:0x5ff4
长安攻城战2:0x76f1
华山之战: 0x812e 0x863d
函谷关之战:0x8e53 0x9384
洛阳之战1:0x9da1
洛阳之战2:0xa446

[ 本帖最后由 lewulezo 于 2010-6-11 11:11 编辑 ]
作者: lewulezo    时间: 2010-6-9 11:33

根据上面的分析,显然某种条件下,在最后一幕巴西之战中,孟获会作为敌军出场,并且会多一关重新平定南蛮。但是我是从来没有打出来过。
似乎我总是自言自语啊,没人关注一下吗

[ 本帖最后由 lewulezo 于 2010-6-9 12:08 编辑 ]
作者: Shadowleech    时间: 2010-6-9 12:41

PC版没有,PS和GBA,如果你之前抓他次数少会再次叛变。
作者: lewulezo    时间: 2010-6-9 12:49

我就是在猪猪的PC版的剧本文件里面发现的啊。应该是有的吧。
作者: 阿尔法孝直    时间: 2010-6-9 12:51

http://www.xycq.net/forum/viewthread.php?tid=208516
作者: lewulezo    时间: 2010-6-9 13:14

我怀疑是有的,但是目前可能是有bug,导致总打不出来。比如说某个跳转变量的赋值有问题。

也许可以通过分析剧本代码,查到是根据哪个变量判定,跳转到那个剧情的。
作者: lewulezo    时间: 2010-6-9 20:54

打开SNR5M.E2,可以找到相关的对白:大概贴一点
永昌 永昌 议事厅
你忘记丞相对你的大恩了吗?竟然对丞相恩将仇报!
不是恩将仇报,我也知道什么是羞耻。一再输给孔明,身为南蛮王,我颜面何在?
你怎么只会输,七擒七纵你还没输够吗?你这个蠢货!
什么?你这个家伙。啊! 糟了,我本不想杀他!
这次我一定要赢孔明,全军进军成都! 前进!前进!

孟获攻下永昌后,马不停蹄地向北进军。不久就又攻陷了建宁和越隽,转眼之间逼近了蜀国都城成都。可是,孔明也挥军直进,向成都赶来。
。。。。
终于捉住孟获了。得到了黄金1200! 得到了黄金1000! 成都议事厅   孟获,我以前也曾饶恕过你。但你的所作所为简直连猪狗都不如!
少罗嗦!要杀快杀!
嗯……该如何处置他呢?

决定对孟获等人的处分。
饶了他如何?如果将他处斩,南蛮也许会永远与我们为敌了。
留着他,也许他还会发动叛乱,我想应该将他处斩。

孟获,我只再饶你这一次,以后是战是和随你便吧。。。。

建宁之战。。。二选一
擒住孟获了吗? 建宁河滩   孟获,这次你无话可说了吧?投降吗?
好,我孟获对丞相心服口服,悔不该挑起争端。   
哦,这么说你愿意投降了?
望丞相恕罪。   
你终于醒悟了。忘记过去的恩怨,今后为蜀国效力吧。
是。多谢丞相。


地图我也用rpgViewer找到了,id是45。从地图上看,似乎是一场小规模的攻城战

[ 本帖最后由 lewulezo 于 2010-6-9 20:59 编辑 ]
作者: Shadowleech    时间: 2010-6-10 05:31

估计是没有放进去?类似英杰传那些人物?
不过我玩第三波和猪猪确实是有不同的,诸葛瞻的培养最后第三波是直接变,猪猪版是有选的。
我现在对贼兵的定位还是不知道怎么搞。几个类似兵种里。
物理综合南蛮兵第一,攻击力比步兵贼兵都高,防御血都不错。
武术家高攻移动力,但是不那么经打。
步兵最均衡。
贼兵不知道怎么来,纯粹高爆发移动的容易和武术家重复。

[ 本帖最后由 Shadowleech 于 2010-6-10 05:52 编辑 ]
作者: lewulezo    时间: 2010-6-10 10:56

我觉得不像是没放进去,而是可能有bug没有办法触发。(触发条件写错了,就像以前炎2里面罗德曼永远不能加入一样)

我倒是对少数民族兵种不是特别喜欢。个人偏好用步骑弓做主力阵容,我喜欢军容统一,不喜欢杂牌军。而且南蛮兵只有杨锋,杨锋在马谡被砍以后不升级。后面几关刻意培养太烦了,而且又没有三转。

我不知道孔明传的兵种相克究竟是写在什么地方的。说实话我真没觉得弓兵、炮车能克制骑兵。附加的攻击力实在太少了点。

[ 本帖最后由 lewulezo 于 2010-6-10 11:00 编辑 ]
作者: Shadowleech    时间: 2010-6-10 10:59

为了难度不受太大影响,南蛮兵也不能做太强,不然加上已经明显强化的南蛮骑兵有几关不SL几回没法全抓到孟获。就跟原版混乱满地一样。
步弓骑的话没混乱,也就弓兵尴尬点吧。
作者: lewulezo    时间: 2010-6-10 11:08

南蛮兵被我削弱了好几个版本,才控制住了第二幕的难度。然后到第三幕开始会发现明显的难度降低。

原本第二幕我军的虎兵武道家等级都很低,攻击力打在南蛮身上如同挠痒。(音效好像敲砖)。不得已,我只能把步兵的火计改回来,全部靠火烧过关。(南蛮对火系法术似乎有伤害加成)。

打完第二幕一看,几个步弓都早已转职,虎兵之类却几乎就没有升几级,再加上防御力弱,上去就趴。况且如此难度起伏实在说不过去。反正按剧情南蛮也就杨锋一个人,此人在历史上根本就没有加入过蜀军,在PS版本中不会加入,对他没感情。所以我现在就全面削弱南蛮兵了。

至于南蛮骑兵,反而不需要削弱其成长。因为第二幕南蛮骑兵才10级多,根据属性倒扣的规律,把南蛮骑兵的能力成长改的越强,敌军出场的南蛮骑兵数值越差。也不会影响最后一幕出场的孟获。

[ 本帖最后由 lewulezo 于 2010-6-10 11:10 编辑 ]
作者: lewulezo    时间: 2010-6-10 11:16

贼兵我军就廖化一个,原版的贼兵也是会奋起坚固的。我考虑把坚固去掉,留下奋起。

贼兵的成长不如武道家,如果自己能奋起奋起也还凑活,也算符合廖化的情况。但是贼兵的策略值很少,奋起不了几回,也算是一种限制吧,防止他成为buff机器。我把贼兵改成周围8个方格的攻击范围。

贼兵在山地上行动自如是一大优势。只有贼兵能在山地以1格的消耗移动。武道家的消耗为2。很多战役,有山地作卡位,配合贼兵在山地侧翼袭击会有很大优势。我设定的贼兵的防御力不高,因其可以凭借山地的掩护防止被人集火。血量略略上抬。

成长:攻击力3 防御力2 智力1->2 血量14->16 策略2
作者: Shadowleech    时间: 2010-6-10 11:25

不是属性倒扣,而是他们能斜砍,对当时还是重骑兵的我方骑兵优势太大。而且补给释放范围增加到猛火导致一群南蛮骑兵相互加血,不用策略很难打得动。
南蛮兵对策略防御力都很低。
作者: Shadowleech    时间: 2010-6-10 11:28

说实话,玩原版后面我带着廖化就是加攻击用的,城市里军乐移动太悲剧。我是把贼兵的爆发调到8,然后移动力增加到和武术家一样。
作者: lewulezo    时间: 2010-6-10 11:28

关于弓兵的定位确实有点尴尬。曹操传中,弓兵有对骑兵的很高额外伤害加成,射程也比弓骑兵灵活,因此才不显得鸡肋。孔明传中,射程只有那么几种似乎没法新加,兵种加成的地方我也还没找到。

为了提升弓兵的价值,我给弓兵保留了火计。想来弓兵本来也应该可以使用火矢之类的,有远程火计也很说得通(相应的,步兵只能学会很近的焦热了)。但是火计还是受到天气地形的影响巨大。我目前是把弓兵的攻击速度大大提升了,在连弩兵的情况下很容易打出双击,这样略略弥补了一些攻击力上不足的问题。
作者: lewulezo    时间: 2010-6-10 11:31



QUOTE:
原帖由 Shadowleech 于 2010-6-10 11:28 发表
说实话,玩原版后面我带着廖化就是加攻击用的,城市里军乐移动太悲剧。我是把贼兵的爆发调到8,然后移动力增加到和武术家一样。

以前我也这么干,谁让廖化这家伙义贼的攻击加成太差呢。但是怎么看,一个武将专门管buff?我怎么都觉得不太合理。
作者: lewulezo    时间: 2010-6-10 11:34

这几天我打算把我的修改器加上修改剧本文件中敌军出场设定的功能。

原本每关30个敌军位置常常都是空着的,我打算增加一些出场的敌军,并且相应的,提高一下敌人的等级。

还有主要是敌军的出场兵种,即使在bakdata里面修改了,但是在剧本中会被重置,所以只有改剧本才能真正改变的敌将的兵种。

另外简单的做了个军师骑兵的战场形象,让敌军的邓艾,钟会,司马师等转职为军师骑兵看看效果。
用曹操传的战场形象一导入就严重掉色(似乎曹操传的图像自带调色板,不知道怎么完好的弄到孔明传中),无奈只好自己随便画了一个。用的轻骑兵的身子配了个军师的帽子。

[ 本帖最后由 lewulezo 于 2010-6-10 11:41 编辑 ]
作者: lewulezo    时间: 2010-6-10 11:47



QUOTE:
原帖由 Shadowleech 于 2010-6-10 11:25 发表
不是属性倒扣,而是他们能斜砍,对当时还是重骑兵的我方骑兵优势太大。而且补给释放范围增加到猛火导致一群南蛮骑兵相互加血,不用策略很难打得动。
南蛮兵对策略防御力都很低。

我的南蛮骑兵倒是不能斜砍的。而且让他们能学会小补给的等级提高到20级了,这样第二幕,他们就再也别想无限加血了。
作者: Shadowleech    时间: 2010-6-10 11:48

你下的版本,改前困难难度司马懿 也是只有45级么?
作者: lewulezo    时间: 2010-6-10 11:49

我还没细看,但是我觉得等级似乎不是动态的,我只找到了一个敌军出场位置,并不会因为难度不同而变化。

刚刚看了一下,是45级。在SNR5D.e2中,位置0xA454H。

你如果觉得太容易,大可以改得高一点。

[ 本帖最后由 lewulezo 于 2010-6-10 11:57 编辑 ]
作者: lewulezo    时间: 2010-6-10 12:10

因为兵种升级属性加成可以是4,加上初始值,50级左右就接近255了。属性最大值不能超过255。而50级左右策略肯定都齐了,所以等级高到后来我觉得意义没那么大了,只是血量在增长而已。
作者: Shadowleech    时间: 2010-6-10 12:25

第三波版的司马懿困难难度是50级。
这么说也对,只是当初打到洛阳时看他才45级多少有点失落。

[ 本帖最后由 Shadowleech 于 2010-6-10 12:27 编辑 ]
作者: lewulezo    时间: 2010-6-10 12:39

我是觉得敌军的出场等级有点低了,如果你集中盯着几个人练,那么每关我军都比敌人等级高。尤其是什么赵云诸葛亮都高了敌人一大截了。

又不像曹操传,你升级敌人也跟着升级,所以等级高了没优势。
作者: Shadowleech    时间: 2010-6-10 12:55

我这次打算让赵云和马超都死掉。
作者: lewulezo    时间: 2010-6-11 10:58

最新修改了一些道具。

增加了适合军师、后勤队专用的防具:衣袍。其中包括,布衣、青衣、锦袍、八卦袍、太极袍、漆黑道服、鹤氅等
(利用原乐器类修改。因为我的军乐队已经彻底改造为军师骑兵,故而乐器已经无用)

增加了一种道具品种:轻甲。其中包括皮甲、环锁甲、赤甲、裲裆甲等,适合弓兵、炮兵、武道家、虎兵团等。
(利用原粮车类修改。后勤队的武器改用军扇类)

主要的目的是为了让所有的兵种都能装备武器和防具。

另军师骑兵可以装备剑类,枪类,扇类所有武器和铠甲、战马。修改姜维、邓艾、钟会、司马师为军师骑兵出场。陆逊改为都督(总司令)出战。修改了剧本文件

道具的价格适当调整。总体来说下降了一些。
调整了一些城市的武器商店。保证各种装备均可以买到,汉中和成都的武器店所售物品互补。长安、函谷关的物品互补。

给敌军主要将领装备上道具。举例说司马懿装备黑羽扇、漆黑道服。孙权装备古淀刀、黄金制铠等等。

好像改得越来越像PS版的设定了。。。

[ 本帖最后由 lewulezo 于 2010-6-11 11:07 编辑 ]
作者: lewulezo    时间: 2010-6-11 11:36

以下是各种兵种的地形加成存放位置:
exe文件
17种地形:平原 草原 树林 荒地 山地 城内 桥梁 村庄 鹿寨 兵营 粮仓 宝库 城池 关隘 民宅 城门 栅栏
0x51e48 步兵、弓兵、軍師、幻術
0x51e59 騎兵、後勤
0x51e6a 战车
0x51e7b 炮车
0x51e8c 弓騎
0x51e9d 贼兵
0x51eae 武道家
0x51ebf 猛虎师
0x51ed0 南蠻、藤甲、羌兵、北狄
0x51ee1 南蛮骑兵
0x51ef2 皇帝/都督
0x51f03 象兵
0x51f14 蛇兵

其中,0A表示100%(无加成)
0B表示110%
09表示90%

[ 本帖最后由 lewulezo 于 2010-6-11 15:03 编辑 ]
作者: Shadowleech    时间: 2010-6-11 11:36

其实武术家这种不装备防具也是为了平衡。
陆逊如果变成都督,江陵一个皇帝加上一个都督还有诸葛谨这个军师会不会太难打?同样夷陵时我方当时能力都比较烂,能对付得了他么?
作者: lewulezo    时间: 2010-6-11 11:46



QUOTE:
原帖由 Shadowleech 于 2010-6-11 11:36 发表
其实武术家这种不装备防具也是为了平衡。
陆逊如果变成都督,江陵一个皇帝加上一个都督还有诸葛谨这个军师会不会太难打?同样夷陵时我方当时能力都比较烂,能对付得了他么?

防具本来就是增加一些玩家可控的因素。职业的基本攻防,可以通过升级属性来调整。但是有的兵种有防具有的兵种没有,会加大属性之间的不平衡,使精心设定的升级参数在实战中有偏差。
想让武道家别太硬,我宁可选择让他防御力升级数字变少,但是防具还是可以装备。这增加了玩家可选的余地。

夷陵之战,赵云已经很强了,初期的赵云恐怖的说。况且,夷陵之战总体来说,目的是并不是打退敌军,而是帮刘备逃跑。

至于江陵的皇帝,我觉得也没那么难打吧。军师上去混乱+骂声,然后一顿猛K。武术家上去多踹两脚也就搞定了。
作者: 阿尔法孝直    时间: 2010-6-11 11:48     标题: 回复 #73 lewulezo 的帖子

江陵,孔明碰孙权直接过关……
作者: lewulezo    时间: 2010-6-11 11:50

其实我修改的很多思路都是借鉴PS版本的。

PS版本所有的将领都可以装备武器防具。我觉得PS版兵种的平衡性比PC版好得多。
所以我第一步工作就是尽可能的把PS版中的一些设定在PC版中逐步实现。
作者: lewulezo    时间: 2010-6-11 11:55

兵种地形加成还是差距很大的,比如说看看战车

平原130%
草原120%
荒地60%
城内80%
差好多

我觉得炮车在城内的攻防应该得到加成。目前的版本反而是削弱,不太合理。
作者: Shadowleech    时间: 2010-6-11 11:57

是直接过关,不过前面还是得小心点,一靠近那些兵全收缩到孙权身边,孙权又是会动的,一下未必碰得到他。
作者: lewulezo    时间: 2010-6-11 12:02



QUOTE:
原帖由 Shadowleech 于 2010-6-11 11:57 发表
是直接过关,不过前面还是得小心点,一靠近那些兵全收缩到孙权身边,孙权又是会动的,一下未必碰得到他。

都最后几关了,再不难点也说不过去嘛。

我可能还是受到一些新孔明传(曹操传mod)的影响,敌人每次大将出来都比杂兵强一大截(好像至少高6级)。特别是该死的张郃(青龙弓+穿云矢双射),不知道为了他S/L了几回。
但是原版孔明呢,张郃出场打我一下也没怎么疼,然后猛火+武道家踹两脚就搞定了。我最近打算就是要把每关敌人的主将都加强些,别和杂兵差不多就没意思了。

张郃是孔明传中魏军主要的核心干将。从第一幕出场到洛阳之战还在为敌军奋斗。我现在很想设法让他成为敌军中的一个标志性人物。可惜孔明传的战场特殊形象就只有那么几个人,也不知道能不能加。

[ 本帖最后由 lewulezo 于 2010-6-11 12:05 编辑 ]
作者: Shadowleech    时间: 2010-6-11 12:30

新孔明传太BT了,我到张颌那关就没心思玩了,双射也就算了,还是无死角,近战都反击你。

张颌的确是从北伐出到最后,不过他居然连祝融都打不过。还有他最后只是败了还是被孟获干掉了?
作者: 阿尔法孝直    时间: 2010-6-11 12:33



QUOTE:
原帖由 lewulezo 于 2010-6-11 11:55 发表
兵种地形加成还是差距很大的,比如说看看战车

平原130%
草原120%
荒地60%
城内80%
差好多

我觉得炮车在城内的攻防应该得到加成。目前的版本反而是削弱,不太合理。

最近有些忙,有点懒得去看文件了。麻烦能不能把所有兵种的地形加成都贴出来?这样好分析攻击伤害公式。
作者: Shadowleech    时间: 2010-6-11 12:33

其实曹真的戏份也不比司马懿少太多,从南蛮之前就登场了,基本就是北伐前半部分的BOSS,直到北伐后期才死。
作者: lewulezo    时间: 2010-6-11 12:47



QUOTE:
原帖由 Shadowleech 于 2010-6-11 12:30 发表
新孔明传太BT了,我到张颌那关就没心思玩了,双射也就算了,还是无死角,近战都反击你。

张颌的确是从北伐出到最后,不过他居然连祝融都打不过。还有他最后只是败了还是被孟获干掉了?

新孔明传在我这边已经被我改的面目全非。两个难度下的差异很大。在休闲难度下,敌军出场等级都和我军平均水平差不多。部分BT道具弱化一些。莫名其妙的敌军复活和我军全场的debuff在休闲难度下都取消掉了。另外友军出场都受我军控制,这样打打倒还觉得挺不错的。

总体来说新孔明传做的也是相当优秀的。最后几关的地图和老孔明传完全不同了。特别是巴西守城战给我有耳目一新的感觉。不能用老孔明传的玩法去玩新孔明传,那样会死的很难看。在敌人潮水般的猛攻下,没有几个强力的肉盾根本就别想过关了。
作者: Shadowleech    时间: 2010-6-11 12:47

还有个建议,就是把一些关卡的BOSS,比如最后的司马懿皇帝行动不要设成站那不动,这样把那些帮手引出来再打起来太轻松了。英杰传和孔明传最后几关都有这个问题。
作者: 阿尔法孝直    时间: 2010-6-11 13:09     标题: 回复 #83 Shadowleech 的帖子

不动比动更难打。

不动,鹿砦有地形优势,而且被围住后没有定向攻击限制,而且无法用火攻,还有自动补血。

动的话,这些优势立马消失。
作者: Shadowleech    时间: 2010-6-11 13:12

新孔明传只能说,不是我喜欢的类型吧。最怨念就是没白耳兵。
作者: lewulezo    时间: 2010-6-11 13:17



QUOTE:
原帖由 阿尔法孝直 于 2010-6-11 12:33 发表


最近有些忙,有点懒得去看文件了。麻烦能不能把所有兵种的地形加成都贴出来?这样好分析攻击伤害公式。

似乎我刚刚对应的兵种有问题,因为我现在没法上游戏验证只能猜猜,我把数字都贴上来大家看看。

[ 本帖最后由 lewulezo 于 2010-6-11 13:30 编辑 ]

图片附件: ana.JPG (2010-6-11 13:30, 66.69 K) / 该附件被下载次数 174
http://xycq.org.cn/forum/attachment.php?aid=95928


作者: 阿尔法孝直    时间: 2010-6-11 13:19     标题: 回复 #86 lewulezo 的帖子

第一行怀疑是步兵和弓兵共有。
作者: lewulezo    时间: 2010-6-11 13:20

原版孔明传也没有白耳兵。新版孔明传的剧本是参照原版孔明传的,所以也没了。想要白耳兵自己动手修改一下不就有了么。
作者: lewulezo    时间: 2010-6-11 13:23

倒数第三行疑似皇帝/总司令

[ 本帖最后由 lewulezo 于 2010-6-11 13:53 编辑 ]
作者: lewulezo    时间: 2010-6-11 13:34

最后一行像不像是蛇兵团?
作者: 阿尔法孝直    时间: 2010-6-11 13:44

忘了说了,藤甲兵也能翻栅栏,但是能不能翻房子就不知道了。
作者: lewulezo    时间: 2010-6-11 14:08

我覺得藤甲兵應該是繼承別的兵種的屬性, 自己不單獨設定的吧
作者: lewulezo    时间: 2010-6-11 14:42

找到比較可靠的代碼了,在0x51e20,這裡是繼承表,分別定義了哪些兵種共用同一個地形加成屬性
00 步兵、弓兵、軍師、幻術
01 騎兵、後勤
02 戰車
03 炮車
04 弓騎
05 賊兵
06 武道
07 虎兵
08 南蠻、藤甲、羌兵、北狄
09 蠻騎
0a 皇帝、都督
0b 象兵
0c 蛇兵

上面我列出的表格的每一行對應上面的一個類別。比如說第八行(07)是虎兵團

相應的0x51cc0 是地形移動力的兵種共用關係表
00 步兵、弓兵、軍師、皇帝、都督、幻術
01 騎兵、弓騎兵
02 戰車
03 炮車
04 賊兵
05 武道
06 虎兵
07 後勤
08 南蠻、藤甲、羌兵、北狄
09 蠻騎
0a 象兵
0b 蛇兵

兩個稍有不同。

最後,悄悄的說,我還發現這個版本的繼承表有個bug,就是霹靂車的地形加成竟然是按照弓騎兵類型計算的。有沒有感覺到在城裡的大炮車比霹靂車砸的痛?(大炮車130%,霹靂車90%)
而連弩騎兵的地形加成竟然是按照步兵類計算。

[ 本帖最后由 lewulezo 于 2010-6-11 14:57 编辑 ]
作者: Shadowleech    时间: 2010-6-11 15:39



QUOTE:
原帖由 阿尔法孝直 于 2010-6-11 13:09 发表
不动比动更难打。

不动,鹿砦有地形优势,而且被围住后没有定向攻击限制,而且无法用火攻,还有自动补血。

动的话,这些优势立马消失。

不动,把他手下干完,有太多的时间来布阵对付他。至少他身边几个人的活动应该和他一样,不然分开来打太容易了。或者给他安个免疫混乱的。

[ 本帖最后由 Shadowleech 于 2010-6-11 15:42 编辑 ]
作者: Shadowleech    时间: 2010-6-11 15:40

策略的适用地形有办法找到就太赞了。
作者: lewulezo    时间: 2010-6-11 16:47



QUOTE:
原帖由 Shadowleech 于 2010-6-11 15:40 发表
策略的适用地形有办法找到就太赞了。

事实上,只有两类策略受到地形的限制。我担心又是hard code写死的。

[ 本帖最后由 lewulezo 于 2010-6-11 16:52 编辑 ]
作者: lewulezo    时间: 2010-6-11 16:51

单位的AI有好几种,

出击模式:朝我军最近的目标移动并攻击
待击模式:如果移动范围+攻击范围内有我军,则主动攻击,不然原地待命
固守模式:如果攻击范围内有我军,则攻击,不然原地待命
逃跑模式:朝某个坐标移动,不会主动攻击

曹操传中,单位的AI是出场设定的时候就决定了的。孔明传我估计也是类似的设定。
作者: 阿尔法孝直    时间: 2010-6-11 17:41     标题: 回复 #97 lewulezo 的帖子

看一下是否还有这种AI类型:
部队朝着一个坐标移动,且会主动攻击。当到达该坐标后,AI自动变成待击。
作者: lewulezo    时间: 2010-6-11 17:57



QUOTE:
原帖由 阿尔法孝直 于 2010-6-11 17:41 发表
看一下是否还有这种AI类型:
部队朝着一个坐标移动,且会主动攻击。当到达该坐标后,AI自动变成待击。

那不是星际争霸的A攻击吗,忘记有没有了,回家查查看。

曹操传中可以通过编写剧本事件来实现。判定XX到达XX范围触发事件,AI改变。

我记得曹操传里面还有一种跟随模式,就是跟随敌方另一个将领,并且会主动攻击距离不远的我军。
作者: 阿尔法孝直    时间: 2010-6-11 18:02

可以参考英杰传的AI:
http://www.xycq.net/forum/viewthread.php?tid=130263

看看这些AI孔明传是否都有。
作者: lewulezo    时间: 2010-6-12 00:29

在我的修改器加上了地形效果的修改功能
劇本出場武將的編輯功能

图片附件: [地形效果修改] tm.JPG (2010-6-12 00:29, 77.26 K) / 该附件被下载次数 184
http://xycq.org.cn/forum/attachment.php?aid=95989



图片附件: [存檔武將修改] sv.JPG (2010-6-12 00:29, 65.13 K) / 该附件被下载次数 173
http://xycq.org.cn/forum/attachment.php?aid=95990



图片附件: [劇本敵軍修改] sn.JPG (2010-6-12 00:29, 78.75 K) / 该附件被下载次数 167
http://xycq.org.cn/forum/attachment.php?aid=95991


作者: lewulezo    时间: 2010-6-12 13:10



QUOTE:
原帖由 阿尔法孝直 于 2010-6-11 18:02 发表
可以参考英杰传的AI:
http://www.xycq.net/forum/viewthread.php?tid=130263

看看这些AI孔明传是否都有。

打开剧本文件,找到武将出场的地方。距离说明泸水之战,孟获逃窜
B6 00  
武将ID :孟获

1b 10
横坐标,纵坐标

00 00 01
未知(似乎有面朝的方向)

00
直接出场(01表示隐藏)

06
将领AI,06表示逃窜

02 04
逃窜的目的地坐标(2,4)

1f
兵种:南蛮骑兵

0b
等级:11级

00 00 00 00 00 00
每个将领最后都有6位00分隔


目前已知的AI代码:
00:防守模式。如果移动范围+攻击范围内有我军就出击,否则不动。
01:攻击模式。如果移动范围+攻击范围内有我军就出击,否则向我军最近的目标移动。
02:追击模式。如果移动范围+攻击范围内有我军就出击,否则向指定的我军目标移动。后两个字节是追击的目标武将ID。比如说麦城之战追击关羽
03:坚守模式。不会移动,如果攻击范围内有我军就攻击。很多关敌军主将的AI。
04:行军模式。如果移动范围+攻击范围内有我军就出击,否则就向指定坐标移动,到达目标后切换为防守模式。后两个字节是目的地的坐标。敌军攻打我方城池采用的AI。
05:追随模式。如果移动范围+攻击范围内有我军就出击,否则向目标的坐标移动。后两个字节是跟随目标武将的ID。比如赤壁之战II中,曹军将领的AI
06:逃跑模式。不会主动攻击,只会朝指定目的地移动,如果没有路径可以通向目的地则原地发呆。后两个字节是逃跑的目的地坐标。比如说赤壁之战II的曹操。

[ 本帖最后由 lewulezo 于 2010-6-12 14:40 编辑 ]
作者: 阿尔法孝直    时间: 2010-6-12 14:19

一直觉得01-攻击模式并不是攻击最近的我军,而是:

1、当移动范围+攻击范围内有我军就按照00-防守模式行动(并不一定攻击最近目标)
2、当移动范围+攻击范围内没有我军时,朝着最近的我军方向移动。
作者: lewulezo    时间: 2010-6-12 14:33



QUOTE:
原帖由 阿尔法孝直 于 2010-6-12 14:19 发表
一直觉得01-攻击模式并不是攻击最近的我军,而是:

1、当移动范围+攻击范围内有我军就按照00-防守模式行动(并不一定攻击最近目标)
2、当移动范围+攻击范围内没有我军时,朝着最近的我军方向移动。

我上面列出的只是个大概的表现。

具体的AI很复杂,有很多细节。
我发现,如果敌人的移动范围+攻击范围内有多个我军目标的话,他确实不一定攻击最近的目标,而是有个优先级别。

首先是会优先攻击那些移动范围+攻击范围中可以一击必杀的我军。(比如说脆弱的后勤队,垂死的部队)
其次是诸葛亮,虽然诸葛亮并不是防御力最差的部队,但是常常就是敌人的主要集火对象
再次是步兵,我也不知道为什么步兵为什么那么拉仇恨。敌人一队弓骑过来,明明范围里有骑兵他就盯着步兵狂打。哪怕我给步兵加了两层坚固。

实测:祁山之战I
我军左下方出场:张苞、李严、王平、邓芝。魏军大量弓骑兵从左上方出发。
我军不动,对方弓骑兵过桥后部分转头攻打左下方。

邓芝只要冒个头就被对方乱射,一箭就红血,两箭就撤退了。
如果邓芝躲的很后面,倒霉的就是李严,几乎所有敌人都对着李严猛K。李严被打退后轮到王平,最后是才是张苞。

[ 本帖最后由 lewulezo 于 2010-6-12 14:49 编辑 ]
作者: lewulezo    时间: 2010-6-12 18:16

接下来就是把商店售卖物品修改和敌军出场的AI加入修改器

另外,exe还有几处神秘的地方我还在研究。

从0x514f8 ~ 0x517b5 共计26字节循环27次

从0x517b8 ~ 0x517e7 共计48字节的字节规律,有点像是各兵种的某种隐藏属性。其中对应弓兵、弓骑兵、炮车、虎兵团和幻术师的位置为03,别的都是02。不知道代表着什么。

从0x517e8 ~ 0x51817 共计48字节的字节规律,也像是各兵种的某个隐藏属性。

另外,存盘文件中除了记录孔明红心数量,必然还记着曾经几擒孟获,马谡是否斩首等全局属性。现在还在研究中。

[ 本帖最后由 lewulezo 于 2010-6-12 18:28 编辑 ]
作者: 阿尔法孝直    时间: 2010-6-13 00:57

晕死,使用LZ的修改器设置路径总提示“不正确的孔明传路径”

我已经将Godtype的EXE复制到孔明传的路径并改名为EKD2W95.exe了。
作者: lewulezo    时间: 2010-6-13 08:12

那個目錄下必須有
EKD2W95.exe
bakdata.e2
snr0d.e2 劇本是需要解壓過的那個版本。
以及0號存盤文件。它上來檢驗了這幾個東西。如果少就會報說找不到路徑

也許是你沒有任何存盤文件所致。我想我應該把這個檢驗去掉。

我今天早上又更新了修改器的build文件,改了一些用戶介面的問題,也不再會校驗存盤文件是否存在。對用的庫文件稍微瘦身了一下,去下載一個新的吧。
我還放了一個ekd2mod.jar在共享文件夾里,大小只有100多K。如果以前下過,就不用重新下個完整版,只要把這個jar文件下載蓋上去就好了。

如果不用godtype的exe文件,則不要修改兵種屬性(存儲兵種適用裝備會出問題)。別的功能照用。

我考慮以後加入自動把godtype那段代碼補丁進去的功能。

[ 本帖最后由 lewulezo 于 2010-6-13 09:33 编辑 ]
作者: 阿尔法孝直    时间: 2010-6-13 12:58

涉及到剧本文件的修改,一点到那个菜单项程序就自动退出。

无论剧本文件是不是解压过的都不行。

[ 本帖最后由 阿尔法孝直 于 2010-6-13 13:02 编辑 ]
作者: lewulezo    时间: 2010-6-13 14:36

是点击“修改剧本敌军设定”之后会退出,还是选择"打开剧本文件“的时候?还是两种情况都会自动退出?

[ 本帖最后由 lewulezo 于 2010-6-13 14:37 编辑 ]
作者: 阿尔法孝直    时间: 2010-6-13 14:36     标题: 回复 #109 lewulezo 的帖子

都会。
作者: lewulezo    时间: 2010-6-13 14:54

除了这个,别的功能能用吗

是我早上更新的最后版本吧。
作者: 阿尔法孝直    时间: 2010-6-13 15:23     标题: 回复 #111 lewulezo 的帖子

别的功能都行,就这两个有问题。

程序就是用你今天上午更新的。

-----------------------------------------------

PS:道具说明可以超过原有长度,但是所有道具的总说明不能超过原有的总长度。

EKD2W95.EXE的4FFE0H开始:

7C 01 45 00 A8 01 45 00

每4个字节代表每个道具说明的起始位置。

例如 7C 01 45 00----->50000H+017CH=5017CH就是焦热书说明的起始位置(别忘了加上50000H)

   A8 01 45 00----->50000H+01A8H=501A8H火龙书

[ 本帖最后由 阿尔法孝直 于 2010-6-13 15:32 编辑 ]
作者: lewulezo    时间: 2010-6-13 20:07

好,目前我还不支持超过原有的道具说明长度,回头我把它加上
作者: 阿尔法孝直    时间: 2010-6-13 20:26     标题: 回复 #113 lewulezo 的帖子

该功能主要用于修正“大落石书”与“大山崩书”道具说明相反的问题。

[ 本帖最后由 阿尔法孝直 于 2010-6-13 20:31 编辑 ]
作者: lewulezo    时间: 2010-6-13 22:30

確實反了,我在修改時候也發現這個問題。
其實道具的說明索引ID,在bakdata里也可以改變指定的位置。原來的遊戲有挺多bug的。

關於你劇本文件打開出錯的問題在我這邊很難重現
我現在也不知道是爲什麽。我猜想是我的文件和你的不一樣,讀取的位置不對,導致讀出了id超出標準的定義

比如說武將最大512個,結果它讀出了一個很大的數字,結果數組越界了。等下我把我自己這裡的劇本文件上傳一下看看你那邊是否還發生同樣情況。

今明兩天我事情比較忙可能來不及修改,我會儘快改掉這些問題的。

[ 本帖最后由 lewulezo 于 2010-6-13 22:40 编辑 ]

附件: snr.zip (2010-6-13 22:34, 75.11 K) / 该附件被下载次数 183
http://xycq.org.cn/forum/attachment.php?aid=96132
作者: 阿尔法孝直    时间: 2010-6-13 22:45

我的和你的剧本文件是完全一样的,用MD5验证的。
作者: lewulezo    时间: 2010-6-13 22:57

那麻煩你幫我看一下error消息好嗎,多謝。方法如下:

windows下cmd命令窗口
進入編輯器所在目錄
運行命令 java -jar ekd2mod.jar 用這個方式運行程序
然後選擇“修改劇本”,出錯退出的話正常情況會在窗口打出一大堆出錯信息,我分析一下。謝謝
作者: lewulezo    时间: 2010-6-13 23:03

等我過兩天有空把這個帖子整理一下,有關exe文件從4D2B0H到52755 的大段數據基本上都已經破解了。

然後我想把所有資料放到頂樓做個匯總。
作者: 阿尔法孝直    时间: 2010-6-13 23:43

Exception in thread "main" java.lang.ExceptionInInitializerError
        at ekd2mod.data.EnemySettingHelper.loadAll(EnemySettingHelper.java:135)
        at ekd2mod.ui.MainUI.changeModPage(MainUI.java:134)
        at ekd2mod.ui.MainUI.access$1(MainUI.java:96)
        at ekd2mod.ui.MainUI$3.widgetSelected(MainUI.java:235)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3910)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503)
        at ekd2mod.ui.MainUI.open(MainUI.java:90)
        at ekd2mod.ui.MainUI.main(MainUI.java:58)
Caused by: java.lang.NumberFormatException: null
        at java.lang.Integer.parseInt(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at ekd2mod.data.Combat.loadAll(Combat.java:31)
        at ekd2mod.data.Combat.<clinit>(Combat.java:18)
        ... 11 more
作者: lewulezo    时间: 2010-6-13 23:54

哦,我知道為啥了,你的info.xml有點問題,那個文件我重新上傳一個。你就把那個文件蓋掉就行了。

那個文件在我加入劇情修改后增加了戰役名在裏面。暫時性所有的戰役名都從那裡讀出來。因為目前懶得去研究戰役的名字存在哪裡。

[ 本帖最后由 lewulezo 于 2010-6-13 23:58 编辑 ]
作者: 阿尔法孝直    时间: 2010-6-14 01:11

现在可以了,多谢。

战役的名字存在hexzmap.e2的末尾。(需要解压)

溪峰战役” 错写成 “溪峰战役” 的错误就可以从那里修正。

[ 本帖最后由 阿尔法孝直 于 2010-6-14 12:30 编辑 ]
作者: lewulezo    时间: 2010-6-14 14:55

有解压过的hexzmap.e2文件吗
作者: 阿尔法孝直    时间: 2010-6-14 15:05

这个

附件: HEXZMAP.rar (2010-6-14 15:05, 67.88 K) / 该附件被下载次数 200
http://xycq.org.cn/forum/attachment.php?aid=96185
作者: lewulezo    时间: 2010-6-16 22:19

修改器最近更新:

敌军出场设定增加了AI的设定
商店售卖道具修改

只要更新jar文件即可。

非常感谢阿尔法孝直的提供的解压HEXZMAP.rar文件。不过我暂时还没有采用读取其中的战役名称。

[ 本帖最后由 lewulezo 于 2010-6-16 22:22 编辑 ]
作者: 阿尔法孝直    时间: 2010-6-16 22:58

1、不知能不能增加修改存档文件里面的金钱、红心、孔明的位置(在大地图还是某城的议事厅等地点)、剧本的位置(就是运行到游戏的哪里了)

2、能不能共享源代码?
作者: lewulezo    时间: 2010-6-16 23:58



QUOTE:
原帖由 阿尔法孝直 于 2010-6-16 22:58 发表
1、不知能不能增加修改存档文件里面的金钱、红心、孔明的位置(在大地图还是某城的议事厅等地点)、剧本的位置(就是运行到游戏的哪里了)

2、能不能共享源代码?

1. 那几个位置具体在哪里我还没细看。如果有现成的结果,那我可以马上加进去。

2. 因为陆陆续续改的关系,目前的代码稍微有点乱,我想稍微重构一下再分享出来。

目前界面有些地方输入起来感觉不太顺手,易用性不好。我考虑调整一下。
作者: lewulezo    时间: 2010-6-17 11:13

我现在最想改的是孔明传中的兵种相克设置。

我对孔明传中兵种相克的弱化感觉太不爽了,不知道有高手能分析一下吗。
作者: 阿尔法孝直    时间: 2010-6-17 11:37     标题: 回复 #127 lewulezo 的帖子

干脆就分析一下整个物理攻击伤害公式吧。

我一直找不到函数入口。
作者: 阿尔法孝直    时间: 2010-6-18 20:30

http://www.xycq.net/forum/viewthread.php?tid=192374

孔明传的秘籍,偶尔发现的,但总是找不准触发的充要条件。麻烦分析一下。
作者: 阿尔法孝直    时间: 2010-6-22 01:28

既然攻击速度关系到命中率/回避率、双击率/被双击率,那么暴击率/被暴击率由什么决定呢?
作者: lewulezo    时间: 2010-6-22 11:54



QUOTE:
原帖由 阿尔法孝直 于 2010-6-22 01:28 发表
既然攻击速度关系到命中率/回避率、双击率/被双击率,那么暴击率/被暴击率由什么决定呢?

这个还真看不出。我没有实测过各种兵种互相攻击时的暴击率差异。目前凭感觉似乎是随机的。曹操传有士气的设定,但是孔明传里没有发现过。

关于兵种的攻击速度,虽然是隐藏的属性,但是有个策略叫“牵制”,是用来削弱攻击速度的。所以对玩家来说,并不是算是完全隐藏的。
但是暴击率还真没有任何其他地方有提示。我怀疑孔明传中尚未加入士气类的因素。
作者: 阿尔法孝直    时间: 2010-6-22 12:10

一般来说,练级时尽量减少暴击,使得
经验值/伤害 尽可能高。

在不考虑补给频率的情况下,一般反击出连击越多越好,但又要少暴击。

这时候“牵制”就很有用了。

---------------------------------------------------------------------

暴击相关的属性有没有可能隐藏在文件另一段数据中?

[ 本帖最后由 阿尔法孝直 于 2010-6-23 11:50 编辑 ]
作者: lewulezo    时间: 2010-6-23 11:48

我还真没想过那么多。实际上我一般都不特意练级。为了保持难度,总是压制己方将领的等级不高于敌人2级以上。要想打压赵云还真难,除非从来不派他上场。

至于暴击率的问题,不同的兵种,暴击率真的不一样吗?
作者: 阿尔法孝直    时间: 2010-6-23 11:50     标题: 回复 #133 lewulezo 的帖子

同问
作者: lewulezo    时间: 2010-6-23 12:46

恐怕只有等高人来做战斗函数分析才能得到结论了吧。

说实话,我以前从没想过能这么改孔明传。直到看见有大大破解的孔明传exe出现。

我喜爱孔明传主要是因为它的剧情。一直想自己把诸多不合理的设定修改一下,现在已经离实现迈进了许多了。
作者: acmilan3102    时间: 2010-7-16 11:36

很强悍的技术贴,慢慢学习中。
作者: lewulezo    时间: 2010-7-16 14:45

孔明传引擎的缺陷:

孔明传(PC版)这个游戏,和曹操传不同的是,他的将领之间的差距只有初始数值不同,而升级的得到的提升却没有任何差异。比如说同样是骑兵,用赵云对比一个无名骑兵队,升级时候提升的武力值,除去随机因素外就都一样。

也就是说,越到后面,名将和普通武将的差距就越小。而且因为随机波动,甚至会出现同等级下,名将的数值还不如一个平庸武将的结果。这个设定真是让人郁闷。PS/GBA版本为了改变这个问题把升级的随机因素去掉,改成固定值。但是这样一来就不得不完全抛弃那些武力果之类额外提升固定属性的设定。

而且由于初期初始数字差距比较大,所以名将砍杂毛小兵一刀一个。但是到了后期40级以上时候,通过升级得到的属性值已经占了主导地位,武将初期数字的差异已经显得非常不明显。

还有一个问题就是属性255封顶,导致50级之后光升级,除了血量还在上升以外别的数字满了没有任何提升。这样导致高等级后面练级就没啥意义了。

还有就是每关出场只能有30个敌人。比起曹操传的每关最多80个敌人的设定少多了。而且似乎也没有武将复活的设定。这样导致剧本增强受到了一定的限制。

[ 本帖最后由 lewulezo 于 2010-7-16 14:50 编辑 ]
作者: ctermiii    时间: 2010-7-17 13:52

04 05 06 04 05 06 05 06 07 03 03 03 02 02 02 05
06 07 04 04 04 05 05 08 0A 06 08 03 03 03 05 07
07 07 05 05 02 05 04 05
exe里0x451F50的位置这40个数是什么?
台词:某某某全力一击的时候,会先取对应兵种的这个数,比如骑兵(代号06)取第7个数05
然后取100以内的随机数,如果随机数小于这个05,就发生:“某某某全力一击”。

某个状态下,这个值会被/2


0042397D  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]
00423980  |.  8B0C88        MOV ECX,DWORD PTR DS:[EAX+ECX*4]
00423983  |.  E8 0E6A0000   CALL 0042A396         ;这里就是取0x451F50表格里的某个兵种对应的数并查看武将状态
00423988  |.  33DB          XOR EBX,EBX
0042398A  |.  8AD8          MOV BL,AL      ;这个就是上边提到的结果05
0042398C  |.  6A 64         PUSH 64                                          
0042398E  |.  E8 95390200   CALL 00447328           ;这两个是求100以内的随机数
00423993  |.  83C4 04       ADD ESP,4
00423996  |.  3BD8          CMP EBX,EAX
00423998  |.  0F86 16000000 JBE EKD2Win.004239B4                     ;  全力一击的概率
0042399E  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
004239A1  |.  8D0440        LEA EAX,DWORD PTR DS:[EAX+EAX*2]
004239A4  |.  99            CDQ
004239A5  |.  2BC2          SUB EAX,EDX
004239A7  |.  C1F8 01       SAR EAX,1
004239AA  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
004239AD  |.  C745 F0 01000>MOV DWORD PTR SS:[EBP-10],1
作者: 阿尔法孝直    时间: 2010-7-17 13:57

这么说,暴击的概率只与攻击方兵种有关?

QUOTE:
原帖由 ctermiii 于 2010-7-17 13:52 发表
某个状态下,这个值会被/2

这么说,“牵制”策略不仅影响攻击速度,还影响暴击率?

[ 本帖最后由 阿尔法孝直 于 2010-7-17 14:09 编辑 ]
作者: ctermiii    时间: 2010-7-17 14:52

从代码来看只有这种情况,只跟兵种和随机数有关;你可以把哪个64H改成比表格里最小的数还小的,比如改为02,除了打不中之外,次次全力一击
作者: 阿尔法孝直    时间: 2010-7-18 00:15

计算随机数的函数:

sub_447328 proc near

arg_0= dword ptr  8

push    ebp
mov     eax, 0
mov     ebp, esp
cmp     [esp+arg_0], 2
jb      short loc_447343

---------------------------------------------

unsigned int __cdecl sub_447328(unsigned int a1)
{
  unsigned int result; // eax@1

  result = 0;
  if ( a1 >= 2 )
    result = sub_4472FC() % a1;
  return result;
}

---------------------------------------------------

显然采用求余算法,再看看调用的4472FC:

---------------------------------------------------

sub_4472FC proc near
mov     eax, dword_453B20
imul    eax, 41C64E6Dh
add     eax, 3039h
mov     dword_453B20, eax
and     eax, 7FFF0000h
shr     eax, 10h
retn
sub_4472FC endp

---------------------------------------------------

unsigned int __cdecl sub_4472FC()
{
  dword_453B20 = 1103515245 * dword_453B20 + 12345;
  return ((1103515245 * dword_453B20 + 12345) & 0x7FFF0000u) >> 16;
}

---------------------------------------------------

可见这是一个迭代算法,那么,知道了当前的随机数,就可以直接算出下一个随机数;
而0x453B20处在每一战开始时都恢复成 01 00,即双字节的0x00 01,那么每战随机序列都是相同的。
于是就可以解释为什么打法及结果可以百分之百重现的问题。
作者: 阿尔法孝直    时间: 2010-7-18 01:06

用IDA看了一下138楼的代码,发现这是其中的一小部分,其完整代码为:

signed int __thiscall sub_4238AF(int this, unsigned int a2)
{
  signed int result; // eax@26
  unsigned int v3; // ebx@6
  int v4; // eax@10
  int v5; // eax@12
  char v6; // al@14
  unsigned int v7; // ebx@14
  char v8; // al@14
  char v9; // al@16
  char v10; // al@17
  unsigned int v11; // eax@17
  int v12; // [sp+Ch] [bp-14h]@1
  int v13; // [sp+14h] [bp-Ch]@1
  int v14; // [sp+18h] [bp-8h]@1
  signed int v15; // [sp+1Ch] [bp-4h]@1
  signed int v16; // [sp+10h] [bp-10h]@1

  v12 = this;
  v13 = (int)((char *)&dword_4556E8 + 54 * sub_409130(*(_DWORD *)(this + 4 * *(_BYTE *)(this + 16))));
  v14 = (int)((char *)&dword_4556E8 + 54 * sub_409130(*(_DWORD *)(v12 + 4 * *(_BYTE *)(v12 + 17))));
  v15 = 0;
  v16 = 0;
  switch ( *(_BYTE *)(v12 + 18) )
  {
    case 1:
      v15 =  sub_42A4AD(*(_DWORD *)(v12 + 4 * *(_BYTE *)(v12 + 16)), v14, 1); //怀疑这个是攻击伤害函数!!!
      if ( a2 >= 1 || *(_BYTE *)(v12 + 19) == 1 )  //如果是反击
        v15 /= 2;   //反击伤害减半
      sub_423769(v12);
      if ( v15 > 0 )
      {
        v3 = (unsigned __int8)sub_42A396(*(_DWORD *)(v12 + 4 * *(_BYTE *)(v12 + 16)));
        if ( v3 > sub_447328(0x64u) )  //如果是暴击
        {
          v15 = 3 * v15 / 2; //暴击伤害为150%
          v16 = 1;
        }
      }
      break;
    case 2:
      v4 = v12;
      LOBYTE(v4) = *(_BYTE *)(v12 + 19);
      v15 = sub_4087E1(v14, v4);
      break;
    case 3:
      v5 = v12;
      LOBYTE(v5) = *(_BYTE *)(v12 + 19);
      v15 = sub_408907(v14, v5);
      break;
  }
  if ( v15 > 0 )
  {
    v6 = sub_409280(v14);
    v7 = sub_447328((unsigned __int8)v6);
    v8 = sub_409280(v13);
    if ( v7 >= sub_447328((unsigned __int8)v8) && v16 != 1 )
    {
      v10 = sub_409280(v14);
      v11 = sub_447328((unsigned __int8)v10);
      v15 = sub_4472CB(v15, v11 % 6);
    }
    else
    {
      v9 = sub_409280(v13);
      v15 += sub_447328((unsigned __int8)v9) % 6;  //原来攻击伤害的随机加成是0~5的随机数
    }
  }
  if ( sub_409220() == 1 )
  {
    if ( !sub_40BAB0() )
      v15 = 8 * v15 / 10;
    if ( sub_40BAB0() == 2 )
      v15 = 12 * v15 / 10;
  }
  if ( v16 == 1 )
  {
    if ( v15 > 0 )
    {
      sub_409580();
      sub_438F35(0, (char)(char *)dword_45181C);
    }
  }
  result = *(_DWORD *)(v12 + 4 * *(_BYTE *)(v12 + 17) + 26);
  if ( result >= v15 )
    result = v15;
  *(_DWORD *)(v12 + 42) = result;
  return result;
}

------------------------------------------------------------------------------------

unsigned int __thiscall sub_42A4AD(int this, int a2, int a3)
{
  unsigned int result; // eax@2
  int v4; // eax@1
  char v5; // al@1
  int v6; // [sp+10h] [bp-24h]@1
  char v7; // [sp+28h] [bp-Ch]@1
  char *v8; // [sp+18h] [bp-1Ch]@3
  char *v9; // [sp+1Ch] [bp-18h]@3
  unsigned __int8 v10; // [sp+2Ch] [bp-8h]@3
  unsigned __int8 v11; // [sp+20h] [bp-14h]@3
  unsigned int v12; // [sp+24h] [bp-10h]@3
  unsigned int v13; // [sp+30h] [bp-4h]@3
  unsigned int v14; // [sp+14h] [bp-20h]@3
  unsigned int v15; // [sp+Ch] [bp-28h]@10

  v6 = this;
  v4 = sub_41EF0C(a2);
  v5 = sub_429061(v4);
  v7 = v5;
  if ( (unsigned __int8)v5 == 255 )
  {
    result = 0;
  }
  else
  {
    v8 = (char *)&dword_46C098 + 23 * (unsigned __int8)v7;
    v9 = (char *)&dword_4556E8 + 54 * *(_DWORD *)v6;
    v10 = sub_42A321();
    v11 = sub_42A321();
    v12 = 0;
    v13 = (unsigned int)v10 * sub_42A137() / 0xA;
    v14 = (unsigned int)v11 * sub_42A227() / 0xA;
    if ( sub_447328(v13) >= v14 / 0xA || !a3 || sub_409150(16) )
    {
      if ( (v14 + 1) >> 1 < v13 )
        v12 = v13 - (v14 >> 1);
      else
        v12 = 1;
      v15 = (unsigned __int8)sub_4092A0();
      v15 -= 9;
      if ( v15 <= 0x1E )
      {
        switch ( *((_BYTE *)byte_42A66D + v15) )  //这个会不会是求兵种相克的修正?
        {
          case 0:
          case 5:
            v12 = 3 * v12 >> 2;
            break;
          case 1:
            v12 = 3 * v12 >> 1;
            break;
          case 2:
          case 4:
          case 6:
            v12 >>= 1;
            break;
          case 3:
            v12 = 1;  //藤甲兵??
            break;
          case 7:
            break;
        }
      }
      result = v12;
    }
    else
    {
      result = 0;
    }
  }
  return result;
}

[ 本帖最后由 阿尔法孝直 于 2010-7-18 11:29 编辑 ]
作者: ctermiii    时间: 2010-7-18 11:59

IDA真强大……


光荣的随机数,从三国志4~9(我只改过这些,其他不知道)以及英杰传系列,随机数都是差不多的算法;
肯定有41C64E6DH和3039H这两个数并且一前一后,所以我直接去搜索这两个数,先确认随机数函数是哪个,对它下断点,然后进游戏攻击一下,断下来就肯定是相关的函数了,剩下的就是分析程序了。

你说哪个随机数的问题,只能尽量多的让处理玩家动作的函数调用随机函数,才有现在经常说的改变行动顺序来改变随机结果的办法;但早期系统资源有限,如果调用太多会影响系统响应速度,所以只有某些情况下才调用;

你可以改啊,改成每战开始,随机数不复位就行。

不过据我所知,这个0001不是每战开始复位的,而是每次运行exe文件的时候才这样;

[ 本帖最后由 ctermiii 于 2010-7-18 12:10 编辑 ]
作者: 阿尔法孝直    时间: 2010-7-18 12:01     标题: 回复 #143 ctermiii 的帖子

你先看看0x0042A4AD开始的这段,我怀疑这儿是攻击伤害的算法
作者: 阿尔法孝直    时间: 2010-7-18 12:21     标题: 回复 #143 ctermiii 的帖子

试了第1战,第1回合(赵云不动,直接回合结束转到敌军行动,1骑兵攻击赵云-2血,被赵云反击连击剩4血;另一骑兵攻击赵云不中被赵云反击-23血)之后总撤退,再次执行第1回合,结果和前面的相同。证明总撤退后随机数复位。

[ 本帖最后由 阿尔法孝直 于 2010-7-18 12:23 编辑 ]
作者: ctermiii    时间: 2010-7-18 12:40

嗯,那跟战旗类有关,其他界面都是剧情没有战斗,可能没有参与随机数;
像三国志类的,一般这个随机数会写入存档的
作者: ctermiii    时间: 2010-7-18 14:27

截取一小部分:

这里应该只是物理攻击伤害吧,我的诸葛亮才1级,没策略,没试。
这个伤害算出来后,返回我之前贴的函数后边计算,
最最终的伤害是你已经写出来的那些:
1、致命一击
2、反击
3、加上或者减去等级因素的随机值


结论是:
除了几个特殊兵种怕或者不怕物理攻击外,没有什么相克关系
可能是用兵种成长特性和初始特性来决定所谓的相克了
....................................
0042A514   .  8B4D DC       MOV ECX,DWORD PTR SS:[EBP-24]
0042A517   .  E8 05FEFFFF   CALL <EKD2Win.GetBingZhongDiXingXiuZheng>
0042A51C   .  8845 F8       MOV BYTE PTR SS:[EBP-8],AL
0042A51F   .  8B4D E4       MOV ECX,DWORD PTR SS:[EBP-1C]
0042A522   .  E8 FAFDFFFF   CALL <EKD2Win.GetBingZhongDiXingXiuZheng>
0042A527   .  8845 EC       MOV BYTE PTR SS:[EBP-14],AL
0042A52A   .  C745 F0 00000>MOV DWORD PTR SS:[EBP-10],0
0042A531   .  8B4D DC       MOV ECX,DWORD PTR SS:[EBP-24]
0042A534   .  E8 FEFBFFFF   CALL <EKD2Win.GetGongJi_>                                  ;  攻击方攻击力
0042A539   .  33C9          XOR ECX,ECX
0042A53B   .  8A4D F8       MOV CL,BYTE PTR SS:[EBP-8]
0042A53E   .  0FAFC1        IMUL EAX,ECX
0042A541   .  B9 0A000000   MOV ECX,0A
0042A546   .  2BD2          SUB EDX,EDX
0042A548   .  F7F1          DIV ECX
0042A54A   .  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX                               ;  攻击方攻击力x攻击方所在地形因素/10
0042A54D   .  8B4D E4       MOV ECX,DWORD PTR SS:[EBP-1C]
0042A550   .  E8 D2FCFFFF   CALL <EKD2Win.GetFangYu_>                                  ;  防御方防御力
0042A555   .  33C9          XOR ECX,ECX
0042A557   .  8A4D EC       MOV CL,BYTE PTR SS:[EBP-14]
0042A55A   .  0FAFC1        IMUL EAX,ECX
0042A55D   .  B9 0A000000   MOV ECX,0A
0042A562   .  2BD2          SUB EDX,EDX
0042A564   .  F7F1          DIV ECX
0042A566   .  8945 E0       MOV DWORD PTR SS:[EBP-20],EAX                              ;  防御力x地形因素/10
0042A569   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]                               ;  攻击方攻击力x攻击方所在地形因素/10
0042A56C   .  50            PUSH EAX                                                   ; /Arg1
0042A56D   .  E8 B6CD0100   CALL <EKD2Win.Random%Arg1>                                 ; \Random%Arg1
0042A572   .  83C4 04       ADD ESP,4
0042A575   .  8BC8          MOV ECX,EAX
0042A577   .  BB 0A000000   MOV EBX,0A
0042A57C   .  8B45 E0       MOV EAX,DWORD PTR SS:[EBP-20]
0042A57F   .  2BD2          SUB EDX,EDX
0042A581   .  F7F3          DIV EBX
0042A583   .  3BC8          CMP ECX,EAX                                                ; 随机数%(攻击力x地形因素/10)大于等于防御力x地形因素/10/10则往下走
0042A585   .  0F83 28000000 JNB EKD2Win.0042A5B3
0042A58B   .  837D 0C 00    CMP DWORD PTR SS:[EBP+C],0
0042A58F   .  0F84 1E000000 JE EKD2Win.0042A5B3
0042A595   .  6A 10         PUSH 10                                                    ; /这个不知道什么状态,如果满足前面条件,此状态下不会受伤
0042A597   .  8B4D E4       MOV ECX,DWORD PTR SS:[EBP-1C]                              ; |
0042A59A   .  E8 B1EBFDFF   CALL <EKD2Win.CheckIfSomeStatus>                           ; \CheckIfSomeStatus
0042A59F   .  85C0          TEST EAX,EAX
0042A5A1   .  0F85 0C000000 JNZ EKD2Win.0042A5B3
0042A5A7   .  33C0          XOR EAX,EAX
0042A5A9   .  E9 E6000000   JMP EKD2Win.0042A694
0042A5AE   .  E9 D9000000   JMP EKD2Win.0042A68C
0042A5B3   >  8B45 E0       MOV EAX,DWORD PTR SS:[EBP-20]                              ;  防御力x地形因素/10
0042A5B6   .  40            INC EAX
0042A5B7   .  C1E8 01       SHR EAX,1                                                  ;  (防御力x地形因素/10+1)/2
0042A5BA   .  3B45 FC       CMP EAX,DWORD PTR SS:[EBP-4]
0042A5BD   .  0F82 0C000000 JB EKD2Win.0042A5CF
0042A5C3   .  C745 F0 01000>MOV DWORD PTR SS:[EBP-10],1         ;(防御力x地形因素/10+1)/2大于攻击方攻击力x攻击方所在地形因素/10,只受1点伤害
0042A5CA   .  E9 0E000000   JMP EKD2Win.0042A5DD
0042A5CF   >  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0042A5D2   .  8B4D E0       MOV ECX,DWORD PTR SS:[EBP-20]
0042A5D5   .  C1E9 01       SHR ECX,1
0042A5D8   .  2BC1          SUB EAX,ECX                                                ;  
0042A5DA   .  8945 F0       MOV DWORD PTR SS:[EBP-10],EAX               ; 小于的话,伤害为:防御力x地形因素/10-攻击力x地形因素/10/2
0042A5DD   >  8B4D E4       MOV ECX,DWORD PTR SS:[EBP-1C]
0042A5E0   .  E8 BBECFDFF   CALL <EKD2Win.GetBingZhong_>                               ;  物理攻击只跟防御方兵种有关,除了下边特殊兵种,没有其他相克关系
0042A5E5   .  33C9          XOR ECX,ECX
0042A5E7   .  8AC8          MOV CL,AL
0042A5E9   .  894D D8       MOV DWORD PTR SS:[EBP-28],ECX
0042A5EC   .  E9 3C000000   JMP EKD2Win.0042A62D
0042A5F1   >  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]                              ; 防御方兵种代号9、A、B的时候伤害为75%
0042A5F4   .  8D0440        LEA EAX,DWORD PTR DS:[EAX+EAX*2]
0042A5F7   .  C1E8 02       SHR EAX,2
0042A5FA   .  8945 F0       MOV DWORD PTR SS:[EBP-10],EAX
0042A5FD   .  E9 8A000000   JMP EKD2Win.0042A68C
0042A602   >  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]                              ;  防御方兵种代号1B、1C、1D伤害达150%
0042A605   .  8D0440        LEA EAX,DWORD PTR DS:[EAX+EAX*2]
0042A608   .  C1E8 01       SHR EAX,1
0042A60B   .  8945 F0       MOV DWORD PTR SS:[EBP-10],EAX
0042A60E   .  E9 79000000   JMP EKD2Win.0042A68C
0042A613   >  C16D F0 01    SHR DWORD PTR SS:[EBP-10],1                                ;  兵种代号1E、1F被攻击只有伤害50%
0042A617   .  E9 70000000   JMP EKD2Win.0042A68C
0042A61C   >  C745 F0 01000>MOV DWORD PTR SS:[EBP-10],1                                ;  某个bt兵种,代号22H,只有1点伤害0042A623   .  E9 64000000   JMP EKD2Win.0042A68C                                       ;  其他没有另外加成伤害
0042A628   .  E9 5F000000   JMP EKD2Win.0042A68C
0042A62D   >  836D D8 09    SUB DWORD PTR SS:[EBP-28],9
0042A631   .  837D D8 1E    CMP DWORD PTR SS:[EBP-28],1E
0042A635   .  0F87 51000000 JA EKD2Win.0042A68C
0042A63B   .  8B45 D8       MOV EAX,DWORD PTR SS:[EBP-28]                              ;  兵种代号-9
0042A63E   .  33C9          XOR ECX,ECX
0042A640   .  8A88 6DA64200 MOV CL,BYTE PTR DS:[EAX+42A66D]
0042A646   .  FF248D 4DA642>JMP DWORD PTR DS:[ECX*4+42A64D]
0042A64D   .  F1A54200      DD EKD2Win.0042A5F1                                        ;  分支表 被用于 0042A646
0042A651   .  02A64200      DD EKD2Win.0042A602
0042A655   .  13A64200      DD EKD2Win.0042A613
0042A659   .  1CA64200      DD EKD2Win.0042A61C
0042A65D   .  13A64200      DD EKD2Win.0042A613
0042A661   .  F1A54200      DD EKD2Win.0042A5F1
0042A665   .  13A64200      DD EKD2Win.0042A613
0042A669   .  8CA64200      DD EKD2Win.0042A68C
0042A66D   .  00            DB 00                                                      ;  分支 0042A64D 索引表
0042A66E   .  00            DB 00
0042A66F   .  00            DB 00
0042A670   .  07            DB 07
0042A671   .  07            DB 07
0042A672   .  07            DB 07
0042A673   .  07            DB 07
0042A674   .  07            DB 07
0042A675   .  07            DB 07
0042A676   .  07            DB 07
0042A677   .  07            DB 07
0042A678   .  07            DB 07
0042A679   .  07            DB 07
0042A67A   .  07            DB 07
0042A67B   .  07            DB 07
0042A67C   .  07            DB 07
0042A67D   .  07            DB 07
0042A67E   .  07            DB 07
0042A67F   .  01            DB 01
0042A680   .  01            DB 01
0042A681   .  01            DB 01
0042A682   .  02            DB 02
0042A683   .  02            DB 02
0042A684   .  07            DB 07
0042A685   .  07            DB 07
0042A686   .  03            DB 03
0042A687   .  04            DB 04
0042A688   .  05            DB 05
0042A689   .  07            DB 07
0042A68A   .  07            DB 07
0042A68B   .  06            DB 06
0042A68C   >  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]                              ;  最终伤害
0042A68F   .  E9 00000000   JMP EKD2Win.0042A694
0042A694   >  5F            POP EDI
0042A695   .  5E            POP ESI
0042A696   .  5B            POP EBX
0042A697   .  C9            LEAVE
0042A698   .  C2 0800       RETN 8

[ 本帖最后由 ctermiii 于 2010-7-18 14:36 编辑 ]
作者: lewulezo    时间: 2010-7-18 21:34

抛砖引玉,沉寂几天,这帖子终于迎来分析高人。

我想如果在把伤害额外计算的代码修改一下,然后就像godtype自定义兵种对应装备那样搞个数据区,就可以自定义所有各种兵种之间的兵种相克关系了。真是功德无量啊。
作者: ctermiii    时间: 2010-7-24 17:54

按照不增加区段、不占用其他位置的原则

从0x42A5E9~0x42A693这大概150+字节的位置可以重写一下

要给代码留点位置,大概能用的作为数据的区域在80字节;

如果能把表格限制在80字节以内,重写一下就好了,你也会写程序的就不说什么了。

有难度的是,要40个兵种全列在表格里的话,按相克能力1个字节,也要40x40字节;

但如果按照大类来算的话,倒是可以

比如把弓和弓骑、炮车合并一类等等,如果能商定一个都可以接受的原则出来,

缩减为8或者9大类兵种的话,还是可以写的。

合并大类倒也不用担心相克太单调,毕竟还有兵种各自的地形适应性在那里呢,一起做个修改就是了

这种相克和合并大类的数据,每个人看法都不一样,标准难定。





我看了一下,0x4813A0之后位置好像有3000个字节可以用,如果想占用这个地方的话,就不是什么大问题了。
作者: lewulezo    时间: 2010-7-24 21:22     标题: 回复 #149 ctermiii 的帖子

我同意。我觉得没必要搞40*40这么大的矩阵数据,这样修订数据也会很麻烦。首先带3转,2转的兵种算是一个兵科,这样也就只有23种了。

合并大类的做法可以参照兵种地形效果,设定一个数据区,把所有兵种分别指定对应的一个大类ID(40个字节),然后再设定各大类之间的相克值即可。

我对汇编不怎么熟,如果有高人能帮忙编写一下,将不胜感激。

[ 本帖最后由 lewulezo 于 2010-7-24 21:26 编辑 ]
作者: ctermiii    时间: 2010-7-25 12:07

这种还算简单..
我不想对原来的布局动太多地方,所以把表格插在代码中间了,程序返回位置所在的代码没有动;
这样前边的几个跳转指令位置不用改,省点麻烦;
但有这个位置:
0x42A68C这个位置被开辟来做兵种大类了
导致前边有个jmp指令:
0042A5AE   . /E9 D9000000   JMP EKD2Win.0042A68C
这个代码od会认不出来;
不过这句代码完全没用上过,所以我虽然给的附件里改了,不改也一样


设定原则是这样:
从0x42A66C开始:
00~27这40个兵种,需要一一给他设定一个大类,编号00~07,一共8大类,默认00

相克系数是0~255直接的任意值,我设定的结果是:
实际伤害=基本伤害x相克系数/100
这样可以有75%,65%这种不是整十的系数存在,设定系数的时候也不用绕弯子了,方便一点
最大是255%,最小0,如果嫌系数范围不够,也可以把100这个数缩小一下。
当然实现方法很多,这里仅仅是一个例子
0x42A62C开始为相克系数表格结构:
每8个一组,分别是第00,第01……第07类克制其他大类的系数;默认00,需要自己设定;
很明显,自己克制自己系数为1,也就是100%,因为我这个例子是除以100的,所以对应设置应该为64H;
如果你改了除数,记得系数也要同步改一下;
藤甲兵22H作为防御方时候单独计算;

例子看附件:

下边是程序:

0042A5E9   .  83F9 22       CMP ECX,22                               ;  是否藤甲兵
0042A5EC   .  75 05         JNZ SHORT EKD2Win_.0042A5F3
0042A5EE   .  2BC0          SUB EAX,EAX
0042A5F0   .  40            INC EAX                                  ;  藤甲兵伤害为1
0042A5F1   .  EB 37         JMP SHORT EKD2Win_.0042A62A
0042A5F3   >  894D D8       MOV DWORD PTR SS:[EBP-28],ECX
0042A5F6   .  8B4D DC       MOV ECX,DWORD PTR SS:[EBP-24]
0042A5F9   .  E8 A2ECFDFF   CALL EKD2Win_.004092A0                   ;  攻击方兵种
0042A5FE   .  2BC9          SUB ECX,ECX
0042A600   .  8AC8          MOV CL,AL
0042A602   .  0FB681 6CA642>MOVZX EAX,BYTE PTR DS:[ECX+42A66C]       ;  攻击方大类
0042A609   .  8B4D D8       MOV ECX,DWORD PTR SS:[EBP-28]
0042A60C   .  0FB689 6CA642>MOVZX ECX,BYTE PTR DS:[ECX+42A66C]       ;  防御方大类
0042A613   .  8D04C8        LEA EAX,DWORD PTR DS:[EAX+ECX*8]         ;  相克系数相对位置,也是选8大类的好处,计算相对位置只3个字节就够了
0042A616   .  0FB680 2CA642>MOVZX EAX,BYTE PTR DS:[EAX+42A62C]       ;  相克系数(0~255),同大类请设64H,可设8个档次
0042A61D   .  8B4D F0       MOV ECX,DWORD PTR SS:[EBP-10]
0042A620   .  F7E9          IMUL ECX
0042A622   .  2BC9          SUB ECX,ECX
0042A624   .  2BD2          SUB EDX,EDX
0042A626   .  B1 64         MOV CL,64                                ;  最终伤害=基本伤害x相克系数/100
0042A628   .  F7F9          IDIV ECX
0042A62A   >  EB 68         JMP SHORT EKD2Win_.0042A694
0042A62C      00            DB 00                                    ;  0大类相克系数
0042A62D      00            DB 00
0042A62E      00            DB 00
0042A62F      00            DB 00
0042A630      00            DB 00
0042A631      00            DB 00
0042A632      00            DB 00
0042A633      00            DB 00
0042A634      00            DB 00                                    ;  1
0042A635      00            DB 00
0042A636      00            DB 00
0042A637      00            DB 00
0042A638      00            DB 00
0042A639      00            DB 00
0042A63A      00            DB 00
0042A63B      00            DB 00
0042A63C      00            DB 00                                    ;  2
0042A63D      00            DB 00
0042A63E      00            DB 00
0042A63F      00            DB 00
0042A640      00            DB 00
0042A641      00            DB 00
0042A642      00            DB 00
0042A643      00            DB 00
0042A644      00            DB 00                                    ;  3
0042A645      00            DB 00
0042A646      00            DB 00
0042A647      00            DB 00
0042A648      00            DB 00
0042A649      00            DB 00
0042A64A      00            DB 00
0042A64B      00            DB 00
0042A64C      00            DB 00                                    ;  4
0042A64D      00            DB 00
0042A64E      00            DB 00
0042A64F      00            DB 00
0042A650      00            DB 00
0042A651      00            DB 00
0042A652      00            DB 00
0042A653      00            DB 00
0042A654      00            DB 00                                    ;  5
0042A655      00            DB 00
0042A656      00            DB 00
0042A657      00            DB 00
0042A658      00            DB 00
0042A659      00            DB 00
0042A65A      00            DB 00
0042A65B      00            DB 00
0042A65C      00            DB 00                                    ;  6
0042A65D      00            DB 00
0042A65E      00            DB 00
0042A65F      00            DB 00
0042A660      00            DB 00
0042A661      00            DB 00
0042A662      00            DB 00
0042A663      00            DB 00
0042A664      00            DB 00                                    ;  7
0042A665      00            DB 00
0042A666      00            DB 00
0042A667      00            DB 00
0042A668      00            DB 00
0042A669      00            DB 00
0042A66A      00            DB 00
0042A66B      00            DB 00
0042A66C      00            DB 00                                    ;  00兵种开始,自定义大类0~7
0042A66D      00            DB 00
0042A66E      00            DB 00
0042A66F      00            DB 00
0042A670      00            DB 00
0042A671      00            DB 00
0042A672      00            DB 00
0042A673      00            DB 00
0042A674      00            DB 00
0042A675      00            DB 00
0042A676      00            DB 00
0042A677      00            DB 00
0042A678      00            DB 00
0042A679      00            DB 00
0042A67A      00            DB 00
0042A67B      00            DB 00
0042A67C      00            DB 00
0042A67D      00            DB 00
0042A67E      00            DB 00
0042A67F      00            DB 00
0042A680      00            DB 00
0042A681      00            DB 00
0042A682      00            DB 00
0042A683      00            DB 00
0042A684      00            DB 00
0042A685      00            DB 00
0042A686      00            DB 00
0042A687      00            DB 00
0042A688      00            DB 00
0042A689      00            DB 00
0042A68A      00            DB 00
0042A68B      00            DB 00
0042A68C      00            DB 00
0042A68D      00            DB 00
0042A68E      00            DB 00
0042A68F      00            DB 00
0042A690      00            DB 00
0042A691      00            DB 00
0042A692      00            DB 00
0042A693      00            DB 00
0042A694   >  5F            POP EDI

[ 本帖最后由 ctermiii 于 2010-7-25 13:52 编辑 ]

附件: EKD2Win.rar (2010-7-25 12:20, 127.11 K) / 该附件被下载次数 234
http://xycq.org.cn/forum/attachment.php?aid=99836
作者: 阿尔法孝直    时间: 2010-7-25 12:13     标题: 回复 #151 ctermiii 的帖子

另外我还是没看懂147楼里面所谓的“加上或者减去等级因素的随机值”

具体是怎么算的?什么情况下要加上/减去?
作者: ctermiii    时间: 2010-7-25 12:27

是这样的:
1、前边计算出基础伤害Abase;
2、取得防御方等级Flevel,然后取得0~FLevel-1的随机值Frnd1;
3、取得攻击方等级Glevel,然后取得0~Glelev-1的随机值Grnd1;
4、比较Frnd1与Grnd1的大小;
5、1如果Frnd1<Grnd1,或者产生了全力一击;
那么伤害会随机增加0~Glevel-1之间的随机值Grnd2,结果为Abase=Abase+Grnd2
5、2如果Frnd1>=Grnd1,
那么伤害随机减少0~Flevel-1的随机值Frnd2,如果伤害为1,减少了2,那只能取0和1-2的最大值,即保证伤害不能为负数,结果为Abase=Max(Abase-Frnd2,0)
6、确认防御方是我军(15个部队,不知道是否包括援军,游戏我实在没玩过)还是敌军;
如果是我军,那个会去确认游戏难度;
6、1难度为初级的话,我军受伤害为Abase=Abasex80%;
6、2难度为高级的话,我军受伤害为Abase=Abasex120%;
注:没有中级难度计算,那明显伤害为Abase=Abasex100%;
7、取得防御方当前耐久力,如果最终的ABase>=耐久力的话,伤害Abase=耐久力;
如果伤害<耐久力的哈,Abase不变,这个是为了防止打出比当前耐久力还大的数;

[ 本帖最后由 ctermiii 于 2010-7-25 13:21 编辑 ]
作者: 阿尔法孝直    时间: 2010-7-25 14:20     标题: 回复 #153 ctermiii 的帖子

第5步可以看出,低等级的去打藤甲兵,很容易杯具的
作者: lewulezo    时间: 2010-7-26 11:16

非常感谢ctermiii 的贡献。

我的修改器已经更新。修复了多个bug,并且加入以下内容:

1. 在现成的exe上打上godtype的"兵种装备自由设定补丁"的功能。如果要修改兵种属性也会提示打上补丁。
2. 在现成的exe上打上ctermiii 的"兵种相克自由设定补丁"的功能。如果要修改兵种相克属性也会提示打上补丁。
3. 提供兵种相克设定的功能。

源代码我已经上传至共享目录中。

[ 本帖最后由 lewulezo 于 2010-7-27 08:41 编辑 ]
作者: ctermiii    时间: 2010-7-27 13:06

其实我是挺喜欢屠电脑的,比如可以改造一下如果是我军,伤害永远为0,如果是敌人,次次连击、全力一击。
如果每战的敌人出来,兵种是剧本定死的,不会应为上一战的影响而变化的话,就好玩了

要增加游戏难度的话,可以改成如果是敌军,发生了致命一击或者连击或者某种条件吧,那么他是一个很优秀的敌人啊,可以给他增加一个加强攻或者防或者攻防的buffer,好好保护起来

如果他下次出现,兵种不变的话,可以考虑如果他表现优秀,给他兵种随机升级为一种更强大的,就好玩了。
作者: 藏陋网友    时间: 2010-7-31 17:55

有没有复刻版的三国志英杰传的修改器啊~~~
作者: lewulezo    时间: 2010-8-2 16:11



QUOTE:
原帖由 藏陋网友 于 2010-7-31 17:55 发表
有没有复刻版的三国志英杰传的修改器啊~~~

鄙人对破解程序逻辑并不在行。
要是有强人对三国志英杰传的数据分析有成果的话,我也可以做修改器方便大家自由设定或者补丁。
作者: 阿尔法孝直    时间: 2010-8-16 01:21

刚刚看了一下,北狄兵的成长大约是
武/智/统
0/1/17

无语了………………
作者: lewulezo    时间: 2010-8-16 12:55

是吗,我不知道北狄兵的兵种属性升级在哪里存放。我本以为是继承另一个兵种来的。
作者: 669999    时间: 2010-8-21 13:29

偶是新手,看不懂啊
作者: 阿尔法孝直    时间: 2010-8-24 16:36



QUOTE:
目前已知的AI代码:
00:防守模式。如果移动范围+攻击范围内有我军就出击,否则不动。
01:攻击模式。如果移动范围+攻击范围内有我军就出击,否则向我军最近的目标移动。
02:坚守模式。不会移动,如果攻击范围内有我军就攻击。很多关敌军主将的AI。
03:追击模式。如果移动范围+攻击范围内有我军就出击,否则向指定的我军目标移动。后两个字节是追击的目标武将ID。比如说麦城之战追击关羽
04:行军模式。如果移动范围+攻击范围内有我军就出击,否则就向指定坐标移动,到达目标后切换为防守模式。后两个字节是目的地的坐标。敌军攻打我方城池采用的AI。
05:追随模式。如果移动范围+攻击范围内有我军就出击,否则向目标的坐标移动。后两个字节是跟随目标武将的ID。比如赤壁之战II中,曹军将领的AI
06:逃跑模式。不会主动攻击,只会朝指定目的地移动,如果没有路径可以通向目的地则原地发呆。后两个字节是逃跑的目的地坐标。比如说赤壁之战II的曹操。

05:追随模式,该AI是不会主动攻击的,只会跟着人走。
载入内存后就是04=XX 无攻击移动。

还有,04:行军模式,载入内存后是00=(X,Y) 移动。目前无法确定这种AI在移动范围+攻击范围内无目标,但是移动范围+策略范围内有目标时是否出击。

[ 本帖最后由 阿尔法孝直 于 2010-8-24 16:41 编辑 ]
作者: 37610716    时间: 2010-8-26 15:55

坐等像曹操传那样的深入研究成果。
作者: 37610716    时间: 2010-9-8 23:26

楼主能不能用用C,VB,C++等做成EXE的应用程序。
作者: lewulezo    时间: 2011-5-25 10:49     标题: 回复 #164 37610716 的帖子

可以运行就好了。我是做java开发的,不太习惯使用编译成exe的语言,抱歉哦。
作者: 笨笨熊    时间: 2011-8-31 13:44     标题: 拜神


作者: wimmc    时间: 2012-12-29 16:37     标题: 回复 #41 lewulezo 的帖子

这个修改器怎么下载啊?
作者: wimmc    时间: 2012-12-30 11:30

exe格式不符,无法打上兵种装备自由指定补丁,无法修改。

这是什么意思?是我的版本不对吗?
作者: wimmc    时间: 2012-12-30 20:24

我打不开BAKDATA.E2文件,一开就是乱码,要用什么工具打开?
作者: yinyusheng    时间: 2014-1-14 15:55

猪猪复刻版的 孔明传 现在实在找不到哪里还有下载了。。。。而且下来的孔明传也不知道 是不是猪猪复刻的 烦恼西
作者: yinyusheng    时间: 2014-1-15 15:28

奇怪的就是无法修改地方的兵种 修改后无效,但是只要对方变成我们的 就有效 不知道为什么
作者: 後小來    时间: 2014-1-29 00:48

请问修改剧本会闪退,该如何解决呢?
作者: wimmc    时间: 2021-5-31 11:38

感谢共享的修改器,正在试试。
作者: wimmc    时间: 2021-6-4 00:07

太感谢了




欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/) Powered by Discuz! 5.0.0