查看: 1196|回复: 2

[有事请教] 请问怎么添加完成游戏后的【特典】

[复制链接]
梦石
0
星屑
302
在线时间
45 小时
注册时间
2017-5-16
回帖
11
发表于 2024-5-27 12:22:25 | 显示全部楼层 |阅读模式

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

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

×
想要的效果是:
1.正常结局后回到标题会出现特典地图的选项
2.玩家下一次打开游戏也一样出现特典地图的选项

需要添加什么脚本吗?我只搜到其他不是xp的脚本不确定是否适用。
梦石
0
星屑
6375
在线时间
1473 小时
注册时间
2015-7-25
回帖
609

极短25参与开拓者

发表于 2024-5-30 21:37:11 | 显示全部楼层
本帖最后由 魔法丶小肉包 于 2024-5-30 23:36 编辑

一定要放在main上面,其他所有脚本下面,防止出现bug
通关的时候事件里调用脚本$clearance = true,然后存档,该存档就会变成通关存档,是否通关跟着存档走,只要有通关存档就会出现特典选项,如果所有的通关存档删了选项就会消失
另外,只检测默认文件名的4个存档,如果已有相关脚本修改过最大存档数量或存档文件名则需要在相关地方进行修改
最后,这里只写了出现特典选项的判断,选择选项之后具体要做什么还是需要你自己去写的

[pre lang="ruby"]class Scene_Save
  alias mf240530wsd write_save_data
  def write_save_data(file)
    mf240530wsd(file)
    Marshal.dump($clearance, file)
  end
end
class Scene_Load
  alias mf240530rsd read_save_data
  def read_save_data(file)
    mf240530rsd(file)
    $clearance = Marshal.load(file)
  end
end
class Scene_Title
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  def main
    # 战斗测试的情况下
    if $BTEST
      battle_test
      return
    end
    $clearance = false
    4.times do |i|
      filename = "Save#{i + 1}.rxdata"
      next unless FileTest.exist?(filename)
      break if $clearance
      file = File.open(filename,"rb")
      $clearance = Marshal.load(file) while !file.eof?
      file.close
    end
    # 载入数据库
    $data_actors        = load_data("Data/Actors.rxdata")
    $data_classes       = load_data("Data/Classes.rxdata")
    $data_skills        = load_data("Data/Skills.rxdata")
    $data_items         = load_data("Data/Items.rxdata")
    $data_weapons       = load_data("Data/Weapons.rxdata")
    $data_armors        = load_data("Data/Armors.rxdata")
    $data_enemies       = load_data("Data/Enemies.rxdata")
    $data_troops        = load_data("Data/Troops.rxdata")
    $data_states        = load_data("Data/States.rxdata")
    $data_animations    = load_data("Data/Animations.rxdata")
    $data_tilesets      = load_data("Data/Tilesets.rxdata")
    $data_common_events = load_data("Data/CommonEvents.rxdata")
    $data_system        = load_data("Data/System.rxdata")
    # 生成系统对像
    $game_system = Game_System.new
    # 生成标题图形
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.title($data_system.title_name)
    # 生成命令窗口
    s1 = "新游戏"
    s2 = "继续"
    s3 = "退出"
    s4 = "特典"
    @command_window = Window_Command.new(192, $clearance ? [s1, s2, s3, s4] : [s1, s2, s3])
    @command_window.back_opacity = 160
    @command_window.x = 320 - @command_window.width / 2
    @command_window.y = 288
    # 判定继续的有效性
    # 存档文件一个也不存在的时候也调查
    # 有効为 @continue_enabled 为 true、无效为 false
    @continue_enabled = false
    for i in 0..3
      if FileTest.exist?("Save#{i+1}.rxdata")
        @continue_enabled = true
      end
    end
    # 继续为有效的情况下、光标停止在继续上
    # 无效的情况下、继续的文字显示为灰色
    if @continue_enabled
      @command_window.index = 1
    else
      @command_window.disable_item(1)
    end
    # 演奏标题 BGM
    $game_system.bgm_play($data_system.title_bgm)
    # 停止演奏 ME、BGS
    Audio.me_stop
    Audio.bgs_stop
    # 执行过渡
    Graphics.transition
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      update
      # 如果画面被切换就中断循环
      if $scene != self
        $clearance = false
        break
      end
    end
    # 装备过渡
    Graphics.freeze
    # 释放命令窗口
    @command_window.dispose
    # 释放标题图形
    @sprite.bitmap.dispose
    @sprite.dispose
  end
end[/pre]
笨肉包的游戏讨论群932812135 (实时更新) 喜欢的话欢迎加入~
目前的坑
??? #像素风OC游戏 准备中 短篇-约5小时
花城梦之心 #像素风OC游戏 系统开发+素材绘制中
【不可思议的迷宫】幽灵契约外传:歌莉娅 v0.4 游戏文件已更新
同时更新中~ (沉迷摸鱼中~更新速度较慢请见谅w)
这是属于笨肉包一个人的旅行~(这只肉包又在摸鱼!
旅途的最终目标~ ???(保密~
回复

使用道具 举报

梦石
0
星屑
302
在线时间
45 小时
注册时间
2017-5-16
回帖
11
 楼主| 发表于 2024-6-1 13:44:39 | 显示全部楼层
魔法丶小肉包 发表于 2024-5-30 21:37
一定要放在main上面,其他所有脚本下面,防止出现bug
通关的时候事件里调用脚本$clearance = true,然后存 ...

太感谢了!我研究一下!
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部