Project1
标题: 用事件命令来强化物品无法保存的问题 [打印本页]
作者: jiushiainilip19 时间: 2016-9-6 13:45
标题: 用事件命令来强化物品无法保存的问题
例如我想做一个状态升级 状态ID=100 包括 武器 防具 物品 等等一些
实在不想用一些大型的升级脚本 因为冲突太大了 只想用一些简单的命令方式来升级 提升属性
例如在事件中或者脚本中输入
$data_states[100].dex_plus +=10
$data_states[100].dex_plus +=10
但是这种只是临时提升了10% 只要退出游戏就会还原到原来在数据库设置的数值
无法做到永久 保存效果
我用了一个方法是在存档那里添加
for i in 30..100
Marshal.dump($data_states[i], file)
end
for i in 30..100
$data_states[i] = Marshal.load(file)
end
for i in 30..100
Marshal.dump($data_states[i], file)
end
for i in 30..100
$data_states[i] = Marshal.load(file)
end
不过这种方法很不方便 因为制作过程中难免有些考虑不周 需要调整
这样一来一旦有所更改就必须要重新开始游戏 不然必定报出一些错误
例如 EOFError end of file reached
请问一下有没有办法让解决一下这个问题呢? 真心求教!{:2_250:}
作者: 夜狠简单 时间: 2016-9-6 14:06
- for i in 30..100
- $data_states[i] = Marshal.load(file) rescue break
- end
复制代码
作者: 亿万星辰 时间: 2016-9-6 15:50
本帖最后由 亿万星辰 于 2016-9-6 15:58 编辑
可以弄个公共事件,方便控制。
简单修改下脚本,比如读档后打开某个开关,然后这个开关关联一个自动执行的公共事件,公共事件末尾的时候关闭这个开关即可。
另外说下你俩这个脚本的问题……
for i in 30..100
Marshal.dump($data_states[i], file)
end
for i in 30..100
$data_states[i] = Marshal.load(file)
end
for i in 30..100
Marshal.dump($data_states[i], file)
end
for i in 30..100
$data_states[i] = Marshal.load(file)
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 |