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

Project1

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

[已经过期] 哪位大大帮忙把XP的flash脚本转下VX的~

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1285
在线时间
348 小时
注册时间
2009-10-15
帖子
62
跳转到指定楼层
1
发表于 2010-10-22 12:40:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 guoyang198 于 2010-10-22 12:41 编辑

在网上收集了很久,只找到了XP的脚本,VX用不了,哪位大大会转帮忙转一下,谢谢
  1. #==============================================================================#
  2. #                                                                 Version 0.3  #
  3. #                         RPG Maker XP Flash Player                            #
  4. #                                                                              #
  5. #  Author: 灼眼的夏娜                     Updated by: Dark_Wolf_Warrior/Dahrkael #
  6. #                                                                              #
  7. #  How to Use:                                                                 #
  8. #                                      Graphics.freeze                         #
  9. #  1. Go to Main Script and add ---->  $flash = Play.new                       #
  10. #                                      $scene = Scene_Title.new                #
  11. #                                                                              #
  12. #  2. Copy the .dll and the .ocx to the game folder                            #
  13. #                                                                              #
  14. #  3. Make a folder called "Flash" in the folder "Graphics" -> Graphics/Flash/ #
  15. #                                                                              #
  16. #  4. To play a flash file use:                                                #
  17. #    $flash.play("file.swf", button)                                           #
  18. #                                                                              #
  19. #    button can be 0 or 1, if 1 you can skip the flash using "Enter"           #
  20. #                                                                              #
  21. #                                                                              #
  22. #                                                                              #
  23. #  Interactive flashes requires RGSS knownledge to make they work              #
  24. #                                                                              #
  25. #  Original Keyb module by HoundNinja                                          #
  26. #                                                                              #
  27. #==============================================================================#



  28. class String
  29.   
  30.   CP_ACP = 0
  31.   CP_UTF8 = 65001
  32.   
  33.   def u2s
  34.     m2w = Win32API.new("kernel32", "MultiByteToWideChar", "ilpipi", "i")
  35.     w2m = Win32API.new("kernel32", "WideCharToMultiByte", "ilpipipp", "i")
  36.    
  37.     len = m2w.call(CP_UTF8, 0, self, -1, nil, 0)
  38.     buf = "\0" * (len*2)
  39.     m2w.call(CP_UTF8, 0, self, -1, buf, buf.size/2)
  40.    
  41.     len = w2m.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil)
  42.     ret = "\0" * len
  43.     w2m.call(CP_ACP, 0, buf, -1, ret, ret.size, nil, nil)
  44.    
  45.     return ret
  46.   end
  47.   
  48.   def s2u
  49.     m2w = Win32API.new("kernel32", "MultiByteToWideChar", "ilpipi", "i")
  50.     w2m = Win32API.new("kernel32", "WideCharToMultiByte", "ilpipipp", "i")
  51.   
  52.     len = m2w.call(CP_ACP, 0, self, -1, nil, 0);
  53.     buf = "\0" * (len*2)
  54.     m2w.call(CP_ACP, 0, self, -1, buf, buf.size/2);
  55.   
  56.     len = w2m.call(CP_UTF8, 0, buf, -1, nil, 0, nil, nil);
  57.     ret = "\0" * len
  58.     w2m.call(CP_UTF8, 0, buf, -1, ret, ret.size, nil, nil);
  59.      
  60.     return ret
  61.   end

  62.   def s2u!
  63.     self[0, length] = s2u
  64.   end  
  65.   
  66.   def u2s!
  67.     self[0, length] = u2s
  68.   end
  69.   
  70. end

  71. class Bitmap
  72.   
  73.   RtlMoveMemory_pi = Win32API.new('kernel32', 'RtlMoveMemory', 'pii', 'i')
  74.   RtlMoveMemory_ip = Win32API.new('kernel32', 'RtlMoveMemory', 'ipi', 'i')

  75.   def address
  76.     buffer, ad = "xxxx", object_id * 2 + 16
  77.     RtlMoveMemory_pi.call(buffer, ad, 4); ad = buffer.unpack("L")[0] + 8
  78.     RtlMoveMemory_pi.call(buffer, ad, 4); ad = buffer.unpack("L")[0] + 16
  79.     RtlMoveMemory_pi.call(buffer, ad, 4); return buffer.unpack("L")[0]
  80.   end
  81.   
  82. end

  83. class RMFlash

  84.         API_NEW                      = Win32API.new("RMFlash", "_new", "piil", "l")
  85.         API_UPDATE            = Win32API.new("RMFlash", "_update", "l", "v")
  86.         API_FREE              = Win32API.new("RMFlash", "_free", "l", "v")
  87.         API_PLAYING     = Win32API.new("RMFlash", "_is_playing", "l", "i")
  88.         API_PAUSE              = Win32API.new("RMFlash", "_pause", "l", "v")
  89.         API_RESUME            = Win32API.new("RMFlash", "_resume", "l", "v")
  90.         API_BACK              = Win32API.new("RMFlash", "_back", "l", "v")
  91.         API_REWIND            = Win32API.new("RMFlash", "_rewind", "l", "v")
  92.         API_FORWARD            = Win32API.new("RMFlash", "_forward", "l", "v")
  93.         API_CURFRAME          = Win32API.new("RMFlash", "_cur_frame", "l", "i")
  94.         API_TOTALFRAME        = Win32API.new("RMFlash", "_total_frames", "l", "i")
  95.         API_GOTOFRAME          = Win32API.new("RMFlash", "_goto_frame", "li", "v")
  96.         API_GETLOOP                  = Win32API.new("RMFlash", "_get_loop", "l", "i")
  97.         API_SETLOOP                  = Win32API.new("RMFlash", "_set_loop", "li", "v")
  98.         API_CLEARALL          = Win32API.new("RMFlash", "_clear_all", "v", "v")
  99.   API_VALID       = Win32API.new("RMFlash", "_valid", "l", "i")
  100.   API_SENDMSG     = Win32API.new("RMFlash", "_send_message", "liii", "l")
  101.        
  102.   CUR_PATH        = Dir.pwd
  103.   
  104.         def self.get_version

  105.         end

  106.         def self.clear_all
  107.                 API_CLEARALL.call
  108.         end
  109.   
  110.   def self.load(name, width, height, v = nil)
  111.     new("#{CUR_PATH}/Graphics/Flash/#{name}".u2s, width, height, v)
  112.   end
  113.   
  114.   attr_reader   :valid

  115.         def initialize(flash_name, flash_width, flash_height, viewport = nil)
  116.                 @sprite = Sprite.new(viewport)
  117.                 @sprite.bitmap = Bitmap.new(flash_width, flash_height)
  118.                 @value = API_NEW.call(flash_name, flash_width, flash_height, @sprite.bitmap.address)
  119.                 @loop = API_GETLOOP.call(@value) > 0
  120.     @valid = API_VALID.call(@value) > 0
  121.         end

  122.         def viewport
  123.                 @sprite.viewport
  124.         end

  125.         def update
  126.                 API_UPDATE.call(@value)
  127.         end

  128.         def dispose
  129.                 API_FREE.call(@sprite.bitmap.address)
  130.         end

  131.         def playing?
  132.                 API_PLAYING.call(@value) > 0
  133.         end

  134.         def pause
  135.                 API_PAUSE.call(@value)
  136.         end

  137.         def resume
  138.                 API_RESUME.call(@value)
  139.         end

  140.         def back
  141.                 API_BACK.call(@value)
  142.         end

  143.         def rewind
  144.                 API_REWIND.call(@value)
  145.         end

  146.         def forward
  147.                 API_FORWARD.call(@value)
  148.         end

  149.         def current_frame
  150.                 API_CURFRAME.call(@value)
  151.         end

  152.         def total_frames
  153.                 API_TOTALFRAME.call(@value)
  154.         end

  155.         def goto_frame(goal_frame)
  156.                 API_GOTOFRAME.call(@value, goal_frame)
  157.         end

  158.         def x
  159.                 @sprite.x
  160.         end

  161.         def x=(v)
  162.                 @sprite.x = v
  163.         end

  164.         def y
  165.                 @sprite.y
  166.         end

  167.         def y=(v)
  168.                 @sprite.y = v
  169.         end

  170.         def z
  171.                 @sprite.z
  172.         end

  173.         def z=(v)
  174.                 @sprite.z = v
  175.         end

  176.         def width
  177.                 @sprite.bitmap.width
  178.         end

  179.         def height
  180.                 @sprite.bitmap.height
  181.         end

  182.         def loop?
  183.                 @loop
  184.         end

  185.         def loop=(v)
  186.                 if @loop != v
  187.                         @loop = v
  188.                         API_SETLOOP.call(@value, v)
  189.                 end
  190.         end
  191.   
  192.   def msg_to_flash(msg, wParam, lParam)
  193.     return API_SENDMSG.call(@value, msg, wParam, lParam)
  194.   end
  195.   
  196.   #  例
  197.   WM_MOUSEMOVE  = 0x0200
  198.   
  199.   def make_long(a, b)
  200.     return (a & 0xffff ) | (b & 0xffff) << 16
  201.   end
  202.   
  203.   def on_mouse_move(x, y)
  204.     return msg_to_flash(WM_MOUSEMOVE, 0, make_long(x, y))
  205.   end

  206. end

  207. module Kernel

  208.   alias origin_exit exit unless method_defined? :exit
  209.   
  210.   def exit(*args)
  211.     RMFlash.clear_all
  212.     origin_exit(*args)
  213.   end
  214.   
  215. end

  216. module Keyb
  217.   $keys = {}
  218.   $keys["Enter"] = 0x0D
  219.   GetKeyState = Win32API.new("user32","GetAsyncKeyState",['i'],'i')
  220.   module_function
  221.   def trigger(rkey)
  222.     GetKeyState.call(rkey) & 0x01 == 1
  223.   end
  224. end

  225. class Play
  226.   
  227.   def play(filename, button)
  228.     fondo = Sprite.new
  229.     fondo.bitmap = Bitmap.new(640, 480)
  230.     fondo.bitmap.fill_rect(0, 0, 640, 480, Color.new(0,0,0,255))
  231.     fls = RMFlash.load(filename, 640, 480)
  232.     fls.loop = 1
  233.     fls.z = 9999
  234.     @button = button
  235.     @fr = Graphics.frame_rate
  236.     Graphics.frame_rate = 40

  237.     while true
  238.       Graphics.update
  239.       #Input.update
  240.       fls.update
  241.       break if @button == 1 and Keyb.trigger($keys["Enter"])
  242.       break if !fls.playing?
  243.       end
  244.     fls.dispose
  245.     Graphics.frame_rate = @fr
  246.     fondo.dispose
  247.   end
  248. end
复制代码

Lv1.梦旅人

梦石
0
星屑
50
在线时间
115 小时
注册时间
2010-5-3
帖子
346
2
发表于 2010-10-23 19:03:06 | 只看该作者
的确,相对xp来说,vx功能是太少了,不过话说研究vx的人数远远比xp的少,这个恐怕很难出现了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 05:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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