|
AnkuLua 發表於 Feb 25, 2016 14:50:26 GMT
開發腳本過程中,很自然的會寫一些重複使用的函數 如果有研究我們腳本的自然會發現lib 目錄下有一個 commonLib.lua 這個檔 如果您有任何意見,歡迎提供給我們 有任何您建立的函數想加入函數庫的也歡迎提出 注意: 因為一直改,以下看到的是最新的,其他腳本看到的可能不同
改版資訊: v1.0 : 第一次正式釋出 下載連結
為了讓討論比較集中,每次我們會討論幾個相關的 這次先討論第一個 autoResize() autoResize( target, defaultDimension, immersive) 使用說明:這個函數是拿來設定大家最頭疼的compareDimension 他會在現有畫面將compareDimension 依照 defaultDimension 上下 15%,去找出能讓 target 的圖最相近(分數最高)的compareDimension 原始目地是因為有些機器的螢幕比例很奇怪(例如4:3),原始compareDimension 一定不會動,所以只好重新找過 當然,您也可以用來找出您發展腳本時的compareDimension值,但建議您找出之後,就將defaultDimension(和scriptDimension) 值改過 這樣腳本才不會花太多時間在這部分 參數:target: 目標圖形,可以是String 或 Pattern defaultDimension: compareDimension 的最可能值,也是比較範圍的中間值,最好設成您不必執行autoResize 即可執行的值,詳細後面說明 immersive: 遊戲是否為immersive 返回值: 如果找到則返回找到的compareDimension,否則返回 -1 使用範例:這是奇想之戰的例子 ankulua-tw.boards.net/thread/41/-- ========== Settings ================ Settings:setCompareDimension(true, 1280) Settings:setScriptDimension(true, 1280) Settings:set("MinSimilarity", 0.8) localPath = scriptPath() dofile(localPath.."lib/commonLib.lua") setImmersiveMode(true) dimension = autoResize(Pattern("play.png"):similar(0.9), 1280, true) toast(""..dimension)
腳本說明:先看腳本 注意:行數僅供解說參考,可能與未來版本不同2~7 行: 依照起始設定找一次,如果能找到圖,就直接返回 9~12 行: 反向immersive 找一次,如果能找到圖,就直接返回 14~15 行: 設回原本immersive,並將目標相似度設成0.8,以免完全找不到圖 16~26 行: 做粗部搜尋;從 -15% 到 +15%,每隔十找出相似度,如果相似度往下掉則記住最高值的dimension 28~39 行: 做細部搜尋;將上一步找到的dimension,從-9 到 +9 每次加一,找出相似度最高值的dimension並返回 40~43 行: 如果找不到,設回原值,並返回-1 45: 針對28~40行最相似值剛好在+9的處理,返回+9 的值 為了讓處理速度快一些,我們做了相似度只有一個高峰的假設 因為圖形比對會花些時間,因此建議起始值要設正確,這樣大部分機器只要找一次圖就可以了 否則可能花很多時間在這上面
|
|
|
kang770111 發表於 Mar 2, 2016 1:24:58 GMT
您好,想請問setImmersiveMode(not immersive)這個意思不是設定把海苔條顯示/隱藏嗎?
|
|
|
AnkuLua 發表於 Mar 2, 2016 6:02:41 GMT
您好,想請問setImmersiveMode(not immersive)這個意思不是設定把海苔條顯示/隱藏嗎? 不是影響遊戲裡面要不要出現海苔條 只是假設螢幕有沒有海苔條的情形下,再做一次圖形辨識 如果以下面方式呼叫 autoResize("target.png", 1280, true) 會執行下列動作 2~7 行: 假設執行腳本機器 沒有海苔條,compareDimension = 1280,找一次,如果能找到圖,就直接返回 9~12 行: 假設執行腳本機器 有海苔條,compareDimension = 1280,找一次,找一次,如果能找到圖,就直接返回
|
|
|
kang770111 發表於 Mar 2, 2016 6:19:37 GMT
您好,想請問setImmersiveMode(not immersive)這個意思不是設定把海苔條顯示/隱藏嗎? 不是影響遊戲裡面要不要出現海苔條 只是假設螢幕有沒有海苔條的情形下,再做一次圖形辨識 如果以下面方式呼叫 autoResize("target.png", 1280, true) 會執行下列動作 2~7 行: 假設執行腳本機器 沒有海苔條,compareDimension = 1280,找一次,如果能找到圖,就直接返回 9~12 行: 假設執行腳本機器 有海苔條,compareDimension = 1280,找一次,找一次,如果能找到圖,就直接返回 所以setImmersiveMode(true)是執行沒有海苔條嗎? 請問執行腳本機器時,如果有海苔條,取得的圖片也是會有海苔條出現嗎?
|
|
|
AnkuLua 發表於 Mar 2, 2016 6:25:58 GMT
不是影響遊戲裡面要不要出現海苔條 只是假設螢幕有沒有海苔條的情形下,再做一次圖形辨識 如果以下面方式呼叫 autoResize("target.png", 1280, true) 會執行下列動作 2~7 行: 假設執行腳本機器 沒有海苔條,compareDimension = 1280,找一次,如果能找到圖,就直接返回 9~12 行: 假設執行腳本機器 有海苔條,compareDimension = 1280,找一次,找一次,如果能找到圖,就直接返回 所以setImmersiveMode(true)是執行沒有海苔條嗎? 請問執行腳本機器時,如果有海苔條,取得的圖片也是會有海苔條出現嗎? 是的 所以如果您的遊戲會讓海苔條消失,請用setImmersiveMode(true),呼叫autoResize 請用 autoResize("target.png", 1280, true) 如果不會,請用setImmersiveMode(true),呼叫autoResize 請用 autoResize("target.png", 1280, false)
|
|
yusha
New Member
Posts: 2
|
yusha 發表於 Aug 17, 2017 4:12:13 GMT
大大不好意思
請問會出問題的圖片使用 autoResize()
是像這樣設定嗎?
若要搜尋圖片是一樣用 exists("target.png") 就可以了嗎?
多謝
|
|
|
AnkuLua 發表於 Aug 17, 2017 6:35:18 GMT
是的
|
|
|
jose 發表於 Sept 17, 2017 17:14:51 GMT
其實有時後找不到圖長寬也一樣的時候也會發生 不過機率不高 原因是因為你 在模擬器(手機)製作然後拿到手機(模擬器)執行
小弟我是在手機上開發的然後再拿去模擬器執行結果發現了 1.找圖速度不快(明顯比手機慢) 2.某些圖片比較花的找不到 最後發現原來模擬器裡面還有個設定DPI的功能(難怪我再用模擬器的時候發現畫質都不佳...) 如果真的發生這種問題可能要設定一下 P.S. 我是使用夜神,另外為何使用手機開發原因是因為SyncMe(檔案同步APP)不知為何怎麼設定都無法使用
|
|