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

Project1

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

[原创发布] 【更新】伪动态/视频 脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

跳转到指定楼层
1
发表于 2013-8-23 13:48:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 kuerlulu 于 2013-8-24 19:05 编辑
做完这个脚本突然发现以前有个前辈也发布过类似脚本,就是动态标题菜单那个,和我的原理一样。
↑防触雷先声明。

最后一下退出好像没录进去。
由于2611张帧图=26.9M所以就不用毒盘等工具放工程了,脚本是关键啦。
前面切换选项时换背景其实就是图片标题菜单的原理。

[pre lang="ruby" line="1" file="伪动态/视频"]class Scene_Logo20 # ■伪视频说明:越往后面越不同步
  def main
    @i = 10
    # 生成伪视频前的准备:确定使用文件路径和居中
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.gameover("badapple20/" + @i.to_s)
    @sprite.ox = @sprite.bitmap.width / 2
    @sprite.oy = @sprite.bitmap.height / 2
    @sprite.x = 320
    @sprite.y = 240
    # 我来组成 BGM
    Audio.bgm_play("Audio/BGM/badapple.ogg" ,100 ,100)
    Graphics.transition
    # 主循环
    loop do
      @sprite.bitmap = RPG::Cache.gameover("badapple20/" + @i.to_s)
      # 刷新游戏画面
      Graphics.update
      @sprite.bitmap = RPG::Cache.gameover("badapple20/" + @i.to_s)
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      @i += 1
      Graphics.update
      # 如果画面被切换就中断循环
      if $scene != self or @i == 2610
        break
      end
      # 每500帧清空一下缓存确保流畅运行
      if @i % 500 == 0
        RPG::Cache.clear
      end
    end
    # 各种释放
    Graphics.freeze
    @sprite.bitmap.dispose
    @sprite.dispose
    # 注释此行可BGM不停止
    Audio.bgm_stop
    # 呼出 Title
    $scene = Scene_Title.new
    # BGM已停止、、、
  end
end[/pre]


话说注释得多有木有糖?
上面是用于播放视频的,使用时请先更改倒数第四行和Audio以及@sprite.bitmap后面的内容。调出方法用 Scene_Logo20.new
第一个@i = 10是指从文件名为“10.jpg”的文件开始刷新,也就是开头,下面的“@i == 2610”是指播放到“2611.jpg”的图就停止播放。这两个值可用来调同步率。
关于帧图的制作请翻到文末。

[pre lang="ruby" line="1" file="插入型"]    @i = 722
    # 生成伪视频前的准备:确定使用文件路径和居中
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.gameover("badapple20/" + @i.to_s)
    @sprite.ox = @sprite.bitmap.width / 2
    @sprite.oy = @sprite.bitmap.height / 2
    @sprite.x = 320
    @sprite.zoom_x = 1.25
    @sprite.y = 240
    @sprite.zoom_y = 1.25
    # 主循环
    loop do
      @sprite.bitmap = RPG::Cache.gameover("badapple20/" + @i.to_s)
      # 刷新游戏画面
      Graphics.update
      @sprite.bitmap = RPG::Cache.gameover("badapple20/" + @i.to_s)
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      @i += 1
      Graphics.update
      # 如果画面被切换就中断循环
      if $scene != self or @i == 790
        break
      end
      # 每500帧清空一下缓存确保流畅运行
      if @i % 500 == 0
        RPG::Cache.clear
      end
    end
    # 各种释放
    Graphics.freeze
    @sprite.bitmap.dispose
    @sprite.dispose
[/pre]


上面这段可以插入在默认脚本中,使用时仍然要先改上述内容,“722”“790”就是视频中演示的菜单中只播放一段视频。
等完美版做出来我会更新在脚本开头就能改相应数据的。

下面是吐槽:关于为什么是20帧而不是40帧以及脚本中Graphics.update×3大丈夫吗不会卡帧吗什么的,其实我做了一个40帧的版本(6000多张),运行时完全不同步,RMXP的帧率真是碉堡了。掉帧什么的我不想吐槽了。


视频中的2倍速,很简单把第一个脚本的17 18 19 27行删掉,然后改一下BGM的节拍(第三个数值)为210就行了。
ps:结合真后台脚本享用更佳~

下面是技术信息,关于帧图制作,
采用KMP高级捕获技术每秒20帧捕获=每50毫秒一张
捕获结束请打开毁图看看,右击图片进行批量转格式(如果你第一次捕获选择bmp格式要换到jpg格式)和批量重命名(选做:批量改大小。。很占CPU不建议一次弄完),建议分3-5次弄完。
关于音频,可以百度,也可以用KMP高级捕获技术提取音频。建议转成ogg格式。
如果想只播放一次请将 Audio.bgm_play 改成 Audio.se_play

更新了关于丫的视频(“分数”做好),同时也想请问一下有没有什么好的方法做音乐游戏菜单。。
视频更新完成。

请注意左上角。

  -fk: -azogi:

Lv2.观梦者

梦石
0
星屑
550
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
2
发表于 2013-8-23 14:25:53 | 只看该作者
话说我也搞过这种东西,1500帧的东西就一点都不同步了……BGM放完然而图还在动……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

3
 楼主| 发表于 2013-8-23 17:27:13 | 只看该作者
本帖最后由 kuerlulu 于 2013-8-23 17:29 编辑

同步率破表调试完成了,采用传说中的原画帧(6566)然后BGM节拍设置成131.9,同步率破表。
请不要尝试洗脑循环,程序大概在第17遍吃掉你的电脑、、、这什么鬼畜设定

  -fk: -azogi:
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

4
发表于 2013-8-24 11:02:13 | 只看该作者
我的眼睛被你闪瞎了···如果我要的是循环3次5次不是无数次也不是一次怎么办》?

点评

上面这个例子会一直不断地循环,播放无数次。不过我有了把这个改装成音乐类游戏的想法,用帧计算准确度。  发表于 2013-8-24 12:24
很简单,加一个局部变量放在if @i == 2610 那 += 1,然后规定 == 多少次时切换场景或直接退出$scene = nil  发表于 2013-8-24 12:22
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

5
发表于 2013-8-24 12:51:05 | 只看该作者
@i=2610是循环2610次?

点评

2611次,,因为程序会自动代入计算下一次循环,如果设置成2611就会出错,这个2610也不是绝对的2611次,开头的初始值@i = 1可以调的,可以只播放一部分  发表于 2013-8-24 13:13
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
445
在线时间
377 小时
注册时间
2012-11-5
帖子
267
6
发表于 2016-2-19 13:53:31 | 只看该作者
求范例工程
谢谢!

评分

参与人数 1星屑 +1 收起 理由
kuerlulu + 1 1. 你挖坟了; 2. 学习脚本移步F1和各版教程.

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-31 06:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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