Project1

标题: [更新]跳过标题画面脚本(支持返回标题画面哟~) [打印本页]

作者: 光的圆周率    时间: 2011-12-5 02:05
标题: [更新]跳过标题画面脚本(支持返回标题画面哟~)
本帖最后由 光的圆周率 于 2012-1-31 02:14 编辑

RMVA加入很多新的元素(比如各种Manager),想必看过体验版的同学都看到了,系统MS全部都重写了,感觉写脚本的风格和VX不是很相同(至少窗口类看起来是这样),
    刚才在那儿一晃一晃的突然发现DataManager中有一个setup_new_game方法,第一反应就是可不可以写这样一个脚本呢?然后就试着写出来了
  更新日志  1.添加控制是否可以再次返回标题画面的标志    - 2011.12.25
                  2.修正了在事件中调用不能返回标题画面的问题  - 2012.1.6
                  3.修正了地图音乐不能够播放的问题            - 2012.1.31

  1. #===============================================================================
  2. #
  3. # 可以返回标题画面的跳过标题画面脚本
  4. # 作    者:光的圆周率
  5. # 测试情况:RPG Maker VX ACE 测试版 以及 1.00正式版 测试通过
  6. # 说明:脚本中注明的位置可以控制是否可以返回标题画面
  7. #            true:可以再次返回标题画面 false:不可以再次返回标题画面
  8. # 脚本来自66RPG,转载请保留版权信息
  9. #===============================================================================

  10. module SceneManager

  11.   def self.stack
  12.      @stack
  13.   end
  14. end

  15. class Scene_Title < Scene_Base

  16.   alias old_start start
  17.   alias old_dmv dispose_main_viewport
  18.   
  19.   def start

  20.       return_allowed = true      # 决定可否再次返回标题画面的开关
  21.       create_background
  22.       create_foreground
  23.       @sprite1.bitmap.dispose
  24.       @sprite2.bitmap.dispose
  25.       @foreground_sprite.bitmap.dispose
  26.       chk1 = SceneManager.stack.first != nil   && return_allowed
  27.       chk2 = Graphics.frame_count > 0  && return_allowed
  28.      if chk1 or chk2
  29.        old_start
  30.        return 0
  31.      end
  32.        SceneManager.clear
  33.        DataManager.setup_new_game
  34.        $game_map.autoplay
  35.        SceneManager.goto(Scene_Map)
  36.   end

  37.   def dispose_main_viewport
  38.     SceneManager.stack.first == nil ? nil : old_dmv
  39.   end
  40.   
  41. end
  42. #===============================================================================
  43. # 脚本来自66RPG,转载请保留版权信息
  44. #===============================================================================
复制代码


在事件中调用返回标题画面时, SceneManager会被初始化(MS是DLL中脚本的设定,蛋疼啊),会造成无法正常返回标题画面的问题,请直接在事件中调用SceneManager.goto(Scene_Title)来返回到标题画面或者使用更新了的脚本
作者: 仲秋启明    时间: 2011-12-5 09:10
等到出正式版我再研究吧
作者: 后知后觉    时间: 2011-12-5 14:13
动作还真快.
干完手头XP的活了再看Ace.
作者: 精灵使者    时间: 2011-12-5 18:42
如果正式版出来了,我测试一下我的一些原生脚本看看是否兼容RMVA。
作者: fangqing9    时间: 2011-12-5 19:09
是不是叫VXA合适?
作者: 小白玩家    时间: 2011-12-5 19:12
不是不能编辑脚本吗

1.jpg (22.87 KB, 下载次数: 44)

1.jpg

作者: 光的圆周率    时间: 2011-12-5 20:08
最基础的测试脚本的方法.由于Scripts.rvdata和Scripts.rvdata2的封装是相同的,用VX可以读取Ace的脚本,用ACE的Game.exe测试脚本效果就好。
作者: v2sam    时间: 2011-12-21 11:59
期待更多
作者: 光的圆周率    时间: 2011-12-25 16:16
加了一个功能,顶一个
作者: lyttmonkey    时间: 2011-12-26 12:12
光的圆周率 发表于 2011-12-25 16:16
加了一个功能,顶一个


什么情况?
作者: 光的圆周率    时间: 2011-12-26 13:15
lyttmonkey 发表于 2011-12-26 12:12
什么情况?

嘛~直接插入到MAIN脚本前就可以了,不是替换型的哟……
作者: lyttmonkey    时间: 2011-12-26 13:43
标题: RE:
光的圆周率 发表于 2011-12-26 13:15
嘛~直接插入到MAIN脚本前就可以了,不是替换型的哟……

原来如此……


lyttmonkey于2011-12-27 11:54补充以下内容:
[@]光的圆周率[/@]用事件做标题怎么添加读档?


lyttmonkey于2011-12-29 14:06补充以下内容:
[@]光的圆周率[/@]用这个之后,如何用事件读取存档呢?
作者: v2sam    时间: 2012-1-4 10:59
问题来了- -

就是不断的跳过标题画面啊,我想要像VX的那个那样,开始跳过然后回到默认标题啊
作者: 光的圆周率    时间: 2012-1-6 01:49
@v2sam抱歉更新晚了,出现在事件中的问题解决了,主要是由于在事件中调用返回标题画面时, SceneManager会被初始化(MS是DLL中脚本的设定,蛋疼啊),会造成无法正常返回标题画面的问题,请直接在事件中调用SceneManager.goto(Scene_Title)来返回到标题画面或者使用更新了的脚本
作者: 迷蓝の海    时间: 2012-1-6 04:48
好东东......最近研究这东西呢。
作者: v2sam    时间: 2012-1-6 09:57
光的圆周率 发表于 2012-1-6 01:49
@v2sam抱歉更新晚了,出现在事件中的问题解决了,主要是由于在事件中调用返回标题画面时, SceneManager会被初 ...

不过可否是指定一个地图ID作为开始,而不是以角色起始为开始呢?
作者: lyttmonkey    时间: 2012-1-6 11:18
标题: RE:
v2sam 发表于 2012-1-6 09:57
不过可否是指定一个地图ID作为开始,而不是以角色起始为开始呢?

把角色放入你想要的地图再设置场所转移不就好了
作者: 流星的瞬间    时间: 2012-1-21 12:49
坑爹啊,不行啊!
作者: ppr2d06a    时间: 2012-2-10 20:39
本帖最后由 ppr2d06a 于 2012-4-22 07:30 编辑

谢谢!
超好用!
之前找不到可返回标题画面的跳过标题画面脚本...
作者: tang19990919    时间: 2012-3-18 19:18
使用了这个脚本之后就无法跳过标题界面了!求助!求助!
  1. #==============================================================================
  2. # ■ Window_TitleCommand
  3. #------------------------------------------------------------------------------
  4. #  66RPG /YUI
  5. #    2011/12/22
  6. #==============================================================================


  7. class Window_TitleCommand < Window_Command
  8.   #--------------------------------------------------------------------------
  9.   # ● 生成指令列表
  10.   #--------------------------------------------------------------------------
  11.   def make_command_list
  12.    add_command(Vocab::new_game, :new_game)
  13.     add_command(Vocab::continue, :continue, continue_enabled)
  14.     add_command("更多游戏", :jump)#引号内中文自由编辑
  15.     add_command(Vocab::shutdown, :shutdown)
  16.   end
  17. end

  18. #==============================================================================
  19. # ■ Scene_Title
  20. #------------------------------------------------------------------------------
  21. #  标题画面
  22. #==============================================================================

  23. class Scene_Title < Scene_Base
  24.   #--------------------------------------------------------------------------
  25.   # ● 开始处理
  26.   #--------------------------------------------------------------------------
  27.   def start
  28.     super
  29.     SceneManager.clear
  30.     Graphics.freeze
  31.     create_background
  32.     create_foreground
  33.     create_command_window
  34.     play_title_music
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 取得渐变速度
  38.   #--------------------------------------------------------------------------
  39.   def transition_speed
  40.     return 20
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 结束处理
  44.   #--------------------------------------------------------------------------
  45.   def terminate
  46.     super
  47.     SceneManager.snapshot_for_background
  48.     dispose_background
  49.     dispose_foreground
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ● 生成背景
  53.   #--------------------------------------------------------------------------
  54.   def create_background
  55.     @sprite1 = Sprite.new
  56.     @sprite1.bitmap = Cache.title1($data_system.title1_name)
  57.     @sprite2 = Sprite.new
  58.     @sprite2.bitmap = Cache.title2($data_system.title2_name)
  59.     center_sprite(@sprite1)
  60.     center_sprite(@sprite2)
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● 生成前景
  64.   #--------------------------------------------------------------------------
  65.   def create_foreground
  66.     @foreground_sprite = Sprite.new
  67.     @foreground_sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
  68.     @foreground_sprite.z = 100
  69.     draw_game_title if $data_system.opt_draw_title
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● 描画游戏标题
  73.   #--------------------------------------------------------------------------
  74.   def draw_game_title
  75.     @foreground_sprite.bitmap.font.size = 48
  76.     rect = Rect.new(0, 0, Graphics.width, Graphics.height / 2)
  77.     @foreground_sprite.bitmap.draw_text(rect, $data_system.game_title, 1)
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● 释放背景
  81.   #--------------------------------------------------------------------------
  82.   def dispose_background
  83.     @sprite1.bitmap.dispose
  84.     @sprite1.dispose
  85.     @sprite2.bitmap.dispose
  86.     @sprite2.dispose
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 释放前景
  90.   #--------------------------------------------------------------------------
  91.   def dispose_foreground
  92.     @foreground_sprite.bitmap.dispose
  93.     @foreground_sprite.dispose
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ● 执行活动块的居中化
  97.   #--------------------------------------------------------------------------
  98.   def center_sprite(sprite)
  99.     sprite.ox = sprite.bitmap.width / 2
  100.     sprite.oy = sprite.bitmap.height / 2
  101.     sprite.x = Graphics.width / 2
  102.     sprite.y = Graphics.height / 2
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 生成指令窗口
  106.   #--------------------------------------------------------------------------
  107.   def create_command_window
  108.     @command_window = Window_TitleCommand.new
  109.     @command_window.set_handler(:new_game, method(:command_new_game))
  110.     @command_window.set_handler(:continue, method(:command_continue))
  111.     @command_window.set_handler(:jump, method(:command_jump))
  112.     @command_window.set_handler(:shutdown, method(:command_shutdown))
  113.   end
  114.   #--------------------------------------------------------------------------
  115.   # ● 关闭指令窗口
  116.   #--------------------------------------------------------------------------
  117.   def close_command_window
  118.     @command_window.close
  119.     update until @command_window.close?
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 指令[新游戏]
  123.   #--------------------------------------------------------------------------
  124.   def command_new_game
  125.     DataManager.setup_new_game
  126.     close_command_window
  127.     fadeout_all
  128.     $game_map.autoplay
  129.     SceneManager.goto(Scene_Map)
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 指令[继续]
  133.   #--------------------------------------------------------------------------
  134.   def command_continue
  135.     close_command_window
  136.     SceneManager.call(Scene_Load)
  137.   end
  138.     #--------------------------------------------------------------------------
  139.   # ● 跳转网页
  140.   #--------------------------------------------------------------------------
  141.   def command_jump
  142.   @jump = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')#
  143.   @jump.call(0, 'open','www.4399.com',0, 0, 1) # 修改网址
  144.    @command_window.activate
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ● 指令[退出]
  148.   #--------------------------------------------------------------------------
  149.   def command_shutdown
  150.     close_command_window
  151.     fadeout_all
  152.     SceneManager.exit
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● 演奏标题画面的音乐
  156.   #--------------------------------------------------------------------------
  157.   def play_title_music
  158.     $data_system.title_bgm.play
  159.     RPG::BGS.stop
  160.     RPG::ME.stop
  161.   end
  162. end
复制代码

作者: frankao    时间: 2012-7-12 06:32
SceneManager.goto(Scene_Title)是回到标题
SceneManager.goto(Scene_Map)是回到主角事件位置
那有没有指令可以跳到别的地方啊?例如 我建了副地图1 可不可以打个指令去地图1?
作者: m87756570    时间: 2015-1-29 22:59
为什么我什么都不会
作者: 无双逗比侠    时间: 2015-1-31 21:54
为什么第19行发生名称错误,难道是因为我用XAS?
作者: 宁长安    时间: 2018-5-30 12:30
作者您好,我在测试游戏时发现:F12刷新窗口后会直接跳转到默认标题;这算是BUG吗?
作者: zsqylmmdll    时间: 2018-9-29 14:09
问个呆萌的问题,这个脚本插在哪里QAQ?




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