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