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

Project1

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

[已经解决] 战斗BGM变更问题

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2914
在线时间
387 小时
注册时间
2010-12-4
帖子
141
跳转到指定楼层
1
发表于 2021-5-28 23:57:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 letppigogo 于 2021-5-29 00:17 编辑

在敌人队伍事件中添加变更BGM事件,条件0回合,距离为战斗。在事件测试中,遇到该敌人队伍时仍然会播放1秒左右的系统原战斗BGM后才变更BGM,请问是否有方法可以解决这个问题?

Lv3.寻梦者

梦石
0
星屑
3816
在线时间
1965 小时
注册时间
2013-1-3
帖子
9531
2
发表于 2021-5-29 21:38:37 | 只看该作者
本帖最后由 紫英晓狼1130 于 2021-5-29 21:47 编辑

您说的问题应该是随机战斗更改BGM
我在Scene_Map的172行增加了敌队伍ID的判断

  1.     if $game_temp.battle_troop_id == 3
  2.       $game_system.battle_bgm.name = "002-Battle02"
  3.       $game_system.bgm_play($game_system.battle_bgm)
  4.     else
  5.       # 请修改为数据库默认战斗 BGM
  6.       $game_system.battle_bgm.name = "001-Battle01"
  7.       $game_system.bgm_play($game_system.battle_bgm)
  8.     end
复制代码
使用方法在范例中有详细说明

Project1.zip

201.15 KB, 下载次数: 28

评分

参与人数 1+1 收起 理由
taeckle + 1 精品文章

查看全部评分

《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2914
在线时间
387 小时
注册时间
2010-12-4
帖子
141
3
 楼主| 发表于 2021-6-1 23:29:11 | 只看该作者
紫英晓狼1130 发表于 2021-5-29 21:38
您说的问题应该是随机战斗更改BGM
我在Scene_Map的172行增加了敌队伍ID的判断

谢谢,做了一个测试,你的脚本只适合普通战斗BGM不变的情况下使用,如果游戏中期后期普通战斗BGM进行变更的话,就会出现BUG。
其实前两天我用笨办法处理了一些,就是在所有普通战斗BGM开头加1.2秒的静音。然后将所有特殊战斗队伍里加个BGM变更。这样也算是解决了我的问题。

点评

您说的那不叫bug 脚本不是一成不变的 需要更多分歧的话只需要加入if语句即可 修改方法太多了  发表于 2021-6-2 12:49
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37759
在线时间
5388 小时
注册时间
2006-11-10
帖子
6545
4
发表于 2021-6-2 11:39:59 | 只看该作者
本帖最后由 灯笼菜刀王 于 2021-6-2 11:45 编辑
  1. class Scene_Map
  2.   def call_battle
  3.     # 清除战斗调用标志
  4.     $game_temp.battle_calling = false
  5.     # 清除菜单调用标志
  6.     $game_temp.menu_calling = false
  7.     $game_temp.menu_beep = false
  8.     # 生成遇敌计数
  9.     $game_player.make_encounter_count
  10.     # 记忆地图 BGM 、停止 BGM
  11.     $game_temp.map_bgm = $game_system.playing_bgm
  12.     $game_system.bgm_stop
  13.     # 演奏战斗开始 SE
  14.     $game_system.se_play($data_system.battle_start_se)
  15.     # 演奏战斗 BGM
  16.     if (n = $data_troops[$game_temp.battle_troop_id].name.split(/@/)[1]) != nil
  17.       f = n.split(/,/)
  18.       bgm = RPG::AudioFile.new(f[0],(f[1]||100).to_i,(f[2]||100).to_i)
  19.     else
  20.       bgm = $game_system.battle_bgm
  21.     end
  22.     $game_system.bgm_play(bgm)
  23.     # 矫正主角姿势
  24.     $game_player.straighten
  25.     # 切换到战斗画面
  26.     $scene = Scene_Battle.new
  27.   end
  28. end
复制代码


把它塞到main前,  用法, 要改BGM的敌群名字后面加上 @文件名字,音量,节拍  符号都要用半角符号, 音量和节拍添数字,可以省略不写, 注意音乐文件名字写错找不到文件会弹错误.

栗子:  幽灵 * 2 @康定情歌                     #播放指定BGM, 音量100, 节拍100
         幽灵 * 3 @国际歌,100,150             #播放指定BGM, 音量100, 节拍150
         幽灵 * 4 @咱们工人有力量,50        #播放指定BGM, 音量50, 节拍100
         幽灵 * 5                                       #播放默认BGM

评分

参与人数 2星屑 +80 +2 收起 理由
RyanBern + 80 + 1 认可答案
taeckle + 1 我很赞同

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2914
在线时间
387 小时
注册时间
2010-12-4
帖子
141
5
 楼主| 发表于 2021-6-3 21:14:12 | 只看该作者
灯笼菜刀王 发表于 2021-6-2 11:39
把它塞到main前,  用法, 要改BGM的敌群名字后面加上 @文件名字,音量,节拍  符号都要用半角符号, 音量和节 ...

这个解决方案很不错,谢谢!
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6483
在线时间
119 小时
注册时间
2020-1-8
帖子
234
6
发表于 2021-6-3 23:20:57 | 只看该作者
基本是4楼的思路,优点就是不用手动输入了,读取事件指令

编辑器 队伍 战斗事件页1  首个指令 【更改战斗BGM】即可;执不执行都可以
  1. class Scene_Map
  2.   def call_battle
  3.     # 清除战斗调用标志
  4.     $game_temp.battle_calling = false
  5.     # 清除菜单调用标志
  6.     $game_temp.menu_calling = false
  7.     $game_temp.menu_beep = false
  8.     # 生成遇敌计数
  9.     $game_player.make_encounter_count
  10.     # 记忆地图 BGM 、停止 BGM
  11.     $game_temp.map_bgm = $game_system.playing_bgm
  12.     $game_system.bgm_stop
  13.     # 演奏战斗开始 SE
  14.     $game_system.se_play($data_system.battle_start_se)
  15.     # 演奏战斗 BGM
  16.    
  17.     first_page = $data_troops[$game_temp.battle_troop_id].pages[0]
  18.     first_command = first_page.list[0]
  19.     if first_command != nil
  20.       if first_command.code == 132
  21.         $game_system.battle_bgm = first_command.parameters[0]
  22.       end
  23.     end
  24.     $game_system.bgm_play($game_system.battle_bgm)
  25.    
  26.     # 矫正主角姿势
  27.     $game_player.straighten
  28.     # 切换到战斗画面
  29.     $scene = Scene_Battle.new
  30.   end
  31. end
复制代码

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 精品文章

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2914
在线时间
387 小时
注册时间
2010-12-4
帖子
141
7
 楼主| 发表于 2021-6-4 10:51:57 | 只看该作者
本帖最后由 letppigogo 于 2021-6-4 21:02 编辑
RPGzh500223 发表于 2021-6-3 23:20
基本是4楼的思路,优点就是不用手动输入了,读取事件指令

编辑器 队伍 战斗事件页1  首个指令 【更改战斗B ...


这个思路也很不错,晚上回家研究一下。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2914
在线时间
387 小时
注册时间
2010-12-4
帖子
141
8
 楼主| 发表于 2021-6-4 21:11:40 | 只看该作者
本帖最后由 letppigogo 于 2021-6-4 21:14 编辑
RPGzh500223 发表于 2021-6-3 23:20
基本是4楼的思路,优点就是不用手动输入了,读取事件指令

编辑器 队伍 战斗事件页1  首个指令 【更改战斗B ...


你好,经过测试,发现战斗BGM延迟的问题是解决了,遇到特殊战斗BGM的队伍后,普通战斗的BGM就变不回来了。

相较之前菜刀王大大的方案,更加符合我随机遇到特殊战斗变更战斗BGM,战斗结束后,原战斗BGM不变的设想。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6483
在线时间
119 小时
注册时间
2020-1-8
帖子
234
9
发表于 2021-6-5 18:43:33 | 只看该作者
稍微改改不就符合你的要求了……
事件指令由【更改战斗BGM】换成 【演奏BGM】
  1. def call_battle
  2.     # 清除战斗调用标志
  3.     $game_temp.battle_calling = false
  4.     # 清除菜单调用标志
  5.     $game_temp.menu_calling = false
  6.     $game_temp.menu_beep = false
  7.     # 生成遇敌计数
  8.     $game_player.make_encounter_count
  9.     # 记忆地图 BGM 、停止 BGM
  10.     $game_temp.map_bgm = $game_system.playing_bgm
  11.     $game_system.bgm_stop
  12.     # 演奏战斗开始 SE
  13.     $game_system.se_play($data_system.battle_start_se)
  14.    
  15.     # 演奏战斗 BGM
  16.     first_page = $data_troops[$game_temp.battle_troop_id].pages[0]
  17.     if (first_command = first_page.list[0]) != nil
  18.       bgm = first_command.parameters[0] if first_command.code == 241
  19.     end
  20.     $game_system.bgm_play(bgm || $game_system.battle_bgm)
  21.    
  22.     # 矫正主角姿势
  23.     $game_player.straighten
  24.     # 切换到战斗画面
  25.     $scene = Scene_Battle.new
  26.   end
复制代码
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2914
在线时间
387 小时
注册时间
2010-12-4
帖子
141
10
 楼主| 发表于 2021-6-5 20:43:13 | 只看该作者
RPGzh500223 发表于 2021-6-5 18:43
稍微改改不就符合你的要求了……
事件指令由【更改战斗BGM】换成 【演奏BGM】
...


经过测试,修改后的这个脚本又回到了最初的问题,随机遇到遇到有特殊BGM的队伍会有更换BGM的延迟。

点评

除非没明白楼主的意思,一般我都是测试通过了才会回复的。我只能说又测试几遍没有出现BGM更换的问题。  发表于 2021-6-7 09:48
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-20 09:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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