Project1

标题: 请问怎么在游戏通关【或者触发事件后 更换标题画面的图? [打印本页]

作者: 羊驼先森不会灰    时间: 2012-12-2 21:19
标题: 请问怎么在游戏通关【或者触发事件后 更换标题画面的图?
····就是如题目一样的。。
嗯。。就是想,在触发某个剧情以后,标题画面就更改成另一个样子【永久性的。。也?
然后。。跪求各位大大帮忙····
不过总觉得这个想法有点荒谬呢。。
作者: j433463    时间: 2012-12-2 21:39
每一次启动游戏,那时候还没有选择进入新游戏或读档,应该不会判断到是否已经二回目了吧?
作者: 亿万星辰    时间: 2012-12-2 21:52
大致思路是这样的,可以在触发某个情节之后打开某个开关,之后只要再存过档,就会改变标题了。
之后在Scene_Title里要先遍历所有的存档,如果任意一个存档中的这个开关打开,则把标题换成另外的一种背景图片即可。
作者: 羊驼先森不会灰    时间: 2012-12-2 22:14
亿万星辰 发表于 2012-12-2 21:52
大致思路是这样的,可以在触发某个情节之后打开某个开关,之后只要再存过档,就会改变标题了。
之后在Scene ...

嗯。。那个。。请问大大可以讲一下具体的事例吗?比如说做个范例之类的。。麻烦了>///<因为是新人所以没有去学脚本······
作者: 亿万星辰    时间: 2012-12-2 22:38
本帖最后由 亿万星辰 于 2012-12-2 22:40 编辑
羊驼先森不会灰 发表于 2012-12-2 22:14
嗯。。那个。。请问大大可以讲一下具体的事例吗?比如说做个范例之类的。。麻烦了>/// ...


其实道理和二回目的那个道理是一样的,关键在于Scene_Title开始时对存档的处理。
  1. class Scene_Title
  2.   #--------------------------------------------------------------------------
  3.   # ● 主处理
  4.   #--------------------------------------------------------------------------
  5.   def main
  6.     # 战斗测试的情况下
  7.     if $BTEST
  8.       battle_test
  9.       return
  10.     end
  11.     # 载入数据库
  12.     $data_actors        = load_data("Data/Actors.rxdata")
  13.     $data_classes       = load_data("Data/Classes.rxdata")
  14.     $data_skills        = load_data("Data/Skills.rxdata")
  15.     $data_items         = load_data("Data/Items.rxdata")
  16.     $data_weapons       = load_data("Data/Weapons.rxdata")
  17.     $data_armors        = load_data("Data/Armors.rxdata")
  18.     $data_enemies       = load_data("Data/Enemies.rxdata")
  19.     $data_troops        = load_data("Data/Troops.rxdata")
  20.     $data_states        = load_data("Data/States.rxdata")
  21.     $data_animations    = load_data("Data/Animations.rxdata")
  22.     $data_tilesets      = load_data("Data/Tilesets.rxdata")
  23.     $data_common_events = load_data("Data/CommonEvents.rxdata")
  24.     $data_system        = load_data("Data/System.rxdata")
  25.     # ★ 这里先判断是否存在存档
  26.     # 判定继续的有效性
  27.     # 存档文件一个也不存在的时候也调查
  28.     # 有効为 @continue_enabled 为 true、无效为 false
  29.     # ★ 捕捉每个存档中的【开关1】是否开启,如果有任意一个存档开启则换背景
  30.     @continue_enabled = false
  31.     flag = false
  32.     for i in 0..3
  33.       if FileTest.exist?("Save#{i+1}.rxdata")
  34.         @continue_enabled = true
  35.         # ★ 打开存档
  36.         file = File.open("Save#{i+1}.rxdata", "r")
  37.         # ★ 抛弃掉前边无用的信息
  38.         data = Marshal.load(file)
  39.         data = Marshal.load(file)
  40.         data = Marshal.load(file)
  41.         # ★ 获取到开关信息
  42.         data = Marshal.load(file)
  43.         # ★ 记录【开关1】的信息
  44.         flag |= data[1]
  45.       end
  46.     end
  47.     # 生成系统对像
  48.     $game_system = Game_System.new
  49.     # 生成标题图形
  50.     @sprite = Sprite.new
  51.     # ★ 如果有存档,那么才要继续考虑是否有必要去更换背景
  52.     if @continue_enabled == true
  53.       if flag == true
  54.         # ★ 这里是【开关1】开启后对应的背景图文件名,自行修改
  55.         @sprite.bitmap = RPG::Cache.title("new")
  56.       else
  57.         @sprite.bitmap = RPG::Cache.title($data_system.title_name)
  58.       end
  59.     else
  60.       @sprite.bitmap = RPG::Cache.title($data_system.title_name)
  61.     end
  62.     # 生成命令窗口
  63.     s1 = "新游戏"
  64.     s2 = "继续"
  65.     s3 = "退出"
  66.     @command_window = Window_Command.new(192, [s1, s2, s3])
  67.     @command_window.back_opacity = 160
  68.     @command_window.x = 320 - @command_window.width / 2
  69.     @command_window.y = 288
  70.     # 继续为有效的情况下、光标停止在继续上
  71.     # 无效的情况下、继续的文字显示为灰色
  72.     if @continue_enabled
  73.       @command_window.index = 1
  74.     else
  75.       @command_window.disable_item(1)
  76.     end
  77.     # 演奏标题 BGM
  78.     $game_system.bgm_play($data_system.title_bgm)
  79.     # 停止演奏 ME、BGS
  80.     Audio.me_stop
  81.     Audio.bgs_stop
  82.     # 执行过渡
  83.     Graphics.transition
  84.     # 主循环
  85.     loop do
  86.       # 刷新游戏画面
  87.       Graphics.update
  88.       # 刷新输入信息
  89.       Input.update
  90.       # 刷新画面
  91.       update
  92.       # 如果画面被切换就中断循环
  93.       if $scene != self
  94.         break
  95.       end
  96.     end
  97.     # 装备过渡
  98.     Graphics.freeze
  99.     # 释放命令窗口
  100.     @command_window.dispose
  101.     # 释放标题图形
  102.     @sprite.bitmap.dispose
  103.     @sprite.dispose
  104.   end
复制代码
直接插入到尾部也行,或者只把main方法覆盖掉即可,只针对默认工程编写。

自行准备一个叫new的title图片,或者你自己把脚本里对应位置的文件名改一下。

搜索“★”查看注释。
作者: 羊驼先森不会灰    时间: 2012-12-8 13:19
亿万星辰 发表于 2012-12-2 22:38
其实道理和二回目的那个道理是一样的,关键在于Scene_Title开始时对存档的处理。直接插入到尾部也行,或 ...

啊···那个。。谢谢。这么晚才回复真是对不起。。




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