日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Minecraft 1.16 简易高效的自动钓鱼脚本

發(fā)布時(shí)間:2023/12/15 编程问答 148 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Minecraft 1.16 简易高效的自动钓鱼脚本 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

新更新

更新了在windows版本下可以后臺(tái)掛機(jī)的開源版本 !!!!

https://github.com/onlytheworld/openfish

后續(xù)更新將直接在github上更新

正文

MC 1.16版本更新改變了釣魚機(jī)制,增加了開闊水域判定,使得之前的所有釣魚機(jī)全部失效,而現(xiàn)有的基于時(shí)序的釣魚機(jī)也都效率低下,因此不得不使用掛機(jī)腳本來實(shí)現(xiàn)高效的自動(dòng)釣魚。

基本原理

打開Minecraft 游戲菜單 – 選項(xiàng) – 音樂和聲音 – 顯示字幕,即可出現(xiàn)游戲右下角的聲音字幕,當(dāng)出現(xiàn) “漂浮:濺起水花” 字樣時(shí)則說明魚已上鉤,已經(jīng)可以收桿了。

因此可以簡(jiǎn)單地設(shè)計(jì)識(shí)別游戲右下角的字幕,就可以達(dá)到自動(dòng)釣魚的目的。

代碼實(shí)現(xiàn)

腳本代碼由 python3 書寫;利用 pyautogui 控制截圖與鼠標(biāo)操作;使用傳統(tǒng)算法進(jìn)行文本所在的區(qū)域檢測(cè),參見這里;利用cnocr項(xiàng)目進(jìn)行文本識(shí)別。

簡(jiǎn)單的運(yùn)行腳本并切換到游戲界面扔出浮漂即可掛機(jī)釣魚。

注意:
1、Minecraft 全屏模式下禁止截圖,因此腳本一定要在窗口模式下才可以使用。
2、需要先手動(dòng)定位字幕所在的大致區(qū)域以提高精度。默認(rèn)的定位為1920×1080屏幕的右下角。

# -*- coding: UTF-8 -*- import pyautogui import time from cnocr import CnOcr import cv2 import numpy as nppyautogui.PAUSE = 1def findfish(res):for line in res:if(line == ['浮', '漂', ':', '濺', '起', '水', '花']):return Truereturn Falsedef fish():ocr = CnOcr()while(1):# 1、截圖,手動(dòng)定位字幕大致區(qū)域fig = pyautogui.screenshot(region=(1775, 700, 130, 300))# 2、檢測(cè)文本所在區(qū)域img = np.asarray(fig)textImg = detect(img)# 3、利用cnocr識(shí)別文本res = ocr.ocr(textImg)print("Predicted Chars:", res)# 4、通過文本判斷是否收桿if(findfish(res)):pyautogui.click(button='right')pyautogui.click(button='right')time.sleep(1)else:time.sleep(0.5)def detect(img):# 1. 轉(zhuǎn)化成灰度圖gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 2. 形態(tài)學(xué)變換的預(yù)處理,得到可以查找矩形的圖片dilation = preprocess(gray)# 3. 查找和篩選文字區(qū)域x, y, w, h = findTextRegion(dilation)return img[y:y + h, x:x + w]def preprocess(gray):# 1. Sobel算子,x方向求梯度sobel = cv2.Sobel(gray, cv2.CV_8U, 1, 0, ksize=3)# 2. 二值化_, binary = cv2.threshold(sobel, 0, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY)# 3. 膨脹和腐蝕操作的核函數(shù)element1 = cv2.getStructuringElement(cv2.MORPH_RECT, (30, 9))element2 = cv2.getStructuringElement(cv2.MORPH_RECT, (24, 6))# 4. 膨脹一次,讓輪廓突出dilation = cv2.dilate(binary, element2, iterations=1)# 5. 腐蝕一次,去掉細(xì)節(jié),如表格線等。注意這里去掉的是豎直的線erosion = cv2.erode(dilation, element1, iterations=1)# 6. 再次膨脹,讓輪廓明顯一些dilation2 = cv2.dilate(erosion, element2, iterations=2)return dilation2def findTextRegion(img):# 查找輪廓contours, _ = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)maxArea = 0maxContour = 0if(len(contours)==0):return 0,0,0,0for i in range(len(contours)):cnt = contours[i]# 計(jì)算該輪廓的面積area = cv2.contourArea(cnt)if area > maxArea:maxArea = areamaxContour = cntx, y, w, h = cv2.boundingRect(maxContour)return x, y, w, hif __name__ =='__main__':fish()

總結(jié)

以上是生活随笔為你收集整理的Minecraft 1.16 简易高效的自动钓鱼脚本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。