符文筛选 只显示不操作
import os
import pyautogui
import time
import xlrd
#import pyperclip
from PIL import ImageGrab, Image
#import datetime
from paddleocr import PaddleOCR
import paddleocr
import xlsxwriter
import openpyxl
from win32com.client import Dispatch
import keyboard
import CV2
import sys
import re
import logging
import random
import paddle
import skimage
import shapely
def panduan():
dengji=ImageGrab.grab((changdu1+changdu2*0.19,gaodu1+gaodu2*-0.017,changdu1+changdu2*-0.489, gaodu1+gaodu2*0.037))
ewaijiacheng=ImageGrab.grab((changdu1+changdu2*0.079,gaodu1+gaodu2*0.127,changdu1+changdu2*-0.166, gaodu1+gaodu2*0.194))
xiaoguo=ImageGrab.grab((changdu1+changdu2*0.263,gaodu1+gaodu2*0.201,changdu1+changdu2*-0.198, gaodu1+gaodu2*0.382))
file_path1=r"D:\tp1.png"
file_path2=r"D:\tp2.png"
file_path3=r"D:\tp3.png"
dengji.save(file_path1)
ewaijiacheng.save(file_path2)
xiaoguo.save(file_path3)
ocr=PaddleOCR(use_angel_cls=True,lang="ch",use_gpu=False)
res1=ocr.ocr(file_path1,cls=True)
res2=ocr.ocr(file_path2,cls=True)
res3=ocr.ocr(file_path3,cls=True)
try:
dengjiwenben=res1[0][0][1][0]
dengjiwenben=dengjiwenben[0:dengjiwenben.rfind("文")]
except:
dengjiwenben=0
if res2!=[[]]:
ewaijiachengwenben=str(res2[0][0][1][0])
else:
ewaijiachengwenben="0"
try:
shuxing1=quchujinglian(res3[0][0][1][0])
except:
shuxing1="0"
try:
shuxing2=quchujinglian(res3[0][1][1][0])
except:
shuxing2="0"
try:
shuxing3=quchujinglian(res3[0][2][1][0])
except:
shuxing3="0"
try:
shuxing4=quchujinglian(res3[0][3][1][0])
except:
shuxing4="0"
return dengjiwenben,ewaijiachengwenben,shuxing1,shuxing2,shuxing3,shuxing4
def chushidingwei():
quanping=ImageGrab.grab((0,0,2000, 2000))
file_path=r"D:\quanping.png"
quanping.save(file_path)
res=ocr.ocr(file_path,cls=True)
dingweidian1="符文管理"
dingweidian2="变更适用"
dingweidian1gao=0
dingweidian1kuan=0
dingweidian2gao=0
dingweidian2kuan=0
for i in range(0,len(res[0])):
if str(res[0][i][1][0])==dingweidian1:
dingweidian1kuan=(res[0][i][0][0][0]+res[0][i][0][1][0])/2
dingweidian1gao=(res[0][i][0][0][1]+res[0][i][0][2][1])/2
print(dingweidian1kuan)
print(dingweidian1gao)
if str(res[0][i][1][0])==dingweidian2:
dingweidian2gao=(res[0][i][0][0][1]+res[0][i][0][2][1])/2
dingweidian2kuan=(res[0][i][0][0][0]+res[0][i][0][1][0])/2
print(dingweidian2kuan)
print(dingweidian2gao)
return dingweidian1kuan,dingweidian1gao,dingweidian2kuan,dingweidian2gao
def quchujinglian(shuxing):
if shuxing.count("+")==2:
shuxing=shuxing[0:shuxing.rfind("+")]
#print("去除精炼属性:"+str(shuxing))
return shuxing
def fenshu(shuxing):
#判断类型
#sudu
zonghefenshu=0
dashoufenshu=0
fangshoufenshu=0
fuzhufenshu=0
tilifenshu=0
suducanshu=0
try:
if "攻击速度" in shuxing:
zonghefenshu=zonghefenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1.5
dashoufenshu=dashoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1.5
fangshoufenshu=fangshoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1.5
fuzhufenshu=fuzhufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1.5
tilifenshu=tilifenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1.5
if int(''.join(filter(lambda x: x.isdigit(), shuxing)))>=sudubiaozhun1:
suducanshu=1
if "暴击率" in shuxing:
zonghefenshu=zonghefenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1.5
dashoufenshu=dashoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1.5
fangshoufenshu=fangshoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1.5
fuzhufenshu=fuzhufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
tilifenshu=tilifenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
if "暴击伤害" in shuxing:
zonghefenshu=zonghefenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.7
dashoufenshu=dashoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.7
fangshoufenshu=fangshoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.7
fuzhufenshu=fuzhufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
tilifenshu=tilifenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
if "效果命中" in shuxing:
zonghefenshu=zonghefenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.5
dashoufenshu=dashoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
fangshoufenshu=fangshoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
fuzhufenshu=fuzhufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1
tilifenshu=tilifenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
if "效果抵抗" in shuxing:
zonghefenshu=zonghefenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.5
dashoufenshu=dashoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
fangshoufenshu=fangshoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
fuzhufenshu=fuzhufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1
tilifenshu=tilifenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1
if "攻击力" in shuxing:
if "%" in shuxing:
zonghefenshu=zonghefenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1
dashoufenshu=dashoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1
fangshoufenshu=fangshoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.5
fuzhufenshu=fuzhufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
tilifenshu=tilifenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
else:
zonghefenshu=zonghefenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.1
dashoufenshu=dashoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.1
fangshoufenshu=fangshoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
fuzhufenshu=fuzhufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
tilifenshu=tilifenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
if "防御力" in shuxing:
if "%" in shuxing:
zonghefenshu=zonghefenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1
dashoufenshu=dashoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
fangshoufenshu=fangshoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1
fuzhufenshu=fuzhufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1
tilifenshu=tilifenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
else:
zonghefenshu=zonghefenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.1
dashoufenshu=dashoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
fangshoufenshu=fangshoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.1
fuzhufenshu=fuzhufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.1
tilifenshu=tilifenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
if "体力" in shuxing:
if "%" in shuxing:
zonghefenshu=zonghefenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1
dashoufenshu=dashoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
fangshoufenshu=fangshoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
fuzhufenshu=fuzhufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1
tilifenshu=tilifenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1
else:
zonghefenshu=zonghefenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.01
dashoufenshu=dashoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
fangshoufenshu=fangshoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
fuzhufenshu=fuzhufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.01
tilifenshu=tilifenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.01
if "本力" in shuxing:
if "%" in shuxing:
zonghefenshu=zonghefenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1
dashoufenshu=dashoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
fangshoufenshu=fangshoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
fuzhufenshu=fuzhufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1
tilifenshu=tilifenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*1
else:
zonghefenshu=zonghefenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.01
dashoufenshu=dashoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
fangshoufenshu=fangshoufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0
fuzhufenshu=fuzhufenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.01
tilifenshu=tilifenshu+int(''.join(filter(lambda x: x.isdigit(), shuxing)))*0.01
except:
#print("这不是符文吧")
zhuangmozuoyangyixia=1
return zonghefenshu,dashoufenshu,fangshoufenshu,fuzhufenshu,tilifenshu,suducanshu
def maifuwen():
print("卖!")
pyautogui.click(changdu1+changdu2*0.228+shubiaodianjisuijishu,gaodu1+gaodu2*0.001,clicks=1,interval=dianjijiange,duration=0.1,button="left")
pyautogui.click(changdu1+changdu2*0.158+shubiaodianjisuijishu,gaodu1+gaodu2*0.315,clicks=1,interval=dianjijiange,duration=0.1,button="left")
pyautogui.click(changdu1+changdu2*0.422+shubiaodianjisuijishu,gaodu1+gaodu2*0.92,clicks=1,interval=dianjijiange,duration=0.1,button="left")
#转到无标记
pyautogui.click(changdu1+changdu2*-0.442+shubiaodianjisuijishu,gaodu1+gaodu2*0.433,clicks=1,interval=dianjijiange,duration=0.1,button="left")
pyautogui.click(changdu1+changdu2*0.594+shubiaodianjisuijishu,gaodu1+gaodu2*0.647,clicks=1,interval=dianjijiange+0.5,duration=0.1,button="left")
pyautogui.click(changdu1+changdu2*0.599+shubiaodianjisuijishu,gaodu1+gaodu2*0.636,clicks=1,interval=dianjijiange+0.7,duration=0.1,button="left")
pyautogui.click(changdu1+changdu2*0.478+shubiaodianjisuijishu,gaodu1+gaodu2*0.65,clicks=1,interval=dianjijiange+0.7,duration=0.1,button="left")
#pyautogui.click(changdu1+changdu2*0.685+shubiaodianjisuijishu,gaodu1+gaodu2*0.772,clicks=1,interval=dianjijiange,duration=0.1,button="left")
def fenleifuwen4():
print("保留到分类4")
pyautogui.click(changdu1+changdu2*0.228+shubiaodianjisuijishu,gaodu1+gaodu2*0.001,clicks=1,interval=dianjijiange,duration=0.1,button="left")
#pyautogui.click(changdu1+changdu2*0.158+shubiaodianjisuijishu,gaodu1+gaodu2*0.315,clicks=1,interval=dianjijiange,duration=0.1,button="left")
#转到符文4
pyautogui.click(changdu1+changdu2*0.158+shubiaodianjisuijishu,gaodu1+gaodu2*0.69,clicks=1,interval=dianjijiange,duration=0.1,button="left")
#转到符文5
#pyautogui.click(changdu1+changdu2*0.158,gaodu1+gaodu2*0.783,clicks=1,interval=dianjijiange,duration=0.1,button="left")
pyautogui.click(changdu1+changdu2*0.422+shubiaodianjisuijishu,gaodu1+gaodu2*0.92,clicks=1,interval=dianjijiange,duration=0.1,button="left")
pyautogui.click(changdu1+changdu2*0.478+shubiaodianjisuijishu,gaodu1+gaodu2*0.65,clicks=1,interval=dianjijiange+0.7,duration=0.1,button="left")
#pyautogui.click(changdu1+changdu2*0.478+shubiaodianjisuijishu,gaodu1+gaodu2*0.65,clicks=1,interval=dianjijiange+0.7,duration=0.1,button="left")
#pyautogui.click(changdu1+changdu2*0.685+shubiaodianjisuijishu,gaodu1+gaodu2*0.772,clicks=1,interval=dianjijiange,duration=0.1,button="left")
def fenleifuwen5():
print("保留到分类5")
pyautogui.click(changdu1+changdu2*0.228+shubiaodianjisuijishu,gaodu1+gaodu2*0.001,clicks=1,interval=dianjijiange,duration=0.1,button="left")
#pyautogui.click(changdu1+changdu2*0.158+shubiaodianjisuijishu,gaodu1+gaodu2*0.315,clicks=1,interval=dianjijiange,duration=0.1,button="left")
#转到符文4
#pyautogui.click(changdu1+changdu2*0.158+shubiaodianjisuijishu,gaodu1+gaodu2*0.69,clicks=1,interval=dianjijiange,duration=0.1,button="left")
#转到符文5
pyautogui.click(changdu1+changdu2*0.158,gaodu1+gaodu2*0.783,clicks=1,interval=dianjijiange,duration=0.1,button="left")
pyautogui.click(changdu1+changdu2*0.422+shubiaodianjisuijishu,gaodu1+gaodu2*0.92,clicks=1,interval=dianjijiange,duration=0.1,button="left")
pyautogui.click(changdu1+changdu2*0.478+shubiaodianjisuijishu,gaodu1+gaodu2*0.65,clicks=1,interval=dianjijiange+0.7,duration=0.1,button="left")
#pyautogui.click(changdu1+changdu2*0.478+shubiaodianjisuijishu,gaodu1+gaodu2*0.65,clicks=1,interval=dianjijiange+0.7,duration=0.1,button="left")
#pyautogui.click(changdu1+changdu2*0.685+shubiaodianjisuijishu,gaodu1+gaodu2*0.772,clicks=1,interval=dianjijiange,duration=0.1,button="left")
print("请在使用时保证,填写完所有标准后,模拟器or投屏处于符文界面,其中是所有需要处理的符文,且没有不显示分类4和5,并且保证截屏时,左下角的变更适用和右上角的符文管理均显示,且为简体汉字,请开启后不要移动鼠标\n")
print("假如不需要计算精炼属性,则点击符文使属性变为XX(基础属性)+yy(精炼属性),此时会不计算精炼后的属性\n")
qianghua12fenshubiaozhun=input("强化12符文分数:(强化+9自动扣除5分,各分类的标准基于综合分扣除5分,只计算副属性,不考虑符文类型、主属性)\n")
qianghua12fenshubiaozhun=int(qianghua12fenshubiaozhun)
sudubiaozhun=999
global sudubiaozhun1
sudubiaozhun1=int(sudubiaozhun)
dianjijiange1=0.2
shifouchongfu=0
shangyigezonghefenshu=0
logging.disable(logging.DEBUG)
logging.disable(logging.WARNING)
global dianjijiange
dianjijiange=float(dianjijiange1)
pyautogui.FAILSAFE=False
#主程序
#报错
#初始化
ocr=PaddleOCR(use_angel_cls=True,lang="ch",use_gpu=False)
#取定位点
weizhi=chushidingwei()
#设定定位点
global changdu1,gaodu1,changdu2,gaodu2
changdu1=weizhi[0]
gaodu1=weizhi[1]
changdu2=weizhi[2]-weizhi[0]
gaodu2=weizhi[3]-weizhi[1]
pyautogui.click(changdu1+changdu2*0.468,gaodu1+gaodu2*0.645,clicks=1,interval=1,duration=0.1,button="left")
#处理1000次符文
for ii in range(1000):
#防检测用的随机数,但是似乎没用
shubiaodianjisuijishu=random.random()*2
#取属性值
data=panduan()
#符文等级
dengjiwenben=data[0]
#如符文等级不存在则等于0
try:
dengjinum=int(''.join(filter(lambda x: x.isdigit(), dengjiwenben)))
except:
dengjinum=0
#计算属性评分
ewaijiachengwenben=data[1]
shuxing1=data[2]
shuxing2=data[3]
shuxing3=data[4]
shuxing4=data[5]
zonghefenshu=0
dashoufenshu=0
fangshoufenshu=0
fuzhufenshu=0
tilifenshu=0
sudupanduan=0
zonghefenshu=zonghefenshu+fenshu(ewaijiachengwenben)[0]
dashoufenshu=dashoufenshu+fenshu(ewaijiachengwenben)[1]
fangshoufenshu=fangshoufenshu+fenshu(ewaijiachengwenben)[2]
fuzhufenshu=fuzhufenshu+fenshu(ewaijiachengwenben)[3]
tilifenshu=tilifenshu+fenshu(ewaijiachengwenben)[4]
sudupanduan=sudupanduan++fenshu(ewaijiachengwenben)[5]
zonghefenshu=zonghefenshu+fenshu(shuxing1)[0]
dashoufenshu=dashoufenshu+fenshu(shuxing1)[1]
fangshoufenshu=fangshoufenshu+fenshu(shuxing1)[2]
fuzhufenshu=fuzhufenshu+fenshu(shuxing1)[3]
tilifenshu=tilifenshu+fenshu(shuxing1)[4]
sudupanduan=sudupanduan++fenshu(shuxing1)[5]
zonghefenshu=zonghefenshu+fenshu(shuxing2)[0]
dashoufenshu=dashoufenshu+fenshu(shuxing2)[1]
fangshoufenshu=fangshoufenshu+fenshu(shuxing2)[2]
fuzhufenshu=fuzhufenshu+fenshu(shuxing2)[3]
tilifenshu=tilifenshu+fenshu(shuxing2)[4]
sudupanduan=sudupanduan++fenshu(shuxing2)[5]
zonghefenshu=zonghefenshu+fenshu(shuxing3)[0]
dashoufenshu=dashoufenshu+fenshu(shuxing3)[1]
fangshoufenshu=fangshoufenshu+fenshu(shuxing3)[2]
fuzhufenshu=fuzhufenshu+fenshu(shuxing3)[3]
tilifenshu=tilifenshu+fenshu(shuxing3)[4]
sudupanduan=sudupanduan++fenshu(shuxing3)[5]
zonghefenshu=zonghefenshu+fenshu(shuxing4)[0]
dashoufenshu=dashoufenshu+fenshu(shuxing4)[1]
fangshoufenshu=fangshoufenshu+fenshu(shuxing4)[2]
fuzhufenshu=fuzhufenshu+fenshu(shuxing4)[3]
tilifenshu=tilifenshu+fenshu(shuxing4)[4]
sudupanduan=sudupanduan++fenshu(shuxing4)[5]
#规避重复显示
if shangyigezonghefenshu!=zonghefenshu and zonghefenshu!=0:
print("额外属性:"+ewaijiachengwenben)
print("属性1:"+str(shuxing1))
print("属性2:"+str(shuxing2))
print("属性3:"+str(shuxing3))
print("属性4:"+str(shuxing4))
shangyigezonghefenshu=zonghefenshu
shifouchongfu=0
try:
print("符文等级:"+(''.join(filter(lambda x: x.isdigit(), dengjiwenben))))
except:
print("不是符文界面")
print("总评分:"+str(zonghefenshu))
print("打手评分:"+str(dashoufenshu))
print("防守评分:"+str(fangshoufenshu))
print("辅助评分:"+str(fuzhufenshu))
print("体力评分:"+str(tilifenshu))
print("速度是否合格:"+str(sudupanduan))
res=""
qianghua9zonghefenbiaozhun=qianghua12fenshubiaozhun-5
qianghua9fenleifenbiaozhun=qianghua12fenshubiaozhun-10
qianghua12zonghefenbiaozhun=qianghua12fenshubiaozhun
qianghua12fenleifenbiaozhun=qianghua12fenshubiaozhun-5
print("目前标准:12+符文综合评分"+str(qianghua12zonghefenbiaozhun))
print("")
#售卖逻辑
if dengjinum>=9 and dengjinum<11:
if zonghefenshu>qianghua9zonghefenbiaozhun or dashoufenshu>qianghua9fenleifenbiaozhun or fangshoufenshu>qianghua9fenleifenbiaozhun or fuzhufenshu>qianghua9fenleifenbiaozhun or tilifenshu>qianghua9fenleifenbiaozhun or sudupanduan!=0 :
res="保留"
print("+9:合格")
else:
res="卖"
print("+9:不合格")
elif dengjinum>=12:
if zonghefenshu>qianghua12zonghefenbiaozhun or dashoufenshu>qianghua12fenleifenbiaozhun or fangshoufenshu>qianghua12fenleifenbiaozhun or fuzhufenshu>qianghua12fenleifenbiaozhun or tilifenshu>qianghua12fenleifenbiaozhun or sudupanduan!=0:
print("+12:合格")
else:
print("+12:不合格")
else:
print("都没到+9,要不强化一下?")