Project1

标题: 怎么做到出现选择项按ESC调处存档界面? [打印本页]

作者: 沙之爱罗    时间: 2012-1-18 19:52
标题: 怎么做到出现选择项按ESC调处存档界面?
就是出现选择项的时候可以按ESC键跳出存档画面dsu_plus_rewardpost_czw
作者: 恒失败者    时间: 2012-1-18 20:45
显示选择项,选择某个答案时呼出存档画面不可以吗?
作者: 沙之爱罗    时间: 2012-1-18 20:49
恒失败者 发表于 2012-1-18 20:45
显示选择项,选择某个答案时呼出存档画面不可以吗?

不可以……我要在出现选择项的时候可以存档……因为选择了就已经确定了下边的分歧了……那样存档就没有意义了……好比如我有2个选项选1是可以继续游戏的,2是GAME OVER但是玩家是不知道的……而且一个游戏还有很多这些类似的选择项……所以想说可以在出现选择项的时候存档就好了
作者: 恒失败者    时间: 2012-1-18 20:55
本帖最后由 恒失败者 于 2012-1-18 22:44 编辑

抱歉,请试试。显示文章---呼出存档画面---选项出现。请看范例的效果。 Projectxp.zip (204.65 KB, 下载次数: 34)
请删掉“要存档吗?”这段字就不必询问了。
作者: 沙之爱罗    时间: 2012-1-18 21:28
恒失败者 发表于 2012-1-18 20:55
是做解密游戏吗?显示文章---呼出存档画面---选项出现。请看范例的效果。

这样要是连续出现几个选项不就烦死人了……
作者: 熊猫    时间: 2012-1-18 22:40
本帖最后由 熊猫 于 2012-1-18 23:06 编辑
  1. #==============================================================================
  2. # ■ Ultrasave
  3. #------------------------------------------------------------------------------
  4. #  增强存档界面调用
  5. #   作者:熊猫(Parthas)
  6. #   感谢:后知后觉
  7. #   本系统基于后知后觉战斗商店脚本:http://rpg.blue/thread-142324-1-1.html
  8. #==============================================================================
  9. module UltraSave
  10.   module_function
  11.   def call_scene_save
  12.     @scene = Scene_Save.new
  13.     @scene.main
  14.     @scene = nil
  15.     return
  16.   end
  17. end

  18. #==============================================================================
  19. # ■ Window_Message
  20. #------------------------------------------------------------------------------
  21. #  显示文章的信息窗口。
  22. #==============================================================================

  23. class Window_Message < Window_Selectable
  24.   #--------------------------------------------------------------------------
  25.   # ● 刷新画面
  26.   #--------------------------------------------------------------------------
  27.   def update
  28.     super
  29.     # 渐变的情况下
  30.     if @fade_in
  31.       self.contents_opacity += 24
  32.       if @input_number_window != nil
  33.         @input_number_window.contents_opacity += 24
  34.       end
  35.       if self.contents_opacity == 255
  36.         @fade_in = false
  37.       end
  38.       return
  39.     end
  40.     # 输入数值的情况下
  41.     if @input_number_window != nil
  42.       @input_number_window.update
  43.       # 确定
  44.       if Input.trigger?(Input::C)
  45.         $game_system.se_play($data_system.decision_se)
  46.         $game_variables[$game_temp.num_input_variable_id] =
  47.           @input_number_window.number
  48.         $game_map.need_refresh = true
  49.         # 释放输入数值窗口
  50.         @input_number_window.dispose
  51.         @input_number_window = nil
  52.         terminate_message
  53.       end
  54.       return
  55.     end
  56.     # 显示信息中的情况下
  57.     if @contents_showing
  58.       # 如果不是在显示选择项中就显示暂停标志
  59.       if $game_temp.choice_max == 0
  60.         self.pause = true
  61.       end
  62.       # 取消
  63.       if Input.trigger?(Input::B)
  64.         Graphics.freeze
  65.         UltraSave.call_scene_save
  66.         Graphics.transition
  67.         return
  68.       end
  69.       # 确定
  70.       if Input.trigger?(Input::C)
  71.         if $game_temp.choice_max > 0
  72.           $game_system.se_play($data_system.decision_se)
  73.           $game_temp.choice_proc.call(self.index)
  74.         end
  75.         terminate_message
  76.       end
  77.       return
  78.     end
  79.     # 在渐变以外的状态下有等待显示的信息与选择项的场合
  80.     if @fade_out == false and $game_temp.message_text != nil
  81.       @contents_showing = true
  82.       $game_temp.message_window_showing = true
  83.       reset_window
  84.       refresh
  85.       Graphics.frame_reset
  86.       self.visible = true
  87.       self.contents_opacity = 0
  88.       if @input_number_window != nil
  89.         @input_number_window.contents_opacity = 0
  90.       end
  91.       @fade_in = true
  92.       return
  93.     end
  94.     # 没有可以显示的信息、但是窗口为可见的情况下
  95.     if self.visible
  96.       @fade_out = true
  97.       self.opacity -= 48
  98.       if self.opacity == 0
  99.         self.visible = false
  100.         @fade_out = false
  101.         $game_temp.message_window_showing = false
  102.       end
  103.       return
  104.     end
  105.   end
  106. end
  107. #==============================================================================
  108. # ■ Scene_File
  109. #------------------------------------------------------------------------------
  110. #  存档画面及读档画面的超级类。
  111. #==============================================================================

  112. class Scene_File
  113.   #--------------------------------------------------------------------------
  114.   # ● 主处理
  115.   #--------------------------------------------------------------------------
  116.   def main
  117.     # 生成帮助窗口
  118.     @help_window = Window_Help.new
  119.     @help_window.set_text(@help_text)
  120.     # 生成存档文件查
  121.     @savefile_windows = []
  122.     for i in 0..3
  123.       @savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))
  124.     end
  125.     # 选择最后操作的文件
  126.     @file_index = $game_temp.last_file_index
  127.     @savefile_windows[@file_index].selected = true
  128.     # ★改造★ 调整Z值
  129.     @ultrasaveend = false
  130.     @help_window.z = 999999
  131.     for i in 0..3
  132.       @savefile_windows[i].z = 999999
  133.     end
  134.     # 执行过渡
  135.     Graphics.transition
  136.     # 主循环
  137.     loop do
  138.       # 刷新游戏画面
  139.       Graphics.update
  140.       # 刷新输入信息
  141.       Input.update
  142.       # 刷新画面
  143.       update
  144.       # 如果画面被切换的话就中断循环
  145.       if $game_temp.message_window_showing
  146.         if @ultrasaveend
  147.           break
  148.         end
  149.       else
  150.         if $scene != self
  151.           break
  152.         end
  153.       end
  154.     end
  155.     # 准备过渡
  156.     Graphics.freeze
  157.     # 释放窗口
  158.     @help_window.dispose
  159.     for i in @savefile_windows
  160.       i.dispose
  161.     end
  162.   end
  163. end
  164. class Scene_Save < Scene_File
  165.   #--------------------------------------------------------------------------
  166.   # ● 确定时的处理
  167.   #--------------------------------------------------------------------------
  168.   def on_decision(filename)
  169.     # 演奏存档 SE
  170.     $game_system.se_play($data_system.save_se)
  171.     # 写入存档数据
  172.     file = File.open(filename, "wb")
  173.     write_save_data(file)
  174.     file.close
  175.     if $game_temp.message_window_showing
  176.       @ultrasaveend = true
  177.     else
  178.       # 如果被事件调用
  179.       if $game_temp.save_calling
  180.         # 清除存档调用标志
  181.         $game_temp.save_calling = false
  182.         # 切换到地图画面
  183.         $scene = Scene_Map.new
  184.         return
  185.       end
  186.       # 切换到菜单画面
  187.       $scene = Scene_Menu.new(4)
  188.     end
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ● 取消时的处理
  192.   #--------------------------------------------------------------------------
  193.   def on_cancel
  194.     # 演奏取消 SE
  195.     $game_system.se_play($data_system.cancel_se)
  196.     if $game_temp.message_window_showing
  197.       @ultrasaveend = true
  198.     else
  199.       # 如果被事件调用
  200.       if $game_temp.save_calling
  201.         # 清除存档调用标志
  202.         $game_temp.save_calling = false
  203.         # 切换到地图画面
  204.         $scene = Scene_Map.new
  205.         return
  206.       end
  207.       # 切换到菜单画面
  208.       $scene = Scene_Menu.new(4)
  209.     end
  210.   end
  211. end
复制代码
感觉帮助别人的时候自己可以学习不少,这个是我基于后知后觉的战斗商店脚本改的,LZ可以试试,我想完全满足LZ要求。
因为选择项比较特殊,按常理使用$scene跳回去就会中断选项处理了。所以用了多个Scene共存概念。���

==========================
范例:
http://115.com/file/c2dggnii
经测试通过


连贴测试


──熊猫于2012-1-18 23:07补充以上内容
作者: 沙之爱罗    时间: 2012-1-18 23:38
本帖最后由 沙之爱罗 于 2012-1-18 23:40 编辑
熊猫 发表于 2012-1-18 22:40
感觉帮助别人的时候自己可以学习不少,这个是我基于后知后觉的战斗商店脚本改的,LZ可以试试,我想完全满足 ...


这个莫非是和图片菜单脚本有冲突的……我用了图片菜单和那个66FUKI整合版
作者: 熊猫    时间: 2012-1-18 23:42
沙之爱罗 发表于 2012-1-18 23:38
这个莫非是和图片菜单脚本有冲突的……我用了图片菜单和那个66FUKI整合版 ...

发个范例吧,我看看是哪里的问题。
作者: 沙之爱罗    时间: 2012-1-19 01:31
本帖最后由 沙之爱罗 于 2012-1-19 23:36 编辑
熊猫 发表于 2012-1-18 23:42
发个范例吧,我看看是哪里的问题。


范例地址……http://115.com/file/dpxn3350#
复件_模拟人生游戏.rar



我不知道为什么会这么大
作者: 熊猫    时间: 2012-1-19 22:14
沙之爱罗 发表于 2012-1-19 01:31
范例地址……http://115.com/file/dpxn3350

文件拥有者未分享该文件。请分享。
作者: hys111111    时间: 2012-1-21 21:41
首先,先使用全键盘脚本,按F1将ESC是B键弄掉
然后将下面的放到并行处理事件里面
条件分歧:Kboard.press?($R_Key_ESC)
  $scene = Scene_Save.new
分歧结束
作者: 沙之爱罗    时间: 2012-1-21 21:47
hys111111 发表于 2012-1-21 21:41
首先,先使用全键盘脚本,按F1将ESC是B键弄掉
然后将下面的放到并行处理事件里面
条件分歧:Kboard.press?( ...

全键盘其实有什么用
作者: 精灵使者    时间: 2012-1-23 13:55
本帖最后由 精灵使者 于 2012-1-23 13:57 编辑

……纯事件其实也可以完成
显示选择项——取消的场合——条件分歧
这样选择项下会出现“取消的场合”
添加呼叫存档界面分歧即可。
别忘记了……跳转回选择项之前哦。否则的话读档就没选择项了。




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