- 295
- Posts
- 7
- Years
- Seen Aug 15, 2022
v.20+:
I won't update this script. So, when you have an updated, you can post in new thread.
v.19:
This script creates an event for play movie. This is the original post Here
How to use
Create the folder Movies and insert there the movies
Call:
For play one time, you can skip it if press X on your keyboard: pbVideo(filename)
You can out loop if press X on your keyboard: pbVideoLoop(filename)
filename = the name of the flash to be played (should be file .swf)
Press C on your keyboard for pause or resume
Put the script above Main.
Dowload
Link
Extract it into your root folder(the folder with the game.exe of your project)
Code
Credit
Author: ?????
Dark_Wolf_Warrior/Dahrkael, Peaverin
bo4p5687 (update v.18.1)
I won't update this script. So, when you have an updated, you can post in new thread.
v.19:
This script creates an event for play movie. This is the original post Here
How to use
Create the folder Movies and insert there the movies
Call:
For play one time, you can skip it if press X on your keyboard: pbVideo(filename)
You can out loop if press X on your keyboard: pbVideoLoop(filename)
filename = the name of the flash to be played (should be file .swf)
Press C on your keyboard for pause or resume
Put the script above Main.
Dowload
Link
Extract it into your root folder(the folder with the game.exe of your project)
Code
Spoiler:
Code:
#==============================================================================#
# RPG Maker XP Flash Player
#
# Credit:
# Author: ????? Updated by: Dark_Wolf_Warrior/Dahrkael
# Peaverin: Adapt to Essentials + tutorial(optional credits)
# bo4p5687 (update v.18.1)
#
# How to Use:
# Create the folder Movies and insert there the movies.
#
# Call:
# # For play one time, you can skip it if press X on keyboard
# pbVideo(filename)
#
# # You can out loop if press X on keyboard
# pbVideoLoop(filename)
#
# filename = the name of the flash to be played (should be file .swf)
#
# Example: pbVideo("a.swf") # It will play file a in folder Movies
#==============================================================================#
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}/Movies/#{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
class Video
BlackColor = Color.new(0,0,0,255)
def initialize(filename)
@viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
@viewport.z=999999
@bg = Sprite.new(@viewport)
@bg.bitmap = Bitmap.new(SCREEN_WIDTH,SCREEN_HEIGHT)
@bg.bitmap.fill_rect(0,0,SCREEN_WIDTH,SCREEN_HEIGHT,BlackColor)
@flash = RMFlash.load(filename,SCREEN_WIDTH,SCREEN_HEIGHT,@viewport)
@flash.z = 999999
@previousBGM = nil
@pause = false
@exit = false
end
def stopAudioBG
@previousBGM = $game_system.getPlayingBGM
pbMEStop; pbBGSStop; pbSEStop; pbBGMStop
end
def playAudioBG
# Music
pbBGMPlay(@previousBGM)
end
def playOneTime
stopAudioBG
@flash.loop = 1
loop do
Graphics.update
Input.update
break if @exit
@flash.update
if Input.trigger?(Input::C)
@pause = (@pause)? false : true
@flash.pause if @pause
@flash.resume if !@pause
elsif Input.trigger?(Input::B) || ([email protected]? && !@pause)
@flash.dispose
@exit = true
end
end
# End
endVideo
end
def playNonStop
stopAudioBG
@flash.loop = 1
loop do
Graphics.update
Input.update
break if @exit
@flash.update
@flash.rewind if [email protected]? && !@pause
if Input.trigger?(Input::C)
@pause = (@pause)? false : true
@flash.pause if @pause
@flash.resume if !@pause
elsif Input.trigger?(Input::B)
@flash.dispose
@exit = true
end
end
# End
endVideo
end
def endVideo
playAudioBG
@bg.dispose
@viewport.dispose
end
end
def pbVideo(filename)
s = Video.new(filename)
s.playOneTime
end
def pbVideoLoop(filename)
s = Video.new(filename)
s.playNonStop
end
Credit
Author: ?????
Dark_Wolf_Warrior/Dahrkael, Peaverin
bo4p5687 (update v.18.1)
Last edited: