Repository navigation
Expand file tree
/
Copy pathmain.py
More file actions
80 lines (67 loc) · 3.58 KB
/
Copy pathmain.py
File metadata and controls
80 lines (67 loc) · 3.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import argparse
import logging
from lol_auto_accept.config import Config
from lol_auto_accept.runner import run
def _parse_region(text: str):
if not text:
return None
parts = [int(p) for p in text.split(",")]
if len(parts) != 4:
raise argparse.ArgumentTypeError("region 必须为 x,y,w,h")
return tuple(parts) # (x, y, w, h)
def _parse_scales(text: str):
if not text:
return (1.0,)
return tuple(float(p) for p in text.split(","))
def main():
parser = argparse.ArgumentParser(description="LoL 自动接受对局")
parser.add_argument("--template", default="lol_auto_accept/images/accept_button.png", help="按钮模板图路径")
parser.add_argument("--region", type=_parse_region, default=None, help="搜索区域 x,y,w,h(可选,加速识别)")
parser.add_argument("--centered", action="store_true", default=True, help="在屏幕中间 70% 区域搜索(默认开启)")
parser.add_argument("--no-centered", dest="centered", action="store_false", help="关闭中间 70% 区域搜索")
parser.add_argument("--scales", type=_parse_scales, default="0.9,1.0,1.1", help="逗号分隔比例,如 0.9,1.0,1.1")
parser.add_argument("--confidence", type=float, default=0.8, help="需要 OpenCV,范围 0.5~0.99,默认 0.8")
parser.add_argument("--grayscale", action="store_true", default=True, help="灰度匹配(更快)")
parser.add_argument("--no-grayscale", dest="grayscale", action="store_false", help="禁用灰度匹配")
parser.add_argument("--idle", type=float, default=0.5, help="未命中时的轮询间隔秒")
parser.add_argument("--cooldown", type=float, default=1.5, help="点击后等待秒数")
parser.add_argument("--clicks", type=int, default=1, help="点击次数")
parser.add_argument("--move-duration", type=float, default=0.1, help="鼠标移动耗时(平滑)")
parser.add_argument("--click-interval", type=float, default=0.05, help="多次点击的间隔")
parser.add_argument("--log", default="INFO", help="日志级别:DEBUG/INFO/WARN/ERROR")
parser.add_argument("--pause-after-accept", action="store_true", default=True, help="自动接受后暂停检测,等待游戏结束(默认开启)")
parser.add_argument("--no-pause-after-accept", action="store_false", dest="pause_after_accept", help="关闭自动暂停")
parser.add_argument("--resume-after", type=float, default=2400.0, help="自动恢复检测的秒数,0 表示不自动恢复,仅手动")
args = parser.parse_args()
logging.basicConfig(
level=getattr(logging, args.log.upper(), logging.INFO),
format="%(asctime)s %(levelname)s %(message)s",
)
region = args.region
if region is None and args.centered:
try:
import pyautogui # noqa
sw, sh = pyautogui.size()
cw, ch = int(sw * 0.70), int(sh * 0.70)
cx, cy = (sw - cw) // 2, (sh - ch) // 2
region = (cx, cy, cw, ch)
except Exception:
region = None
cfg = Config(
template_path=args.template,
poll_idle=args.idle,
poll_after_click=args.cooldown,
region=region,
confidence=args.confidence,
scales=args.scales if isinstance(args.scales, tuple) else _parse_scales(args.scales),
grayscale=args.grayscale,
clicks=args.clicks,
move_duration=args.move_duration,
click_interval=args.click_interval,
log_level=args.log,
pause_after_accept=args.pause_after_accept,
resume_after_accept=args.resume_after,
)
run(cfg)
if __name__ == "__main__":
main()