设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2104|回复: 3
打印 上一主题 下一主题

[已经解决] 请问如何在这个游戏暂停脚本中加入一个选项菜单

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
84 小时
注册时间
2011-7-8
帖子
44
跳转到指定楼层
1
发表于 2014-5-26 00:26:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
就是下面这个脚本,我想要在按下暂停键后,屏幕中心显示一个选项窗口,里面的选项是“继续游戏”和“返回标题”,再次按下暂停键窗口消失且游戏恢复正常,请问要如何修改?
  1. ###############################################################################
  2. #Pause Script Version 3                                       
  3. # Author: Unsigned_Zero
  4. # Updated by Tsukihime
  5. ###############################################################################

  6. # Pause picture should be placed in the Graphics/System folder

  7. module U0_Pause_module

  8.   PAUSE_BUTTON = "B"
  9.   Pause_Picture = "Pause"

  10.   #dim the screen during pause
  11.   Dim_Screen = false
  12.   Dim_Brightness = 100
  13.   #The bgm to play when paused
  14.   Pause_Music = "1"
  15.   #The bgm volume when paused
  16.   Pause_Volume = 0
  17.   # Freeze Time when in pause mode?
  18.   TIME_STOP = true
  19.   PAUSE_BUTTON2 = eval("Input::#{PAUSE_BUTTON}")
  20.   PAUSE_OPACITY = 255 #opacity of the picture

  21.   def stopping
  22.     bgm = RPG::BGM.last
  23.     bgs = RPG::BGS.last
  24.     prev_brightness = Graphics.brightness
  25.     RPG::BGM.stop
  26.     Audio.bgm_play('Audio/BGM/' + Pause_Music, Pause_Volume)
  27.     viewport1 = Viewport.new(0, 0, Graphics.width, Graphics.height)
  28.     viewport1.z = 10000
  29.     pause_sprite = Sprite.new(viewport1)
  30.     pause_sprite.tone = Tone.new(0, 0, 0, 0)
  31.     pause_sprite.bitmap = Cache.system (Pause_Picture)
  32.     pause_sprite.opacity = PAUSE_OPACITY
  33.     loop do
  34.       Graphics.update
  35.       Graphics.brightness = Dim_Brightness if Dim_Screen
  36.       Input.update
  37.       if Input.trigger?(PAUSE_BUTTON2)
  38.         break
  39.       end
  40.     end
  41.     Graphics.brightness = prev_brightness
  42.     bgm.play(bgm.pos)
  43.     bgs.play(bgs.pos)
  44.     pause_sprite.dispose
  45.     pause_sprite = nil
  46.   end

  47. end
  48. #==============================================================================
  49. #  Scene_Base
  50. #==============================================================================

  51. class Scene_Base
  52.   include U0_Pause_module
  53.   alias u0_pause_update update
  54.   def update
  55.     if Input.trigger?(PAUSE_BUTTON2)
  56.       frame = Graphics.frame_count
  57.       stopping
  58.       if TIME_STOP
  59.         Graphics.frame_count = frame
  60.       end
  61.     end
  62.   u0_pause_update
  63.   end
  64. end
复制代码
某军事控翻译的脑残版CLANNAD
点击进入http://tieba.baidu.com/%E4%FE%BB ... 8f8e952ce6c4e1374d0

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

2
发表于 2014-5-26 02:07:19 | 只看该作者
本帖最后由 moy 于 2014-5-26 04:40 编辑

  1. #==============================================================================
  2. # ☆ Custom Adventure 简易暂停界面
  3. # -- Last Updated: 2014.5.26
  4. # -- by Moy
  5. # -- 转载请保留以上信息      
  6. #==============================================================================
  7. #   尽管除了module和scene_base部分已经和原来的脚本没有多大关系,还是@一下原作者
  8. # @Unsigned_Zero和更新者@Tsukihime
  9. #   顺便修复了点小bug,添加了点小功能,比如禁止循环调用,以及自由度更大的BGM和背景
  10. #==============================================================================
  11. module CA_PAUSE
  12.   PAUSE_BUTTON_NAME = "CTRL"  # 暂停控制键名
  13.   
  14.   DIM_SCREEN      = true    # 是否显示渐变
  15.   DIM_BRIGHTNESS  = 100     # 渐变强度
  16.   PAUSE_PICTURE   = "Pause" # 背景图文件名,存于System文件夹,false则截取屏幕为背景
  17.   PAUSE_OPACITY   = 255     # 背景透明度,0~255
  18.   PAUSE_DARK      = false   # 背景是否变暗
  19.   PAUSE_MUSIC     = "Airship" # BGM名,不需要更换则填false
  20.   PAUSE_VOLUME    = 100     # BGM音量,100为常值,不更换BGM也可调整
  21.   PAUSE_PITCH     = 100     # BGM音调,100为常值,不更换BGM也可调整
  22.   TIME_FREEZE     = true    # 暂停时是否冻结时间

  23.   PAUSE_BUTTON = eval("Input::#{PAUSE_BUTTON_NAME}") #暂停键的读取,可无视
  24. end
  25. #==============================================================================
  26. # ■ BattleManager
  27. #==============================================================================
  28. module BattleManager
  29.   @battle_freeze = false
  30.   def self.battle_freeze=(value); @battle_freeze = value;  end
  31.   def self.battle_freeze();       @battle_freeze;          end  
  32. end

  33. #==============================================================================
  34. # ■ Scene_Base
  35. #==============================================================================
  36. class Scene_Base
  37.   include CA_PAUSE
  38.   #--------------------------------------------------------------------------
  39.   # ● 更新画面
  40.   #--------------------------------------------------------------------------
  41.   alias ca_pause_update update
  42.   def update
  43.     if Input.trigger?(PAUSE_BUTTON)
  44.       frame = Graphics.frame_count
  45.       BattleManager.battle_freeze = true if self.is_a?(Scene_Battle)
  46.       SceneManager.call(Scene_Pause)
  47.       if TIME_FREEZE
  48.         Graphics.frame_count = frame
  49.       end
  50.     end
  51.     ca_pause_update
  52.   end
  53. end

  54. #==============================================================================
  55. # ■ Scene_Battle
  56. #==============================================================================
  57. class Scene_Battle < Scene_Base
  58.   #--------------------------------------------------------------------------
  59.   # ● 战斗开始
  60.   #--------------------------------------------------------------------------
  61.   def battle_start
  62.     BattleManager.battle_start unless BattleManager.battle_freeze
  63.     BattleManager.battle_freeze = false
  64.     process_event
  65.     start_party_command_selection
  66.   end
  67. end

  68. #==============================================================================
  69. # ■ Window_Pause
  70. #==============================================================================
  71. class Window_Pause < Window_Command
  72.   #--------------------------------------------------------------------------
  73.   # ● 初始化对象
  74.   #--------------------------------------------------------------------------
  75.   def initialize
  76.     super(0, 0)
  77.     update_placement
  78.     self.openness = 0
  79.     open
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 获取窗口的宽度
  83.   #--------------------------------------------------------------------------
  84.   def window_width
  85.     return 160
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● 更新窗口的位置
  89.   #--------------------------------------------------------------------------
  90.   def update_placement
  91.     self.x = (Graphics.width - width) / 2
  92.     self.y = (Graphics.height - height) / 2
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ● 生成指令列表
  96.   #--------------------------------------------------------------------------
  97.   def make_command_list
  98.     add_command("返回游戏", :cancel)
  99.     add_command(Vocab::to_title, :to_title)
  100.   end
  101. end

  102. #==============================================================================
  103. # ■ Scene_Pause
  104. #==============================================================================
  105. class Scene_Pause < Scene_Base
  106.   include CA_PAUSE
  107.   #--------------------------------------------------------------------------
  108.   # ● 开始处理
  109.   #--------------------------------------------------------------------------
  110.   def start
  111.     super
  112.     play_pause_music
  113.     create_background
  114.     create_command_window
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● 结束处理
  118.   #--------------------------------------------------------------------------
  119.   def terminate
  120.     super
  121.     dispose_background
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ● 执行进入场景时的渐变
  125.   #--------------------------------------------------------------------------
  126.   def perform_transition
  127.     if DIM_SCREEN
  128.       Graphics.transition(DIM_BRIGHTNESS)
  129.     else
  130.       super
  131.     end
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 更新画面  避免重复调用
  135.   #--------------------------------------------------------------------------
  136.   def update
  137.     ca_pause_update
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 生成背景
  141.   #--------------------------------------------------------------------------
  142.   def create_background
  143.     @background_sprite = Sprite.new
  144.     @background_sprite.bitmap = PAUSE_PICTURE ? Cache.system(PAUSE_PICTURE) : SceneManager.background_bitmap
  145.     @background_sprite.color.set(16, 16, 16, 128) if PAUSE_DARK
  146.     @background_sprite.opacity = PAUSE_OPACITY
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # ● 释放背景
  150.   #--------------------------------------------------------------------------
  151.   def dispose_background
  152.     @background_sprite.dispose
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● 生成指令窗口
  156.   #--------------------------------------------------------------------------
  157.   def create_command_window
  158.     @command_window = Window_Pause.new
  159.     @command_window.set_handler(:cancel,    method(:return_scene))
  160.     @command_window.set_handler(:to_title,   method(:command_to_title))
  161.   end
  162.   #--------------------------------------------------------------------------
  163.   # ● 指令“返回标题”
  164.   #--------------------------------------------------------------------------
  165.   def command_to_title
  166.     close_command_window
  167.     fadeout_all
  168.     SceneManager.goto(Scene_Title)
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ● 返回前一个场景
  172.   #--------------------------------------------------------------------------
  173.   def return_scene
  174.     play_last_music
  175.     SceneManager.return
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● 返回前一个场景
  179.   #--------------------------------------------------------------------------
  180.   def return_scene
  181.     BattleManager.protect_environment if self.is_a?(Scene_Battle)
  182.     SceneManager.return
  183.   end
  184.   #--------------------------------------------------------------------------
  185.   # ● 关闭指令窗口
  186.   #--------------------------------------------------------------------------
  187.   def close_command_window
  188.     @command_window.close
  189.     update until @command_window.close?
  190.   end
  191.   #--------------------------------------------------------------------------
  192.   # ● 播放暂停画面音乐
  193.   #--------------------------------------------------------------------------
  194.   def play_pause_music
  195.     @last_bgm = RPG::BGM.last
  196.     if PAUSE_MUSIC
  197.       Audio.bgm_play('Audio/BGM/' + PAUSE_MUSIC, PAUSE_VOLUME, PAUSE_PITCH)
  198.     else
  199.       Audio.bgm_play('Audio/BGM/' + @last_bgm.name , PAUSE_VOLUME, PAUSE_PITCH, @last_bgm.pos)
  200.     end
  201.     RPG::BGS.stop
  202.     RPG::ME.stop
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 播放保存的音乐
  206.   #--------------------------------------------------------------------------
  207.   def play_last_music
  208.     Audio.bgm_play('Audio/BGM/' + @last_bgm.name , @last_bgm.volume, @last_bgm.pitch, @last_bgm.pos)
  209.   end
  210. end
复制代码
基本照搬默认脚本的流程,我自己纯做个复习,顺便帮你完成了。就是改的几乎没有内容了,原作者真是抱歉啊|||不过加了些功能,也修复了一些bug,可安心233.
@Unsigned_Zero @Tsukihime


这个故事告诉我们,当你看到别人使用奇怪的方式实现一个东西的时候,总是有其原因的。(白目

点评

moy
我靠。差点没给Battle坑死。真是作大死= =b  发表于 2014-5-26 04:28
moy
想了想为了自用,改顺眼了点=-=b  发表于 2014-5-26 03:29
moy
为了测试,将设置改了一点,你自己copy回来就好  发表于 2014-5-26 02:08

评分

参与人数 1梦石 +2 收起 理由
taroxd + 2 糖先给了~写脚本辛苦

查看全部评分

Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
84 小时
注册时间
2011-7-8
帖子
44
3
 楼主| 发表于 2014-5-26 11:52:06 | 只看该作者
moy 发表于 2014-5-26 02:07
基本照搬默认脚本的流程,我自己纯做个复习,顺便帮你完成了。就是改的几乎没有内容了,原作者真是抱歉啊|| ...

亲测可以使用,非常感谢!
某军事控翻译的脑残版CLANNAD
点击进入http://tieba.baidu.com/%E4%FE%BB ... 8f8e952ce6c4e1374d0
回复 支持 反对

使用道具 举报

Lv2.观梦者 (暗夜天使)

卑微的梦

梦石
0
星屑
511
在线时间
820 小时
注册时间
2013-2-23
帖子
1185

短篇九勇士组季军

4
发表于 2014-5-26 20:26:49 | 只看该作者
外站看到过这个脚本,然后..就没有然后了...
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-4 19:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表