标题: 整型及指针变量实例, 剧本类封笔帖
性别:男-离线 godtype
(毅)

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

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


发表于 2010-12-2 09:49 资料 个人空间 短消息 只看该作者
整型及指针变量实例

谢绝转载!
谢绝聪明人观看或发表意见!!!

很久以前曾经写过关于整型及指针变量的简易用法,不过貌似已经删了,现在另外写一些参考实例,通过实例来说明这两种变量的用法

——————————
一、我军出场武将的编号全部按出场顺序导入到整型变量0-14中。
写法如图:

注意这一大堆指令要用在S剧本中27指令之后。

必备知识:
1、武将的战场内存。
从4B2C50H开始是全部115个武将的战场内存,按我军15人、友军20人和敌军80人的顺序排列。每一个出场武将占用的战场内存一共是24H(十进制36)个字节,其中第00H-03H个字节是该出场武将的DATA编号。(而其他字节的作用请自行查资料了解)
2、整型变量的内存地址。
这里用的是STAR引擎,502000H就是整型变量的内存起始地址,每个变量占用4个字节。注意其他引擎各不相同,要自己查代码。

逐条指令解释:
1、第一条是STAR引擎5.6和5.7版中,指针变量对应的计算方式,4076=0是Dword(四字节)计算,=1是Byte(单字节),=2是Word(双字节)。其他引擎不需要用。
2、整型变量(a)15 是计数器,用作循环计算。
3、指针变量(p)0 的值是战场内存的起始地址4B2C50H,换算成十进制就是4926544。
4、指针变量(p)1 的值是整型变量的起始地址502000H,换算成十进制就是5251072。
5、对整型变量15 进行数值测试,不大于14的话运行子事件里面的指令。
5.1、让指针变量(*p)1 的值等于指针变量(*p)0 的值。
刚开始的时候,(p)0 = 4B2C50H,所以(*p)0 的值就是4B2C50H的前4字节里面的数值,也就是第0个出场武将的DATA编号,而此时的(p)1 = 502000H,所以(*p)1 的值就相当于整型变量(a)0 的值,因此就可以将第0个出场武将的DATA编号保存在整型变量0里面了。
5.2、整型变量(a)15 + 1,准备下一个循环计算。
5.3、指针变量(p)1 + 4。因为每个整型变量占用4字节,所以(p)1要+4,就可以在下一个循环中使用下一个整型变量了。
5.4、指针变量(p)0 + 36。与上面的(p)1同理。
5.5、无条件跳转到上面,再次进行对整型变量15进行数值测试。注意跳转ID号我用箭头做了指示。
6、如果整型变量15的值大于14,就不再进行武将编号的保存,加上必要的指令就开始战场操作了。加指令0D可以确保不会循环剧情。

——————————
二、不确定某武将的最大HP的前提下,判断某武将是否在战斗中掉血
写法如图:

注意这一大堆指令要用在S剧本中27指令之后,5A指令和+HP、改变武将装备的指令之前。

必备知识:
1、武将的战场内存。
从4B2C50H开始是全部115个武将的战场内存,按我军15人、友军20人和敌军80人的顺序排列。每一个出场武将占用的战场内存一共是24H(十进制36)个字节,其中第10H-13H个字节是该出场武将的当前HP(即Hpcur)。(而其他字节的作用请自行查资料了解)

逐条指令解释:
1、(a)4076 = 0 同前面一样。
2、导出某武将的战场编号到整型变量16中。
3、因为每个武将的战场内存一共是24H,所以先将整型变量16的值乘以36。
4、再加上战场内存的起始地址4B2C50H,就可以确定某武将在战场内存中的开始地址。
5、因为10H是Hpcur,所以加16。
6、指针变量(p)2 = (a)16,即某武将的Hpcur在战场内存中的地址。
7、让整型变量17等于指针变量(*p)2的值。(p)2是某武将的Hpcur在战场内存中的地址,(*p)2的值就是该地址里面的数值,也就是Hpcur。
这一条其实可以用78整型变量赋值来代替。
8、整型变量17的值减1。
9、最后在一个Section中做79变量测试,测试(*p)2的值是否小于或等于(a)17的值就可以实时监控某武将的HP是否减少了。

——————————
三、随机AI目标调整
写法如图:

这一大堆指令不限制位置,但是必须先用了前面第一部分:我军出场武将的编号全部按出场顺序导入到整型变量0-14中。

注意特殊情况:
这一个实例必须进行引擎的修改来配合,修改指令71来实现在一定数值范围内随机取出一个数,这个范围由整型变量4001的值来决定,取出后的数也保存回整型变量4001中。具体代码不提供,请参考我的神将奖励版以及论坛中相关的文章。

必备知识:
1、整型变量的内存地址。
这里用的是STAR引擎,502000H就是整型变量的内存起始地址,每个变量占用4个字节。注意其他引擎各不相同,要自己查代码。

逐条指令解释:
1、(a)4076 = 0 同前面一样。
2、整型变量4001 = 15,即从0-14这15个数中随机取了一个数。
3、71-3,这是必须通过修改引擎才能实现的,指令71可以实现多种自设效果,我这里用了效果3。
如果不修改引擎,就要自行用概率测试来设置随机数。
4、整型变量18 = 整型变量4001。其实可以不用这条,只是用来方便看。
5、因为每个整型变量占用内存4个字节,所以先将整型变量18的值乘以4。
6、再加上整型变量在内存的起始地址502000H,用作确定随机数对应的整型变量在内存中的地址。
7、指针变量(p)3 = (a)18,即随机数对应的整型变量在内存中的地址。
8、让整型变量19等于指针变量(*p)3的值。(p)3是随机数对应的整型变量在内存中的地址,(*p)3的值就是该地址里面的数值。比如随机数是2,(*p)3的值就是整型变量变量2里面的值,而前面已经将第2个出场武将的编号导入进整型变量2中,所以这时(*p)3的值就是整型变量2里面的武将编号了。
9、最后对整型变量19进行测试,如果小于等于1023,就设定某人的AI为攻击整型变量19中的编号对应的武将。
由于只是变量的使用举例,所以省了一些。如果要运用到实战中,这里应该还要在最后加上一些测试,比如整型变量19的值大于1023即没有对应的出场人物,或者该人物已经退场或未出场,就要跳转到前面重新取随机数,又或者是加上子事件03来进行其他AI设置。

——————————
绝笔、Byte运算的实用例子


Byte运算的实用例子就请恕我此等笨人不提供了,即不是什么自认高手,又不比聪明的高手聪明,只会学习到一些笨方法然后用此笨方法来回馈大众,我也不敢再误人子弟了,从此封笔,任何心得、教程均不再写,任何疑难请教均不敢胡乱解决,一切就交给聪明的高手来解决。以往的坑也不填了,我做我自己的MOD就算了,各位从此作品交流区再会!


[ 本帖最后由 godtype 于 2011-3-20 11:56 编辑 ]


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

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


发表于 2010-12-2 10:13 资料 文集 短消息 只看该作者


QUOTE:
各位从此作品交流区再会!

以后还要去作品区找你


顶部
性别:男-离线 苍龙诀

Rank: 2Rank: 2
组别 百姓
级别 奋威校尉
功绩 1
帖子 106
编号 276912
注册 2008-4-28
来自 西凉


发表于 2010-12-2 10:26 资料 短消息 只看该作者 QQ
很实用的例子,从中学习到不少,多谢god兄
顶部
性别:未知-离线 star175

★★

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


发表于 2010-12-2 11:57 资料 文集 短消息 只看该作者
指针变量和整形变量无疑是新引擎的最强大之处,本来懂得人就不多,能灵活使用者更少,难得楼主有心与大家分享经验,却不料竟成绝笔,实乃mod界之大损失!

须知林子大了什么鸟都有,又何必计较这些口舌之争?
顶部
性别:男-离线 513633522
(小越)

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


发表于 2010-12-2 12:07 资料 文集 短消息 只看该作者
仔细看了第一个,太强大了,用这个我可以去判断我军某一武将是否登场  再仔细看看
顶部
性别:未知-离线 wakin98

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 奋威校尉
功绩 2
帖子 150
编号 50757
注册 2005-10-8


发表于 2010-12-3 13:03 资料 短消息 只看该作者
毅大怎么了?似乎受了什么委屈啊?我一直支持你啊!
顶部
性别:男-离线 972255103
(长虹落日)

Rank: 2Rank: 2
组别 百姓
级别 奋威校尉
功绩 1
帖子 122
编号 345554
注册 2009-11-1
家族 瓦岗寨


发表于 2010-12-3 17:40 资料 短消息 只看该作者
我一直支持你,哪个人渣惹了你。
顶部
性别:未知-离线 lun1988win

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 71
编号 353796
注册 2010-1-5
家族 轩辕丐帮


发表于 2010-12-3 19:03 资料 短消息 只看该作者 QQ
------

我最支持的就是STAR和你啊!!!!!!!你再会我也不发表新MOD了
顶部
性别:未知-离线 xubo9934

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 29
编号 214694
注册 2007-9-12


发表于 2010-12-3 20:21 资料 短消息 只看该作者
第一页留名
顶部
性别:男-离线 冰麒麟
(罪恶美)


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


发表于 2010-12-3 22:25 资料 文集 短消息 只看该作者
先支持毅哥再看。指针变量是指令中最为未发掘的一块。少有的教程。不知道毅哥遇到什么事。如star所说,人类多了,什么鸟人都有,管它呢。现MOD界被godtype帮助过的人估计是最多的了。大家都敬佩,支持你!
顶部
性别:男-离线 赵辉
(长平)

昭信伯
安德军节度使
★★★★

Rank: 14Rank: 14Rank: 14Rank: 14Rank: 14
组别 节度使
级别 右将军
好贴 2
功绩 361
帖子 1092
编号 338625
注册 2009-9-11
来自 北京
家族 轩辕学院


发表于 2010-12-4 00:11 资料 个人空间 短消息 只看该作者
回复 #1 godtype 的帖子

毅兄何必如此,和個別人的不愉快沒必要總放在心上嘛。很多人還在期待你發現和傳授新的技術呢。這個區少了你怎麼行,不要封筆~

[ 本帖最后由 赵辉 于 2010-12-4 00:16 编辑 ]
顶部
性别:未知-离线 yjr3426619
(马操)

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 58
编号 377486
注册 2010-5-23


发表于 2010-12-4 18:28 资料 短消息 只看该作者
毅大不要封笔啊!我可是最欣赏您了。
这区没您怎么行?
顶部
性别:男-离线 513633522
(小越)

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


发表于 2010-12-5 23:05 资料 文集 短消息 只看该作者
轩辕高手很多,但像毅大这么经常回答我们问题和发高级教程的人很少啊
顶部
性别:男-离线 godtype
(毅)

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

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


发表于 2010-12-7 12:16 资料 个人空间 短消息 只看该作者
临阵倒戈

令战场中的某个敌军加入到我军。传统做法是设为两个武将,其中一个是隐藏友军。用指针就可以省去一个友军,还能即时加入到我军中(省去指令3B)。
以下仅为理论,未经任何测试,有能力的人可以做一下白老鼠。注意这时用的都是DWORD,而且我军不能满员出场。

78:整型变量赋值 1 <== 999: 战场纵坐标
78:整型变量赋值 2 <== 999: 战场横坐标
78:整型变量赋值 3 <== 999: 战场编号
77:变量运算 整型变量 4 = 常数 4926544  <--4B2C50H

53:战场撤退 单人 999: (0,0)-(0,0) 所有部队 撤退
31:武将消失 单人 999: (0,0)-(0,0) 所有部队
以上两条指令二选一,看实际效果如何

77:变量运算 整型变量 3 *= 常数 36
77:变量运算 整型变量 3 += 整型变量(a) 4
77:变量运算 指针变量(p) 0 = 整型变量(a) 3
77:变量运算 指针变量(*p) 0 = 常数 65535  <--编辑器显示变成了“无”,应该不影响
77:变量运算 整型变量 0 = 常数 1
77:变量运算 整型变量 4 += 常数 36
上面两条,一般情况下我军是0号不能失败,所以整型0直接从1开始,如果有多个武将剧情不能失败,就要增加整型0的数值为N,同时整型4也要相应增加36*N

1:子事件设定  <--ID:19
79:变量测试 整型变量(a) 0 <= 常数 14
        77:变量运算 指针变量(p) 1 = 整型变量(a) 4
        1:子事件设定
        79:变量测试 指针变量(*p) 1 <= 常数 1023
                77:变量运算 指针变量(*p) 1 = 常数 999
                78:整型变量赋值 1 ==> 999: 战场纵坐标
                78:整型变量赋值 2 ==> 999: 战场横坐标
                76:无条件跳转 33
                0:事件结束
        77:变量运算 整型变量 0 += 常数 1
        77:变量运算 整型变量 4 += 常数 36
        76:无条件跳转 19
        0:事件结束
77:变量运算 整型变量 5 = 常数 0  <--ID:33
78:整型变量赋值 5 ==> 999: 我军标识

4c:隐藏武将出现 CharIndex 999: 0
6d:相对复活或移动 CharIndex 999: 0 999: (0,0) 默认方向 复活
以上两条指令二选一,看实际效果如何

78:整型变量赋值 0 <== 999: HP
78:整型变量赋值 0 ==> 999: HpCur
78:整型变量赋值 0 <== 999: MP
78:整型变量赋值 0 ==> 999: MpCur
……
最后做一些补充处理

===========
实验证明,以上是不可能实现临阵倒戈的,单靠剧本指令很难做得到,所以用引擎来改代码会更方便。

[ 本帖最后由 godtype 于 2011-3-21 17:54 编辑 ]
顶部
性别:男-离线 513633522
(小越)

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


发表于 2010-12-7 14:59 资料 文集 短消息 只看该作者
又更新了 啥也不说了 先收藏
顶部
性别:未知-离线 砖家叫兽

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


发表于 2010-12-7 16:27 资料 短消息 只看该作者
看帖
膜拜
学习
回帖
拿分
走人
顶部
性别:未知-离线 crismon

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 46
编号 150888
注册 2007-5-2


发表于 2011-1-15 23:52 资料 短消息 只看该作者
要测试当前刚行动完的我方武将是哪个(用于譬如击败大将时测试我方武将是哪个,相应我方武将来句“吾去脱他衣”或者计算击坠数或者奖励等等),用指针变量能实现吗?
顶部
性别:男-离线 godtype
(毅)

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

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


发表于 2011-3-20 12:03 资料 个人空间 短消息 只看该作者
恶意顶起此帖,同时最后一次确认,从今以后不再写剧本类的心得与教程,以后由本人创作的剧本类效果不会在任何作品中以剧本指令的形式出现。
以后会不定期但原因相同地恶意顶起此帖。
顶部
性别:未知-离线 cswaccz

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 77
编号 384130
注册 2010-6-26


发表于 2011-3-20 15:21 资料 短消息 只看该作者
回复 #4 star175 的帖子

看来有内情
顶部
性别:男-离线 WHITESHIP

★★
谏议大夫

Rank: 16
组别 翰林学士
级别 征北将军
功绩 380
帖子 4210
编号 170977
注册 2007-6-3
家族 轩辕学院


发表于 2011-3-20 17:54 资料 个人空间 短消息 只看该作者
回复 #18 godtype 的帖子

我觉得事情倒不用这么绝对。

因为曹操传MOD制作本来就是一种娱乐,不掺杂利益成分在内,重要的是在创作、发掘和学习之中获取快乐。心血来潮了研究一下,自己也开心;平常照样过自己的生活,随心所欲也许会更好。

把这些看得太重就会成为负担,其实就算曹操传从世界上绝迹了,地球也照样转,我们还是要生活,顺其自然吧,毅大继续研究,我们也继续支持;毅大封笔了,我们也会保持对前辈应当的尊敬。

至于有人非议什么的,只当他人并不会感同身受,不懂得学习汇编的困难,也对自己的认识有偏差罢了,他人的闲话其实大可以无视。

总之事实已经说明,除了琅琊论坛和轩辕早期的几个大神以外,毅大在程序技术上的付出和成果都是最多的。希望毅大不要把这个当做负担,总之开心是最重要的,其他的都是浮云~

一些个人见解~
顶部
性别:男-离线 godtype
(毅)

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

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


发表于 2011-3-20 18:51 资料 个人空间 短消息 只看该作者
剧本类的教程我不写自然还会有其他人写,而且多么厉害的人啊,写出来的效果连说明都多么的与别人相似,说不定还是天才中的天才呢。


图片附件: 未命名2.gif (2011-3-20 18:51, 7.5 K)


若我早知有这样的天才会写出如此强大教程,我这蠢材可必再写本教程来丢人现眼呢。
何况剧本指令越多,文件就越大,运行速度就越慢,直接在引擎中写特效,再用一至两条剧本指令来调用,效果更好。既然特效都写入引擎中了,再写剧本类教程又有何用,所以剧本类封笔。

[ 本帖最后由 godtype 于 2011-3-20 18:54 编辑 ]
顶部
性别:男-离线 513633522
(小越)

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


发表于 2011-3-20 20:17 资料 文集 短消息 只看该作者
恶意顶起
何不出个怎么修改旧引擎,可以使旧引擎用新剧本编辑器,尤其是那个单挑开始
顶部
性别:男-离线 godtype
(毅)

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

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


发表于 2011-3-20 20:33 资料 个人空间 短消息 只看该作者
回复 #22 513633522 的帖子

顶部

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




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

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

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