魔劍工舖

關於部落格
RPG製作大師XP腳本為主要更新

RPG製作大師VX腳本為其次更新

RPG製作大師VX_Ace目前不考慮

RPG製作大師MV腳本完全沒打算

留言完建議重新整理看看是否顯示

目前不處理本舖外腳本的相關問題

其他相關事項請觀看規定注意事項

本舖未來的經營計畫與VA的支援




var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-37462754-1']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

  • 288039

    累積人氣

  • 1

    今日人氣

    0

    訂閱人氣

【腳本】位圖強化

範例圖片請進入本文章觀看
 更新次數:0次  腳本行數:135行  函數修改資料  XP VX 
☆模糊化:使圖像霧濛濛的看不清楚,有點像是近視(或其它視覺問題)之類的感覺吧
☆馬賽克:將圖形變更為一格一格的小格子來遮蔽圖形原本的樣貌
☆色彩替換:將位圖中指定的顏色全數替換成另一個顏色,也能變像讓背景透明...
☆色彩對換:將色彩反轉成類似相機底片的顏色,如同RM本身白色背景的合成減法
☆位圖混合:將其它的位圖與這個位圖進行混合,混合重疊到的顏色將取兩者顏色的中間色
☆深度變色:依據2種或3種的深度,將指定深度的所有顏色變更為指定的顏色
     
    
安裝方法
打開腳本編輯器,對腳本「Main」按下右鍵,選擇插入,會出現1個空白腳本
在空白腳本內貼上以下腳本:

點選框框內的腳本按右鍵打開選單,選擇 [全選] 後在選擇 [複製] ,在指定的位置中貼上腳本即可
    
   
設置腳本
模糊
位圖.blurred(強度)
位圖.blurred(矩形, 強度)
位圖.blurred(X座標, Y座標, 寬度, 高度, 強度)

插入型範例
devil[1].bitmap.blurred(1)
devil[1].bitmap.blurred(4)
devil[1].bitmap.blurred(8)
devil[1].bitmap.blurred(20)
將位圖圖形模糊化(目前效果還不佳(強度1連續重描...),VX的還是用內建的吧XD)
位圖:任何的Bitmap對象,可用『Bitmap.new(寬度, 高度)』或『Bitmap.new('圖片路徑')』定義
   Bitmap為RGSS的位圖類,功能就如同畫版一樣,只不過要顯示畫版需要精靈才形
   詳細的用法可以參考F1幫助說明腳本入門→基礎篇→顯示圖片 的說明
矩形:可用『Rect.new(X座標, Y座標, 寬度, 高度)』定義或是方是定義的Rect對象
   主要設定要被此函數處理的範圍設定,座標的起始點為該位圖的左上角為原點
X座標、Y座標、寬度、高度:
  和引數指定矩形的效果差不多,只是這裡可以指定nil採用這個數值的預設值
如果以上兩種引數沒有指定的話(或是被設定為nil的引數),則視同採用預設值
預設值通常X座標和Y座標為0,而寬度和高度等同於位圖本身的寬度和高度
也就是整個位圖都是處理範圍(或是特定某些引數指定nil就只有那個部分採用預設值而以)
強度:設定要模糊的強度,數值越大則越模糊,同時也會造成較多的延遲時間
   
馬賽克  
位圖.mosaic(強度)
位圖.mosaic(矩形, 強度)
位圖.mosaic(X座標, Y座標, 寬度, 高度, 強度)

插入型範例
devil[1].bitmap.mosaic(1)
devil[1].bitmap.mosaic(4)
devil[1].bitmap.mosaic(8)
devil[1].bitmap.mosaic(20)
將位圖圖形轉變為1格格單色的小格子的效果
強度:設定馬賽克的大小,設定4就表示4x4像素大小的馬賽克
   在模糊中強度越大會描繪越久,而馬賽克則是強度越大描繪越快喔~~(啥歪理?!)  
  
色彩替換
位圖.substitute(舊顏色, 新顏色)
位圖.substitute(矩形, 舊顏色, 新顏色)
位圖.substitute(X座標, Y座標, 寬度, 高度, 舊顏色, 新顏色)

插入型範例
devil[1].bitmap.substitute(Color.new(255, 255, 255, 0), Color.new(255, 128, 0))
devil[2].bitmap.substitute(Color.new(212, 180, 156), Color.new(255, 128, 192))
devil[3].bitmap.substitute(Color.new(201, 207, 214), Color.new(245, 159, 255))
devil[4].bitmap.substitute(Color.new(251, 220, 183), Color.new(214, 123, 12))
將指定的顏色變更為其它的顏色,不能有一點色差(含不透明度)
不然可能會判定不到指定的顏色可以替換,就如範例圖所視,此外......
這個描繪也可以達成讓背景變透明的處理是可行的(沒效率的方式,別嘗試)
舊顏色:可用『Color.new(, , )』或是『Color.new(,, , 不透明度)』來定義
    或是其它能夠代表或是返回Color對象的變數或函數都可以
    這裡主要是設定要被取代的顏色,顏色的三原色一定要和要改的顏色相符
    一但有一點點色差,不管是差1還是2或是只差不透明度,都會被判別是不同的顏色
    紅、綠、藍、不透明度:
      可設定0~255的數值,數值越高表示該顏色的含量越高
      不同的顏色能互相組合成多種其它的顏色
      未指定不透明度通常為255(完全顯示)
新顏色:一樣設定Color對象,在位圖中找到指定的設定的舊顏色時
    就將找到的那位圖顏色變更為此設定的新顏色
   
色彩對換
位圖.negative(透明標誌)
位圖.negative(矩形, 透明標誌)
位圖.negative(X座標, Y座標, 寬度, 高度, 透明標誌)

插入型範例
devil[1].bitmap.negative(false)
devil[2].bitmap.negative(true)
devil[3].bitmap.substitute(Color.new(255, 255, 255, 0), Color.new(0, 0, 0, 0))
devil[3].bitmap.negative(true)
devil[3].bitmap.font.color = Color.new(128, 128, 128) # 字改灰色
devil[4].bitmap.substitute(Color.new(255, 255, 255, 0), Color.new(0, 0, 0, 0))
devil[4].bitmap.substitute(Color.new(212, 180, 156), Color.new(212, 180, 156, 50))
devil[4].bitmap.negative(true)
devil[4].bitmap.font.color = Color.new(128, 128, 128)
# 字改灰色
將位圖中的顏色反向轉換有如相機底片顏色的感覺
原則上效果等同於RM內建合成方式的減法(不過必須和白色背景合成才會是本範例圖的樣式)
只不過這不是合成混色,所以此函數只是很單純性的純色彩反轉而以
透明標誌:是否也將透明色也給反轉,可設定真偽值false或是true
     false:不要,不反轉不透明度,並保留原來的不透明度
     true:要,用一般顏色的反轉方式對不透明度進行反轉處理
          也就是說原本完全透明的顏色將會變成完全顯示的顏色之類的
          不過由於預設素材中的背景色是白色,只是不透明度為0
          這照就了不透明度轉完255,但是顏色卻間接的轉為黑色
          最後得出來的顏色就如同範例中 [1-含透明] 阿爾西斯一樣全黑了!!
   
位圖混合  
位圖一.mingle(位圖二)
插入型範例
bitmap = Bitmap.new(devil[1].bitmap.width, devil[1].bitmap.height)
bitmap.fill_rect(0, 0, bitmap.width, bitmap.height, Color.new(255, 255, 255)) # 白底圖
devil[1].bitmap.mingle(bitmap)
bitmap = Bitmap.new(devil[1].bitmap.width, devil[1].bitmap.height)
bitmap.fill_rect(0, 0, bitmap.width, bitmap.height, Color.new(0, 0, 0)) # 黑底圖
devil[2].bitmap.mingle(bitmap)
bitmap = Bitmap.new(devil[1].bitmap.width, devil[1].bitmap.height)
bitmap.fill_rect(0, 0, bitmap.width, bitmap.height, Color.new(255, 255, 0)) # 黃底圖
devil[3].bitmap.mingle(bitmap)
bitmap = Bitmap.new('Graphics/Battlers/003-Fighter03') # 其它角色戰鬥圖
devil[4].bitmap.mingle(bitmap)
介紹到現在...難得出現了一個引數需求和其它的引數需求不一樣的函數阿= =+  
效果為將將另一個描繪好的位圖描繪到這個位圖上面
聽起來好像和內建的blt函數的效果差不多(只是參數少了點了??)
總之...和blt函數的差別在於,blt為直接性的重疊蓋下去
而這個函數算是將顏色給合成了吧...,合成的顏色會取兩個顏色之間的中間色來合成
  
深度變色 
位圖.depth(深度色, 淺度色)
位圖.depth(矩形, 深度色, 淺度色)
位圖.depth(X座標, Y座標, 寬度, 高度, 深度色, 淺度色)

位圖.depth(深度色, 中度色, 淺度色)
位圖.depth(矩形, 深度色, 中度色, 淺度色)
位圖.depth(X座標, Y座標, 寬度, 高度, 深度色, 中度色, 淺度色)

插入型範例
devil[1].bitmap.depth(Color.new(50, 50, 0), Color.new(150, 150, 0))
devil[2].bitmap.depth(Color.new(50, 50, 0), Color.new(150, 150, 0), Color.new(250, 250, 0))
devil[3].bitmap.depth(Color.new(0, 0, 0), Color.new(255, 255, 255))
devil[4].bitmap.depth(Color.new(0, 0, 0), Color.new(128, 128, 128), Color.new(255, 255, 255))
devil[2].bitmap.font.color = Color.new(0, 0, 0) # 字改黑色
devil[3].bitmap.font.color = Color.new(0, 0, 0) # 字改黑色
devil[4].bitmap.font.color = Color.new(0, 0, 0)
# 字改黑色
將特定顏色的深度範圍的所有顏色改成指定的深度色(深度依據為三原色合在255以下)
其餘的顏色都用淺度色來替換,此外也能多指定一個中度色
中度色的深度為三原色合計255~510之間的顏色全數變成中度色
一樣剩餘的顏色都以淺度色來描繪
深度色、中度色、淺度色:
  同上為設定Color對象,關於照三個引數剛剛已經介紹,就不多說了
   
   
範例腳本  
在本文章腳本「位圖強化」之下新增1個空白腳本,貼上以下腳本
並且將以上設置腳本中的 插入型範例 放到以下腳本的 範例腳本放置處 之中
Font.default_name = ['標楷體', '新細明體', '細明體', '黑体']
devil = Array.new(5){Sprite.new}
devil[0].bitmap = Bitmap.new('Graphics/Battlers/001-Fighter01')
devil[1].bitmap = Bitmap.new('Graphics/Battlers/001-Fighter01')
devil[2].bitmap = Bitmap.new('Graphics/Battlers/001-Fighter01')
devil[3].bitmap = Bitmap.new('Graphics/Battlers/001-Fighter01')
devil[4].bitmap = Bitmap.new('Graphics/Battlers/001-Fighter01')
devil[0].x = 32
devil[1].x = devil[1].bitmap.width + 32
devil[2].x = devil[2].bitmap.width * 2 + 32
devil[3].x = devil[3].bitmap.width * 3 + 32
devil[4].x = devil[4].bitmap.width * 4 + 32
devil[0].y = devil[1].y = devil[2].y = devil[3].y = devil[4].y = 32
#====================================================================
#★ 範例腳本放置處

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

rect = Rect.new(0, devil[0].bitmap.height - 32, devil[0].bitmap.width, 32)
devil[0].bitmap.draw_text(rect, '圖一', 1)
devil[1].bitmap.draw_text(rect, '圖二', 1)
devil[2].bitmap.draw_text(rect, '圖三', 1)
devil[3].bitmap.draw_text(rect, '圖四', 1)
devil[4].bitmap.draw_text(rect, '圖五', 1)
loop{Graphics.update}
 

相簿設定
標籤設定
相簿狀態