游客:
注册
|
登录
会员
|
搜索
|
统计
|
帮助
轩辕春秋文化论坛
»
曹操传MOD制作交流
» 指针变量增减物品时避免出现BUG的方法
兴唐传·瓦岗山异闻录(20150519版)发布
(2015-5-19)
论坛营运现状公告
(2014-8-10)
三国志12pk版下载
(2013-4-20)
《精忠报国岳飞传》制作组对外开放
(2013-1-16)
岳飞传解密剧本发布
(2011-4-12)
招募各版斑竹和网站管理技术人员
(2006-4-19)
<< 上一主题
|
下一主题 >>
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
|
开通个人空间
|
加入资讯
标题: 指针变量增减物品时避免出现BUG的方法, 新剧本指令系列
showzhuge
(诸葛宿)
★★
组别
校尉
级别
破虏将军
功绩
28
帖子
760
编号
81273
注册
2006-9-1
#1
发表于 2009-9-8 22:44
资料
文集
短消息
只看该作者
指针变量增减物品时避免出现BUG的方法
首先先讲解一下指针变量的两个含义
指针变量p 是指内存地址
图中的4917723换算成16进制就是4B09DB
就是豆子的内存地址
图片附件
:
指针变量p.JPG
(2009-9-8 22:55, 4.21 K)
指针变量*p 是指该内存地址的值 占四个字节
通常情况我用指针变量*p来增减物品数会是一个好方法
有两种情况指针变量会产生BUG 第一种情况是当第一个字节为豆子数为255时 若再加 增第二个物品就会增多
如图
图片附件
:
豆子255.JPG
(2009-9-8 22:44, 11.33 K)
加10以后
图片附件
:
豆子255+10.JPG
(2009-9-8 22:44, 8.77 K)
第二种情况就是物品数如果小于0 也会出现错误这里就略过了
本来我们可以通过这样的命令来避免这个情况
如下图
图片附件
:
豆子增加 出错版.JPG
(2009-9-8 22:44, 15.9 K)
我要增加10颗豆子
当豆子大于等于245时 则豆子数直接为255
现在问题来了 因为我们知道 物品的数量只有一个字节 而实际山现在我的指针变量p 0 代表了4中物品的地址
也就实际上是4917723-4917726的值为
37 02 01 01
图片附件
:
豆子增加1.JPG
(2009-9-8 22:44, 15.33 K)
正确的情况因为现在豆子数小于245 那么就应该加10变为65 值应该为
41 02 01 01
但是实际上现在指针变量*p0并不是小于
F5
(也就是十进制245)的
37
(也就是55颗) 而是远远大于
F5
的
37 02 01 01
所以按照判定大于245(
F5
)时豆子变成了255(
FF 00 00 00
)颗 其他三个物品消失
图片附件
:
豆子增加2.JPG
(2009-9-8 22:53, 10.73 K)
难道没有解决办法了吗?其实很简单,只要利用一个整型变量来暂存一下数据就行了。
我的目的是让指针变量*p在计算时保证只有第一个字节起作用,也就是说我需要指针变量*p的值是
XX 00 00 00
。也就是说我要让4917724-4917726这三个字节在计算的时候为0。
那么我直接把4917724赋值为0就行了。不过在计算后还要让这些物品回来,这里就需要用一个整型变量保存一下。方法如下
图片附件
:
正确的增加过程.JPG
(2009-9-8 22:44, 42.79 K)
这样的话 最终结果如下图所示 就达到了我需要的效果
图片附件
:
最终结果.JPG
(2009-9-8 22:44, 13.82 K)
同理,当我道具数为图中所示
图片附件
:
豆子减少1.JPG
(2009-9-8 22:44, 15.18 K)
如果我要减10颗豆子
合理的设置应该如下
图片附件
:
豆子减少 出错版.JPG
(2009-9-8 22:44, 14.54 K)
当豆子小于10颗(
0A
)时,则豆子数为0。
我现在的豆子数为1颗,应该满足以上条件,但是问题是现在的指针变量*p值并不是
01
,而是
01 02 01 01
远远大于
0A
。
结果没有满足
01
小于
0A
所以等于
00
的条件,而是变成了
01 02 01 01
-
0A
。
结果如下
图片附件
:
豆子减少2.JPG
(2009-9-8 22:44, 12.42 K)
正确的设置方法如下
图片附件
:
正确的减少过程.JPG
(2009-9-8 22:44, 24.29 K)
[
本帖最后由 showzhuge 于 2009-9-8 22:58 编辑
]
[广告]
安装Alexa工具条,提高轩辕排名,支持轩辕发展!
showzhuge
(诸葛宿)
★★
组别
校尉
级别
破虏将军
功绩
28
帖子
760
编号
81273
注册
2006-9-1
#2
发表于 2009-9-8 22:45
资料
文集
短消息
只看该作者
编辑完成
[
本帖最后由 showzhuge 于 2009-9-8 22:54 编辑
]
[广告]
安装Alexa工具条,提高轩辕排名,支持轩辕发展!
godtype
(毅)
刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★
组别
经略使
级别
卫将军
好贴
1
功绩
1314
帖子
6207
编号
111321
注册
2007-2-18
来自
我家
家族
轩辕学院
#3
发表于 2009-9-8 23:33
资料
个人空间
短消息
只看该作者
方法不错。
其实此BUG是必须从根本上在引擎中进行修改的,将指针变量的使用对象从DWORD改为BYTE,毕竟曹操传中最小单位仍然是BYTE。
不过我比较懒,能力也低,要我改这个就不太可能了,还是等几位引擎高人出手比较好。(虽然想法我是有,但实现起来比较麻烦。
)
不过我也有另外两套应对方法,一是对没用的71指令进行修改,再配合几个整形变量,来达到准确的数量测试和数量增减,二是调整一下78指令,同样可以达到准确的数量测试和数量增减。
[广告]
《精忠报国岳飞传完整版》火热发布
yeatss
组别
士兵
级别
裨将军
功绩
6
帖子
350
编号
87587
注册
2006-10-16
#4
发表于 2009-9-9 14:27
资料
短消息
只看该作者
能否讲解下如何用指针变量得到新增加的12件物品的详细步骤?谢谢
[广告]
安装Alexa工具条,提高轩辕排名,支持轩辕发展!
showzhuge
(诸葛宿)
★★
组别
校尉
级别
破虏将军
功绩
28
帖子
760
编号
81273
注册
2006-9-1
#5
发表于 2009-9-9 15:24
资料
文集
短消息
只看该作者
回复 #4 yeatss 的帖子
武器和道具的储存方式不一样 武器是每一个储存一个BYTE 如果要用指针变量添加武器会非常麻烦
新武器请用整型变量4080指令
具体方法在STAR引擎配套文件的打包文件说明中有详细介绍
[广告]
安装Alexa工具条,提高轩辕排名,支持轩辕发展!
yeatss
组别
士兵
级别
裨将军
功绩
6
帖子
350
编号
87587
注册
2006-10-16
#6
发表于 2009-9-9 17:31
资料
短消息
只看该作者
哦 没注意文件说明里有用法,谢谢了
[广告]
真诚支持说岳,携手共创辉煌
凤翔天血
组别
士兵
级别
在野武将
功绩
3
帖子
31
编号
335766
注册
2009-8-21
#7
发表于 2009-9-11 12:56
资料
短消息
只看该作者
楼主的技术贴很精彩,作为技术小白暂时还看不太懂,,,,支持一下
[广告]
安装Alexa工具条,提高轩辕排名,支持轩辕发展!
投票
交易
悬赏
活动
正在浏览此帖的会员 - 共
1
人在线
轩辕春秋文化论坛
轩辕史话
> 炎黄春秋
> 我思我在
> 法律探讨
> 三国史话
春秋文艺
> 古典小说
> 诗词歌赋
> 现代文艺
> 韦编三绝
> 对联雅座
> 滴翠亭
> 藏经阁
> 双七钟社
> 笑书神侠
> 辕门射虎
> 虎帐点兵
游戏人生
> 同人战棋手游
> 三国戏英杰传
> 三国鼎立
> 轩辕公会
> 三国志12
> 英雄史诗
> 运筹帷幄
> 人间五十年
> 步步为营
> 游行天下
> 游戏贴图
轩辕工作室
> 兴唐传·瓦岗山异闻录
> 豪华曹操传
> 精忠报国岳飞传
> 《精忠报国岳飞传》制作组
> 大一统演义
> 曹操传MOD作品交流
> 东吴霸王传
> 封神英杰传
> 杨家将
> 吕布传
> 三国无双战略版
> 北宋志·赵匡胤传
> 战旗春秋
> 曹操传MOD制作交流
> 金庸群侠传MOD交流
> 风华录
> 设计与修改
怡情岁月
> 影音经典
> 动漫先锋
> 绘画摄影
> 情感轩辕
> 衣食住行
> 体坛动力
> 谈股论金
参政议政
> 迎宾阁
> 鸿胪寺
> 登闻鼓
> 监造府
当前时区 GMT+8, 现在时间是 2025-6-24 16:58
京ICP备2023018092号
轩辕春秋
2003-2023 www.xycq.org.cn
Powered by
Discuz!
5.0.0
2001-2006
Comsenz Inc.
Processed in 0.010403 second(s), 9 queries , Gzip enabled
TOP
清除 Cookies
-
联系我们
-
轩辕春秋
-
Archiver
-
WAP
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
基本概况
论坛排行
主题排行
发帖排行
积分排行
管理团队
管理统计