genshin_auto_fish
genshin_auto_fish copied to clipboard
可以把【甩钩、收杆人为操作】,【自动拉条】分离吗
甩钩乱甩,瞄准半天,收杆过早; 而和鱼拔河的时候,拉条效果很好; 希望能把抛竿和拉条功能分离, 可以人为的抛竿、收杆,提高效率
甩钩、收杆有些智障, 改一下 fish.py
中的代码就可以了
def start_fishing(predictor, agent, bite_timeout=20):
ff = FishFind(predictor)
env = Fishing(delay=0.1, max_step=10000, show_det=True)
# winsound.Beep(500, 500)
# keyboard.wait('r')
while True:
winsound.Beep(500, 500)
keyboard.wait('r')
# ff.do_fish()
# winsound.Beep(700, 500)
# times = 0
# while True:
# if env.is_bite():
# break
# time.sleep(0.5)
# times += 1
# if times > bite_timeout:
# env.drag()
# time.sleep(3)
# ff.do_fish(fish_init=False)
# times = 0
# winsound.Beep(900, 500)
# env.drag()
# time.sleep(1)
state = env.reset()
for i in range(env.max_step):
state = torch.FloatTensor(state).unsqueeze(0)
action = agent(state)
action = torch.argmax(action, dim=1).numpy()
state, reward, done = env.step(action)
if done:
break
time.sleep(3)
同请求, 而且改了貌似没什么用
甩钩、收杆有些智障, 改一下
fish.py
中的代码就可以了def start_fishing(predictor, agent, bite_timeout=20): ff = FishFind(predictor) env = Fishing(delay=0.1, max_step=10000, show_det=True) # winsound.Beep(500, 500) # keyboard.wait('r') while True: winsound.Beep(500, 500) keyboard.wait('r') # ff.do_fish() # winsound.Beep(700, 500) # times = 0 # while True: # if env.is_bite(): # break # time.sleep(0.5) # times += 1 # if times > bite_timeout: # env.drag() # time.sleep(3) # ff.do_fish(fish_init=False) # times = 0 # winsound.Beep(900, 500) # env.drag() # time.sleep(1) state = env.reset() for i in range(env.max_step): state = torch.FloatTensor(state).unsqueeze(0) action = agent(state) action = torch.argmax(action, dim=1).numpy() state, reward, done = env.step(action) if done: break time.sleep(3)
确实是,这样子效率还是可以的,不错
手动抛竿,然后拉杆,出现拉力条,正常拉一下,按一下r就自动了
要正常拉力,在中间
@qilishidai 优化了一下您的修改,注释原有的def start_fishing
函数,复制以下代码替换就ok了
1、现在只需要抛竿后,按r就行了,不需要等待鱼上钩,剩下的步骤可以自动进行。钓上后等待系统蜂鸣器响后再次抛竿按r,重复下去即可实现半自动钓鱼。
2、一般来说,上钩后200个step内一定能钓上,所以直接设置max_step=200
3、由于是手动抛竿,所以就不用考虑抛竿位置不对,鱼长时间不上钩的问题,所以调整bite_timeout=300
4、如果遇到IndexError: list index out of range的bug,可以参考https://github.com/7eu7d7/genshin_auto_fish/pull/145/commits/3e24afadd7dd60be19f58399eb027a47644fcd41
进行修复
def start_fishing(predictor, agent, bite_timeout=300):
ff = FishFind(predictor)
env = Fishing(delay=0.1, max_step=200, show_det=False)
# winsound.Beep(500, 500)
# keyboard.wait('r')
while True:
print("start fishing")
winsound.Beep(500, 500)
keyboard.wait('r')
times=0
while True:
if env.is_bite():
break
time.sleep(0.5)
times+=1
if times>bite_timeout:
env.drag()
time.sleep(3)
do_fish(fish_init=False)
times=0
winsound.Beep(900, 500)
env.drag()
time.sleep(1)
state = env.reset()
for i in range(env.max_step):
state = torch.FloatTensor(state).unsqueeze(0)
action = agent(state)
action = torch.argmax(action, dim=1).numpy()
state, reward, done = env.step(action)
print("epoch:", i)
if done:
break
time.sleep(0.5)
print("finished")
'''
感觉不自动开始拉条有点不智能。 而且判断是否咬钩还是挺准确的 不过我找了半天也没有吧判断咬钩的函数分离出来.......