136 lines
3.3 KiB
Markdown
136 lines
3.3 KiB
Markdown
|
|
# 窗口钓鱼自动化脚本
|
|||
|
|
|
|||
|
|
这是一个用于自动化钓鱼操作的Python脚本,可以识别指定窗口并循环发送钓鱼和收杆消息。
|
|||
|
|
|
|||
|
|
## 功能特点
|
|||
|
|
|
|||
|
|
- 自动查找并激活目标窗口
|
|||
|
|
- 发送钓鱼和收杆消息(可自定义按键)
|
|||
|
|
- 时间间隔可配置
|
|||
|
|
- 支持有限循环或无限循环
|
|||
|
|
- 完整的日志记录
|
|||
|
|
- 错误处理和重试机制
|
|||
|
|
|
|||
|
|
## 系统要求
|
|||
|
|
|
|||
|
|
- Python 3.6+
|
|||
|
|
- Windows系统(支持macOS/Linux但可能需要调整)
|
|||
|
|
|
|||
|
|
## 安装依赖
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
或者手动安装:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
pip install pyautogui pygetwindow
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 使用方法
|
|||
|
|
|
|||
|
|
### 基本使用
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 使用默认设置(窗口标题包含"魔兽世界",间隔5秒,无限循环)
|
|||
|
|
python main.py
|
|||
|
|
|
|||
|
|
# 指定窗口标题和间隔
|
|||
|
|
python main.py --window "游戏窗口" --interval 10.0
|
|||
|
|
|
|||
|
|
# 指定循环次数
|
|||
|
|
python main.py --window "游戏窗口" --cycles 100
|
|||
|
|
|
|||
|
|
# 测试模式(检查功能是否正常)
|
|||
|
|
python main.py --test
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 命令行参数
|
|||
|
|
|
|||
|
|
| 参数 | 简写 | 默认值 | 说明 |
|
|||
|
|
|------|------|--------|------|
|
|||
|
|
| `--window` | `-w` | `"魔兽世界"` | 目标窗口标题(支持部分匹配) |
|
|||
|
|
| `--interval` | `-i` | `5.0` | 钓鱼和收杆之间的时间间隔(秒) |
|
|||
|
|
| `--cycles` | `-c` | `0` | 循环次数(0表示无限循环) |
|
|||
|
|
| `--test` | `-t` | `False` | 测试模式,只运行一个周期并显示详细信息 |
|
|||
|
|
|
|||
|
|
### 自定义按键
|
|||
|
|
|
|||
|
|
如果需要修改发送钓鱼/收杆消息的按键,请编辑 `main.py` 文件中的以下方法:
|
|||
|
|
|
|||
|
|
1. `send_fishing_message()` - 默认按 'F' 键
|
|||
|
|
2. `send_reel_message()` - 默认按空格键
|
|||
|
|
|
|||
|
|
可以修改为其他按键,例如:
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# 改为按 '1' 键
|
|||
|
|
pyautogui.press('1')
|
|||
|
|
|
|||
|
|
# 组合键
|
|||
|
|
pyautogui.hotkey('ctrl', 'f')
|
|||
|
|
|
|||
|
|
# 鼠标点击
|
|||
|
|
pyautogui.click(x=100, y=200)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 稳定性验证
|
|||
|
|
|
|||
|
|
脚本包含以下稳定性措施:
|
|||
|
|
|
|||
|
|
1. **错误处理**:所有关键操作都有try-catch保护
|
|||
|
|
2. **日志记录**:详细日志记录到文件和终端
|
|||
|
|
3. **窗口重试**:每次循环都会重新查找窗口,避免窗口丢失
|
|||
|
|
4. **用户中断**:支持Ctrl+C安全退出
|
|||
|
|
5. **资源管理**:循环间有短暂暂停,避免CPU占用过高
|
|||
|
|
|
|||
|
|
### 验证方法
|
|||
|
|
|
|||
|
|
1. **功能测试**:
|
|||
|
|
```bash
|
|||
|
|
python main.py --test
|
|||
|
|
```
|
|||
|
|
检查是否能正确找到窗口、激活窗口。
|
|||
|
|
|
|||
|
|
2. **短期运行测试**:
|
|||
|
|
```bash
|
|||
|
|
python main.py --cycles 10 --interval 2
|
|||
|
|
```
|
|||
|
|
运行10个周期,观察是否有错误。
|
|||
|
|
|
|||
|
|
3. **日志检查**:
|
|||
|
|
查看 `fishing_bot.log` 文件,确认没有异常错误。
|
|||
|
|
|
|||
|
|
4. **压力测试**:
|
|||
|
|
```bash
|
|||
|
|
# 长时间运行(如1000个周期)
|
|||
|
|
python main.py --cycles 1000 --interval 5
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **窗口焦点**:脚本需要激活目标窗口,期间不要操作鼠标键盘
|
|||
|
|
2. **时间间隔**:根据实际游戏需要调整间隔时间
|
|||
|
|
3. **防检测**:某些游戏禁止自动化,使用前请了解游戏规则
|
|||
|
|
4. **分辨率**:脚本不依赖于屏幕坐标,但窗口需要可见
|
|||
|
|
|
|||
|
|
## 故障排除
|
|||
|
|
|
|||
|
|
### 找不到窗口
|
|||
|
|
- 确认窗口标题正确
|
|||
|
|
- 窗口是否最小化或隐藏
|
|||
|
|
- 尝试使用部分标题匹配
|
|||
|
|
|
|||
|
|
### 按键不起作用
|
|||
|
|
- 确认游戏窗口处于激活状态
|
|||
|
|
- 检查游戏按键设置
|
|||
|
|
- 尝试增加激活后的等待时间
|
|||
|
|
|
|||
|
|
### 权限问题
|
|||
|
|
- 以管理员身份运行(某些游戏需要)
|
|||
|
|
- 关闭杀毒软件或防火墙的干扰
|
|||
|
|
|
|||
|
|
## 许可证
|
|||
|
|
|
|||
|
|
MIT License
|