注册会员 登录
Project1 返回首页

喵呜喵5的树洞 https://rpg.blue/?291206 [收藏] [复制] [分享] [RSS]

日志

【脚本】全局变量

热度 43已有 9098 次阅读2013-8-4 20:30 |个人分类:脚本


=begin
================================================================================
  全局变量 By 喵呜喵5
================================================================================

【说明】

  在事件中使用脚本命令 save_var 可以把设置好的变量单独储存到一个新文件中

  在事件中使用脚本命令 load_var 可以在其他地方
  (例如其他存档、或者开始新游戏时……)载入保存了的变量的值

  使用全局变量可以用来制作类似记录通关次数或者进入二周目这样的功能

=end
$m5script ||= {};$m5script[:M5GV20140811] = 20151106
$m5script[:ScriptData] ||= {}
module M5GV20140811
#==============================================================================
#  设定部分
#==============================================================================

  VAR = [1,3]

  # 在这里设置需要储存的全局变量ID

  FILENAME = "System.rvdata2"

  # 在这里设置储存全局变量的文件名

  AUTO = true

  # 设置为 true 的话,变量的值发生改变时自动保存全局变量

  LOAD = false

  # 设置为 true 的话,开始新游戏或者读取存档时,自动读取保存的全局变量

#==============================================================================
#  设定结束
#==============================================================================
class << self
  def load
    $m5script[:ScriptData][:M5GV20140811] =
      (load_data(FILENAME) rescue [nil, {}])
  end
  def save; save_data($m5script[:ScriptData][:M5GV20140811], FILENAME); end
  def load_var
    var = $m5script[:ScriptData][:M5GV20140811][0]
    return unless var
    var.each_with_index{|v,i| $game_variables.m5_20140811_set(VAR[i], v)}
  end
  def current_var
    var = []
    VAR.each {|index| var << $game_variables[index] }
    return var
  end
  def save_var
    $m5script[:ScriptData][:M5GV20140811][0] = current_var
    save
  end
  def get_ext; $m5script[:ScriptData][:M5GV20140811][1]; end
  def save_ext; save; end
  def set_ext(key, value)
    get_ext[key] = value
    save
  end
end # class << self
end

class Game_Variables
  alias m5_20140811_set []=
  def []=(variable_id, value)
    m5_20140811_set(variable_id, value)
    return unless M5GV20140811::AUTO
    M5GV20140811.save_var if M5GV20140811::VAR.include?(variable_id)
  end
end
class << DataManager
  alias m5_20150320_load_game load_game
  def load_game(index)
    result = m5_20150320_load_game(index)
    return result unless result && M5GV20140811::LOAD
    M5GV20140811.load_var
    result
  end
  alias m5_20150320_create_game_objects create_game_objects
  def create_game_objects
    m5_20150320_create_game_objects
    return unless M5GV20140811::LOAD
    M5GV20140811.load_var
  end
end
class Game_Interpreter
  def save_var; M5GV20140811.save_var; end
  def load_var; M5GV20140811.load_var; end
end
M5GV20140811.load
15

鸡蛋
6

鲜花

刚表态过的朋友 (21 人)

发表评论 评论 (18 个评论)

回复 acn00269 2013-9-20 16:05
   脚本挺好, 表错态了
回复 双黄连2_副本2 2013-12-7 12:20
看起来很强大的样子,不过好像用不着,所以献个花花!
回复 双黄连2_副本2 2013-12-7 12:20
看起来很强大的样子,不过好像用不着,所以献个花花!
回复 灵朔-冷智 2013-12-21 11:28
很不错的脚本,为什么不在图书馆里呢?不太容易找到
回复 喵呜喵5 2013-12-21 11:35
灵朔-冷智: 很不错的脚本,为什么不在图书馆里呢?不太容易找到
图书馆只放有发布到RM技术区的脚本,再说这脚本思路和写法都很简单
回复 落月小天魔 2014-3-8 16:05
这脚本怎么没有用呢?我先在一个地方储存变量81,然后脚本里变量改成81,新读取之后81却不是上次保存的样子,这是怎么了?我用错了吗?
回复 喵呜喵5 2014-3-8 16:10
落月小天魔: 这脚本怎么没有用呢?我先在一个地方储存变量81,然后脚本里变量改成81,新读取之后81却不是上次保存的样子,这是怎么了?我用错了吗? ...
在事件中使用脚本命令save_var可以把设置好的变量单独储存到一个新文件中
在事件中使用脚本命令load_var可以在其他地方
(例如其他存档、或者开始新游戏时……)载入保存了的变量的值
回复 落月小天魔 2014-3-8 16:29
喵呜喵5: 在事件中使用脚本命令save_var可以把设置好的变量单独储存到一个新文件中
在事件中使用脚本命令load_var可以在其他地方
(例如其他存档、或者开始新游戏时……) ...
我就是这么弄得啊。先和一个人对话,开关81开启,然后返回标题,新游戏,读取变量之后如果81为开就执行对话,可是没有用、自动执行也弄了,初级错误不会有的
回复 taroxd 2014-8-11 10:59
不觉得在文件名后面加个 .rvdata2 可以提升逼格吗
回复 喵呜喵5 2014-8-11 11:39
taroxd: 不觉得在文件名后面加个 .rvdata2 可以提升逼格吗
提升逼格的话应该加上.dat啦
回复 auttbutt 2014-9-21 01:41
喵呜喵大大,我遇到了一个问题。。。用了这个全局变量脚本之后,比如说我打开了A开关,然后没有存档,我再次打开游戏时,A开关会呈现于已经打开的状态……,请问这个是我哪里没弄懂吗orz
回复 喵呜喵5 2014-9-21 02:09
auttbutt: 喵呜喵大大,我遇到了一个问题。。。用了这个全局变量脚本之后,比如说我打开了A开关,然后没有存档,我再次打开游戏时,A开关会呈现于已经打开的状态……,请问 ...
这个脚本并不会影响开关,请检查你是不是自动执行了什么事件
回复 auttbutt 2014-9-21 11:13
喵呜喵5: 这个脚本并不会影响开关,请检查你是不是自动执行了什么事件
好的orz似乎是脚本冲突还是别的什么了orz,麻烦大大了~
回复 寿限无 2015-6-29 13:35
这个没办法继承物品和金钱吗?
回复 喵呜喵5 2015-6-29 21:41
寿限无: 这个没办法继承物品和金钱吗?
虽然可以做到,但是并不是写这个脚本的初衷,不怕麻烦的话可以用变量记录物品和金钱的数量,然后在开始新游戏时根据变量的值增减物品和金钱,怕麻烦的话就去找找其他人写的继承存档脚本吧
回复 寿限无 2015-6-30 17:05
喵呜喵5: 虽然可以做到,但是并不是写这个脚本的初衷,不怕麻烦的话可以用变量记录物品和金钱的数量,然后在开始新游戏时根据变量的值增减物品和金钱,怕麻烦的话就去找找 ...
   谢谢,脚本很有用!
回复 whitedewxiao 2019-1-31 13:25
auttbutt: 喵呜喵大大,我遇到了一个问题。。。用了这个全局变量脚本之后,比如说我打开了A开关,然后没有存档,我再次打开游戏时,A开关会呈现于已经打开的状态……,请问 ...
我想做到这样!求问怎么做到!
回复 又囧又怨的炅鸢 2020-5-9 14:14
原来鸡蛋是这个意思...

facelist doodle 涂鸦笔

您需要登录后才可以评论 登录 | 注册会员

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

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

GMT+8, 2024-5-6 15:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部