@zhin.js/plugin-roulette 0.0.0-stage → 0.1.0
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 +67 -2
- package/commands/roulette/[[action]]/index.js +13 -0
- package/lib/config.d.ts +14 -0
- package/lib/config.js +27 -0
- package/lib/deadline-job.d.ts +9 -0
- package/lib/deadline-job.js +45 -0
- package/lib/engine.d.ts +61 -0
- package/lib/engine.js +157 -0
- package/lib/game-flow.d.ts +26 -0
- package/lib/game-flow.js +208 -0
- package/lib/index.d.ts +8 -0
- package/lib/index.js +8 -0
- package/lib/models.d.ts +41 -0
- package/lib/models.js +29 -0
- package/lib/mute-penalty.d.ts +31 -0
- package/lib/mute-penalty.js +53 -0
- package/lib/roulette-actions.d.ts +4 -0
- package/lib/roulette-actions.js +51 -0
- package/lib/roulette-command.d.ts +6 -0
- package/lib/roulette-command.js +22 -0
- package/lib/runtime.d.ts +16 -0
- package/lib/runtime.js +40 -0
- package/lib/session-service.d.ts +59 -0
- package/lib/session-service.js +167 -0
- package/lib/view.d.ts +10 -0
- package/lib/view.js +73 -0
- package/middlewares/roulette-alias/index.js +10 -0
- package/middlewares/roulette-fire/index.js +30 -0
- package/package.json +100 -3
- package/plugin.js +39 -0
- package/schedules/deadlines/index.js +8 -0
- package/schema.json +42 -0
package/package.json
CHANGED
|
@@ -1,6 +1,103 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/plugin-roulette",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Zhin.js 俄罗斯轮盘 — 多人轮流开枪,可按群开启禁言惩罚 (Plugin Runtime)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./lib/index.js",
|
|
7
|
+
"types": "./lib/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./lib/index.d.ts",
|
|
11
|
+
"import": "./lib/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./package.json": "./package.json"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"lib",
|
|
17
|
+
"plugin.js",
|
|
18
|
+
"schema.json",
|
|
19
|
+
"commands/**/*.js",
|
|
20
|
+
"middlewares/**/*.js",
|
|
21
|
+
"schedules/**/*.js",
|
|
22
|
+
"README.md",
|
|
23
|
+
"CHANGELOG.md"
|
|
24
|
+
],
|
|
25
|
+
"keywords": [
|
|
26
|
+
"zhin",
|
|
27
|
+
"zhin.js",
|
|
28
|
+
"game",
|
|
29
|
+
"roulette"
|
|
30
|
+
],
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@zhin.js/core": "1.1.46",
|
|
34
|
+
"@zhin.js/game-kit": "1.1.11"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"typescript": "^6.0.3",
|
|
38
|
+
"vitest": "^4.1.10",
|
|
39
|
+
"@zhin.js/schedule-feature": "1.1.6",
|
|
40
|
+
"zhin.js": "1.1.11",
|
|
41
|
+
"@zhin.js/testing": "1.0.4"
|
|
42
|
+
},
|
|
43
|
+
"repository": {
|
|
44
|
+
"type": "git",
|
|
45
|
+
"url": "git+https://github.com/zhinjs/zhin.git",
|
|
46
|
+
"directory": "plugins/games/roulette"
|
|
47
|
+
},
|
|
48
|
+
"publishConfig": {
|
|
49
|
+
"access": "public",
|
|
50
|
+
"registry": "https://registry.npmjs.org"
|
|
51
|
+
},
|
|
52
|
+
"engines": {
|
|
53
|
+
"node": ">=22.19.0"
|
|
54
|
+
},
|
|
55
|
+
"zhin": {
|
|
56
|
+
"protocol": 1,
|
|
57
|
+
"type": "plugin",
|
|
58
|
+
"entry": "./plugin.js",
|
|
59
|
+
"engine": "^1.0.0",
|
|
60
|
+
"runtime": "trusted",
|
|
61
|
+
"features": [
|
|
62
|
+
{
|
|
63
|
+
"package": "@zhin.js/command",
|
|
64
|
+
"api": "^1.0.0"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"package": "@zhin.js/middleware",
|
|
68
|
+
"api": "^1.0.0"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"package": "@zhin.js/game-kit",
|
|
72
|
+
"api": "^1.0.0"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"package": "@zhin.js/schedule-feature",
|
|
76
|
+
"api": "^1.0.0"
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"plugins": []
|
|
80
|
+
},
|
|
81
|
+
"peerDependencies": {
|
|
82
|
+
"@zhin.js/middleware": "^1.1.7",
|
|
83
|
+
"zhin.js": "^1.1.11",
|
|
84
|
+
"@zhin.js/command": "^1.1.8",
|
|
85
|
+
"@zhin.js/schedule-feature": "^1.1.6"
|
|
86
|
+
},
|
|
87
|
+
"peerDependenciesMeta": {
|
|
88
|
+
"@zhin.js/command": {
|
|
89
|
+
"optional": true
|
|
90
|
+
},
|
|
91
|
+
"@zhin.js/middleware": {
|
|
92
|
+
"optional": true
|
|
93
|
+
},
|
|
94
|
+
"@zhin.js/schedule-feature": {
|
|
95
|
+
"optional": true
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"scripts": {
|
|
99
|
+
"build": "tsc",
|
|
100
|
+
"clean": "rimraf lib",
|
|
101
|
+
"test": "NODE_OPTIONS=--experimental-strip-types vitest run --root ../../.. plugins/games/roulette/tests"
|
|
102
|
+
}
|
|
6
103
|
}
|
package/plugin.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Generated by build-plugin-runtime-entries.mjs. Do not edit.
|
|
2
|
+
import { defineGamePlugin } from '@zhin.js/game-kit';
|
|
3
|
+
import { ROULETTE_TABLES, defineHostTables } from "./lib/models.js";
|
|
4
|
+
import { rouletteServicesToken } from "./lib/runtime.js";
|
|
5
|
+
import { createServices, } from "./lib/session-service.js";
|
|
6
|
+
/**
|
|
7
|
+
* Plugin Runtime wiring:
|
|
8
|
+
* - `commands/roulette` and the `轮盘` alias middleware share one action runner.
|
|
9
|
+
* - `middlewares/roulette-fire` lets the player on turn just say 「开枪」.
|
|
10
|
+
* - Sessions use the host database when installed, otherwise memory.
|
|
11
|
+
* - `schedules/deadlines` enforces turn and lobby timeouts and posts the result.
|
|
12
|
+
* - Results feed game-hub records, so 「战绩」 and 「排行 轮盘」 work.
|
|
13
|
+
*/
|
|
14
|
+
export default defineGamePlugin({
|
|
15
|
+
name: 'roulette',
|
|
16
|
+
metadata: {
|
|
17
|
+
displayName: 'Russian Roulette',
|
|
18
|
+
},
|
|
19
|
+
game: {
|
|
20
|
+
id: 'roulette',
|
|
21
|
+
title: '俄罗斯轮盘',
|
|
22
|
+
icon: '🔫',
|
|
23
|
+
description: '多人轮流开枪,中弹者输;可按群开启禁言惩罚',
|
|
24
|
+
commandPrefix: '/轮盘',
|
|
25
|
+
quickStart: '开局',
|
|
26
|
+
aliases: ['轮盘赌', 'roulette'],
|
|
27
|
+
menus: [
|
|
28
|
+
{ id: 'open', label: '🎮 开局' },
|
|
29
|
+
{ id: 'join', label: '🙋 加入' },
|
|
30
|
+
{ id: 'help', label: '📖 玩法说明' },
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
tables: ROULETTE_TABLES,
|
|
34
|
+
servicesToken: rouletteServicesToken,
|
|
35
|
+
defineHostTables,
|
|
36
|
+
createServices: (database) => createServices(database),
|
|
37
|
+
session: (services) => services.sessions,
|
|
38
|
+
stale: false,
|
|
39
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Generated by build-plugin-runtime-entries.mjs. Do not edit.
|
|
2
|
+
import { defineSchedule } from '@zhin.js/schedule-feature';
|
|
3
|
+
import { DEADLINE_CRON, runDeadlineSweep } from "../../lib/deadline-job.js";
|
|
4
|
+
export default defineSchedule({
|
|
5
|
+
cron: DEADLINE_CRON,
|
|
6
|
+
description: '结束超时未开枪的回合和无人开始的房间',
|
|
7
|
+
execute: (context) => runDeadlineSweep(context, Date.now()),
|
|
8
|
+
});
|
package/schema.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"properties": {
|
|
6
|
+
"chambers": {
|
|
7
|
+
"type": "integer",
|
|
8
|
+
"minimum": 2,
|
|
9
|
+
"maximum": 12,
|
|
10
|
+
"default": 6,
|
|
11
|
+
"description": "弹巢数量,其中一发是实弹"
|
|
12
|
+
},
|
|
13
|
+
"maxPlayers": {
|
|
14
|
+
"type": "integer",
|
|
15
|
+
"minimum": 2,
|
|
16
|
+
"maximum": 10,
|
|
17
|
+
"default": 6,
|
|
18
|
+
"description": "单局最多玩家数"
|
|
19
|
+
},
|
|
20
|
+
"turnTimeoutSeconds": {
|
|
21
|
+
"type": "integer",
|
|
22
|
+
"minimum": 10,
|
|
23
|
+
"maximum": 600,
|
|
24
|
+
"default": 60,
|
|
25
|
+
"description": "轮到的玩家超过这个秒数不开枪,判负"
|
|
26
|
+
},
|
|
27
|
+
"lobbyTimeoutSeconds": {
|
|
28
|
+
"type": "integer",
|
|
29
|
+
"minimum": 30,
|
|
30
|
+
"maximum": 3600,
|
|
31
|
+
"default": 300,
|
|
32
|
+
"description": "开局后超过这个秒数仍未开始,自动解散"
|
|
33
|
+
},
|
|
34
|
+
"muteSeconds": {
|
|
35
|
+
"type": "integer",
|
|
36
|
+
"minimum": 10,
|
|
37
|
+
"maximum": 3600,
|
|
38
|
+
"default": 60,
|
|
39
|
+
"description": "开启禁言惩罚的群里,输家被禁言的秒数(每个群默认关闭)"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|