- 累计送礼:
- 0 个
- 累计收礼:
- 0 个
TA的每日心情 | 开心 昨天 18:01 |
---|
签到天数: 114 天 连续签到: 4 天 [LV.6]常住居民II

管理员
  
- VIP
- 6
- 卡币
- 10632
- OK点
- 16
- 推广点
- 0
- 同能卷
- 0
- 积分
- 13401


|
这个脚本会变动音乐和音效音量,加上窗口还是全屏的选项。
依然是很久以前做的嗯……不知道是不是火星。
整体的思想+基础来自于月光奏鸣曲。
脚本直接加在main之前就行,默认添加选项的是标题画面,当然会脚本的就可以加在菜单里了。
效果:
RUBY 代码 - #========================================
- #标题添加设定脚本v.1.0
- #脚本的想法来自于月光奏鸣曲
- #作者为Elamed,使用时请保留以上信息。
- #========================================
- class Game_System
- attr_accessor :bgm_volume
- attr_accessor :se_volume
- attr_accessor :moniter_mode
- def initialize
- @bgm_volume = 80
- @se_volume = 80
- @moniter_mode = 0
- end
- def bgm_play(bgm)
- @playing_bgm = bgm
- if bgm != niland bgm.name != ""
- Audio.bgm_play("Audio/BGM/" + bgm.name, @bgm_volume, bgm.pitch)
- else
- Audio.bgm_stop
- end
- Graphics.frame_reset
- end
- def bgs_play(bgs)
- @playing_bgs = bgs
- if bgs != niland bgs.name != ""
- Audio.bgs_play("Audio/BGS/" + bgs.name, @bgm.volume, bgs.pitch)
- else
- Audio.bgs_stop
- end
- Graphics.frame_reset
- end
- def me_play(me)
- if me != niland me.name != ""
- Audio.me_play("Audio/ME/" + me.name, @se.volume, me.pitch)
- else
- Audio.me_stop
- end
- Graphics.frame_reset
- end
- def se_play(se)
- if se != niland se.name != ""
- Audio.se_play("Audio/SE/" + se.name, @se_volume, se.pitch)
- end
- end
- end
- class Scene_Title
- def main
- if$BTEST
- battle_test
- return
- 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
- ifFileTest.exist?("SettingData.rxdata")
- file = File.open("SettingData.rxdata", "r")
- $data_system_set = load_data("SettingData.rxdata")
- $game_system = Marshal.load(file)
- file.close
- else
- file = File.open("SettingData.rxdata", "w")
- Marshal.dump($game_system, file)
- file.close
- end
- if$game_system.moniter_mode == 1
- unless$keybd
- $keybd = Win32API.new'user32.dll', 'keybd_event', ['i', 'i', 'l', 'l'], 'v'
- $keybd.call 0xA4, 0, 0, 0
- $keybd.call13, 0, 0, 0
- $keybd.call13, 0, 2, 0
- $keybd.call 0xA4, 0, 2, 0
- end
- end
- [url=home.php?mod=space&uid=114926]@sprite[/url] = Sprite.new
- @sprite.bitmap = RPG::Cache.title($data_system.title_name)
- # 生成命令窗口
- s1 = "新游戏"
- s2 = "读取"
- s3 = "设定"
- s4 = "退出"
- @command_window = Window_Command.new(200, [s1, s2, s3, s4])
- @command_window.x = 400
- @command_window.y = 205
- # 判定继续的有效性
- # 存档文件一个也不存在的时候也调查
- # 有効为 @continue_enabled 为 true、無効为 false
- @continue_enabled = false
- for i in0..3
- ifFileTest.exist?("Save#{i+1}.rxdata")
- @continue_enabled = true
- end
- end
- if@continue_enabled
- @command_window.index = 1
- end
- # 演奏标题 BGM
- $game_system.bgm_play($data_system.title_bgm)
- # 停止演奏 ME、BGS
- Audio.me_stop
- Audio.bgs_stop
- # 执行过渡
- Graphics.transition
- # 主循环
- loopdo
- # 刷新游戏画面
- Graphics.update
- # 刷新输入信息
- Input.update
- # 刷新画面
- update
- # 如果画面被切换就中断循环
- if$scene != self
- break
- end
- end
- # 装备过渡
- Graphics.freeze
- # 释放命令窗口
- @command_window.dispose
- # 释放标题图形
- @sprite.bitmap.dispose
- @sprite.dispose
- end
- #--------------------------------------------------------------------------
- # ● 刷新画面
- #--------------------------------------------------------------------------
- def update
- # 刷新命令窗口
- @command_window.update
- # 按下 C 键的情况下
- if Input.trigger?(Input::C)
- # 命令窗口的光标位置的分支
- case@command_window.index
- when0 # 新游戏
- command_new_game
- when1 # 继续
- command_continue
- when2
- command_option
- when3 # 退出
- command_shutdown
- end
- end
- end
- def command_option
- $game_system.se_play($data_system.decision_se)
- $scene = Scene_Option.new
- end
- end
- class Window_System < Window_Selectable
- def initialize
- super(160, 100, 300, 32 * 4)
- @settings = $game_system
- @item_max = 3
- self.contents = Bitmap.new(width - 32, @item_max * 32)
- refresh
- self.index = 0
- end
- def refresh(bgm_volume = @settings.bgm_volume, se_volume = @settings.se_volume, moniter_mode = @settings.moniter_mode)
- self.contents.clear
- self.contents.font.size = 16
- @settings.bgm_volume = bgm_volume
- @settings.se_volume = se_volume
- @settings.moniter_mode = moniter_mode
- rect = Rect.new(4, 32 * 0, self.contents.width - 8, 32)
- self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
- text = "BGM: "
- blocknum = @settings.bgm_volume / 10
- for i in2..blocknum
- case i
- when2
- text = text + " "
- when3
- text = text + "▁"# 30
- when4
- text = text + "▂"# 40
- when5
- text = text + "▃"# 50
- when6
- text = text + "▄"# 60
- when7
- text = text + "▅"# 70
- when8
- text = text + "▆"# 80
- when9
- text = text + "▇"# 90
- when10
- text = text + "█"# 100
- end
- end
- self.contents.draw_text(rect, text)
- rect = Rect.new(4, 32 * 1, self.contents.width - 8, 32)
- self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
- blocknum = @settings.se_volume / 10
- text = "SE: "
- for i in2..blocknum
- case i
- when2
- text = text + " "
- when3
- text = text + "▁"# 30
- when4
- text = text + "▂"# 40
- when5
- text = text + "▃"# 50
- when6
- text = text + "▄"# 60
- when7
- text = text + "▅"# 70
- when8
- text = text + "▆"# 80
- when9
- text = text + "▇"# 90
- when10
- text = text + "█"# 100
- end
- end
- self.contents.draw_text(rect, text)
- rect = Rect.new(4, 32 * 2, self.contents.width - 8, 32)
- self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
- text = "模式(需要重新启动游戏):"
- case@settings.moniter_mode
- when0
- text = text + " 窗口"
- when1
- text = text + " 全屏"
- end
- self.contents.draw_text(rect, text)
- end
- end
- class Scene_Option
- def initialize
- @bgm_volume = $game_system.bgm_volume
- @se_volume = $game_system.se_volume
- @moniter_mode = $game_system.moniter_mode
- end
- def main
- @sprite = Sprite.new
- @sprite.bitmap = RPG::Cache.title($data_system.title_name)
- @sprite.opacity = 180
- @system_window = Window_System.new
- @system_window.opacity = 180
- # 执行过渡
- Graphics.transition
- # 主循环
- loopdo
- # 刷新游戏画面
- Graphics.update
- # 刷新输入信息
- Input.update
- # 刷新画面
- update
- # 如果画面切换的话就中断循环
- if$scene != self
- break
- end
- end
- # 准备过渡
- Graphics.freeze
- # 释放窗口
- @system_window.dispose
- @sprite.dispose
- end
- def update
- @system_window.update
- @sprite.update
- # 按下 B 键的情况下
- if Input.trigger?(Input::B)
- $game_system.se_play($data_system.decision_se)
- $game_system.bgm_volume = @bgm_volume
- $game_system.se_volume = @se_volume
- $game_system.moniter_mode = @moniter_mode
- file = File.open("SettingData.rxdata", "w")
- Marshal.dump($game_system, file)
- file.close
- # 切换到菜单画面
- $scene = Scene_Title.new
- return
- end
- if Input.trigger?(Input::RIGHT)
- if@system_window.index == 0
- if@bgm_volume < 100
- $game_system.se_play($data_system.cursor_se)
- @bgm_volume = @bgm_volume + 10
- $game_system.bgm_play($data_system.title_bgm)
- @system_window.refresh(@bgm_volume, @se_volume, @moniter_mode)
- else
- $game_system.se_play($data_system.cancel_se)
- @system_window.refresh(@bgm_volume, @se_volume, @moniter_mode)
- end
- elsif@system_window.index == 1
- if@se_volume < 100
- $game_system.se_play($data_system.cursor_se)
- @se_volume = @se_volume + 10
- @system_window.refresh(@bgm_volume, @se_volume, @moniter_mode)
- else
- $game_system.se_play($data_system.cancel_se)
- @system_window.refresh(@bgm_volume, @se_volume, @moniter_mode)
- end
- elsif@system_window.index == 2
- if@moniter_mode == 0
- $game_system.se_play($data_system.decision_se)
- @moniter_mode = 1
- @system_window.refresh(@bgm_volume, @se_volume, @moniter_mode)
- else
- $game_system.se_play($data_system.decision_se)
- @moniter_mode = 0
- @system_window.refresh(@bgm_volume, @se_volume, @moniter_mode)
- end
- end
- return
- end
- if Input.trigger?(Input::LEFT)
- if@system_window.index == 0
- if@bgm_volume > 20
- $game_system.se_play($data_system.cursor_se)
- @bgm_volume = @bgm_volume - 10
- $game_system.bgm_play($data_system.title_bgm)
- @system_window.refresh(@bgm_volume, @se_volume, @moniter_mode)
- else
- $game_system.se_play($data_system.cancel_se)
- @system_window.refresh(@bgm_volume, @se_volume, @moniter_mode)
- end
- elsif@system_window.index == 1
- if@se_volume > 20
- $game_system.se_play($data_system.cursor_se)
- @se_volume = @se_volume - 10
- @system_window.refresh(@bgm_volume, @se_volume, @moniter_mode)
- else
- $game_system.se_play($data_system.cancel_se)
- @system_window.refresh(@bgm_volume, @se_volume, @moniter_mode)
- end
- elsif@system_window.index == 2
- if@moniter_mode == 0
- $game_system.se_play($data_system.decision_se)
- @moniter_mode = 1
- @system_window.refresh(@bgm_volume, @se_volume, @moniter_mode)
- else
- $game_system.se_play($data_system.decision_se)
- @moniter_mode = 0
- @system_window.refresh(@bgm_volume, @se_volume, @moniter_mode)
- end
- end
- return
- end
- @system_window.refresh(@bgm_volume, @se_volume, @moniter_mode)
- end
- end
复制代码
这个设定脚本很基础,所以基本上还是新手用的可能性比较高……
所以……嗯,后天开始整合新手向简洁菜单以及继续调整游。
本帖来自P1论坛作者艾拉梅德,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址: https://rpg.blue/forum.php?mod=viewthread&tid=336751 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|