Python-阴阳师御魂副本自动挂机脚本-仅供个人学习交流

本文主要是介绍Python-阴阳师御魂副本自动挂机脚本-仅供个人学习交流,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

顺手分享一下个人学习python语言后的一点成果

鼠鼠我玩阴阳师也有七年了,见过抓包修改伤害数值,也见过游戏加速,某宝上的各种自动挂机辅助也尝试过。绝大部分的科技鼠鼠都有过被鬼使黑制裁的经历,不得不说阴阳师在反外挂反辅助这方面确实是下了很大功夫,即便所谓的 “物理外挂” 也照样制裁。我认为官方判定辅助的根据之一是固定规律的点击行为,就算很多科技鼠鼠从云手机上的辅助APP转移到安卓虚拟机+windows辅助软件的作弊方式也有一定概率被制裁

运行所需的python版本只要不是太旧的应该没问题,所需的 pyautogui 库在0.9.41版本以上的即可,用 try 函数抓住了图像识别时识别失败会报错的情况。功能还在进一步完善,目前的脚本不支持多开的阴阳师

脚本需要用到参考图,鼠鼠们在拷贝下代码保存成文件后还要手动截图模拟器里的一些图片,图片放在python脚本同一路径下即可。我把需要的一些图片大致放在这,因为考虑到分辨率不同的原因,所以需要鼠鼠们动手在自己电脑上的阴阳师进行截图,截图并不多,代码行也有注释相应功能的图片。需要注意命名和后缀别弄错了

其中的 talk1.png 和 talk.png 分别是战斗过程中上方的聊天图标和打开聊天频道后点击收缩的图标,box.png 就是打开聊天频道下方的输入框,经常玩的鼠鼠应该清楚这些图片。加入这些是为了在一定场数之后随机在公屏上发言,模拟真实玩家的行为。默认设定的是 22倍数的场次会打开对话框向公屏输出内容

import pyautogui
import random
import time# 单人模式
def auto_one(times):# 脚本运行时战斗计数,默认为0num = 0# 脚本运行总时长计时开始start = time.time()while True:if num != times:num += 1time_start = begin(num)# 点击开始后延迟5stime.sleep(random.randint(13, 18))end_one()else:print("已成功运行%d次战斗" % num)break# 脚本运行总时长计时结束end = time.time()time_all = end - startprint("本次脚本使用总耗时", seconds_to_time(time_all))print("注意查收鬼使黑的来信!")# 组队模式
def auto_two(times):# 脚本运行轮次计数,默认为0num = 0# 脚本运行总时长计时开始start = time.time()while True:if num != times:num += 1time_start = begin(num)# 点击开始后延迟5s-8stime.sleep(random.randint(5, 8))end_tow()else:print("已成功进行%d次战斗" % num)break# 脚本运行总时长计时结束end = time.time()time_all = end - startprint("本次脚本使用总耗时", seconds_to_time(time_all))print("注意查收鬼使黑的来信!")# 单人和组队模式开始均使用此函数
def begin(num):error = 0while 1:if pattern == 2:while 1:try:location_begin1 = pyautogui.locateCenterOnScreen('tiaozhan.jpg', confidence=0.7)#组队界面挑战按钮if location_begin1 is not None:pyautogui.click(random.randint(location_begin.x, location_begin.x + 1),random.randint(location_begin.y - 1, location_begin.y), clicks=random.randint(1, 2),interval=0.2,duration=0.2)# 记录本次战斗开始时间time.time()print("已开始第%d次战斗" % num)print("等待战斗中.......")# 返回本次战斗开始时间if (num % 22)==0 :          #当次数到达22的倍数时,会打开对话框打字聊天talk()return time_startexcept pyautogui.ImageNotFoundException:error += 1time.sleep(5)if error >= 5:print("错误次数达到5次,脚本异常结束")return print("检测失败")if pattern == 1:while 1:try:# 如果检测到了”单人挑战“按钮location_begin = pyautogui.locateCenterOnScreen('begin.png', confidence=0.7)    #单人挑战按钮if location_begin is not None:# 随机延迟1-3stime.sleep(random.randint(1, 3))pyautogui.click(random.randint(location_begin.x, location_begin.x + 3),random.randint(location_begin.y - 3, location_begin.y),clicks=random.randint(1, 2), interval=0.2, duration=0.3)# 记录本次战斗开始时间time_start = time.time()print("已开始第%d次战斗" % num)print("等待战斗中.......")# 返回本次战斗开始时间time.sleep(random.randint(3, 5))if (num % 22)==0 :          #当次数到达22的倍数时,会打开对话框打字聊天talk()return time_startexcept pyautogui.ImageNotFoundException:print("检测失败")# 单人模式结束
def end_one():while 1:try:location_continue1 = pyautogui.locateCenterOnScreen('continue_tx.png', confidence=0.7)if location_continue1 is not None:time.sleep(random.randint(2, 4))pyautogui.click(random.randint(location_continue1.x , location_continue1.x + 10),random.randint(location_continue1.y - 8, location_continue1.y),clicks=random.randint(1, 3),interval=0.2, duration=0.2)time.sleep(random.randint(1, 2))breakexcept pyautogui.ImageNotFoundException:print("等待战斗结束2")# 组队模式结束
def end_tow():while 1:try:location_continue1 = pyautogui.locateCenterOnScreen('continue_tx.png', confidence=0.7)if location_continue1 is not None:time.sleep(random.randint(2, 4))pyautogui.click(random.randint(location_continue1.x , location_continue1.x + 10),random.randint(location_continue1.y - 8, location_continue1.y),clicks=random.randint(1, 3),interval=0.2, duration=0.2)time.sleep(random.randint(1, 2))breakexcept pyautogui.ImageNotFoundException:print("等待战斗结束2")

上下两部分代码合并一块即可,talk 函数是为了模拟玩家在公屏上发言,具体的发言内容可以自行修改,鼠鼠我把功能弄成逐字输入的方式,并没有设置成一整句话直接粘贴上去

def talk():try:location_begin12 = pyautogui.locateCenterOnScreen('talk1.png', confidence=0.8)if location_begin12 is not None:pyautogui.click(random.randint(location_begin12.x + 1, location_begin12.x - 1),random.randint(location_begin12.y - 1, location_begin12.y + 1), clicks=1)location_begin14 = pyautogui.locateCenterOnScreen('box.jpg', confidence=0.8)if location_begin14 is not None:pyautogui.click(random.randint(location_begin14.x + 2, location_begin14.x - 2 ),random.randint(location_begin14.y - 1, location_begin14.y + 1), clicks=1)shuliang = random.randint(1, 7)if shuliang == 1:pyautogui.typewrite(['今', '天', '给', '的', '御', '魂', '都', '很', '水','enter'], interval=0.2)if shuliang == 2:pyautogui.typewrite(['有', '点', '非', '啊', '今', '天', 'enter'], interval=0.2)if shuliang == 3:pyautogui.typewrite(['6', '6', '6', 'enter'], interval=0.2)if shuliang == 4:pyautogui.typewrite(['年', '年', '有', '余', 'enter'], interval=0.2)if shuliang == 5:pyautogui.typewrite(['应', '声', '虫', 'enter'], interval=0.2)if shuliang == 6:pyautogui.typewrite(['吸', '点', '欧', '气', 'enter'], interval=0.2)if shuliang == 7:pyautogui.typewrite(['牛', '牛', 'enter'], interval=0.2)location_begin13 = pyautogui.locateCenterOnScreen('talk.png', confidence=0.7)if location_begin13 is not None:pyautogui.click(random.randint(location_begin14.x + 1, location_begin14.x - 1 ),random.randint(location_begin14.y - 1, location_begin14.y + 1), clicks=1)except pyautogui.ImageNotFoundException:print("对话失败")return end_one()# 将 秒 转换为 时 分 秒
def seconds_to_time(seconds):m, s = divmod(seconds, 60)h, m = divmod(m, 60)return ("%d:%02d:%02d" % (h, m, s))if __name__ == '__main__':pyautogui.FAILSAFE = Trueprint("欢迎使用本脚本!!!!")print("请选择以下对应序号模式")print("1、单人模式   2、组队模式")while True:pattern = int(input())if (pattern == 1 or pattern == 2):if pattern == 1:print("*********************************")print("已进入单人模式")elif pattern == 2:print("*********************************")print("已进入组队模式")breakelse:print("输入有误,请输入1或2:")print("请输入脚本运行次数:")print("输入-1表示无限循环")times = int(input())print("*********************************")print("即将开始运行,请保证游戏画面存着于屏幕")if pattern == 1:auto_one(times)elif pattern == 2:auto_two(times)

鼠鼠我想提醒不要一下子刷太猛,场数逐日增加才不容易被鬼使黑制裁。建议在猛刷的前一天先在移动设备上手动刷一些,并且在战斗结算画面时,单击和双击混合。没有辅助是百分百防封的,有时候会很看运气。由于这个脚本是公开的,如果有鼠鼠想长期使用,建议是具备一定的代码基础对里面的一些数值进行修改,或者添加其他的行为来模仿真实玩家的操作。后续可能会加入模拟器后台运行也能被脚本正常识别 以及 不占用鼠标的功能。

如果有疑问欢迎来交流,代码质量一般请别介意。祝点赞的鼠鼠们早日出18速招财头。

这篇关于Python-阴阳师御魂副本自动挂机脚本-仅供个人学习交流的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/849217

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数