![Board logo](images/default/logo_bg.jpg)
标题: 二次行动交换问题 [打印本页]
作者:
冰麒麟 时间: 2012-8-6 09:47 标题: 二次行动交换问题
二次行动或二次移动,可以通过交换来使我方获得更多的移动次数。
例如:A装备二次行动,移动一次后,B跑过来与A换,C再跑过来与B交换,D再跑过来与C交换。。。。。
如此,N个人,都可以多获得一次移动。
可否通过修改,令发动交换的人,在交换结束后,立即结束行动呢?
[ 本帖最后由 冰麒麟 于 2014-7-17 21:21 编辑 ]
作者:
x-dvd 时间: 2012-8-6 10:56
歪个楼问一下冰麒麟,二次移动的效果是怎么改的?
作者:
godtype 时间: 2012-8-6 11:27
我军出战15人,每人加一个内存点就可以了,交换后将该内存点置为1,二次行动的时候判断该内存点是否为1,是1就不可以二次行动。每回合初始阶段自动置0。
作者:
冰麒麟 时间: 2012-8-6 12:03
谢谢毅哥,我先试试改。
[ 本帖最后由 冰麒麟 于 2012-8-6 12:05 编辑 ]
作者:
冰麒麟 时间: 2012-8-6 12:09 标题: 回复 #2 x-dvd 的帖子
这也是以前一位高手帮我改的,代码如下:
一.二次移动
需要修改两个地方
修改处一
0044AF70 /EB 03 JMP SHORT Ekd5.0044AF75
0044AF72 |FE45 DC INC BYTE PTR SS:[EBP-24]
0044AF75 \8B4D DC MOV ECX,DWORD PTR SS:[EBP-24]
0044AF78 80F9 73 CMP CL,73
0044AF7B 7D 26 JGE SHORT Ekd5.0044AFA3
0044AF7D 6A 06 PUSH 6
0044AF7F 33C9 XOR ECX,ECX
0044AF81 8A4D DC MOV CL,BYTE PTR SS:[EBP-24]
0044AF84 6BC9 24 IMUL ECX,ECX,24
0044AF87 81C1 502C4B00 ADD ECX,Ekd5.004B2C50
0044AF8D E8 FEB6FBFF CALL Ekd5.00406690
0044AF92 33C0 XOR EAX,EAX
0044AF94 8A45 DC MOV AL,BYTE PTR SS:[EBP-24]
0044AF97 05 10FF4C00 ADD EAX,Ekd5.004CF000 ;4CF000大家根据自己的EXE设置,但这个位置开始往后的115字节不要有其它代码使用.
0044AF9C C600 00 MOV BYTE PTR DS:[EAX],0
0044AF9F 90 NOP
0044AFA0 90 NOP
0044AFA1 ^ EB CF JMP SHORT Ekd5.0044AF72
修改处二
0044E5FB - E9 26FB0700 JMP 004CE126 跳到新代码处
新代码
004CE126 FF75 D8 PUSH DWORD PTR SS:[EBP-28]
004CE129 E8 0A000000 CALL 004CE138
004CE12E 8B4D C8 MOV ECX,DWORD PTR SS:[EBP-38]
004CE131 33D2 XOR EDX,EDX
004CE133 - E9 C804F8FF JMP 0044E600
004CE138 55 PUSH EBP
004CE139 8BEC MOV EBP,ESP
004CE13B 83EC 08 SUB ESP,8
004CE13E 33C9 XOR ECX,ECX
004CE140 8A4D 08 MOV CL,BYTE PTR SS:[EBP+8]
004CE143 6BC9 24 IMUL ECX,ECX,24
004CE146 81C1 502C4B00 ADD ECX,004B2C50
004CE14C 894D FC MOV DWORD PTR SS:[EBP-4],ECX
004CE14F 33C0 XOR EAX,EAX
004CE151 8A45 08 MOV AL,BYTE PTR SS:[EBP+8]
004CE154 05 00F04C00 ADD EAX,004CF000 ;即上面的4CF000
004CE159 8A10 MOV DL,BYTE PTR DS:[EAX]
004CE15B 84D2 TEST DL,DL
004CE15D 75 49 JNZ SHORT 004CE1A8
004CE15F 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
004CE162 E8 0915F9FF CALL 0045F670
004CE167 6BC0 48 IMUL EAX,EAX,48
004CE16A 05 681B4A00 ADD EAX,004A1B68 ;根据你的EXE,如果是新引擎是00D60000
004CE16F 8BC8 MOV ECX,EAX
004CE171 8A41 2B MOV AL,BYTE PTR DS:[ECX+2B]
004CE174 3C 2E CMP AL,40 ;兵种编号,修改为你想要的
004CE176 74 0B JE SHORT 004CE183
004CE178 6A 40 PUSH 40 ;宝物特效编号,修改为你想要的
004CE17A E8 8A98F3FF CALL 00407A09
004CE17F 85C0 TEST EAX,EAX
004CE181 74 25 JE SHORT 004CE1A8
004CE183 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
004CE186 6A 06 PUSH 6
004CE188 E8 0385F3FF CALL 00406690
004CE18D 8B09 MOV ECX,DWORD PTR DS:[ECX]
004CE18F 51 PUSH ECX
004CE190 E8 4103F7FF CALL 0043E4D6
004CE195 68 88000000 PUSH 88
004CE19A 6A 06 PUSH 6
004CE19C 50 PUSH EAX
004CE19D E8 FD04F7FF CALL 0043E69F
004CE1A2 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004CE1A5 C601 FF MOV BYTE PTR DS:[ECX],0FF
004CE1A8 8BE5 MOV ESP,EBP
004CE1AA 5D POP EBP
004CE1AB C3 RETN
但改出来后的二次移动是存在BUG(第一次行动后,未再移动,可参与围攻),star帮我修改过,具体怎么改,就不清楚啦。
作者:
jiang333san 时间: 2012-8-8 13:15
理论上虽然每个人都可以多移动或者行动一次,但是实际上都是在做无用功。既不能多攻击敌人一次,也不能多跑动一步路。
A(装备宝物)的移动力大于B,B就追不上A,也交换不到宝物;反之,B装备宝物,A的移动力远,难道还少走几格去来和B做交换吗?
所以最终就是15个人在一次移动的范围内打转交换。谁会这么无聊呢?
作者:
zhouhuan 时间: 2012-8-8 18:29
原帖由 jiang333san 于 2012-8-8 13:15 发表
理论上虽然每个人都可以多移动或者行动一次,但是实际上都是在做无用功。既不能多攻击敌人一次,也不能多跑动一步路。
A(装备宝物)的移动力大于B,B就追不上A,也交换不到宝物;反之,B装备宝物,A的移动力远 ...
A为何不能少走几步跟B交换?少走一步两步换来的是六步七步,这显然更加划算。
作者:
jiang333san 时间: 2012-8-8 18:46 标题: 回复 #7 zhouhuan 的帖子
你的说法是对的。但是感觉用处不是很大, 来回交换太麻烦,除非去捡东西的时候不够回合数了。
作者:
冰麒麟 时间: 2012-8-8 19:09 标题: 回复 #8 jiang333san 的帖子
如果真没大影响,我就没必要改啦。这是测试过程中遇到,可以利用这个快速全体移动。
武将间是存在移动力差距,但实战中,大部分是集体作战。移动力最高的人,也不能单枪先去应敌。
移动力大的人少跑一两步换来的是其他人都可以多跑一次。
可能你还不太清楚具体的应用。
举个例:某关设置大批敌人贴身紧追我军,敌军在地图第一排,我军在地图第二排,敌军全部加速状态。敌军所有人移动力为9,我军所有人移动力为5,而如果这个二次行动的宝物是通用的辅助的话。即我军移动力为10。我军先动,敌军就只能在后面吃尘了。
利用这个BUG(我已经认为是BUG了),很多涉及移动的关卡设计,都可以被取巧打过去。
[ 本帖最后由 冰麒麟 于 2012-8-8 19:11 编辑 ]
作者:
zhouhuan 时间: 2012-8-8 23:47 标题: 回复 #8 jiang333san 的帖子
只有实战过才会了解这个BUG的变态之处,不仅可以快速赶路,还可以迅速脱离包围圈、抢先站好位等等,这对注重走位的MOD来说绝对是非常方便的BUG。
交换的时候要计算移动距离确实有点麻烦,但也就是个熟练度的问题,多用用就变容易了。
欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/) |
Powered by Discuz! 5.0.0 |