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

Project1

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

[已经解决] 腳本錯誤 HL燈光的bitmap與某腳本錯誤

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2111
在线时间
950 小时
注册时间
2015-7-16
帖子
767

开拓者

跳转到指定楼层
1
发表于 2016-2-15 15:58:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如題

RUBY 代码复制
  1. module TKTK_Bitmap
  2.   LARGE_BITMAP = true # 是否使用大型點陣圖的功能
  3.   DLL_NAME = 'tktk_bitmap'
  4.  
  5.   ERROR_ALLOCATE_FAILED = -110002
  6.  
  7.   @@png_save = Win32API.new(DLL_NAME, 'PngSaveA', 'p n i i', 'i')
  8.   @@blur = Win32API.new(DLL_NAME, 'Blur', 'n i', 'i')
  9.   @@change_tone = Win32API.new(DLL_NAME, 'ChangeTone', 'n i i i i', 'i')
  10.   @@clip_mask = Win32API.new(DLL_NAME, 'ClipMask', 'n n i i i', 'i')
  11.   @@invert = Win32API.new(DLL_NAME, 'InvertColor', 'n', 'i')
  12.   @@mosaic = Win32API.new(DLL_NAME, 'Mosaic', 'n i i i i i i', 'i')
  13.   @@address = Win32API.new(DLL_NAME, 'GetAddress', 'n', 'n')
  14.   @@get_pixel_data = Win32API.new(DLL_NAME, 'GetPixelData', 'n p i', 'i')
  15.   @@set_pixel_data = Win32API.new(DLL_NAME, 'SetPixelData', 'n p i', 'i')
  16.   @@blend_blt = Win32API.new(DLL_NAME, 'BlendBlt', 'n i i n i i i i i i', 'i')
  17.   #@@get_hwnd = Win32API.new(DLL_NAME, 'GetGameHWND', 'v', 'l')
  18.   @@change_size = Win32API.new(DLL_NAME, 'ChangeSize', 'n i i', 'i')
  19.   module_function
  20.  
  21.   # PNG形式儲存
  22.   def png_save(bitmap,file_name,compression_level,filter)
  23.     return @@png_save.call(file_name, bitmap.object_id, compression_level, filter)
  24.   end
  25.  
  26.   # 模糊效果
  27.   def blur(bitmap, r = 1)
  28.     return @@blur.call(bitmap.object_id, r)
  29.   end
  30.  
  31.   # 更改顏色平衡?
  32.   def change_tone(bitmap, red = 0, green = 0, blue = 0, simplify = 1)
  33.     return @@change_tone.call(bitmap.object_id, red, green, blue, simplify)
  34.   end
  35. # 剪貼蒙版圖像(α乘法)
  36.   def clip_mask(g_bitmap, m_bitmap, x=0, y=0, outer=0)
  37.     return @@clip_mask.call(g_bitmap.object_id, m_bitmap.object_id, x, y, outer)
  38.   end
  39.  
  40.   # 色的反轉
  41.   def invert(bitmap)
  42.     return @@invert.call(bitmap.object_id)
  43.   end
  44.  
  45.   # 馬賽克效果
  46.   def mosaic(bitmap, msw=5, msh=5)
  47.     return self.mosaic_rect(bitmap, bitmap.rect, msw, msh)
  48.   end
  49.  
  50.   # 馬賽克效果(範圍指定)
  51.   def mosaic_rect(bitmap, rect, msw=5, msh=5)
  52.     return @@mosaic.call(bitmap.object_id,
  53.     rect.x, rect.y, rect.width, rect.height, msw, msh)
  54.   end
  55.  
  56.   # 獲取Bitmap資料位址
  57.   def address(bitmap)
  58.     return @@address.call(bitmap.object_id)
  59.   end
  60.  
  61.   # 二進位資料獲取點Bitmap陣圖
  62.   def get_pixel_data(bitmap)
  63.     buffer = "bgra" * bitmap.width * bitmap.height
  64.     @@get_pixel_data.call(bitmap.object_id, buffer, buffer.size)
  65.     return buffer
  66.   end
  67.  
  68.   #替換為Bitmap中的二進位資料
  69.   def set_pixel_data(bitmap, data)
  70.     return @@set_pixel_data.call(bitmap.object_id, data, data.size)
  71.   end
  72.  
  73.   def blend_blt(dest_bmp, x, y, src_bmp, rect, blend_type=0, opacity=255)
  74.     @@blend_blt.call(dest_bmp.object_id, x, y, src_bmp.object_id,
  75.                 rect.x, rect.y, rect.width, rect.height,
  76.                 blend_type, opacity)
  77.   end
  78.  
  79.   # 改變Bitmap的大小(風險)
  80.   def change_size(bitmap, new_width, new_height)
  81.     return -1 if (new_width <=0 or new_height <= 0)
  82.     result = @@change_size.call(bitmap.object_id, new_width, new_height)
  83.     if result == ERROR_ALLOCATE_FAILED
  84.       raise("tktk_bitmap:ERROR ALLOCATE FAILED")
  85.     end
  86.     return result
  87.   end
  88.  
  89. end
  90.  
  91. class Font
  92.   def marshal_dump;end
  93.   def marshal_load(obj);end
  94. end
  95. class Bitmap
  96.   # PNG 壓縮篩檢程式
  97.   PNG_NO_FILTERS   = 0x00
  98.   PNG_FILTER_NONE  = 0x08
  99.   PNG_FILTER_SUB   = 0x10
  100.   PNG_FILTER_UP    = 0x20
  101.   PNG_FILTER_AVG   = 0x40
  102.   PNG_FILTER_PAETH = 0x80
  103.   PNG_ALL_FILTERS  = (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP |
  104.                       PNG_FILTER_AVG | PNG_FILTER_PAETH)
  105.  
  106.   # Marshal_dump
  107.   def _dump(limit)
  108.     return "" if self.disposed?
  109.     data = TKTK_Bitmap.get_pixel_data(self)
  110.     [width, height, Zlib::Deflate.deflate(data)].pack("LLa*") # ついでに圧縮
  111.   end
  112.  
  113.   # Marshal_load
  114.   def self._load(str)
  115.     if str == ""
  116.       b = Bitmap.new(1,1)
  117.       b.dispose
  118.       return b
  119.     end
  120.     w, h, zdata = str.unpack("LLa*"); b = new(w, h)
  121.     TKTK_Bitmap.set_pixel_data(b, Zlib::Inflate.inflate(zdata))
  122.     return b
  123.   end  
  124.  
  125.   def address
  126.     TKTK_Bitmap.address(self)
  127.   end
  128.  
  129.   #         模糊效果
  130.   def blur2(r=1)
  131.     TKTK_Bitmap.blur(self, r)
  132.   end
  133.  
  134.   # 色調變化
  135.   def change_tone(red, green, blue, simplify = 1)
  136.     TKTK_Bitmap.change_tone(self, red, green, blue, simplify)
  137.   end
  138.  
  139.   # 剪切
  140.   def clip_mask(bitmap, x=0, y=0, outer=0)
  141.     TKTK_Bitmap.clip_mask(self, bitmap, x, y, outer)
  142.   end
  143.  
  144.   # 反相顏色
  145.   def invert
  146.     TKTK_Bitmap.invert(self)
  147.   end
  148.  
  149.   # 馬賽克效果
  150.   def mosaic(msw=5, msh=5)
  151.     TKTK_Bitmap.mosaic(self, msw, msh)
  152.   end
  153.  
  154.   # 馬賽克效果 (指定區域)
  155.   def mosaic_rect(rect=self.rect, msw=5, msh=5)
  156.     TKTK_Bitmap.mosaic_rect(self, rect, msw, msh)
  157.   end
  158.  
  159.   # 混合
  160.   def blend_blt(x, y, src_bmp, rect, blend_type=0, opacity=255)
  161.     return if opacity <= 0
  162.     TKTK_Bitmap.blend_blt(self, x, y, src_bmp, rect, blend_type, opacity)
  163.   end
  164.  
  165.   #Png 格式保存
  166.   def png_save(outp, level = 9, filter = PNG_NO_FILTERS)
  167.     if (TKTK_Bitmap.png_save(self, outp, level, filter) != 0)
  168.       raise("Bitmap\#png_save failed")
  169.     end
  170.   end
  171.  
  172.   # 允許更大的 bitmap.new (危険)
  173.   # 寬度 * 高度大約是1073741823
  174.   if TKTK_Bitmap::LARGE_BITMAP
  175.     class << self
  176.       unless method_defined?(:_hn_large_bm__new)
  177.         alias :_hn_large_bm__new :new
  178.       end
  179.       def new(*args)
  180.         if args.size == 2 && args[0] * args[1] >= 4194304
  181.           new_width = args[0]
  182.           new_height = args[1]
  183.           # 暫時以小尺寸作成
  184.           bitmap = _hn_large_bm__new(16, 16)
  185.           TKTK_Bitmap.change_size(bitmap, new_width, new_height)
  186.           return bitmap
  187.         else
  188.           _hn_large_bm__new(*args)
  189.         end
  190.       end
  191.     end # Bitmap.new
  192.   end
  193. end # CLASS Bitmap
Scripts.rar (150.76 KB, 下载次数: 41)
[神性领域扩张:扩张神性领域]
说了等于没说.

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

2
发表于 2016-2-15 19:41:21 | 只看该作者
如果说的HL灯光是半生的那个,
那,把附件里面唯一的添加的脚本放到半生的那个工程里面,不管放在之上还是之下都没发生问题,
能把再现冲突的工程传上来?

点评

我試試看,因為我再現工程都錯誤的樣子  发表于 2016-2-15 21:22
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2111
在线时间
950 小时
注册时间
2015-7-16
帖子
767

开拓者

3
 楼主| 发表于 2016-2-15 21:33:44 | 只看该作者
cinderelmini 发表于 2016-2-15 19:41
如果说的HL灯光是半生的那个,
那,把附件里面唯一的添加的脚本放到半生的那个工程里面,不管放在之上还是 ...

你新增一個事件
內容是
註釋:<sreel 2 あいしてる\I[122]>
這個是原腳本的功能
[神性领域扩张:扩张神性领域]
说了等于没说.
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

4
发表于 2016-2-15 22:07:18 | 只看该作者
把半生的那个Bitmap扩展开头的【LARGE_BITMAP = true】的值改成false能解决。

点评

成功了!  发表于 2016-2-15 22:32

评分

参与人数 2星屑 +15 梦石 +1 收起 理由
taroxd + 1 认可答案
duzine + 15 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 07:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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