sMythicalBird / ZenlessZoneZero-Auto

绝区零 | ZenlessZoneZero | 零号空洞 | 自动战斗 | 自动化 | 图片分类 | OCR识别
https://fairy.autoscript.site/zh/
GNU General Public License v3.0
1.08k stars 83 forks source link

添加最大战斗次数规则,并且修复结算界面第一次点击会失效的bug #181

Closed zidianzhimeng closed 4 weeks ago

zidianzhimeng commented 4 weeks ago

添加限制最大战斗次数的功能,并且修复结算界面的bug

sMythicalBird commented 4 weeks ago

先描述一下这个问题吧,我不太清楚现在这个bug是什么情况

zidianzhimeng commented 4 weeks ago

进入结算界面后直接点击完成按钮,但是这时按钮不会马上显示,点击是无效的。所以会再次触发结算界面的执行函数,第二次点击才成功,我加了1秒延迟就解决了

lazydog28 commented 4 weeks ago

关于最大战斗次数规则的实现,推荐采用以下的实现示例,不推荐直接在task.py文件中直接添加函数

from utils.task import task
from utils.config import config
from utils import logger
from schema import info

# 条件任务 - 最大战斗次数
# 当战斗次数达到最大战斗次数时,停止战斗
# 装饰器 conditional 用于定义条件任务
# 参数 name 为任务名称
# 参数 condition 为条件函数,返回 True 时执行任务
# 示例中使用了 lambda 表达式定义条件函数
# 任务函数无需参数,无需返回值
@task.conditional(
    name="最大战斗次数",
    condition=lambda: config.maxFightCount and info.fightCount >= config.maxFightCount,
)
def max_fight_times():
    """
    达到最大战斗次数
    """
    logger.info(f"当前已达到最大战斗次数{config.maxFightCount},停止战斗")
    task.stop()

handle文件夹下创建conditional.py文件,编写条件事件。

请修改一下后提交

zidianzhimeng commented 4 weeks ago

有个问题,现在的战斗次数计算是进入选择角色页面就加1。这会导致如果打不过怪,重新进入选择角色页面,依旧会加1,我的想法是这种战斗失败的情况不要记录战斗次数。当然最好的方法是优化战斗逻辑,不要让战斗失败,但是建议战斗次数记录的逻辑再优化一下。