设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2452|回复: 1
打印 上一主题 下一主题

[已经解决] 话说现在谁还有RM视频播放器么- -

[复制链接]

Lv1.梦旅人

CODE GEASS

梦石
0
星屑
50
在线时间
619 小时
注册时间
2010-8-16
帖子
534
跳转到指定楼层
1
 楼主| 发表于 2013-1-25 19:51:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 魔之哆啦 于 2013-1-25 19:56 编辑

{:2_271:} 原帖子的下载失效了啊喂...有没有人留着的..给我个范例。



↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑我发错了- -我该发VX区的...↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
求转移....................
江南何日?引人残,卷西风岁月,迷人倦。

Lv4.逐梦者

梦石
0
星屑
5753
在线时间
1170 小时
注册时间
2011-12-18
帖子
1291
2
发表于 2013-1-25 22:37:45 | 只看该作者
本帖最后由 sdgn 于 2013-2-3 13:44 编辑

測試過 xp/vx 皆可行` 有對來源做稍微的變動

先放這個檔案到遊戲位置
http://www.mediafire.com/download.php?8cwdn15dax6e9bu
下载: RMFlashV0.3.rar
(當然是解壓出來)
腳本編輯器插入新腳本
名稱打 RMFlash (不確定是不是必要)
在右邊內容貼下面的資料
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}/#{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
#fls = RMFlash.load("2.swf", 640, 480)
#while true
# Graphics.update
# Input.update
# fls.update
# break if Input.trigger?(13)
#end
#fls.dispose
#exit
=begin
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")
#def self.new(*args)
# obj = super(*args)
# obj.send :initialize, *args
# obj
#end
def initialize(flashname, fw, fh)
end
end
RMFlash.new
exit
=end


new("#{CUR_PATH}/#{name}".u2s, width, height, v)

#{CUR_PATH}/  

#{name}
之間插入一個路徑
可以改變放影片檔的地方
例如
new("#{CUR_PATH}/move/#{name}".u2s, width, height, v)
就是遊戲資料夾的move資料夾


使用方式是在遊戲中
於地圖上或是公用事件插入下面腳本

ls = RMFlash.load("AvB_2.swf",640,480)
fls.x = 0
fls.y = 0
fls.loop = 1
while true
Graphics.update
Input.update
fls.update
break if !fls.playing?
break if Input.trigger?(Input::A)
end
fls.dispose

而 (Input::A) 是說按下 A鍵 取消播放
可依照設計者的狀況做更改

AvB_2.swf 是影片檔名` 可改成自己要用的
但是副檔名一律要是swf
640,480 是解析度(顯示的大小)
fls.x = 0   fls.y = 0   是顯示時候的x軸y軸起點
如果要讓遊戲開頭放op
在腳本編輯器的main裡面加入這個腳本 或是 新建一個腳本
這個腳本只使用swf檔
可用格式工廠進行轉檔


另外就是測試發現 xp/vx 影片完畢或是按下取消後要幾秒才會離開~
所以要用以下方法馬上終止這個事件(看邏輯好像是說用新的指令取代)
在使用了這個播放的呼叫腳本的地圖事件中` 腳本前面插入紀錄主角目前地圖位置
方法是: 定義三個變量 分別帶入 地圖編號/主角x座標/主角y座標
然後在腳本後面(下面) 使用 玩家的移動(遷移)
要用變數指定位置` 分別套用上面所帶入的  地圖編號/主角x座標/主角y座標

其它自由設定`

並且看是要在公用事件或是地圖中不影響遊戲的地方建立新事件`
先設定並行處理~ 用條件分歧設定條件是取消影片事件的那個按鍵
然後觸發的是
定義三個變量 分別帶入 地圖編號/主角x座標/主角y座標
玩家的移動(遷移)
用變數指定位置` 分別套用上面所帶入的  地圖編號/主角x座標/主角y座標

其它自由設定`
這樣取消或是影片結束後就會比較快恢復畫面

來源: 66RPG
協助: 釣到一隻猴子

点评

進不去是因為要翻牆 我ˇ增加連結了~  发表于 2013-2-3 13:46
连接进不去哟...请自己进一下  发表于 2013-1-26 13:31

评分

参与人数 1梦石 +1 收起 理由
怪蜀黍 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-22 20:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表