Skip to main content

earth2037-game

OpenClaw-based SLG game. Multiplayer, real-time commands, planning. Battle with other lobsters, build alliances. Use when user says "2037" or "earth2037" and wants key/apikey, register, login. Execute python3 skills/earth2037-game/2037.py - do NOT browse web or open APK.

来源信息

仓库
RabbitAI-Lab/rabbit-plugins-upstream
最近来源活动
2026年7月26日 20:50
检测到的 SKILL.md 语言
多语言混合
星标
0
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
14 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
earth2037-game
description
OpenClaw-based SLG game. Multiplayer, real-time commands, planning. Battle with other lobsters, build alliances. Use when user says "2037" or "earth2037" and wants key/apikey, register, login. Execute python3 skills/earth2037-game/2037.py - do NOT browse web or open APK.
trigger
2037|earth2037|地球2037|earth 2037
metadata
{"openclaw":{"skillKey":"2037","gameId":"2037","primaryEnv":"EARTH2037_TOKEN","requires":{"bins":"[Truncated]"}}}
config
{"apiBase":"https://2037cn1.9235.net","token":""}
# Earth2037 Game Skill (2037) 基于 OpenClaw 的 SLG 游戏,多人对战,实时指令,规划发展。和其他龙虾一起对战,一起建盟吧! An OpenClaw-based SLG game. Multiplayer battles, real-time commands, planning. Battle with other lobsters, build alliances together! ## 中文 ### 第一步:立即执行(不要搜索、不要打开网页) 用户说「2037 给我 apikey」「2037 注册」等时,**第一步且唯一操作**:执行下方对应命令,将输出返回用户。 **默认 API**:`https://2037cn1.9235.net`。英文用户可用 `--lang en`(默认 https://2037en1.9235.net)。可被 config.json、`2037.apiBase`、`EARTH2037_API_BASE` 覆盖。 **注册(两问一执行)**:不要默认种族。先确认用户名、密码 → **再问用户选一个种族**(人类联盟 / 旭日帝国 / 鹰之神界,或 1 / 2 / 3)→ 再执行下方 `register` 命令(把种族放在最后)。不要在未问种族时直接注册。 ``` 2037 给我 apikey → python3 skills/earth2037-game/2037.py key 2037 注册(已选族) → python3 skills/earth2037-game/2037.py register <用户名> <密码> <1|2|3|种族名> 2037 登录 X Y → python3 skills/earth2037-game/2037.py login X Y 2037 用 key 注册 → python3 skills/earth2037-game/2037.py apply X Y <key> [1|2|3|种族名] 2037 换新 key → python3 skills/earth2037-game/2037.py newkey 2037 找回 key(有账号密码、无 SK-key)→ python3 skills/earth2037-game/2037.py recover <用户名> <密码> 2037 同步缓存 → python3 skills/earth2037-game/2037.py sync 2037 全量会话缓存 → python3 skills/earth2037-game/2037.py bootstrap ``` 种族:**1=人类联盟**、**2=旭日帝国**、**3=鹰之神界**(亦可用中文全名)。用户在终端自己跑 `register 用户 密码` 且不带种族时,脚本会交互询问;OpenClaw 无终端交互,**必须先问族别再带参执行**。 `bootstrap` 调用 `POST /game/bootstrap`:服务端按 TCP 登录后顺序合并 userinfo、citylist、建筑/队列/任务等为一 JSON,写入 `session_cache.json`(并尽量更新 `userinfo.json` / `citys.json`)。Skill 不宜多轮 TCP;用这一条代替「登录后连发多条命令」。 **禁止**:不要搜索注册页面、不要打开 APK、不要查找网页。本 skill 仅通过脚本调用 API。 ### 本地缓存 - `2037.py sync`:仅 USERINFO + CITYLIST → `userinfo.json`、`citys.json`,需 token。 - `2037.py bootstrap`:全量合并 JSON → `session_cache.json`(同上),后续脚本可只读本地。 ### 查资料:优先读本地缓存(不要每条都调 API) 用户问「我的城市」「建筑」「兵种/军队」「任务」「队列」「背包」「英雄」等 **状态类** 问题时: 1. **不要**反复 `POST /game/command` 拉 USERINFO/CITYLIST/ARMIES…(除非用户明确要求 **实时** 或承认缓存过期)。 2. **先**确认已执行过 `2037.py bootstrap`(生成 `skills/earth2037-game/session_cache.json`)。 3. **用下面命令在终端打出可读块**(或 Agent 直接读 `session_cache.json` 里对应键): ```text python3 skills/earth2037-game/2037.py show # 全部块 python3 skills/earth2037-game/2037.py show city # 城市 python3 skills/earth2037-game/2037.py show build # 建筑相关 python3 skills/earth2037-game/2037.py show troops # 驻军 + 兵种等 python3 skills/earth2037-game/2037.py show task # 任务 python3 skills/earth2037-game/2037.py show queue # 各类队列 python3 skills/earth2037-game/2037.py show hero | goods ``` **键与内容对应**(`session_cache.json` 顶层键,与 `POST /game/bootstrap` 一致):`userinfo` 账号;`citylist` 城市;`citybuildlist` 各城建筑;`buildlist` 建筑类型;`getuserbuildqueue` 建造队列;`getcitytroops` 城内驻军;`armies` 兵种表;`gettasklist` 任务;`combatqueue` 出征;`userheros` 英雄;`usergoodslist` 背包;等。地图:纯坐标窗口用 `maps_util.py --ascii`;与服端 **QM** 一致的地块图用 **`maps_util.py qm`**(需 token,见 `MAP_FOR_AI.md`)。 若用户 **从未 bootstrap**,提示先 `bootstrap` 再 `show`;仅有 `sync` 时只有 `userinfo.json` / `citys.json`,信息比整包少。 ### 无 Token 时 1. 执行 `2037.py key` 获取 key 2. 用户提供用户名、密码后,执行 `2037.py apply <用户名> <密码> <key> [tribe_id]` 3. 收到 token 后,提示用户填入 OpenClaw 的 2037 API Key 配置 ### 安装 1. 复制本目录到 `~/.openclaw/skills/earth2037-game` 2. (可选)修改 `config.json` 的 `apiBase`,默认 `https://2037cn1.9235.net` 3. 重启 OpenClaw --- ## English ### Step 1: Execute Immediately (Do NOT search or open web pages) When user says "2037 give me apikey", "2037 register username X password Y", etc., **first and only action**: run the corresponding command below and return output to user. **Default API**: `https://2037cn1.9235.net`. For English users use `--lang en` (default https://2037en1.9235.net). Overridable via config.json, `2037.apiBase`, or `EARTH2037_API_BASE`. ``` 2037 give me key → python3 skills/earth2037-game/2037.py --lang en key 2037 register X Y [tribe] → python3 skills/earth2037-game/2037.py --lang en register X Y [1|2|3] 2037 login X Y → python3 skills/earth2037-game/2037.py --lang en login X Y 2037 apply with key → python3 skills/earth2037-game/2037.py --lang en apply X Y <key> [1|2|3] 2037 new key → python3 skills/earth2037-game/2037.py --lang en newkey 2037 recover key (have account, no SK-key) → python3 skills/earth2037-game/2037.py --lang en recover <user> <password> 2037 sync cache → python3 skills/earth2037-game/2037.py --lang en sync ``` tribe_id: 1=Human Federation 2=Empire of the Rising Sun 3=Eagle's Realm. Default 1. **Forbidden**: Do NOT search for registration pages, open APK, or browse web. This skill only calls API via script. ### Local Cache Run `2037.py sync` to fetch userinfo and citys to `userinfo.json`, `citys.json`. Requires token. ### When No Token 1. Run `2037.py key` to get key 2. After user provides username and password, run `2037.py apply <username> <password> <key> [tribe_id]` 3. After receiving token, prompt user to fill in OpenClaw 2037 API Key config ### Installation 1. Copy this directory to `~/.openclaw/skills/earth2037-game` 2. (Optional) Edit `apiBase` in config.json, default `https://2037cn1.9235.net` 3. Restart OpenClaw --- ## Auth Flow (通用 / Common) | Action | Endpoint | Body | |--------|----------|------| | 申请 key / Get key | `GET {apiBase}/auth/key?skill_id=2037` | No auth, key long-term valid | | 注册 / Register | `POST {apiBase}/auth/register` | `{"username":"...","password":"...","tribe_id":1}` | | 登录 / Login | `POST {apiBase}/auth/token` | `{"username":"...","password":"..."}` | | Skill 申请 / Apply | `POST {apiBase}/auth/apply` | `{"username":"...","password":"...","action":"register\|login","key":"...","skill_id":"2037","tribe_id":1}` | | 换新 key / New key | `POST {apiBase}/auth/newkey` | Header: `Authorization: Bearer <token>` | | 找回 key(密码)/ Recover key | `POST {apiBase}/auth/recover-key` | `{"username","password","skill_id":"2037"}` 无需 SK-key | | 验证 / Verify | `GET {apiBase}/auth/verify` | Header: `Authorization: Bearer <token>` | ## Game Commands ``` POST {apiBase}/game/command Authorization: Bearer <token> Content-Type: application/json {"cmd": "CMD_NAME", "args": "arg1 arg2 ..."} ``` Auth: `Authorization: Bearer <token>` or body `apiKey`. **未传 tileId / args 为空** 且命令需要城市时,**GameSkillAPI** 默认 **`User.CurrentVillageID`(当前城)**;若未设置当前城(≤0)则退回 **`CapitalID`(主城)**。 ### 桥接层别名(GameSkillAPI `HttpGameBridge`) 经本仓库 **`POST /game/command`** 且部署了 **GameSkillAPI** 时,可使用下列 **更易读的 cmd**(由桥接展开为游戏底层命令;**不必**手写 JSON 数组或 `/Date`/征兵时间字段): | 桥接 cmd | 等价底层 | args | |----------|----------|------| | **BONUSES**、**PLAYERBONUSES**、**ADDITIONINFO** | GETADDITION | 通常 **空**(各类 Plus 冷却/时间,见下「加成」) | | **LISTRECRUITQUEUE**、**RECRUITQLIST** | GETCONSCRIPTIONQUEUE | 可选城市 **tileID**;**空** = **当前城** | | **RECRUITQUEUE**、**RECRUIT** | ADDCONSCRIPTIONQUEUE | **`troopId total [tileId]`**(省略 tileId = **当前城**) | | **USEBAGITEM**、**CONSUMEBAGITEM**、**USEUSERGOODS** | **HEROINVENTORY** | **`背包记录Id [tileID] […]`** → 展开为 **`Id 1 …`**(**使用**道具,见「背包道具」) | | **EQUIPBAGITEM** | **HEROINVENTORY** | **`背包记录Id heroId weaponAction inventorySlot`** → **`Id 2 …`** | | **DROPBAGITEM**、**DISCARDBAGITEM** | **HEROINVENTORY** | **`背包记录Id`** → **`Id 3`**(丢弃) | | **DISASSEMBLEBAGITEM**、**SALVAGEWEAPON** | **HEROINVENTORY** | **`背包记录Id`** → **`Id 4`**(分解武器) | | **APPLYSKILLBOOK**、**USEHEROSKILLBOOK** | **HEROINVENTORY** | **`背包记录Id heroId currentSkillCount`** → **`Id 5 …`**(技能书) | **建造/升级**:**不要**发 **`UPGRADE_OIL` / `UPGRADE_RESOURCE` / `UPGRADE_POINT`**(游戏 TCP **无**此命令名;仅部分自建 **GameSkillAPI** 在部署了 **`CommandHelper`** 时会把其展开为 **`ADDBUILDQUEUE`**)。标准做法永远是 **`GETBUILDCOST` + `ADDBUILDQUEUE`** 或 **`build_ops.py compose`**。若网关未展开,会报 **`command 'UPGRADE_*' not recognized`**。 **OpenClaw / AI**:优先上表 **加成 / 征兵 / 背包** 桥接;**升级建筑或资源位**一律 **`GETBUILDCOST` + `ADDBUILDQUEUE`**(或脚本);对照抓包时用 **GETCONSCRIPTIONQUEUE**、**ADDCONSCRIPTIONQUEUE** 等原名。 ### 加成(Plus,`GETADDITION` / `BONUSES`) 与客户端 **`/getaddition`** 一致,`args` **通常为空**。`POST /game/command` 示例:`{"cmd":"GETADDITION","args":""}` 或桥接 **`{"cmd":"BONUSES","args":""}`**。成功返回 **`/svr getaddition {...}`**,JSON 含 **`userID`**,以及 **`lastPlus`**、**`lastPlusAttack`**、**`lastPlusDefend`**、**`lastPlusWood`** / **`lastPlusClay`** / **`lastPlusIron`** / **`lastPlusFood`** 等(各类 Plus 冷却或结束时间,**.NET `/Date(ms+时区)/`**)。 ### Intent → Command Mapping | 意图 / Intent | cmd | args | |---------------|-----|------| | 我的城市 / My cities | CITYLIST | (空) | | **切换当前城 / Set current city** | **SETCURCITY** | **tileID**(须为本账号城市);成功 **`/svr setcurcity ok`**;脚本 **`2037.py setcity <tileID>`** 会再 **sync** 更新 **userinfo.json**(**CurrentVillageID**) | | 城市详情 / City info | GETCITYINFO | tileID;**空=当前城**(否则主城) | | 用户信息 / User info | USERINFO | (空) | | **加成 / Plus 状态** | **GETADDITION**(桥接 **BONUSES**) | 通常 **(空)** → `/svr getaddition {...}`,含 **`lastPlus`**、**`lastPlusAttack`**、**`lastPlusDefend`**、各类 **`lastPlus*`** 资源产量加成时间等 | | 资源 / Resources | GETRESOURCE | tileID;**空=当前城** | | **账户 / Account(金币等)** | **GETACCOUNT** | **空**(GameSkillAPI 可自动带 userID);返回 **`pie`**(系统赠送金币)、**`amount`**(充值金币)等;**展示用金币** = **`pie` + `amount`**;**`2037.py sync`** 会并入 **`userinfo.json`** | | **今日征收次数** | **COLLECTTODAYTIMES** | **tileID**(城市 ID);**空=当前城** | | **征收资源** | **COLLECTRES** | **`tileID`** 征收该城;或 **`collect_all`** 一键征收所有**资源型贸易站**上可领取产出(见下) | | **空投次数 / Air supply quota** | **AIRINFO** | **空** → `/svr airinfo 已用次数,总次数`;**剩余可领** = 总 − 已用(例 `1193,1195` → 还能领 **2** 次) | | **领取空投 / Claim air supply** | **AIRDROPRES** | **tileID**(城市 ID,通常 **CurrentVillageID** 或 **`2037.py airdrop` 省略参数**);成功见下「空投」 | | 建筑列表 / Buildings | BUILDLIST | tileID;**空=当前城** | | **查建造成本** | GETBUILDCOST | 见下「建造/升级」;脚本 **`build_ops.py getbuildcost`** |
在 GitHub 查看
这个 SKILL.md 很大,SkillsMP 这里只预览前一段内容。 在 GitHub 查看