RPG Maker VX问题

RPGMakerVX怎么在开始游戏加入一段自己已经制作好的动画,我已经用Flash做好了一段动画,但是不知道怎么加入。... RPG Maker VX怎么在开始游戏加入一段自己已经制作好的动画,我已经用Flash做好了一段动画,但是不知道怎么加入。 展开
 我来答
ML4455739
2014-08-26 · TA获得超过2736个赞
知道大有可为答主
回答量:1783
采纳率:72%
帮助的人:1209万
展开全部

=.= 我认认真真的看完了楼上的一大段话,真的不忍心回答楼主的问题了

是swf格式的动画是吗,需要一个RMFlash脚本让RMVX支持flash播放


脚本:

#=======================================================

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

#=======================================================


然后这个脚本需要两个文件的支持,已上传附件,附件中也包含这个脚本的txt文档。

在需要调用flash播放的地方执行下面这段脚本就可以播放了

fls = RMFlash.load("T.swf",320,240)
fls.x = 1
fls.y = 1
fls.loop = 1
while true
Graphics.update
fls.update
break if !fls.playing?
end
fls.dispose

其中的320和240是尺寸,可以调整,T.swf是文件名

如果是在开始游戏之后(标题画面之后)执行的,就还要执行

$scene = Scene_Map.new

这一行让地图刷新一下


关于脚本的使用方法,楼主如有疑问可以追问。

二等农民7723
2014-08-26 · TA获得超过247个赞
知道答主
回答量:106
采纳率:0%
帮助的人:127万
展开全部
这个不难,关键是你得有游戏素材才行,你得想法是要改成横板战斗,在rpg maker 里面的脚本来定义的,具体的我还真忘记了,不过你既然知道RPG maker 和黑暗圣剑传说,那么你也知道66rpg网站了,柳柳的新手教学里面不是有介绍么,如果不想去网站照,估计你是有黑暗圣剑传说的游戏吧,用RPG maker编辑他,找到那个脚本,你更改横板战斗也是有很多问题的,比如说你的战斗物品栏和人物覆盖的问题,都需要调试,具体的你为什么不去66rpg呢,横板战斗到处都是,素材哪里也有,关键是你想自己做得话,你还得懂得Photoshop ,美工很难的……改成横板战斗,一个是层的覆盖问题,一个是打击动画的问题,如果这两个方面不能做到,那么你改成横板,效果也没什么了……
我所知道的就这些了,因为我也是RPG MAKER 的新手,这几天学校查的紧,我试验不了……郁闷,要不然我就绝对能搞定!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式