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

Project1

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

柳柳的VX动画数据库 -> XP 动画数据库用法

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2007-7-18
帖子
71
跳转到指定楼层
1
发表于 2009-1-17 04:55:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
http://rpg.blue/viewthread.php?t ... 1%2D16+20%3A53%3A57

我把段落1插入了VX里,但是沒有反應~~~
求高人指點~
此贴于 2009-1-30 9:57:32 被版主木葬枫提醒,请楼主看到后对本贴做出回应。
版务信息:版主帮忙结贴~

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

2
发表于 2009-1-17 04:58:20 | 只看该作者
1、在VX完整版中执行脚本段落1,这个过程很慢,大约10多分钟,并且这个过程中必须让窗口焦点保持在运行窗口上,建议吃饭前执行(生成图片速度很慢)。
这个我执行成功过。
就是在main前插入,而且必须要保证好使用RTP或者已经整合好了RTP [LINE]1,#dddddd[/LINE]系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2007-7-18
帖子
71
3
 楼主| 发表于 2009-1-17 05:03:37 | 只看该作者
我試過了....沒有反應,還是正常遊戲

我的段落一是:

  1. # 将bitmap对象输出成bmp文件 By MOMOMO
  2. # 翻译:bbschat 来自:www.66rpg.com
  3. # 将Bitmap对象
  4. # 转换成位图文件(24bit)输出。
  5. #
  6. # Bmp_File.make_bmp_file(bitmap, name[, path])
  7. # bitmap:Bitmap对象
  8. # name:保存文件名
  9. # path:保存路径
  10. #
  11. # 或者,对Bitmap对象直接使用
  12. # bitmap_obj.make_bmp_file(name[, path])
  13. # 也可以达成同样的机能。


  14. module Bmp_File
  15. module_function
  16. # 生成BMP文件
  17. def make_bmp_file(bitmap, name, path="")
  18.   file_header = make_bmp_file_header(bitmap)
  19.   info_header = make_bmp_info_header(bitmap)
  20.   bitmap_data = make_bitmap_data(bitmap)
  21.   make_dir(path) if path != ""
  22.   file = File.open(path + name + ".bmp", "wb")
  23.   file.write(file_header)
  24.   file.write(info_header)
  25.   file.write(bitmap_data)
  26.   file.close
  27. end
  28. # 生成保存路径
  29. def make_dir(path)
  30.   dir = path.split("/")
  31.   for i in 0...dir.size
  32.     unless dir == "."
  33.       add_dir = dir[0..i].join("/")
  34.       begin
  35.         Dir.mkdir(add_dir)
  36.       rescue
  37.       end
  38.     end
  39.   end
  40. end
  41. # 从Bitmap对象中生成文件头
  42. def make_bmp_file_header(bitmap)
  43.   bf_type = ["BM"].pack("a2")
  44.   bf_size = [get_bf_size(bitmap)].pack("L")
  45.   bf_Reserved1 = [0].pack("S")
  46.   bf_Reserved2 = [0].pack("S")
  47.   bf_OffBits = [54].pack("L")
  48.   
  49.   file_header = bf_type + bf_size + bf_Reserved1 + bf_Reserved2 + bf_OffBits
  50.   return file_header
  51. end
  52. # 从Bitmap对象中生成情报头
  53. def make_bmp_info_header(bitmap)
  54.   bi_size = [40].pack("L")
  55.   bi_width = [get_bi_width(bitmap)].pack("L")
  56.   bi_height = [get_bi_height(bitmap)].pack("L")
  57.   bi_planes = [1].pack("S")
  58.   bi_bitcount = [24].pack("S")
  59.   bi_copmression = [0].pack("L")
  60.   bi_sizeimage = [0].pack("L")
  61.   bi_x_pixpermeter = [0].pack("L")
  62.   bi_y_pixpermeter = [0].pack("L")
  63.   bi_clrused = [0].pack("L")
  64.   bi_cirimportant = [0].pack("L")
  65.   
  66.   info_header = bi_size + bi_width + bi_height + bi_planes + bi_bitcount +
  67.                 bi_copmression + bi_sizeimage + bi_x_pixpermeter +
  68.                 bi_y_pixpermeter + bi_clrused + bi_cirimportant
  69.   
  70.   return info_header
  71. end
  72. # 从Bitmap对象中生成图像数据
  73. def make_bitmap_data(bitmap)
  74.   w = bitmap.width
  75.   h = bitmap.height
  76.   w = (w / 4 + 1) * 4 if w % 4 != 0
  77.   data = []
  78.   for y in 0...h
  79.     for x in 0...w
  80.       color = bitmap.get_pixel(x, (h - 1) - y)
  81.       data.push(color.blue)
  82.       data.push(color.green)
  83.       data.push(color.red)
  84.     end
  85.   end
  86.   return data.pack("C*")
  87. end
  88. def get_bf_size(bitmap)
  89.   w = bitmap.width
  90.   w = (w / 4 + 1) * 4 if w % 4 != 0
  91.   h = bitmap.height
  92.   return w * h * 3
  93. end
  94. def get_bi_width(bitmap)
  95.   return bitmap.width
  96. end
  97. def get_bi_height(bitmap)
  98.   return bitmap.height
  99. end
  100. end
  101. class Bitmap
  102. def make_bmp_file(name, path="")
  103.   Bmp_File.make_bmp_file(self, name, path)
  104. end
  105. end
  106. #==============================================================================
  107. #               本脚本出自www.66rpg.com,转载请注明。
  108. #==============================================================================
  109. =begin
  110. ==============================================================================
  111.                         Bitmap to PNG By 轮回者
  112. ==============================================================================

  113. 对Bitmap对象直接使用

  114. bitmap_obj.make_png(name[, path])

  115. name:保存文件名
  116. path:保存路径

  117. 感谢66、夏娜、金圭子的提醒和帮助!
  118.    
  119. ==============================================================================
  120. =end

  121. module Zlib
  122.   class Png_File < GzipWriter
  123.     #--------------------------------------------------------------------------
  124.     # ● 主处理
  125.     #--------------------------------------------------------------------------
  126.     def make_png(bitmap_Fx,mode)
  127.       @mode = mode
  128.       @bitmap_Fx = bitmap_Fx
  129.       self.write(make_header)
  130.       self.write(make_ihdr)
  131.       self.write(make_idat)
  132.       self.write(make_iend)
  133.     end
  134.     #--------------------------------------------------------------------------
  135.     # ● PNG文件头数据块
  136.     #--------------------------------------------------------------------------
  137.     def make_header
  138.       return [0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a].pack("C*")
  139.     end
  140.     #--------------------------------------------------------------------------
  141.     # ● PNG文件情报头数据块(IHDR)
  142.     #--------------------------------------------------------------------------
  143.     def make_ihdr
  144.       ih_size = [13].pack("N")
  145.       ih_sign = "IHDR"
  146.       ih_width = [@bitmap_Fx.width].pack("N")
  147.       ih_height = [@bitmap_Fx.height].pack("N")
  148.       ih_bit_depth = [8].pack("C")
  149.       ih_color_type = [6].pack("C")
  150.       ih_compression_method = [0].pack("C")
  151.       ih_filter_method = [0].pack("C")
  152.       ih_interlace_method = [0].pack("C")
  153.       string = ih_sign + ih_width + ih_height + ih_bit_depth + ih_color_type +
  154.                ih_compression_method + ih_filter_method + ih_interlace_method
  155.       ih_crc = [Zlib.crc32(string)].pack("N")
  156.       return ih_size + string + ih_crc
  157.     end
  158.     #--------------------------------------------------------------------------
  159.     # ● 生成图像数据(IDAT)
  160.     #--------------------------------------------------------------------------
  161.     def make_idat
  162.       header = "\x49\x44\x41\x54"
  163.       case @mode # 请54~
  164.       when 1
  165.         data = make_bitmap_data#1
  166.       else
  167.         data = make_bitmap_data
  168.       end
  169.       data = Zlib::Deflate.deflate(data, 8)
  170.       crc = [Zlib.crc32(header + data)].pack("N")
  171.       size = [data.length].pack("N")
  172.       return size + header + data + crc
  173.     end
  174.     #--------------------------------------------------------------------------
  175.     # ● 从Bitmap对象中生成图像数据 mode 1(请54~)
  176.     #--------------------------------------------------------------------------
  177.     def make_bitmap_data1
  178.       w = @bitmap_Fx.width
  179.       h = @bitmap_Fx.height
  180.       data = []
  181.       for y in 0...h
  182.         data.push(0)
  183.         for x in 0...w
  184.           color = @bitmap_Fx.get_pixel(x, y)
  185.           red = color.red
  186.           green = color.green
  187.           blue = color.blue
  188.           alpha = color.alpha
  189.           data.push(red)
  190.           data.push(green)
  191.           data.push(blue)
  192.           data.push(alpha)
  193.         end
  194.       end
  195.       return data.pack("C*")
  196.     end
  197.     #--------------------------------------------------------------------------
  198.     # ● 从Bitmap对象中生成图像数据 mode 0
  199.     #--------------------------------------------------------------------------
  200.     def make_bitmap_data
  201.       gz = Zlib::GzipWriter.open('hoge.gz')
  202.       t_Fx = 0
  203.       w = @bitmap_Fx.width
  204.       h = @bitmap_Fx.height
  205.       data = []
  206.       for y in 0...h
  207.         data.push(0)
  208.         for x in 0...w
  209.           t_Fx += 1
  210.           if t_Fx % 10000 == 0
  211.             Graphics.update
  212.           end
  213.           if t_Fx % 100000 == 0
  214.             s = data.pack("C*")
  215.             gz.write(s)
  216.             data.clear
  217.             #GC.start
  218.           end
  219.           color = @bitmap_Fx.get_pixel(x, y)
  220.           red = color.red
  221.           green = color.green
  222.           blue = color.blue
  223.           alpha = color.alpha
  224.           data.push(red)
  225.           data.push(green)
  226.           data.push(blue)
  227.           data.push(alpha)
  228.         end
  229.       end
  230.       s = data.pack("C*")
  231.       gz.write(s)
  232.       gz.close   
  233.       data.clear
  234.       gz = Zlib::GzipReader.open('hoge.gz')
  235.       data = gz.read
  236.       gz.close
  237.       File.delete('hoge.gz')
  238.       return data
  239.     end
  240.     #--------------------------------------------------------------------------
  241.     # ● PNG文件尾数据块(IEND)
  242.     #--------------------------------------------------------------------------
  243.     def make_iend
  244.       ie_size = [0].pack("N")
  245.       ie_sign = "IEND"
  246.       ie_crc = [Zlib.crc32(ie_sign)].pack("N")
  247.       return ie_size + ie_sign + ie_crc
  248.     end
  249.   end
  250. end
  251. #==============================================================================
  252. # ■ Bitmap
  253. #------------------------------------------------------------------------------
  254. #  关联到Bitmap。
  255. #==============================================================================
  256. class Bitmap
  257.   #--------------------------------------------------------------------------
  258.   # ● 关联
  259.   #--------------------------------------------------------------------------
  260.   def make_png(name="like", path="",mode=0)
  261.     make_dir(path) if path != ""
  262.     Zlib::Png_File.open("temp.gz") {|gz|
  263.       gz.make_png(self,mode)
  264.     }
  265.     Zlib::GzipReader.open("temp.gz") {|gz|
  266.       $read = gz.read
  267.     }
  268.     f = File.open(path + name + ".png","wb")
  269.     f.write($read)
  270.     f.close
  271.     File.delete('temp.gz')
  272.     end
  273.   #--------------------------------------------------------------------------
  274.   # ● 生成保存路径
  275.   #--------------------------------------------------------------------------
  276.   def make_dir(path)
  277.     dir = path.split("/")
  278.     for i in 0...dir.size
  279.       unless dir == "."
  280.         add_dir = dir[0..i].join("/")
  281.         begin
  282.           Dir.mkdir(add_dir)
  283.         rescue
  284.         end
  285.       end
  286.     end
  287.   end
  288. end
  289. #==============================================================================
  290. #               本脚本出自www.66rpg.com,转载请注明。
  291. #==============================================================================
复制代码

因為沒有大號所以看不到,幫我看看這個是不是?
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3309
在线时间
3620 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

4
发表于 2009-1-17 05:05:55 | 只看该作者
我试过了,
有用的。
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

5
发表于 2009-1-17 05:09:23 | 只看该作者
脚本麻烦用 html 标签框住
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-10 02:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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