Files
xyzw_web_helper/MD说明文件夹/月度任务命令修复说明.md
2025-10-17 20:56:50 +08:00

259 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 月度任务命令修复说明
## ❌ 问题原因
**之前的问题**: 月度任务功能没有实际发送命令,控制台没有日志。
**根本原因**: `src/utils/gameCommands.js` 中缺少月度任务相关的命令定义。
---
## ✅ 已修复
已在 `gameCommands.js` 中添加以下5个命令第716-805行
### 1. activity_get - 获取月度活动信息
```javascript
activity_get(ack = 0, seq = 0, params = {}) {
return {
ack,
body: this.g_utils.bon.encode({ ...params }),
cmd: "activity_get",
seq,
rtt: randomInt(0, 500),
code: 0,
time: Date.now()
}
}
```
### 2. fishing_fish - 钓鱼
```javascript
fishing_fish(ack = 0, seq = 0, params = {}) {
return {
ack,
body: this.g_utils.bon.encode({
fishingType: 1, // 1=普通鱼竿, 2=金鱼竿
...params
}),
cmd: "fishing_fish",
seq,
rtt: randomInt(0, 500),
code: 0,
time: Date.now()
}
}
```
### 3. arena_matchopponent - 竞技场匹配对手
```javascript
arena_matchopponent(ack = 0, seq = 0, params = {}) {
return {
ack,
body: this.g_utils.bon.encode({ ...params }),
cmd: "arena_matchopponent",
seq,
rtt: randomInt(0, 500),
code: 0,
time: Date.now()
}
}
```
### 4. arena_battle - 竞技场战斗
```javascript
arena_battle(ack = 0, seq = 0, params = {}) {
return {
ack,
body: this.g_utils.bon.encode({
battleType: 1,
...params
}),
cmd: "arena_battle",
seq,
rtt: randomInt(0, 500),
code: 0,
time: Date.now()
}
}
```
### 5. monthlyactivity_receivereward - 领取月度任务奖励
```javascript
monthlyactivity_receivereward(ack = 0, seq = 0, params = {}) {
return {
ack,
body: this.g_utils.bon.encode({
rewardId: 1,
...params
}),
cmd: "monthlyactivity_receivereward",
seq,
rtt: randomInt(0, 500),
code: 0,
time: Date.now()
}
}
```
---
## 🧪 现在可以测试
### 测试步骤:
1. **重启开发服务器**
```bash
# 停止当前服务器 (Ctrl+C)
# 重新启动
npm run dev
```
2. **刷新浏览器页面** (F5 或 Ctrl+R)
3. **打开浏览器控制台** (F12)
4. **测试月度任务功能**:
- 点击"刷新进度"按钮
- 观察控制台是否有日志输出
- 查看Network标签是否有WebSocket消息
---
## 📊 预期效果
### 控制台应该显示:
```
🔗 [WS] WebSocket连接: token_xxx
📤 [TOKEN] 发送消息: activity_get
📨 [TOKEN] 收到响应: activity_get
月度任务进度已更新
```
### Network标签应该显示
- WebSocket连接活动
- 发送的消息帧activity_get
- 接收的响应帧
---
## ⚠️ 如果还是没有日志
### 检查以下几点:
1. **WebSocket是否连接**
- 确认已选择Token
- 查看WebSocket连接状态
- 控制台是否显示"WebSocket连接成功"
2. **命令是否正确发送**
```javascript
// 在控制台测试
tokenStore.sendMessageWithPromise(
tokenStore.selectedToken.id,
'activity_get',
{},
10000
).then(result => {
console.log('测试结果:', result)
})
```
3. **服务器是否支持这些命令**
- 有些服务器可能没有实现这些命令
- 检查服务器响应是否有错误码
4. **检查日志配置**
```javascript
// 在控制台执行,确保日志显示
localStorage.setItem('batchTaskLogConfig', JSON.stringify({
websocket: true
}))
location.reload()
```
---
## 🔍 调试技巧
### 1. 监听所有WebSocket消息
```javascript
// 在控制台执行
window.addEventListener('message', (e) => {
console.log('WebSocket消息:', e.data)
})
```
### 2. 查看发送的命令
```javascript
// 临时添加到GameStatus.vue的fetchMonthlyActivity函数
console.log('准备发送命令: activity_get')
const result = await tokenStore.sendMessageWithPromise(...)
console.log('收到响应:', result)
```
### 3. 检查gameCommands实例
```javascript
// 在控制台
import { gameCommands } from '@/utils/gameCommands.js'
console.log(gameCommands)
console.log(typeof gameCommands.activity_get) // 应该是 'function'
```
---
## 📝 命令参数说明
### activity_get
- **作用**: 获取月度活动信息
- **参数**: 无(或服务器特定参数)
- **返回**: 包含myMonthInfo和myArenaInfo的对象
### fishing_fish
- **作用**: 执行钓鱼操作
- **参数**:
- `fishingType`: 1=普通鱼竿, 2=金鱼竿
- **返回**: 钓鱼结果
### arena_matchopponent
- **作用**: 匹配竞技场对手
- **参数**: 无
- **返回**: 对手信息 { opponent: { roleId, name, power } }
### arena_battle
- **作用**: 进行竞技场战斗
- **参数**:
- `targetRoleId`: 对手的角色ID
- `battleType`: 战斗类型默认1
- **返回**: 战斗结果
---
## ✅ 完成检查清单
- [x] 添加 activity_get 命令
- [x] 添加 fishing_fish 命令
- [x] 添加 arena_matchopponent 命令
- [x] 添加 arena_battle 命令
- [x] 添加 monthlyactivity_receivereward 命令
- [ ] 重启开发服务器
- [ ] 测试刷新进度功能
- [ ] 测试钓鱼补齐功能
- [ ] 测试竞技场补齐功能
- [ ] 验证控制台日志输出
---
## 🎯 下一步
1. **立即测试**: 重启服务器并测试月度任务功能
2. **如果正常**: 继续阶段3身份卡系统
3. **如果有问题**: 提供控制台日志和Network截图
---
**修复完成!现在命令应该可以正常发送了!** 🎉