Project1

标题: VX的播放影片脚本 [打印本页]

作者: 迷路子    时间: 2010-10-29 09:30
标题: VX的播放影片脚本
本帖最后由 迷路子 于 2010-11-2 04:23 编辑

找到的都是xp的
vx的版本只有搜到个说是脑残版本的
看到帖子说还有个完美版
但似乎没搜到
有人能给下完美版的avi播放脚本吗?

或是其他比较推荐的影片播放脚本
毕竟avi的容量较大  游戏做出来也就会不小
麻烦给个推荐吧~
作者: 高须小龙    时间: 2010-10-29 17:25
本帖最后由 高须小龙 于 2010-10-29 17:27 编辑

有是有,不过呢……
你自己看吧:
http://www.tekepon.net/fsm/modul ... d=1235&forum=12
作者: 沉影不器    时间: 2010-10-29 21:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: 迷路子    时间: 2010-11-1 03:45
回复 沉影不器 的帖子

我用了紫苏前辈的音频扩张脚本
的确可以播放影片
但……它是弹出另一个窗口播放影片…(泪)
太令人伤心了…
咋不是在原窗口播放影片啊~(泪)
作者: 捣蛋    时间: 2010-11-1 11:38
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. # 其中用到FantasyDR的高精度计时器,和BB转载的转UTF-8的脚本,柳柳在此表示感谢~
  4. #==============================================================================

  5. #=================================================================
  6. # MTV 脚本,by 66RPG_柳柳
  7. #=================================================================
  8. module MTV  
  9. #===============================================================
  10. # 读取文件。文件相对地址:Audio/BGM
  11. # file_name:文件名;length:MTV长度,按照.1秒为单位记数
  12. #===============================================================
  13. def self.load(file_name,length = 0)
  14.    $mtv_time = []
  15.    $mtv_text = []
  16.    $game_system.mtv_length = length
  17.    #=============================================================
  18.    # 打开文件并且读取之
  19.    #=============================================================
  20.    file =  File.open("Audio/BGM/"+file_name)
  21.    #=============================================================
  22.    # 读取歌词
  23.    #=============================================================
  24.    for line in file.readlines
  25.      #===========================================================
  26.      # 转为UTF-8编码
  27.      #===========================================================
  28.      line = EasyConv.s2u(line)
  29.      #===========================================================
  30.      # 寻找本行歌词
  31.      #===========================================================
  32.      this_line_text = line[line.scan(/\]/).size*10,line.size]
  33.      #===========================================================
  34.      # 把读取的行分存成时间与文字
  35.      #===========================================================
  36.      for i in 0...line.scan(/\]/).size
  37.        temp_b = line[i*10+1,8]
  38.        temp_c = temp_b.split(/:/)[0]
  39.        mmsecond = 600 * temp_c.to_i
  40.        temp_c = temp_b.split(/:/)[1]
  41.        mmsecond += 10 * temp_c.to_f
  42.        $mtv_time.push(mmsecond.to_i)
  43.        $mtv_text.push(this_line_text)
  44.      end
  45.    end
  46.    file.close
  47.    
  48. end
  49. #===============================================================
  50. # 开始MTV字幕
  51. #===============================================================
  52. def self.mtv_begin
  53.    $game_system.mtv_now = true
  54.    $game_system.mtv_begin_time = $sys_timer.now()
  55.    $lrc_text = ""
  56.    return
  57. end
  58. #===============================================================
  59. # 结束MTV字幕
  60. #===============================================================
  61. def self.stop
  62.    $game_system.mtv_now = false
  63.    return
  64. end
  65. #===============================================================
  66. # 测试MTV是否播放
  67. #===============================================================
  68. def self.mtv?
  69.    return $game_system.mtv_now
  70. end
  71. #===============================================================
  72. # 获取MTV字幕
  73. #===============================================================
  74. def self.new_text
  75.    if $game_system.mtv_now
  76.      #===========================================================
  77.      # 求出已经经过的时间
  78.      #===========================================================
  79.      nt = $sys_timer.now()
  80.      nt -= $game_system.mtv_begin_time
  81.      nt = nt.to_i
  82.      nt /= 100      
  83.      #===========================================================
  84.      # 制作循环
  85.      #===========================================================
  86.      if $game_system.mtv_length>0 and nt > $game_system.mtv_length
  87.        nt -= $game_system.mtv_length
  88.      end
  89.      #===========================================================
  90.      # 放出字幕
  91.      #===========================================================
  92.      for tm in 0...$mtv_time.size
  93.        if $mtv_time[tm] == nt
  94.          #▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
  95.          #防止出现非文字字符
  96.          $lrc_text = $mtv_text[tm].gsub(/\s+/,"")
  97.          #卡拉ok层建立
  98.             $src_bitmap.clear
  99.             $src_bitmap=Bitmap.new($lrc_text.size*30, 32)
  100.             $src_bitmap.font.color = Color.new(255,0,0)
  101.             $src_bitmap.font.size = 30#▲字号可以调节,不过要和原底色字相同
  102.             $src_bitmap.draw_text(0, 0, $lrc_text.size*30, 32, $lrc_text)
  103.             $i= 0#▲字幕出现延迟,调节精准度用
  104.          break
  105.        end
  106.      end
  107.    else
  108.      $lrc_text = ""
  109.    end
  110. end
  111. end
  112. #~  


  113. #==============================================================================
  114. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  115. #==============================================================================


  116. #==============================================================================
  117. # 仭 EasyConv module - Ver 0.90
  118. #------------------------------------------------------------------------------
  119. # Moonlight INN
  120. # http://cgi.members.interq.or.jp/aquarius/rasetsu/
  121. # RaTTiE
  122. # [email protected]
  123. #------------------------------------------------------------
  124. # EasyConv::s2u(text) : S-JIS -> UTF-8
  125. # EasyConv::u2s(text) : UTF-8 -> S-JIS
  126. #==============================================================================
  127. module EasyConv
  128. # API梡掕悢掕媊
  129.   CP_ACP = 0
  130.   CP_UTF8 = 65001

  131. #--------------------------------------------------------------------------
  132. # 仠 S-JIS -> UTF-8
  133. #--------------------------------------------------------------------------
  134. def s2u(text)
  135. # API掕媊
  136.   m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  137.   w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')

  138. # S-JIS -> Unicode
  139.   len = m2w.call(CP_ACP, 0, text, -1, nil, 0);
  140.   buf = "\0" * (len*2)
  141.   m2w.call(CP_ACP, 0, text, -1, buf, buf.size/2);

  142. # Unicode -> UTF-8
  143.   len = w2m.call(CP_UTF8, 0, buf, -1, nil, 0, nil, nil);
  144.   ret = "\0" * len
  145.   w2m.call(CP_UTF8, 0, buf, -1, ret, ret.size, nil, nil);
  146.   
  147.   return ret
  148. end
  149. # module_function偲偟偰岞奐
  150. module_function :s2u
  151. #--------------------------------------------------------------------------
  152. # 仠 UTF-8 -> S-JIS
  153. #--------------------------------------------------------------------------
  154. def u2s(text)
  155. # API掕媊
  156.   m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  157.   w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')

  158. # UTF-8 -> Unicode
  159.   len = m2w.call(CP_UTF8, 0, text, -1, nil, 0);
  160.   buf = "\0" * (len*2)
  161.   m2w.call(CP_UTF8, 0, text, -1, buf, buf.size/2);

  162. # Unicode -> S-JIS
  163.   len = w2m.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil);
  164.   ret = "\0" * len
  165.   w2m.call(CP_ACP, 0, buf, -1, ret, ret.size, nil, nil);
  166.   
  167.   return ret
  168. end
  169. # module_function偲偟偰岞奐
  170. module_function :u2s
  171. end


  172. #==============================================================================
  173. # ■ Game_System
  174. #------------------------------------------------------------------------------
  175. #  处理系统附属数据的类。也可执行诸如 BGM 管理之类的功能。本类的实例请参考
  176. # $game_system 。
  177. #==============================================================================
  178. class Game_System
  179. #--------------------------------------------------------------------------
  180. # ● 定义实例变量
  181. #--------------------------------------------------------------------------
  182. attr_accessor :mtv_begin_time
  183. attr_accessor :mtv_now
  184. attr_accessor :mtv_length
  185. #--------------------------------------------------------------------------
  186. # ● 初始化对像
  187. #--------------------------------------------------------------------------
  188. alias mtv_gamesystem_initialize initialize
  189. def initialize
  190.    mtv_gamesystem_initialize
  191.    @mtv_begin_time = $sys_timer.now()
  192.    @mtv_now = false
  193.    @mtv_length = 0
  194. end
  195. end  

  196. #==============================================================================
  197. # ■ Scene_Map
  198. #------------------------------------------------------------------------------
  199. #  处理地图画面的类。
  200. #==============================================================================
  201. class Scene_Map
  202. #--------------------------------------------------------------------------
  203. # ● 刷新画面
  204. #--------------------------------------------------------------------------
  205. alias mtv_scenemap_update update
  206. def update
  207.    @mtv_window.refresh
  208.    @win.refresh
  209.    mtv_scenemap_update
  210. end
  211. #--------------------------------------------------------------------------
  212. # ● 主处理
  213. #--------------------------------------------------------------------------
  214. alias mtv_scenemap_main main
  215. def main
  216.    @mtv_window = Window_MTV.new
  217.    @win=Window_MTVOK.new
  218.    mtv_scenemap_main
  219.    @mtv_window.dispose
  220.    @win.dispose
  221.    
  222. end

  223. #==============================================================================
  224. # ■ Window_MTV
  225. #------------------------------------------------------------------------------
  226. #  显示MTV字幕的窗口。
  227. #==============================================================================

  228. class Window_MTV < Window_Base
  229. #--------------------------------------------------------------------------
  230. # ● 初始化窗口
  231. #--------------------------------------------------------------------------
  232. def initialize
  233.    super(130, 410, 544, 64)
  234.    self.contents = Bitmap.new(width - 32, height - 32)
  235.    $src_bitmap=Bitmap.new(544 - 32, 32)
  236.    $lrc_text = ""
  237.    self.z = 9999
  238.    self.opacity = 0
  239.    $i=0
  240.    refresh
  241. end
  242. #--------------------------------------------------------------------------
  243. # ● 刷新
  244. #--------------------------------------------------------------------------
  245. def refresh(text = "")
  246.    MTV.new_text
  247.    self.contents.clear
  248.    self.contents.font.color = Color.new(255,255,255,255)
  249.    self.contents.font.size=30
  250.    color = Color.new(0,0,0,255)
  251.    self.contents.draw_text(0, 0, $lrc_text.size*30, 32, $lrc_text)   
  252. end
  253. end

  254. #▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
  255. #卡拉ok效果 v1.00
  256. #大赛副产品
  257. #by 柳佳淇  @66RPG
  258. #▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
  259. class Window_MTVOK < Window_Base
  260. #--------------------------------------------------------------------------
  261. # ● 初始化窗口
  262. #--------------------------------------------------------------------------
  263. def initialize
  264.    super(130, 410, 544, 64)
  265.    self.contents = Bitmap.new(width - 32, height - 32)
  266.    self.opacity = 0
  267.    self.z = 9999
  268.    $i=0
  269.    $b=1
  270.    refresh
  271. end
  272. #--------------------------------------------------------------------------
  273. # ● 刷新
  274. #--------------------------------------------------------------------------
  275. def refresh(text = "")
  276.    MTV.new_text
  277.    $i=$i+$b +1 #▲ 可以具体调节卡拉ok进度快慢。
  278.    self.contents.clear   
  279.    @src_rect=Rect.new(0, 0, $i, 32)
  280.    self.contents.blt(0, 0, $src_bitmap, @src_rect)
  281. end
  282. end

  283. #==============================================================================
  284. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  285. #==============================================================================
  286. #==============================================================================
  287. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  288. #==============================================================================
  289. # ------------------------------------------------------------------------
  290. # 高精度计时器 by FantasyDR
  291. # ------------------------------------------------------------------------
  292. # E-mail: [email protected]
  293. # ------------------------------------------------------------------------
  294. # 2005.10.18
  295. # ------------------------------------------------------------------------
  296. # 该类已经被定义为全局变量 $sys_timer
  297. # 如果只需要精确到毫秒,请设置初始化参数为true
  298. # decimal属性设置返回时间值的小数位数。
  299. # ------------------------------------------------------------------------
  300. # 下面是一些有用的方法列表,调用时写:$sys_timer.方法名
  301. # 例如 $sys_timer.clear()
  302. #$sys_timer.now()
  303. # ------------------------------------------------------------------------
  304. # clear() :计时器清零
  305. # now() :获取当前经过的时间,单位毫秒
  306. # now_s() :获取当前经过的时间,单位秒
  307. # ------------------------------------------------------------------------
  308. class SystemTimer
  309. attr_accessor:decimal #小数位数设定,默认为3

  310. def initialize(use_GetTime=false)
  311. # 初始化,根据系统选择不同精度计时器
  312. @qpFrequency = Win32API.new("kernel32","QueryPerformanceFrequency",'p','L')
  313. @qpCounter = Win32API.new("kernel32","QueryPerformanceCounter",'p','L')
  314. @tGetTime = Win32API.new("winmm","timeGetTime",'','L')

  315. @decimal=3
  316. @perf_cnt=" " * 8
  317. @time_start=" " * 8
  318. @time_now=" " * 8

  319. result = @qpFrequency.call(@perf_cnt)

  320. if use_GetTime
  321. result = 0
  322. end

  323. if result!=0
  324. @perf_flag=true
  325. else
  326. @perf_flag=false
  327. @perf_cnt=[1000,0].pack('LL')
  328. end


  329. #设置时间比例因数
  330. @time_scale=@perf_cnt.unpack('LL')
  331. @time_scale[0] /= 1000.0
  332. @time_scale[1] /= 1000.0

  333. #起始时间清零
  334. self.clear()
  335. end

  336. #-=====================-#
  337. # 计时器清零
  338. #-=====================-#
  339. def clear()
  340. @[email protected](@time_start):@time_start=[@tGetTime.call(),0].pack('LL')
  341. end

  342. #-==============================-#
  343. # 获取当前经过的时间,单位毫秒
  344. #-==============================-#
  345. def now()
  346. now_time = 0.0e1
  347. now_time += self.timer() - self.start()
  348. now_time /= self.scale()
  349. return self.debug(now_time)
  350. end

  351. #-==============================-#
  352. # 获取当前经过的时间,单位秒
  353. #-==============================-#
  354. def now_s()
  355. now_time = 0.0e1
  356. now_time += self.timer() - self.start()
  357. now_time /= (self.scale()*1000)
  358. return self.debug(now_time)
  359. end

  360. #-==============================-#
  361. # 帧错...
  362. #-==============================-#
  363. def debug(now_time)
  364. @decimal>0?now_time = (now_time * (10**@decimal)).floor/(10.0**@decimal):now_time = now_time.floor

  365. return now_time

  366. #以下用于debug模式
  367. if now_time < 0
  368. p "Timer Wrong!! Clear...",now_time,\
  369. @perf_flag,@qpCounter,@tGetTime,
  370. @time_now.unpack('LL')[0],@time_now.unpack('LL')[1],
  371. @time_start.unpack('LL')[0],@time_start.unpack('LL')[1]
  372. self.clear()
  373. return 0.0
  374. else
  375. return now_time
  376. end
  377. end

  378. #-=====================-#
  379. # 获取时间比例因数
  380. #-=====================-#
  381. def scale()
  382. return @time_scale[0]+\
  383. @time_scale[1]*0xffffffff
  384. end

  385. #-=====================-#
  386. # 获取起始滴答数
  387. #-=====================-#
  388. def start()
  389. return @time_start.unpack('LL')[0]+\
  390. @time_start.unpack('LL')[1]*0xffffffff
  391. end

  392. #-=====================-#
  393. # 获取当前的嘀哒数
  394. #-=====================-#
  395. def timer()
  396. @[email protected](@time_now):@time_now=[@tGetTime.call(),0].pack('LL')

  397. return @time_now.unpack('LL')[0]+\
  398. @time_now.unpack('LL')[1]*0xffffffff
  399. end
  400. end
  401. #-------------------------------------#
  402. # 初始化自身成一个全局变量
  403. #-------------------------------------#
  404. $sys_timer=SystemTimer.new()
  405. end
  406. #-------------------------------------#
复制代码
这个是柳大播放歌曲的脚本.不知道对楼主是否有用.
我试过这脚本.很好用的说
作者: Enfa    时间: 2010-11-1 11:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: 迷路子    时间: 2010-11-2 04:23
非常感谢楼上两位的帮忙
那个mtv的脚本我不会用(汗)
後来发现xp和vx可以兼容
所以找到了另个xp的脚本
而且符合我要的结果
非常感谢大家的帮忙~
作者: lwdx0822    时间: 2010-11-2 16:52
回复 迷路子 的帖子

那个。。能不能把你找到的共享下啊。。。
作者: 迷路子    时间: 2010-11-2 19:36
回复 lwdx0822 的帖子

影片播放脚本

该帖子的沙发
原帖不知道是哪个(汗)
因为之前搜的时候只找VX区
後来才知道影片播放脚本有的可以和VX共用(应该说大多数皆行)
实际插入後也能正常运作
脚本的使用
190行处需修改成你的工程名
调用指令是
$MP.play(movie_name, movie_length, skip, fullscr, x, y, width, height, loop)
详细参数可在脚本中查看
试用感想是很满意效果~
作者: lwdx0822    时间: 2010-11-2 21:29
回复 迷路子 的帖子

我去试试。。。感谢啦。。。
作者: yuxuan    时间: 2010-11-2 22:39
提示: 作者被禁止或删除 内容自动屏蔽




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