金庸群侠传MOD发布 金庸群侠传MOD攻略讨论 金庸群侠传修改技术交流 设计自己的武侠单机游戏 创造独特的游戏形象
发新话题
打印

[MOD技巧] 50指令扩充功能

本主题由 weyl 于 2008-7-4 03:27 分类

50指令扩充功能

在本人实际制作MOD的过程中,发现原来的50指令是有一些不足的
于是本人在scarscc的扩展战斗的Z.dat的基础上制作了这个Z.dat
主要扩充的功能暂时有3个
1、3号指令(四则运算)增加无符号除法,
     用法:参数3为5

2、9号指令(sprintf)增加将数转换为无符号字符串,
     用法:参数6为1

3、41号指令(显示图片)增加显示全屏图片文件(文件格式与title.big一致,此类文件无透明色),
     用法:先将要显示的图片文件名写到字符串X,然后调用(50,41)指令,参数3为2,参数6为X(字符串编号)。
     例如:要显示title.big的图片,将“title.big”写到X1000,然后调用50 41 0 2 0 0 1000 0


要使用以上功能请手动修改fishedit指令,用fishedit的指令指导会出错

其他新增的功能属于个人化功能,在此暂不赘述

修改过的Z.dat在附件中

[ 本帖最后由 KG 于 2008-7-7 15:21 编辑 ]
附件: 您所在的用户组无法下载或查看附件
本帖最近评分记录

TOP

嗯,看来KG这一阵子的潜心研究进展良好啊!
越来越多的新技术,让我对新的MOD很是期待啊,不过这样还不能直观地看出新效果,如果能配图就更好了!

[发帖际遇]: chenxurui07在福州找到唐诗三百首一本,当成辟邪剑谱送给左冷蝉,得到打赏银两19
http://blog.sina.com.cn/raychen07
点击进入我的翻唱空间

TOP

新MOD 开发的 怎么样了?
很期待呢~~~~~

[发帖际遇]: jhg10000替小昭千里送信给张无忌,赶到光明顶得到奖励银两39
我非奇侠,流落天涯~
我本英雄,魅力无穷~

TOP

不错不错~~~~~~顶~

TOP

不好意思
能請問一下嗎
什麼叫作無符號除法?
又什麼叫無符號字符串?

[发帖际遇]: billygief冒充青木堂主向反清份子征收活动经费,结果:非法融资被收监,交纳保释银两50.

TOP

引用:
原帖由 billygief 于 2008-5-16 20:35 发表
不好意思
能請問一下嗎
什麼叫作無符號除法?
又什麼叫無符號字符串?

[发帖际遇]: billygief冒充青木堂主向反清份子征收活动经费,结果:非法融资被收监,交纳保释银两50.
例如同样的FFFEH,如视为有符号数则为-2,如视为无符号数则为65534。用有符号字串输出结果是-2,用无符号输出结果是65534。
同样的除法,如果都除以2,有符号结果是FFFFH,无符号结果是7FFFH,是完全不同的。
在游戏里大多数数字是有符号,只有经验是无符号格式。

TOP

謝謝回答
所以~原來版本在計算經驗值的時候~
65534除以2會變成65535
這個指令就是讓人在經驗值超過三萬多時~計算仍然能夠正常~是這樣嗎

scarscc大說到遊戲裡只有經驗是無符號格式~
那麼~這個指令目前只能用在經驗值的計算上嗎?@@
沒有其他的地方可以用嗎

一般我們在寫事件時用的變量似乎也是有符號
因為一超過三萬多就變成負數
請問有沒有辦法把它也變成無符號?

[发帖际遇]: billygief带小龙女去蒙地卡罗吃西餐喝红酒,被赵志敬撞见,破财消灾,花费银两14.

TOP

计算经验值的时候没有必要使用除法。

原版里面显示状态时经验值是当作无符号的双字节整型,其余都是是有符号的。
KG大概是想把“状态”这个选单改成调用某个事件,同时编写一个显示人物状态的事件子程,而原有的指令sprintf里面只有带符号整型的处理,即经验超出32767(7FFFH)的时候会显示为负数。

因为50指令中全部变量都是双字节整数,而sprintf指令在一开始使用了符号扩展(movsx),所以无论何时,一个8(Hex)以上数字开头的双字节整数符号扩展后得到的结果必定是FFFF XXXXH的形式,而实际需要的形式是0000 XXXXH。所以这时需要一个判断语句进行转向,或者改为[movzx],或者使用[and 0000FFFFH]屏蔽掉前面的8位。

一般的情况不超过32767的整数大概是够用的,如果全改成无符号数就要分析原有的反汇编结果,将50指令中的基本运算全部改为0扩展(movzx),但是必须考虑这样修改之后是否值得和与之前的指令是否兼容,因为这样很多原有的逻辑会发生变化。

实际上在游戏里面还有一个内存位置保存的是当前的时间,这个是必须用无符号整数才能正确表达的。

[发帖际遇]: scarscc参与红花会陈家洛的计划:叛变勾结清廷,得到赏赐银两19.


[ 本帖最后由 scarscc 于 2008-5-18 20:04 编辑 ]

TOP

所谓的个人化功能就是把本来的系统功能改为事件实现
比如本人的签名图

TOP

第一次觉得之上不够用.....

TOP

打工赚点MONEY~~~
本帖最近评分记录
  • weyl -4 灌水+刷版 2008-7-2 19:25

TOP

发新话题