设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 10100|回复: 10
打印 上一主题 下一主题

[原创发布] 永久性储存变量

[复制链接]

Lv5.捕梦者

梦石
0
星屑
33414
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

跳转到指定楼层
 楼主| 发表于 2013-2-16 12:57:41 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
在论坛上,看过有很多人问:如何游戏打过一章节,显示的标题换面不同,而且不受关闭,开启游戏的影响;如何每翻版一次显示不同的标题画面;如何像仙剑那样,看过的动画就保存在那儿,
即使关闭游戏再打开,还是那些动画,,,,,等。

      于是本人想到一个像储存数据库数据一样储存一个变量的值,储存在 Data 文件夹下,该储存的值就是最后一次储存时的数值,不会受关闭,开启游戏,以及是否开始新游戏的影响。然后打开游戏时,首先赋予该变量储存的值,用该变量的值来条件分歧,以达到自己想要的效果。

首先说大概思路:
      RM读取数据方法:load_data("Data/文件名.rxdata")
        储存数据方法:save_data(储存对象, "Data/文件名.rxdata")

      以上面仙剑播放动画的问题为例,比如储存在 Data 文件夹下的加密文件名为“XXX”。
当游戏剧情进行到播放第一个动画时,播放完后改变变量的值并储存变量(比如变量1)
事件:变量[1] += 1
      脚本:save_data($game_variables[1], "Data/XXX.rxdata")

      以此类推,播放第二个动画后,变量1再加1,然后储存;播放第三个动画后,变量1再加1,然后储存,,,,,。

      然后是读取,在标题场景,载入数据库后,随意设置一个变量比如:$game_xxx(由于没有生成游戏对象,不能直接指定某个变量)
读取储存的数据:$game_xxx  = load_data("Data/XXX.rxdata")
然后在动画欣赏场景里,就可以用这个$game_xxx的值,来判断可以欣赏到哪些动画。

      最后,在标题场景--新游戏--生成各种游戏对像 后面
把变量1赋予储存的值:$game_variables[1] = $game_xxx


制作方法:

   1.储存变量值的RM加密文件

     由于本人不会生成新的加密文件,只能使用笨办法

  首先把工程 Data 文件夹下任意一个加密文件复制出来,更名,然后用记事本打开,把里面的内容清空,再复制到工程的 Data 文件夹下。

复制:


新的加密文件:


   2.建立一事件,指定一个变量,改变其值,储存到新建的加密文件里。
     事件储存变量的脚本:save_data($game_variables[1], "Data/XXX.rxdata")

事件:

对话储存:

储存后的加密文件:


   3.读取储存的变量值


在Scene_Title 载入数据库 后面读取,写入:$game_xxx  = load_data("Data/XXX.rxdata")



   4.赋予游戏变量储存的值

在Scene_Title — 命令 : 新游戏 — 生成各种游戏对像  
下面写入:$game_variables[1] = $game_xxx


打开游戏检查变量值是否储存



再增加变量值,再储存,关掉游戏再开始新游戏,看效果









   以上就是这个制作永久储存变量值的步骤,可能有很多人看不懂。
下面有刚刚示范的工程下载地址,给有需要拿去研究或使用的同学。

   可能有人会问,这个永久储存的变量有是什么用?
比如开始说到的那些问题,游戏每打过一章节,就改变指定变量的值,储存。然后每次打开游戏时,用该变量的值来判断显示标题图片,也就是说,随着游戏打过的章节不同,显示的标题画面也不同。

再比如:设置每次翻版后改变指定变量的值,储存。然后用该变量的值设置重新开始新游戏的难度,
(翻版次数越多,重新开始的新游戏难度越大)

或者是,设置一些隐藏剧情或人物,需要翻版几次才能够解开。又或者是,设置一个礼品发放NPC,翻版次数越多,发放的礼品越贵重,,,,,等。
只有想不到,没有做不到。

   以上只是用XP举例,大家可用VX,VA试试


工程下载:

Project1.rar (186.76 KB, 下载次数: 219)
xp vx va mv  va mz 各类型脚本/插件定制

Lv1.梦旅人

梦石
0
星屑
50
在线时间
91 小时
注册时间
2008-7-27
帖子
165
10
发表于 2013-8-10 02:37:03 | 只看该作者
本帖最后由 ZHL19910725 于 2013-8-10 03:02 编辑

对了想问一件事,这个XXX文件可以同时保存一堆开关和变量么?

这个加密以后也可以用吧?
……
欢迎光临百度——龙骑士鸣泣之时
http://tieba.baidu.com/f?kw=%C1% ... 9%C6%FC%D6%AE%CA%B1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
568 小时
注册时间
2012-9-7
帖子
611
9
发表于 2013-4-4 11:57:57 | 只看该作者
我认为有些功能不靠谱,比如多周目……
万一有人无聊,翻版N次后,再NEW GAME,直接领取究极道具或者说一上来被难度增加N倍的怪物给打趴下……ORZ

改标题画面或者播放看过的动画还是比较适用的
FTM正式版已经发布,点击图片开启传送门
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
722
在线时间
375 小时
注册时间
2009-3-9
帖子
398
8
发表于 2013-4-3 14:52:08 | 只看该作者
这种做法只能用于游戏未加密的时候,如果游戏加过密之后,是不允许修改Data文件夹中的内容的,你就会报错。
PS:最好的办法就是保存在存档中,不然不同存档之间会有影响的
新手学习中.....努力吧!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
91 小时
注册时间
2008-7-27
帖子
165
7
发表于 2013-3-28 20:31:58 | 只看该作者
多建幾個開關,讀檔進入地圖時=false就行了……我這個是進二周目關閉結尾存檔開關用的……

話說我看不太懂樓主寫的東西……附件裏面的腳本都改了哪幾個地方?
如果我有很多存檔,第一個存檔在第一章,第二個存檔在最後一章,讀取第一個存檔那標題畫面就回到第一章的標題,讀取第二個存檔就回到最後一章的標題,刪掉存檔標題就復原可不可以呢……

其實我感覺開關比較好控制,因為你知道哪幾個開關代表哪幾個分支,什麼時候打開什麼時候關上都可以分別做到,但是如果用單一變量,一次只能得到一個數值,如果說寫入多個變量,其實跟開關又沒有多大區別了

点评

其实这种方法什么都可以储存,变量,开关,数组,,,,,,  发表于 2013-3-29 22:06
……
欢迎光临百度——龙骑士鸣泣之时
http://tieba.baidu.com/f?kw=%C1% ... 9%C6%FC%D6%AE%CA%B1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
865 小时
注册时间
2010-6-27
帖子
131
6
发表于 2013-2-19 10:55:25 | 只看该作者
刚刚试了下,变量也可以这样用
储存时用
$game_variables[1] = 1
file = File.open("C.rxdata", "wb")
Marshal.dump($game_variables, file)
file.close
打开时
file = File.open("C.rxdata", "rb")
$game_variables = Marshal.load(file)
这样n个变量也可以对应一个文件,但是变量和开关用的文件的名称不能一样

点评

那就多弄几个“rxdata”文件,变量和开关各一个  发表于 2013-2-19 10:57
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
865 小时
注册时间
2010-6-27
帖子
131
5
发表于 2013-2-19 10:39:45 | 只看该作者
这样也可以,不过每个开关要对应一个文件。
参考http://rpg.blue/thread-153588-1-1.html
可以n个开关对应一个文件

点评

恩,我也是才初步的摸索出来,其他更多的用途,大家都可以以后一起去发掘  发表于 2013-2-19 10:42
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33414
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

4
 楼主| 发表于 2013-2-19 10:14:47 | 只看该作者
Zhangjiaxing1 发表于 2013-2-19 10:02
储存时用
$game_switches[1] = true
file = File.open("CG.rxdata", "wb")

  你用的是存档时的写法

比如你新建的 DATA 文件夹下加密文件名为“XXX”

储存时
  $game_switches[1] = true
    save_data($game_switches[1], "Data/XXX.rxdata")

读取时,随意写个全局变量,比如:$game_switche_XXX
  $game_switche_XXX = load_data("Data/XXX.rxdata")

然后赋予游戏开关1
  $game_switches[1] = $game_switche_XXX
  
  
  
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
865 小时
注册时间
2010-6-27
帖子
131
3
发表于 2013-2-19 10:02:58 | 只看该作者
储存时用
$game_switches[1] = true
file = File.open("CG.rxdata", "wb")
Marshal.dump($game_switches, file)
file.close
打开时
file = File.open("CG.rxdata", "rb")
$game_switches = Marshal.load(file)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
865 小时
注册时间
2010-6-27
帖子
131
2
发表于 2013-2-19 09:26:28 | 只看该作者
Zhangjiaxing1 发表于 2013-2-18 15:14
不错不错,那保存开关呢?怎么写脚本,跟变量一样吗?开关没有数值的。

用save_data($game_switches[1], "Data/XXX.rxdata")吗,那么开头那里怎么设,和变量那样设好像不行。

点评

可以不用变量,刚刚找到的,http://bbs.66rpg.com/thread-153588-1-1.html用这个就可以储存开关了  发表于 2013-2-19 09:59
还是先随意用个“中转”的全局变量读取。后面在“生成游戏对象”后,再代入开关。  发表于 2013-2-19 09:43
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
865 小时
注册时间
2010-6-27
帖子
131
1
发表于 2013-2-18 15:14:59 | 只看该作者
不错不错,那保存开关呢?怎么写脚本,跟变量一样吗?开关没有数值的。

点评

开关没试过,保持可写 true 和 false  发表于 2013-2-19 09:21
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-11 10:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表