Ver código fonte

!2 speedup scripts

pcacc 1 mês atrás
pai
commit
71bade1427

BIN
dongri_img/check/talkin_world.png


BIN
dongri_img/special_activity/red_package3.png


+ 2 - 0
dongri_pic.py

@@ -175,6 +175,7 @@ class check_img:
     talk_in3 = R'dongri_img\check\talk_in3.png'
     talkin_person = R'dongri_img\check\talkin_person.png'
     talkin_union = R'dongri_img\check\talkin_union.png'
+    talkin_world = R'dongri_img\check\talkin_world.png'
     talkin_jina = R'dongri_img\check\talkin_jina.png'
     xiaohao_jina = R'dongri_img\check\xiaohao_jina.png'
     jina_pic = R'dongri_img\check\jina_pic.png'
@@ -306,6 +307,7 @@ class special_activity_img:
     ## 红包
     red_package = R'dongri_img\special_activity\red_package.png'
     red_package2 = R'dongri_img\special_activity\red_package2.png'
+    red_package3 = R'dongri_img\special_activity\red_package3.png'
     red_package_open = R'dongri_img\special_activity\red_package_open.png'
     msg_new = R'dongri_img\special_activity\msg_new.png'
 

+ 12 - 6
dongri_task.py

@@ -1387,14 +1387,20 @@ class task_get_redPackage(dongri_task):
         basic_operate.go_outside()
         if waitClickImg_noWait_withBool((check_img.talk_in,check_img.talk_in2, check_img.talk_in3), 2, 1) == False:
             return False
-        waitClickImg_noWait_withBool(check_img.talkin_union, 2, 1)
+        waitClickImg_noWait_withBool(check_img.talkin_world, 2, 1)
         oldTime = time.time()
-        red_package_pics = [special_activity_img.red_package, special_activity_img.red_package2, special_activity_img.msg_new, special_activity_img.red_package_open]
+        max_waitTime = 150
+        red_package_pics = [special_activity_img.red_package, special_activity_img.red_package2, special_activity_img.red_package3, special_activity_img.msg_new, special_activity_img.red_package_open]
+        runTimes = 0
         while True:
-            if time.time() - oldTime > 150:
+            if time.time() - oldTime > max_waitTime:
                 break
+            if runTimes % 10 == 0:
+                yys_dragAuto(special_activity_img.move_down)
             if True == waitClickImg_noWait_withBool(red_package_pics, 2, 0):
-                save_game_screen("redPackage")
+                start_screenshot_thread("redPackage")
+                max_waitTime += 5
+            runTimes += 1
 
         return True
     
@@ -1633,7 +1639,7 @@ if __name__ == '__main__':
     #task_fight_ranshuang().run()
     #task_gotoTree().run()
     #task_fight_jina_only().run()
-    task_checkConfilits().run()
+    #task_checkConfilits().run()
     #task_getStrength().run()
     #task_checkActivities().run()
     #task_checkMaster().run()
@@ -1661,7 +1667,7 @@ if __name__ == '__main__':
     #task_returnAllLine().run()
     #task_paticipateInTeam().run()
     #task_fight_jina(True).run()
-    #task_get_redPackage().run()
+    task_get_redPackage().run()
     #task_read_mails().run()
     #task_checkBenifitStatus().run()
     #task_checkDiamond().run()

+ 37 - 18
scriptBase/comon.py

@@ -1,5 +1,6 @@
 # -*- coding: utf-8 -*-
-from datetime import datetime 
+from datetime import datetime
+import threading 
 import pyautogui
 from scriptBase.imgFind import pcacc_img
 from scriptBase.mouseClick import pcacc_mouse
@@ -52,6 +53,7 @@ def binarize_image(image):
 
 
 def waitFindImg(imgPath, waitTime, preWaitTime, isCV=False):
+    pre = time.time()
     if preWaitTime > 0:
         myTimeSleep(preWaitTime)
     #sleep 0.2s per times
@@ -61,17 +63,15 @@ def waitFindImg(imgPath, waitTime, preWaitTime, isCV=False):
         if ret:
             return ret, pos_cur
         else:
-            myTimeSleep(0.2)
-            curTime = curTime + 0.2
-    print("waitFindImg failed", imgPath)
+            myTimeSleep(0.1)
+            curTime = time.time() - pre
+    costTime = time.time() - pre
+    print(f"waitFindImg failed, cost:{costTime}, img:{imgPath}")
     return False, None
 
-def waitFindImg_withBool(imgPath, waitTime, preWaitTime, isCV=False):
-    ret, pos = waitFindImg(imgPath, waitTime, preWaitTime, isCV)
-    return ret
-
 
 def waitClickImg_noWait(imgPath, waitTime, preWaitTime, isCV=False):
+    pre = time.time()
     if preWaitTime > 0:
         myTimeSleep(preWaitTime)
     #sleep 0.2s per times
@@ -83,11 +83,16 @@ def waitClickImg_noWait(imgPath, waitTime, preWaitTime, isCV=False):
             myTimeSleep(0.5)
             return True, pos_cur
         else:
-            myTimeSleep(0.2)
-            curTime = curTime + 0.2
-    print("waitClickImg_noWait failed", imgPath)
+            myTimeSleep(0.1)
+            curTime = time.time() - pre
+    costTime = time.time() - pre
+    print(f"waitClickImg_noWait failed, cost:{costTime}, img:{imgPath}")
     return False, (-1, -1)
 
+def waitFindImg_withBool(imgPath, waitTime, preWaitTime, isCV=False):
+    ret, pos = waitFindImg(imgPath, waitTime, preWaitTime, isCV)
+    return ret
+
 def waitClickImg_noWait_withBool(imgPath, waitTime, preWaitTime, isCV=False):
     ret, pos = waitClickImg_noWait(imgPath, waitTime, preWaitTime, isCV)
     return ret
@@ -295,13 +300,27 @@ def game_region():
     tmpRet, tmpPos = find_window_pos('Mumu模拟器12',)
     return tmpRet, tmpPos
 
-def save_game_screen(fileHeader = ""):
-    regionRet, regionPos = game_region()
-    screenshot = pyautogui.screenshot(region=regionPos)
-    curData = datetime.now().strftime("%Y_%m_%d_%H_%M_%S")
-    fileName = "temp_pictures/" + fileHeader + "_" + curData + ".png"
-    screenshot.save(fileName)
-    return True
+def save_game_screen(fileHeader=""):
+    try:
+        regionRet, regionPos = game_region()
+        screenshot = pyautogui.screenshot(region=regionPos)
+        curData = datetime.now().strftime("%Y_%m_%d_%H_%M_%S")
+        fileName = "temp_pictures/" + fileHeader + "_" + curData + ".png"
+        screenshot.save(fileName)
+        return True
+    except Exception as e:
+        print(f"截图保存失败: {e}")
+        return False
+
+# 创建并启动截图线程
+def start_screenshot_thread(fileHeader=""):
+    screenshot_thread = threading.Thread(
+        target=save_game_screen, 
+        args=(fileHeader,),
+        name=f"ScreenshotThread_{fileHeader}"
+    )
+    screenshot_thread.start()
+    return screenshot_thread
 
 def start_recording():
     global g_recorder