本節要講的是如何查找顏色值或圖像所在的座標位置。
遊戲中可以根據某些座標處的顏色值進行判斷再決定如何去做。
比如常見的是在血值顏色條與魔值顏色條上。
用戶可以自已使用 類_DC物件。
取座標顏色() 來獲取顏色值進行判斷,建議為了相容一些電腦解析度設置為 中(1位) 與 最高(32位) 兩種模擬,
在取座標顏色時取16位色值進行判斷。
為了方便顏色值的判斷,在 類_DC物件 奡ㄗ悀F 直線找色() 矩形找色() 的功能.。
副程式名:直線找色
根據提供的RGB顏色值在指定的線上查找,返回找到對應顏色點所在的座標。
返回值類型:邏輯型
參數<1>的名稱為“窗口控制碼”,類型為“整數型”。
注明:0=螢幕控制碼。
參數<2>的名稱為“查RGB值”,類型為“整數型”。
注明:24位,32位RGB顏色值。
參數<3>的名稱為“起始座標”,類型為“座標”。
注明:要查找RGB值的起始定點座標位置。
參數<4>的名稱為“線段長度”,類型為“整數型”。
注明:以定點座標向某一方位進行查找的距離。
參數<5>的名稱為“查找方向”,類型為“整數型”。
注明:1=從上到下,2=從下到上,3=從左到右,4=從右到左.默認從上到下。
參數<6>的名稱為“顏色座標”,類型為“座標”,接收參數資料時採用參考傳遞方式。
注明:返回查找到該RGB值最初出現的座標位置。
參數<7>的名稱為“GDI視窗”,類型為“邏輯型”,允許接收空參數資料。
注明:假=DirectX遊戲視窗,不支援後臺視窗,真=普通的GDI程式視窗。
若GDI視窗在XP、2003、vista系統支援後臺視窗,但不支援最小化視窗。
在 類_DC物件中的 直線找色() 功能可以進行 從左到右 從右到左 的橫向顏色值查找。
也可以進行 從上到下 從下到上 的縱向顏色值查找。
該功能的用法很簡單,提供一個起始的座標。
在查找顏色時會最先從這個座標點開始,向某個方向直線查找一段距離。
找到批配的顏色值時,會返回真,並設置顏色座標為相對於視窗控制碼距離的座標...
若找不到批配的顏色值時會返回假。
類_DC對象.直線找色()
除了直線找色外,在 類_DC 媮晹 矩形找色() ,指定左邊,頂邊,寬度,高度的矩形區域。
在這個區域堿d找批配的顏色值所在的座標位置。
副程式名:矩形找色
根據提供的RGB顏色值在指定的矩形區域中查找,返回找到對應顏色點所在的座標。
返回值類型:邏輯型
參數<1>的名稱為“窗口控制碼”,類型為“整數型”。
注明:0=螢幕控制碼。
參數<2>的名稱為“查RGB值”,類型為“整數型”。
注明:24位,32位RGB顏色值。
參數<3>的名稱為“矩形範圍”,類型為“矩形”,允許接收空參數資料。
注明:指定要查找RGB值的矩形範圍.若空將使用目標視窗控制碼客戶區矩形範圍或全螢幕範圍。
參數<4>的名稱為“查找步長”,類型為“整數型”。
注明:跨點距離。
參數<5>的名稱為“查找跨度”,類型為“整數型”。
注明:跨行距離。
參數<6>的名稱為“查找方向”,類型為“整數型”。
注明:1=從上到下,2=從下到上,3=從左到右,4=從右到左,5=從外到內,6=從內到外。
參數<7>的名稱為“顏色座標”,類型為“座標”,接收參數資料時採用參考傳遞方式。
注明:返回查找到該RGB值最初出現的相對於螢幕的座標位置。
參數<8>的名稱為“GDI視窗”,類型為“邏輯型”,允許接收空參數資料。
注明:假=DirectX遊戲視窗,不支援後臺操作,真=普通的GDI程式視窗。
若GDI視窗在XP、2003、vista系統支援後臺視窗,但不支援最小化視窗。
矩形找色() 多了 查找步長,查找跨度 兩個參數..因為考慮到有時候矩形面積很大時,
查找處理速度會慢點,若要查找的顏色值是一個非單圖元大點的塊狀情況下,
可以適量的設置 查找步長,查找跨度 能加快整個查找的速度。
類_DC對象.矩形找色()
使用找色的功能來應付血魔量還是比較好用的。
可以把一個血條的長度分為百分比,然後根據顏色值計算當前血魔量處於這個條中的百分之幾比例,
再決定按某些吃藥水的鍵碼或打坐等回血功能。
可以實現些簡單的動作模擬外掛。
除了找色之外,在 類_DC物件中還有提供了找圖功能,通過該功能可以用來查找出人物附近的地面物品,
背包,按鈕,怪物等的座標.再去進行動作模擬操作。
在找圖之前先說一下截圖..在遊戲,可以使用 HprSnap 這個軟體進行截圖。
然後在截到的圖堙A把物品給剪切出來.把周圍無關的顏色抹掉.然後保存為 BMP 點陣圖檔,供找圖用…
注意,必需得保存為不失真的 BMP 點陣圖檔,不能存成 GIF JPG 等會造成圖像失真的格式…
也可以使用 類_DC物件.截圖() 來保存遊戲畫面為BMP檔,再剪切物品等圖像再處理…
副程式名:截圖
返回值類型:邏輯型
參數<1>的名稱為“窗口控制碼”,類型為“整數型”。
注明:0=螢幕控制碼。
參數<2>的名稱為“矩形範圍”,類型為“矩形”,允許接收空參數資料。
注明:要截取圖像的矩形範圍.若空將截取目標視窗控制碼客戶區矩形範圍或全螢幕範圍。
參數<3>的名稱為“保存檔”,類型為“文本型”,允許接收空參數資料。
注明:把截圖到的圖像以 bmp 格式保存到磁片上。
參數<4>的名稱為“圖像資料”,類型為“位元組集”,接收參數資料時採用參考傳遞方式,允許接收空參數資料。
注明:返回截圖出來的這幅點陣圖位元組集資料。
參數<5>的名稱為“GDI視窗”,類型為“邏輯型”,允許接收空參數資料。
注明:假=DirectX遊戲視窗,不支援後臺操作,真=普通的GDI程式視窗.若GDI視窗在XP、2003、vista系統支援後臺視窗,但不支援最小化視窗。
模組堛犖I圖功能,截取的圖像只為客戶區域,所以不含標題欄等。
下面,我們假設要去查找一個QQ表情堛
這個色色的圖像,如果先處理該圖像中要被怱略不進行批配的顏色。
先用 HprSnap 這個軟體來打開這個圖像檔,並且放大到最大狀態。
打開圖像檔,放大到最大狀態,取消背景色的使其透明功能。
然後把不想進行判斷的易受干擾的顏色值抹成某一單種顏色。
例如上面我把這個外輪廓全抹成了紅色.這個色臉的內部部份顏色有需要的話也可以抹一下的...
抹掉了易干擾的顏色後,保存為BMP檔,注意,必需為16位或32位BMP檔,不能進行壓縮...
製作好了用來找圖的圖像檔後,就可以編寫找圖的代碼了,使用 類_DC物件.矩形找圖() 功能即可。
副程式名:找圖預處理
填充一個找圖專用的資料結構,供 矩形找圖() 使用
返回值類型:邏輯型
參數<1>的名稱為“BMP檔”,類型為“文本型”,允許接收空參數資料。
注明:BMP檔 與 BMP資料 兩個參數只需填入其中一個即可。
參數<2>的名稱為“BMP資料”,類型為“位元組集”,允許接收空參數資料。
注明:若不想用BMP檔來載入,可把BMP檔存在易的圖片資源堳幓ㄗ捄馴趕捊い洏峞C
參數<3>的名稱為“透明RGB”,類型為“整數型”。
注明:在找圖過程要要怱略掉不行進批對的RGB顏色,默認=0=黑色。
參數<4>的名稱為“找圖結構”,類型為“找圖結構”,接收參數資料時採用參考傳遞方式。
副程式名:矩形找圖
返回值類型:邏輯型
參數<1>的名稱為“窗口控制碼”,類型為“整數型”。
注明:0=螢幕控制碼。
參數<2>的名稱為“找圖結構”,類型為“找圖結構”。
注明:使用找圖預處理() 填充的一個資料結構。
參數<3>的名稱為“矩形範圍”,類型為“矩形”,允許接收空參數資料。
注明:指定要查找圖像的矩形範圍.若空將使用目標視窗控制碼客戶區矩形範圍或全螢幕範圍。
參數<4>的名稱為“查找方向”,類型為“整數型”。
注明:1=從上到下,2=從下到上,3=從左到右,4=從右到左,5=從外到內,6=從內到外。
參數<5>的名稱為“圖像座標”,類型為“座標”,接收參數資料時採用參考傳遞方式。
注明:返回查找到該圖像最初出現的相對座標位置。
參數<6>的名稱為“GDI視窗”,類型為“邏輯型”,允許接收空參數資料。
注明:假=DirectX遊戲視窗,不支援後臺操作,真=普通的GDI程式視窗。
若GDI視窗在XP、2003、vista系統支援後臺視窗,但不支援最小化視窗。
先使用 找圖預處理() 填充好要查找的圖像資料結構,供後期的找圖功能使用。
類_DC對象.矩形找圖() 成功找到圖像後會返回真,並設置圖像座標為查找的圖像中心位置 。
用戶可以自已製作處理遊戲中的物品,怪物,按鈕等的圖像試試找圖功能…
找到相應的圖像後再進行動作類比操作等。未來模組中會再增加模糊找圖,查找形狀,圖像取詞等功能。 |