| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- import threading
- import time
- from model.global_manager import GM
- from model.helper import MyHelper
- from net.task_api import task_api
- from tools.log import logger
- class Task:
- _lock = threading.Lock()
- def __init__(self, helper: MyHelper):
- self.helper = helper
- self.error_count = 0
- def run(self):
- try:
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]任务开始",self.helper.window_id)
- for _ in range(1):
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]模拟器还原",self.helper.window_id)
- # 模拟器还原、改机、切换地区、启动加锁,主要避免还原和启动时的高硬盘读写以及切换Ip地区时刷新节点的频率
- with self._lock:
- result, message = self.helper.restore_emulator()
- if not result:
- logger.exception(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]模拟器还原失败,错误信息:{message}")
- break
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]模拟器还原成功",self.helper.window_id)
- time.sleep(1)
- #改机
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]模拟器改机",self.helper.window_id)
- result, message = self.helper.modify_emulator()
- if not result:
- logger.exception(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]模拟器改机失败,错误信息:{message}")
- break
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]模拟器改机成功",self.helper.window_id)
- time.sleep(1)
- #切换地区
- if GM.device_info.use_wuyouip == '1':
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]模拟器切换地区",self.helper.window_id)
- result, message = self.helper.switch_emulator_area()
- if not result:
- logger.error(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]切换模拟器地区失败,错误信息:{message}")
- break
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]模拟器地区切换成功",self.helper.window_id)
- time.sleep(1)
- #启动
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]模拟器启动",self.helper.window_id)
- with self._lock:
- result, message = self.helper.start_emulator_and_set_position()
- if not result:
- logger.error(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]模拟器启动失败,错误信息:{message}")
- up_log_profession = task_api.up_log_profession(self.helper.account_info.account, self.helper.game_config.task_id, '启动模拟器', '失败')
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]上报关键日志-{up_log_profession}",self.helper.window_id)
- self.helper.upload_device_log(status=0)
- break
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]模拟器启动成功",self.helper.window_id)
- up_log_profession = task_api.up_log_profession(self.helper.account_info.account, self.helper.game_config.task_id,'启动模拟器', '成功')
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]上报关键日志-{up_log_profession}",self.helper.window_id)
- self.helper.upload_device_log(status=1)
- time.sleep(1)
- #上报设备信息
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]上报设备信息:{self.helper.upload_log.upload_log.to_dict()}",self.helper.window_id)
- # time.sleep(10)
- #
- # result, message = self.helper.confirm_emulator_area()
- # if not result:
- # logger.error(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]确认模拟器地区错误,错误信息:{message}")
- # break
- time.sleep(1)
- #大漠绑定
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]执行脚本-大漠绑定",self.helper.window_id)
- result, message = self.helper.bind_emulator()
- if not result or message != 1:
- logger.exception(f'[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]执行脚本"大漠绑定"失败,返回:{message}')
- break
- logger.info(f'[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]执行脚本-大漠绑定-成功,返回:{message}',self.helper.window_id)
- time.sleep(1)
- #启动游戏
- logger.info(f'[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]执行脚本-启动游戏',self.helper.window_id)
- result, message = self.helper.start_game()
- if not result or message != 1:
- self.helper.upload_log.upload_start_game_log(status=0)
- logger.exception(f'[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]执行脚本-启动游戏-失败,错误信息:{message}')
- break
- self.helper.upload_log.upload_start_game_log(status=1)
- logger.info(f'[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]执行脚本-启动游戏-成功,返回:{message}',self.helper.window_id)
- time.sleep(1)
- #登录游戏
- logger.info(f'[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]执行脚本-登录游戏',self.helper.window_id)
- result, message = self.helper.login_game()
- if not result or message != 1:
- logger.exception(f'[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]执行脚本-登录游戏-失败,错误信息:{message}')
- self.helper.upload_log.upload_longin_log(status=0)
- break
- logger.info(f'[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]执行脚本-登录游戏-成功,返回:{message}',self.helper.window_id)
- self.helper.upload_log.upload_longin_log(status=1)
- time.sleep(1)
- #执行主线任务
- logger.info(f'[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]执行脚本-教程主线',self.helper.window_id)
- result, message = self.helper.main_task()
- if not result:
- self.helper.upload_log.upload_main_log(status=0)
- logger.exception(f'[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]执行脚本-教程主线-失败,错误信息:{message}')
- break
- self.helper.upload_log.upload_main_log(status=1)
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]执行脚本-教程主线-成功,返回:{message}",self.helper.window_id)
- #上报新增留存状态
- if self.helper.account_info.retained == 0:
- result = task_api.up_log_profession(self.helper.account_info.account, self.helper.game_config.task_id,
- '教程主线', '新增成功')
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]上报账号-新增成功:{result}",self.helper.window_id)
- else:
- result = task_api.up_log_profession(self.helper.account_info.account, self.helper.game_config.task_id,
- '教程主线', '留存成功')
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]上报账号-留存成功:{result}",self.helper.window_id)
- except Exception as e:
- logger.exception(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]任务异常:{e}",self.helper.window_id)
- finally:
- time.sleep(1)
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]关闭模拟器",
- self.helper.window_id)
- self.helper.close_emulator_and_confirm()
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]模拟器已关闭",
- self.helper.window_id)
- GM.set_emulator_status(f'{self.helper.emulator_type}-{self.helper.emulator_index}', 0)
- GM.set_window_status(self.helper.window_id, 0)
- logger.info(f"[窗口-{self.helper.window_id}][模拟器-{self.helper.emulator_index}]任务结束",
- self.helper.window_id)
- time.sleep(3)
|