Project1

标题: 用事件命令来强化物品无法保存的问题 [打印本页]

作者: jiushiainilip19    时间: 2016-9-6 13:45
标题: 用事件命令来强化物品无法保存的问题
例如我想做一个状态升级  状态ID=100  包括 武器 防具  物品 等等一些

实在不想用一些大型的升级脚本 因为冲突太大了 只想用一些简单的命令方式来升级 提升属性

例如在事件中或者脚本中输入
RUBY 代码复制
  1. $data_states[100].dex_plus +=10


但是这种只是临时提升了10% 只要退出游戏就会还原到原来在数据库设置的数值

无法做到永久 保存效果

我用了一个方法是在存档那里添加
RUBY 代码复制
  1. for i in 30..100
  2.     Marshal.dump($data_states[i], file)
  3.     end
  4.  
  5.     for i in 30..100
  6.     $data_states[i]       = Marshal.load(file)
  7.     end


不过这种方法很不方便  因为制作过程中难免有些考虑不周 需要调整

这样一来一旦有所更改就必须要重新开始游戏 不然必定报出一些错误

例如 EOFError end of file reached

请问一下有没有办法让解决一下这个问题呢? 真心求教!{:2_250:}
作者: 夜狠简单    时间: 2016-9-6 14:06
  1. for i in 30..100
  2.              $data_states[i]       = Marshal.load(file) rescue break
  3.           end
复制代码

作者: 亿万星辰    时间: 2016-9-6 15:50
本帖最后由 亿万星辰 于 2016-9-6 15:58 编辑

可以弄个公共事件,方便控制。
简单修改下脚本,比如读档后打开某个开关,然后这个开关关联一个自动执行的公共事件,公共事件末尾的时候关闭这个开关即可。

另外说下你俩这个脚本的问题……

RUBY 代码复制
  1. for i in 30..100
  2.     Marshal.dump($data_states[i], file)
  3. end
  4.  
  5. for i in 30..100
  6.     $data_states[i]       = Marshal.load(file)
  7. end


Marshal.dump($data_states, file)
这样就把$data_states整个存到file里去了,没必要拆开数组一个个的存取70多次,读取也是一样。

最后,$data_states是直接通过load_data读取出来的,如果需要对某些状态进行修改,直接修改就好了,没必要保存成文件。
作者: yang1zhi    时间: 2016-9-7 15:33
会不能保存?
我很多变量都是在脚本里直接改的啊,惨了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1