diff --git a/__init__.py b/__init__.py index a298f58..0f4b188 100644 --- a/__init__.py +++ b/__init__.py @@ -13,7 +13,9 @@ from . import zhixian import time import random +import json +from ascript.android.ui import WebWindow # 导入系统资源模块 from ascript.android.system import R @@ -41,9 +43,11 @@ import re from ascript.android import system -shcswp = ["百炼精铁"] +shcswp = ["百炼精铁", "制造书-女衣", "制造书-宝珠", "制造书-枪", "制造书-鞋"] print("程序开启,打开游戏") + + # # 根据包名启动,推荐使用 # # com.netease.my # res_qidong = system.open("com.netease.my") @@ -67,4 +71,90 @@ print("程序开启,打开游戏") # yabiao.yabiaorenwu() -zhixian.shanghuichushou(shcswp) \ No newline at end of file +# zhixian.shanghuichushou(shcswp) + +renwuliebiao = [] +shanghuichushou_lb = [] +shiyongwupin_lb = [] +diuqiwupin_lb = [] +baitanchushou_lb = [] + +def tunnel(k, v): + try: + # 尝试将 v 解析为字典 + v_dict = json.loads(v) + print(f"解析后的字典---", v_dict, type(v_dict)) + + # 遍历字典中的每个键和值 + for key, value_list in v_dict.items(): + print(f"任务-{key} 的值:", value_list) + if key == "任务列表": + renwuliebiao.extend(remove_suffix(value_list)) + if key == "商会出售": + shanghuichushou_lb.extend(remove_suffix(value_list)) + if key == "使用物品": + shiyongwupin_lb.extend(remove_suffix(value_list)) + if key == "丢弃物品": + diuqiwupin_lb.extend(remove_suffix(value_list)) + if key == "出售物品": + baitanchushou_lb.extend(remove_suffix(value_list)) + + # 执行所有任务 + execute_all_tasks() + + except json.JSONDecodeError as e: + print(f"解析 JSON 失败: {e}") + +def remove_suffix(items): + return [item.split('-')[0] for item in items] + +def execute_all_tasks(): + # 按顺序执行任务 + if "捉鬼任务" in renwuliebiao: + print("执行任务: 捉鬼任务") + common.start_alllive_task_timer(70) + sleep(3) + zhuogui.zhuogui() + + print("捉鬼完成,调整全局检测线程时间----120") + common.start_alllive_task_timer(120) + if "师门任务" in renwuliebiao: + print("执行任务: 师门任务") + shimen.shimenrenwu() + + if "自动挖宝" in renwuliebiao: + print("执行任务: 自动挖宝") + baotu.baoturenwu() + baotu.wabaotu() + + if "秘境降妖" in renwuliebiao: + print("执行任务: 秘境降妖") + mijing.mijingxiangyao() + + if "普通押镖" in renwuliebiao: + print("执行任务: 普通押镖") + yabiao.yabiaorenwu() + + # 其他任务按顺序执行 + print("执行商会出售任务") + zhixian.shanghuichushou(shanghuichushou_lb) + + print("执行使用物品任务") + # 这里可以添加使用物品的具体逻辑 + # 例如:shiyongwupin(shiyongwupin_lb) + + print("执行丢弃物品任务") + # 这里可以添加丢弃物品的具体逻辑 + # 例如:diuqiwupin(diuqiwupin_lb) + + print("执行出售物品任务") + # 这里可以添加出售物品的具体逻辑 + # 例如:baitanchushou(baitanchushou_lb) + +# 构建一个WebWindow 显示‘/res/ui/a.html’ 通信通道为tunnel 函数 +w = WebWindow(R.ui('index.html'), tunnel) +w.show() + +print("程序结束") +def sleep(num): + time.sleep(num) diff --git a/common.py b/common.py index 626bfe0..8a047b5 100644 --- a/common.py +++ b/common.py @@ -27,6 +27,9 @@ zhuoguiisover = False # 领取双倍状态 shuangbei = False +# 定义一个全局变量来管理定时器 +alllive_task_timer = None + def huodong(): while True: @@ -97,7 +100,7 @@ def closeAllbtn(): findandclick(res_flkg) # 师门-关闭.png - res_smgb = zhaotu("师门-关闭.png") + res_smgb = zhaotu("/shimen/师门-关闭.png") if res_smgb is not None: print("关闭-师门任务-弹框") findandclick(res_smgb) @@ -290,7 +293,7 @@ def shizi(fanwei): return None -def alllive_task(): +def alllive_task(num): print("---------------定时任务-寻找异常弹窗----------------") # zhaotu("道具领取-弹框.png") ref_daoju = zhaotu("道具领取-弹框.png") @@ -341,7 +344,23 @@ def alllive_task(): duiwu.shifoukaping() - threading.Timer(70, alllive_task).start() + start_alllive_task_timer(num) + +def start_alllive_task_timer(num): + global alllive_task_timer + if alllive_task_timer is not None: + alllive_task_timer.cancel() + alllive_task_timer = threading.Timer(num, alllive_task, args=(num,)) + alllive_task_timer.start() + print("定时任务已启动") + + +def stop_alllive_task_timer(): + global alllive_task_timer + if alllive_task_timer is not None: + alllive_task_timer.cancel() + alllive_task_timer = None + print("定时任务已停止") def sleep(num): diff --git a/lingqushuangbei.py b/lingqushuangbei.py index 91c798c..df52596 100644 --- a/lingqushuangbei.py +++ b/lingqushuangbei.py @@ -9,6 +9,7 @@ shuangbeidianshu_ylq = [432, 616, 549, 650] shuangbeidianshu = 0 + def lingqushuangbei(): print("开始领取双倍") a = 0 @@ -17,8 +18,8 @@ def lingqushuangbei(): print("找不到挂机入口,程序停止") return res_guaji1 = common.zhaotu("挂机1.png") - res_guaji=common.zhaotu("挂机.png") - res_guaji_last=res_guaji or res_guaji1 + res_guaji = common.zhaotu("挂机.png") + res_guaji_last = res_guaji or res_guaji1 if res_guaji_last is not None: lingqu(res_guaji_last) print("双倍领取完成,开始捉鬼") @@ -37,6 +38,7 @@ def lingqushuangbei(): sleep(1) continue + def lingqu(zuobiao): global shuangbeidianshu sleep(1) @@ -47,33 +49,40 @@ def lingqu(zuobiao): print("领取双倍") res_lingqu = common.zhaotu("领取.png") res_dlq_text = common.shizi(shuangbeidianshu_fw) - dlq_num=0 + res_ylq_text = common.shizi(shuangbeidianshu_ylq) + ylq_num = 0 + if res_ylq_text is not None: + res_ylq = qushuzi(res_ylq_text) + ylq_num = int(res_ylq) + + dlq_num = 0 if res_dlq_text is not None: res_dlq = qushuzi(res_dlq_text) dlq_num = int(res_dlq) - if dlq_num > 0: - xunhuancishu = dlq_num % 100 - common.shuangbei = True - if xunhuancishu == 0: - print(f"领取双倍一次,余数为:",xunhuancishu) - common.findandclick(res_lingqu) - else: - # 循环 xunhuancishu 次 - for i in range(xunhuancishu): - print(f"领取双倍{xunhuancishu}*", i) - common.findandclick(res_lingqu) - sleep(0.5) + print(f"待领取双倍点数:", dlq_num) + print(f"已领取双倍点数:", ylq_num) - res_ylq_text = common.shizi(shuangbeidianshu_ylq) - if res_ylq_text is None : + # 计算剩余可领取点数 + remaining_points = min(dlq_num, 1000 - ylq_num) + if remaining_points > 0: + # 计算点击次数 + xunhuancishu = remaining_points // 100 + if remaining_points % 100 != 0: + xunhuancishu += 1 + + common.shuangbei = True + for i in range(xunhuancishu): + print(f"领取双倍 100 点, 次数 {i + 1}/{xunhuancishu}") + common.findandclick(res_lingqu) + sleep(0.5) + + if res_ylq_text is None: print("--------------------------双倍点数识别失败-停止抓鬼") common.shuangbei = False common.zhuoguiisover = True common.closeAllbtn() return else: - res_ylq = qushuzi(res_ylq_text) - ylq_num = int(res_ylq) shuangbeidianshu = ylq_num if ylq_num >= 4: print(f"正常领取结束,开始任务", ylq_num) @@ -89,6 +98,7 @@ def lingqu(zuobiao): sleep(1) return + def qushuzi(text): # 使用正则表达式提取数字 match = re.search(r"\d+", text) # 匹配连续的数字 diff --git a/res/img/包裹.png b/res/img/包裹.png index 0238a97..fcc2045 100644 Binary files a/res/img/包裹.png and b/res/img/包裹.png differ diff --git a/res/img/师门-任务按钮.png b/res/img/师门-任务按钮.png deleted file mode 100644 index 7bffa70..0000000 Binary files a/res/img/师门-任务按钮.png and /dev/null differ diff --git a/res/img/师门-关闭.png b/res/img/师门-关闭.png deleted file mode 100644 index 51e4f9a..0000000 Binary files a/res/img/师门-关闭.png and /dev/null differ diff --git a/res/img/师门-去完成.png b/res/img/师门-去完成.png deleted file mode 100644 index f4ba43f..0000000 Binary files a/res/img/师门-去完成.png and /dev/null differ diff --git a/res/img/师门-继续任务.png b/res/img/师门-继续任务.png deleted file mode 100644 index 5307b3b..0000000 Binary files a/res/img/师门-继续任务.png and /dev/null differ diff --git a/res/img/师门.png b/res/img/师门.png deleted file mode 100644 index 458a1d6..0000000 Binary files a/res/img/师门.png and /dev/null differ diff --git a/res/img/师门01.png b/res/img/师门01.png deleted file mode 100644 index ffd2a6e..0000000 Binary files a/res/img/师门01.png and /dev/null differ diff --git a/res/img/师门01png b/res/img/师门01png deleted file mode 100644 index 2dc09ed..0000000 Binary files a/res/img/师门01png and /dev/null differ diff --git a/res/img/师门任务.png b/res/img/师门任务.png deleted file mode 100644 index 1e4c359..0000000 Binary files a/res/img/师门任务.png and /dev/null differ diff --git a/res/img/师门任务1.png b/res/img/师门任务1.png deleted file mode 100644 index 2973fb7..0000000 Binary files a/res/img/师门任务1.png and /dev/null differ diff --git a/res/img/师门任务完成.png b/res/img/师门任务完成.png deleted file mode 100644 index f3a0913..0000000 Binary files a/res/img/师门任务完成.png and /dev/null differ diff --git a/shimen.py b/shimen.py index d45807d..8f122e5 100644 --- a/shimen.py +++ b/shimen.py @@ -7,7 +7,7 @@ from ascript.android.screen import FindImages from ascript.android.screen import FindColors -pngs = ["师门-任务按钮", "使用按钮", "师门任务1", "普陀山", "购买按钮", "上交按钮", "师门01", "摆摊-购买"] +pngs = ["/shimen/师门-任务按钮", "使用按钮", "/shimen/师门任务1", "普陀山", "购买按钮", "上交按钮", "/shimen/师门01", "摆摊-购买"] def shimenrenwu(): @@ -29,7 +29,7 @@ def shimenrenwu(): print("打开活动") if res_huodong: sleep(1) - res_shimen = common.zhaorenwu("师门任务.png") + res_shimen = common.zhaorenwu("/shimen/师门任务.png") if res_shimen is not None: print("找到师门任务") res_wancheng = common.zhaowancheng_text(res_shimen) @@ -44,7 +44,7 @@ def shimenrenwu(): common.findandclick(res_canjia) print("点击参加,师门任务") sleep(1) - res_qwc = zhaobtn(["师门-去完成", "师门-继续任务"]) + res_qwc = zhaobtn(["/shimen/师门-去完成", "/shimen/师门-继续任务"]) if res_qwc is not None: sleep(1) common.findandclick(res_qwc) @@ -76,7 +76,7 @@ def shimenrenwu(): sleep(1) - res_rwwc = common.zhaotu("师门任务完成.png") + res_rwwc = common.zhaotu("/shimen/师门任务完成.png") if res_rwwc is not None: sleep(1) print("师门任务完成") @@ -95,7 +95,7 @@ def shimenrenwu(): def dianjirenwu(): - res_shimen = common.zhaotu("师门.png") + res_shimen = common.zhaotu("/shimen/师门.png") if res_shimen is None: print("没找到-任务列表-师门任务") return diff --git a/zhixian.py b/zhixian.py index 1621eae..edc3c45 100644 --- a/zhixian.py +++ b/zhixian.py @@ -10,43 +10,51 @@ from ascript.android.screen import FindColors # 导入动作模块 from ascript.android import action + def shanghuichushou(shcswp): print("开始商会出售") - res_last = zhaobtn(["包裹","包裹01"]) + res_last = zhaobtn(["包裹", "包裹01"]) if res_last is not None: common.findandclick(res_last) + print("点击包裹") sleep(1) - while True: - res_kcswp = zhaobtn(shcswp) - if res_kcswp is not None: - common.findandclick(res_kcswp) - sleep(1) - res_gd = common.zhaotu("更多.png") - if res_gd is not None: - common.findandclick(res_gd) + num = 0 + while True: + res_kcswp = zhaobtn(shcswp) + if res_kcswp is not None: + common.findandclick(res_kcswp) sleep(1) - - res_shcs = zhaobtn(["商会出售","商会出售01"]) - if res_shcs is not None: - common.findandclick(res_shcs) - sleep(1) - res_man = common.zhaotu("满.png") - if res_man is not None: - common.findandclick(res_man) + res_gd = common.zhaotu("更多.png") + if res_gd is not None: + common.findandclick(res_gd) sleep(1) + + res_shcs = zhaobtn(["商会出售", "商会出售01"]) + if res_shcs is not None: + common.findandclick(res_shcs) + sleep(1) + res_man = common.zhaotu("满.png") + if res_man is not None: + common.findandclick(res_man) + sleep(1) res_chushou = common.zhaotu("出售.png") if res_chushou is not None: common.findandclick(res_chushou) - sleep(2) - res_bbzl = common.zhaotu("背包-整理.png") - if res_bbzl is not None: - common.findandclick(res_bbzl) - sleep(5) - else: - print("没有找到商会出售的道具,进行下一项") - common.closeAllbtn() - return - sleep(1) + sleep(4) + num += 1 + if num >= 5: + res_bbzl = common.zhaotu("背包-整理.png") + if res_bbzl is not None: + common.findandclick(res_bbzl) + sleep(5) + num = 0 + else: + print("没有找到商会出售的道具,进行下一项") + common.closeAllbtn() + return + sleep(1) + else: + print("没有找到包裹,进行下一项") def xiahua():