查看: 4401|回复: 7

[已经解决] 能不能做到让不同的存档共享金钱?

[复制链接]
梦石
0
星屑
809
在线时间
176 小时
注册时间
2017-1-15
回帖
50
发表于 2020-10-10 16:20:10 | 显示全部楼层 |阅读模式
悬赏50星屑已解决
如题如题…………几个不同的存档,用一个钱库,要如何做呢?

最佳答案

查看完整内容

如果存档A有500G 那么, 开始新游戏时, 新游戏会有0G还是500G?? 如果是0G, 那么, 从这0G的新游戏建立存档B时, 存档A会有0G还是500G?? 存档B又会有0G还是500G?? 还是说, 你的游戏只能开始一次新游戏, 之后就不能开始新游戏, 只能存读档了?? 以下是在有500G的存档A时, 开始新游戏会有500G的脚本: [pre lang="ruby"]=begin ================================================================================ 全局变量 By 喵呜 ...
梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2020-10-10 16:20:11 | 显示全部楼层
本帖最后由 alexncf125 于 2020-10-10 18:29 编辑

如果存档A有500G
那么, 开始新游戏时,
新游戏会有0G还是500G??

如果是0G,
那么, 从这0G的新游戏建立存档B时,
存档A会有0G还是500G??
存档B又会有0G还是500G??
还是说, 你的游戏只能开始一次新游戏, 之后就不能开始新游戏, 只能存读档了??
以下是在有500G的存档A时, 开始新游戏会有500G的脚本:
[pre lang="ruby"]=begin
================================================================================
  全局变量 By 喵呜喵5
================================================================================

【说明】

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

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

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

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

  VAR = [1]

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

  FILENAME = "Gold.rvdata2"

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

  AUTO = true

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

  LOAD = true

  # 设置为 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, 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
  
#==================================================
  
class Game_Party
  attr_accessor :gold
end


class << DataManager
  
  alias gold_setup_new_game setup_new_game
  def setup_new_game
    gold_setup_new_game
    $game_party.gold = $game_variables[M5GV20140811::VAR[0]]
  end
  
  alias gold_save_game save_game
  def save_game(index)
    $game_variables[M5GV20140811::VAR[0]] = $game_party.gold
    gold_save_game(index)
  end
  
end
  

class Scene_Load < Scene_File
  
  alias gold_on_load_success on_load_success
  def on_load_success
    gold_on_load_success
    $game_party.gold = $game_variables[M5GV20140811::VAR[0]]
  end
  
end

#==================================================

M5GV20140811.load[/pre]
如果是要"开始新游戏时, 新游戏会有0G"+"从这0G的新游戏建立存档B时, 存档A会有0G",
则刪除以下的部分:
  1.   alias gold_setup_new_game setup_new_game
  2.   def setup_new_game
  3.     gold_setup_new_game
  4.     $game_party.gold = $game_variables[M5GV20140811::VAR[0]]
  5.   end
复制代码


至于"从这0G的新游戏建立存档B时, 存档A会有500G, 存档B也会有500G"的情況, 应该(没测试)是把
= $game_party.gold
改成
= [$game_party.gold, $game_variables[M5GV20140811::VAR[0]]].max
回复

使用道具 举报

梦石
0
星屑
471
在线时间
94 小时
注册时间
2020-8-18
回帖
35
发表于 2020-10-10 21:30:00 | 显示全部楼层
可以用独立变量?就是一个整个游戏共用的变量,需要插件,然后就是用那个变量作为金币
阿里嘎多!还是新人,请多多指教
新人作品
毒汤:https://rpg.blue/thread-482917-1-1.html
向火独行【更新ing】:https://rpg.blue/thread-483006-1-1.html
回复

使用道具 举报

梦石
0
星屑
809
在线时间
176 小时
注册时间
2017-1-15
回帖
50
 楼主| 发表于 2020-10-10 22:46:08 | 显示全部楼层
alexncf125 发表于 2020-10-10 18:15
如果存档A有500G
那么, 开始新游戏时,
新游戏会有0G还是500G??

就是大家共用一个金钱啊
比方说,我存档A有500G,那我新建一个存档B也会有500G,然后这个存档B赚了100G有了600G,这时候其他的存档也变成有600G,如果我存档B再花掉200G,变成400G了,那其他所有的存档也会只有400G,所有的存档里的金钱都保持一致,并且一个存档赚到或花掉的钱也会同步给其他所有的存档
回复

使用道具 举报

梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2020-10-10 23:50:36 | 显示全部楼层
本帖最后由 alexncf125 于 2020-10-11 08:24 编辑
foot1982 发表于 2020-10-10 22:46
就是大家共用一个金钱啊
比方说,我存档A有500G,那我新建一个存档B也会有500G,然后这个存档B赚了100G有 ...


所以你这整段回复都没提及" 有存档A时, 在标题画面按下开始新游戏 "的情形

另外, 你说的是不是金钱一有变化即全存档自动同步?? 比如 :
存档A有500G时, 在有500G的存档B赚了100G成了600G后,
不进行存档操作, 直接读取存档A, 存档A也会有600G

是的话, 用以下脚本, 测试完过后才告诉我有没有什么地方不符合你的想法
如果不是自动同步, 而是手动存档时才同步至每个存档的话, 则用2L的脚本
[pre lang="ruby"]=begin
    ================================================================================
      全局变量 By 喵呜喵5
    ================================================================================
     
    【说明】
     
      在事件中使用脚本命令 save_var 可以把设置好的变量单独储存到一个新文件中
     
      在事件中使用脚本命令 load_var 可以在其他地方
      (例如其他存档、或者开始新游戏时……)载入保存了的变量的值
     
      使用全局变量可以用来制作类似记录通关次数或者进入二周目这样的功能
     
=end
$m5script ||= {};$m5script[:M5GV20140811] = 20151106
$m5script[:ScriptData] ||= {}
module M5GV20140811
#==============================================================================
#  设定部分
#==============================================================================
  
  VAR = [1]
  
  # 在这里设置需要储存的全局变量ID
  
  FILENAME = "Gold.rvdata2"
  
  # 在这里设置储存全局变量的文件名
  
  AUTO = true
  
  # 设置为 true 的话,变量的值发生改变时自动保存全局变量
  
  LOAD = true
  
  # 设置为 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, 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
     
#==================================================
   
class << DataManager
     
  alias gold_setup_new_game setup_new_game
  def setup_new_game
    gold_setup_new_game
    $game_party.gold = $game_variables[M5GV20140811::VAR[0]]
  end
  
end
     
   
class Game_Party
  attr_accessor :gold
end
   
   
class Scene_Base
      
  alias gold_update update
  def update
    if $game_variables[M5GV20140811::VAR[0]] != $game_party.gold
      $game_variables[M5GV20140811::VAR[0]] = $game_party.gold
    end
    gold_update
  end
  
end
   
     
class Scene_Load < Scene_File
  
  alias gold_on_load_success on_load_success
  def on_load_success
    gold_on_load_success
    $game_party.gold = $game_variables[M5GV20140811::VAR[0]]
  end
     
end
     
#==================================================
     
M5GV20140811.load[/pre]
回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2020-10-11 00:58:00 | 显示全部楼层
这样备份全局存档不就有用不完的钱?

点评

不会有这情形吧..  发表于 2020-10-11 08:17
回复

使用道具 举报

梦石
0
星屑
809
在线时间
176 小时
注册时间
2017-1-15
回帖
50
 楼主| 发表于 2020-10-11 07:48:27 | 显示全部楼层
alexncf125 发表于 2020-10-10 23:50
所以你这整段回复都没提及" 有存档A时, 在标题画面按下开始新游戏 "的情形

另外, 你说的是不是金钱一有 ...

哦哦- -我用了那个单存档绑定的脚本,游戏一开始就会存个档,所以没考虑过这个问题@@我这就去试试
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部