Quellcode durchsuchen

!2 add redis function

pcacc vor 4 Monaten
Ursprung
Commit
a8e6b4a867
6 geänderte Dateien mit 95 neuen und 9 gelöschten Zeilen
  1. 10 5
      app_dongri.py
  2. 0 2
      compact_log.txt
  3. 2 1
      dongri_task.py
  4. 71 0
      redis_fun.py
  5. 2 1
      requirements.txt
  6. 10 0
      templates/index_dongri.html

+ 10 - 5
app_dongri.py

@@ -25,6 +25,7 @@ isGameBegin = True
 autoTask = None
 isReset = False
 g_times = 0
+g_cureNum = 500
 
 @app.after_request
 def add_no_cache_header(response):
@@ -205,7 +206,7 @@ def auto_participate():
             break
 
 def add_auto_task(isMaxCollect, isJina, isSimple = False, isAddStrengh = False, activity = 'None', isAutoParticipate = True, isDailyConfig = False, train_type = 'None', always = False):  
-    global g_times
+    global g_times, g_cureNum
     collectArr = [int(x) for x in isMaxCollect.split(",")]
     print("collectArr", collectArr)
     while not event.is_set():
@@ -244,10 +245,10 @@ def add_auto_task(isMaxCollect, isJina, isSimple = False, isAddStrengh = False,
         if activity == 'lianmeng':
             task_queue.appendleft(task_activity_lianmeng())
         if activity == 'cure':
-            task_queue.appendleft(task_cure(True))
+            task_queue.appendleft(task_cure(True, g_cureNum))
         task_queue.appendleft(check_buildOrResearch())
         
-        task_queue.appendleft(task_cure(False))
+        task_queue.appendleft(task_cure(False, g_cureNum))
         task_queue.appendleft(task_checkStoreRoom())
         if not isSimple:
             if isJina == 'jina':
@@ -265,7 +266,7 @@ def add_auto_task(isMaxCollect, isJina, isSimple = False, isAddStrengh = False,
             task_queue.appendleft(task_collect(collectArr, isSimple, isAddStrengh))
         
 
-        task_queue.appendleft(task_cure(False))
+        task_queue.appendleft(task_cure(False, g_cureNum))
         if isSimple:
             task_queue.appendleft(check_buildOrResearch())
         else:
@@ -401,7 +402,7 @@ def handle_auto(data):
     auto_task(config)
 
 def auto_task(data):
-    global autoTask
+    global autoTask, g_cureNum
     if data == None:
         isMaxCollect = '4,3,2,1'
         isSimple = False
@@ -412,6 +413,7 @@ def auto_task(data):
         auto_daily = False
         train_type = 'none'
         always = False
+        cureNumber = 500
     else:
         isMaxCollect = data['maxCollect']
         isSimple = data['simple']
@@ -422,6 +424,9 @@ def auto_task(data):
         auto_daily = data['auto_daily']
         train_type = data['train']
         always = data['always']
+        cureNumber = data['cureNumber']
+
+    g_cureNum = cureNumber
     send_status(f'开始自动模式')
     executor.submit(add_auto_task, isMaxCollect, isJina, isSimple, isAddStrengh, activity, participateJijie, auto_daily, train_type, always)
 

+ 0 - 2
compact_log.txt

@@ -1,2 +0,0 @@
-2025-02-14T04:45:27.028015300Z : ready compact 'C:\Program Files\Netease\MuMuPlayer-12.0\vms\MuMuPlayer-12.0-0\data.vdi'
-this time is dry-run, total blocks: 48806, used blocks: 5397, fragment ratio: 0.0472485

+ 2 - 1
dongri_task.py

@@ -772,9 +772,10 @@ class task_paticipateInTeam(dongri_task):
         return True        
 
 class task_cure(dongri_task):
-    def __init__(self, continueCure = False):
+    def __init__(self, continueCure = False, cureNum = None):
         super().__init__(f"治疗")
         self.continueCure = continueCure
+        self.cureNum = cureNum
     def run(self):
         basic_operate.go_outside()
         if waitClickImg_noWait_withBool(check_img.soilder_cure, 2, 1) == False:

+ 71 - 0
redis_fun.py

@@ -0,0 +1,71 @@
+import redis
+from redis.exceptions import RedisError
+
+default_redis = redis.Redis(
+        host='1.94.225.168',
+        port=6610,
+        db=0,
+        socket_connect_timeout=3  # 设置连接超时
+    )
+
+def set_coordinate(redis_client, key: str, x: int, y: int) -> bool:
+    """
+    存储坐标到Redis(保留原始整数格式)
+    :param redis_client: Redis客户端实例
+    :param key: 存储键名
+    :param x: 横坐标(整数)
+    :param y: 纵坐标(整数)
+    :return: 成功返回True,异常返回None
+    """
+    try:
+        # 将坐标转为"(x,y)"格式字符串存储
+        return redis_client.set(key, f"({x}, {y})")
+    except (RedisError, TypeError):
+        return None
+
+def get_coordinate(redis_client, key: str) -> str:
+    """
+    从Redis获取坐标(原样返回字符串格式)
+    :param redis_client: Redis客户端实例
+    :param key: 存储键名
+    :return: 成功返回"(x,y)"字符串,异常返回None
+    """
+    try:
+        value = redis_client.get(key)
+        return value.decode() if value else None
+    except (RedisError, AttributeError):
+        return None
+
+def delete_coordinate(redis_client, key: str) -> bool:
+    """
+    删除Redis中的坐标数据
+    :param redis_client: Redis客户端实例
+    :param key: 要删除的键名
+    :return: 成功返回True,异常返回False
+    """
+    try:
+        deleted = redis_client.delete(key)  # 返回删除的键数量
+        return deleted == 1  # 如果成功删除1个键返回True
+    except RedisError:
+        return False
+
+
+
+# 使用示例
+if __name__ == "__main__":
+    r = default_redis
+
+    # 存储坐标(保留原始格式)
+    set_coordinate(r, "location:1", 222, 333)  # 存储为字符串"(222, 333)"
+
+    # 获取坐标(与输入完全一致)
+    coord = get_coordinate(r, "location:1")
+    print(coord)  # 输出: "(222, 333)"(而非浮点数形式)
+    # 测试删除
+    if delete_coordinate(r, "location:1"):
+        print("坐标删除成功")
+    else:
+        print("坐标删除失败(键不存在或Redis异常)")
+    
+    coord = get_coordinate(r, "location:1")
+    print(coord)  # 输出: "(222, 333)"(而非浮点数形式)

+ 2 - 1
requirements.txt

@@ -21,4 +21,5 @@ paddleocr
 paddlepaddle
 setuptools
 pytest
-allure-pytest
+allure-pytest
+redis

+ 10 - 0
templates/index_dongri.html

@@ -52,6 +52,10 @@
                 是否最大收集:
                 <input type="text" id="maxCollectCheckbox" value="4,4,3,3,3,2,2,2,1,1">
             </label>
+            <label>
+                治疗大小:
+                <input type="text" id="cureNumberCheckbox" value="500">
+            </label>
             <label>
                 打怪:
                 <select id="JiNaCheckbox">
@@ -60,6 +64,8 @@
                     <option value="big_monster">big_monster</option>
                     <option value="yongbing">yongbing</option>
                     <option value="jina" selected>jina</option>
+                    <option value="jina_call">jina_call</option>
+                    <option value="jina_onlyFight">jina_onlyFight</option>
                 </select>
             </label>
             <label>
@@ -133,6 +139,7 @@
 
             // 获取元素
             const maxCollectInput = document.getElementById('maxCollectCheckbox'); // 文本输入框
+            const cureNumberInput = document.getElementById('cureNumberCheckbox'); // 文本输入框
             const jiNaSelect = document.getElementById('JiNaCheckbox'); // 下拉列表
             const simpleCheckbox = document.getElementById('SimpleCheckbox'); // 复选框
             const AddStrenghCheckbox = document.getElementById('AddStrenghCheckbox'); // 复选框
@@ -148,6 +155,7 @@
 
             // 设置值
             maxCollectInput.value = msg['maxCollect']; // 设置文本输入框的值
+            cureNumberInput.value = msg['cureNumber']; // 设置文本输入框的值
             jiNaSelect.value = msg['jina']; // 设置下拉列表的值
             simpleCheckbox.checked = msg['simple']; // 设置复选框的状态
             AddStrenghCheckbox.checked = msg['add_strength']; // 设置复选框的状态
@@ -198,6 +206,7 @@
 
         function begin_auto() {
             const maxCollectValue = document.getElementById('maxCollectCheckbox').value; // 获取文本输入框的值
+            const cureNumberValue = document.getElementById('cureNumberCheckbox').value; // 获取文本输入框的值
             const jiNaValue = document.getElementById('JiNaCheckbox').value; // 获取下拉列表的值
             const isSimple = document.getElementById('SimpleCheckbox').checked; // 获取复选框的状态
             const isAddStrengh = document.getElementById('AddStrenghCheckbox').checked; // 获取复选框的状态
@@ -214,6 +223,7 @@
             // 发出数据
             socket.emit('begin_auto', {
                 maxCollect: maxCollectValue, // 发送文本输入框的值
+                cureNumber: cureNumberValue, // 发送文本输入框的值
                 jina: jiNaValue, // 发送下拉列表的值
                 simple: isSimple // 发送复选框的状态
                 ,add_strength:isAddStrengh