Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

文件控制脚本功能 #13

Open
cndaqiang opened this issue Jun 29, 2024 · 4 comments
Open

文件控制脚本功能 #13

cndaqiang opened this issue Jun 29, 2024 · 4 comments

Comments

@cndaqiang
Copy link
Owner

cndaqiang commented Jun 29, 2024

请不要在此issue中提问

有问题,发布一个新的issue

或者查看历史issue

本issue用于额外控制程序的运行

  • 不用修改代码, 添加到一个txt文件即可
  • 不是脚本运行必须的,仅是针对我不同账户的自定义功能
  • 只能使用self.var形式的变量和主程序沟通,否则都是临时变量
@cndaqiang
Copy link
Owner Author

cndaqiang commented Jun 29, 2024

养老账户的 WZRY.N.临时初始化.txt

    1. 无用: 胜利获得的经验、金币、钻石都没用(除非为了完成战令的每期任务、友情币)
    1. 有用: 战令经验(优先获取营地的2000,再去刷王者里的经验)、信誉分(模拟战)
    1. 熟练度只能通过星耀局的人机获得。胜利会阻碍营地的战令经验. 完成战令每期任务后就不刷熟练度了。
#mklink  WZRY.1.临时初始化.txt WZRY.0.临时初始化.txt 创建软连接
#ln -s  WZRY.0.临时初始化.txt WZRY.1.临时初始化.txt 创建软连接
#................................................................................
uptime=23
self.对战时间=[0.1,uptime]
self.限时组队时间=uptime
#................................................................................
#每天组队打0,1,2,...,nstep-1共nstep场,组队5v5匹配
#每天组队打0,1,2,...,ostep-1共ostep场,单人5v5匹配|模拟战
nstep=3
ostep=0  # 为了获得更多的经验,可以将 ostep 设为模拟战 或者 0。
self.对战模式="5v5匹配" if self.jinristep <  nstep else "模拟战"
if self.Tool.time_getweek() == 6: self.对战模式 = "5v5匹配" #周日一直打人机模式
#..................................................................................
# 组队模式
if self.新的一天: self.组队模式 = True
self.组队模式 = self.组队模式 and self.jinristep < nstep
if not self.组队模式: self.限时组队时间=self.对战时间[0]+0.1
if not self.组队模式: self.Tool.touchfile(self.无法进行组队FILE)
#................................................................................
#结束游戏时的操作
endgame = self.jinristep >=  nstep+ostep
if self.mynode >  0: endgame = self.jinristep >=  nstep # 辅助账户退场,节约算力
if os.path.exists(self.青铜段位FILE): endgame = True # 只刷星耀局
if endgame: self.对战时间[1]=self.对战时间[0]+0.1
if endgame and self.mynode == 0: self.Tool.timedict["领营地礼包"] = 0 # 主进程多领一次营地,提高从营地礼包的成功率
if endgame and self.mynode == 0: self.每日礼包_王者营地()
#................................................................................
# 每日任务礼包=False,周末前不领取王者的战令经验,可以额外从营地获取战令经验
self.每日任务礼包=self.Tool.time_getweek() > 5 # 5 == 周六
#................................................................................
#老账户,很多宝箱不用领取了
self.友情礼包_积分夺宝 = True
self.友情礼包_皮肤碎片 = True
self.友情礼包_英雄碎片 = False
#获取铭文、钻石
self.友情礼包_铭文碎片 = True
self.友情礼包_皮肤宝箱 = True
self.友情礼包_回城宝箱 = True
self.友情礼包_击败宝箱 = True

@cndaqiang
Copy link
Owner Author

cndaqiang commented Jun 29, 2024

[全天刷][单纯就是刷友情币][或者单纯刷熟练度][站令任务:击败N名英雄]

WZRY.N.临时初始化.txt

# 全天刷
self.对战时间=[5.0,24.1]
#..........................................................
#下面为组队(友情币)专属
# 全天组队,还想自动领取礼包
# 全天组队时间设置, 对战时间比组队时间长一点,这样可以避免一个结束了,一个在barrier
self.限时组队时间=22.0
if self.Tool.存在同步文件() and not self.王者营地礼包: self.王者营地礼包 = self.每日礼包_王者营地(初始化=True)
if self.Tool.存在同步文件() and self.王者营地礼包: self.每日礼包_王者营地()
if self.组队模式 and not self.Tool.存在同步文件() and self.jinristep % 10 == 9: self.Tool.timedict = self.Tool.bcastvar(self.mynode, self.totalnode_bak, var=self.Tool.timedict, name="Tool.timedict")
if not self.Tool.存在同步文件() and self.jinristep % 10 == 9 : self.每日礼包()

[领取赛季皮肤]

如果是组队全天刷人机来领取赛季皮肤等礼包,在WZRY.N.对战前插入.txt中添加

if self.组队模式: self.触摸对战 = True

@cndaqiang
Copy link
Owner Author

cndaqiang commented Jul 3, 2024

自动调整分路并选择熟练度最低的英雄

  • 利用代码的savepos功能,提前保存分路位置和熟练度最低英雄的位置

对于分辨率为960x540的设备

下载字典.分路.android.var_dict_N.zip后解压在代码目录

使用特定分路

#node为你的编号,一个账户时, node=0
echo 'self.Tool.var_dict = self.Tool.read_dict("字典.对抗.android.var_dict_N.txt")' >> WZRY.node.对战前插入.txt

自动分配字典文件, 实现刷所有位置的熟练度

填入WZRY.node.对战前插入.txt

字典位置文件=[]
字典位置文件.append("字典.中路.android.var_dict_N.txt")     
字典位置文件.append("字典.打野.android.var_dict_N.txt")
字典位置文件.append("字典.发育.android.var_dict_N.txt")     
字典位置文件.append("字典.游走.android.var_dict_N.txt")
字典位置文件.append("字典.对抗.android.var_dict_N.txt")
此步位置文件=(self.runstep+self.mynode)%len(字典位置文件)
TimeECHO(f"本步{self.runstep}使用字典文件{字典位置文件[此步位置文件]}")
#当游戏界面改版时,很多位置会变,这里只读入对战的字典
dictfile=self.Tool.read_dict(字典位置文件[此步位置文件])
for key in ["参战英雄线路","参战英雄头像"]: self.Tool.var_dict[key]=dictfile[key]
#批量更新字典
#更新字典
dictfile.update(self.Tool.var_dict)
self.Tool.save_dict(dictfile, 字典位置文件[此步位置文件])
#for 此步位置文件 in range(len(字典位置文件)):self.Tool.var_dict.update(self.Tool.read_dict(字典位置文件[此步位置文件]));self.Tool.save_dict(self.Tool.var_dict, 字典位置文件[此步位置文件])

制作自己的字典文件

  • 其他分辨率的设备或者添加新英雄后,需要制作自己的字典文件

以中路的英雄为例

修改 WZRY.node.重新设置英雄.txt

tmp_参战英雄线路=Template(r"tpl1689665455905.png", record_pos=(-0.066, -0.256), resolution=(960, 540)) #中路
tmp_参战英雄头像=Template(r"tpl1719475760580.png", record_pos=(-0.36, 0.131), resolution=(960, 540))
savepos=True #是否更新原始字典文件
tag="tmp"
if savepos: tag=""
if tag+"参战英雄线路" in self.Tool.var_dict.keys(): del self.Tool.var_dict[tag+"参战英雄线路"]
if tag+"参战英雄头像" in self.Tool.var_dict.keys(): del self.Tool.var_dict[tag+"参战英雄头像"]

self.Tool.existsTHENtouch(tmp_参战英雄线路,tag+"参战英雄线路",savepos=savepos)
if not self.Tool.existsTHENtouch(tmp_参战英雄头像,tag+"参战英雄头像",savepos=savepos): sleep(2)
if not self.Tool.existsTHENtouch(tmp_参战英雄头像,tag+"参战英雄头像",savepos=savepos): sleep(2)
if not self.Tool.existsTHENtouch(tmp_参战英雄头像,tag+"参战英雄头像",savepos=savepos): sleep(2)
sleep(1)

当游戏显示选择成功后,cp android.var_dict_0.txt 字典.中路.android.var_dict_N.txt

@cndaqiang
Copy link
Owner Author

cndaqiang commented Jul 18, 2024

特殊活动的对战要求: 使用选择特定英雄

WZRY.1.重新设置英雄.txt

tmp_参战英雄线路=Template(r"tpl1689665490071.png", record_pos=(-0.315, -0.257), resolution=(960, 540)) #对抗路
tmp_参战英雄头像=Template(r"tpl1721274597136.png",dirname="untitled.air", record_pos=(-0.082, -0.188), resolution=(960, 540))

savepos=False #是否更新原始字典文件
tag="tmp"
if savepos: tag=""
if tag+"参战英雄线路" in self.Tool.var_dict.keys(): del self.Tool.var_dict[tag+"参战英雄线路"]
if tag+"参战英雄头像" in self.Tool.var_dict.keys(): del self.Tool.var_dict[tag+"参战英雄头像"]
#
#
self.Tool.existsTHENtouch(tmp_参战英雄线路,tag+"参战英雄线路",savepos=savepos)
if not self.Tool.existsTHENtouch(tmp_参战英雄头像,tag+"参战英雄头像",savepos=savepos): sleep(2)
if not self.Tool.existsTHENtouch(tmp_参战英雄头像,tag+"参战英雄头像",savepos=savepos): sleep(2)
if not self.Tool.existsTHENtouch(tmp_参战英雄头像,tag+"参战英雄头像",savepos=savepos): sleep(2)
sleep(1)
#self.Tool.removefile(self.重新设置英雄FILE)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant