Project1

标题: 【XP】变量和开关如何在进入游戏后一部分不被初始化 [打印本页]

作者: 露璐    时间: 2011-12-8 18:37
标题: 【XP】变量和开关如何在进入游戏后一部分不被初始化
本帖最后由 各种压力的猫君 于 2011-12-8 19:16 编辑

只要一部分被初始化,一部分不被初始化就可以了
作者: 小白玩家    时间: 2011-12-8 18:40
已经存档的变量和开关都不会被初始话
作者: 各种压力的猫君    时间: 2011-12-8 18:45
本帖最后由 各种压力的猫君 于 2011-12-8 19:17 编辑

把这部分不需要初始化的变量储存到文件,
然后修改脚本每次新游戏时判断是否有这个文件,
如果有就在初始化变量之后读取这个文件,如果没有则只初始化。

请编辑标题加上制作工具种类。
  1. module DUMPVARSWISETTINGS
  2.   # 不需要初始化的变量的范围,以下代表从11号-13号变量。
  3.   VAR_MIN = 11
  4.   VAR_MAX = 13
  5.   # 不需要初始化的开关的范围,以下代表从12号-16号变量。
  6.   SWI_MIN = 12
  7.   SWI_MAX = 16
  8.   # 保存的文件名
  9.   FILENAME = "Data/save_varswi.rxdata"
  10. end

  11. #==============================================================================
  12. # ■ Scene_Save
  13. #------------------------------------------------------------------------------
  14. #  处理存档画面的类。
  15. #==============================================================================

  16. class Scene_Save < Scene_File
  17.   alias old_on_decision on_decision
  18.   def on_decision(filename)
  19.     save_variables
  20.     old_on_decision(filename)
  21.   end
  22.   def save_variables
  23.     file = File.open(DUMPVARSWISETTINGS::FILENAME, "wb")
  24.     $save_variables = []
  25.     for i in DUMPVARSWISETTINGS::VAR_MIN..DUMPVARSWISETTINGS::VAR_MAX
  26.       $save_variables.push $game_variables[i]
  27.     end
  28.     Marshal.dump($save_variables, file)
  29.     $save_switches = []
  30.     for i in DUMPVARSWISETTINGS::SWI_MIN..DUMPVARSWISETTINGS::SWI_MAX
  31.       $save_switches.push $game_switches[i]
  32.     end
  33.     Marshal.dump($save_switches, file)
  34.     file.close
  35.   end
  36. end

  37. #==============================================================================
  38. # ■ Scene_Title
  39. #------------------------------------------------------------------------------
  40. #  处理标题画面的类。
  41. #==============================================================================

  42. class Scene_Title
  43.   alias old_command_new_game command_new_game
  44.   def command_new_game
  45.     old_command_new_game
  46.     if FileTest.exist?(DUMPVARSWISETTINGS::FILENAME)
  47.       file = File.open(DUMPVARSWISETTINGS::FILENAME, "rb")
  48.       $save_variables = Marshal.load(file)
  49.       $save_switches  = Marshal.load(file)
  50.       file.close
  51.       for i in DUMPVARSWISETTINGS::VAR_MIN..DUMPVARSWISETTINGS::VAR_MAX
  52.         $game_variables[i] = $save_variables[i - DUMPVARSWISETTINGS::VAR_MIN]
  53.       end
  54.       for i in DUMPVARSWISETTINGS::SWI_MIN..DUMPVARSWISETTINGS::SWI_MAX
  55.         $game_switches[i] = $save_switches[i - DUMPVARSWISETTINGS::SWI_MIN]
  56.       end
  57.     end
  58.   end
  59. end
复制代码
以上脚本插入到MAIN以上,在脚本头部可以设置不被初始化的变量、开关范围以及保存的文件名。
选择新游戏时以上设定好的变量/开关会保持最后一次存档的状态。
作者: 退屈£无聊    时间: 2011-12-8 19:56
http://rpg.blue/thread-158035-1-1.html
超级变量外引中……
至于开关……JIONG,其实开关就是0和1,单纯变量也可以实现的吧(其实是没找到又懒的写的某人
作者: zhangbanxian    时间: 2011-12-12 12:20
本帖最后由 zhangbanxian 于 2011-12-12 12:59 编辑

这个放到退出游戏的地方
  1. UNINITIALIZE_ID = [1,2,3,4]
  2. variables = []
  3. for i in UNINITIALIZE_ID
  4. variables[UNINITIALIZE_ID] =  $game_variables[UNINITIALIZE_ID]]
  5. save_data(variables,"不初始化的变量")
  6. end
复制代码
这个放到新游戏的地方,反正就是换掉有$game_variables=Game_Variables.new的地方就对了
  1. $game_variables= (FileTest.exist?("不初始化的变量")? load_data("不初始化的变量") :Game_Variables.new
复制代码
具体哪里我已经忘了- -b,开关同理





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