赞 | 0 |
VIP | 0 |
好人卡 | 1 |
积分 | 13 |
经验 | 6521 |
最后登录 | 2024-4-29 |
在线时间 | 348 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1285
- 在线时间
- 348 小时
- 注册时间
- 2009-10-15
- 帖子
- 62
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 guoyang198 于 2010-10-22 12:41 编辑
在网上收集了很久,只找到了XP的脚本,VX用不了,哪位大大会转帮忙转一下,谢谢- #==============================================================================#
- # 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
复制代码 |
|