标题: 利用剧本指令来修改当前天气, 增加了改变天气后的图片变化代码
性别:未知-离线 star175

★★

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


发表于 2009-9-7 22:56 资料 文集 短消息 只看该作者
利用剧本指令来修改当前天气

最近研究了一下如何在剧本中改天气,经常发现有时会失败,最终还是研究了一下代码,基本上搞清楚了其中的原因。

总的来说,和天气有关的指令大概是3条,或许还有其他的,不过有这三个指令足够了,所以不再作更多的讨论

这3条指令分别是
45  战场全局变量
56  天气类别设定
57  当前天气设定

56指令修改的是4B3D08+11处的地址,这个位置和45指令里的天气类别指定所设置的值是同一个地址。

这个天气类别决定了一组天气序列,而这个天气序列的具体值又是在48E100(不可修改)开始的30个字节,这里是6个字节一组,共5组,

一般会现在45指令里预先指定一个类别,指定后就决定了这个S可能会出现的天气

48E100的值是事先在exe里设置好的,不能修改

0048E100 的值

00 00 00 01 02 03      普通
00 00 00 00 01 02      晴好
00 01 02 02 03 03      阴雨
00 00 01 01 04 04      小雪
00 01 04 04 04 04      大雪

这些数值的含义如下
0 晴天  1 阴天  2  雨天  3 豪雨   4 雪

以上五个值只是决定了使用那个天气图片,并且2 3 4都同样是用恶劣天气来描述,

在每次回合变换的时候,不知道是用随机还是顺序的方法(这个未经测试)来得到一个值,再根据设定的45指令里设定的天气类别,对应到一个具体值

举个例子来说 如果在45指令设置了小雪,由于小雪这组天气序列没有02(雨),那么出现的恶劣天气必然是用下雪的图片,而决不会出现下雨的图片,即使玩家用豪雨策略也只能得到下雪天,当然,这时下雪还是下雨对电脑来说其实并没什么区别了,都是恶劣天气,而我们看到的就是图片不同而已。

再看看57指令
这条指令修改的是4B3D08+4处的地址,这个位置和45指令里的起始天气指定所修改的值是同一个地址。

这里要注意的是这条指令在剧本编辑器的描述有点讲究,要对照前面我贴的48E100的地址竖着看,就一目了然了,第一列是5个0,就是晴天,而剧本编辑器是用一个晴来描述的。45指令里也是这样理解

这里我认为,修改当前天气应该用57指令才是对的,而56指令的天气类别是属于一个指导性的取值,最好不要修改

这样修改当前回合天气的规律就出来了

比如你这个s设置了 普通 类型的天气,那么你要是想用剧本来改变当前回合的天气为雨,只要用57指令,下拉列表选第五个(雨)或第六个(豪雨)都可以。当然在目前的代码下,这样方法只能改变天气,但图片是不会变化的。


改变天气后的图片变化代码(已5.5版为基础)


00414F03  |.  E8 0804FFFF   CALL 55Ekd5.00405310                     ; \55Ekd5.00405310



00405310  /$  55                 PUSH EBP
00405311  |.  8BEC               MOV EBP,ESP
00405313  |.  51                 PUSH ECX
00405314  |.  0FB651 11          MOVZX EDX,BYTE PTR DS:[ECX+11]
00405318  |.  6BD2 06            IMUL EDX,EDX,6
0040531B  |.  8B45 08            MOV EAX,DWORD PTR SS:[EBP+8]
0040531E  |.  8A8410 00E14800    MOV AL,BYTE PTR DS:[EAX+EDX+48E100]
00405325  |.  50                 PUSH EAX
00405326  |.  8A41 04            MOV AL,BYTE PTR DS:[ECX+4]
00405329  |.  8A8410 00E14800    MOV AL,BYTE PTR DS:[EAX+EDX+48E100]
00405330  |.  3845 F8            CMP BYTE PTR SS:[EBP-8],AL
00405333  |.  74 2D              JE SHORT 55Ekd5.00405362
00405335  |.  6A 01              PUSH 1                                   ; /Arg2 = 00000001
00405337  |.  68 86000000        PUSH 86                                  ; |Arg1 = 00000086
0040533C  |.  B9 B0694B00        MOV ECX,55Ekd5.004B69B0                  ; |
00405341  |.  E8 34F30600        CALL 55Ekd5.0047467A                     ; \55Ekd5.0047467A
00405346  |.  6A 1E              PUSH 1E                                  ; /Arg1 = 0000001E
00405348  |.  B9 181B4B00        MOV ECX,55Ekd5.004B1B18                  ; |
0040534D  |.  E8 EEDFFFFF        CALL 55Ekd5.00403340                     ; \55Ekd5.00403340
00405352  |.  E8 89710200        CALL 55Ekd5.0042C4E0
00405357  |.  FF75 08            PUSH DWORD PTR SS:[EBP+8]                ; /Arg1
0040535A  |.  8B4D FC            MOV ECX,DWORD PTR SS:[EBP-4]             ; |
0040535D  |.  E8 2F4C0400        CALL 55Ekd5.00449F91                     ; \55Ekd5.00449F91
00405362  |>  8BE5               MOV ESP,EBP
00405364  |.  5D                 POP EBP
00405365  \.  C2 0400            RETN 4

[ 本帖最后由 star175 于 2009-9-8 18:09 编辑 ]

本帖最近评分记录
godtype 2009-9-9 14:55 +50 好帖奖励


顶部
性别:未知-离线 morningboo
(冰冷的山)

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 356
编号 171314
注册 2007-6-5


发表于 2009-9-8 12:04 资料 短消息 只看该作者
STAR175大的教程,受教了


顶部
性别:男-离线 sddciwei
(刺猬)


Rank: 4
组别 校尉
级别 奋威校尉
功绩 11
帖子 128
编号 258419
注册 2007-12-31


发表于 2009-9-9 14:50 资料 文集 短消息 只看该作者
好教程,顶一下。曾经就因为剧本改变天气后图像不变化而放弃了
顶部
性别:男-离线 godtype
(毅)

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

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


发表于 2009-9-9 14:56 资料 个人空间 短消息 只看该作者
惭愧啊,现在才看到已经改好代码了。
顶部
性别:男-离线 513633522
(小越)

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


发表于 2012-10-24 01:16 资料 文集 短消息 只看该作者
我是来看看天气的
顶部
性别:男-离线 冰麒麟
(罪恶美)


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


发表于 2013-8-31 17:55 资料 文集 短消息 只看该作者
由于改了天气的作用和天气类别的组成,请问是否有方法修正原版遗留下来的BUG:如果天气类别中没有该天气,变天就无法正常显示
顶部

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




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

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

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