查看: 2796|回复: 2

[已经解决] 关于标题画面自定义脚本搭配标题画面新增选项脚本

[复制链接]
梦石
0
星屑
1487
在线时间
429 小时
注册时间
2014-4-25
回帖
32
发表于 2022-2-13 00:32:08 | 显示全部楼层 |阅读模式
悬赏100星屑已解决
我想在用过パラ犬大人的“标题画面自定义”脚本的标题画面增加一个彩蛋选项,通关之前都是隐藏的,通关后才显示


于是用了喵呜喵5大人的“标题画面新增选项”脚本


一通魔改之后

QQ截图20220212235905.png


变成了这样,最下面的按钮在“标题画面新增选项”脚本中是不显示状态,不会被选中,但是图片无法隐藏

请问要如何在通关之前隐藏它?TAT



以下分别是上面提到的两个脚本的个人修改版

[pre lang="ruby"]#==============================================================================
# ++ タイトル画面カスタマイズ [RGSS3] ver. 1.00 ++
#  Script by パラ犬
#------------------------------------------------------------------------------
# タイトル画面のコマンドに画像を使用できるようにします。
#==============================================================================

class Window_TitleCommand < Window_Command

#------------------------------------------------------------------------------
# ↓ 簡単に設定できるように設定項目を切り出し
  
  # 1行目:メニューコマンドに使う画像ファイル名(「Graphics/Titles1」に入れる )
  #     ( 書式は [ コマンド未選択時 , コマンドが選択されたとき ] )
  # 2行目:画像の表示位置(X座標)
  # 3行目:画像の表示位置(Y座標)

  # ニューゲーム
  IMG_NEWGAME = ["newgame","newgame_active"]
  IMG_NEWGAME_X = 250   # 横位置
  IMG_NEWGAME_Y = 280   # 縦位置
  # コンティニュー
  IMG_CONTINUE = ["continue","continue_active"]
  IMG_CONTINUE_X = 250   # 横位置
  IMG_CONTINUE_Y = 330   # 縦位置
  # シャットダウン
  IMG_SHUTDOWN = ["shutdown","shutdown_active"]
  IMG_SHUTDOWN_X = 250   # 横位置
  IMG_SHUTDOWN_Y = 380   # 縦位置
  # 彩蛋
  IMG_EX = ["EX","EX_active"]
  IMG_EX_X = 250   # 横位置
  IMG_EX_Y = 430   # 縦位置

# ↑ 設定項目ここまで
#------------------------------------------------------------------------------

  #--------------------------------------------------------------------------
  # ○ 画像コマンドウィンドウの作成
  #--------------------------------------------------------------------------
  def create_command_sprite
    # ニューゲーム
    sprite1 = Sprite.new
    sprite1.x = IMG_NEWGAME_X
    sprite1.y = IMG_NEWGAME_Y
    # コンティニュー
    sprite2 = Sprite.new
    sprite2.x = IMG_CONTINUE_X
    sprite2.y = IMG_CONTINUE_Y
    # シャットダウン
    sprite3 = Sprite.new
    sprite3.x = IMG_SHUTDOWN_X
    sprite3.y = IMG_SHUTDOWN_Y
    # 彩蛋
    sprite4 = Sprite.new
    sprite4.x = IMG_EX_X
    sprite4.y = IMG_EX_Y
    # スプライトを配列で管理
    @command_sprites = [sprite1, sprite2, sprite3, sprite4]
    # ビットマップファイル名を配列で管理
    @command_bitmaps = [IMG_NEWGAME, IMG_CONTINUE, IMG_SHUTDOWN, IMG_EX]
  end
  #--------------------------------------------------------------------------
  # ○ メニュー選択時の画像切り替え
  #--------------------------------------------------------------------------
  def select_command_sprite(index)
    # 全てのスプライトに[コマンド未選択時]のビットマップをつっこむ
    @command_sprites[0].bitmap = Cache.title1(@command_bitmaps[0][0])
    @command_sprites[1].bitmap = Cache.title1(@command_bitmaps[1][0])
    @command_sprites[2].bitmap = Cache.title1(@command_bitmaps[2][0])
    @command_sprites[3].bitmap = Cache.title1(@command_bitmaps[3][0])
    # 選択されている項目のビットマップを[コマンドが選択されたとき]に変える
    @command_sprites[index].bitmap = Cache.title1(@command_bitmaps[index][1])
  end
  #--------------------------------------------------------------------------
  # ○ 項目の描画
  #--------------------------------------------------------------------------
  def set_enabled_command_sprite(index, enabled)
    if enabled
      @command_sprites[index].opacity = 255
    else
      # 選択不可の項目は不透明度を下げる
      @command_sprites[index].opacity = 160
    end
  end
  #--------------------------------------------------------------------------
  # ○ 解放
  #--------------------------------------------------------------------------
  def dispose_command_sprite
    if @command_sprites != nil
      @command_sprites[0].dispose
      @command_sprites[1].dispose
      @command_sprites[2].dispose
      @command_sprites[3].dispose
    end
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    # 呼び出し:○画像コマンドウィンドウの作成
    create_command_sprite
    # 元からあるコマンドウインドウを非表示にする
    self.visible = false
    super
  end
  #--------------------------------------------------------------------------
  # ● カーソル位置の設定
  #--------------------------------------------------------------------------
  def index=(index)
    super
    # 呼び出し:○メニュー選択時の画像切り替え
    select_command_sprite(index)
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    super
    # 呼び出し:○項目の描画
    set_enabled_command_sprite(index, command_enabled?(index))
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  def dispose
    # 呼び出し:○解放
    dispose_command_sprite
    super
  end
end
[/pre]


[pre lang="ruby"]=begin
===============================================================================
  标题画面新增选项 By喵呜喵5
===============================================================================

  【说明】

  在标题画面增加新的选项

  玩家选择了这个选项后可以从另外一张地图开始新游戏
  在这张新地图上可以用事件指令之类的东西做出类似CG欣赏之类的功能

=end
$m5script ||= {};$m5script[:M5NTC20140811] = 20150319
module M5NTC20140811
  COMMAND = [
#==============================================================================
#  设定部分
#==============================================================================
  {
    :text  => "通关特典",
    :map   => 2,
    :opt   => true,
    :pos   => 5,
    :ext   => 2,
    :show  => false,
  },

  # 在这上方追加新的选项,一条设置对应一个显示在标题画面的选项
  # 设置格式为 :
  #   {
  #     要设置的属性 => 设置的内容,
  #   },
  #
  #(不要忘记前后的中括号以及中间和结尾的英文冒号、英文逗号)
  #
  # 可以设置的属性如下(未设置的属性将使用 F9 数据库中默认的设置):
  #
  # :text  设置选项在菜单中的名称(前后加上英文引号)
  # :pos   设置这个选项出现在选项窗口中的位置
  #
  # :map   设置选择这个选项后移动到的地图ID
  # :x     设置选择这个选项后移到到对应地图的X坐标
  # :y     设置选择这个选项后移到到对应地图的Y坐标
  # :opt   设置选择这个选项后移到到对应地图时是否透明,true 为透明,false 为不透明
  #
  # :ext   设置选项是否显示的标志,请参考下方的详细说明
  # :show  填写 true 时,显示无法选择的选项,搭配上方的 ext 共同使用
  #
  # ===========================================================================
  #
  # 【关于选项是否显示标志的详细说明】
  #
  # 这个功能需要搭配我的全局变量脚本共同使用,可以实现类似通关后出现新选项的效果
  #
  # 下面以通关后出现 “观看CG” 选项为例:
  # 首先插入我的全局变量脚本,脚本的位置应该放在本脚本之上
  # 在设定部分新增一个跳转到执行“观看CG”地图的选项
  # 设置观看CG选项里 ext 的值,例如:
  #   ext : 233,
  #
  # 当游戏通关的时候在事件的脚本中执行下面的代码
  #   m5_20140811_ntc(233)
  # 之后,再次打开游戏时标题画面中就会出现“观看CG”的选项了
  #
  # 如果希望删除已经出现的“观看CG”这个选项的话,在事件的脚本中执行下面的代码
  #   m5_20140811_ntc(233,false)
  # 观看CG的选项便再次被消除了
  #
  # 如果观看CG这个选项还增加了下面的设置
  #   show : true,
  # 在游戏通关前标题画面也会显示这个选项,但是玩家无法选择

#==============================================================================
#  设定结束
#==============================================================================
  ]
end
class Window_TitleCommand
  alias m5_20140206_make_command_list make_command_list
  def make_command_list
    m5_20140206_make_command_list
    base = $m5script[:M5GV20140811]
    ext = (base && base >= 20140811) ? M5GV20140811.get_ext : {}
    ext = ext[:M5NTC20140811] || {}
    M5NTC20140811::COMMAND.each do |c|
      if c[:ext]
        enable = ext[ c[:ext] ]
        ( next unless c[:show] ) if !enable
      else
        enable = true
      end
      @list.insert( c[:pos] || -1 ,
      {
        :name => c[:text], :symbol => :m520140811ntc,
        :ext => c, :enabled => enable
      })
    end
    @list.compact!
  end
end
class Scene_Title
  alias m5_20140206_create_command_window create_command_window
  def create_command_window
    temp_data = load_data("Data/System.rvdata2")
    $data_system.start_map_id = temp_data.start_map_id
    $data_system.start_x = temp_data.start_x
    $data_system.start_y = temp_data.start_y
    $data_system.opt_transparent = temp_data.opt_transparent
    m5_20140206_create_command_window
    proc = Proc.new do
      command = @command_window.current_ext
      $data_system.start_map_id = command[:map] if command[:map]
      $data_system.start_x = command[:x] if command[:x]
      $data_system.start_y = command[:y] if command[:y]
      $data_system.opt_transparent = command[:opt] if command[:opt]
      command_new_game
    end
    @command_window.set_handler(:m520140811ntc, proc)
  end
end
class Game_Interpreter
  def m5_20140811_ntc(flag, value = true)
    base = $m5script[:M5GV20140811]
    raise "本功能需要新版喵呜喵5全局变量脚本的支持" if !base || base < 20150319
    ext = M5GV20140811.get_ext
    ext[:M5NTC20140811] ||= {}
    ext[:M5NTC20140811][flag] = value
    M5GV20140811.save_ext
  end
end[/pre]

最佳答案

查看完整内容

大概是这么个思路,把下面这段脚本插入到パラ犬脚本的后面的位置 本地没有测试过,有报错的话回复一下我根据报错修正

评分

参与人数 1赞 +1 收起 理由
无色物质℉ + 1 感谢!遇到了同样的问题_(:зゝ∠)_.

查看全部评分

梦石
1
星屑
23236
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2022-2-13 00:32:09 | 显示全部楼层
大概是这么个思路,把下面这段脚本插入到パラ犬脚本的后面的位置
本地没有测试过,有报错的话回复一下我根据报错修正

  1. class Window_TitleCommand
  2.   alias m5_20220213_create_command_sprite create_command_sprite
  3.   def create_command_sprite
  4.     # 执行原本的流程
  5.     m5_20220213_create_command_sprite
  6.     # 获取彩蛋选项的精灵图片
  7.     sprite4 = @command_sprites[3]
  8.     # 获取全局变量脚本的储存信息
  9.     ext = M5GV20140811.get_ext
  10.     ext = ext[:M5NTC20140811] || {}
  11.     # 获取彩蛋选项是否应该出现,彩蛋的 ext 参数配置的是 2
  12.     show = ext[2]
  13.     # 如果不出现,则把选项设置为隐藏
  14.     sprite4.visible = false unless show   
  15.   end
  16. end
复制代码

评分

参与人数 3星屑 +60 赞 +3 收起 理由
alexncf125 + 60 + 1 认可答案
无色物质℉ + 1 精品文章
yz3440080 + 1 成功了!!!谢谢您!!TUT

查看全部评分

回复

使用道具 举报

梦石
0
星屑
1487
在线时间
429 小时
注册时间
2014-4-25
回帖
32
 楼主| 发表于 2022-2-13 00:34:14 | 显示全部楼层
最下面那个被截掉一半是彩蛋选项TAT还没来得及改图
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部