【脚本玩漆黑的魅影】全自动对战宫殿

文章目录

  • 原理
  • 主要代码
  • 全部代码

在这里插入图片描述

原理

对战宫殿是让宠物自己打,不需要我们选技能,所以用来刷对战点数很合适。
需要准备三个主力。

主要是根据屏幕截图进行各种操作。

1,外面的对话,除了选自由级以外,其他都是直接点A键。
所以要判断一下【自由级这三个字的区域】。

elif is_same_img(img, data_waimian):  # 外面自由级
	press2(DOWN)
	press(A)

在这里插入图片描述

没有这三个字的时候,判断【右上角那个告示栏】。

elif is_same_img(img, data_waimian_2):  # 外面其他
	press(A)

在这里插入图片描述
2,报名的时候选择参战的宠物。判断【可用】两个字。

elif is_same_img(img, data_xuan_ren):
	c.release(ACCELERATE)
	press(A)
	press(A)
	press(DOWN)
	press(A)
	press(A)
	press(DOWN)
	press(A)
	press(A)
	press(A)
	c.press(ACCELERATE)

在这里插入图片描述

3,战斗前的废话,下一场前的废话,随便找一块就行。

if is_same_img(img, data_xiuxi) or is_same_img(img, data_xiuxi_2):  # 休息时候的废话
	press(A)

在这里插入图片描述
在这里插入图片描述
4,战斗中的废话,在右下角找一个绿色的像素点就行。

elif img.getpixel(data_feihua[0]) == data_feihua[1]:  # 战斗废话
	press(A)

在这里插入图片描述
5,战斗。就判断【战斗】那几个字。

elif is_same_img(img, data_zhandou):  # 自动战斗
	press(A)

在这里插入图片描述
6,换人。判断【下面那行字】

elif is_same_img(img, data_huan_ren):
	press2(DOWN)
	press(A)
	press(A)
	press(A)
	press(B)

在这里插入图片描述

主要代码

	img = ImageGrab.grab()
	if is_same_img(img, data_xiuxi) or is_same_img(img, data_xiuxi_2):  # 休息时候的废话
		press(A)
	elif img.getpixel(data_feihua[0]) == data_feihua[1]:  # 战斗废话
		press(A)
	elif is_same_img(img, data_zhandou):  # 自动战斗
		press(A)
	elif is_same_img(img, data_waimian):  # 外面自由级
		press2(DOWN)
		press(A)
	elif is_same_img(img, data_waimian_2):  # 外面其他
		press(A)
	elif is_same_img(img, data_xuan_ren):
		c.release(ACCELERATE)
		press(A)
		press(A)
		press(DOWN)
		press(A)
		press(A)
		press(DOWN)
		press(A)
		press(A)
		press(A)
		c.press(ACCELERATE)
	elif is_same_img(img, data_huan_ren):
		press2(DOWN)
		press(A)
		press(A)
		press(A)
		press(B)

全部代码

main.py

from PIL import ImageGrab

from cai_yang import is_same_img
from core import *
# 脚本核心
def a1():
	global state_can_attack
	img = ImageGrab.grab()
	if is_same_img(img, data_xiuxi) or is_same_img(img, data_xiuxi_2):  # 休息时候的废话
		press(A)
	elif img.getpixel(data_feihua[0]) == data_feihua[1]:  # 战斗废话
		press(A)
	elif is_same_img(img, data_zhandou):  # 自动战斗
		press(A)
	elif is_same_img(img, data_waimian):  # 外面自由级
		press2(DOWN)
		press(A)
	elif is_same_img(img, data_waimian_2):  # 外面其他
		press(A)
	elif is_same_img(img, data_xuan_ren):
		c.release(ACCELERATE)
		press(A)
		press(A)
		press(DOWN)
		press(A)
		press(A)
		press(DOWN)
		press(A)
		press(A)
		press(A)
		c.press(ACCELERATE)
	elif is_same_img(img, data_huan_ren):
		press2(DOWN)
		press(A)
		press(A)
		press(A)
		press(B)
if __name__ == '__main__':
	# 键盘事件处理
	def a0(key):
		if key == kb.Key.f12:
			global state12
			state12 = not state12
			print(f"自动练级:{state12}")
			# 模拟器加速
			if state12:
				c.press(ACCELERATE)
			else:
				c.release(ACCELERATE)
	# 开关
	state12 = False
	# 是否能够战斗
	state_can_attack = True
	# 监听键盘
	with kb.Listener(on_press=a0):
		while True:
			if state12:
				a1()

core.py

import time

from pynput import keyboard as kb

from settings import *
c = kb.Controller()
def press(key, interval=0.2, interval2=0.1):  # 按一下
	c.press(key)
	time.sleep(interval)
	c.release(key)
	time.sleep(interval2)
def press2(key):  # 走一步
	c.release(ACCELERATE)
	press(key, interval2=1)
	c.press(ACCELERATE)

cai_yang.py

from PIL import Image

import random
# 获得采样数据
def cai_yang(target: Image, rec: (int, int, int, int), count):
	result = []
	i = 1
	while i <= count:
		# 随机XY
		x, y = random.randint(rec[0], rec[2]), random.randint(rec[1], rec[3])
		result.append(((x, y), target.getpixel((x, y))))
		i = i + 1
	return result
# 获得对比结果
def is_same_img(img: Image, data):
	for i in data:
		if img.getpixel(i[0]) != i[1]:
			return False
	return True

settings.py

from PIL import Image

from cai_yang import cai_yang
# 图片采样数据
data_xiuxi = cai_yang(Image.open("休息.png"), (753, 478, 1133, 642), 12)
data_xiuxi_2 = cai_yang(Image.open("休息2.png"), (753, 478, 1133, 642), 12)
data_zhandou = cai_yang(Image.open("战斗.png"), (1513, 817, 1792, 916), 12)
data_feihua = ((1525, 820), (72, 152, 120))
data_waimian = cai_yang(Image.open("外面.png"), (1147, 382, 1535, 705), 12)
data_waimian_2 = cai_yang(Image.open("外面.png"), (1508, 205, 1590, 274), 12)
data_xuan_ren = cai_yang(Image.open("选人.png"), (155, 398, 369, 477), 12)
data_huan_ren = cai_yang(Image.open("换人.png"), (53, 917, 805, 1027), 12)
# 键位设置
UP = "w"
DOWN = "s"
LEFT = "a"
RIGHT = "d"
ACCELERATE = "u"
A = "j"
B = "k"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/448205.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第十一个实验:数组和簇的混用,线性

实验内容: 输入5个元素的一维数组 显示每一个元素的值,索引和奇偶类型 第一步:新建项目 第二步:编程 创建一维数组,一共五个元素 ​​​ 选择数组索引部件 判断元素的奇偶性,把元素值,该元素索引和奇偶特性组成簇 复制4份,每一个元素一份

(day 2)JavaScript学习笔记(基础之变量、常量和注释)

概述 这是我的学习笔记&#xff0c;记录了JavaScript的学习过程&#xff0c;我是有一些Python基础的&#xff0c;因此在学习的过程中不自觉的把JavaScript的代码跟Python代码做对比&#xff0c;以便加深印象。我本人学习软件开发纯属个人兴趣&#xff0c;大学所学的专业也非软件…

MySQL技能树学习

MySQL三大范式&#xff1a; 第一范式主要是确保数据表中每个字段的值必须具有原子性&#xff0c;也就是说数据表中每个字段的值为不可再次拆分的最小数据单元。 第二范式是指在第一范式的基础上&#xff0c;确保数据表中除了主键之外的每个字段都必须依赖主键。 第三范式是在…

【设计模式】享元模式的使用场景及与其他共享技术的对比

文章目录 1.概述2.享元模式2.1.核心概念2.2.实现案例2.2.1.内部状态实现2.2.2.外部状态实现 2.3.更多场景 3.享元模式的一些对比3.1.与缓存的区别3.2.与池化技术的区别 4.总结 1.概述 享元模式&#xff08;Flyweight Pattern&#xff09;是一种非常常用的结构型设计模式&#…

实在TARS大模型斩获多项重磅大奖,AI领域实力认可

近日&#xff0c;实在智能TARS&#xff08;塔斯&#xff09;大模型凭借在多个垂直行业场景的优秀落地应用案例&#xff0c;以及AIGC领域的深耕和技术积累&#xff0c;荣获多项重磅大奖。 TARS大模型是是实在智能基于在自然语言处理&#xff08;NLP&#xff09;领域深厚的技术积…

MySQL常见的索引类型介绍

我将为您详细讲解 MySQL 中常见的索引类型&#xff0c;以及它们的使用场景、特点、区别和优势。索引是提高数据库查询性能的关键工具&#xff0c;它可以加速数据检索速度&#xff0c;减少服务器的负担。在 MySQL 中&#xff0c;索引类型主要包括 B-Tree 索引、哈希索引、全文索…

Linux进程概念僵尸进程孤儿进程

文章目录 一、什么是进程二、进程的状态三、Linux是如何做的&#xff1f;3.1 R状态3.2 S状态3.3 D状态3.4 T状态3.5 t状态3.6 X状态3.7 Z状态 四、僵尸进程4.1 僵尸进程危害 五、孤儿进程 一、什么是进程 对于进程理解来说&#xff0c;在Windows上是也可以观察到的&#xff0c…

Java线程的6种状态

线程在生命周期中并不是固定处于某一个状态而是随着代码的执行在不同状态之间切换。 NEW&#xff1a;初始状态&#xff0c;线程被创建出来但没有被调用start()RUNNABLE&#xff1a;运行状态&#xff0c;线程被调用了start()等待运行的状态BLOCKED&#xff1a;阻塞状态&#xf…

新手如何快速上手学习单片机?

读者朋友能容我&#xff0c;不使博文负真心 新开专栏&#xff0c;期待与诸君共享精彩 个人主页&#xff1a;17_Kevin-CSDN博客 专栏&#xff1a;《单片机》 学习单片机是一个有趣且有挑战性的过程。单片机是一种微控制器&#xff0c;广泛应用于各种电子设备和嵌入式系统中。在这…

开源向量数据库介绍

在开源矢量数据库的世界里&#xff0c;有些名字因其性能、灵活性和健壮性而脱颖而出。 1. Milvus Milvus 由 Zilliz 推出&#xff0c;是一款高度可定制的开源矢量数据库&#xff0c;在处理大规模数据方面大放异彩。由于其出色的可扩展性&#xff0c;当你需要处理大量数据时&a…

Python对头发二维建模(考虑风力、重力)

目录 一、背景 二、代码 一、背景 数值方法被用于创建电影、游戏或其他媒体中的计算机图形。例如&#xff0c;生成“逼真”的烟雾、水或爆炸等动画。本文内容是对头发的模拟&#xff0c;要求考虑重力、风力的影响。 假设&#xff1a; 1、人的头部是一个半径为10厘米的球体。…

python学习28

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

llc的基波分析法

对于我们之前分析的 LLC等效谐振电路的分析&#xff0c;其实我们发现分析的并不是完整的方波输入&#xff0c;而是用正弦波来分的 那么为何用基波来分析呢&#xff0c;因为对于方波而言&#xff0c;根据傅里叶级数它是可以分解成基波、 1次、3次、5次.......等各种奇次谐波的入…

《ElementPlus 与 ElementUI 差异集合》el-input 和 el-button 属性 size 有变化

差异 element-ui el-input 和 el-button 中&#xff0c;属性size 值是 medium / small / minielement-plus el-input 和 el-button 中&#xff0c;属性size 值是 ‘large’ | ‘default’ | ‘small’&#xff1b; 如果你是自动升级&#xff0c;Vue3 系统会有如下警告“ el-b…

NLP深入学习:结合源码详解 BERT 模型(一)

文章目录 1. 前言2. BERT 关键流程2.1 整体流程2.2 Pre-training&#xff08;预训练&#xff09;2.2.1 Masked Language Model (MLM)2.2.2 Next Sentence Prediction (NSP) 2.3 Fine-tuning&#xff08;微调&#xff09; 3. 总结4. 参考 1. 前言 BERT&#xff08;Bidirectiona…

访问一次网站的全过程

目录 流程图&#xff1a; 一、应用层开始 1. 在浏览器输入https://www.baidu.com 2. DNS获取IP地址 3. 根据HTTP协议生成HTTP请求报文 应用层结束 二、传输层开始 4. TCP三次握手 传输层结束 三、网络层开始 5. IP寻址 6. ARP协议获取MAC地址 网络层结束 四、数据…

Linux中三次握手,四次挥手状态图,端口复用 半关闭状态,心跳包

tcp三次握手和四次挥手状态图&#xff1a; 为什么需要2MSL&#xff1a; 原因1&#xff1a;让四次挥手过程更加可靠&#xff0c;确保最后一个发送给对方的ACK到达&#xff1b;若对方没有收到ACK应答&#xff0c;对方会再次发送FIN请求关闭&#xff0c;此时在2MSL时间内被动关闭…

实际应用中运放里多余的引脚怎么处理?

实际应用中运放里多余的引脚怎么处理&#xff1f;-电子发烧友网 (elecfans.com)

Python实现图片(合并)转PDF

在日常的工作和学习过程当中,我相信很多人遇到过这样一个很普通的需求,就是将某一个图片转为PDF或者是将多个图片合并到一个PDF文件。但是,在苦苦搜寻一圈之后发现要么要下载软件,下载了还要注册,注册了还要VIP,甚至SVIP才能实现这样的需求! 今天,我带大家把这个功能打…

SSM整合项目(使用Vue3 + Element-Plus创建项目基础页面)

1.配置Vue启动端口 1.修改vue.config.js const {defineConfig} require(vue/cli-service) module.exports defineConfig({transpileDependencies: true }) module.exports {devServer: {port: 9999 //启动端口} }2.启动 2.安装Element Plus 命令行输入 npm install eleme…