本文档用于基于windows系统Docker部署的CodeCombat,其他方式部署的可以作为参考。
如何打开命令行
找到Containers,选择安装的CodeCombat。

选择Exec,找到Open in external terminal。

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

打开所有关卡
以下内容在命令行中完成。
进入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即可。

弹出错误是因为游戏的原因,报错了。
此时我们重新进入,随后在英雄选择界面,重新选择英雄。

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

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

这一关卡完成后,再将语言改回为Python。
方法2:通过更改数据库,跳过关卡
解决蜿蜒峡谷报错的问题
蜿蜒峡谷提交报错的问题。(类似问题一并解决)

问题原因
向服务器提交的 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
点击重启按钮,重启项目(容器)。

再次测试,如果还有一些错误,请清空用户关卡数据。
英雄选择报错
在选择英雄时,会有两个英雄无法选择,直接跳过选择这两个英雄即可。

其他资料
1ms docker数据源地址。
https://docker.1ms.run