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

Project1

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

[已经解决] 关于 存档 改造的问题

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1733
在线时间
484 小时
注册时间
2006-1-7
帖子
1073
跳转到指定楼层
1
发表于 2015-11-2 17:31:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 白鬼 于 2015-11-2 17:32 编辑

各路大神请帮下忙

本人想模拟 暗黑破坏神 的存档方式
存档文件名跟游戏角色的名字一样(取名系统,没问题)
然后存档时不进入存档界面,直接保存文件(这个我自己也可以搞定)

读档界面只能在标题画面进入,
当 有存档文件 的时候
   显示该存档的一些内容(角色ID,角色行走图,角色名字,角色职业 当前地图  等等信息)
   按 左右 来切换另外一个存档(自动循环切换,比如一共3个档案,切到第三个之后,再按→就跳回第一个,反之同理)
没有 存档文件 的时候
    显示“没有存档”
分歧结束


上面蓝色字部分,是我自己做不到的。请各路大神有空的多指教,万分感谢!!!

@RyanBern      @恐惧剑刃 @芯☆淡茹水   @︶ㄣ牛排ぶ

  

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

初从文,三年不中;后习武,校场发一矢,中鼓吏,逐之出;遂学医,有所成。自撰一良方,服之,卒。

Lv4.逐梦者 (版主)

梦石
0
星屑
9497
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

2
发表于 2015-11-3 17:07:50 | 只看该作者
本帖最后由 RyanBern 于 2015-11-4 15:05 编辑

在这里我假设你的存档是统一管理的,它们都被放在一个文件夹中(例如根目录/Saves)。如果不是这样,请自行修改存档的路径,如果直接将档放在根目录下处理有些麻烦。
然后就是如何读取文件的问题。利用下面的方法可以取出一个文件夹下的所有文件
RUBY 代码复制
  1. Dir.foreach("Saves")do |s|
  2.   filenames << s if s != "." && s != ".."
  3. end

然后就可以根据存档文件名进行读取了,filenames是一个存档文件名的数组,读取就先open一下,读取信息可以参考Scene_Load里面的方法进行读取。
描绘内容应该不难,如果你能熟练使用各种窗口的话。如果这方面不是很懂,可以熟悉一下窗口绘制。
循环切换你只需要利用filenames数组即可,如果它为空,则就是没有存档,直接显示"无存档"。


刚才看了一下脚本,说说我发现的问题。
1.
RUBY 代码复制
  1. filenames = []
  2. Dir.foreach("Saves")do |s|
  3.   filenames << s if s != "." && s != ".."
  4. end

上面那句话的作用是把Saves文件夹中所有的文件都取出来,放到一个数组里,这个数组使用之前一定要初始化,即加上filenames = [],否则会发生错误。这段脚本的作用一定要明确。
2. 经过实践表明,如果将存档的文件名改为角色的名称,那么需要对存档数量进行破限,详情请搜索有关脚本,实现比较麻烦。如果只有四个档位,那么有可能会发生读不了某人的存档的情况。当然,如果你在存档的时候限制了存档个数,那么可以不必看前面那一段话。同时,如果角色的名字是中文的,不确保游戏能找到存档文件,所以这也是个比较麻烦的问题。刚才试验了一下确实找不到。
3. 更改make_filename方法的做法是正确的,但是切记这个方法一定要放在Scene_Save下,而不要直接在Scene_File上改,因为在读档的情况下这个规则需要变一下。
RUBY 代码复制
  1. class Scene_Load
  2.   def make_filename(file_index)
  3.     if @filenames == nil
  4.       @filenames = []
  5.       Dir.foreach("Saves")do |s|
  6.         @filenames << s if s != "." && s != ".."
  7.       end
  8.     end
  9.     return @filenames[file_index].nil? ? "" : "Saves/" + @filenames[file_index]
  10.   end
  11. end

4. 由于你是一键存档,所以可以不必真正进入Scene_Save画面。
一些小错误我已经改过来了。请查看附件。注:当存档文件名含有中文时,该脚本无法正常工作。
Scripts.rxdata (118.91 KB, 下载次数: 51)

点评

方法已会,虽然没有完全解决,但是决定自己慢慢研究去了。多谢。帮忙认可一下,论坛卡了。  发表于 2015-11-4 21:34
中文名字时不生效,看来我还要再思考一下如何转换和规划存档文件名了。 不过这个方法我研究一下倒是可以用来干别的。回家看看,先多谢了!  发表于 2015-11-4 15:38
if filenames != nil 这么用的吗?  发表于 2015-11-3 22:24
说实话,我不能第一时间全明白。不过我愿意试试看。等我好消息。  发表于 2015-11-3 21:58

评分

参与人数 1星屑 +150 收起 理由
myownroc + 150 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1733
在线时间
484 小时
注册时间
2006-1-7
帖子
1073
3
 楼主| 发表于 2015-11-3 22:36:36 | 只看该作者
本帖最后由 白鬼 于 2015-11-3 23:00 编辑
RyanBern 发表于 2015-11-3 17:07
在这里我假设你的存档是统一管理的,它们都被放在一个文件夹中(例如根目录/Saves)。如果不是这样,请自行 ...


照猫画虎试着弄了一下,出现点问题。
刚才的问题自己解决了,但是这个问题我搞不定了,求帮助吧。多谢了。
Scripts.zip (118.63 KB, 下载次数: 53)

点评

了解了。不管怎样,先多谢了!晚安  发表于 2015-11-3 23:05
我是用手机上论坛呢,要看也是明天啦  发表于 2015-11-3 23:02
我提完之后,就恍然大悟了,错不在此。你要睡了吗?我现在搞不定的是 Scene_File 的部分了。等我编辑一下  发表于 2015-11-3 22:58
我明后天写个详细版的吧  发表于 2015-11-3 22:53
初从文,三年不中;后习武,校场发一矢,中鼓吏,逐之出;遂学医,有所成。自撰一良方,服之,卒。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1733
在线时间
484 小时
注册时间
2006-1-7
帖子
1073
4
 楼主| 发表于 2015-11-4 22:19:17 | 只看该作者
追加一个问题行吗?

怎么去掉开头的 “Saves/” 和后面的 ".rxdata"?


@RyanBern

点评

我用了好多部,先.chomp(".rxdata") 之后.reverse再.chomp("/sevaS")[感觉自己好笨]最后.reverse  发表于 2015-11-4 23:11
s.sub!(/Saves\/(.+?)\.rxdata/){$1} s是你要弄的字符串 这句话的作用是取出中间的部分  发表于 2015-11-4 22:40
初从文,三年不中;后习武,校场发一矢,中鼓吏,逐之出;遂学医,有所成。自撰一良方,服之,卒。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-25 23:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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