def lose_feature(self, screen): from core.constant import p duiwu_icon = p(851, 36, img="img/fight/duiwu_icon.bmp", at=(828, 17, 871, 52)) shbg = p(731, 37, img="img/fight/shbg.bmp", at=(684, 23, 778, 51)) return self.is_exists(duiwu_icon, screen=screen) and self.is_exists( shbg, screen=screen)
def get_stars(screen=None): from core.constant import PCRelement as p five_stars = { 1: p(170, 337), 2: p(209, 337), 3: p(243, 335), 4: p(281, 336), 5: p(320, 335), } return int(self.count_stars(five_stars, screen))
def win_feature(self, screen): from core.constant import p huodedaoju = self.is_exists(p(img="img/fight/huodedaoju.bmp", at=(442, 135, 514, 160)), screen=screen) xiayibu = self.is_exists(p(img="img/fight/xiayibu.bmp", at=(794, 475, 864, 502)), screen=screen) jrtssy = self.is_exists(MAIN_BTN["jrtssy2"], screen=screen) return huodedaoju or (xiayibu or jrtssy)
def lose_feature(self, screen): from core.constant import p duiwu_icon_1 = p(910, 35, img="img/fight/duiwu_icon.bmp", at=(896, 25, 924, 44)) shbg_1 = p(790, 37, img="img/fight/shbg.bmp", at=(754, 26, 826, 48)) duiwu_icon_2 = p(850, 35, img="img/fight/duiwu_icon.bmp", at=(836, 25, 864, 44)) shbg_2 = p(730, 37, img="img/fight/shbg.bmp", at=(694, 26, 766, 48)) return (self.is_exists(duiwu_icon_1, screen=screen) and self.is_exists(shbg_1, screen=screen)) or \ (self.is_exists(duiwu_icon_2, screen=screen) and self.is_exists(shbg_2, screen=screen))
def guozhuxianjuqing(self, type="zhuxian"): self.lock_home() while True: self.click_btn(MAIN_BTN["juqing"], until_appear=(JUQING_BTN["zhuxianjuqing"])) if self.is_exists("img/ui/xinneirong.bmp", at=(462, 70, 495, 87)): self.click_btn((JUQING_BTN["zhuxianjuqing"]), until_appear=(JUQING_BTN["wanfa"])) self.click(765, 125) time.sleep(3) r_list = self.img_where_all(img="img/juqing/new_content.bmp") x_arg = int(r_list[0]) + 200 y_arg = int(r_list[1]) + 50 self.click_btn(p(x_arg, y_arg), until_appear=(JUQING_BTN["quxiao"])) self.guojuqing(story_type="zhuxian") else: self.log.write_log('info', "无新剧情") break self.lock_home()
def CustomTask(self: "Automator", a: int = 10, b: str = "字符串类型变量b的默认值", var: Optional[dict] = None): """ 这是一个样例任务 :param self: Automator本体,必须要有,通过self.XXX进行脚本控制。 :param a: 测试用变量 :param b: 测试用变量 :param var: 中断恢复字典,利用movevar可以存取相关信息 return: None 啥都不返回 """ print("这是一个样例程序。") print("--------------------------------------------------------------------") print("在__valid__中定义了a,b两个变量,它们已经被成功传入了。") print("a: ", a) print("b: ", b) print("--------------------------------------------------------------------") print("一个完整的脚本必须以self.lock_home()开头。") print("这条语句将会让PCR回到主界面。") self.lock_home() print("--------------------------------------------------------------------") print("利用movevar可以保存一些变量,记录程序运行的状态。") print("先定义一个Handle") mv = movevar(var) print("setflag命令可以做一个标记。") print("使用mv.flag和mv.notflag命令可以判断一个标记是否被标记过") if mv.notflag("flag1"): print("做了一些事情。") mv.setflag("flag1") print("setflag将会把标记写入rec文件,如果程序中断,再次进入该脚本时,") print("程序会自动将之前的标记从文件中读入,传给var参数。") print("如果已经执行过setflag,则notflag将会返回False") print("这一段文字将不会被输出第二次。") if mv.notflag("flag2"): print("又做了一些事情。") mv.setflag("flag2") print("反复使用notflag - setflag可以很方便地让脚本按顺序执行一系列指令,") print("且已经执行过的指令不会执行第二次。") mv.clearflags() print("一定记住最后需要执行clearflags,不然之前做的标记将会一直伴随脚本执行后续的任务,") print("如果后续任务中也存在相关的flag指令,则会受到此任务的影响,可能会跳过一些任务。") print("--------------------------------------------------------------------") print("当然也可以手动存储一些命令。") var["times"] = 0 print("调用save命令可以手动将其存入rec文件。") mv.save() print("使用regflag命令将该变量注册为flag,") print("则此后调用clearflags时,就会自动将该变量从字典中删去。") print("也可以不注册,手动使用 del var[...] 后mv.save也行。") mv.regflag("times") mv.clearflags() print("--------------------------------------------------------------------") print("movevar所保存的变量将会在该task全部执行完成后自我销毁。") print("使用AutomatorRecorder可以长久保存一些变量。") print("self.AR可以调出这个对象。") print("AR.get(key,default) 将会调取静态存储中key的值,若key不存在,返回default。") print("在constant.py的USER_DEFAULT_DICT中有一些在其它task中被使用的key,下以此举例。") from core.constant import USER_DEFAULT_DICT as UDD print("获取一些时间状态。") status = self.AR.get("time_status", UDD["time_status"]) print("输出上次捐赠的时间。") from datetime import datetime if status["juanzeng"] == 0: print("还未捐赠。") else: print("上次捐赠时间:", datetime.fromtimestamp(status["juanzeng"]).strftime("%Y-%m-%d %H:%M:%S")) print("使用AR.set可以将某值保存在静态存储区域中。") print("比如希望增加一条刷图记录:已经刷了H1-1了。") status = self.AR.get("daily_status", UDD["daily_status"]) print("记录1-1刷了3次。") status["hard"]["1-1"] = 3 print("保存到文件。") self.AR.set("daily_status", status) print("--------------------------------------------------------------------") print("以下为一些基础指令:") print("click指令:点击(x,y),在那之前延迟pre_delay秒,在那之后延迟post_delay秒。") self.click(1, 1, pre_delay=2, post_delay=2) print("可以使用PCRElement的格式(推荐)进行传参。") print("在constant中已经出现了很多例子了,可以参考。") from core.constant import PCRelement as p left_up_point = p(1, 1) print("用constant的方式实现click:") self.click(left_up_point, pre_delay=2, post_delay=2) print() print("is_exists指令:判断某个图片是否存在。") print("使用screencut截图小工具可以轻松获得某一个图片的PCRelemnt格式。") print("在constant.py中也有大量已经存在的元素。") print("如演示:判断礼物图标是否存在:") liwu = p(908, 432, img="img/home/liwu.bmp", at=(891, 417, 927, 448)) if self.is_exists(liwu): print("liwu图标存在!") else: print("未找到liwu图标!") print() print("lock_img指令:循环直到img出现。") print("以下代码会不断循环检测直到liwu出现,并且每隔8秒点击left_up_point。") self.lock_img(liwu, elseclick=left_up_point, elsedelay=8) print("lock_no_img同理,只不过为循环直到img消失。") print() print("click_btn指令:按下某一个元素。") print("以下代码节选自self.enter_zhuxian,进入主线地图。") from core.constant import MAIN_BTN, MAOXIAN_BTN print("如果设置了until_appear,则会等待其出现,在那之前不断尝试按下按钮。") print("以下命令表示按下主页下方冒险按钮,直到主线的三个人头图片出现。") self.click_btn(MAIN_BTN["maoxian"], until_appear=MAIN_BTN["zhuxian"]) # 进入地图 print("如果还设置了wait_self_before,则在不断点击按钮之前还会先检测本身是否已经出现,防止误操作。") self.click_btn(MAIN_BTN["zhuxian"], wait_self_before=True, until_appear=MAOXIAN_BTN["ditu"]) print("如果没有设置until_appear,则为按下按钮等待自己消失。") print("更多细节请见click_btn的doc。") print() print("--------------------------------------------------------------------") print("如果需要记录log,可以使用以下指令:") self.log.write_log('info', 'This is info.') self.log.write_log('warning', 'This is WARNING') self.log.write_log('error', 'ERROR!') print("--------------------------------------------------------------------") print("在执行完全部任务后,别忘了回到主页。") self.lock_home() print("以及记得清除flag。") mv.clearflags() print("--------------------------------------------------------------------")
def win_feature(self, screen): from core.constant import p duiwu_icon = p(img="img/fight/duiwu_icon.bmp", at=(896, 78, 924, 97)) shbg = p(850, 37, img="img/fight/shbg.bmp", at=(814, 26, 886, 48)) return self.is_exists(duiwu_icon, screen=screen) and self.is_exists(shbg, screen=screen)
def lose_feature(self, screen): from core.constant import p duiwu_icon = p(910, 35, img="img/fight/duiwu_icon.bmp", at=(896, 25, 924, 44)) shbg = p(790, 37, img="img/fight/shbg.bmp", at=(754, 26, 826, 48)) return self.is_exists(duiwu_icon, screen=screen) and self.is_exists(shbg, screen=screen)
def win_feature(self, screen): from core.constant import p huodedaoju = p(img="img/fight/huodedaoju.bmp", at=(442, 135, 514, 160)) xiayibu = p(img="img/fight/xiayibu.bmp", at=(794, 475, 864, 502)) return self.is_exists(huodedaoju, screen=screen) and self.is_exists(xiayibu, screen=screen)