Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
David Johnston

Looking For A Video Player Script.

Recommended Posts

Hey guys, Im in need of a video player script, i need one that plays either MP4 or SWF files, i want one so i can add an intro on my menu screen, the main menu. I thought itd be really cool for people to see !

Share this post


Link to post
Share on other sites

I found this one a while ago: http://forums.rpgmakerweb.com/index.php?/topic/6392-zeus-video-player/

 

But I moved away from the idea of using videos in my RMXP project because of the cons that came with it... I think I was worried about mainly playback issues, how it would run on other computers compared to mine, etc. Your choice whether to use it, though.

Share this post


Link to post
Share on other sites

Here is what I found:

http://rpgmaker.net/tutorials/496/

I don't have time to follow the tutorial and make sure it's exactly what you want, But I assume you do.

Well it looks fine and dandy except when i try to start my game it says "Script 'RMFLASH' Line 68: SyntaxError Occurred"

And i have no idea how to fix it. 

Share this post


Link to post
Share on other sites

Well...I searched for this. Unfortunately I couldn't find a way to play the video before the title screen appears. But I found an older version of that script and you can play your video on a map using this script :

#==============================================================================#
#                                                                 Version 0.3  #
#                         RPG Maker XP Flash Player                            #
#                                                                              #
#  Author: ç¼çœ¼çš„å¤å¨œ                     Updated by: Dark_Wolf_Warrior/Dahrkael #
#                                                                              #
#  How to Use:                                                                 #
#                                      Graphics.freeze                         #
#  1. Go to Main Script and add ---->  $flash = Play.new                       #
#                                      $scene = Scene_Title.new                #
#                                                                              #
#  2. Copy the .dll and the .ocx to the game folder                            #
#                                                                              #
#  3. Make a folder called "Flash" in the folder "Graphics" -> Graphics/Flash/ #
#                                                                              #
#  4. To play a flash file use:                                                #
#    $flash.play("file.swf", button)                                           #
#                                                                              #
#    button can be 0 or 1, if 1 you can skip the flash using "Enter"           #
#                                                                              #
#                                                                              #
#                                                                              #
#  Interactive flashes requires RGSS knownledge to make they work              #
#                                                                              #
#  Original Keyb module by HoundNinja                                          #
#                                                                              #
#==============================================================================#
 
 
 
class String
  
  CP_ACP = 0
  CP_UTF8 = 65001
  
  def u2s
    m2w = Win32API.new("kernel32", "MultiByteToWideChar", "ilpipi", "i")
    w2m = Win32API.new("kernel32", "WideCharToMultiByte", "ilpipipp", "i")
    
    len = m2w.call(CP_UTF8, 0, self, -1, nil, 0)
    buf = "\0" * (len*2)
    m2w.call(CP_UTF8, 0, self, -1, buf, buf.size/2)
    
    len = w2m.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil)
    ret = "\0" * len
    w2m.call(CP_ACP, 0, buf, -1, ret, ret.size, nil, nil)
    
    return ret
  end
  
  def s2u
    m2w = Win32API.new("kernel32", "MultiByteToWideChar", "ilpipi", "i")
    w2m = Win32API.new("kernel32", "WideCharToMultiByte", "ilpipipp", "i")
  
    len = m2w.call(CP_ACP, 0, self, -1, nil, 0);
    buf = "\0" * (len*2)
    m2w.call(CP_ACP, 0, self, -1, buf, buf.size/2);
  
    len = w2m.call(CP_UTF8, 0, buf, -1, nil, 0, nil, nil);
    ret = "\0" * len
    w2m.call(CP_UTF8, 0, buf, -1, ret, ret.size, nil, nil);
     
    return ret
  end
 
  def s2u!
    self[0, length] = s2u
  end  
  
  def u2s!
    self[0, length] = u2s
  end
  
end
 
class Bitmap
  
  RtlMoveMemory_pi = Win32API.new('kernel32', 'RtlMoveMemory', 'pii', 'i')
  RtlMoveMemory_ip = Win32API.new('kernel32', 'RtlMoveMemory', 'ipi', 'i')
 
  def address
    buffer, ad = "xxxx", object_id * 2 + 16
    RtlMoveMemory_pi.call(buffer, ad, 4); ad = buffer.unpack("L")[0] + 8
    RtlMoveMemory_pi.call(buffer, ad, 4); ad = buffer.unpack("L")[0] + 16
    RtlMoveMemory_pi.call(buffer, ad, 4); return buffer.unpack("L")[0]
  end
  
end 
 
class RMFlash
 
    API_NEW           = Win32API.new("RMFlash", "_new", "piil", "l")
    API_UPDATE      = Win32API.new("RMFlash", "_update", "l", "v")
    API_FREE          = Win32API.new("RMFlash", "_free", "l", "v")
    API_PLAYING     = Win32API.new("RMFlash", "_is_playing", "l", "i")
    API_PAUSE         = Win32API.new("RMFlash", "_pause", "l", "v")
    API_RESUME      = Win32API.new("RMFlash", "_resume", "l", "v")
    API_BACK          = Win32API.new("RMFlash", "_back", "l", "v")
    API_REWIND      = Win32API.new("RMFlash", "_rewind", "l", "v")
    API_FORWARD     = Win32API.new("RMFlash", "_forward", "l", "v")
    API_CURFRAME      = Win32API.new("RMFlash", "_cur_frame", "l", "i")
    API_TOTALFRAME  = Win32API.new("RMFlash", "_total_frames", "l", "i")
    API_GOTOFRAME     = Win32API.new("RMFlash", "_goto_frame", "li", "v")
    API_GETLOOP       = Win32API.new("RMFlash", "_get_loop", "l", "i")
    API_SETLOOP       = Win32API.new("RMFlash", "_set_loop", "li", "v")
    API_CLEARALL      = Win32API.new("RMFlash", "_clear_all", "v", "v")
  API_VALID       = Win32API.new("RMFlash", "_valid", "l", "i")
  API_SENDMSG     = Win32API.new("RMFlash", "_send_message", "liii", "l")
    
  CUR_PATH        = Dir.pwd
  
    def self.get_version
 
    end
 
    def self.clear_all
        API_CLEARALL.call
    end
  
  def self.load(name, width, height, v = nil)
    new("#{CUR_PATH}/Graphics/Flash/#{name}".u2s, width, height, v)
  end
  
  attr_reader   :valid
 
    def initialize(flash_name, flash_width, flash_height, viewport = nil)
        @sprite = Sprite.new(viewport)
        @sprite.bitmap = Bitmap.new(flash_width, flash_height)
        @value = API_NEW.call(flash_name, flash_width, flash_height, @sprite.bitmap.address)
        @loop = API_GETLOOP.call(@value) > 0
    @valid = API_VALID.call(@value) > 0
    end
 
    def viewport
        @sprite.viewport
    end
 
    def update
        API_UPDATE.call(@value)
    end
 
    def dispose
        API_FREE.call(@sprite.bitmap.address)
    end
 
    def playing?
        API_PLAYING.call(@value) > 0
    end
 
    def pause
        API_PAUSE.call(@value)
    end
 
    def resume
        API_RESUME.call(@value)
    end
 
    def back
        API_BACK.call(@value)
    end
 
    def rewind
        API_REWIND.call(@value)
    end
 
    def forward
        API_FORWARD.call(@value)
    end
 
    def current_frame
        API_CURFRAME.call(@value)
    end
 
    def total_frames
        API_TOTALFRAME.call(@value)
    end
 
    def goto_frame(goal_frame)
        API_GOTOFRAME.call(@value, goal_frame)
    end
 
    def x
        @sprite.x
    end
 
    def x=(v)
        @sprite.x = v
    end
 
    def y
        @sprite.y
    end
 
    def y=(v)
        @sprite.y = v
    end
 
    def z
        @sprite.z
    end
 
    def z=(v)
        @sprite.z = v
    end
 
    def width
        @sprite.bitmap.width
    end
 
    def height
        @sprite.bitmap.height
    end
 
    def loop?
        @loop
    end
 
    def loop=(v)
        if @loop != v
            @loop = v
            API_SETLOOP.call(@value, v)
        end
    end
  
  def msg_to_flash(msg, wParam, lParam)
    return API_SENDMSG.call(@value, msg, wParam, lParam)
  end
  
  #  例
  WM_MOUSEMOVE  = 0x0200
  
  def make_long(a, b)
    return (a & 0xffff ) | (b & 0xffff) << 16
  end
  
  def on_mouse_move(x, y)
    return msg_to_flash(WM_MOUSEMOVE, 0, make_long(x, y))
  end
 
end
 
module Kernel
 
  alias origin_exit exit unless method_defined? :exit
  
  def exit(*args)
    RMFlash.clear_all
    origin_exit(*args)
  end
  
end
 
module Keyb
  $keys = {}
  $keys["Enter"] = 0x0D
  GetKeyState = Win32API.new("user32","GetAsyncKeyState",['i'],'i')
  module_function 
  def trigger(rkey) 
    GetKeyState.call(rkey) & 0x01 == 1
  end
end
 
class Play
  
  def play(filename, button)
    fondo = Sprite.new
    fondo.bitmap = Bitmap.new(640, 480)
    fondo.bitmap.fill_rect(0, 0, 640, 480, Color.new(0,0,0,255))
    fls = RMFlash.load(filename, 640, 480)
    fls.loop = 1
    fls.z = 9999
    @button = button
    @fr = Graphics.frame_rate
    Graphics.frame_rate = 40
 
    while true
      Graphics.update
      #Input.update
      fls.update
      break if @button == 1 and Keyb.trigger($keys["Enter"]) 
      break if !fls.playing?
      end
    fls.dispose
    Graphics.frame_rate = @fr
    fondo.dispose
  end
 
end

Follow the guide above the script. For the step 2, Copy and paste these files in your game folder:

https://drive.google.com/file/d/0B-ZHv7mhUCmrOXFhTlVyRE4xcTA/view?usp=sharing

Like step 4 says, When you want to play your video, Call this line "$flash.play("file.swf", button)" (without quotations) and change "file.swf" to your video name.

Perhaps a scripter can edit this to fit what you need. That was what I managed to find. But till then, I think it's not a bad idea to add the intro to a map that player is transferred to right after they choose "New Game".

Edited by zahraa

Share this post


Link to post
Share on other sites

Hm, thats the first script that works, or atleast shows my swf animation, but, when my animation pops up it just shows the first frame and nothing else? And what does the button part mean? I put 1 

Edited by David Johnston

Share this post


Link to post
Share on other sites

Set the button to 0, 1 is kinda buggy. Also I've tested it with a random swf video and it works so I might be able to help if I have your video.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...