# 新版GFL 腳本 環境設置、注意事項。 # 2020/6/21 : 這也不新了看看就好。 ``` 名詞解釋: IDE (整合開發環境(Integrated Development Environment,簡稱IDE), 文章內的 IDE 都指 sikulix 提拱給我們的打 "腳本視窗"。 ``` # 目錄[toc] --- ## 環境建置 可參考舊文章。 [舊文 1.1.3 sikuli 安裝 教學](https://hackmd.io/ePVlUXPPTtOxC5lAlwXg5g?both#%E7%92%B0%E5%A2%83%E5%BB%BA%E7%BD%AE) > 現在官方有出 1.1.4 請安裝這個版本。 > 1. [下載 2.7.1 jython(官方)](https://repo1.maven.org/maven2/org/python/jython-standalone/2.7.1/jython-standalone-2.7.1.jar) > 2. [下載 1.1.4 sikuli(官方)](https://raiman.github.io/SikuliX1/sikulix.jar) > * chrome 會封鎖 .jar 檔案記得按下保留 > 然後去看舊版文章,有細節的安裝教學 ```=bash @rem 進去放.jar檔案 資料夾下,在 "網址列" 輸入 'cmd' Enter,再打下面的 command java -jar sikulix.jar @rem 你可以把這串 字串,從 .txt改成 .bat檔案,跟 sikulix.jar 放在一同目錄, @rem 爾後只要按下他就會開啟 IDE了。 ``` ### 0. 遊戲 設定 (稍高的需求) > 1. 第一梯隊 **全部** 為空彈、空糧,坦克有沒有修都可以 > 2. 第二梯隊 "**單打手**" 滿彈、滿糧 > 3. 關閉重創保護 > 4. 關閉自動補給 > 5. *打手* 一律 **最左邊**, *坦克* 一律**最右邊** > 6. 一、二梯隊都 **需要裝不同妖精**,並且去**images檔案**裡面,修改截圖,其圖片為,地圖內釋放妖精時,第一、二梯隊的妖精截圖,要按照順序\ echelon_fairy = \[第一梯隊妖精、第二 梯隊妖精\] > 7. 首次執行時,先進去 0-2 把地圖 **"縮小"** ,即左右移動時不會滑動。 ### 1.新腳本流程。 > 1. 腳本啟動-> 進去0-2 -> 先修最右邊的坦克(自己設定維修週期) -> 交換打手-> 0-2開拖 -> 主畫面 -> 進去 0-2 -> loop... > 2. 如果遇到滿倉時,到 工廠 -> 選欲強化腳色 -> 強化 -> 選到沒有角色 or 沒有二星狗糧 -> 拆核心 -> 主畫面 -> 0-2 -> loop... ### 2.更新進度會在,discord 更新 * [DISCORD 點我邀請至伺服器](https://discord.gg/s8HtqKc) * [腳本 下載](https://bitbucket.org/aniccasora/gfl/downloads/) * [google drive 打包下載 (推薦)](https://drive.google.com/open?id=1tZL8Cvd8O9zz7jxb5b-DSzIe_4SSSFOf) * ![](https://i.imgur.com/7g4mEg3.png) > **隨時會更新 注意commit時間(左邊按進 Souece 即可看到)** --- ### 3. BlueStack (BS設定) #### GFL版本的腳本,遊戲視窗配置已經更改,不再是全螢幕了因為太耗電腦效能。 * **windows 10** (不強制,應該...) * **螢幕**的解析度 **1920*1080** * 1.用 **BlueStack4** [軟體版本:4.31.59.3502 載點](https://www.inote.tools/windows-bluestacks-4-31-59-3502/) * 連結失效的話請找個相近的版本,但bs 要符合下面條件。 * **BS**解析度可以設定 **1920*1080** * 然後縮到 **固定** 最小,bs會限制,最小畫面,也就是不能再縮了。(如圖) * ![](https://i.imgur.com/PWLpJZk.png) * 2.(這設定應該不強制??) bluestack4 會吃windows 系統字型縮放預設,所以你的windows 設定也要跟我一樣摟(如下圖)~ ###### 桌面 右鍵-> 顯示設定 -> 進階縮放設定 ![](https://i.imgur.com/CAFsZTd.png) --- #### 改成這個版本的目的 (使用 sikulix 1.1.4版) 基本上呢,就是改寫法,提高執行的效能,舊版的observer的呼叫都亂寫,看過API之後,發現把範圍縮小觀察才是對的,另外,戰鬥部分因可以一次用掉所有作戰點數所以可以少一些code。 這次的腳本有改成多檔案,匯入執行,所以有些舊版使用者的習慣會改。 想當然爾,這些圖片都要重新截圖摟。 --- ### 4. 如果都符合 **"第3點"** 的設定的話 1. 先把 "所有" # ★★★★★ 個人化設定 ★★★★★★ 到 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \# ------------------------------------------- 的區塊,設定成自己環境的,參數、圖片.... 跑跑看,有問題的話 baretail 開在旁邊 搭配著看,他會告訴你那些圖片找不到or 有問題。 2. 修改 壓縮辨識(在 util.init() 內的一個參數) ```python # resize,決定 sikuli 在辨識畫面之前是否要先壓...... Settings.AlwaysResize = False # 修改成 False ``` 3. 偶爾還是會卡卡的 就自己 重新截圖吧,(Settings.AlwaysResize 記得改回預設) --- ## sikulix 取消自動刪除截圖 取消 "自動刪除無用圖片",缺點是你到時候整理圖片要小心。因為會很多無用的也混在裡面。 ![](https://i.imgur.com/1CrASTE.png) --- ## Sikuli IDE 的 疑難雜症 (請先過目) > 1. 圖片如果已經存在在專案之中(Ctrl+T看的見),你把它改成別的圖,IDE是看得出會改的,但是程式辨識會按照舊的圖片,可能是他有編譯過在暫存區。 Solution:重開。 > 2. **每次重開要執行時**, **必須** 先把 **3支檔案全部執行**(images、util、step),在IDE 按下執行即可,每執行完一支,看一下下方的訊息區有沒有紅字,**只要有紅字,腳本必定不能執行** > 3. Can not create PyString non-byte,因腳本有 **全形空白**。 > Solution:你只能把你有修改過的地方 **換行與空白** 全部刪掉,再重新輸入。 --- ## 編輯技巧 > 1. python 是用 縮排(4個空白)為 一個區塊 > 可以使用 反白數行按下 **"Tab"** or **"shift+Tab"** 多行 增加縮排or減少縮排 > 2. 作者已經說過,在此ide的 python 不支援 多行註解,如果需要**多行註解程式碼**時,你可以參考下面解決辦法。 > * 有時候 不需要的區塊會很長,這個辦法就會派上用場,或者是你要測試腳本時,你就可以使用這招來達成,直接執行此段的效果。 ```python while True: click("戰鬥") wait(3) click("按下0-2") wait(3) click("指定指揮部") wait(3) run("部署主要梯隊") wait(3) click("按下機場") wait(3) run("戰鬥流程") # 假設今天是這段有問題,你想要測試這邊流程, # 可是重新執行上方的代碼很沒有意義,因為你已經測試過了 wait(3) # 以下為 待開發 流程 test_Func1() test_Func2() # ... ``` 你就可以這樣修改(要縮排的行 **反白** 按下Tab 就可以一起縮了) ```python while True: #<註解開始> if False: # 如果想要 重新開始這段代碼,改成True即可 click("戰鬥") wait(3) click("按下0-2") wait(3) click("指定指揮部") wait(3) run("部署主要梯隊") wait(3) click("按下機場") wait(3) #</註解結束> run("戰鬥流程") # 這樣你就可以 直接執行到此段 wait(3) # 以下為 待開發 流程 test_Func1() test_Func2() # ... ``` --- ## 腳本目錄結構 > glf └ girls_front_line.sikuli (主程式) &nbsp;&nbsp;&nbsp;&nbsp;├ images.sikuli (維護圖片用) &nbsp;&nbsp;&nbsp;&nbsp;├ step.sikuli &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(運行邏輯用) &nbsp;&nbsp;&nbsp;&nbsp;└ util.sikuli &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(通用函式都在這邊) 1. 要執行腳本前先,Ctrl+O 開啟 「girls_front_line.sikuli」、「images.sikuli 」、「step.sikuli」、「util.sikuli」。 4. 四檔案開好後,請先檢查 IDE 有沒有報錯,之後先運行「images.sikuli 」、「step.sikuli」、「util.sikuli」。 直接按下執行以後,他會關閉IDE 後跑 個幾秒後又會回來,三支檔案各做一次。(第一次執行不跑的話「girls_front_line」會出錯) 5. 運行「girls_front_line.sikuli」,應該會先螢幕變黑。 要求框出 一個區塊,這邊的區塊是 少前的遊戲畫面。 請 精細的框出(也不用多仔細)。如下圖。 ![](https://i.imgur.com/Muo4iFX.png) 6. 把 「images.sikuli 」內 的圖片,全部重新截圖,(**BS請縮到最小極限再截**)。好了以後記得備份,以後更新程式以後,你把你的檔案覆蓋回來,再比對增加了何種圖片變數。 --- ## 第三方 輔助工具 推薦 > 1. [VScode 官方下載](https://code.visualstudio.com/docs/?dv=win) > * 如果要用VScode寫腳本,記得每次執行請 Ctrl+O,重開腳本,你在VScode修改的才會在IDE生效(sikuli IDE 跟這個配合度極差,VScode 建議 **觀看**用,跟 ctrl+F 很好用,)。 > (IDE即時更改後(按下儲存後),VScode 會更動,但 VScode 更改 IDE代碼不會變更。) > * 比對程式碼用。 > ![](https://i.imgur.com/4IyAXfs.png) > > 2. [BareTail Free 官方下載](https://www.baremetalsoft.com/baretail/download.php?p=m) > * [軟體、設定檔下載](https://drive.google.com/drive/folders/1ljlL8cCkI7tS23nlc2IXldnhcES48Gzp?usp=sharing)(開啟程式 Perferences ->Foad from file -> BTConfig.udm,也可以匯出設定) > * 上面的ANSI 改到 UTF-8 > * 觀看 log 用,followTail 打勾可以自動看最後一行,可以邊執行程式,邊觀看這log,而且有highlight,可以清晰看到流程。 > 1. 藍條、綠條(一個功能的開始與結束,告訴你出發結束位置) > 2. 粉條、基本上 大多數不會報錯,(EX: XXXX.png FAILED!),這代表他點不到圖片。 > 3. [WARN] 橘條: 要注意,可能存在風險區,大多數時間他是提示,但如果一直出現相同問題代表,有問題。 > 4. **[ERROR] 紅條**: 絕對會讓腳本,出問題的狀況。嚴重問題 > 5. [Passing ....] 紅條: 程式參數傳遞錯誤,有改程式才會有這條。 > * ![](https://i.imgur.com/wuSSZWN.png=10*10) --- ## sikuli 基本知識 > 如果需要改動腳本,有些先備知識我認為是必要的,因為新版腳的寫法,在舊版腳本幾乎沒有出現過,第一次讀解可能會遇到困難,會盡量用簡易的方式解釋官方文件 > 1. 如果本身有程式底子,或者看過api文件的經驗,可大略上看這邊的簡介,再去翻閱官方文件,會更快速上手。 > * [sikuli 基礎概念](https://hackmd.io/p9FWzpBKQrutXqJftFDaJg?view) --- ## 當更新程式時該怎麼辦? (images資料夾) > 1. 最重要的是 你的 images 的檔案 絕對要備份好,我有更新程式時,你先 檢查下載下來最新的 images,並查看是否增加新的 **變數**(用vscode 比對),如果有,請在自己的images版本增加該變數,並截圖即可。