@66rpg/cgmaker 0.1.19 → 0.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.js +46 -48
- package/dist/validate.js +1 -1
- package/package.json +2 -2
- package/skill/cgmaker/SKILL.md +23 -11
- package/skill/cgmaker-identity/references/branches.md +5 -5
- package/skill/cgmaker-play-sdk/references/api.md +81 -81
- package/skill/cgmaker-template-spec/references/layout.md +1 -1
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
# CgMakerSdk 接口
|
|
2
|
-
|
|
3
|
-
全局对象:`window.CgMakerSdk`。发布游戏时由平台注入到玩法 HTML,页面加载后即可使用。当前版本见 `version`(如 `0.1.0`)。
|
|
4
|
-
|
|
5
|
-
## 生命周期
|
|
6
|
-
|
|
7
|
-
| 方法 / 属性 | 说明 |
|
|
8
|
-
| --- | --- |
|
|
9
|
-
| `version` | SDK 版本字符串 |
|
|
10
|
-
| `ready()` | 与宿主握手。返回 `{ ready, context, error? }`。超时**不抛错**(约 5 秒,`error` 为「等待主站数据超时」) |
|
|
11
|
-
| `isReady()` | 是否已拿到 context |
|
|
12
|
-
| `getError()` | 最近一次握手失败文案 |
|
|
13
|
-
| `getContext()` | 见下方。没有 token |
|
|
14
|
-
| `onChange(fn)` | context / 登录变化时回调,用来自己刷新 UI。必须用返回值取消监听 |
|
|
15
|
-
| `isLoggedIn()` | 是否已有用户 |
|
|
16
|
-
| `getGameId()` / `getUser()` | 便捷读取 |
|
|
17
|
-
|
|
18
|
-
`getContext()`:
|
|
19
|
-
|
|
20
|
-
| 字段 | 含义 |
|
|
21
|
-
| --- | --- |
|
|
22
|
-
| `gameId` | 对外游戏 id |
|
|
23
|
-
| `lang` | 握手时播放页语言 |
|
|
24
|
-
| `user` | `{ username, nickname, avatar }` 或 `null`。`username` 来自社区用户 id |
|
|
25
|
-
| `variant` | `1` 正式 / `2` 试玩 / `3` 衍生 |
|
|
26
|
-
| `parentOrigin` | 仅 SDK 内部校验消息来源,不要当业务字段 |
|
|
27
|
-
|
|
28
|
-
## 登录
|
|
29
|
-
|
|
30
|
-
| 方法 | 说明 |
|
|
31
|
-
| --- | --- |
|
|
32
|
-
| `requireLogin()` | 已登录立刻成功。否则请宿主弹出社区登录。用户取消 → 错误码 `LOGIN_CANCELLED` |
|
|
33
|
-
|
|
34
|
-
未登录时试玩 iframe 仍可玩离线内容。`queryGame` / `queryUser` 无登录态时得到 `NOT_LOGGED_IN`。
|
|
35
|
-
|
|
36
|
-
## 查游戏 / 用户
|
|
37
|
-
|
|
38
|
-
需已登录。未登录时 `queryGame` / `queryUser` 会失败(`NOT_LOGGED_IN`)。不要自己带 Cookie 去调社区接口。
|
|
39
|
-
|
|
40
|
-
| 方法 | 说明 |
|
|
41
|
-
| --- | --- |
|
|
42
|
-
| `queryGame()` |
|
|
43
|
-
| `queryUser()` | 当前用户:`username`、`nickname`、`avatar` |
|
|
44
|
-
|
|
45
|
-
`queryGame()` 常用字段:
|
|
46
|
-
|
|
47
|
-
- `game_id`、`owner`、`name`、`summary`、`cover_url`
|
|
48
|
-
- `variant`、`parent_game_id`
|
|
49
|
-
- `price_flower` / `price_cny` / `price_usd`
|
|
50
|
-
- `status
|
|
51
|
-
- `purchased`:对该可售主体是否已支付(作者未下单为 `false`)
|
|
52
|
-
- `can_play`:当前能否玩
|
|
53
|
-
- **不要用 `play_url` 做跳转**
|
|
54
|
-
|
|
55
|
-
章节锁、试玩结束等自制 UI 读 `can_play` / `purchased`。不要在 iframe 里复刻社区购买墙。
|
|
56
|
-
|
|
57
|
-
## 跳转与全屏
|
|
58
|
-
|
|
59
|
-
只用下面这些无参方法。不要 `window.top.location`,不要往方法里塞 URL;路径由宿主自己改。
|
|
60
|
-
|
|
61
|
-
| 方法 | 说明 |
|
|
62
|
-
| --- | --- |
|
|
63
|
-
| `navigateHome()` | 回社区首页 |
|
|
64
|
-
| `navigateAuthorPage()` | 打开作者页 |
|
|
65
|
-
| `navigateBack()` | 上一页(没有历史则回帖) |
|
|
66
|
-
| `requestFullscreen()` | 全屏**播放器壳**,不是游戏自己改 `top` |
|
|
67
|
-
| `exitFullscreen()` | 退出全屏壳 |
|
|
68
|
-
|
|
69
|
-
没有公开的 `toggleFullscreen()`。
|
|
70
|
-
|
|
71
|
-
## 错误码
|
|
72
|
-
|
|
73
|
-
失败时抛出的错误带 `code`(`CgMakerError`):
|
|
74
|
-
|
|
75
|
-
| 码 | 何时 |
|
|
76
|
-
| --- | --- |
|
|
77
|
-
| `NOT_LOGGED_IN` | 未登录,或查询接口鉴权失败 |
|
|
78
|
-
| `LOGIN_CANCELLED` | 用户关掉登录 |
|
|
79
|
-
| `TIMEOUT` | 握手或桥接超时(`ready()` 超时不抛错,只给 `ready: false`) |
|
|
80
|
-
| `FULLSCREEN_DENIED` | 浏览器拒绝全屏 |
|
|
81
|
-
| `FAILED` | 其它失败 |
|
|
1
|
+
# CgMakerSdk 接口
|
|
2
|
+
|
|
3
|
+
全局对象:`window.CgMakerSdk`。发布游戏时由平台注入到玩法 HTML,页面加载后即可使用。当前版本见 `version`(如 `0.1.0`)。
|
|
4
|
+
|
|
5
|
+
## 生命周期
|
|
6
|
+
|
|
7
|
+
| 方法 / 属性 | 说明 |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| `version` | SDK 版本字符串 |
|
|
10
|
+
| `ready()` | 与宿主握手。返回 `{ ready, context, error? }`。超时**不抛错**(约 5 秒,`error` 为「等待主站数据超时」) |
|
|
11
|
+
| `isReady()` | 是否已拿到 context |
|
|
12
|
+
| `getError()` | 最近一次握手失败文案 |
|
|
13
|
+
| `getContext()` | 见下方。没有 token |
|
|
14
|
+
| `onChange(fn)` | context / 登录变化时回调,用来自己刷新 UI。必须用返回值取消监听 |
|
|
15
|
+
| `isLoggedIn()` | 是否已有用户 |
|
|
16
|
+
| `getGameId()` / `getUser()` | 便捷读取 |
|
|
17
|
+
|
|
18
|
+
`getContext()`:
|
|
19
|
+
|
|
20
|
+
| 字段 | 含义 |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| `gameId` | 对外游戏 id |
|
|
23
|
+
| `lang` | 握手时播放页语言 |
|
|
24
|
+
| `user` | `{ username, nickname, avatar }` 或 `null`。`username` 来自社区用户 id |
|
|
25
|
+
| `variant` | `1` 正式 / `2` 试玩 / `3` 衍生 |
|
|
26
|
+
| `parentOrigin` | 仅 SDK 内部校验消息来源,不要当业务字段 |
|
|
27
|
+
|
|
28
|
+
## 登录
|
|
29
|
+
|
|
30
|
+
| 方法 | 说明 |
|
|
31
|
+
| --- | --- |
|
|
32
|
+
| `requireLogin()` | 已登录立刻成功。否则请宿主弹出社区登录。用户取消 → 错误码 `LOGIN_CANCELLED` |
|
|
33
|
+
|
|
34
|
+
未登录时试玩 iframe 仍可玩离线内容。`queryGame` / `queryUser` 无登录态时得到 `NOT_LOGGED_IN`。
|
|
35
|
+
|
|
36
|
+
## 查游戏 / 用户
|
|
37
|
+
|
|
38
|
+
需已登录。未登录时 `queryGame` / `queryUser` 会失败(`NOT_LOGGED_IN`)。不要自己带 Cookie 去调社区接口。
|
|
39
|
+
|
|
40
|
+
| 方法 | 说明 |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| `queryGame()` | 当前游戏帖子信息 |
|
|
43
|
+
| `queryUser()` | 当前用户:`username`、`nickname`、`avatar` |
|
|
44
|
+
|
|
45
|
+
`queryGame()` 常用字段:
|
|
46
|
+
|
|
47
|
+
- `game_id`、`owner`、`name`、`summary`、`cover_url`
|
|
48
|
+
- `variant`、`parent_game_id`
|
|
49
|
+
- `price_flower` / `price_cny` / `price_usd`
|
|
50
|
+
- `status`:帖子 `1` 启用 / `2` 禁用
|
|
51
|
+
- `purchased`:对该可售主体是否已支付(作者未下单为 `false`)
|
|
52
|
+
- `can_play`:当前能否玩
|
|
53
|
+
- **不要用 `play_url` 做跳转**
|
|
54
|
+
|
|
55
|
+
章节锁、试玩结束等自制 UI 读 `can_play` / `purchased`。不要在 iframe 里复刻社区购买墙。
|
|
56
|
+
|
|
57
|
+
## 跳转与全屏
|
|
58
|
+
|
|
59
|
+
只用下面这些无参方法。不要 `window.top.location`,不要往方法里塞 URL;路径由宿主自己改。
|
|
60
|
+
|
|
61
|
+
| 方法 | 说明 |
|
|
62
|
+
| --- | --- |
|
|
63
|
+
| `navigateHome()` | 回社区首页 |
|
|
64
|
+
| `navigateAuthorPage()` | 打开作者页 |
|
|
65
|
+
| `navigateBack()` | 上一页(没有历史则回帖) |
|
|
66
|
+
| `requestFullscreen()` | 全屏**播放器壳**,不是游戏自己改 `top` |
|
|
67
|
+
| `exitFullscreen()` | 退出全屏壳 |
|
|
68
|
+
|
|
69
|
+
没有公开的 `toggleFullscreen()`。
|
|
70
|
+
|
|
71
|
+
## 错误码
|
|
72
|
+
|
|
73
|
+
失败时抛出的错误带 `code`(`CgMakerError`):
|
|
74
|
+
|
|
75
|
+
| 码 | 何时 |
|
|
76
|
+
| --- | --- |
|
|
77
|
+
| `NOT_LOGGED_IN` | 未登录,或查询接口鉴权失败 |
|
|
78
|
+
| `LOGIN_CANCELLED` | 用户关掉登录 |
|
|
79
|
+
| `TIMEOUT` | 握手或桥接超时(`ready()` 超时不抛错,只给 `ready: false`) |
|
|
80
|
+
| `FULLSCREEN_DENIED` | 浏览器拒绝全屏 |
|
|
81
|
+
| `FAILED` | 其它失败 |
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
|
|
45
45
|
试玩(同一工程、同一份 `src/`,两次 build 都进 `dist/`):必须提供 `scripts.build:demo`,自己从 `assets/` 切片或按模板约定生成试玩内容。不要第二份作者工程,不要 `dist-demo/`。
|
|
46
46
|
|
|
47
|
-
安装之后多出来、**不要打回 zip** 的:`.cgmaker/`(`origin.json` 模板身份、`game.json` 游戏正式版 / demo,见 [docs/origin.md](../../../../../docs/origin.md))、`node_modules/`、`dist/`、以及 create/init 或 `cgmaker skill`
|
|
47
|
+
安装之后多出来、**不要打回 zip** 的:`.cgmaker/`(`origin.json` 模板身份、`game.json` 游戏正式版 / demo,见 [docs/origin.md](../../../../../docs/origin.md))、`node_modules/`、`dist/`、以及 create/init 或 `cgmaker skill` 按所选编辑器拷入的 `.agents/` `.cursor/` 等目录(未选编辑器则没有这些目录;之后可 `npx cgmaker skill --platform cursor` 补装)。凭据在 `~/.cgmaker/`,不在工程里。
|
|
48
48
|
|
|
49
49
|
不要出现:
|
|
50
50
|
|