标题: 反击后必反击兵种 改法 求教
性别:未知-离线 pabo

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 18
编号 448340
注册 2011-10-29


发表于 2011-11-4 21:32 资料 短消息 只看该作者
反击后必反击兵种 改法 求教

我找了论坛,发现没有“反击后反击”兵种的改法;于是按着其他效果,如无反击兵种的写法进行添加……结果
发现居然逆反了,效果变成了“指定兵种”反击敌人后 必被敌人再反击……

请问正确写法因当如何呢?难道是添加的地方不对?


顶部
性别:男-离线 edc34512
(月女神の咏唱~アリア~)

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 后将军
功绩 15
帖子 1535
编号 395732
注册 2010-9-11
来自 另一个世界
家族 轩辕学院


发表于 2011-11-4 21:50 资料 个人空间 短消息 只看该作者 QQ
楼主可以参考一下新引擎


顶部
性别:未知-离线 pabo

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 18
编号 448340
注册 2011-10-29


发表于 2011-11-4 21:52 资料 短消息 只看该作者
新引擎不是单个单个加的…我想可能是被压缩过了…不过还是谢ls了

[ 本帖最后由 pabo 于 2011-11-4 22:40 编辑 ]
顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2011-11-4 22:49 资料 个人空间 短消息 只看该作者
原版的反击后反击宝物特效的是这样的:
004063D6  |. 6A 28          PUSH 28  <——特效号
004063D8  |. 8B4D FC        MOV ECX,DWORD PTR SS:[EBP-4]
004063DB  |. E8 90920500    CALL 0045F670
004063E0  |. 8BC8           MOV ECX,EAX
004063E2  |. 6BC9 48        IMUL ECX,ECX,48
004063E5  |. 81C1 681B4A00  ADD ECX,004A1B68  <——计算出来的武将数据内存起始地址
004063EB  |. E8 19160000    CALL 00407A09  <——判断武将身上是否带有指定特效号的装备
004063F0  |. 85C0           TEST EAX,EAX
004063F2  |. 75 0F          JNZ SHORT 00406403  <——判断出武将身上带有反击后反击的宝物特效装备,跳到406403

修改原理:
在计算出来的武将数据内存起始地址后面加上判断武将的兵种是否反击后反击的兵种编号,是的话就跳到406403,不是再去判断武将身上是否带有反击后反击的装备。

将原来的代码修改如下(肯定不够位置,需要另外找空位置跳过改好再跳回来)
MOV ECX,DWORD PTR SS:[EBP-4]
CALL 0045F670
MOV ECX,EAX
IMUL ECX,ECX,48
ADD ECX,004A1B68
CALL 406610
CMP AL,XX  <——XX就是兵种编号
JE 406403
PUSH 28
CALL 00407A09
TEST EAX,EAX
JNZ SHORT 00406403

类似的在已有宝物效果的基础上添加兵种特效都是这样去改,理解清楚就很容易了。
顶部
性别:未知-离线 pabo

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 18
编号 448340
注册 2011-10-29


发表于 2011-11-4 23:40 资料 短消息 只看该作者
哎,真是感谢咯…原来我打的那个是两部分拆开各不相干的

CMP AL,XX 好像 是小兵种吧,大兵种CMP EAX,xx为什么没效?还是用其他代码?
顶部
性别:男-离线 513633522
(小越)

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
功绩 12
帖子 1179
编号 349592
注册 2009-12-6
家族 轩辕狼党


发表于 2011-11-5 10:18 资料 文集 短消息 只看该作者
回复 #5 pabo 的帖子

大小兵种不是这么区分的……
是和 CMP AL,XX 上面的call ……有关系的
顶部
性别:未知-离线 pabo

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 18
编号 448340
注册 2011-10-29


发表于 2011-11-5 12:25 资料 短消息 只看该作者
额…

我看到的都是CALL 00406610的…不过中间加了AND EAX,0FF

难道大兵种判定写法全不一样?


哦,感谢诸位,我用jb和jbe判断解决了(好像只能处理cmp X系列的吧?),幸好是相连的几个三转兵种
不过这里有个小问题……

那啥je XXX判断句 的好像不能用SHORT 短跳 到附近的 jmp再去 最终目的地?
无法中间嫁接个jmp?必须要一次跳转?(因为je远跳太占空间了,能节约点就节约点吧)

比如这样的
                     cmp ***
                     je SHORT &&
   
&&(地址)    JMP%%%

%%%(地址) 生效

[ 本帖最后由 pabo 于 2011-11-5 12:53 编辑 ]
顶部

正在浏览此帖的会员 - 共 2 人在线




当前时区 GMT+8, 现在时间是 2025-2-1 01:50
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.012062 second(s), 10 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP