Diego Mertens
Dartrix Joven
¡Alola!
Hoy les voy a mostrar cómo poner una intro, un "video" antes del Título, e incluso, dentro del juego. Yo sólo vengo a "transferir" a este Script a Whack a Hack!, porque, originalmente, estaba en PokéCommunity; créditos a "Peaverin"
Ya con todo esto, cuando queramos poner nuestra intro, debemos pegar el archivo ".swf" en la carpeta que creamos antes, "Flash". Y si quieres llamar al Script y poner un "video" wow si que uso muchas comillas en el juego, deberás poner el siguiente evento:
En donde "file" es el nombre del archivo que quieran reproducir, y "button" es si el jugador puede saltarlo o no, siendo 0 que no pueda y 1 que si.
También cabe remarcar que hay una parte del primer script que dice "#{CUR_PATH}/Graphics/Flash/#{name}"
y hay que reemplazar el "#{name}" por el nombre del archivo swf.
Espero les haya servido y si es así, dame un +Gracias.
¡Alola!
Hoy les voy a mostrar cómo poner una intro, un "video" antes del Título, e incluso, dentro del juego. Yo sólo vengo a "transferir" a este Script a Whack a Hack!, porque, originalmente, estaba en PokéCommunity; créditos a "Peaverin"
https://www.pokecommunity.com/showthread.php?t=312010
Primero deberemos descargar esto:RMFlashFiles(2)
y descomprimirlo en la carpeta raíz del juego (en donde está el Game.exe) y crear dentro de Graphics una carpeta llamada "Flash".
y descomprimirlo en la carpeta raíz del juego (en donde está el Game.exe) y crear dentro de Graphics una carpeta llamada "Flash".
Después, pegaremos el siguiente Script arriba de Main como "Intro1" o "Video1"
Aquí está el código sin los fallos del foro:
Video 1
y guardar.
Aquí está el código sin los fallos del foro:
Video 1
Código:
#==============================================================================#
# Version 0.3 #
# RPG Maker XP Flash Player #
# #
# Author: ????? Updated by: Dark_Wolf_Warrior/Dahrkael #
# # Peaverin: Adapt to Essentials + tutorial(optional credits)
# How to Use: #
# 1. Create the folder Graphics/Flash and insert there the movies.
# #
# 2. If you want to play a flash at any moment insert: #
# $flash.play("file.swf", button)
# file= the name of the flash to be played
# button= 0(the player can't skip the flash by pressing enter)
# button= 1(the player can skip the flash by prssing enter)
# FOR EXAMPLE: I add a flash called Heya to the flash folder.
# # Then, in a event I call the script:
# # $flash.play("Heya.swf", 0)
# # By this way the flash Heya will be played and you won't be
# # able to skip it by pressing 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)
[MENTION=24071]Sprite[/MENTION] = Sprite.new(viewport)
[MENTION=24071]Sprite[/MENTION].bitmap = Bitmap.new(flash_width, flash_height)
[MENTION=38955]val[/MENTION]ue = API_NEW.call(flash_name, flash_width, flash_height, [MENTION=24071]Sprite[/MENTION].bitmap.address)
@loop = API_GETLOOP.call [MENTION=38955]val[/MENTION]ue) > 0
[MENTION=38955]val[/MENTION]id = API_VALID.call [MENTION=38955]val[/MENTION]ue) > 0
end
def viewport
[MENTION=24071]Sprite[/MENTION].viewport
end
def update
API_UPDATE.call [MENTION=38955]val[/MENTION]ue)
end
def dispose
API_FREE.call [MENTION=24071]Sprite[/MENTION].bitmap.address)
end
def playing?
API_PLAYING.call [MENTION=38955]val[/MENTION]ue) > 0
end
def pause
API_PAUSE.call [MENTION=38955]val[/MENTION]ue)
end
def resume
API_RESUME.call [MENTION=38955]val[/MENTION]ue)
end
def back
API_BACK.call [MENTION=38955]val[/MENTION]ue)
end
def rewind
API_REWIND.call [MENTION=38955]val[/MENTION]ue)
end
def forward
API_FORWARD.call [MENTION=38955]val[/MENTION]ue)
end
def current_frame
API_CURFRAME.call [MENTION=38955]val[/MENTION]ue)
end
def total_frames
API_TOTALFRAME.call [MENTION=38955]val[/MENTION]ue)
end
def goto_frame(goal_frame)
API_GOTOFRAME.call [MENTION=38955]val[/MENTION]ue, goal_frame)
end
def x
[MENTION=24071]Sprite[/MENTION].x
end
def x=(v)
[MENTION=24071]Sprite[/MENTION].x = v
end
def y
[MENTION=24071]Sprite[/MENTION].y
end
def y=(v)
[MENTION=24071]Sprite[/MENTION].y = v
end
def z
[MENTION=24071]Sprite[/MENTION].z
end
def z=(v)
[MENTION=24071]Sprite[/MENTION].z = v
end
def width
[MENTION=24071]Sprite[/MENTION].bitmap.width
end
def height
[MENTION=24071]Sprite[/MENTION].bitmap.height
end
def loop?
@loop
end
def loop=(v)
if @loop != v
@loop = v
API_SETLOOP.call [MENTION=38955]val[/MENTION]ue, v)
end
end
def msg_to_flash(msg, wParam, lParam)
return API_SENDMSG.call [MENTION=38955]val[/MENTION]ue, 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(512, 384)
fondo.bitmap.fill_rect(0, 0, 512, 384, Color.new(0,0,0,255))
fls = RMFlash.load(filename, 512, 384)
fls.loop = 1
fls.z = 999999
@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
Luego debemos pegar el otro script arriba de Main, bajo el nombre de "Intro2" si pusiste "Intro1" al otro o "Video2" si al otro le pusistes "Video1"
Y aquí este sin los fallos del foro:
Video 2
Y aquí este sin los fallos del foro:
Video 2
Código:
#===============================================================================
#
# * Scene_IntroFlash by Dahrkael using �眼的�娜 Flash Player
# Adapted to Pokemon Essentials by Peaverin v1.0
# Requires the .dll and .ocx
#===============================================================================
class Scene_IntroFlash
def initialize
# Set the file which will be played
@file = "intro.swf"
# Choose if the player can skip the intro (0 => false, 1 => true)
@button = 1
end
def main
# Black background
@fondo = Sprite.new
@fondo.bitmap = Bitmap.new(512, 384)
@fondo.bitmap.fill_rect(0, 0, 512, 384, Color.new(0,0,0,255))
@fondo.z = -1
# Set flash video
fls = RMFlash.load(@file, 512, 384)
fls.loop = 1
fls.z = 999999
# Save frame rate
@fr = Graphics.frame_rate
# Set new frame rate
Graphics.frame_rate = 40
# Main loop
Graphics.transition
while true
Graphics.update
#Input.update
fls.update
# Skip the video using Enter
break if @button == 1 and Keyb.trigger($keys["Enter"])
# Skip when finished
break if !fls.playing?
end
$scene = pbCallTitle
Graphics.freeze
# Little solution for frozen images
fls.z = -2
fls.dispose
# Set old frame rate
Graphics.frame_rate = @fr
end
end
Y luego deberás buscar, cerca de la línea 35, algo como ésto:
y reemplazarlo con esto:
Código:
$scene = pbCallTitle
Código:
$scene = Scene_IntroFlash.new
Ya con todo esto, cuando queramos poner nuestra intro, debemos pegar el archivo ".swf" en la carpeta que creamos antes, "Flash". Y si quieres llamar al Script y poner un "video" wow si que uso muchas comillas en el juego, deberás poner el siguiente evento:
Código:
$flash.play("file.swf", button)
También cabe remarcar que hay una parte del primer script que dice "#{CUR_PATH}/Graphics/Flash/#{name}"
y hay que reemplazar el "#{name}" por el nombre del archivo swf.
Espero les haya servido y si es así, dame un +Gracias.
¡Alola!
Última edición: