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

Project1

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

[已经过期] 请教怎么让脚本判断是在标题画面触发的还是在游戏中

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
56 小时
注册时间
2011-9-22
帖子
60
跳转到指定楼层
1
发表于 2011-10-21 08:07:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. module Kernel
  2. def exit(n)
  3.     $scene = Ink_Exit.new
  4.   end
  5. end
复制代码

上面这个是防止点红叉关闭游戏的脚本
  1. class Ink_Exit

  2.   def main
  3.     s1 = " 返回标题画面"
  4.     s2 = "   退出游戏"
  5.     s3 = "   博客零零"
  6.     @command_window = Window_Command.new(192, [s1, s2, s3])
  7.     @command_window.x = 320 - @command_window.width / 2
  8.     @command_window.y = 240 - @command_window.height / 2
  9.     # 执行过渡
  10.     Graphics.transition
  11.     # 主循环
  12.     loop do
  13.       # 刷新游戏画面
  14.       Graphics.update
  15.       # 刷新输入情报
  16.       Input.update
  17.       # 刷新画面
  18.       update
  19.       # 如果画面切换的话就中断循环
  20.       if $scene != self
  21.         break
  22.       end
  23.     end

  24.     # 准备过渡
  25.     Graphics.freeze
  26.     # 释放窗口
  27.     @command_window.dispose
  28.     # 如果在标题画面切换中的情况下
  29.     if $scene.is_a?(Scene_End)
  30.       # 淡入淡出画面
  31.       Graphics.transition
  32.       Graphics.freeze
  33.     end
  34.   end

  35.     def update
  36.     # 刷新命令窗口
  37.     @command_window.update
  38.     # 按下 B 键的情况下
  39.     if Input.trigger?(Input::B)
  40.       # 演奏取消 SE
  41.       $game_system.se_play($data_system.cancel_se)
  42.       # 切换-
  43.       $scene = Scene_Title.new
  44.       return
  45.     end

  46.     # 按下 C 键的场合下
  47.     if Input.trigger?(Input::C)
  48.       # 命令窗口光标位置分支
  49.       case @command_window.index
  50.       when 0  #   返回标题画面
  51.         command_to_title
  52.       when 1  #   退出
  53.         command_shutdown
  54.       when 2  # 博客零零
  55.         command_blog00
  56.       end
  57.       return
  58.     end
  59.   end

  60.     def command_to_title
  61.     # 演奏确定 SE
  62.     $game_system.se_play($data_system.decision_se)
  63.     # 淡入淡出 BGM、BGS、ME
  64.     Audio.bgm_fade(800)
  65.     Audio.bgs_fade(800)
  66.     Audio.me_fade(800)
  67.     # 切换到标题画面
  68.     $scene = Scene_Title.new
  69.   end

  70.   def command_shutdown
  71.     # 演奏确定 SE
  72.     $game_system.se_play($data_system.decision_se)
  73.     # 淡入淡出 BGM、BGS、ME
  74.     Audio.bgm_fade(800)
  75.     Audio.bgs_fade(800)
  76.     Audio.me_fade(800)
  77.     # 退出
  78.     $scene = nil
  79.   end
  80.   
  81.   def command_blog00
  82.     $game_system.se_play($data_system.decision_se)
  83.     $bb_blog00 = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')
  84.     $bb_blog00.call(0, 'open', 'http://blog00.blog.163.com/',0, 0, 1)
  85.   end
  86. end
复制代码

这个是我设定在点红叉之后弹出选项询问是否关闭游戏(后面那个博客零零用的是在66rpg里看到的插入链接)

不过有点问题。。就是在跳出这个菜单之后点Esc取消的话就会直接回到标题画面(如果设置成返回游戏中菜单的话,在标题画面调出这个选项再取消就会脚本错误。。)
请问用什么办法可以让这个脚本判断目前是在标题画面调出的还是在游戏中。谢谢。
i

Lv2.观梦者

(?????)

梦石
0
星屑
728
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

2
发表于 2011-10-21 08:26:27 | 只看该作者
本帖最后由 各种压力的猫君 于 2011-10-21 08:26 编辑
  1. module Kernel
  2.   def exit(n)
  3.     $last_scene = $scene.clone
  4.     $scene = Ink_Exit.new
  5.   end
  6. end
复制代码
第3行是我加的
  1. $scene = $last_scene.clone
复制代码
然后这个替换哪句你懂吧
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
56 小时
注册时间
2011-9-22
帖子
60
3
 楼主| 发表于 2011-10-22 08:51:38 | 只看该作者
这样的话点红叉进入这个选项之后。。再点一下红叉 就会在这个选项里重新记录。。这样无论怎么返回都还在这个选项里了。。
i
回复

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42404
在线时间
7602 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

4
发表于 2011-10-22 09:14:10 | 只看该作者
用loop开菜单不仅节省开销还适用于任何位置.
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
56 小时
注册时间
2011-9-22
帖子
60
5
 楼主| 发表于 2011-10-23 09:16:48 | 只看该作者
怎么做。。

点评

话说我是个新手。。这是我第一次尝试自己写脚本 能不能说的简单点。。  发表于 2011-10-23 09:33
$scene.is_a?(Scene_Tile)  发表于 2011-10-23 09:26
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 02:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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