Flash Player no Rmxp
Sky Makers :: Rpg Maker XP :: Scripts
Página 1 de 1
Flash Player no Rmxp
Descrição
Esse script faz com que seja possível rodar arquivos no formato flash.
Usar arquivos no formato flash pode ser uma boa para criar cenas, já que, esse tipo de arquivo é bem leve...
Instruções
Cole o script RMFlash acima de todos os scripts (acima do Game_Temp para ser exato), e o script Fonts acima do main. Tenha na pasta Graphics uma nova pasta chamada Flash onde deverá conter os arquivos no formato flash. Tenha também na pasta do projeto os seguintes arquivos: Flash.ocx, Flash-old.ocx, RGSS103J.dll e RMFlash.dll (que podem ser baixados nesse tópico ou encontrados na demo). Depois de tudo isso feito, crie um evento e, em chamar scripts, use o comando: $flash.play("file.swf", button), onde file é o nome do arquivo Flash que será rodado e button pode ser 1 ou 0; 1 possibilita parar o filme apertando ENTER e 0 anula essa possibilidade.
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Download
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Script
Script Fonts
Créditos
灼眼的夏娜 por criar o script
Dark Wolf Warrior/Dahrkael, por fazer algumas alterações
Yoshi por postar na DM
Esse script faz com que seja possível rodar arquivos no formato flash.
Usar arquivos no formato flash pode ser uma boa para criar cenas, já que, esse tipo de arquivo é bem leve...
Instruções
Cole o script RMFlash acima de todos os scripts (acima do Game_Temp para ser exato), e o script Fonts acima do main. Tenha na pasta Graphics uma nova pasta chamada Flash onde deverá conter os arquivos no formato flash. Tenha também na pasta do projeto os seguintes arquivos: Flash.ocx, Flash-old.ocx, RGSS103J.dll e RMFlash.dll (que podem ser baixados nesse tópico ou encontrados na demo). Depois de tudo isso feito, crie um evento e, em chamar scripts, use o comando: $flash.play("file.swf", button), onde file é o nome do arquivo Flash que será rodado e button pode ser 1 ou 0; 1 possibilita parar o filme apertando ENTER e 0 anula essa possibilidade.
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Download
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Script
- Código:
#==============================================================================#
# 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["="] = 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["="])
break if !fls.playing?
end
fls.dispose
Graphics.frame_rate = @fr
fondo.dispose
end
end
Script Fonts
- Código:
class Font
alias font_fix_initialize initialize
def initialize
font_fix_initialize
self.name = "Arial" # Nombre de la fuente
self.size = 25 # Tamaño
end
end
Créditos
灼眼的夏娜 por criar o script
Dark Wolf Warrior/Dahrkael, por fazer algumas alterações
Yoshi por postar na DM
Sky Makers :: Rpg Maker XP :: Scripts
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|