Skip to content

Latest commit

 

History

History
193 lines (154 loc) · 11.1 KB

howtorun.md

File metadata and controls

193 lines (154 loc) · 11.1 KB

客户端推荐

windows模拟器,LDPlayer模拟器和Bluestack模拟器都挺好的,本身支持的功能也差不多。

  • LDPlayer模拟器
    • LDPlayer有绿色免安装版。
    • 不兼容hyper-v(wsl), 多开也有省电模式,cmd启动比较简单
    • 界面本土化很好,删除旧的虚拟机后,新建的虚拟机会使用旧虚拟机的端口和编号,代码不用调整
    • 缺点: 多开时,只有多开的虚拟机支持5帧省电,主虚拟机还是30帧以上, 综合功耗较高
    • 缺点:用了好几天,突然提示显卡驱动有问题,解决问题的方案是自动下载360驱动
  • Bluestack模拟器
    • 非常稳定
    • Nougat引擎(32 or 64), windows平台模拟器中最省电流畅的,adb的端口固定[5555,5565,5575,...]
    • Pie 64bit引擎, 可以和WSL兼容,adb端口会变,功耗较高
    • 禁用广告的方法删除C:\ProgramData\BlueStacks_nxt\Engine\Nougat32_X\Promotions文件夹的内容,并设置Everyone的权限为禁止
    • 缺点: 删除复制的虚拟机后,新建虚拟机的编号不会使用旧的编号,会导致adb端口变化,如[5555,5575,5585]。需要修改代码LINK_dict[i]=或者重装虚拟机
    • 缺点: 开机界面游戏广告,容易误触
  • 其他模拟器
    • 目前不进行设备管理
    • 可以在代码设置为通过adb reboot管理,但是不同的模拟器对adb reboot的支持不同,需要自己测试

Linux 容器

  • 使用remote-android, 支持arm服务器、openwrt路由器
    • 20240704 王者更新后,会检测wifi连接情况,容器没有wifi和数据,王者认为断网不让打开,暂时无法使用

Mac未发现合适的

移动设备

运行方法

  • 下载最最新代码
  • 如果你的默认设备不是127.0.0.1:5555,可以修改object.py中的auto_airtest函数中的LINK_dict[0]=,或者通过下面终端的方式指定手机的ip和端口
  • 如果使用BlueStack或者LDPlayer模拟器,填入他们的路径可以支持关闭、启动模拟器的功能
BlueStackdir="C:\Program Files\BlueStacks_nxt"
LDPlayerdir="D:\GreenSoft\LDPlayer"
  • 使用BlueStack或者LDPlayer模拟器组队模式,提前打开多个模拟器或者打开对应软件的多开管理器

使用AirTest软件运行

  • 下载地址AirTest
  • 安装模拟器,并在模拟器上安装游戏APP,开启ADB调试,建议分辨率选960x540.
    • 其他分辨率本脚本也可以运行。
  • 用AirTest直接打开object.py进点运行

Alt text Alt text

[推荐]使用命令行运行

控制端

测试稳定平台: Windows/MacOS/Linux(x86)/Linux(aarch64)

python依赖

python -m pip  install -i https://pypi.tuna.tsinghua.edu.cn/simple  airtest
python -m pip  install -i https://pypi.tuna.tsinghua.edu.cn/simple  pathos
python -m pip  install -i https://pypi.tuna.tsinghua.edu.cn/simple  subprocess
# 可选,针对windows平台ctrl+c杀不死python任务设计
python -m pip  install -i https://pypi.tuna.tsinghua.edu.cn/simple  keyboard

控制端的修改

Linux

sudo apt-get install libgl1-mesa-glx

Linux(ARM)

cndaqiang@oracle:~/.local/lib/python3.10/site-packages/airtest/core/android/static/adb/linux$ mv adb adb.bak
cndaqiang@oracle:~/.local/lib/python3.10/site-packages/airtest/core/android/static/adb/linux$ ln -s /usr/bin/adb .

Mac

chmod +x /Users/cndaqiang/anaconda3/lib/python3.11/site-packages/airtest/core/android/static/adb/mac/adb

使用终端运行

  • windows控制端, 推荐替换下面命令中的object.pyrun.py
  • windows单账户可以点击run.bat运行
python -u object.py 2>&1 | tee result

指定设备运行

#无线ADB调试设备
python -u object.py "LINK=Android:///127.0.0.1:5555"
#usb直连的设备
python -u object.py "LINK=Android:///4e86ac13"

n个进程模式

python -u object.py -n 2>&1 | tee result

分散执行n进程模式(适合调试报错)

#每个终端执行
python -u object.py   0   n
python -u object.py   1   n
#...
python -u object.py (n-1) n

debug模式

python -u object.py n 1 # n > 4

文件控制

通过在代码目录创建一些文件来动态调整代码的运行模式,可以实现自动切换分路、选择熟练度最低的英雄,进行王者模拟战等操作

文件控制说明

  • 控制文件 txt 不参与仓库同步, 使用实例
  • 注:所有文件都默认采用UTF8格式编码
文件 功能 备注
self.结束游戏FILE="WZRY.ENDGAME.txt" 本局结束后关闭WZRYAPP, 同时结束对战循环 用户创建
self.SLEEPFILE="WZRY.SLEEP.txt" 本局结束后 sleep(5min) 直到该文件被删除, 用于暂停代码, 手动进行抽奖领礼包 用户创建
self.触摸对战FILE="WZRY.TOUCH.txt" 在对战过程中尝试移动英雄和平A, 通过非挂机的检测判断金币更多. 注: 若前两行存在数字,则移动方向为对应数字 用户创建
self.标准模式触摸对战FILE="WZRY.标准模式TOUCH.txt" 使用标准模式对战, 并在对战过程中尝试移动英雄和平A, 用于满足一些任务对标准人机对战非挂机的检测判断 用户创建
self.临时组队FILE="WZRY.组队.txt" 仅适用于并行组队模式, 现在代码中组队模式仅在每天的前几个小时, 后面如果还想组队又不想重跑程序,可以通过创建该文件恢复组队模式 用户创建
self.无法进行组队FILE = f"WZRY.无法进行组队FILE.txt" 仅适用于并行组队模式, 如果某个账户被顶掉, 则关闭组队功能 程序自动生成删除/用户创建删除
self.青铜段位FILE = f"WZRY.{self.mynode}.青铜段位.txt" 存在则进行青铜人机, 不存在则进行星耀人机 程序自动生成/用户创建
self.标准模式FILE = f"WZRY.{self.mynode}.标准模式.txt" 存在则进行标准人机, 不存在则进行快速人机 用户创建
self.临时初始化FILE = f"WZRY.{self.mynode}.临时初始化.txt" 仅适用于王者荣耀循环对战的开头插入任意自己想添加的代码, 例如更新图片的定义如self.图片 = wzry_figure(prefix=self.prefix, Tool=self.Tool). 亦可在这里强制进行一些计算 用户创建
self.对战前插入FILE = f"WZRY.{self.mynode}.对战前插入.txt" 在对战循环前再次修改配置, 初始化和对战前还是会自动计算相关参数, 这里强制覆盖提高自由度 用户创建
self.重新设置英雄FILE=f"WZRY.{self.mynode}.重新设置英雄.txt" 不修改代码和重启程序, 修改对战过程中使用的英雄, 内容见 WZRY.node.重新设置英雄.py , 通过控制 savepos 来决定是否更新字典 用户创建
sself.重新登录FILE = f"WZRY.{self.mynode}.重新登录FILE.txt" 因为各种原因账户退出后, 程序自动创建, 若存在该文件则等待10min, 直到用户删除 程序自动生成删除/用户创建删除
var_dict_file=f"{self.移动端.设备类型}.var_dict_{self.mynode}.txt" 存储很多图片坐标点的文件, 减少图片识别时间, 删除后重新识别 程序自动生成
self.玉镖夺魁签到=os.path.exists("玉镖夺魁签到.txt") 是否进行玉镖夺魁, 定期的活动 程序自动生成/用户创建
self.免费商城礼包FILE = f"WZRY.{self.mynode}.免费商城礼包.txt" 是否领取每日的免费商城礼包, 领完删除 程序自动生成删除/用户创建
self.KPL每日观赛FILE = f"WZRY.KPL每日观赛FILE.txt" 存在则在礼包结束后进行KPL观赛并领取赛事战令经验, 刷KPL战令, 可将数字填入该文件定义观赛时长 程序自动生成
self.辅助同步文件 = "NeedRebarrier.txt" 同步工具, 单个进程出错创建所有进程重新初始化 程序自动生成/用户创建
self.prefix+"NeedRebarrier.txt" 本进程跳过所有任务, 回到循环开头, 重新初始化 程序出错自动生成/用户创建
self.WZRYPIDFILE = f"WZRY.{self.mynode}.PID.txt" 给本次运行的进程定义一个ID, 如果有新的进程也操纵这个设备, 则结束本进程 程序自动生成
self.独立同步文件 = self.prefix+"NeedRebarrier.txt" 同步工具, 单个进程出错重新初始化 程序自动生成/用户创建
self.图片更新FILE = "WZRY.图片更新.txt" 王者特殊活动时,大厅、对战、开始游戏等按钮会发生变化,用此文件更新,你可以按照自己修改图标,我在一些活动时也会更新图标 用户创建
self.营地初始化FILE=prefix+".初始化.txt"=(mynode)王者营地.初始化.txt 王者营地领取礼物前注入代码, 适合临时活动修改图标 用户创建
self.营地需要登录FILE = prefix+".营地需要登录.txt" 营地账户推出后生成, 存在次文件不领取营地礼包 程序自动生成删除/用户创建删除
self.prefix+"重新登录体验服.txt" 营地需要定期重新登录才可以兑换礼包 程序生成, 用户删除

文件控制运行示例

文件控制脚本功能

备注

刷王者的一些经验

  • 双号组队每周金币获取上限约9105
    • 5v5和模拟战共用金币上限(0/4100)
    • 六国远征、武道大会的金币不受前面限制平均((10个*6国*4次+5个*10局大会)*7天~2030)
    • 每日礼包(挑战35*5*7+日任务150*7+周任务700~2975)
    • 信誉分影响金币上限
  • 如何快速获取货币:
    • 六国远征、武道大会速度最快
    • 触摸形式的5v5人机耗时但是金币也远大于挂机
    • 模拟战也出现过即使最后一名, 金币也很多的情况
  • 模拟战等模式账户之前没有进行过/新赛季, 自己提前操作一下, 避免有变动
  • 自己手打能力测试时, 胜利/金牌可以获得600金币.不受每周金币获取限制
    • 胜利方式: 选英雄走游走, 出肉. 刷阵营, 让对吗中路游走是奕星. 张良等弱势英雄, 对面不能有太多控制(甄姬).
    • 对战难度是最近两个赛季的最高段位, 所以掉段位后手打

一些调试截图

使用MacOS系统控制Iphone和Andriod容器进行组队人机对战

Alt text

控制(0)账户进行模拟战,(1)账户正常5v5人机

Alt text

雷电模拟器:启动多开模拟器、多开组队

Alt text

BlueStack模拟器:启动多开模拟器、多开组队

Alt text