diff --git a/apps/profile/ProfileStat.js b/apps/profile/ProfileStat.js index 44e29d65..55ba32c7 100644 --- a/apps/profile/ProfileStat.js +++ b/apps/profile/ProfileStat.js @@ -1,5 +1,6 @@ import { Cfg, Common } from '../../components/index.js' -import { MysApi, Player } from '../../models/index.js' +import { MysApi, Player, Character } from '../../models/index.js' +import moment from 'moment' export async function profileStat (e) { let isMatch = /^#(面板|喵喵|角色|武器|天赋|技能|圣遗物)练度统计?$/.test(e.original_msg || e.msg || '') @@ -33,12 +34,22 @@ export async function profileStat (e) { let talentNotice = '' + let faceChar = Character.get(player.face || avatarRet[0]?.id) + let face = { + banner: faceChar.imgs?.banner, + face: faceChar.imgs?.face, + name: player.name || `#${uid}`, + sign: player.sign, + level: player.level + } + return await Common.render(isAvatarList ? 'character/avatar-list' : 'character/profile-stat', { save_id: uid, uid, - info: player.info || {}, + info: player.getInfo(), isStat: !isAvatarList, talentLvMap: '0,1,1,1,2,2,3,3,3,4,5'.split(','), + face, avatars: avatarRet, isSelf: e.isSelf, talentNotice diff --git a/models/Player.js b/models/Player.js index f8a7e96d..c5dd1340 100644 --- a/models/Player.js +++ b/models/Player.js @@ -161,6 +161,37 @@ export default class Player extends Base { return ret } + getInfo () { + let ret = { + ...(this.info || {}), + statMap: { + achievement: '成就数', + commonChest: '普通宝箱', + exquisiteChest: '精致宝箱', + preciousChest: '珍贵宝箱', + luxuriousChest: '豪华宝箱' + } + } + if (ret?.stats?.activeDay) { + let num = ret?.stats?.activeDay + let year = Math.floor(num / 365) + let month = Math.floor((num % 365) / 30.41) + let day = Math.floor((num % 365) % 30.41) + let msg = '' + if (year > 0) { + msg += year + '年' + } + if (month > 0) { + msg += month + '个月' + } + if (day > 0) { + msg += day + '天' + } + ret.activeDay = msg + } + return ret + } + // 更新面板 async refreshProfile (force = true) { return await Profile.refreshProfile(this, force) diff --git a/resources/character/avatar-list.css b/resources/character/avatar-list.css index e198381e..cf5c1568 100644 --- a/resources/character/avatar-list.css +++ b/resources/character/avatar-list.css @@ -5,6 +5,82 @@ .head-box { margin-top: 0; } +#banner { + height: 90px; + background-size: auto 100%; + background-position: right center; + background-repeat: no-repeat; + background-color: #f0ece4; + border-radius: 50px; + padding: 1px; + margin: 5px 0; + display: flex; + white-space: nowrap; + position: relative; +} +#banner .face { + width: 70px; + height: 70px; + margin: 10px; + border-radius: 50%; + box-shadow: 0 0 1px #000, 0 0 5px rgba(0, 0, 0, 0.5); + border: 3px solid #fff; + overflow: hidden; + background: url('../common/item/bg5.png'); + background-size: cover; +} +#banner .face span { + display: block; + width: 64px; + height: 64px; + background-size: auto 100%; + background-repeat: no-repeat; +} +#banner .user-info { + padding: 15px 5px; + color: #414e64; +} +#banner .user-info .name { + height: 32px; + line-height: 32px; +} +#banner .user-info .name strong { + font-size: 26px; +} +#banner .user-info .name span { + padding-left: 5px; +} +#banner .user-info .uid { + height: 28px; + line-height: 28px; +} +#banner .stat { + position: absolute; + right: 20px; + top: 0; + display: flex; + background: rgba(255, 255, 255, 0.5); + margin: 20px 5px; + border-radius: 10px; +} +#banner .stat-li { + padding: 7px; + width: 70px; + text-align: center; + position: relative; +} +#banner .stat-li:nth-child(even) { + background: rgba(225, 225, 225, 0.8); +} +#banner .stat-li strong { + font-size: 22px; + display: block; +} +#banner .stat-li span { + display: block; + font-size: 14px; + color: #414e64; +} #avatar-list { width: calc(100% + 30px); margin: 0 -15px -5px; @@ -13,27 +89,27 @@ .exploration { display: flex; flex-wrap: wrap; - padding: 6px; + padding: 16px; } .exploration .item { - width: 95px; - height: 106.4px; + width: 93px; + height: 106.95px; background: url('./imgs/exploration.webp') no-repeat; background-size: auto 100%; border-radius: 4px; - margin: 4px; + margin: 3px; text-align: center; color: #fff; } .exploration .item strong { - font-size: 18px; + font-size: 22px; display: block; - height: 22px; - line-height: 22px; + height: 26px; + line-height: 26px; text-shadow: 0 0 1px #000, 1px 1px 3px rgba(0, 0, 0, 0.5); } .exploration .item span { - margin-top: 60px; + margin-top: 58px; font-size: 12px; height: 18px; line-height: 18px; diff --git a/resources/character/avatar-list.html b/resources/character/avatar-list.html index f76b846c..b0a3da67 100644 --- a/resources/character/avatar-list.html +++ b/resources/character/avatar-list.html @@ -7,8 +7,30 @@ {{block 'main'}} -
-
#角色
+
{{if info && info.exploration}} diff --git a/resources/character/avatar-list.less b/resources/character/avatar-list.less index 6d56efe1..5e8ed977 100644 --- a/resources/character/avatar-list.less +++ b/resources/character/avatar-list.less @@ -8,6 +8,96 @@ margin-top: 0; } +#banner { + height: 90px; + background-size: auto 100%; + background-position: right center; + background-repeat: no-repeat; + background-color: #f0ece4; + border-radius: 50px; + padding: 1px; + margin: 5px 0; + display: flex; + white-space: nowrap; + position: relative; + + .face { + width: 70px; + height: 70px; + margin: 10px; + border-radius: 50%; + box-shadow: 0 0 1px #000, 0 0 5px rgba(0, 0, 0, .5); + border: 3px solid #fff; + overflow: hidden; + background: url('../common/item/bg5.png'); + background-size: cover; + + span { + display: block; + width: 64px; + height: 64px; + background-size: auto 100%; + background-repeat: no-repeat; + } + } + + .user-info { + padding: 15px 5px; + color: #414e64; + + .name { + height: 32px; + line-height: 32px; + + strong { + font-size: 26px; + } + + span { + padding-left: 5px; + } + } + + .uid { + height: 28px; + line-height: 28px; + } + } + + .stat { + position: absolute; + right: 20px; + top: 0; + display: flex; + background: rgba(255, 255, 255, .5); + margin: 20px 5px; + border-radius: 10px; + } + + .stat-li { + padding: 7px; + width: 70px; + text-align: center; + position: relative; + + &:nth-child(even) { + background: rgba(225, 225, 225, .8); + } + + + strong { + font-size: 22px; + display: block; + } + + span { + display: block; + font-size: 14px; + color: #414e64; + } + } +} + #avatar-list { width: calc(100% + 30px); margin: 0 -15px -5px; @@ -17,28 +107,28 @@ .exploration { display: flex; flex-wrap: wrap; - padding: 6px; + padding: 16px; .item { - width: 95px; - height: 95*1.12px; + width: 93px; + height: 93*1.15px; background: url('./imgs/exploration.webp') no-repeat; background-size: auto 100%; border-radius: 4px; - margin: 4px; + margin: 3px; text-align: center; color: #fff; strong { - font-size: 18px; + font-size: 22px; display: block; - height: 22px; - line-height: 22px; + height: 26px; + line-height: 26px; text-shadow: 0 0 1px #000, 1px 1px 3px rgba(0, 0, 0, .5); } span { - margin-top: 60px; + margin-top: 58px; font-size: 12px; height: 18px; line-height: 18px; diff --git a/resources/character/imgs/exploration.webp b/resources/character/imgs/exploration.webp index 636bb17c..ab6dc35b 100644 Binary files a/resources/character/imgs/exploration.webp and b/resources/character/imgs/exploration.webp differ diff --git a/resources/meta/character/流浪者/data.json b/resources/meta/character/流浪者/data.json index 5a3e1599..e16a2639 100644 --- a/resources/meta/character/流浪者/data.json +++ b/resources/meta/character/流浪者/data.json @@ -45,5 +45,5 @@ "talent": "「笃行」的哲学", "weekly": "空行的虚铃" }, - "eta": 1670382000000 + "eta": 1670378400000 } \ No newline at end of file diff --git a/resources/meta/character/流浪者/imgs/banner.webp b/resources/meta/character/流浪者/imgs/banner.webp index d911558b..5d1f39ac 100644 Binary files a/resources/meta/character/流浪者/imgs/banner.webp and b/resources/meta/character/流浪者/imgs/banner.webp differ diff --git a/resources/meta/character/珐露珊/data.json b/resources/meta/character/珐露珊/data.json index b9bd4a69..f17be4f3 100644 --- a/resources/meta/character/珐露珊/data.json +++ b/resources/meta/character/珐露珊/data.json @@ -26,7 +26,7 @@ "talentKey": { "7631": "a", "7632": "e", - "7639": "q" + "7633": "q" }, "talentId": { "10761": 7631, @@ -45,5 +45,5 @@ "talent": "「诤言」的哲学", "weekly": "傀儡的悬丝" }, - "eta": 1670382000000 + "eta": 1670378400000 } \ No newline at end of file diff --git a/resources/meta/character/珐露珊/detail.json b/resources/meta/character/珐露珊/detail.json index a2da8064..dc7afe18 100644 --- a/resources/meta/character/珐露珊/detail.json +++ b/resources/meta/character/珐露珊/detail.json @@ -821,7 +821,8 @@ "3": { "name": "漫行灵圃", "desc": [ - "非想风天的技能等级提高3级。至多提升至15级。" + "

非想风天的技能等级提高3级。

", + "至多提升至15级。" ] }, "4": { @@ -834,7 +835,8 @@ "5": { "name": "繁想奇境", "desc": [ - "抟风秘道的技能等级提高3级。至多提升至15级。" + "

抟风秘道的技能等级提高3级。

", + "至多提升至15级。" ] }, "6": { diff --git a/resources/meta/character/珐露珊/imgs/banner.webp b/resources/meta/character/珐露珊/imgs/banner.webp index d911558b..c8e63f0a 100644 Binary files a/resources/meta/character/珐露珊/imgs/banner.webp and b/resources/meta/character/珐露珊/imgs/banner.webp differ diff --git a/resources/meta/character/瑶瑶/data.json b/resources/meta/character/瑶瑶/data.json index 355e5f46..2a9974cb 100644 --- a/resources/meta/character/瑶瑶/data.json +++ b/resources/meta/character/瑶瑶/data.json @@ -45,5 +45,5 @@ "talent": "「勤劳」的哲学", "weekly": "空行的虚铃" }, - "eta": 1674010800000 + "eta": 1674007200000 } \ No newline at end of file diff --git a/resources/meta/character/瑶瑶/detail.json b/resources/meta/character/瑶瑶/detail.json index bc73b74b..b9cddf05 100644 --- a/resources/meta/character/瑶瑶/detail.json +++ b/resources/meta/character/瑶瑶/detail.json @@ -1013,7 +1013,8 @@ "3": { "name": "墩墩善道", "desc": [ - "云台团团降芦菔的技能等级提高3级。至多提升至15级。" + "云台团团降芦菔的技能等级提高3级。", + "至多提升至15级。" ] }, "4": { @@ -1025,7 +1026,8 @@ "5": { "name": "恻隐本义", "desc": [ - "玉颗珊珊月中落的技能等级提高3级。至多提升至15级。" + "玉颗珊珊月中落的技能等级提高3级。", + "至多提升至15级。" ] }, "6": { diff --git a/resources/meta/character/瑶瑶/imgs/banner.webp b/resources/meta/character/瑶瑶/imgs/banner.webp index ec2f33ab..bbdafb71 100644 Binary files a/resources/meta/character/瑶瑶/imgs/banner.webp and b/resources/meta/character/瑶瑶/imgs/banner.webp differ diff --git a/resources/meta/character/瑶瑶/imgs/face.webp b/resources/meta/character/瑶瑶/imgs/face.webp index e96a6859..1b553785 100644 Binary files a/resources/meta/character/瑶瑶/imgs/face.webp and b/resources/meta/character/瑶瑶/imgs/face.webp differ diff --git a/resources/meta/character/纳西妲/data.json b/resources/meta/character/纳西妲/data.json index 7948b3ee..d30f087b 100644 --- a/resources/meta/character/纳西妲/data.json +++ b/resources/meta/character/纳西妲/data.json @@ -45,5 +45,5 @@ "talent": "「巧思」的哲学", "weekly": "傀儡的悬丝" }, - "eta": 1667358000000 + "eta": 1667354400000 } \ No newline at end of file diff --git a/resources/meta/character/纳西妲/imgs/banner.webp b/resources/meta/character/纳西妲/imgs/banner.webp index 2608f91f..12d7b8e3 100644 Binary files a/resources/meta/character/纳西妲/imgs/banner.webp and b/resources/meta/character/纳西妲/imgs/banner.webp differ diff --git a/resources/meta/character/艾尔海森/data.json b/resources/meta/character/艾尔海森/data.json index e84a4696..d2548350 100644 --- a/resources/meta/character/艾尔海森/data.json +++ b/resources/meta/character/艾尔海森/data.json @@ -45,5 +45,5 @@ "talent": "「巧思」的哲学", "weekly": "无心的渊镜" }, - "eta": 1674010800000 + "eta": 1674007200000 } \ No newline at end of file diff --git a/resources/meta/character/艾尔海森/detail.json b/resources/meta/character/艾尔海森/detail.json index 42de1bb3..87aa5234 100644 --- a/resources/meta/character/艾尔海森/detail.json +++ b/resources/meta/character/艾尔海森/detail.json @@ -1370,7 +1370,8 @@ "3": { "name": "遮诠", "desc": [ - "共相·理式摹写的技能等级提高3级。至多提升至15级。" + "共相·理式摹写的技能等级提高3级。", + "至多提升至15级。" ] }, "4": { @@ -1385,7 +1386,8 @@ "5": { "name": "智度", "desc": [ - "殊境·显象缚结的技能等级提高3级。至多提升至15级。" + "殊境·显象缚结的技能等级提高3级。", + "至多提升至15级。" ] }, "6": { diff --git a/resources/meta/character/艾尔海森/imgs/banner.webp b/resources/meta/character/艾尔海森/imgs/banner.webp index ec2f33ab..2bebde16 100644 Binary files a/resources/meta/character/艾尔海森/imgs/banner.webp and b/resources/meta/character/艾尔海森/imgs/banner.webp differ diff --git a/resources/meta/character/艾尔海森/imgs/face.webp b/resources/meta/character/艾尔海森/imgs/face.webp index 365ccbd6..35024926 100644 Binary files a/resources/meta/character/艾尔海森/imgs/face.webp and b/resources/meta/character/艾尔海森/imgs/face.webp differ diff --git a/resources/meta/character/莱依拉/data.json b/resources/meta/character/莱依拉/data.json index db910eb2..9dc397aa 100644 --- a/resources/meta/character/莱依拉/data.json +++ b/resources/meta/character/莱依拉/data.json @@ -45,5 +45,5 @@ "talent": "「巧思」的哲学", "weekly": "无心的渊镜" }, - "eta": 1667358000000 + "eta": 1667354400000 } \ No newline at end of file diff --git a/resources/meta/character/莱依拉/imgs/banner.webp b/resources/meta/character/莱依拉/imgs/banner.webp index 2608f91f..bc4e2683 100644 Binary files a/resources/meta/character/莱依拉/imgs/banner.webp and b/resources/meta/character/莱依拉/imgs/banner.webp differ diff --git a/tools/char-data.js b/tools/char-data.js index 822d711b..3901c54a 100644 --- a/tools/char-data.js +++ b/tools/char-data.js @@ -275,4 +275,4 @@ let eta = { 迪希雅: '2023-03-01', 米卡: '2023-03-01' } -await down('迪希雅,米卡', true) +await down('艾尔海森,珐露珊,莱依拉,流浪者,纳西妲,瑶瑶', true)