赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 8217 |
最后登录 | 2024-9-14 |
在线时间 | 68 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 120
- 在线时间
- 68 小时
- 注册时间
- 2007-12-16
- 帖子
- 75
|
以下引用dna_7086于2008-9-4 13:46:36的发言:
这几天没事干,就这样混的了
下面就介绍最后的一项脚本技巧
本技巧适用于对RM的数据库扩充(这样对加密的游戏也有效)
※注意本文不再献给新手,虽然我是新手……
当然本文也不用献给高手……
首先,我们来了解在Data文件夹下的*.rxdata的简单结构
用UE来玩吧:
随便打开一个,如Actors.rxdata,查看一下
第一,进入游戏,把第一个人物的
HP从1到99改为9999,
SP从1到99改为9998,
力量999,灵力998,速度997,魔力996
第二,用UE打开Actors.rxdata
(在打开几个*.rxdata后,发现开头的 04 08 是标志数据)
(若文件是数组在其后就会接一个"[")
默认的Actors.rxdata里,在"["后面是 0E,这个是怎么回事,一开始没注意,
但后来发现它是 8+6=0x0E 汗,后面大家会发现所有数据都有这个癖好。。。。。
这里的 8 是人物个数,+6也许是想掩饰什么。。。
然后是"0o",第一个字符是ling,然后是o
接着是 OF,注意,它是 10+5=0x0F,
再数一数后面的"RPG::Actor"有多少个字符,正好10个
接着有 1B ,它是 22+5=0x1B,等你把第一个人物的数据抄在一张纸上,你会发现所有的"@"有22个,"@"当然是变量的标志,也就是说有22个变量
接着就是":",然后跟着 变量名的长度+5 ,如"@initial_level"长14,而14+5=0x13,然后是数据类型,i是整数,后面跟一个数据,数据若是0就为00,若是1就是(1+5=)06,若是2就是(2+5=)07,"是字符串,布尔值直接写T或F,数组[1]完成了以后接00 1B 3B,然后是下一轮,下一轮就不用写变量名了,然后一直到最后。
以后就可以用VC,VB,DEPHI,JAVA……编一个RXDAT的编辑器,然后来拓展数据库
我做了一个RXDATA的文件:
http://rpg.blue/upload_program/files/NewData_100964368.rar
然后在脚本的Game_Temp前加:
本帖相关代码如下:
module RPG
class NewData
def initialize
@a = 0
end
attr_accessor :a
end
end
最后在脚本里调用:
本帖相关代码如下:
$data_newdata = load_data("Data/NewData.rxdata")
p $data_newdata
p $data_newdata[1].a
输出
# [nil, #<RPG::NewData:0x127a740 @a=2>]
# 2
OK,今天就到这里了
算了,这应该不会算那什么,解放吧~~~~
[本贴由作者于 2008-9-5 10:43:59 最后编辑]
它設定偏差直是為了辨識一些東西
拿i舉例
i最大佔4B
假如1B就夠存當然沒問題
但是如果是0xfff呢
就需要2B
這時i後的數值會是0x02(往後讀2B是數值)
所以偏差設定+5
剛好夠判斷
不然 計算機 這麼聰明嗎
還有件重要的事
讀數值時
要倒過來讀
例如
0x 5A F6 0B
實際數值是
0x 0B F6 5A
還有
當佔2位元組以上時
無偏差值
發現有個地方有錯
默认的Actors.rxdata里,在"["后面是 0E,这个是怎么回事,一开始没注意,
但后来发现它是 8+6=0x0E 汗,后面大家会发现所有数据都有这个癖好。。。。。
这里的 8 是人物个数,+6也许是想掩饰什么。。。
這裡0E不是8+6而是9+5
為何+5前面說過了
但為什麼是9而不是8
因為Array是由0開始
資料庫都是由1開始
0這個位置就是nil
0~8共有9個
※不是1~8※
話說好像都是+5 |
|