koishi-plugin-dew-bot 1.0.188

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.
Files changed (137) hide show
  1. package/lib/html/css/body.css +287 -0
  2. package/lib/html/css/equip.css +115 -0
  3. package/lib/html/css/skill.css +75 -0
  4. package/lib/html/css/talent.css +58 -0
  5. package/lib/html/page/body.html +96 -0
  6. package/lib/html/page/equip.html +98 -0
  7. package/lib/html/page/mini_texas.html +493 -0
  8. package/lib/html/page/skill.html +76 -0
  9. package/lib/html/page/talent.html +76 -0
  10. package/lib/html/res/avatar.jpg +0 -0
  11. package/lib/html/res/body/box.png +0 -0
  12. package/lib/html/res/body/share/test.png +0 -0
  13. package/lib/html/res/body/title/test.png +0 -0
  14. package/lib/html/res/body/title/test1.png +0 -0
  15. package/lib/html/res/equip/equip_border.png +0 -0
  16. package/lib/html/res/equip/icon/none.png +0 -0
  17. package/lib/html/res/equip/icon/test.png +0 -0
  18. package/lib/html/res/equip/quality/0.png +0 -0
  19. package/lib/html/res/equip/quality/1.png +0 -0
  20. package/lib/html/res/equip/quality/2.png +0 -0
  21. package/lib/html/res/equip/quality/3.png +0 -0
  22. package/lib/html/res/equip/quality/4.png +0 -0
  23. package/lib/html/res/equip/quality/5.png +0 -0
  24. package/lib/html/res/equip/quality/6.png +0 -0
  25. package/lib/html/res/equip/quality/7.png +0 -0
  26. package/lib/html/res/equip/quality/8.png +0 -0
  27. package/lib/html/res/equip/quality/9.png +0 -0
  28. package/lib/html/res/font/cn.ttf +0 -0
  29. package/lib/html/res/font/xiaomai.ttf +0 -0
  30. package/lib/html/res/mini/chip/chip0.png +0 -0
  31. package/lib/html/res/mini/chip/chip1.png +0 -0
  32. package/lib/html/res/mini/chip/chip2.png +0 -0
  33. package/lib/html/res/mini/chip/chip3.png +0 -0
  34. package/lib/html/res/mini/chip/chip4.png +0 -0
  35. package/lib/html/res/mini/chip/chip5.png +0 -0
  36. package/lib/html/res/mini/poker/backPoker.png +0 -0
  37. package/lib/html/res/mini/poker/poker_0_10.png +0 -0
  38. package/lib/html/res/mini/poker/poker_0_11.png +0 -0
  39. package/lib/html/res/mini/poker/poker_0_12.png +0 -0
  40. package/lib/html/res/mini/poker/poker_0_13.png +0 -0
  41. package/lib/html/res/mini/poker/poker_0_14.png +0 -0
  42. package/lib/html/res/mini/poker/poker_0_2.png +0 -0
  43. package/lib/html/res/mini/poker/poker_0_3.png +0 -0
  44. package/lib/html/res/mini/poker/poker_0_4.png +0 -0
  45. package/lib/html/res/mini/poker/poker_0_5.png +0 -0
  46. package/lib/html/res/mini/poker/poker_0_6.png +0 -0
  47. package/lib/html/res/mini/poker/poker_0_7.png +0 -0
  48. package/lib/html/res/mini/poker/poker_0_8.png +0 -0
  49. package/lib/html/res/mini/poker/poker_0_9.png +0 -0
  50. package/lib/html/res/mini/poker/poker_1_10.png +0 -0
  51. package/lib/html/res/mini/poker/poker_1_11.png +0 -0
  52. package/lib/html/res/mini/poker/poker_1_12.png +0 -0
  53. package/lib/html/res/mini/poker/poker_1_13.png +0 -0
  54. package/lib/html/res/mini/poker/poker_1_14.png +0 -0
  55. package/lib/html/res/mini/poker/poker_1_2.png +0 -0
  56. package/lib/html/res/mini/poker/poker_1_3.png +0 -0
  57. package/lib/html/res/mini/poker/poker_1_4.png +0 -0
  58. package/lib/html/res/mini/poker/poker_1_5.png +0 -0
  59. package/lib/html/res/mini/poker/poker_1_6.png +0 -0
  60. package/lib/html/res/mini/poker/poker_1_7.png +0 -0
  61. package/lib/html/res/mini/poker/poker_1_8.png +0 -0
  62. package/lib/html/res/mini/poker/poker_1_9.png +0 -0
  63. package/lib/html/res/mini/poker/poker_2_10.png +0 -0
  64. package/lib/html/res/mini/poker/poker_2_11.png +0 -0
  65. package/lib/html/res/mini/poker/poker_2_12.png +0 -0
  66. package/lib/html/res/mini/poker/poker_2_13.png +0 -0
  67. package/lib/html/res/mini/poker/poker_2_14.png +0 -0
  68. package/lib/html/res/mini/poker/poker_2_2.png +0 -0
  69. package/lib/html/res/mini/poker/poker_2_3.png +0 -0
  70. package/lib/html/res/mini/poker/poker_2_4.png +0 -0
  71. package/lib/html/res/mini/poker/poker_2_5.png +0 -0
  72. package/lib/html/res/mini/poker/poker_2_6.png +0 -0
  73. package/lib/html/res/mini/poker/poker_2_7.png +0 -0
  74. package/lib/html/res/mini/poker/poker_2_8.png +0 -0
  75. package/lib/html/res/mini/poker/poker_2_9.png +0 -0
  76. package/lib/html/res/mini/poker/poker_3_10.png +0 -0
  77. package/lib/html/res/mini/poker/poker_3_11.png +0 -0
  78. package/lib/html/res/mini/poker/poker_3_12.png +0 -0
  79. package/lib/html/res/mini/poker/poker_3_13.png +0 -0
  80. package/lib/html/res/mini/poker/poker_3_14.png +0 -0
  81. package/lib/html/res/mini/poker/poker_3_2.png +0 -0
  82. package/lib/html/res/mini/poker/poker_3_3.png +0 -0
  83. package/lib/html/res/mini/poker/poker_3_4.png +0 -0
  84. package/lib/html/res/mini/poker/poker_3_5.png +0 -0
  85. package/lib/html/res/mini/poker/poker_3_6.png +0 -0
  86. package/lib/html/res/mini/poker/poker_3_7.png +0 -0
  87. package/lib/html/res/mini/poker/poker_3_8.png +0 -0
  88. package/lib/html/res/mini/poker/poker_3_9.png +0 -0
  89. package/lib/html/res/mini/texas/bg.jpg +0 -0
  90. package/lib/html/res/mini/texas/win.png +0 -0
  91. package/lib/html/res/quality/test.png +0 -0
  92. package/lib/html/res/skill/att/dark.png +0 -0
  93. package/lib/html/res/skill/att/divine.png +0 -0
  94. package/lib/html/res/skill/att/earth.png +0 -0
  95. package/lib/html/res/skill/att/fire.png +0 -0
  96. package/lib/html/res/skill/att/light.png +0 -0
  97. package/lib/html/res/skill/att/spell.png +0 -0
  98. package/lib/html/res/skill/att/trap.png +0 -0
  99. package/lib/html/res/skill/att/water.png +0 -0
  100. package/lib/html/res/skill/att/wind.png +0 -0
  101. package/lib/html/res/skill/frame/0.jpg +0 -0
  102. package/lib/html/res/skill/frame/1.jpg +0 -0
  103. package/lib/html/res/skill/frame/2.jpg +0 -0
  104. package/lib/html/res/skill/frame/3.jpg +0 -0
  105. package/lib/html/res/skill/frame/4.jpg +0 -0
  106. package/lib/html/res/skill/frame/5.jpg +0 -0
  107. package/lib/html/res/skill/frame/6.jpg +0 -0
  108. package/lib/html/res/skill/frame/7.jpg +0 -0
  109. package/lib/html/res/skill/frame/8.jpg +0 -0
  110. package/lib/html/res/skill/frame/9.jpg +0 -0
  111. package/lib/html/res/skill/star/level.png +0 -0
  112. package/lib/html/res/skill/star/rank.png +0 -0
  113. package/lib/html/res/skill/test.jpg +0 -0
  114. package/lib/html/res/vue2.js +11 -0
  115. package/lib/index.js +46 -0
  116. package/lib/inits.js +43 -0
  117. package/lib/msgCsl.js +97 -0
  118. package/lib/plugin/console.js +17 -0
  119. package/lib/plugin/messageQueue.js +134 -0
  120. package/lib/plugin/puppeteer.js +81 -0
  121. package/lib/plugin/rateLimiter.js +104 -0
  122. package/lib/plugin/server.js +206 -0
  123. package/lib/plugin/serverHandel/handel_base.js +27 -0
  124. package/lib/plugin/serverHandel/image.js +19 -0
  125. package/lib/plugin/serverHandel/none.js +15 -0
  126. package/lib/plugin/serverHandel/text.js +20 -0
  127. package/lib/plugin/sessions.js +33 -0
  128. package/lib/shared/IBody.js +2 -0
  129. package/lib/shared/IMassage.js +9 -0
  130. package/lib/shared/MsgMessage.js +4 -0
  131. package/lib/shared/PtlMessage.js +4 -0
  132. package/lib/shared/PtlTest.js +4 -0
  133. package/lib/shared/base.js +2 -0
  134. package/lib/shared/face/index.js +47 -0
  135. package/lib/shared/serviceProto.js +328 -0
  136. package/package.json +36 -0
  137. package/readme.md +9 -0
@@ -0,0 +1,98 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>装备卡片</title>
8
+ <script src="../res/vue2.js"></script>
9
+ <link rel="stylesheet" href="../css/equip.css">
10
+ </head>
11
+
12
+ <body>
13
+ <div id="app">
14
+ <div class="equip-iconBox">
15
+ <img class="equip-icon-border" src="../res/equip/equip_border.png">
16
+ <img class="equip-icon-quality" :src="'../res/equip/quality/' + data.quality + '.png'">
17
+ <img class="equip-icon" :src="data.icon" onerror="this.onerror=null; this.src='../res/equip/icon/none.png'">
18
+ </div>
19
+ <div class="equip-baseInfo">
20
+ <div class="equip-name">
21
+ {{ data.name }}
22
+ </div>
23
+ <div class="quality">
24
+ {{ convertToStars(data.quality) }}
25
+ </div>
26
+ <div class="attribute">
27
+ <div v-for="item in data.attribute" :key="item.key">
28
+ {{ item.key }} {{ item.val }}
29
+ </div>
30
+ </div>
31
+ <div class="info-box" v-if="data.skill.length > 0">
32
+ <div class="info-box-title">附带技能:</div>
33
+ <div class="info-box-content">
34
+ <div v-for="item in data.skill" :key="item.id">
35
+ No.{{ item.id }} - {{ item.name }}
36
+ </div>
37
+ </div>
38
+ </div>
39
+ <div class="info-box">
40
+ <div class="info-box-title">装备介绍:</div>
41
+ <div class="info-box-content">
42
+ {{ data.desc }}
43
+ </div>
44
+ </div>
45
+ <div class="info-box">
46
+ <div class="info-box-title">装备来源:</div>
47
+ <div class="info-box-content">
48
+ {{ data.source }}
49
+ </div>
50
+ </div>
51
+ <div class="info-box">
52
+ <div class="info-box-title">装备位置:</div>
53
+ <div class="info-box-content">
54
+ {{ data.type }}
55
+ </div>
56
+ </div>
57
+ </div>
58
+ </div>
59
+ <script>
60
+ let data = {
61
+ name: '星辰法杖111',
62
+ quality: 9,
63
+ icon: 'test',
64
+ attribute: [],
65
+ skill: [{ id: 'p1', name: '金璋皇极' }],
66
+ desc: '',
67
+ source: '世界掉落 · 十日终焉',
68
+ type: '武器',
69
+ };
70
+ new Vue({
71
+ el: '#app',
72
+ data: {
73
+ name: '',
74
+ quality: 4,
75
+ icon: 'none',
76
+ attribute: [],
77
+ skill: [],
78
+ desc: '',
79
+ source: '',
80
+ type: '',
81
+ },
82
+ mounted() {
83
+ this.data = data;
84
+ },
85
+ methods: {
86
+ convertToStars(number) {
87
+ number = number + 1;
88
+ let str = '';
89
+ for (let i = 0; i < number; i++) {
90
+ str += '★';
91
+ }
92
+ return str;
93
+ }
94
+ }
95
+ });
96
+ </script>
97
+
98
+ </body>
@@ -0,0 +1,493 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>德州扑克</title>
8
+ <script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
9
+ </head>
10
+
11
+ <body>
12
+ <div id="app" class="poker-table">
13
+ <img src="../res/mini/texas/bg.jpg" class="background-image">
14
+
15
+ <div class="table">
16
+ <!-- 总注区域 -->
17
+ <div v-if="state == 2" class="chip-pool">
18
+ <div class="chip-pool-info">
19
+ <img src="../res/mini/chip/chip5.png" style="width: 15px; height: 15px;"><span
20
+ style="color: black;font-size: 14px;">总注:</span><span
21
+ style="color: yellow; text-shadow: 1px 1px 0 rgb(235, 186, 27);font-size: 14px;">{{chip_all}}</span>
22
+ </div>
23
+ </div>
24
+ <!-- 公牌 -->
25
+ <div v-if="state == 2 || state == 3" class="gongpai">
26
+ <img v-for="(card, index) in communityCards" :src="getCardUrl(card)" :key="index">
27
+ </div>
28
+ <!-- 房间信息 -->
29
+ <div v-if="state == 1" class="table-info">
30
+ 德州扑克-上不封顶-2人以上自动开始
31
+ </div>
32
+ <!-- 用户筹码区域 -->
33
+ <div v-if="state == 2 || state == 3 && user.id != winUser.id" :class="'user-bet-area-' + index"
34
+ v-for="(user, index) in users" :key="index">
35
+ <img v-for="(chip, index) in rendeChipArea(user.bet)" :key="index"
36
+ :src="'../res/mini/chip/chip' + chip.coin + '.png'" class="chip-all-area-item"
37
+ :style="{ position: 'absolute', left: chip.x + 'px', top: chip.y + 'px' }">
38
+ </div>
39
+ <!-- 用户在桌面上的位置 -->
40
+ <!-- top: 46px;
41
+ left: 305px; -->
42
+ <div :class="['user', 'user-idx' + index]" v-for="(user, index) in users" :key="index"
43
+ :style="(user.id == winUser.id && state == 3) ? {top: '58px', left: '305px'} : {}">
44
+ <img class="user-win" v-if="user.id == winUser.id && state == 3" src="../res/mini/texas/win.png">
45
+ <div class="user-avatar">
46
+ <img :src="user.avatar" style="width: 100%;border-radius: 50%;">
47
+ </div>
48
+ <div class="user-coin">
49
+ <img src="../res/mini/chip/chip5.png" style="height: 100%;"><span
50
+ style="color: yellow;font-size: 10px;">{{user.coin}}</span>
51
+ </div>
52
+ <div class="user-state">
53
+ <span>{{user.state.length > 0 ? user.state:user.name}}</span>
54
+ </div>
55
+ <!-- 用户手牌 -->
56
+ <div v-if="state == 2 || state == 3" class="user-hand">
57
+ <img class="hand-1" :src="getCardUrl(user.hand[0])">
58
+ <img class="hand-2" :src="getCardUrl(user.hand[1])">
59
+ <!-- 用户手牌点数 -->
60
+ <div class="user-hand-point">
61
+ {{user.handName}}
62
+ </div>
63
+ </div>
64
+ </div>
65
+
66
+
67
+ <!-- 用户回合操作区 -->
68
+ <div class="user-actions" v-if="buttoms.length > 0">
69
+ <div v-for="(button, index) in buttoms" :key="index" class="action-button"
70
+ :style="{ background: getColor(button) }">
71
+ {{ button }}
72
+ </div>
73
+ </div>
74
+ <!-- 回合结算 -->
75
+ <div class="round-ouver">
76
+
77
+ </div>
78
+ </div>
79
+
80
+ </div>
81
+
82
+ <script>
83
+ let data = {
84
+ state: 2,
85
+ chip_all: 9988,
86
+ users: [
87
+ { id: '1', avatar: '../res/avatar.jpg', state: '+9999', name: '楚轩', hand: [{ suit: '?', rank: '?' }, { suit: '?', rank: '?' }], handName: '高牌', coin: 999 }
88
+ ],
89
+ buttoms: [],
90
+ communityCards: [{ suit: '?', rank: '?' }],
91
+ winUser: { id: '1', coin: 1000 }
92
+ };
93
+ new Vue({
94
+ el: '#app',
95
+ data: {
96
+ state: 3,
97
+ chip_all: 111,
98
+ users: [],
99
+ // 操作指令
100
+ buttoms: [],
101
+ overLog: [],
102
+ communityCards: []
103
+ },
104
+ created() {
105
+
106
+
107
+ this.chip_all = data.chip_all;
108
+ this.state = data.state
109
+ this.winUser = data.winUser
110
+ this.users = data.users;
111
+ this.buttoms = data.buttoms
112
+ // this.communityCards = data.communityCards.length < 5 ? data.communityCards.concat(Array(5 - data.communityCards.length).fill({ suit: '?', rank: '?' })) : data.communityCards
113
+ },
114
+ methods: {
115
+ getColor(text) {
116
+ const colorMap = {
117
+ '跟注': '#28a745', // 优化为Bootstrap绿色
118
+ '过': '#ffc107', // 优化为Bootstrap黄色
119
+ '加注': '#007bff', // 优化为Bootstrap蓝色
120
+ '梭哈': '#dc3545', // 优化为Bootstrap红色
121
+ '弃牌': '#6c757d', // 优化为Bootstrap灰色
122
+ '准备': '#28a745',
123
+ '换一桌': '#007bff'
124
+ };
125
+ return colorMap[text] || '#6c757d';
126
+ },
127
+ getCardUrl(info) {
128
+ if (info.suit == '?') {
129
+ return '../res/mini/poker/backPoker.png'
130
+ }
131
+ const suits = ['♠', '♥', '♣', '♦'];
132
+ const ranks = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'];
133
+ let suitIndex = suits.indexOf(info.suit);
134
+ let rankIndex = ranks.indexOf(info.rank);
135
+ let url = `../res/mini/poker/poker_${suitIndex}_${rankIndex + 2}.png`
136
+ return url
137
+ },
138
+ rendeChipArea(arry) {
139
+ arry = [];
140
+ const chipPositions = [];
141
+ const chipWidth = 15;
142
+ const chipHeight = 15;
143
+ const tableWidth = 70;
144
+ const tableHeight = 47;
145
+
146
+ for (let i = 0; i < arry.length; i++) {
147
+ let position;
148
+ let coin = arry[i];
149
+ let range = 5;
150
+ if (coin <= 100) {
151
+ range = 0;
152
+ } else if (coin <= 200) {
153
+ range = 1;
154
+ } else if (coin <= 300) {
155
+ range = 2;
156
+ } else if (coin <= 400) {
157
+ range = 3;
158
+ } else if (coin <= 500) {
159
+ range = 4;
160
+ }
161
+ do {
162
+ const x = Math.floor(Math.random() * (tableWidth - chipWidth));
163
+ const y = Math.floor(Math.random() * (tableHeight - chipHeight));
164
+ position = { x, y, coin };
165
+ } while (chipPositions.some(pos => pos.x === position.x && pos.y === position.y));
166
+ chipPositions.push(position);
167
+ }
168
+ return chipPositions;
169
+ }
170
+ }
171
+ });
172
+ </script>
173
+
174
+ <style>
175
+ @font-face {
176
+ font-family: 'xiaomai';
177
+ src: url('../res/font/xiaomai.ttf');
178
+ font-weight: normal;
179
+ font-style: normal;
180
+ }
181
+
182
+ @font-face {
183
+ font-family: 'cn';
184
+ src: url('../res/font/cn.ttf');
185
+ font-weight: normal;
186
+ font-style: normal;
187
+ }
188
+
189
+ span {
190
+ font-size: 12px;
191
+ font-family: 'cn';
192
+ }
193
+
194
+ div {
195
+ font-family: 'cn';
196
+ }
197
+
198
+ .user-hand {
199
+ background: red;
200
+ position: absolute;
201
+ right: -17px;
202
+ bottom: -20px;
203
+ width: 10px;
204
+ height: 10px;
205
+ }
206
+
207
+ .hand-1 {
208
+ bottom: 0;
209
+ left: -7px;
210
+ transform: rotate(-10deg);
211
+ }
212
+
213
+ .hand-2 {
214
+ bottom: -2px;
215
+ left: 3px;
216
+ transform: rotate(10deg);
217
+ }
218
+
219
+ .user-hand img {
220
+ position: absolute;
221
+ width: 33px;
222
+ }
223
+
224
+ .user-hand-point {
225
+ color: #ffffff;
226
+ position: absolute;
227
+ top: 11px;
228
+ left: 131%;
229
+ transform: translateX(-50%);
230
+ /* font-size: 14px; */
231
+ font-weight: bold;
232
+ white-space: nowrap;
233
+ }
234
+
235
+ .table-info {
236
+ height: 50px;
237
+ width: 330px;
238
+ position: absolute;
239
+ top: 153px;
240
+ left: 182px;
241
+ color: bisque;
242
+ font-size: 18px;
243
+ font-weight: bold;
244
+ }
245
+
246
+ .gongpai {
247
+ height: 50px;
248
+ width: 210px;
249
+ position: absolute;
250
+ top: 153px;
251
+ left: 239px;
252
+ }
253
+
254
+ .chip-pool {
255
+ height: 22px;
256
+ width: 205px;
257
+ position: absolute;
258
+ top: 119px;
259
+ left: 239px;
260
+ }
261
+
262
+
263
+
264
+ .chip-all-area-item {
265
+ width: 15px;
266
+ height: 15px;
267
+ position: absolute;
268
+ top: 0;
269
+ left: 0;
270
+ }
271
+
272
+ .gongpai img {
273
+ height: 100%;
274
+ box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.8);
275
+ /* 添加阴影 */
276
+ border-radius: 7px;
277
+ }
278
+
279
+
280
+ body {
281
+ margin: 0;
282
+ padding: 0;
283
+ width: 667px;
284
+ height: 375px;
285
+ overflow: hidden;
286
+ }
287
+
288
+ .poker-table {
289
+ width: 100%;
290
+ height: 100%;
291
+ position: relative;
292
+ }
293
+
294
+ .background-image {
295
+ position: absolute;
296
+ width: 100%;
297
+ height: 100%;
298
+ top: 0;
299
+ left: 0;
300
+ z-index: -1;
301
+ }
302
+
303
+ .user {
304
+ width: 50px;
305
+ position: absolute;
306
+
307
+ }
308
+
309
+ .user-win {
310
+ position: absolute;
311
+ width: 102px;
312
+ top: -44px;
313
+ left: -24px;
314
+ z-index: 13;
315
+ }
316
+
317
+
318
+
319
+ .user-bet-area-0 {
320
+ width: 70px;
321
+ height: 47px;
322
+ position: absolute;
323
+ top: 209px;
324
+ left: 315px;
325
+ }
326
+
327
+ .user-bet-area-1 {
328
+ width: 70px;
329
+ height: 47px;
330
+ position: absolute;
331
+ top: 202px;
332
+ left: 481px;
333
+ }
334
+
335
+ .user-bet-area-2 {
336
+ width: 70px;
337
+ height: 47px;
338
+ position: absolute;
339
+ top: 125px;
340
+ left: 495px;
341
+ }
342
+
343
+ .user-bet-area-3 {
344
+ width: 70px;
345
+ height: 47px;
346
+ position: absolute;
347
+ top: 94px;
348
+ left: 413px;
349
+ }
350
+
351
+ .user-bet-area-4 {
352
+ width: 70px;
353
+ height: 47px;
354
+ position: absolute;
355
+ top: 94px;
356
+ left: 189px;
357
+ }
358
+
359
+ .user-bet-area-5 {
360
+ width: 70px;
361
+ height: 47px;
362
+ position: absolute;
363
+ top: 129px;
364
+ left: 116px;
365
+ }
366
+
367
+ .user-bet-area-6 {
368
+ width: 70px;
369
+ height: 47px;
370
+ position: absolute;
371
+ top: 213px;
372
+ left: 116px;
373
+ }
374
+
375
+ .user-idx0 {
376
+ top: 253px;
377
+ left: 305px;
378
+ }
379
+
380
+ .user-idx1 {
381
+ top: 232px;
382
+ right: 62px;
383
+ }
384
+
385
+ .user-idx2 {
386
+ top: 86px;
387
+ right: 52px;
388
+ }
389
+
390
+ .user-idx3 {
391
+ top: 28px;
392
+ right: 177px;
393
+ }
394
+
395
+ .user-idx4 {
396
+ top: 28px;
397
+ left: 190px;
398
+ }
399
+
400
+ .user-idx5 {
401
+ top: 82px;
402
+ left: 38px;
403
+ }
404
+
405
+ .user-idx6 {
406
+ bottom: 81px;
407
+ left: 72px;
408
+ }
409
+
410
+
411
+
412
+ .user-state {
413
+ width: 150%;
414
+ height: 14px;
415
+ background: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.8) 20%, rgba(0, 0, 0, 0.589) 80%, transparent);
416
+ text-align: center;
417
+ display: flex;
418
+ align-items: center;
419
+ justify-content: center;
420
+ position: absolute;
421
+ left: 50%;
422
+ transform: translateX(-50%);
423
+ bottom: -19px;
424
+ }
425
+
426
+ .user-coin {
427
+ width: 150%;
428
+ height: 12px;
429
+ background: linear-gradient(90deg, transparent, rgba(139, 69, 19, 0.8) 20%, rgba(139, 69, 19, 0.589) 80%, transparent);
430
+ text-align: center;
431
+ display: flex;
432
+ align-items: center;
433
+ justify-content: center;
434
+ position: absolute;
435
+ left: 50%;
436
+ transform: translateX(-50%);
437
+ bottom: -5px
438
+ }
439
+
440
+ .user-state span {
441
+ font-weight: bold;
442
+ color: #fff;
443
+ }
444
+
445
+ .user-avatar {
446
+ width: 35px;
447
+ height: 35px;
448
+ border-radius: 50%;
449
+ border: 2px solid transparent;
450
+ background-image: linear-gradient(white, white),
451
+ linear-gradient(45deg, #4ecdc4, #4ecdc4);
452
+ background-origin: border-box;
453
+ background-clip: content-box, border-box;
454
+ position: relative;
455
+ left: 50%;
456
+ overflow: hidden;
457
+ transform: translateX(-50%);
458
+ }
459
+
460
+ .chip-pool-info {
461
+ display: flex;
462
+ align-items: center;
463
+ /* 垂直居中 */
464
+ margin: 0 auto;
465
+ justify-content: center;
466
+ }
467
+
468
+ .user-actions {
469
+ position: absolute;
470
+ bottom: 10px;
471
+ right: -190px;
472
+ transform: translateX(-50%);
473
+ display: flex;
474
+ gap: 5px;
475
+ width: 401px;
476
+ justify-content: flex-start;
477
+ }
478
+
479
+ .action-button {
480
+ background: green;
481
+ /* 背景绿色 */
482
+ color: white;
483
+ font-weight: bold;
484
+ text-shadow: 0px 0px 10px black;
485
+ /* 文字白色 */
486
+ padding: 5px 20px;
487
+ /* 内边距 */
488
+ border-radius: 5px;
489
+ }
490
+ </style>
491
+ </body>
492
+
493
+ </html>
@@ -0,0 +1,76 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>游戏王卡片</title>
8
+ <script src="../res/vue2.js"></script>
9
+ <link rel="stylesheet" href="../css/skill.css">
10
+ </head>
11
+
12
+ <body>
13
+ <div id="app">
14
+ <img class="pos card-frame" :src="'../res/skill/frame/' + quality + '.jpg'"
15
+ style="width: 406.5px; height: 593.5px;">
16
+ <span class="pos card-name" style="top: 32px; left: 37.5px; font-size: 21px;">No.{{id}} {{name}}</span>
17
+ <img v-for="(n, index) in quality" :key="index"
18
+ :src="'../res/skill/star/' + (quality >= 5 ? 'rank' : 'level') + '.png'" class="pos filter"
19
+ :style="{ left: 30 + index * 27 + 'px', top: '70px', width: '27px' }">
20
+ <img class="pos filter" src="../res/skill/att/water.png" style="right: 29px;top: 30px;width: 33px;">
21
+ <img class="pos filter" src="../res/skill/test.jpg" style="right: 49.5px;top: 110px;width: 307px;">
22
+ <div class="pos descArea">
23
+ <div>
24
+ <div class="content">
25
+ <span class="text-content bold">
26
+ 【技能信息】
27
+ </span>
28
+ <span class="text-content">
29
+ <span style="color: rgb(237 0 0);">{{classType}}</span>
30
+ -
31
+ {{getQuality(quality)}}级{{type}}
32
+ <span class="bold">[技能频率]{{cd > 0 ? cd : '无CD'}}回合</span>
33
+ </span>
34
+ </div>
35
+ <div class="split-line"></div>
36
+ <div class="content">
37
+ <span class="text-content" style="font-size: 10px;">
38
+ <span class="bold">【技能描述】</span>
39
+ {{desc}}
40
+ </span>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </div>
45
+ <script>
46
+ let data = { "name": "普通攻击", "quality": 7, "type": "主动技能", "desc": "对敌方单体造成物理伤害", "cd": 0, "classType": "攻击型" };
47
+ new Vue({
48
+ el: '#app',
49
+ data: {
50
+ id: 'a001',
51
+ name: '',
52
+ quality: 5,
53
+ desc: '',
54
+ type: '',
55
+ cd: 0,
56
+ classType: '伤害型',
57
+ },
58
+ mounted() {
59
+ this.id = data.id;
60
+ this.name = data.name;
61
+ this.quality = data.quality;
62
+ this.desc = data.desc;
63
+ this.type = data.type;
64
+ this.cd = data.cd;
65
+ this.classType = data.classType;
66
+ },
67
+ methods: {
68
+ getQuality(quality) {
69
+ // 品质映射
70
+ const qualities = ['F', 'D', 'C', 'B', 'A', 'S', 'SS', 'SSS', 'SR', 'SSR'];
71
+ return qualities[quality] || '未知';
72
+ }
73
+ }
74
+ });
75
+ </script>
76
+ </body>