Meowcolm024 / FGO-Automata

一个FGO脚本和API フェイトグランドオーダー自動化
https://meowcolm024.github.io/FGO-Automata/
MIT License
119 stars 33 forks source link

有目标的技能选择的问题 #26

Closed hbw0018 closed 4 years ago

hbw0018 commented 4 years ago

您好 是不是两次选择目标技能的等待时间太短了 连续执行两次选择目标技能会停住 中间插一个不选择目标技能会跳过它执行两次选择目标技能

QQ截图20200919095039

QQ截图20200919095212 先进行两次选择目标技能 只能进行一次 第二次完全不点击技能 没有任何后续操作 不进入下一回合 也不跳过执行

QQ截图20200919095913 可以执行衣服的目标选择 然后执行没有目标技能 执行一次选择目标技能 然后停住

QQ截图20200919100411 QQ截图20200919100406 执行选择目标技能1 会跳过执行未选择目标技能 执行选择目标技能2 然后再次停住

hbw0018 commented 4 years ago

1 2 3 4 5

hbw0018 commented 4 years ago

执行两个选择目标技能,只能执行一个。 执行选目标技能1,执行未选择目标技能 ,执行选择目标技能2,会跳过无目标技能。是等待时间太短的问题吗?

hbw0018 commented 4 years ago

请问等待时间的代码在哪,调一下技能间隔时间试试,谢谢您

Meowcolm024 commented 4 years ago

啊,我觉得有可能,有个暂时的解决办法。 在Automata.py 里面 select_servant_skill 结尾加上

time.sleep(1)

(如果不够长,可以考虑改长一点,但一秒估计够了

hbw0018 commented 4 years ago

def select_servant_skill(self, skill: int, tar: int = 0): """ Select Servant Skill Parameters

        skill: int
    The id of the skill. 1~9 counted from left.

        tar: int, optional
    The id of target servant. 1~3 counted from left.
    (If the skill has target servant)

    Examples
    --------
    Here are examples::

        select_servant_skill(1) # skill w/o target servants
        select_servant_skill(3, 2) # skill w/ target servants
    """
    while not util.standby(util.get_sh(self.shifts), "assets/attack.png"):
        time.sleep(0.2)
    self.tap(crds.SERVANT_SKILLS[skill-1], 5, 5)
    time.sleep(1.5)
    if tar != 0:
        self.select_servant(tar)

这是技能选择那块 应该加在哪里 那个time.sleep(1.5)是技能等待时间吗

hbw0018 commented 4 years ago

两次技能释放之间添加间隔,应该放在哪个位置。

Meowcolm024 commented 4 years ago

不是那里,那个是点技能和选择目标的时间间隔,应该:

    if tar != 0:
        self.select_servant(tar)
        time.sleep(1)
hbw0018 commented 4 years ago

Traceback (most recent call last): File "piao.py", line 1, in from core.Automata import Automata File "C:\youxi\FGO-Automata-0.6.3\core\Automata.py", line 96 time.sleep(1.5) ^ TabError: inconsistent use of tabs and spaces in indentation 加完不能动了

Meowcolm024 commented 4 years ago

Traceback (most recent call last): File "piao.py", line 1, in from core.Automata import Automata File "C:\youxi\FGO-Automata-0.6.3\core\Automata.py", line 96 time.sleep(1.5) ^ TabError: inconsistent use of tabs and spaces in indentation 加完不能动了

啊这,Python的缩进是4个空格(不要用tab) time.sleep(1)对齐上面那一行就好了

hbw0018 commented 4 years ago

QQ截图20200919105931 QQ截图20200919105948 还是不行

Meowcolm024 commented 4 years ago

time.sleep(1)的前面都要是空格才可以的(也就是12个空格)

hbw0018 commented 4 years ago

懂了

hbw0018 commented 4 years ago

可以运行了,感谢您的帮助,就是间隔太短的问题,术呆的技能释放要比其它英灵久。

hbw0018 commented 4 years ago

大佬还有个问题,关于结束一次运行

after-battle related

def finish_battle(self):
    while not util.standby(util.get_sh(self.shifts), "assets/item.png"):
        xs = util.get_crd(util.get_sh(self.shifts), "assets/close.png")
        if len(xs) != 0:
            self.tap(xs[0])
        self.tap((660, 840), 40, 1)
        time.sleep(0.9)
    time.sleep(0.9)
    x = util.get_crd(util.get_sh(self.shifts), "assets/item.png")
    self.tap(x[0])
    print("[INFO] Battle Finished.")

# FLAWED
def is_finished(self) -> bool:
    time.sleep(0.5)
    return util.standby(util.get_sh(self.shifts), "assets/finish.png", 0.5)

程序在点击finish.png(下一项)的时候,就默认完成了一次执行。然后就会停留在close.png(关闭),再次出战 的界面上,必须手动点关闭才能进行下一次

Meowcolm024 commented 4 years ago

大佬还有个问题,关于结束一次运行

after-battle related

def finish_battle(self):
    while not util.standby(util.get_sh(self.shifts), "assets/item.png"):
        xs = util.get_crd(util.get_sh(self.shifts), "assets/close.png")
        if len(xs) != 0:
            self.tap(xs[0])
        self.tap((660, 840), 40, 1)
        time.sleep(0.9)
    time.sleep(0.9)
    x = util.get_crd(util.get_sh(self.shifts), "assets/item.png")
    self.tap(x[0])
    print("[INFO] Battle Finished.")

# FLAWED
def is_finished(self) -> bool:
    time.sleep(0.5)
    return util.standby(util.get_sh(self.shifts), "assets/finish.png", 0.5)

程序在点击finish.png(下一项)的时候,就默认完成了一次执行。然后就会停留在close.png(关闭),再次出战 的界面上,必须手动点关闭才能进行下一次

请单独开另外一个issue