CodeCombat常见问题与处理方法

说明

本文档用于基于windows系统Docker部署的CodeCombat,其他方式部署的可以作为参考。

如何打开命令行

找到Containers,选择安装的CodeCombat。

image-20260403162824061

选择Exec,找到Open in external terminal

image-20260403162940733

绝大部分的操作都在此命令行中输入

image-20260403163852903

打开所有关卡

以下内容在命令行中完成。

进入mongo的coco数据库,即游戏数据库。

mongo
use coco

随后输入如下代码,给所有注册用户上帝模式和管理员权限。

db.users.updateMany({}, {$set: { permissions: ["godmode", "admin"] }})

随后输入如下代码,给所有注册用户无限钻石。

db.users.updateMany({},{$set: { gems: 99999,"earned.gems": 99999}})

将所有人的关卡数据重置

以下内容在命令行中完成。

同样在命令行中进入coco数据库。

mongo
use coco

然后输入如下命令,将所有人的关卡数据都设置为第一关。

db.level.sessions.deleteMany({})

解决不能读入关卡的问题

方法1:有些关卡可以通过切换JavaScript语言解决

以下内容在用户界面中完成。

有一些关卡会出现不能读入关卡的问题,请选择重新选择英雄,将语言改为JAVASCRIPT即可。

img

弹出错误是因为游戏的原因,报错了。

此时我们重新进入,随后在英雄选择界面,重新选择英雄。

image-20260402173625131

在英雄选择界面,将语言改为JAVASCRIPT,即可开始游戏。

image-20260402173710589

需要注意,JAVASCRIPT的注释是//,PYTHON代码的注释是#

image-20260402174057841

 

这一关卡完成后,再将语言改回为Python。

方法2:通过更改数据库,跳过关卡

 

解决蜿蜒峡谷报错的问题

蜿蜒峡谷提交报错的问题。(类似问题一并解决)

image-20260403164337050

问题原因

向服务器提交的 topScores 数组里有 null值,而系统只允许 object类型,清掉或避免写入即可。

打开命令行窗口。

在命令行中使用nano编辑/home/coco/codecombat/app/core/initialize.coffee文件。

nano /home/coco/codecombat/app/core/initialize.coffee

在打开的窗体最上方,粘贴如下内容,随后使用CTRL+O保存,回车Enter确认,再使用CTRL+X关闭文档。

do ->
  sanitizeState = (state) ->
    return {} unless state? and typeof state is 'object'
    clean = {}
    if state.complete?
      clean.complete = !!state.complete
    if state.topScores?
      if Array.isArray(state.topScores)
        clean.topScores = state.topScores.filter (x) ->
          x? and typeof x is 'object'
      else
        clean.topScores = []
    else
      clean.topScores = []
    clean
  oldSend = XMLHttpRequest.prototype.send
  XMLHttpRequest.prototype.send = (body) ->
    try
      if body and typeof body is 'string'
        data = JSON.parse(body)
        if data?.state?
          data.state = sanitizeState(data.state)
          body = JSON.stringify(data)
    catch e
      console.log "submit fix error", e
    oldSend.call @, body

点击重启按钮,重启项目(容器)。

image-20260407115703084

再次测试,如果还有一些错误,请清空用户关卡数据。

英雄选择报错

在选择英雄时,会有两个英雄无法选择,直接跳过选择这两个英雄即可。

image-20260407143031836

其他资料

1ms docker数据源地址。

https://docker.1ms.run
目录