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

Project1

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

[RMXP发布] 【脚本】标题画面前选择是否全屏游戏

[复制链接]

Lv5.捕梦者

梦石
0
星屑
33442
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

跳转到指定楼层
1
发表于 2013-1-13 13:07:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 芯☆淡茹水 于 2013-1-13 16:34 编辑
  1. #============================================================================
  2. #★标题画面前选择是否全屏游戏
  3. #============================================================================
  4. #  by:芯☆淡茹水
  5. #============================================================================
  6. #◆此脚本在原有的标题画面前添加了一个选择是否全屏游戏的选择场景,一些必要的东
  7. #◆西如:战斗测试,还是挪到了这个场景里面。
  8. #----------------------------------------------------------------------------
  9. #◆使用方法:1.复制该脚本,插入到 Main 前。
  10. #            2.脚本 Main 第13行,原句:$scene = Scene_Scene_Title.new
  11. #                                改为:$scene = Scene_Xuanze.new
  12. #----------------------------------------------------------------------------
  13. #◆感谢“我爱吴悦淇”提供全屏的脚本代码。                                                
  14. #============================================================================
  15. # ■ Scene_Xuanze
  16. #----------------------------------------------------------------------------
  17. #  处理标题前选择的类。
  18. #============================================================================

  19. class Scene_Xuanze
  20.   #--------------------------------------------------------------------------
  21.   # ● 主处理
  22.   #--------------------------------------------------------------------------
  23.   def main
  24.     # 战斗测试的情况下
  25.     if $BTEST
  26.       battle_test
  27.       return
  28.     end
  29.     # 载入数据库
  30.     $data_actors        = load_data("Data/Actors.rxdata")
  31.     $data_classes       = load_data("Data/Classes.rxdata")
  32.     $data_skills        = load_data("Data/Skills.rxdata")
  33.     $data_items         = load_data("Data/Items.rxdata")
  34.     $data_weapons       = load_data("Data/Weapons.rxdata")
  35.     $data_armors        = load_data("Data/Armors.rxdata")
  36.     $data_enemies       = load_data("Data/Enemies.rxdata")
  37.     $data_troops        = load_data("Data/Troops.rxdata")
  38.     $data_states        = load_data("Data/States.rxdata")
  39.     $data_animations    = load_data("Data/Animations.rxdata")
  40.     $data_tilesets      = load_data("Data/Tilesets.rxdata")
  41.     $data_common_events = load_data("Data/CommonEvents.rxdata")
  42.     $data_system        = load_data("Data/System.rxdata")
  43.     # 生成系统对像
  44.     $game_system = Game_System.new
  45.     # 生成命令窗口
  46.     s1 = "是"
  47.     s2 = "否"
  48.     @command_window = Window_Command.new(192, [s1, s2])
  49.     @command_window.back_opacity = 160
  50.     @command_window.x = 320 - @command_window.width / 2
  51.     @command_window.y = 220
  52.     # 生成提示窗口
  53.     @tishi_window = Window_Tishi.new
  54.     @tishi_window.back_opacity = 160
  55.     @tishi_window.x = 320 - @tishi_window.width / 2
  56.     @tishi_window.y = 162
  57.     # 执行过渡
  58.     Graphics.transition
  59.     # 主循环
  60.     loop do
  61.       # 刷新游戏画面
  62.       Graphics.update
  63.       # 刷新输入信息
  64.       Input.update
  65.       # 刷新画面
  66.       update
  67.       # 如果画面被切换就中断循环
  68.       if $scene != self
  69.         break
  70.       end
  71.     end
  72.     # 准备过渡
  73.     Graphics.freeze
  74.     # 释放窗口
  75.     @tishi_window.dispose
  76.     @command_window.dispose
  77.   end
  78.   #--------------------------------------------------------------------------
  79.   # ● 刷新画面
  80.   #--------------------------------------------------------------------------
  81.   def update
  82.     # 刷新命令窗口
  83.     @command_window.update
  84.     # 按下 C 键的情况下
  85.     if Input.trigger?(Input::C)
  86.       # 命令窗口的光标位置的分支
  87.       case @command_window.index
  88.       when 0  # 是
  89.         # 全屏化
  90.         $keybd = Win32API.new('user32', 'keybd_event', ['i', 'i', 'l', 'l'], 'v')
  91.         $keybd.call(0xA4, 0, 0, 0)
  92.         $keybd.call(13, 0, 0, 0)
  93.         $keybd.call(13, 0, 2, 0)
  94.         $keybd.call(0xA4, 0, 2, 0)
  95.         # 切换到标题画面
  96.         $scene = Scene_Title.new
  97.       when 1  # 否
  98.         # 切换到标题画面
  99.         $scene = Scene_Title.new
  100.       end
  101.     end
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 战斗测试
  105.   #--------------------------------------------------------------------------
  106.   def battle_test
  107.     # 载入数据库 (战斗测试用)
  108.     $data_actors        = load_data("Data/BT_Actors.rxdata")
  109.     $data_classes       = load_data("Data/BT_Classes.rxdata")
  110.     $data_skills        = load_data("Data/BT_Skills.rxdata")
  111.     $data_items         = load_data("Data/BT_Items.rxdata")
  112.     $data_weapons       = load_data("Data/BT_Weapons.rxdata")
  113.     $data_armors        = load_data("Data/BT_Armors.rxdata")
  114.     $data_enemies       = load_data("Data/BT_Enemies.rxdata")
  115.     $data_troops        = load_data("Data/BT_Troops.rxdata")
  116.     $data_states        = load_data("Data/BT_States.rxdata")
  117.     $data_animations    = load_data("Data/BT_Animations.rxdata")
  118.     $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")
  119.     $data_common_events = load_data("Data/BT_CommonEvents.rxdata")
  120.     $data_system        = load_data("Data/BT_System.rxdata")
  121.     # 重置测量游戏时间用的画面计数器
  122.     Graphics.frame_count = 0
  123.     # 生成各种游戏对像
  124.     $game_temp          = Game_Temp.new
  125.     $game_system        = Game_System.new
  126.     $game_switches      = Game_Switches.new
  127.     $game_variables     = Game_Variables.new
  128.     $game_self_switches = Game_SelfSwitches.new
  129.     $game_screen        = Game_Screen.new
  130.     $game_actors        = Game_Actors.new
  131.     $game_party         = Game_Party.new
  132.     $game_troop         = Game_Troop.new
  133.     $game_map           = Game_Map.new
  134.     $game_player        = Game_Player.new
  135.     # 设置战斗测试用同伴
  136.     $game_party.setup_battle_test_members
  137.     # 设置队伍 ID、可以逃走标志、战斗背景
  138.     $game_temp.battle_troop_id = $data_system.test_troop_id
  139.     $game_temp.battle_can_escape = true
  140.     $game_map.battleback_name = $data_system.battleback_name
  141.     # 演奏战斗开始 BGM
  142.     $game_system.se_play($data_system.battle_start_se)
  143.     # 演奏战斗 BGM
  144.     $game_system.bgm_play($game_system.battle_bgm)
  145.     # 切换到战斗画面
  146.     $scene = Scene_Battle.new
  147.   end
  148. end
  149. #==============================================================================
  150. # ■ Scene_Title
  151. #------------------------------------------------------------------------------
  152. #  处理标题画面的类。
  153. #==============================================================================

  154. class Scene_Title
  155.   #--------------------------------------------------------------------------
  156.   # ● 主处理
  157.   #--------------------------------------------------------------------------
  158.   def main
  159.     # 生成标题图形
  160.     @sprite = Sprite.new
  161.     @sprite.bitmap = RPG::Cache.title($data_system.title_name)
  162.     # 生成命令窗口
  163.     s1 = "新游戏"
  164.     s2 = "继续"
  165.     s3 = "退出"
  166.     @command_window = Window_Command.new(192, [s1, s2, s3])
  167.     @command_window.back_opacity = 160
  168.     @command_window.x = 320 - @command_window.width / 2
  169.     @command_window.y = 288
  170.     # 判定继续的有效性
  171.     # 存档文件一个也不存在的时候也调查
  172.     # 有効为 @continue_enabled 为 true、无效为 false
  173.     @continue_enabled = false
  174.     for i in 0..3
  175.       if FileTest.exist?("Save#{i+1}.rxdata")
  176.         @continue_enabled = true
  177.       end
  178.     end
  179.     # 继续为有效的情况下、光标停止在继续上
  180.     # 无效的情况下、继续的文字显示为灰色
  181.     if @continue_enabled
  182.       @command_window.index = 1
  183.     else
  184.       @command_window.disable_item(1)
  185.     end
  186.     # 演奏标题 BGM
  187.     $game_system.bgm_play($data_system.title_bgm)
  188.     # 停止演奏 ME、BGS
  189.     Audio.me_stop
  190.     Audio.bgs_stop
  191.     # 执行过渡
  192.     Graphics.transition
  193.     # 主循环
  194.     loop do
  195.       # 刷新游戏画面
  196.       Graphics.update
  197.       # 刷新输入信息
  198.       Input.update
  199.       # 刷新画面
  200.       update
  201.       # 如果画面被切换就中断循环
  202.       if $scene != self
  203.         break
  204.       end
  205.     end
  206.     # 装备过渡
  207.     Graphics.freeze
  208.     # 释放命令窗口
  209.     @command_window.dispose
  210.     # 释放标题图形
  211.     @sprite.bitmap.dispose
  212.     @sprite.dispose
  213.   end
  214.   #--------------------------------------------------------------------------
  215.   # ● 刷新画面
  216.   #--------------------------------------------------------------------------
  217.   def update
  218.     # 刷新命令窗口
  219.     @command_window.update
  220.     # 按下 C 键的情况下
  221.     if Input.trigger?(Input::C)
  222.       # 命令窗口的光标位置的分支
  223.       case @command_window.index
  224.       when 0  # 新游戏
  225.         command_new_game
  226.       when 1  # 继续
  227.         command_continue
  228.       when 2  # 退出
  229.         command_shutdown
  230.       end
  231.     end
  232.   end
  233.   #--------------------------------------------------------------------------
  234.   # ● 命令 : 新游戏
  235.   #--------------------------------------------------------------------------
  236.   def command_new_game
  237.     # 演奏确定 SE
  238.     $game_system.se_play($data_system.decision_se)
  239.     # 停止 BGM
  240.     Audio.bgm_stop
  241.     # 重置测量游戏时间用的画面计数器
  242.     Graphics.frame_count = 0
  243.     # 生成各种游戏对像
  244.     $game_temp          = Game_Temp.new
  245.     $game_system        = Game_System.new
  246.     $game_switches      = Game_Switches.new
  247.     $game_variables     = Game_Variables.new
  248.     $game_self_switches = Game_SelfSwitches.new
  249.     $game_screen        = Game_Screen.new
  250.     $game_actors        = Game_Actors.new
  251.     $game_party         = Game_Party.new
  252.     $game_troop         = Game_Troop.new
  253.     $game_map           = Game_Map.new
  254.     $game_player        = Game_Player.new
  255.     # 设置初期同伴位置
  256.     $game_party.setup_starting_members
  257.     # 设置初期位置的地图
  258.     $game_map.setup($data_system.start_map_id)
  259.     # 主角向初期位置移动
  260.     $game_player.moveto($data_system.start_x, $data_system.start_y)
  261.     # 刷新主角
  262.     $game_player.refresh
  263.     # 执行地图设置的 BGM 与 BGS 的自动切换
  264.     $game_map.autoplay
  265.     # 刷新地图 (执行并行事件)
  266.     $game_map.update
  267.     # 切换地图画面
  268.     $scene = Scene_Map.new
  269.   end
  270.   #--------------------------------------------------------------------------
  271.   # ● 命令 : 继续
  272.   #--------------------------------------------------------------------------
  273.   def command_continue
  274.     # 继续无效的情况下
  275.     unless @continue_enabled
  276.       # 演奏无效 SE
  277.       $game_system.se_play($data_system.buzzer_se)
  278.       return
  279.     end
  280.     # 演奏确定 SE
  281.     $game_system.se_play($data_system.decision_se)
  282.     # 切换到读档画面
  283.     $scene = Scene_Load.new
  284.   end
  285.   #--------------------------------------------------------------------------
  286.   # ● 命令 : 退出
  287.   #--------------------------------------------------------------------------
  288.   def command_shutdown
  289.     # 演奏确定 SE
  290.     $game_system.se_play($data_system.decision_se)
  291.     # BGM、BGS、ME 的淡入淡出
  292.     Audio.bgm_fade(800)
  293.     Audio.bgs_fade(800)
  294.     Audio.me_fade(800)
  295.     # 退出
  296.     $scene = nil
  297.   end
  298. end
  299. #==============================================================================
  300. # ■ Window_Tishi
  301. #------------------------------------------------------------------------------
  302. #  显示提示的窗口。
  303. #==============================================================================

  304. class Window_Tishi < Window_Base
  305.   #--------------------------------------------------------------------------
  306.   # ● 初始化窗口
  307.   #--------------------------------------------------------------------------
  308.   def initialize
  309.     super(0, 0, 192, 58)
  310.     self.contents = Bitmap.new(width - 32, height - 32)
  311.     refresh
  312.   end
  313.   #--------------------------------------------------------------------------
  314.   # ● 刷新
  315.   #--------------------------------------------------------------------------
  316.   def refresh
  317.     self.contents.clear
  318.     self.contents.font.color = normal_color
  319.     self.contents.draw_text(0,-12, 172, 52, "是否全屏进入游戏?")
  320.   end
  321. end
复制代码
效果:




  刚刚由于失误,脚本里有个错误的地方,现已改。

点评

可以帮我弄个开头现在字体的吗?  发表于 2013-3-8 19:33

评分

参与人数 1星屑 +6 收起 理由
315038639 + 6 辛苦了

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制

Lv1.梦旅人

梦石
0
星屑
75
在线时间
435 小时
注册时间
2012-7-31
帖子
796
2
发表于 2013-1-13 13:50:55 | 只看该作者
直接Alt+Enter不就行了吗,游戏前搞个字幕告诉玩家怎么全屏就好啊……

点评

这个是帮某人写的。觉得如果有人有需要的话,就把它放这儿了  发表于 2013-1-13 13:59
比回车麻烦= =  发表于 2013-1-13 13:55
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
655
在线时间
579 小时
注册时间
2010-2-15
帖子
1367
3
发表于 2013-1-13 14:26:58 | 只看该作者
本帖最后由 315038639 于 2013-1-13 14:30 编辑

同意楼上……虽然LZ很辛苦,但确实感觉有点不实用……

而且游戏还没有开始就弹出一个对话框有点不协调……
不过LZ可以外套一个程序……生成游戏窗口之前询问一下比较好……

RM本身的全屏不过就是把小窗口拉伸一下……会不清楚……所以像我们做的不需要大力渲染气氛的话,小游戏窗口就完全可以了。

点评

这个脚本就是啊。打开游戏,首先弹出上面的选择框,然后才是标题画面。  发表于 2013-1-13 14:35
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1433
在线时间
1705 小时
注册时间
2011-8-17
帖子
818
4
发表于 2013-1-13 15:27:03 | 只看该作者
而且这个脚本和图片标题冲突....

点评

刚刚由于失误,现在已改  发表于 2013-1-13 15:32
roguelike求生RPG研发中....
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
432
在线时间
4175 小时
注册时间
2010-6-26
帖子
6474
5
发表于 2013-1-13 16:16:14 | 只看该作者
这个脚本我非常支持,比那种流氓性的强制全屏好多了!真的。
不过我正好处理一下然后整合入我的RGSS1.03a中。
潜水,专心忙活三次元工作了……
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
655
在线时间
579 小时
注册时间
2010-2-15
帖子
1367
6
发表于 2013-1-13 20:41:40 | 只看该作者
不是说标题画面的问题……是游戏窗口……就是你对话框显示的那个黑屏……需要打开这个窗口才能运行脚本,这个窗口就多余了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
122
在线时间
1740 小时
注册时间
2009-7-12
帖子
443
7
发表于 2013-1-13 20:58:58 | 只看该作者
現在大部分顯卡的解析度都很高,動不動就1280*960以上
RM的640*480看起來實在疼得可以,雖然有分辨率擴展,但那個效率啊我去。。。
全屏雖然只是畫面拉伸,會模糊,但總比一個小視窗來的好

那啥…我以為用戶名只是通行碼…
所以我暱稱不是serena718哈,是月見斐夜
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

8
发表于 2013-1-14 09:19:22 | 只看该作者
精灵温馨提示:
可以通过跳过标题脚本来做LOGO和这些事情
回复 支持 反对

使用道具 举报

Lv1.梦旅人

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
9
发表于 2013-1-14 23:16:59 | 只看该作者
建议直接
  1. @tishi_window = Window_Base.new(0, 0, 192, 58)
  2. @tishi_window.content = Bitmap.new(160,26)
  3. @tishi_window.draw_text(0,-12, 172, 52, "是否全屏进入游戏?")
  4. @tishi_window.back_opacity = 160
  5. @tishi_window.x = 320 - @tishi_window.width / 2
  6. @tishi_window.y = 162
复制代码
p/s:此脚本还有非常大的进步空间。
但是只要肯尝试就是好事==
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
960
在线时间
17 小时
注册时间
2012-10-2
帖子
3
10
发表于 2013-2-24 20:38:55 | 只看该作者
选择是否全屏前如果已经全屏
则按是变成窗口模式,按否依然全屏

点评

这算不算是个BUG呢  发表于 2013-2-25 16:23
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 15:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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