标题: 求毅兄指点一下
性别:男-离线 aaa132536
(辉夜)

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 363
编号 36085
注册 2005-4-6


发表于 2012-5-28 00:07 资料 短消息 只看该作者
求毅兄指点一下

游戏中我想将几个临时数据存进存档块中,这几个数据不大,才几个字节,请问要怎么处理哦,谢谢。


顶部
性别:男-离线 godtype
(毅)

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

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


发表于 2012-5-28 09:16 资料 个人空间 短消息 只看该作者
1、扩展一下EXE,增加一个B档,还方便以后可能增加的数据,最好的方法。
2、增大D档,改代码少一点,不利于以后新增。
3、最懒的方法,将数据导入到几个永不出场的人的五围中。


顶部
性别:男-离线 aaa132536
(辉夜)

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 363
编号 36085
注册 2005-4-6


发表于 2012-5-28 13:29 资料 短消息 只看该作者
谢谢毅兄。呵呵,我选第3个,反正需要存储的数据不大。
顶部
性别:未知-离线 wu.john90


Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
功绩 21
帖子 1069
编号 353199
注册 2010-1-1


发表于 2012-5-29 11:36 资料 文集 短消息 只看该作者
同意,第三个最方便。反正人物号多的是,用不完的。
顶部
性别:男-离线 aaa132536
(辉夜)

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 363
编号 36085
注册 2005-4-6


发表于 2012-5-30 10:13 资料 短消息 只看该作者
毅兄能不能帮我检查下下面代码哪里出错了,谢谢

把编号3A0开始的武将内存地址设为空闲内存地址,第一个空闲内存地址为:

004D44CE     55                               push ebp
004D44CF     8BEC                             mov ebp,esp
004D44D1     B8 A0030000                      mov eax,3A0
004D44D6     6BC0 48                          imul eax,eax,48
004D44D9     0305 70404D00                    add eax,dword ptr ds:[4D4070]
004D44DF     8BE5                             mov esp,ebp
004D44E1     5D                               pop ebp
004D44E2     C3                               retn

假设把数字10存入第一个空闲内存地址:

004D5BD6     E8 F3E8FFFF                      call Ekd5.004D44CE
004D5BDB     C600 0A                          mov byte ptr ds:[eax],0A

请问毅兄我这两段代码哪里出错了哦,谢谢
顶部
性别:男-离线 godtype
(毅)

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

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


发表于 2012-5-30 10:35 资料 个人空间 短消息 只看该作者
实际遇到什么问题?如果存档不成功,我应该说过要用五围的。
顶部
性别:男-离线 aaa132536
(辉夜)

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 363
编号 36085
注册 2005-4-6


发表于 2012-5-30 11:51 资料 短消息 只看该作者
哦,存档不成功。呵呵,我以为都一样。
顶部
性别:男-离线 aaa132536
(辉夜)

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 363
编号 36085
注册 2005-4-6


发表于 2012-5-30 12:19 资料 短消息 只看该作者
还是无法存档。

004D5BD6     E8 F3E8FFFF                      call Ekd5.004D44CE
004D5BDB     C640 10 0A                       mov byte ptr ds:[eax+10],0A—— +10是武将攻击力内存地址
顶部
性别:男-离线 godtype
(毅)

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

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


发表于 2012-5-30 12:22 资料 个人空间 短消息 只看该作者
顶部
性别:男-离线 aaa132536
(辉夜)

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 363
编号 36085
注册 2005-4-6


发表于 2012-5-30 12:39 资料 短消息 只看该作者
啊,不好意思,我错了。我只顾着写下面的子程序,上面的程序跳转没写,当然不成功,我在重新测试下。
顶部
性别:男-离线 aaa132536
(辉夜)

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 363
编号 36085
注册 2005-4-6


发表于 2012-5-30 13:25 资料 短消息 只看该作者
谢谢毅兄,终于可以存储了,不过这内存地址读取间有数据残留在里面,还是有点不适合我要做的特效。
我想做的是武将特效是伤害递增:效果为攻击同一个敌人,每多攻击一次伤害加成便多加25%,代码如下:


004D5A64     8B4D FC                          mov ecx,dword ptr ss:[ebp-4]————攻击方武将DATA内存地址
004D5A67     8B55 D4                          mov edx,dword ptr ss:[ebp-2C]————被攻击方武将战场编号
004D5A6A     E8 4E010000                      call Ekd5.004D5BBD

004D5BBD     55                               push ebp
004D5BBE     8BEC                             mov ebp,esp
004D5BC0     83EC 0C                          sub esp,0C
004D5BC3     894D FC                          mov dword ptr ss:[ebp-4],ecx
004D5BC6     8945 F8                          mov dword ptr ss:[ebp-8],eax————原始伤害值
004D5BC9     8955 F4                          mov dword ptr ss:[ebp-C],edx
004D5BCC     66:8B19                          mov bx,word ptr ds:[ecx]
004D5BCF     66:83FB 00                       cmp bx,0——————DATA编号为0的武将
004D5BD3     90                               nop
004D5BD4     75 37                            jnz short Ekd5.004D5C0D
004D5BD6     E8 F3E8FFFF                      call Ekd5.004D44CE
004D5BDB     8A58 10                          mov bl,byte ptr ds:[eax+10]
004D5BDE     3A5D F4                          cmp bl,byte ptr ss:[ebp-C]————被攻击方的武将编号是否和[eax+10]地址存放的数据相同
004D5BE1     74 0C                            je short Ekd5.004D5BEF
004D5BE3     8A5D F4                          mov bl,byte ptr ss:[ebp-C]
004D5BE6     8858 10                          mov byte ptr ds:[eax+10],bl———不相同将被攻击方的武将编号存入[eax+10]地址
004D5BE9     C640 11 01                       mov byte ptr ds:[eax+11],1———[eax+11]地址的值变为1
004D5BED     EB 04                            jmp short Ekd5.004D5BF3
004D5BEF     8040 11 01                       add byte ptr ds:[eax+11],1———相同[eax+11]地址的值加1
004D5BF3     33DB                             xor ebx,ebx
004D5BF5     8A58 11                          mov bl,byte ptr ds:[eax+11]———将[eax+11]地址的值存入ebx
004D5BF8     4B                               dec ebx——————————————多攻击的次数
004D5BF9     6BDB 19                          imul ebx,ebx,19—————————伤害加成25%*多攻击的次数
004D5BFC     83C3 64                          add ebx,64
004D5BFF     8B45 F8                          mov eax,dword ptr ss:[ebp-8]
004D5C02     F7E3                             mul ebx
004D5C04     B9 64000000                      mov ecx,64
004D5C09     33D2                             xor edx,edx
004D5C0B     F7F1                             div ecx
004D5C0D     8BE5                             mov esp,ebp
004D5C0F     5D                               pop ebp
004D5C10     C3                               retn

[ 本帖最后由 aaa132536 于 2012-5-30 13:37 编辑 ]
顶部
性别:男-离线 冰麒麟
(罪恶美)


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


发表于 2012-5-31 17:02 资料 文集 短消息 只看该作者
不错的效果,不过这种递增的效果,最好设置上限来约束,否则可能会破坏平衡。

内存地址方面,是否可以考虑用剧本VAR变量。
顶部
性别:男-离线 aaa132536
(辉夜)

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 363
编号 36085
注册 2005-4-6


发表于 2012-6-1 07:49 资料 短消息 只看该作者
哦,是我没说明清楚,伤害递增效果:攻击同一个目标,每多攻击一次伤害加成便多加30%,转移目标后失效,经过修改已经成功了,新代码如下:

004D4889    8B4D FC         mov ecx,dword ptr ss:[ebp-4]
004D488C    E8 B30EF3FF     call Ekd5.00405744
004D4891    8B4D FC         mov ecx,dword ptr ss:[ebp-4]
004D4894    E8 F00FF3FF     call Ekd5.00405889
004D4899    8B4D FC         mov ecx,dword ptr ss:[ebp-4]———————————ECX=4927F0
004D489C    E8 25130000     call Ekd5.004D5BC6

004D5BC6     55                                    push ebp
004D5BC7     8BEC                                  mov ebp,esp
004D5BC9     8B59 04                               mov ebx,dword ptr ds:[ecx+4]
004D5BCC     81FB 54030000                         cmp ebx,354——————————马云禄
004D5BD2     75 1C                                 jnz short Ekd5.004D5BF0
004D5BD4     E8 F5E8FFFF                           call Ekd5.004D44CE
004D5BD9     8A58 10                               mov bl,byte ptr ds:[eax+10]
004D5BDC     3A59 10                               cmp bl,byte ptr ds:[ecx+10]———被攻击方的武将编号是否和[eax+10]地址存放的数据相同
004D5BDF     74 0C                                 je short Ekd5.004D5BED
004D5BE1     8A59 10                               mov bl,byte ptr ds:[ecx+10]
004D5BE4     8858 10                               mov byte ptr ds:[eax+10],bl———不相同将被攻击方的武将编号存入[eax+10]地址
004D5BE7     C640 11 01                            mov byte ptr ds:[eax+11],1———[eax+11]地址的值变为1
004D5BEB     EB 03                                 jmp short Ekd5.004D5BF0
004D5BED     FE40 11                               inc byte ptr ds:[eax+11]—————相同[eax+11]地址的值加1
004D5BF0     8BE5                                  mov esp,ebp
004D5BF2     5D                                    pop ebp
004D5BF3     C3                                    retn


004D5A6C     8B4D FC                               mov ecx,dword ptr ss:[ebp-4]————攻击方的武将战场内存地址
004D5A6F     8B55 D8                               mov edx,dword ptr ss:[ebp-28]————被攻击方的武将战场编号
004D5A72     E8 7F010000                           call Ekd5.004D5BF6

004D5BF6     55                                    push ebp
004D5BF7     8BEC                                  mov ebp,esp
004D5BF9     83EC 08                               sub esp,8
004D5BFC     8945 FC                               mov dword ptr ss:[ebp-4],eax———原始伤害
004D5BFF     8955 F8                               mov dword ptr ss:[ebp-8],edx
004D5C02     8B19                                  mov ebx,dword ptr ds:[ecx]
004D5C04     81FB 54030000                         cmp ebx,354——————————马云禄
004D5C0A     75 29                                 jnz short Ekd5.004D5C35
004D5C0C     E8 BDE8FFFF                           call Ekd5.004D44CE
004D5C11     8A58 10                               mov bl,byte ptr ds:[eax+10]
004D5C14     3A5D F8                               cmp bl,byte ptr ss:[ebp-8]———被攻击方的武将编号是否和[eax+10]地址存放的数据相同
004D5C17     75 1C                                 jnz short Ekd5.004D5C35
004D5C19     33DB                                  xor ebx,ebx
004D5C1B     8A58 11                               mov bl,byte ptr ds:[eax+11]———多攻击的次数
004D5C1E     6BDB 1E                               imul ebx,ebx,1E————————伤害加成30%*多攻击的次数
004D5C21     83C3 64                               add ebx,64
004D5C24     8B45 FC                               mov eax,dword ptr ss:[ebp-4]
004D5C27     F7E3                                  mul ebx
004D5C29     B9 64000000                           mov ecx,64
004D5C2E     33D2                                  xor edx,edx
004D5C30     F7F1                                  div ecx
004D5C32     8945 FC                               mov dword ptr ss:[ebp-4],eax
004D5C35     8B45 FC                               mov eax,dword ptr ss:[ebp-4]
004D5C38     8BE5                                  mov esp,ebp
004D5C3A     5D                                    pop ebp
004D5C3B     C3                                    retn

[ 本帖最后由 aaa132536 于 2012-6-1 07:55 编辑 ]
顶部

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




当前时区 GMT+8, 现在时间是 2024-11-23 02:23
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

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

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