Project1

标题: 足音系统 求扩展与小修正 [打印本页]

作者: 89444640    时间: 2017-7-31 09:22
标题: 足音系统 求扩展与小修正
本帖最后由 89444640 于 2019-8-23 10:12 编辑

该系统如下
https://rpg.blue/forum.php?mod=v ... amp;_dsign=f1606fb7
咨询原作者一周未有回话。因此发帖求各位帮忙。

此脚本效后果可以接受,但是有个潜在隐患
1.
只能定义地图标记1~7的音效,在外网购买了音效库使用权以后,我可以找到有使用权的对应音效,因此,此脚本对我来说具有实际意义。
但是只有7种地形的情况下,小品级游戏尚可,对于中大型游戏,只有7个地形效果肯定不够用
因此造成的后果是有的地方有音效有的地方没有,比全都没音效还难受。

因此求修改此脚本为,能定义至少30种音效为方便使用,标记方式同为地形标记
0~7后面编号扩展可以为为A~Z或者双位数实现。
尽量以直观易操作的方式来实现,尽量不要以xx地图XX编号图块XX音效这样的方式来实现。不直观 不易操作,有错误不易修改,修改地图后全部编号都得调。超级不实用。

2.
该脚本只适合行走速度为3时候的情况,行走音效与实际移动位移声音较为对应
若行走速度加快,该脚本的效果是减少播放间隔,但是这样会显得闹得慌,因此可否修改为加快移动速度后为4或5时,播放的脚步声音与实际迈步对应?


以商业游戏大多数都有地形音效的,加一个肯定会提升品质,但是没有程序员大师的帮忙,此效果无法实现。

恳请各位在百忙之中抽出一点点时间帮忙修改。

若修改复杂,可以为您的劳动付出,按照您的认为的劳动价值现金支付报酬。

提供四组环境音效以供测试
Footsound.rar (300.97 KB, 下载次数: 138)
编号1 劣质轻足音 基本听不见 也不是我在外国网站支付报酬购买的,不建议使用
编号2 高跟鞋石地板大厅
编号3 沙地
编号4 沼泽水路
以上仅供脚本测试使用,擅自挪用,后果自负。


作者: RyanBern    时间: 2017-7-31 11:05
本帖最后由 RyanBern 于 2017-7-31 21:46 编辑

主楼所说的原作者应该是 VIPArcher。因为我在第二天就回复了。

0~7后面编号扩展可以为为A~Z或者双位数实现。

单从脚本方面上无法做到,因为这属于修改编辑器本身。编辑器数据库中直观的设置只支持 0-7 的地形标志。如果要设置更多,则不能直接在编辑器里调,或者需要找一位专门修改编辑器的人,例如 @fux2 。一个可能的办法是利用脚本临时修改,这需要知道每个图快图块 ID,但这个方式违反了楼主的要求,不能采用。

我可以帮忙修改。目前和其他人讨论能想到的解决方案有下面几个:
1. 找黄鸡(fux2)干翻编辑器。黄鸡已经在搞了,但是他反映说进展不是很顺利,改起来比较麻烦。
2. 在设置音效数据时可同时限定地图,也就是数据变成 XX地图的YY地形 的音效。这种做法最多在每组图块上设置 7 种音效,操作性还比较简便。如果一张图不是超过了 7 种音效的话,是可行的。这种方式的实现没有任何难度。
3. 可制作一个小工程专门用于实时设置图块的地形 ID。大致的效果就是运行一下这个工程。然后在这个工程中设定所有图块的 ID。理论上来说这相当于重新制作了一个RM版的编辑器。制作量会多好多(如果考虑鼠标操作则会多更多)。
4. 可以在数据库中将一组图快复制多个,这样同一组图块可支持最多 64 个地形标志,可以配合第二条方案使用。缺点是容易造成数据库不直观,整理起来略麻烦。实现难度低。
5. 可以利用特殊地图来记录每个图快对应的音效,不再使用啊地形标志。缺点是每组图块都要额外准备一张特殊地图用于记录数据。实现难度低。

第二个效果应该比较好实现,还请楼主仔细说明一下“脚步声音和迈步对应”的效果。程序员容易把握不准。
作者: guoxiaomi    时间: 2017-7-31 18:46
RyanBern 发表于 2017-7-31 11:05
主楼所说的原作者应该是 VIPArcher。因为我在第二天就回复了。

两张图块就有64种地形标志了
作者: fux2    时间: 2017-8-1 01:50
我这边魔改了RM,让编辑器可以编辑最多64种不同的地形标记。
但因为代码容量分配问题,会导致以下问题:
1.图块优先级的显示不再是 【·】【★1】【★2】【★3】【★4】【★5】,而变成了012345(腾出代码空间供需求功能)
2.地形标记会以2位数8进制显示,因为资源图片只有0-7八个数字,所以会有00-77这64种不同的地形标记。

如果有需要,我可以帮你在脚本内也改成八进制读取,以保证视觉同步。

如果楼主需要可以在本层点评。

作者: 89444640    时间: 2017-8-1 06:23
本帖最后由 89444640 于 2017-8-1 06:34 编辑

非常感谢楼上几位程序员大神的帮助,半夜了还帮我做脚本真是辛苦了,鞠躬……

然后那个脚本内八进制读取是啥意思 - -b 视觉同步
可以用这个来测试,一旦角色按空格加速,就会出现声音显得特别着急的情况,而且与实际迈步速度不符。
http://pan.baidu.com/s/1ctood4
vwzo

您可以用雨林地区地图看下在剑圣之巅那个沙滩行走的音效,
洋馆礼拜堂行走时候的音效更加明显

请测试一下进行调节,谢谢。
另外,若迈步速度不明显,可以用主角的跑动行走图进行测试,那样就很明显了。
作者: 89444640    时间: 2017-8-1 10:15
89444640 发表于 2017-8-1 06:23
非常感谢楼上几位程序员大神的帮助,半夜了还帮我做脚本真是辛苦了,鞠躬……

然后那个脚本内八进制读取是 ...

好的,就按照8进制吧,否则还得换算
刚才进行音效整理时候想到了一些问题
1
原来的音效名称命名StepN_X
N等于0~7,X等于0~3
如果改成双位数,编号为1的我是命名为Step01_0还是step1_0


2
操作是双位操作还是单独操作如果是单位操作,如果是单位操作,那么靠后的音效比如编号30……调个原件鼠标点30下…………有可能的话尽量双位数操作吧。
作者: RyanBern    时间: 2017-8-1 11:26
本帖最后由 RyanBern 于 2017-8-1 12:00 编辑

脚本部分已经改好。使用时需要配合黄鸡的修改版 RPGXP 1.03 进行使用。
修改版地址:https://rpg.blue/forum.php?mod=viewthread&tid=402059
设置地形标志的时候,编辑器只显示 8 进制。实际素材命名的时候和编辑器中保持一致。如果是个位数需要去掉首位的0。

例如编辑器中某图快的标志是 10,那么素材就是 Step10_[1-4].ogg
RUBY 代码复制
  1. #==============================================================================
  2. # +++ 足音(for XP) v1.0 +++
  3. #==============================================================================
  4. # 原版 By:VIPArcher
  5. # XP移植 :RyanBern
  6. #
  7. #  -- 本脚本来自 [url]https://rpg.blue[/url] 使用或转载请保留以上信息。
  8. #
  9. #==============================================================================
  10. #
  11. # 设定玩家在不同地形标志移动时不同的脚步声
  12. #
  13. # 脚步声的素材名称命名是有一定规则的。例如Step0_0
  14. # "Step"+地形标志ID+"_"+随机编号(0-3)
  15. # 脚步声素材每组4枚。例如地形标志为2的脚步声
  16. # 就命名为[Step2_0.ogg;Step2_1.ogg;Step2_2.ogg;Step2_3.ogg]
  17. # 也可以设置一些区域是没有脚步声的。
  18. # 效果的开关可以通过控制设置的开关进行控制
  19. #
  20. #==============================================================================
  21. #==============================================================================
  22. # ★ 设定部分 ★
  23. #==============================================================================
  24. module VIPArcher;end
  25. module VIPArcher::FOOTSOUND
  26.   #开启脚步声开关编号
  27.   FootSoundEnabled = 95
  28.  
  29.   #没有脚步声的地形标志
  30.   NoSoundTerrains = [0]
  31.  
  32.   #脚本声素材路径
  33.   SoundDir = "Audio/SE/Footsound"
  34.  
  35.   #音量
  36.   Volume =100
  37.  
  38.   #音调
  39.   Pitch = 100
  40. end
  41.  
  42. class Game_Player < Game_Character
  43.   include VIPArcher::FOOTSOUND
  44.  
  45.   alias rb_update_move_20170801 update_move
  46.   def update_move
  47.     rb_update_move_20170801
  48.     foot_sound_play
  49.   end
  50.  
  51.   def play_sound?
  52.     @anime_count > 18 - @move_speed * 2 && @pattern % 2 == 0
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # ● 播放脚步声
  56.   #--------------------------------------------------------------------------
  57.   def foot_sound_play
  58.     tag = $game_player.terrain_tag
  59.     return if !$game_switches[FootSoundEnabled]
  60.     return if NoSoundTerrains.include?(tag)
  61.     filename = "#{SoundDir}/Step#{tag}_#{rand(4)}"
  62.     #filename = sprintf("%s/Step%o_%d}", SoundDir, tag, rand(4))
  63.  
  64.     begin
  65.       Audio.se_play(filename, Volume, Pitch) if play_sound?
  66.     rescue Errno::ENOENT
  67.     end
  68.   end
  69. end

作者: fux2    时间: 2017-8-1 13:01
89444640 发表于 2017-8-1 10:15
好的,就按照8进制吧,否则还得换算
刚才进行音效整理时候想到了一些问题
1

现在已经可以逐个操作了(鼠标左右键)
作者: 89444640    时间: 2017-8-3 17:21
本帖最后由 89444640 于 2017-8-5 09:30 编辑

[quote]RyanBern 发表于 2017-8-1 11:26
脚本部分已经改好。使用时需要配合黄鸡的修改版 RPGXP 1.03 进行使用。
修改版地址,已修正,作废

您好请帮忙看下脚本故障。
情况是这样

新建工程

足音播放,地形标志编号1~7正常
7 11不正常 无法播放
12播放的是编号10的足音音效
13播放的是11的音效
14播放的是12的音效
………………
每间隔8个就会出现有两个编号没有音效的情况

怀疑是脚本进制问题。

但是在水区的那个接龙中进行测试则却全部正常
不知为何。

[attach]331971[/attach]
工程中包十进制下是23种不同的地形情况,8进制下,数字排到编号27。

作者: 89444640    时间: 2017-8-5 09:30
本帖最后由 89444640 于 2017-8-5 09:31 编辑
RyanBern 发表于 2017-8-1 11:26
脚本部分已经改好。使用时需要配合黄鸡的修改版 RPGXP 1.03 进行使用。
修改版地址:https://rpg.blue/f ...

在与主程序的整合过程中出现了异常情况,当加入重力脚本以后,即使重力系统开关没打开,足音系统也是失效 。
我把足音脚本在main最前方也没用ORZ。
工程如下。请帮忙看一下。
足音测试.rar (1.6 MB, 下载次数: 88)
实在是给您添麻烦了。鞠躬~
作者: RyanBern    时间: 2017-8-5 12:17
89444640 发表于 2017-8-5 09:30
在与主程序的整合过程中出现了异常情况,当加入重力脚本以后,即使重力系统开关没打开,足音系统也是失效  ...

看了一下脚本,这两个系统是否需要整合在一起以便同时使用?如果不需要我可以把开关加进去:在脚本系统打开时将自动屏蔽重力系统。如果需要整合我再想想办法。
作者: 89444640    时间: 2017-8-5 14:12
本帖最后由 89444640 于 2017-8-5 14:13 编辑

别整合在一起使用,重力系统剧情过后,我只能让游戏者自己删呢- -b
但是这脚本没开关方式只有生效代码,

$ud_ok = true/false

只要脚本扔进脚本库,就会一直影响主程序运行。直到手动删除ORZ
那个屏蔽重力系统是不是可以解决这个重力脚本带来的各种异常呢?
请写好我先测试一下吧

下面的是此重力脚本目前自己测试无数小时发现的致命bug

1.
在$ud_ok = false的情况下,重力脚本开启,如果这时候玩家死亡,读取任何一个没有设置$ud_ok = false的进度,直接穿透异常,角色会下落到禁止穿透的原件为止
2.
读取进度时候,如果我动了任何一个其他脚本,以后的所有显示都会出现异常——角色行走图在用事件控制时候,只能播放坐左边那排,然后无论怎么弄都会跳回到左上第一动作,因为这个我逼得单独改了一堆动作。
3.
就是脚本中
UP    = 48                  # 上方向の余裕(0 < UP < 63)
DOWN  = -5                  # 这个是垂直方向微调 下方向の余裕(0 < DOWN <63)
SIDE  = 32
角色在操作时候会有一定的偏移,ACT中是增加手感的,删了影响ACT操作,平台都跳不过去了。
不删的话,即使关了重力脚本,在rpg用地图上,也会出现微小的偏移,造成事件总是对不正。
因此只能用最原始的方法,剧情中ACT这段过去以后让玩家自己删,再也不用了。
本来我是想的挺好 ,有的迷宫用横版act动作+rpg,结果因为这些bug,有一些本来已经画好的ACT地图我都硬给改rpg的样式的地图了ORZ


作者: soulsaga    时间: 2017-8-5 21:35
本帖最后由 soulsaga 于 2017-8-5 21:43 编辑
89444640 发表于 2017-8-5 14:12
别整合在一起使用,重力系统剧情过后,我只能让游戏者自己删呢- -b
但是这脚本没开关方式只有生效代码,
为 ...


1难道是全局变量是问题?
试试把$ud_ok改成常量?
3你有用来判断是否RPG地图的方法么..
作者: 89444640    时间: 2017-8-6 06:18
soulsaga 发表于 2017-8-5 21:35
1难道是全局变量是问题?
试试把$ud_ok改成常量?
3你有用来判断是否RPG地图的方法么.. ...

怎么改改常量?没有判断师傅哦是rpg地图的方法。脚本中文说明只给了这一个重力生效或者失效的代码。
最近看烛光脚本才想到,是不是加个控制开关这问题就没了?
我看了一下感谢用户,这脚本至少修了四遍- -b
其实这指不定哪个其他脚本还调用变量了,因为我把烛光脚本扔前面时候,连光照都是歪的,还好放在靠近main前面没问题了。
但是影响足音的只有这个重力脚本。
等版主大人帮我修正吧,我继续编辑地图地形编号,官方的还好,昨天一天都标记完了。自己画的那些没优化图块的地图,得标记的我吐血。
作者: soulsaga    时间: 2017-8-6 09:58
本帖最后由 soulsaga 于 2017-8-6 13:43 编辑
89444640 发表于 2017-8-6 06:18
怎么改改常量?没有判断师傅哦是rpg地图的方法。脚本中文说明只给了这一个重力生效或者失效的代码。
最近 ...


或且用开关代替也行..不要用全局变量..

3试试这样
UP    = 48                  # 上方向の余裕(0 < UP < 63)
  DOWN  = -5                  # 这个是垂直方向微调 下方向の余裕(0 < DOWN <63)
  SIDE  = 32                  # 左右方向の余裕(0 < SIDE <63)
  SLANT = false               # 移動ルートの斜め移動時、速度修正
  JUMPMAX = 100              
  JUMPADD = 10
   if $ud_ok == true
   UP    = 0                  # 上方向の余裕(0 < UP < 63)
   DOWN  = 0                  # 这个是垂直方向微调 下方向の余裕(0 < DOWN <63)
   SIDE  = 0                  # 左右方向の余裕(0 < SIDE <63)
   end
RUBY 代码复制
  1. # ● フレーム更新
  2.   #--------------------------------------------------------------------------
  3.   alias :update_original :update
  4.   def update
  5.     update_move if Input.press?(Input::RIGHT)
  6.  
  7.     @data_count -= 1 if @data_count and @data_count > 0
  8.     # @walk:歩行速度 @dash:ダッシュ時移動速度


重力脚本改成这样..向右移动时就可以正常播放足音..其他方向你自己加吧..还有加速键也要..你该懂吧?

作者: 89444640    时间: 2017-8-7 09:11
soulsaga 发表于 2017-8-6 09:58
或且用开关代替也行..不要用全局变量..

3试试这样


因为横版只需要左右,因此 只加了左右移动的情况。
def update
    update_move if Input.press?(Input::RIGHT)
    update_move if Input.press?(Input::LEFT)
    @data_count -= 1 if @data_count and @data_count > 0

足音有是有了,但是走路变成超快速的抖动。se也是超快速的播放
跑动那里加上更重--b

是不是需要整合素材做出测试版才容易调脚本?
作者: RyanBern    时间: 2017-8-13 12:36
本帖最后由 RyanBern 于 2017-8-13 12:40 编辑

脚本被人改的很乱。控制脚本生效应该用常量+开关绑定的方式,不应该用全局变量。

两个脚本刷新机制不同,没必要放在一起使用。启动的方式已经写在前面注释里,启动重力脚本将禁用脚步声脚本。

注意:有些地方因为没有素材所以我把换素材的地方注释掉了,请将这些注释还原回正常的代码。代码太长所以放在附件里了,7zip解压之后记事本打开即可。
Gravity.7z (6.69 KB, 下载次数: 146)

作者: RyanBern    时间: 2017-8-13 14:41
89444640 发表于 2017-8-7 09:11
因为横版只需要左右,因此 只加了左右移动的情况。
def update
    update_move if Input.press?(Input: ...

我更改脚本中的21行,AIRJUMP = 1 指的是连跳次数。如果需要改成别的直接修改数字即可。

如果不想要常量,请进行如下操作:
将 228 行的 AIRJUMP 替换为
RUBY 代码复制
  1. $game_variables[AIRJUMP]

此后 AIRJUMP 的含义变为控制连跳次数的变量的编号,即将连跳次数与变量绑定。例如此时设置 AIRJUMP = 93 的含义就是 93 号变量控制连跳次数。
作者: 89444640    时间: 2017-8-13 18:40
本帖最后由 89444640 于 2017-8-13 18:42 编辑

发现新的bug,原脚本是上下方向键失效的,现在重力启动后,上下方向键依然有效,按上会在原地小幅度抖动播放跳跃落地时的音效,但不能向上移动,跳跃中按下方向键或者在下落过程中按下方向键,角色会消失并且加速下落,加速下落这个我倒是挺喜欢,因为我有对应下踩图像配合,但是碍于脚本功能未使用,就是这个。

请问是否可以去掉向上移动的bug,且保留按下方向加速下落,因为效果非常像恶魔城两段跳后下踩。如果有能做出的话,可能还需要考虑一个角色当前朝向的问题,虽然说是下落,实际上因为是横版,会有左右朝向的区别。

而且如果可以的话,能否做出过高高落,高度大于32*10落下,落地时会有短暂硬直的效果,否则这个加速下落效果会显得很硬。(这个非必须因为很可能出别的问题,况且估计也很难模拟不出恶魔城高跳到顶端撞顶的硬直--b我就不就结了。)
若不可请修正上下依然有效问题。




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