# Sikulix 簡單教學 by 少女前線 自動0-2拖屍、維修、強化、拆槍、自動後勤,一氣呵成 直接當廢人:100: # [1.1.4 版腳本 設定 在這邊](https://hackmd.io/L5AYAbQgQj2-KGFlyjDzow?view#%E6%96%B0%E7%89%88GFL-%E8%85%B3%E6%9C%AC-%E7%92%B0%E5%A2%83%E8%A8%AD%E7%BD%AE%E3%80%81%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A0%85%E3%80%82) # 2020/6/21 目前腳本已經無效 > 目前已沒有在玩少前,如腳本不能跑的話,就**自己刻一個**吧,我的程式就當參考。我想我不會再維護那程式了(~~根本不打算維護XD~~)。 > 因為我忘記我的文件有沒有提過腳本的結構是啥,這邊再重新打一遍: > * 基本上 [girls_front_line.py](https://bitbucket.org/aniccasora/gfl/src/master/girls_front_line.sikuli/girls_front_line.py) 提供了人類清楚的邏輯,但是實際的 "實作"(程式上邏輯的實現),被包在 [step.py](https://bitbucket.org/aniccasora/gfl/src/master/girls_front_line.sikuli/step.sikuli/step.py),然而 [step.py](https://bitbucket.org/aniccasora/gfl/src/master/girls_front_line.sikuli/step.sikuli/step.py) 他有很大部分的 "實作",會透過 [util.py](https://bitbucket.org/aniccasora/gfl/src/master/girls_front_line.sikuli/util.sikuli/util.py),因為 step(遊戲步驟) 常常是用 util(固定邏輯、工具函式) 組合而成不同的 step,最後才在 girls_front_line.py 將 step 組合起來。 `*util:utility 的縮寫` > * 總結: util 提供常用 function,step 提供單步驟的遊戲邏輯(例如:按下一個按鈕),girls_front_line 將多個單步驟組合成一個可重複的腳本,就是這樣這麼簡單。這個就是我說的結構化,不熟程式怎麼呼叫時就把 girls_front_line 寫的很長就可以了~(但你維護程式碼時你就知道好玩了) * 給有心想學怎麼寫sikulix 腳本的人: 1. 新手(什麼是python? 什麼是腳本?): * 我的程式碼就別看了,因為一定看不懂,我大部分的程式碼都結構化了,沒有程式概念你追不出個所以來。 * 我不知道怎麼幫你 頂多去看我有一個基礎寫法的教學,但我想你看過了。 2. 我寫過腳本 但 python 是啥: * 那麼第一件事就是 先弄會 python (if、while、縮排結構、def),然後我的腳本嘗試著看也無訪,有問題可直接[問我](https://discord.gg/s8HtqKc),因為每行都是我寫的。 3. 你根本英文超強一外國人母語等級: * 那我想你看 sikulix api 就懂了。 4. 你會程式: * 自己學,不要我教。謝謝。 > ## 心得 [心得](https://hackmd.io/QWC-MLtvR0CwHHXKLhKDmw) ###### 要看 sikulix說明 心得 不用看沒關係... * [DISCORD群,點我邀請至伺服器](https://discord.gg/s8HtqKc) * 我基本上懶得維護這篇文章,有問題來裡面直接問就可以了,謝謝! * 發問 時請提出 您的"需求",並簡潔扼要的描述,我會盡可以解釋,或者提供協助。 * 基本上每天都會看discord * 最新的維護資訊也會在上面報告 * 另外 注意禮貌。謝謝~😃 # 正文開始 這篇的用詞都比較直接,如有不適請右上角,MacOS左上角。 ## 自動後勤DEMO **自動後勤** 只是 其中一部分~  **刷到2000場後,懷疑人生** (2000場後都不是我玩的辣HAHAHAHA)  快修要不夠了 好啦! 刷到 **200000場** 的 不用告訴我了 我知道了!! 我已經 20000場了↑😃 --- ## 前言 **((給我看完 醜話說前頭:smile:** **🙅🏼 此教學沒有任何營利✋🏼,而且帳號出問題我 "不負擔任何責任"🙅🏼** 本教學**並無修改、侵害、刪除任何伺服器的資料、或者其他玩家的資料**,也尚未侵害到任何玩家的權利(我沒在打排名的喔),少女前線能說是要網路的**單人遊戲**,所以我才這麼說,**就算指揮官900等,每支槍都滿等,也不會礙到其他人**,因為這腳本只有純 **"手"** 動練等而已,打排名還是乖乖來吧。 --- ### 1 寫作此教學目的 純粹只是希望各位玩家可以利用**有效率的方式遊玩遊戲**(~~偷懶的奧義~~),這是我一開始的發想,當然也有人認為,那你這樣玩遊戲還玩的有沒有意義。 跟推廣 sikuli 這個方便的辨識腳本。 能寫程式(腳本)解決我的麻煩,也是一種好玩的遊戲,電腦最喜歡做重複的事情了,還不叫他做爆。 **For高手、大神,或者已經會寫程式的建議,直接到👉 [Sikulix](http://sikulix.com/),自己看裡面的技術資料,可跳過我的胡說八道。** :::info 舊版 已經不會再次維護(包括這篇文章),現在以新版為準。 ---> [新版文章](https://hackmd.io/L5AYAbQgQj2-KGFlyjDzow#%E6%96%B0%E7%89%88GFL-%E8%85%B3%E6%9C%AC-%E7%92%B0%E5%A2%83%E8%A8%AD%E7%BD%AE%E3%80%81%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A0%85%E3%80%82) ::: ### 2 Sikulix 看做腳本? 外掛? ~~倒是像塊綠豆糕。~~ 當作 **"製造一個隱形人坐在電腦前幫我玩電腦"**, **sikuli的語源----"God's Eye"**。 --- **目錄** (電腦版 右邊有 TAG點開就可以跳到你要查詢的地方,瀏覽器的範圍夠大就會顯示) [TOC] ### 3 sikulix簡介 >**引言** 在 GUI 測試中,識別個性化控件、模擬用戶行為及對校驗屏幕顯示結果常常成為自動化測試的瓶頸,此類測試場景大多數情況下仍然依賴於手工測試。本文介紹一種新興的圖形化編程技術 Sikuli,它擺脫了對控件 API 的依賴,通過當前屏幕的實時圖像檢索獲取操作對象,模擬用戶行為,匹配屏幕區域以校驗真實的視覺顯示結果。文中將通過其在 GUI 自動化測試中的實際應用分析及程序示例,闡述其帶來的應用思路。 **Sikuli 是什麼** Sikuli 是由 MIT 的研究團隊發布的新型圖形化編程技術。它以圖像檢索技術為基礎,提供了一套基於 Jython 的腳本語言以及集成開發環境。使用者可利用屏幕截圖直接引用 GUI 元素進行編程,完成交互操作。 Sikuli 一詞取自墨西哥 Huichol Indian 土著語,意為“上帝之眼”,正如其開發者張琮翔所說—— Sikuli 讓電腦能像人一樣“看”這個“真實世界”。 > 以上引用自 **朱 杉 Sikuli -- 创新的图形化编程技术** > [朱 杉 Sikuli -- 创新的图形化编程技术](https://www.ibm.com/developerworks/cn/opensource/os-cn-sikuli/index.html) --- ## 環境建置 以下教學使用 **Python(jyphon) 當作腳本 code🔧** 並且使用我目前成功多次👍🏾的安裝方式。 **我用的作業系統一律 windows 10x64**,下面 安裝過程 都是用 另外開 windows 10 虛擬機安裝的,安裝很多次了,如果設定都跟我一樣,但 還是有問題的話,去Google吧👍。 都是用 x64 系統的配置, x32 作業系統沒弄過,要試試看也可以。 ###### PS: 下面鏈結失效的話 直接到 [Google Drive](https://drive.google.com/open?id=1ObKJY1S0rIH328MhEOjMImElLs1NwiUb) 去下載。 ### 1 你要有 JAVA SE 當環境,我個人用 **"8u192" (版本要對,不對不給安裝)** 官方是說 支援 ==version 8 or later== 但是 1.1.3的,但好像只能用 java version 8。 ------>[點我下載 Java SE Development Kit 8 Downloads](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) **載點別按錯**  :::info 有裝過的 JAVA SE 的 Win+R -> cmd ->輸入 "java -version" 確認一下版本,錯的話請重裝1.8.X 應該都沒事,(不要裝到 其他版本的爸拖👏) 請依照 cmd 顯示的版本號為依據。  網路上有很多 教你怎麼裝 JAVA環境的,爬文的話可以找到。 ::: ### 2 去載 sikulix ------>[Sikuli 1.1.3 下載頁面](https://launchpad.net/sikuli/sikulix/1.1.3) ### 3 開始安裝 [Google Drive](https://drive.google.com/open?id=1ObKJY1S0rIH328MhEOjMImElLs1NwiUb) 的東西下載下完以後,你會看到 兩個檔案  ============================================== 建議 直接丟到 你之後要裝 sikulix 的 資料夾, 等等裝 .jar 他會把他的所會執行到的東西都解壓出來。 ============================================== 1. 先裝 jdk-8u192-windows-x64.exe !!不要亂改安裝目錄,除非你會處理目錄變動的問題 !! 2. 再裝 sikulixsetup-1.1.3.jar (這邊用 cmd 解壓會比較保險,"不要直接點 .jar") 👇🏻 #### I.安裝 JAVA SE, **next** 給他按下去 就裝好了! (不要改 安裝路徑!,啥都不用勾,啥都不用點) 之後就看到 完成安裝 的畫面了  按下 **"close"** #### 確認是否有安裝成功 * Win+R -> cmd ->輸入 "java -version" 確認一下版本,錯的話請重裝,請依照 cmd 顯示的版本號為依據。  他如果說 **"java 不是內部或外部命令、可執行的程式或批次檔。"** 那麼 拿著這段 字串 去 Google。 #### II.安裝 sikulix 1.1.3 這邊就是環境建置最後步驟,裝得過你後面都沒問題。 **上圖~** **Step1.** 找到剛剛 **放 .jar 的資料夾** (最好 找個 乾淨的資料夾) 在 **網址列 / 路徑** 的地方 **打上 cmd, 並 Enter**  **Step2.** 然後 愉快的 打上 **"java -jar sikulixsetup-1.1.3.jar"**  ###### tip: 在終端機的操作中,你可以直接打個大略,用TAB幫你自動補齊當案名稱,像是 在打 "sikulixsetup-1.1.3.jar" ,你可以 打個 "si" 按下 TAB 開始選擇你要的檔案,前提是 該檔案要在資料夾裡面。(TAB鍵 : 在 英文大小寫切換鍵 的 上面)。Ctrl+C 也是可。 **Step3.** 按下 **"是"**  **Step4.** **1.✔️**、**2.✔️**、紅色框框 打勾勾~ 第一紅框的 選項中 選擇 **✔️1.Python (Jython)(default)** 再次愉快的按下 **"Setup Now"**  **Step5.** **"是"**  **Step6.** **安裝 Jython "是"**  **Step7.** **等待...**  **Step8.** **大成功**  **Step9.** **在剛剛的資料夾下** ~.exe 可以刪掉~ 點下 **"runsikulix.cmd"** 打開 IDE(整合開發環境),跑腳本、撰寫腳本, 都靠他了!!  **!! ALT+SHIFT+C 可終止 sikulix 運行 !!** **SIKULIX IDE**  :::info 我都叫這畫面 **"IDE"**:mega: ::: --- ## 準備 開始 ### [1 介紹存檔 !務必過目!](https://hackmd.io/ePVlUXPPTtOxC5lAlwXg5g?view#%E6%BA%96%E5%82%99-%E9%96%8B%E5%A7%8B) 寫程式Code的存檔如果不見,那麼肯定是崩潰,Sikulix更是如此, 因為他的內部的設計,你的 Code 存檔的瞬間,只要IDE的畫面裏面沒有該圖片,那麼資料夾的圖片就會跟著消失。 > (可以藉由修改設定解決這問題,但會延伸出,舊的圖片都不會被刪除的問題) 當你寫 sikulix 時,因為是螢幕辨識,他會需要許多圖片,然而你在IDE截個老半天的圖全部被刪掉,做何感想??? ~我曾經被搞過好多次,都忘記這個規則~ **注意:當你在寫腳本時,你不想跑某一行(或多行),請先利用 單行註解 "#" 把那行註解掉(不支援多行註解),按下"Ctrl + S",除非 "確定連圖片都不要了" !!。** #### [----- 1. 如果你要複製 的 那一行是有圖片 的 Code 的話,請確保你存檔了]() 過來人的經驗,不要到時候 Ctrl + Z 回不來就好笑搂! #### 以下示範 這個陷阱: ###### PS:第 66 行 就是 "註解" 過的行。這樣子打 他就不會執行了,這就是註解。(雖然註解一開始的設計是拿來當 程式碼的解釋的)。68 行是 會執行的喔。 假設你發現 這邊的CODE **全部**想要用 Ctrl + X "剪" 下來,放到別的段落去。 **"剪下後,請不要按下存檔,你會貼不上來的,因為存檔的瞬間他的圖片就在資料夾消失了"** 接下來就是愉悅的重新截圖,為什麼呢? 實際上複製,或者剪下的時候並 **不會複製到 圖片**!  #### [-----2.sikulix 圖片下的 原碼](87940) 所以你的操作都是對這一些字串作處理(複製,貼上...),真正的圖片在移除IDE畫面並存檔時就已經消失,剩下的就只是一串沒有意義的位置。 在這個 sikulix IDE 裡面 "圖片位置(字串)" -> 實際畫面上的圖片(圖片) 這讓我們在編寫的時候很直覺。 (我這邊的圖片都有再次命名,以防萬一我找不到,他預設的命名都是時間戳記) **(利用 Ctrl + T 切換) / 檢視 -> show ThumbNails**  --- #### [3.Sikulix的 專案名稱]() ~~不要跟我說 他只是**資料夾**後面的名稱加了 ".sikulix"XD~~ **不要把它看成資料夾**,當作**單一專案**,會比較好! (除非你知道你在做啥 不然不建議去改內部的東西)  #### [4.常用快捷鍵:]() 有碰過的編輯軟體的一定都知道 最基本的,快捷鍵(shortcut) 基本上 就是 1.Ctrl + S (存檔) 2.Ctrl + Z (復原上一動作) 3.剪下 X + 複製 C + 貼上 V 4.Ctrl + T 特殊情形 會需要 使用 記好啦!! ### 2 開啟 舊專案 的方法 #### 這邊就是我前面說的 sikulix 專案(資料夾) IDE左上角 檔案 -> 開啟 -> 選擇專案資料夾就好了 要開啟 舊專案 的話 選擇 **"xxxx.sikulix" 整個資料夾** -> **select** ,就可以開了,**不用點進去**。  --- ## 開始撰寫 ### 1 關於少前的 0-2 常刷0-2的大家都知道,0-2關卡的敵人是不會移動的,所以可以省下判斷敵人位置的麻煩,不需用處理隨機問題。 ### 2 設計想法 基於少前這款遊戲幾乎不需用用到鍵盤,所以滑鼠的動作,我只把它分作2個part。 #### ------1.自動操作(滑鼠only) 1.滑鼠 移動 到 指定位置、有效範圍 2.點擊 不會用到"滾輪"、"拖移"、"拖拉" 我在腳本裡面 不使用 "拖移"、"拖拉" 這種動作的,因為我當初的電腦,極為LAG,滑動畫面這項操作,會有嚴重的延遲,所以我只利用這簡單 兩個操作來完成 一系列的拖屍。 #### ------2.畫面判斷 這個部分用到的邏輯 **--------------1.存在?不存在?** 這個畫面、物體、事件,究竟觸發了沒,只要畫面有改變,那麼他就可以判斷其是否存在。 **--------------2.是否需要等待?(Lag時間)** 假設,你的電腦還在轉圈圈,黑屏(有點半透明,少前的loading畫面滿多都是半透明的,明暗程度對圖像辨識造成的影響頗小)。那麼那個物件有被找到,那電腦就會以為他出現了,就繼續下一個指令,這樣會造成不可預期的錯誤。 **--------------3.流程可靠性!** 有一點狀態機的概念,你是否可以確保,某一項操作,永遠成功? 那失敗了要怎麼補救,還是直接不管跳到下一個操作? | |流程未確認 ❌ | 流程有確認✔ | |:---------:|:-----------:|:---------:| |欲執行 | A -> B -> C |A -> B -> C| | Step 1 | A 成功 | A成功 | | Step 2 | B失敗 | B失敗 | | Step 3 | C ?? | B再次執行B | |Step 4 |?? | B成功 | |Step 5 | ?? |C失敗 | |Step 6 | ?? |C再次執行 | |Step 7 | ?? |C成功 | |Step 8 |?? |ABC成功執行完畢! | --- #### python 是利用 **"四個空白"** 當作 區塊的",稱為縮排 (indent) 可以看到while 的**下一層是** if & else if ---- 的**下一層是** 去吃飯 else - 的**下一層是** 去睡覺 下方code表示 這隻程式 他會判斷 自己是不是餓了? 不是的話**去睡覺** 否則**去吃飯**,**周而復始** ```python while True: # while層 從這邊 開始 if 肚子餓了: #肚子餓了 區塊開始 去吃飯 #肚子餓了 區塊結束 else: #其他時間 區塊開始 去睡覺 #其他時間 區塊結束 # while層 完畢 ``` --- ### 3 範例影片 ##### (一) {%youtube Tb3glLDJf8g %} ##### 施工中... 應該是永不施工... --- ## Google Drive \ 各檔案下載 \ 各種連結 下載的東西看清楚 不了解的 就直接到我 GD直接下載 ### Sikulx API (就是 寫Sikulix的說明書,給有程式基礎的人翻閱) [Everything about Sikuli Script](http://doc.sikuli.org/sikuli-script-index.html) ### Google Drive [我的 Google Drive](https://drive.google.com/open?id=1ObKJY1S0rIH328MhEOjMImElLs1NwiUb) ### Sikulix home page [sikulix](http://www.sikulix.com/) ### 官方的下載頁面 [Java SE Development Kit 8 Downloads](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) [Sikuli 1.1.3 下載頁面](https://launchpad.net/sikuli/sikulix/1.1.3) ### 問題詢問 方式 #### 注意 1. 近來請 **"有禮貌地發問"** 謝謝,我可沒有欠你,要鬧的也滾。 2. 另外 我不知道這連結啥時會消失 看到會再補。 * [DISCORD 點我邀請至伺服器](https://discord.gg/s8HtqKc) * 用這個會比較快收到回覆。 * Email 最後一種聯絡方式。 * suwaerannpa86510@gmail.com ---
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.