koishi-plugin-rocom 1.0.8 → 1.0.10

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.
@@ -1,192 +1,300 @@
1
- @font-face {
2
- font-family: "rocom-player";
3
- src: url("../../ttf/HYWenHei-85W-1.ttf") format("truetype");
4
- font-display: swap;
5
- }
6
-
7
- html,
8
- body {
9
- margin: 0;
10
- padding: 26px;
11
- background: #efe6d8;
12
- display: inline-block;
13
- font-family: "rocom-player", "Microsoft YaHei", "PingFang SC", sans-serif;
14
- }
15
-
16
- .player-page {
17
- width: 1180px;
18
- padding: 34px 36px 30px;
19
- box-sizing: border-box;
20
- border-radius: 28px;
21
- color: #322618;
22
- background:
23
- linear-gradient(rgba(40, 29, 18, 0.10), rgba(40, 29, 18, 0.10)),
24
- url("../../img/ercode-bg.D1ccSQKH.png") center/cover no-repeat;
25
- }
26
-
27
- .page-header {
28
- padding-bottom: 18px;
29
- border-bottom: 2px dashed rgba(141, 106, 68, 0.28);
30
- }
31
-
32
- .page-title {
33
- font-size: 44px;
34
- line-height: 1.1;
35
- font-weight: 800;
36
- }
37
-
38
- .page-subtitle {
39
- margin-top: 10px;
40
- font-size: 22px;
41
- line-height: 1.4;
42
- color: #6d5944;
43
- }
44
-
45
- .hero-card,
46
- .summary-card,
47
- .panel-card,
48
- .command-hint {
49
- border: 1px solid rgba(141, 106, 68, 0.16);
50
- border-radius: 20px;
51
- background: rgba(255, 252, 247, 0.82);
52
- box-shadow: 0 10px 26px rgba(83, 58, 35, 0.08);
53
- }
54
-
55
- .hero-card {
56
- margin-top: 22px;
57
- padding: 24px 26px;
58
- background:
59
- linear-gradient(135deg, rgba(237, 179, 89, 0.24), rgba(255, 251, 245, 0.88)),
60
- rgba(255, 252, 247, 0.86);
61
- }
62
-
63
- .hero-title {
64
- font-size: 20px;
65
- color: #8b735b;
66
- }
67
-
68
- .hero-value {
69
- margin-top: 8px;
70
- font-size: 42px;
71
- line-height: 1.15;
72
- font-weight: 800;
73
- color: #2e2418;
74
- }
75
-
76
- .hero-subvalue {
77
- margin-top: 8px;
78
- font-size: 22px;
79
- color: #6d5944;
80
- }
81
-
82
- .summary-grid {
83
- display: grid;
84
- grid-template-columns: repeat(3, 1fr);
85
- gap: 16px;
86
- margin-top: 22px;
87
- }
88
-
89
- .summary-card {
90
- padding: 18px 20px;
91
- }
92
-
93
- .summary-label {
94
- font-size: 18px;
95
- color: #8b735b;
96
- }
97
-
98
- .summary-value {
99
- margin-top: 10px;
100
- font-size: 30px;
101
- line-height: 1.2;
102
- font-weight: 800;
103
- }
104
-
105
- .panel-card {
106
- margin-top: 18px;
107
- padding: 20px;
108
- }
109
-
110
- .signature-panel {
111
- margin-top: 20px;
112
- }
113
-
114
- .section-grid {
115
- display: grid;
116
- grid-template-columns: repeat(2, minmax(0, 1fr));
117
- gap: 18px;
118
- margin-top: 18px;
119
- }
120
-
121
- .info-panel {
122
- margin-top: 0;
123
- }
124
-
125
- .section-title {
126
- margin-bottom: 14px;
127
- font-size: 28px;
128
- font-weight: 800;
129
- }
130
-
131
- .signature-box {
132
- padding: 18px 20px;
133
- border-radius: 18px;
134
- background: rgba(255,255,255,0.42);
135
- border: 1px solid rgba(141, 106, 68, 0.10);
136
- font-size: 22px;
137
- line-height: 1.5;
138
- color: #4f3c29;
139
- }
140
-
141
- .detail-card {
142
- overflow: hidden;
143
- border-radius: 18px;
144
- background: rgba(255,255,255,0.42);
145
- border: 1px solid rgba(141, 106, 68, 0.10);
146
- padding: 0 16px;
147
- }
148
-
149
- .detail-row {
150
- display: grid;
151
- grid-template-columns: 220px 1fr;
152
- gap: 16px;
153
- padding: 14px 0;
154
- border-bottom: 1px solid rgba(141, 106, 68, 0.10);
155
- }
156
-
157
- .detail-row:last-child {
158
- border-bottom: none;
159
- }
160
-
161
- .detail-label {
162
- font-size: 20px;
163
- font-weight: 700;
164
- color: #6d5944;
165
- }
166
-
167
- .detail-value {
168
- font-size: 20px;
169
- color: #322618;
170
- word-break: break-word;
171
- text-align: right;
172
- }
173
-
174
- .command-hint {
175
- margin-top: 20px;
176
- padding: 14px 18px;
177
- font-size: 20px;
178
- color: #6d5944;
179
- }
180
-
181
- .footer {
182
- margin-top: 18px;
183
- text-align: center;
184
- font-size: 16px;
185
- color: rgba(113, 93, 73, 0.88);
186
- }
187
-
188
- @media (max-width: 1280px) {
189
- .section-grid {
190
- grid-template-columns: 1fr;
191
- }
192
- }
1
+ @font-face {
2
+ font-family: "rocom-player";
3
+ src: url("../../ttf/HYWenHei-85W-1.ttf") format("truetype");
4
+ font-display: swap;
5
+ }
6
+
7
+ * {
8
+ box-sizing: border-box;
9
+ }
10
+
11
+ html,
12
+ body {
13
+ margin: 0;
14
+ padding: 20px;
15
+ display: inline-block;
16
+ background: #f4ecdc;
17
+ color: #33271a;
18
+ font-family: "rocom-player", "Microsoft YaHei", "PingFang SC", sans-serif;
19
+ }
20
+
21
+ .player-page {
22
+ position: relative;
23
+ width: 1240px;
24
+ overflow: hidden;
25
+ border-radius: 28px;
26
+ padding: 0 32px 28px;
27
+ background: #f4ecdc;
28
+ box-shadow: 0 26px 58px rgba(76, 55, 32, 0.18);
29
+ }
30
+
31
+ .page-bg {
32
+ position: absolute;
33
+ inset: 0;
34
+ background:
35
+ radial-gradient(circle at 10% 12%, rgba(255, 231, 177, 0.52), transparent 28%),
36
+ radial-gradient(circle at 96% 18%, rgba(255, 188, 85, 0.24), transparent 30%);
37
+ pointer-events: none;
38
+ }
39
+
40
+ .page-header,
41
+ .profile-strip,
42
+ .summary-strip,
43
+ .signature-strip,
44
+ .content-grid,
45
+ .page-footer {
46
+ position: relative;
47
+ z-index: 1;
48
+ }
49
+
50
+ /* ── Header ── */
51
+
52
+ .page-header {
53
+ position: relative;
54
+ min-height: 88px;
55
+ display: grid;
56
+ place-items: center;
57
+ overflow: hidden;
58
+ margin: 0 -32px;
59
+ background: linear-gradient(90deg, #ffc95f, #f5b64c);
60
+ }
61
+
62
+ .page-title {
63
+ position: relative;
64
+ z-index: 2;
65
+ color: #10100e;
66
+ font-size: 42px;
67
+ line-height: 1;
68
+ letter-spacing: 4px;
69
+ text-shadow: 0 3px 0 rgba(255, 255, 255, 0.22);
70
+ }
71
+
72
+ .page-title-ghost {
73
+ position: absolute;
74
+ inset: -12px 0 auto;
75
+ z-index: 1;
76
+ text-align: center;
77
+ color: rgba(255, 228, 152, 0.24);
78
+ font-size: 100px;
79
+ line-height: 1.1;
80
+ letter-spacing: 8px;
81
+ white-space: nowrap;
82
+ }
83
+
84
+ /* ── Profile Strip ── */
85
+
86
+ .profile-strip {
87
+ display: flex;
88
+ align-items: center;
89
+ justify-content: center;
90
+ gap: 22px;
91
+ margin-top: 20px;
92
+ padding: 20px 32px;
93
+ border-radius: 22px;
94
+ background: rgba(250, 247, 238, 0.78);
95
+ border: 1px solid rgba(143, 113, 73, 0.16);
96
+ box-shadow: 0 12px 26px rgba(88, 64, 38, 0.08);
97
+ }
98
+
99
+ .profile-main {
100
+ min-width: 0;
101
+ flex: 1;
102
+ text-align: center;
103
+ }
104
+
105
+ .profile-name-row {
106
+ display: flex;
107
+ align-items: center;
108
+ justify-content: center;
109
+ flex-wrap: wrap;
110
+ gap: 14px;
111
+ }
112
+
113
+ .player-name {
114
+ max-width: 820px;
115
+ overflow: hidden;
116
+ color: #171411;
117
+ font-size: 40px;
118
+ line-height: 1.12;
119
+ text-overflow: ellipsis;
120
+ white-space: nowrap;
121
+ font-weight: 800;
122
+ }
123
+
124
+ .uid-pill {
125
+ padding: 8px 18px;
126
+ border-radius: 999px;
127
+ background: #ffc65f;
128
+ color: #3c2a12;
129
+ font-size: 20px;
130
+ line-height: 1;
131
+ box-shadow: inset 0 -2px 0 rgba(141, 94, 30, 0.12);
132
+ }
133
+
134
+ .profile-subtitle {
135
+ margin-top: 8px;
136
+ color: #7f6e57;
137
+ font-size: 20px;
138
+ }
139
+
140
+ /* ── Summary Strip ── */
141
+
142
+ .summary-strip {
143
+ display: grid;
144
+ grid-template-columns: repeat(3, minmax(0, 1fr));
145
+ gap: 12px;
146
+ margin-top: 16px;
147
+ }
148
+
149
+ .summary-item {
150
+ display: flex;
151
+ flex-direction: column;
152
+ align-items: center;
153
+ justify-content: center;
154
+ min-height: 72px;
155
+ padding: 12px 16px;
156
+ border-radius: 999px;
157
+ border: 1px solid rgba(143, 113, 73, 0.14);
158
+ background: rgba(250, 247, 238, 0.82);
159
+ box-shadow: 0 12px 26px rgba(88, 64, 38, 0.08);
160
+ text-align: center;
161
+ }
162
+
163
+ .summary-label {
164
+ color: #7e6a50;
165
+ font-size: 15px;
166
+ }
167
+
168
+ .summary-value {
169
+ margin-top: 4px;
170
+ color: #33271a;
171
+ font-size: 26px;
172
+ line-height: 1.1;
173
+ white-space: nowrap;
174
+ font-weight: 800;
175
+ }
176
+
177
+ /* ── Signature Strip ── */
178
+
179
+ .signature-strip {
180
+ margin-top: 14px;
181
+ padding: 16px 24px;
182
+ border-radius: 20px;
183
+ background: rgba(250, 247, 238, 0.78);
184
+ border: 1px solid rgba(143, 113, 73, 0.16);
185
+ box-shadow: 0 12px 26px rgba(88, 64, 38, 0.08);
186
+ text-align: center;
187
+ }
188
+
189
+ .signature-label {
190
+ color: #907b5e;
191
+ font-size: 14px;
192
+ margin-bottom: 6px;
193
+ }
194
+
195
+ .signature-text {
196
+ color: #4a3a28;
197
+ font-size: 20px;
198
+ line-height: 1.55;
199
+ }
200
+
201
+ /* ── Content Grid ── */
202
+
203
+ .content-grid {
204
+ display: grid;
205
+ grid-template-columns: repeat(2, minmax(0, 1fr));
206
+ gap: 14px;
207
+ align-items: start;
208
+ margin-top: 14px;
209
+ }
210
+
211
+ .panel {
212
+ border-radius: 22px;
213
+ padding: 20px 22px;
214
+ border: 1px solid rgba(143, 113, 73, 0.14);
215
+ background: rgba(250, 247, 238, 0.82);
216
+ box-shadow: 0 12px 26px rgba(88, 64, 38, 0.08);
217
+ }
218
+
219
+ .panel-head {
220
+ margin-bottom: 14px;
221
+ text-align: center;
222
+ }
223
+
224
+ .panel-head h2 {
225
+ margin: 0;
226
+ color: #171411;
227
+ font-size: 26px;
228
+ line-height: 1.1;
229
+ font-weight: 800;
230
+ }
231
+
232
+ .detail-list {
233
+ border-radius: 16px;
234
+ overflow: hidden;
235
+ background: rgba(255, 255, 255, 0.52);
236
+ border: 1px solid rgba(143, 113, 73, 0.10);
237
+ }
238
+
239
+ .detail-row {
240
+ display: flex;
241
+ align-items: center;
242
+ justify-content: space-between;
243
+ gap: 14px;
244
+ padding: 12px 20px;
245
+ border-bottom: 1px solid rgba(143, 113, 73, 0.08);
246
+ }
247
+
248
+ .detail-row:last-child {
249
+ border-bottom: none;
250
+ }
251
+
252
+ .detail-label {
253
+ flex-shrink: 0;
254
+ color: #8c7354;
255
+ font-size: 18px;
256
+ font-weight: 700;
257
+ min-width: 80px;
258
+ }
259
+
260
+ .detail-value {
261
+ color: #33271a;
262
+ font-size: 18px;
263
+ text-align: right;
264
+ word-break: break-word;
265
+ min-width: 0;
266
+ flex: 1;
267
+ }
268
+
269
+ /* ── Footer ── */
270
+
271
+ .page-footer {
272
+ margin-top: 18px;
273
+ padding: 12px 0 0;
274
+ text-align: center;
275
+ }
276
+
277
+ .command-hint {
278
+ display: inline-block;
279
+ padding: 7px 18px;
280
+ border-radius: 999px;
281
+ background: rgba(255, 198, 95, 0.22);
282
+ color: #795f3f;
283
+ font-size: 16px;
284
+ margin-bottom: 8px;
285
+ }
286
+
287
+ .copyright {
288
+ color: rgba(113, 93, 73, 0.72);
289
+ font-size: 14px;
290
+ }
291
+
292
+ @media (max-width: 1280px) {
293
+ .content-grid {
294
+ grid-template-columns: 1fr;
295
+ }
296
+
297
+ .summary-strip {
298
+ grid-template-columns: repeat(2, 1fr);
299
+ }
300
+ }
package/lib/render.js CHANGED
@@ -165,9 +165,6 @@ class Renderer {
165
165
  '.player-search-page',
166
166
  '.ingame-shop-page',
167
167
  '.friendship-page',
168
- '.student-state-page',
169
- '.student-perks-page',
170
- '.student-page',
171
168
  '.merchant-page',
172
169
  '.home-page',
173
170
  '.pet-panel-page',
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-rocom",
3
3
  "description": "洛克王国查询与订阅插件",
4
- "version": "1.0.8",
4
+ "version": "1.0.10",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "homepage": "https://github.com/staytomorrow/koishi-plugin-rocom",
package/readme.md CHANGED
@@ -10,10 +10,9 @@
10
10
  ---
11
11
 
12
12
  临时APIKey(任选其一)
13
- sk-ba042e079cf9ccb30e72b3d5af458f45
14
- sk-c7952558b84a176b76d0215760732330
15
- sk-b3d96323b2b045282c52f81ca43fcad8
16
- sk-5c14c1e5da063037d02c15e50285dd04
13
+ sk-0c1476b201301170e6360453becb27f5
14
+
15
+ sk-481029d0d4fc412ce9ebb391397c1e5c
17
16
 
18
17
  ---
19
18
 
@@ -1,95 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="zh-CN">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=1280, initial-scale=1">
6
- <link rel="stylesheet" href="{{_res_path}}render/student/style.css">
7
- </head>
8
- <body>
9
- <div class="student-page">
10
- <div class="page-header">
11
- <div class="page-title">{{title}}</div>
12
- <div class="page-subtitle">{{subtitle}}</div>
13
- </div>
14
-
15
- <div class="hero-card">
16
- <div class="hero-title">{{heroTitle}}</div>
17
- <div class="hero-value">{{heroValue}}</div>
18
- <div class="hero-subvalue">{{heroSubvalue}}</div>
19
- </div>
20
-
21
- <div class="summary-grid">
22
- {{each summaryCards item}}
23
- <div class="summary-card">
24
- <div class="summary-label">{{item.label}}</div>
25
- <div class="summary-value">{{item.value}}</div>
26
- </div>
27
- {{/each}}
28
- </div>
29
-
30
- <div class="dual-grid">
31
- <div class="panel-card">
32
- <div class="section-title">认证信息</div>
33
- <div class="detail-card">
34
- {{each stateItems item}}
35
- <div class="detail-row">
36
- <div class="detail-label">{{item.label}}</div>
37
- <div class="detail-value">{{item.value}}</div>
38
- </div>
39
- {{/each}}
40
- </div>
41
- <div class="panel-footer">认证接口:{{stateResult}}</div>
42
- </div>
43
-
44
- <div class="panel-card">
45
- <div class="section-title">奖励信息</div>
46
- <div class="perks-list">
47
- {{each perkCards item}}
48
- <div class="perk-card">
49
- <div class="perk-top">
50
- <div class="perk-icon-wrap">
51
- {{if item.icon}}
52
- <img src="{{item.icon}}" class="perk-icon" alt="{{item.name}}">
53
- {{else}}
54
- <div class="perk-icon perk-icon-fallback">?</div>
55
- {{/if}}
56
- </div>
57
- <div class="perk-main">
58
- <div class="perk-name">{{item.name}}</div>
59
- <div class="perk-meta">ID {{item.id}} | 数量 x{{item.count}}</div>
60
- </div>
61
- <div class="perk-state">{{item.stateText}}</div>
62
- </div>
63
- <div class="perk-desc">{{item.desc}}</div>
64
- </div>
65
- {{/each}}
66
- {{if !perkCards || !perkCards.length}}
67
- <div class="empty-card">当前接口未返回奖励列表。</div>
68
- {{/if}}
69
- </div>
70
- <div class="panel-footer">奖励接口:{{perksResult}}</div>
71
- </div>
72
- </div>
73
-
74
- {{if detailItems && detailItems.length}}
75
- <div class="panel-card extra-panel">
76
- <div class="section-title">补充信息</div>
77
- <div class="detail-card">
78
- {{each detailItems item}}
79
- <div class="detail-row">
80
- <div class="detail-label">{{item.label}}</div>
81
- <div class="detail-value">{{item.value}}</div>
82
- </div>
83
- {{/each}}
84
- </div>
85
- </div>
86
- {{/if}}
87
-
88
- {{if commandHint}}
89
- <div class="command-hint">{{commandHint}}</div>
90
- {{/if}}
91
-
92
- <div class="footer">{{copyright}}</div>
93
- </div>
94
- </body>
95
- </html>