标题: 对指令77的进一步加强
性别:未知-离线 star175

★★

Rank: 9Rank: 9Rank: 9
轩辕春秋年度最佳(轩辕工作室)
组别 白衣卿相
级别 讨逆将军
好贴 3
功绩 153
帖子 686
编号 91725
注册 2006-11-16


发表于 2011-4-10 23:18 资料 文集 短消息 只看该作者
对指令77的进一步加强

以前曾经对指令77 (变量运算) 进行过加强,即通过整形变量4076的设置来实现指针变量的byte运算和word运算

具体功能如下

利用整形变量4076进行控制
默认为0 进行Dword运算
1 Byte  
2 Word  

只支持下列6种参数下的指令
77:变量运算 指针变量(*p) 0 += 常数 0
77:变量运算 指针变量(*p) 0 -= 常数 0
77:变量运算 指针变量(*p) 0 = 常数 0
对指针变量(*p)进行加减和赋值运算,右边的参数必须为一个常数
79:变量测试 指针变量(*p) 0 == 常数 0
79:变量测试 指针变量(*p) 0 >= 常数 0
79:变量测试 指针变量(*p) 0 <= 常数 0
对指针变量(*p)进行比较运算,右边的参数必须为一个常数

但是这些只能满足指针变量的加减、赋值和比较运算,而对指针变量的取值却仍然只有Dword运算

其实由于有上次的强化,目前只要改动少量代码就能实现指针变量的byte和word取值


代码如下


0043C538  |.  837D 0C 01    CMP DWORD PTR SS:[EBP+C],1     ;  左边变量类型
0043C53C  |.  74 1C         JE SHORT Ekd5.0043C55A
0043C53E  |.  837D 08 02    CMP DWORD PTR SS:[EBP+8],2     ;  右边变量类型
0043C542  |.  73 16         JNB SHORT Ekd5.0043C55A



0043C561  |. /75 26         JNZ SHORT Ekd5.0043C589
0043C563  |. |837D 0C 01    CMP DWORD PTR SS:[EBP+C],1
0043C567  |. |74 1C         JE SHORT Ekd5.0043C585
0043C569  |. |837D 08 02    CMP DWORD PTR SS:[EBP+8],2
0043C56D  |. |73 16         JNB SHORT Ekd5.0043C585


0043C58C  |. /75 24         JNZ SHORT Ekd5.0043C5B2
0043C58E  |. |837D 0C 01    CMP DWORD PTR SS:[EBP+C],1
0043C592  |. |74 1C         JE SHORT Ekd5.0043C5B0
0043C594  |. |837D 08 02    CMP DWORD PTR SS:[EBP+8],2
0043C598  |. |73 16         JNB SHORT Ekd5.0043C5B0

示例

本例是用来获取0号武将当前功勋总和

5:变量测试 无;Var90
0:事件结束
               77:变量运算 指针变量(p) 0 = 常数 5276672             ; 先给指针变量(p) 0 赋值5276672(H508400 功勋起始地址)
               77:变量运算 整型变量 0 = 常数 0                            ; 用来保存最终结果,所以先清零
               77:变量运算 整型变量 1 = 常数 0                            ; 计数器  先清零
               1:子事件设定
               79:变量测试 整型变量(a) 1 <= 常数 4                      ;功勋共有5个,所以计数器要设置5次,从0开始计数
                    77:变量运算 整型变量 4076 = 常数 2                  ;功勋为word型,所以要设置4076=2
                    77:变量运算 整型变量 0 += 指针变量(*p) 0         ;把当前指针地址的数据累加到 整型变量 0中
                    77:变量运算 整型变量 4076 = 常数 0                  ;下面要设置指针了,所以要设置4076=0,dword运算
                    77:变量运算 指针变量(p) 0 += 常数 2                 ;指针加2,指向下一个功勋地址
                    77:变量运算 整型变量 1 += 常数 1                     ;计数器+1
                    76:无条件跳转 81                                            ;跳转到蓝色的指令处
                    0:事件结束
              b:变量赋值 Var90 true
              0:事件结束

最终结果就是0号武将的5项功勋值总和保存在整形变量0中

注意红色的这句,在以前的版本里,只能得到dword型数据

以上代码5.6  5.7通用


顶部
性别:男-离线 513633522
(小越)

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


发表于 2011-4-10 23:20 资料 文集 短消息 只看该作者
不看内容,先占位置


顶部
性别:男-离线 513633522
(小越)

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


发表于 2011-4-10 23:32 资料 文集 短消息 只看该作者
原来这个啊!!对这种高级应用还不太理解,慢慢来
今天还在某个曹操传群(其实就是那个群)里讨论关于曹操传引擎最近10年的发展:
牛X人物贡献(……此处略去N个字):
第一代:东方教主
第二代:慕容雪芸
第三代:岱瀛
第四代:star175、godtybe
第五代:未知……
顶部
性别:男-离线 冰麒麟
(罪恶美)


Rank: 12Rank: 12Rank: 12
组别 节度使
级别 牙门将军
功绩 16
帖子 552
编号 292192
注册 2008-9-25
来自 广州市


发表于 2011-4-11 08:11 资料 文集 短消息 只看该作者
强大的byteq指针5.6,5.7引擎才能用。无福使用。。
顶部
性别:女-离线 q19961121
(是初一二般)

Rank: 7Rank: 7Rank: 7Rank: 7
组别 女官
级别 后将军
功绩 15
帖子 1451
编号 315445
注册 2009-3-21
来自 绵阳
家族 瓦岗寨


发表于 2011-4-11 22:37 资料 个人空间 短消息 只看该作者
感谢STAR兄,这样功勋计算应该好弄多了。
顶部
性别:未知-离线 砖家叫兽

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 3
帖子 274
编号 406021
注册 2010-12-7


发表于 2011-4-16 11:41 资料 短消息 只看该作者
修改内部信息
2 内部信息
AND   P1,255 单字节
AND   P1,65535  双字节
然后仍旧作四字节判断
顶部
性别:未知-离线 王友良
(梦国的云)

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 73
编号 396484
注册 2010-9-18


发表于 2011-4-17 08:47 资料 短消息 只看该作者 QQ
很好,很强大,虽然不懂,但还是要支持!
顶部

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




当前时区 GMT+8, 现在时间是 2025-7-31 04:12
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

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

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