From 5f5f3e5f358ae4ef1b1cef1e4e7bf0d08bc22036 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=AE=E5=B8=AE?= <3102509561@qq.com> Date: Tue, 25 Jul 2023 21:08:48 +0000 Subject: [PATCH] =?UTF-8?q?!69=20=E6=96=B0=E5=A2=9E=E6=98=9F=E9=93=81?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E5=85=BB=E6=88=90=E8=AE=A1=E7=AE=97=EF=BC=8C?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=98=9F=E9=93=81=E5=88=AB=E5=90=8D=20*=20fi?= =?UTF-8?q?x=20*=20fix=20*=20fix=20*=20=E4=BF=AE=E6=94=B9=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=20*=20=E6=96=B0=E5=A2=9E=E6=98=9F=E9=93=81=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E5=85=BB=E6=88=90=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/genshin/apps/abbrSet.js | 41 +- plugins/genshin/apps/calculator.js | 64 ++- plugins/genshin/defSet/role/sr_name.yaml | 149 ++++++ plugins/genshin/model/calculator.js | 172 ++++--- plugins/genshin/model/gsCfg.js | 71 +-- plugins/genshin/model/mys/apiTool.js | 11 + plugins/genshin/model/mys/mysInfo.js | 2 +- .../StarRail/html/calculator/calculator.css | 450 ++++++++++++++++++ .../StarRail/html/calculator/calculator.html | 135 ++++++ .../StarRail/html/calculator/skillbg.png | Bin 0 -> 54181 bytes 10 files changed, 965 insertions(+), 130 deletions(-) create mode 100644 plugins/genshin/defSet/role/sr_name.yaml create mode 100644 plugins/genshin/resources/StarRail/html/calculator/calculator.css create mode 100644 plugins/genshin/resources/StarRail/html/calculator/calculator.html create mode 100644 plugins/genshin/resources/StarRail/html/calculator/skillbg.png diff --git a/plugins/genshin/apps/abbrSet.js b/plugins/genshin/apps/abbrSet.js index 3063eb2..ca56b5a 100644 --- a/plugins/genshin/apps/abbrSet.js +++ b/plugins/genshin/apps/abbrSet.js @@ -5,7 +5,7 @@ import YAML from 'yaml' import lodash from 'lodash' export class abbrSet extends plugin { - constructor (e) { + constructor(e) { super({ name: '别名设置', dsc: '角色别名设置', @@ -13,24 +13,24 @@ export class abbrSet extends plugin { priority: 600, rule: [ { - reg: '^#(设置|配置)(.*)(别名|昵称)$', + reg: '^#(星铁)?(设置|配置)(.*)(别名|昵称)$', fnc: 'abbr' }, { - reg: '^#删除(别名|昵称)(.*)$', + reg: '^#(星铁)?删除(别名|昵称)(.*)$', fnc: 'delAbbr' }, { - reg: '^#(.*)(别名|昵称)$', + reg: '^#(星铁)?(.*)(别名|昵称)$', fnc: 'abbrList' } ] }) - + this.isSr = false this.file = './plugins/genshin/config/role.name.yaml' } - async init () { + async init() { if (!fs.existsSync(this.file)) { fs.writeFileSync(this.file, `神里绫华: - 龟龟 @@ -38,17 +38,18 @@ export class abbrSet extends plugin { } } - async abbr () { + async abbr() { if (!await this.checkAuth()) return - let role = gsCfg.getRole(this.e.msg, '#|设置|配置|别名|昵称') + let role = gsCfg.getRole(this.e.msg, '#|星铁|设置|配置|别名|昵称', this.e.isSr) if (!role) return false this.e.role = role + this.isSr = this.e.isSr this.setContext('setAbbr') await this.reply(`请发送${role.alias}别名,多个用空格隔开`) } - async checkAuth () { + async checkAuth() { if (!this.e.isGroup && !this.e.isMaster) { await this.reply('禁止私聊设置角色别名') return false @@ -76,7 +77,7 @@ export class abbrSet extends plugin { return true } - async setAbbr () { + async setAbbr() { if (!this.e.msg || this.e.at || this.e.img) { await this.reply('设置错误:请发送正确内容') return @@ -96,10 +97,10 @@ export class abbrSet extends plugin { let ret = [] for (let name of setName) { - name = name.replace(/#|设置|配置|别名|昵称/g, '') + name = name.replace(/#|星铁|设置|配置|别名|昵称/g, '') if (!name) continue /** 重复添加 */ - if (nameArr[role.name].includes(name) || gsCfg.roleNameToID(name)) { + if (nameArr[role.name].includes(name) || gsCfg.roleNameToID(name, this.isSr)) { continue } @@ -113,18 +114,18 @@ export class abbrSet extends plugin { this.save(nameArr) - gsCfg.nameID = false + gsCfg[this.isSr ? 'sr_nameID' : 'nameID'] = false await this.reply(`设置别名成功:${ret.join('、')}`) } - save (data) { + save(data) { data = YAML.stringify(data) fs.writeFileSync(this.file, data) } - async delAbbr () { - let role = gsCfg.getRole(this.e.msg, '#|删除|别名|昵称') + async delAbbr() { + let role = gsCfg.getRole(this.e.msg, '#|星铁|删除|别名|昵称', this.e.isSr) if (!role) return false @@ -145,12 +146,12 @@ export class abbrSet extends plugin { await this.reply(`设置${role.name}别名成功:${role.alias}`) } - async abbrList () { - let role = gsCfg.getRole(this.e.msg, '#|别名|昵称') + async abbrList() { + let role = gsCfg.getRole(this.e.msg, '#|星铁|别名|昵称', this.e.isSr) if (!role) return false - let name = gsCfg.getdefSet('role', 'name')[role.roleId] + let name = gsCfg.getdefSet('role', this.e.isSr ? 'sr_name' : 'name')[role.roleId] let nameUser = gsCfg.getConfig('role', 'name')[role.name] ?? [] let list = lodash.uniq([...name, ...nameUser]) @@ -168,7 +169,7 @@ export class abbrSet extends plugin { await this.e.reply(msg) } - async makeForwardMsg (qq, title, msg) { + async makeForwardMsg(qq, title, msg) { let nickname = this.e.bot.nickname if (this.e.isGroup) { let info = await this.e.bot.getGroupMemberInfo(this.e.group_id, qq) diff --git a/plugins/genshin/apps/calculator.js b/plugins/genshin/apps/calculator.js index 75e6614..9766fee 100644 --- a/plugins/genshin/apps/calculator.js +++ b/plugins/genshin/apps/calculator.js @@ -5,7 +5,7 @@ import puppeteer from '../../../lib/puppeteer/puppeteer.js' import gsCfg from '../model/gsCfg.js' export class calculator extends plugin { - constructor () { + constructor() { super({ name: '养成计算', dsc: '角色养成材料计算器', @@ -13,47 +13,48 @@ export class calculator extends plugin { priority: 700, rule: [ { - reg: '^#*(.*)(养成|计算)([0-9]|,|,| )*$', + reg: '^#*(星铁)?(.*)(养成|计算)([0-9]|,|,| )*$', fnc: 'Calculator' }, { - reg: '^#*角色(养成|计算|养成计算)$', + reg: '^#*(星铁)?角色(养成|计算|养成计算)$', fnc: 'calculatorHelp' }, - { - reg: '^#*尘歌壶模数(养成|计算|养成计算)$', - fnc: 'blueprintHelp' - }, - { - reg: '^#*尘歌壶(模数|养成|养成计算)(\\d{10,15})$', - fnc: 'Blueprint' - }, + { + reg: '^#*尘歌壶模数(养成|计算|养成计算)$', + fnc: 'blueprintHelp' + }, + { + reg: '^#*尘歌壶(模数|养成|养成计算)(\\d{10,15})$', + fnc: 'Blueprint' + }, ] }) + this._path = process.cwd().replace(/\\/g, '/') } - async blueprintHelp (e) { + async blueprintHelp(e) { let msg = '#尘歌壶模数\n指令:#尘歌壶模数\n示例:#尘歌壶模数123456\n参数为模数id(10-15位数字)' await e.reply(msg) return true } - - async calculatorHelp (e) { - let msg = '#角色养成计算\n指令:#刻晴养成\n示例:#刻晴养成81 90 9 9 9\n参数为角色、武器、技能等级' + + async calculatorHelp(e) { + let msg = `角色养成计算\n指令:${e.isSr ? '*克拉拉养成\n示例:*克拉拉养成75 80 6 9 9 9\n参数为角色、武器、普攻、战技、终结技、天赋' : '#刻晴养成\n示例:#刻晴养成81 90 9 9 9\n参数为角色、武器、技能等级'}` await e.reply(msg) return true } - async Blueprint(){ - let role = this.e.msg.replace(/#/,'').match(/\d+/g); - let data = await new Blueprint(this.e).get(role) - if (!data) return - - /** 生成图片 */ - let img = await puppeteer.screenshot('Blueprint', data) - if (img) await this.reply(img) + async Blueprint() { + let role = this.e.msg.replace(/#/, '').match(/\d+/g); + let data = await new Blueprint(this.e).get(role) + if (!data) return + + /** 生成图片 */ + let img = await puppeteer.screenshot('Blueprint', data) + if (img) await this.reply(img) } /** #刻晴养成 */ - async Calculator () { - let role = gsCfg.getRole(this.e.msg, '#|#|养成|计算|[0-9]|,|,| ') + async Calculator() { + let role = gsCfg.getRole(this.e.msg, '#|#|星铁|养成|计算|[0-9]|,|,| ', this.e.isSr) if (!role) return false if ([10000005, 10000007, 20000000].includes(Number(role.roleId))) { @@ -65,7 +66,18 @@ export class calculator extends plugin { if (!data) return /** 生成图片 */ - let img = await puppeteer.screenshot('Calculator', data) + let url = this.srHead('calculator', data) + let img = await puppeteer.screenshot(url, data) if (img) await this.reply(img) } + srHead = (url, data) => { + let name = url + if (this.e.isSr) { + name = `StarRail/${url}` + data.pluResPath = `${this._path}/plugins/genshin/resources/StarRail/` + data.tplFile = `./plugins/genshin/resources/StarRail/html/${url}/${url}.html` + data.headStyle = `` + } + return name + } } diff --git a/plugins/genshin/defSet/role/sr_name.yaml b/plugins/genshin/defSet/role/sr_name.yaml new file mode 100644 index 0000000..7c2f0fd --- /dev/null +++ b/plugins/genshin/defSet/role/sr_name.yaml @@ -0,0 +1,149 @@ +1001: + - 三月七 + - 三月 + - 看板娘 + - 三七 + - 三祁 + - 纠缠之缘 + - March7th + - 37 +1002: + - 单恒 + - 单垣 + - 丹垣 + - 丹桁 + - 冷面小青龙 + - DanHeng + - 丹恒 +1003: + - 姬子 + - 机子 + - 寄子 + - Himeko +1004: + - 瓦尔特 + - 杨叔 + - 老杨 + - Welt +1005: + - 卡芙卡 +1006: + - 银狼 + - 音浪 + - 银浪 + - 隐狼 + - 淫狼 + - 骇兔 + - 鸭子 + - 小鸭 + - 小鸭鸭 + - yinlang + - YinLang +1008: + - 阿兰 + - 阿兰 + - Alan + - 阿郎 + - 阿蓝 + - Arlan +1009: + - 艾丝妲 + - 爱思达 + - 爱丝妲 + - 爱思妲 + - 爱丝达 + - 艾思达 + - 艾思妲 + - 艾丝达 + - 富婆 + - Asta +1013: + - 黑塔 + - 人偶 + - 转圈圈 + - Herta +1101: + - 布洛妮娅 + - 布诺妮亚 + - 布洛妮亚 + - 布诺妮娅 + - 布洛尼亚 + - 鸭鸭 + - 大鸭鸭 + - Bronya +1102: + - 希儿 + - 希尔 + - Seele +1103: + - 希露瓦 + - 希录瓦 + - Serval +1104: + - 杰帕德 + - 杰哥 + - Gepard +1105: + - 娜塔莎 + - 那塔莎 + - 那塔沙 + - 娜塔沙 + - Natasha + - 渡鸦 +1106: + - 佩拉 + - 配拉 + - 佩啦 + - 冰砂糖 + - Pela +1107: + - 克拉拉 + - 可拉拉 + - 史瓦罗 + - Clara +1108: + - 桑博 + - Sampo +1109: + - 虎克 + - 胡克 + - Hook +1201: + - 青雀 + - 青却 + - 卿雀 + - Qingque +1202: + - 停云 + - 停运 + - 听云 + - Tingyun +1203: + - 罗刹 +1204: + - 景元 + - JingYuan +1205: + - 刃 +1206: + - 素裳 + - 李素裳 + - Sushang +1207: + - 驭空 +1209: + - 彦卿 + - 言情 + - 彦情 + - 彦青 + - 言卿 + - 燕青 + - Yanqing +1211: + - 白露 + - 龙女 + - 小龙女 + - 白鹭 + - 白鹿 + - 白麓 + - Bailu \ No newline at end of file diff --git a/plugins/genshin/model/calculator.js b/plugins/genshin/model/calculator.js index ea5a1dc..fdf4c87 100644 --- a/plugins/genshin/model/calculator.js +++ b/plugins/genshin/model/calculator.js @@ -5,13 +5,13 @@ import lodash from 'lodash' import gsCfg from './gsCfg.js' export default class Calculator extends base { - constructor (e) { + constructor(e) { super(e) this.model = 'calculator' - this.checkMsg = '设置角色、武器、技能等级有误\n指令:#刻晴养成\n示例:#刻晴养成81 90 9 9 9\n参数为角色、武器、技能等级' + this.checkMsg = `设置角色、武器、技能等级有误\n指令:${e.isSr ? '*克拉拉养成\n示例:*克拉拉养成75 80 6 9 9 9\n参数为角色、武器、普攻、战技、终结技、天赋' : '#刻晴养成\n示例:#刻晴养成81 90 9 9 9\n参数为角色、武器、技能等级'}` } - async get (role) { + async get(role) { this.role = role /** 获取绑定uid */ let uid = await MysInfo.getUid(this.e) @@ -26,8 +26,18 @@ export default class Calculator extends base { this.mysApi = new MysApi(uid, ck.ck, { log: true }) + let seed_id = lodash.sample('abcdefghijklmnopqrstuvwxyz0123456789', 16).replace(/,/g, '') + let device_fp = await MysInfo.get(this.e, 'getFp', { + seed_id + }) + this.headers = { + 'x-rpc-device_fp': device_fp?.data?.device_fp + } + /** 获取角色数据 */ - let character = await this.mysApi.getData('character') + let character = await MysInfo.get(this.e, this.e.isSr ? 'avatarInfo' : 'character', { + headers: this.headers, + }) if (!character || character.retcode !== 0) return false character = character.data @@ -35,7 +45,7 @@ export default class Calculator extends base { await this.getSet() /** 获取计算角色 */ - this.dataCharacter = character.avatars.find((item) => item.id == role.roleId) + this.dataCharacter = character[this.e.isSr ? 'avatar_list' : 'avatars'].find((item) => item.id == role.roleId) /** 获取计算参数 */ let body = await this.getBody() @@ -56,34 +66,35 @@ export default class Calculator extends base { } } - async getSet () { - let defSetSkill = '90,90,10,10,10'.split(',') + async getSet() { + let defSetSkill = this.e.isSr ? '80,80,6,10,10,10'.split(',') : '90,90,10,10,10'.split(',') - let set = this.e.msg.replace(/#|#|养成|计算/g, '').trim() + let set = this.e.msg.replace(/#|#|星铁|养成|计算/g, '').trim() set = set.replace(/,| /g, ',') set = set.replace(this.role.alias, '') let setSkill = [] + let length = this.e.isSr ? 6 : 5 if (set) { setSkill = set.split(',') setSkill = lodash.compact(setSkill) - for (let i = 0; i <= 4; i++) { + for (let i = 0; i < length; i++) { if (!setSkill[i]) setSkill[i] = defSetSkill[i] } } else { setSkill = defSetSkill } - if (setSkill.length != 5) { - let reMsg = this.checkMsg.replace(/刻晴/g, this.role.alias) + if (setSkill.length != length) { + let reMsg = this.checkMsg.replace(/刻晴|克拉拉/g, this.role.alias) await this.e.reply(reMsg) return false } /** 检查参数 */ - let check = [90, 90, 10, 10, 10] + let check = this.e.isSr ? [80, 80, 6, 10, 10, 10] : [90, 90, 10, 10, 10] for (const key in check) { if (check[key] < Number(setSkill[key])) { setSkill[key] = check[key] @@ -93,21 +104,37 @@ export default class Calculator extends base { this.setSkill = setSkill } - async getBody () { + async getBody() { // 技能 let skillList = [] if (this.dataCharacter) { /** 角色存在获取技能数据 */ - let detail = await this.mysApi.getData('detail', { avatar_id: this.role.roleId }) + let data = this.e.isSr ? { avatar_id: this.role.roleId, tab_from: 'TabOwned' } : { avatar_id: this.role.roleId } + let detail = await MysInfo.get(this.e, 'detail', { + headers: this.headers, + ...data + }) if (!detail || detail.retcode !== 0) return false - skillList = detail.data.skill_list + skillList = detail.data.skill_list || detail.data.skills } else { /** 尚未拥有的角色 */ - skillList = await this.getSkillId(this.role.roleId) + if (this.e.isSr) { + let detail = await MysInfo.get(this.e, 'detail', { + headers: this.headers, + avatar_id: this.role.roleId, + tab_from: 'TabAll' + }) + if (!detail || detail.retcode !== 0) return false + + this.avatar = detail.data.avatar + skillList = detail.data.skills + } else { + skillList = await this.getSkillId(this.role.roleId) + } if (!skillList) { - this.e.reply('暂无角色数据,请稍后再试') + this.e.reply('暂无角色数据,请稍后再试\n星铁角色养成请使用*开头') return false } @@ -116,57 +143,96 @@ export default class Calculator extends base { this.dataCharacter = { level: 1, name: this.role.name, - icon: `${this.screenData.pluResPath}img/role/${this.role.name}.png`, - rarity: four.includes(Number(this.role.roleId)) ? 4 : 5 + icon: this.e.isSr ? this.avatar.icon_url : `${this.screenData.pluResPath}img/role/${this.role.name}.png`, + rarity: this.e.isSr ? this.avatar.rarity : four.includes(Number(this.role.roleId)) ? 4 : 5 } } - skillList = skillList.filter((item) => item.max_level != 1) - /** 拼接计算参数 */ - let body = { - avatar_id: Number(this.role.roleId), - avatar_level_current: Number(this.dataCharacter.level), - avatar_level_target: Number(this.setSkill[0]), - skill_list: [ - { - id: Number(skillList[0].group_id), - level_current: Number(skillList[0].level_current), - level_target: Number(this.setSkill[2]) + let body + if (this.e.isSr) { + body = { + game: 'hkrpg', + avatar: { + item_id: Number(this.role.roleId), + cur_level: Number(this.dataCharacter.level), + target_level: Number(this.setSkill[0]), }, - { - id: Number(skillList[1].group_id), - level_current: Number(skillList[1].level_current), - level_target: Number(this.setSkill[3]) - }, - { - id: Number(skillList[2].group_id), - level_current: Number(skillList[2].level_current), - level_target: Number(this.setSkill[4]) + skill_list: [] + } + for (let data of skillList) { + let skill = { + item_id: data.point_id, + cur_level: data.cur_level, + target_level: data.target_level } - ] + if (Number(this.setSkill[0]) >= data.min_level_limit) body.skill_list.push(skill) + } + + } else { + skillList = skillList.filter((item) => item.max_level != 1) + + body = { + avatar_id: Number(this.role.roleId), + avatar_level_current: Number(this.dataCharacter.level), + avatar_level_target: Number(this.setSkill[0]), + skill_list: [ + { + id: Number(skillList[0].group_id), + level_current: Number(skillList[0].level_current), + level_target: Number(this.setSkill[2]) + }, + { + id: Number(skillList[1].group_id), + level_current: Number(skillList[1].level_current), + level_target: Number(this.setSkill[3]) + }, + { + id: Number(skillList[2].group_id), + level_current: Number(skillList[2].level_current), + level_target: Number(this.setSkill[4]) + } + ] + } } if (this.mysApi.getServer().startsWith('os')) { body.lang = "zh-cn" } - if (this.dataCharacter.weapon) { - if (Number(this.dataCharacter.weapon.rarity) < 3) { - this.setSkill[1] = 70 + if (this.e.isSr) { + if (this.dataCharacter.equip) { + body.equipment = { + item_id: Number(this.dataCharacter.equip.id), + cur_level: Number(this.dataCharacter.equip.level), + target_level: Number(this.setSkill[1]) + } } - body.weapon = { - id: Number(this.dataCharacter.weapon.id), - level_current: Number(this.dataCharacter.weapon.level), - level_target: Number(this.setSkill[1]) + } else { + if (this.dataCharacter.weapon) { + if (Number(this.dataCharacter.weapon.rarity) < 3) { + this.setSkill[1] = 70 + } + + body.weapon = { + id: Number(this.dataCharacter.weapon.id), + level_current: Number(this.dataCharacter.weapon.level), + level_target: Number(this.setSkill[1]) + } + } } + + skillList = skillList.filter((item) => item.max_level != 1) this.skillList = skillList return body } - async getSkillId (roleId) { - let avatarSkill = await this.mysApi.getData('avatarSkill', { avatar_id: roleId }) + async getSkillId(roleId) { + let avatarSkill = await MysInfo.get(this.e, 'avatarSkill', { + headers: this.headers, + avatar_id: roleId + }) if (!avatarSkill || avatarSkill.retcode !== 0) return false avatarSkill = avatarSkill.data avatarSkill.list.forEach((item) => { @@ -176,20 +242,20 @@ export default class Calculator extends base { return avatarSkill.list } - async computes (body) { - let computes = await this.mysApi.getData('compute', body) + async computes(body) { + let computes = await MysInfo.get(this.e, 'compute', body) if (!computes || computes.retcode !== 0) return false computes = computes.data let formart = (num) => { return num > 10000 ? (num / 10000).toFixed(1) + ' w' : num } - + if (this.e.isSr) delete computes.coin_id for (let i in computes) { for (let j in computes[i]) { computes[i][j].num = formart(computes[i][j].num) - if (computes[i][j].name.includes('「')) { + if (computes[i][j][this.e.isSr ? 'item_name' : 'name'].includes('「')) { computes[i][j].isTalent = true } } diff --git a/plugins/genshin/model/gsCfg.js b/plugins/genshin/model/gsCfg.js index 36d70c8..facd6d7 100644 --- a/plugins/genshin/model/gsCfg.js +++ b/plugins/genshin/model/gsCfg.js @@ -9,7 +9,8 @@ import MysUser from './mys/MysUser.js' /** 配置文件 */ class GsCfg { - constructor () { + constructor() { + this.isSr = false /** 默认设置 */ this.defSetPath = './plugins/genshin/defSet/' this.defSet = {} @@ -24,7 +25,7 @@ class GsCfg { this.ignore = ['mys.pubCk', 'gacha.set', 'bot.help', 'role.name'] } - get element () { + get element() { return { ...this.getdefSet('element', 'role'), ...this.getdefSet('element', 'weapon') } } @@ -32,12 +33,12 @@ class GsCfg { * @param app 功能 * @param name 配置文件名称 */ - getdefSet (app, name) { + getdefSet(app, name) { return this.getYaml(app, name, 'defSet') } /** 用户配置 */ - getConfig (app, name) { + getConfig(app, name) { if (this.ignore.includes(`${app}.${name}`)) { return this.getYaml(app, name, 'config') } @@ -51,7 +52,7 @@ class GsCfg { * @param name 名称 * @param type 默认跑配置-defSet,用户配置-config */ - getYaml (app, name, type) { + getYaml(app, name, type) { let file = this.getFilePath(app, name, type) let key = `${app}.${name}` @@ -71,13 +72,13 @@ class GsCfg { return this[type][key] } - getFilePath (app, name, type) { + getFilePath(app, name, type) { if (type == 'defSet') return `${this.defSetPath}${app}/${name}.yaml` else return `${this.configPath}${app}.${name}.yaml` } /** 监听配置文件 */ - watch (file, app, name, type = 'defSet') { + watch(file, app, name, type = 'defSet') { let key = `${app}.${name}` if (this.watcher[type][key]) return @@ -95,7 +96,7 @@ class GsCfg { } /** 读取所有用户绑定的ck */ - async getBingCk (game = 'gs') { + async getBingCk(game = 'gs') { let ck = {} let ckQQ = {} let noteCk = {} @@ -121,20 +122,20 @@ class GsCfg { } /** 获取qq号绑定ck */ - getBingCkSingle (userId) { + getBingCkSingle(userId) { console.log('gsCfg.getBingCkSingle() 即将废弃') return {} } - saveBingCk (userId, data) { + saveBingCk(userId, data) { console.log('gsCfg.saveBingCk() 即将废弃') } /** * 原神角色id转换角色名字 */ - roleIdToName (id) { - let name = this.getdefSet('role', 'name') + roleIdToName(id) { + let name = this.getdefSet('role', this.isSr ? 'sr_name' : 'name') if (name[id]) { return name[id][0] } @@ -145,7 +146,7 @@ class GsCfg { /** * 原神武器id转换成武器名字 */ - getWeaponDataByWeaponHash (hash) { + getWeaponDataByWeaponHash(hash) { let data = this.getdefSet('weapon', 'data') let weaponData = {} weaponData.name = data.Name[hash] @@ -155,20 +156,22 @@ class GsCfg { } /** 原神角色别名转id */ - roleNameToID (keyword) { + roleNameToID(keyword, isSr) { + if (isSr) this.isSr = isSr if (!isNaN(keyword)) keyword = Number(keyword) this.getAbbr() - let roelId = this.nameID.get(String(keyword)) + let roelId = this[this.isSr ? 'sr_nameID' : 'nameID'].get(String(keyword)) return roelId || false } /** 获取角色别名 */ - getAbbr () { - if (this.nameID) return + getAbbr() { + if (this[this.isSr ? 'sr_nameID' : 'nameID']) return this.nameID = new Map() - + this.sr_nameID = new Map() let nameArr = this.getdefSet('role', 'name') + let sr_nameArr = this.getdefSet('role', 'sr_name') let nameArrUser = this.getConfig('role', 'name') let nameID = {} @@ -180,6 +183,13 @@ class GsCfg { } } + for (let i in sr_nameArr) { + nameID[sr_nameArr[i][0]] = i + for (let abbr of sr_nameArr[i]) { + this.sr_nameID.set(String(abbr), i) + } + } + for (let i in nameArrUser) { for (let abbr of nameArrUser[i]) { this.nameID.set(String(abbr), nameID[i]) @@ -188,8 +198,8 @@ class GsCfg { } /** 返回所有别名,包括用户自定义的 */ - getAllAbbr () { - let nameArr = this.getdefSet('role', 'name') + getAllAbbr() { + let nameArr = this.getdefSet('role', this.isSr ? 'sr_name' : 'name') let nameArrUser = this.getConfig('role', 'name') for (let i in nameArrUser) { @@ -205,7 +215,7 @@ class GsCfg { * @param name 名称 * @param isWeapon 是否武器 */ - shortName (name, isWeapon = false) { + shortName(name, isWeapon = false) { let other = {} if (isWeapon) { other = this.getdefSet('weapon', 'other') @@ -216,12 +226,12 @@ class GsCfg { } /** 公共配置ck文件修改hook */ - async change_myspubCk () { + async change_myspubCk() { await MysInfo.initCache() await MysInfo.initPubCk() } - getGachaSet (groupId = '') { + getGachaSet(groupId = '') { let config = this.getYaml('gacha', 'set', 'config') let def = config.default if (config[groupId]) { @@ -230,7 +240,7 @@ class GsCfg { return def } - getMsgUid (msg) { + getMsgUid(msg) { let ret = /[1|2|5-9][0-9]{8}/g.exec(msg) if (!ret) return false return ret[0] @@ -245,12 +255,13 @@ class GsCfg { * @return alias 当前别名 * @return uid 游戏uid */ - getRole (msg, filterMsg = '') { + getRole(msg, filterMsg = '', isSr = false) { let alias = msg.replace(/#|老婆|老公|[1|2|5-9][0-9]{8}/g, '').trim() if (filterMsg) { alias = alias.replace(new RegExp(filterMsg, 'g'), '').trim() } + this.isSr = isSr /** 判断是否命中别名 */ let roleId = this.roleNameToID(alias) if (!roleId) return false @@ -265,7 +276,7 @@ class GsCfg { } } - cpCfg (app, name) { + cpCfg(app, name) { if (!fs.existsSync('./plugins/genshin/config')) { fs.mkdirSync('./plugins/genshin/config') } @@ -279,7 +290,7 @@ class GsCfg { /** * 根据角色名获取对应的元素类型 */ - getElementByRoleName (roleName) { + getElementByRoleName(roleName) { let element = this.getdefSet('element', 'role') if (element[roleName]) { return element[roleName] @@ -289,7 +300,7 @@ class GsCfg { /** * 根据技能id获取对应的技能数据,角色名用于命座加成的技能等级 */ - getSkillDataByskillId (skillId, roleName) { + getSkillDataByskillId(skillId, roleName) { let skillMap = this.getdefSet('skill', 'data') let skillData = {} if (skillMap.Name[skillId]) { @@ -304,7 +315,7 @@ class GsCfg { return skillData } - fightPropIdToName (propId) { + fightPropIdToName(propId) { let propMap = this.getdefSet('prop', 'prop') if (propMap[propId]) { return propMap[propId] @@ -312,7 +323,7 @@ class GsCfg { return '' } - getRoleTalentByTalentId (talentId) { + getRoleTalentByTalentId(talentId) { let talentMap = this.getdefSet('role', 'talent') let talent = {} if (talentMap.Name[talentId]) { diff --git a/plugins/genshin/model/mys/apiTool.js b/plugins/genshin/model/mys/apiTool.js index 9150d5f..036e770 100644 --- a/plugins/genshin/model/mys/apiTool.js +++ b/plugins/genshin/model/mys/apiTool.js @@ -173,6 +173,17 @@ export default class apiTool { dailyNote: { url: `${hostRecord}game_record/app/hkrpg/api/note`, query: `role_id=${this.uid}&server=${this.server}` + }, + /** 养成计算器 */ + compute: { + url: `${host}event/rpgcalc/compute?`, + query:`game=hkrpg`, + body: data + }, + /** 详情 */ + detail: { + url: `${host}event/rpgcalc/avatar/detail`, + query: `game=hkrpg&lang=zh-cn&item_id=${data.avatar_id}&tab_from=${data.tab_from}&change_target_level=0&uid=${this.uid}®ion=${this.server}` } } } diff --git a/plugins/genshin/model/mys/mysInfo.js b/plugins/genshin/model/mys/mysInfo.js index 36a909e..fe3bb79 100644 --- a/plugins/genshin/model/mys/mysInfo.js +++ b/plugins/genshin/model/mys/mysInfo.js @@ -25,7 +25,7 @@ export default class MysInfo { } // ck对应MysUser对象 this.ckUser = null - this.auth = ['dailyNote', 'bbs_sign_info', 'bbs_sign_home', 'bbs_sign', 'ys_ledger', 'compute', 'avatarSkill', 'detail', 'blueprint', 'UserGame', 'getFp', 'deckList', 'avatar_cardList', 'action_cardList'] + this.auth = ['dailyNote', 'bbs_sign_info', 'bbs_sign_home', 'bbs_sign', 'ys_ledger', 'compute', 'avatarSkill', 'detail', 'blueprint', 'UserGame', 'deckList', 'avatar_cardList', 'action_cardList', 'avatarInfo'] } static async init(e, api) { diff --git a/plugins/genshin/resources/StarRail/html/calculator/calculator.css b/plugins/genshin/resources/StarRail/html/calculator/calculator.css new file mode 100644 index 0000000..d1ae9f9 --- /dev/null +++ b/plugins/genshin/resources/StarRail/html/calculator/calculator.css @@ -0,0 +1,450 @@ +@font-face { + font-family: "tttgbnumber"; + src: url("../../../../../../resources/font/tttgbnumber.ttf"); + font-weight: normal; + font-style: normal; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + user-select: none; +} + +body { + transform: scale(1.48); + transform-origin: 0 0; +} + +.container { + width: 550px; + padding: 10px 15px 15px 15px; + background-color: #fff; + position: relative; +} + +.info_box { + position: relative; + height: 40px; + margin-top: 10px; + margin-bottom: 15px; +} + +.head_box { + /* padding: 10px; */ + /* border-radius: 15px; */ + font-family: tttgbnumber; + /* box-shadow: 0 5px 10px 0 rgb(0 0 0 / 15%); */ +} + +.data_box { + padding: 5px 10px 5px 10px; + margin-top: 10px; + /* box-shadow: 0 5px 10px 0 rgb(0 0 0 / 15%); */ + border-radius: 5px; + font-family: tttgbnumber; + background-color: #f2eee6; + border: 1px solid #d9d3c7; +} + +.uidRight { + position: absolute; + top: 5px; + right: 0px; + font-size: 20px; + text-align: center; + color: #fff; + padding: 3px 6px; + border-radius: 7px; + font-family: "tttgbnumber"; + background-color: #a57f72; + box-shadow: 0 3px 6px 0 rgb(132 93 90 / 40%); +} + +.topLeft { + position: absolute; + top: 5px; + left: 0px; + z-index: 9; + font-size: 20px; + text-align: center; + color: #fff; + padding: 3px 6px; + border-radius: 7px; + font-family: "tttgbnumber"; + background-color: #a57f72; + box-shadow: 0 3px 6px 0 rgb(132 93 90 / 40%); +} + +.item { + margin: 10px 0px 10px 0px; + border-radius: 5px; + background: #e9e5dc; + display: flex; + /* box-shadow: 0 5px 10px 0 rgb(0 0 0 / 15%); */ + border: 1px solid #d9d3c7; +} + +.role_box { + margin: 10px 0px 10px 10px; + height: 112px; + width: 95px; + background: #e9e5dc; + border-radius: 7px; + overflow: hidden; + position: relative; +} + +.role_img { + width: 100%; + height: 100%; +} + +.role_name { + margin-top: 20px; + margin-left: 10px; + width: 125px; + color: #91837a; + font-weight: bold; + font-size: 24px; + line-height: 30px; + letter-spacing: 1px; + white-space: nowrap; +} + +.role_LV { + margin-top: 10px; + width: 120px; + height: 40px; + line-height: 30px; + white-space: nowrap; + font-size: 16px; +} + +.weapon_box { + margin: 10px 0px 10px 20px; + height: 95px; + width: 95px; + background: #e9e5dc; + border-radius: 7px; + overflow: hidden; +} + +.weapon_img { + width: 100%; + height: 100%; +} + +.weapon_name { + margin-top: 20px; + margin-left: 10px; + width: 120px; + color: #91837a; + font-weight: bold; + font-size: 24px; + line-height: 30px; + letter-spacing: 1px; + white-space: nowrap; +} + +.weapon_LV { + margin-top: 10px; + width: 120px; + height: 40px; + font-size: 16px; + line-height: 30px; + white-space: nowrap; +} + +.weapon_bg5 { + background-image: url(../../../img/other/bg5.png); + width: 100%; + height: 95px; + background-size: 100%; + background-repeat: no-repeat; +} + +.weapon_bg4 { + width: 100%; + height: 95px; + background-image: url(../../../img/other/bg4.png); + background-size: 100%; + background-repeat: no-repeat; +} + +.weapon_bg3 { + width: 100%; + height: 95px; + background-image: url(../../../img/other/bg3.png); + background-size: 100%; + background-repeat: no-repeat; +} + +.weapon_bg2 { + width: 100%; + height: 95px; + background-image: url(../../../img/other/bg3.png); + background-size: 100%; + background-repeat: no-repeat; +} + +.weapon_bg1 { + width: 100%; + height: 95px; + background-image: url(../../../img/other/bg3.png); + background-size: 100%; + background-repeat: no-repeat; +} + +.bg105 { + background-image: url(../../../img/other/bg105.png); + width: 100%; + height: 95px; + background-size: 100%; + background-repeat: no-repeat; +} + +.bg5 { + background-image: url(../../../img/other/bg5.png); + width: 100%; + height: 112px; + /*filter: brightness(1.1);*/ + background-size: 100%; + background-repeat: no-repeat; +} + +.bg4 { + width: 100%; + height: 112px; + background-image: url(../../../img/other/bg4.png); + background-size: 100%; + background-repeat: no-repeat; +} + +.skill { + margin: 5px 0px 0px 0px; + background: #f1eee5; + display: flex; + border-radius: 7px; + padding: 1px 0 1px 0; + /* box-shadow: 0 5px 10px 0 rgb(0 0 0 / 15%); */ + padding-left: 20px; + background: url(data:image/png;base64,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) no-repeat; + background-size: 102% 107%; + background-repeat: no-repeat; + background-attachment: fixed; + /*关键*/ + background-position: center; + overflow: hidden; + border: 1px solid #d9d3c7; +} + +.skillimg { + margin: 5px; + width: 60px; + height: 60px; + background-image: url(skillbg.png); + background-size: 100%; +} + +.skillimgC { + width: 55px; + height: 55px; + margin: 2px 0px 0px 2px; +} + +.skillname { + margin: 10px; + width: 250px; + height: 20px; + line-height: 20px; + color: #91837a; + font-weight: bold; + letter-spacing: 1px; + font-size: 18px; +} + +.skillLv { + margin-top: 8px; + width: 250px; + height: 20px; + line-height: 20px; +} + +.skillRight { + margin-top: 20px; + width: 140px; + height: 40px; + line-height: 40px; + display: flex; +} + +.skillJt { + line-height: 32px; + font-weight: bold; + color: #91837a; +} + +.skillNow { + border-style: solid; + border-width: 1px; + border-color: #d9d3c7; + border-radius: 7px; + width: 50px; + height: 30px; + line-height: 30px; + text-align: center; + color: #91837a; + font-weight: bold; + font-size: 20px; + background-color: #f7f5f0; +} + +.role_top { + margin: 10px 0 20px 0; + padding: 10px; + /* box-shadow: 0 5px 10px 0 rgb(0 0 0 / 10%); */ + border-radius: 3px; + font-family: tttgbnumber; + background: linear-gradient(1turn, hsla(25, 23%, 67%, 0.4), hsla(25, 23%, 67%, 0.2)); + display: flex; + color: #8c7770; + font-weight: bold; + font-size: 20px; + letter-spacing: 1px; +} + +.role_top .role_top_name { + width: 50%; +} + +.role_top .role_top_LV { + width: 50%; + text-align: right; +} + +.role_separate_line { + text-align: center; + color: #bfa399; + height: 24px; + line-height: 24px; + font-size: 18px; + margin: 10px 0 20px 0; + background: url(data:image/png;base64,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) no-repeat; + background-position: 50%; + background-size: 100% auto; + font-weight: bold; +} + +.cailiao_box { + display: flex; + flex-direction: row; + justify-content: space-between; + flex-wrap: wrap; + color: #91837a; + font-weight: bold; + margin-bottom: 20px; + padding: 0px 10px; + width: 100%; +} + +.cailiao_item { + width: 230px; + display: flex; + align-items: center; + margin-bottom: 10px; +} + +.long { + width: 100%; +} + +.isTalent { + margin-left: -10px; +} + +.cailiao_img { + width: 50px; + height: 50px; + margin-right: 10px; + background-position: 50%; + background-repeat: no-repeat; + background-size: contain; + text-align: center; + border-radius: 3px; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAEXElEQVRYhc2ZO2tUQRTHz5l73WQlGhHETlDEQhALG20kxEJLW2trv4SIYCOCHyTYWSh2CmIR7CwsbK1CFNxsdufIvM887mN3bx4Lm53XPfObM/8zM3eCRAQ7r5/fQIRXALANAOeBfxABEXUBogAUJi+wMmkhQrmodL5SZbq8AqwECNtGVJVpq8sqWya0PfessiPQtAeBAIQTOZvuTg8mz+48evwN3715cVPK+WcA2IT0k8JqwyXYkPewFkAIC2fLXVpY8GAjDEzZAnTgqMGJ4N9kf2+rlnL+UsEqT8v5PGOOnA3KUF4aF4eMbm+LeML4AFlzZtQ5yKbrMyO4fPU6bFy4OB6Nz74VAPBA1bXBKoN6pBiXmhnwGDks+p5NiX4EGTiyQVl7ttyBz2eH8PvXTwO/vn67BoCNlT0a/fA892iDV5E9FT0TepgdHupfgWKt7g/LO+sCLUM0grJRIfARBue4AWTAQ+i0FdQCpaCQeDW0iXlq13Dp6W8LqAIEZF5sAuXtQ32tlg4oBtTx6rQRNHFizdfats5z0DLEMjqN+sNyPQGpP1C7hfm06DSVmZcYOQ/7bTQHLRkI/Q+h0x6g7oeMl2uzHeLAOl0woDLQMBj3hIJVu3Ht9vFBdMoHF4H302kJ1Nsk0t8a3WnpSHTK46I0/YnEsrbIeK2HReLhok47Dig56HI6zWYtihXS39od606DTtvsaw9LaYNOnVHZA+2gbBY6QRbTaWafQZPTsDtQe2snqNOyHG29lCBN0FVew8et08ZBFRwltYel2em0LE6BTtvqwa8SzMNdOiqDDqfTNkcQSSBp12H9UsmmIvdqt04jkF46XcwRClZB1wpWBd7R6LRnQDWChjbew14SS+u0axnsr9Oo/0Re5IPO3RVg26iXCSju1VUDFqwk7Drsd7pEe5kOC4aG1GnpiOtPa14SaknTV0iFhl3T3wjK2/bXabO8jIcBpNk4BNvpVtLpoueOzlljNsjudMK9cZwCnRZB7R8ZDj/JxnGCOs37YAmS9gBvrzjT6Y81PbBOi6CFAfnmbONA/xK6nE7bd8hkMD2nP662qwRI+05n72QXDpjeO+CCoOns2aReJXzQIQ+64QOKWW3VaQk0rBJOEv6dbnWdpoelHDQfXGjeAGo/5iUUnCQaAi41dsQ6LYG6MgoeRnv4aZv+49FpBJvUU7SsRReCK+q0CArMIYuB+pyJOethFC2gw+i0EzTpJ+3beNhcaE9B4KgejWCu/pfQufAH2OL0FwMqzjfpNM+yVtrDtC9ms9muKr505RrUozXmoeBJjLTs/nNk23gAHrgIoRqbYdE5JQwpOIoNQAgXdB/w+6f398bnNj+iwLGfSgrDInK/tlCSvUmUfjF3917qcKLLeZ6X6XR41qeVbVWnuyrUmavWPSC6K25tPfwy+bu/PZtOvxLJg0ZYfRx1sKoDc9cVwdntMwXVg/KwKh2AFKgftH4ug/1DQDsK9v6Tpz/+A+D9r7rzum/YAAAAAElFTkSuQmCC); +} + +.cailiao_item_img { + width: 50px; + height: 50px; + /* margin-right: 10px; */ +} + +.cailiao_item_title { + line-height: 30px; + font-size: 18px; + vertical-align: middle; + white-space: nowrap; +} + +.biye { + text-align: center; + font-family: "tttgbnumber"; + line-height: 30px; + color: #91837a; +} + +.logo { + font-size: 14px; + font-family: "tttgbnumber"; + text-align: center; + color: #7994a7; +} + +.jt { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAQCAYAAABtPJ3XAAAC4klEQVRIS9VWTWsTURS9b4oiBPozIiKI1l2hBanUNHThokip0NJUKJrRHxBoOxGSmoL/IaWxKUnrvuDGzLiTbtWI0K0TN4Uijc27R+Yj85FMmml3zSabnHfPPffccyPomn2ExfeXric7Ix3l9vij71fhr+9tJ0f4hjK+sHAl/MdiMclEylwuNxQvmkZjDUCeWQoAtTOlrY5NpltxiRvVD2sMmWfJgphriiR1MpOJjT8oba7BxQviGkRbfZbbHIgXzS+NE5Y8CmYCmJhhCoJ6d2q6Hoe0Ua2cMPMoW3j7DZgA1KnlF7Hw+1uFE0iMgiWBQQw2BUid33gbibcUhl0MTsFA4Xqng+xY+mK19WoFIZz7BgH1f0o7m868uVDtg1LBqe+QdThIJgLX2+fIZjbDaoum8RnMcNXxCVuPEMhksPpgZnagWvruDgD4jYabNiWgzqy+GojfLxVgkbUU7uMBNsGkLhbeefhIhT2V3UYYKI99PVoRmsa9NtGrO55CtiUChLuKAVRO/f4TiQ8p3LWl7J04yse3EiuaprFPuOfHXdLdrkkg9XD26WEUYYekMyW/WfZHzExCiNTMy9d9+D7ClpcDE+u+pwCpxdL7wxBhT5HwWB1PDSRsedgfZz9hyy4yBmG3aWvxAwp3RWAglQkRthPC3fSQUiAilO+nj1aEiLJE9NLZiWMXBhFQfnIJS3gku3wI5eObvZboSQl3c1sgZIctnTOZgCX8t1oClJ0eunRuSnjR6IjHzC0CZUNL98No2LHk57CXp/FibUBKxI21YEoEow2Mevuco2KtccrMCT+HYbKEem863uHQq5VTMCfCh6OjTi2vxjocB6XiKbNMBMiaDKk+3yhEH46fRmNdMudthYlqZ3/P1GHHIpgUxm5lncF5O7eJa8r55U7z/lZxHdKqLwmEmhh2mq3i3/RPSev7zsTjZpxz3Bdt29s2fmJp6Ur4vaJm4+dz2lC8/W/tOn3+A23CzD4pjl20AAAAAElFTkSuQmCC) 50% / cover no-repeat; + width: 20px; + height: 8px; + display: inline-block; + margin: 0 5px 2px 5px; +} + +.role_box .life { + position: absolute; + top: 0px; + right: 0px; + z-index: 9; + font-size: 16px; + text-align: center; + color: #fff; + border-radius: 2px; + padding: 1px 5px; + border-radius: 3px; + font-family: "tttgbnumber"; +} + +.life1 { + background-color: #62a8ea; +} + +.life2 { + background-color: #62a8ea; +} + +.life3 { + background-color: #45b97c; +} + +.life4 { + background-color: #45b97c; +} + +.life5 { + background-color: #ff5722; +} + +.life6 { + background-color: #ff5722; +} \ No newline at end of file diff --git a/plugins/genshin/resources/StarRail/html/calculator/calculator.html b/plugins/genshin/resources/StarRail/html/calculator/calculator.html new file mode 100644 index 0000000..aefc4ce --- /dev/null +++ b/plugins/genshin/resources/StarRail/html/calculator/calculator.html @@ -0,0 +1,135 @@ + + + + + + + + + + +
+
+
+ UID : {{uid}} +
+
+ 角色养成计算 +
+
+
+
+
+ {{ if dataCharacter.rank>0}} + + {{dataCharacter.rank}}命 + {{/if}} +
+ +
+ +
+
+ {{dataCharacter.name}} +
Lv.{{dataCharacter.level}} Lv.{{setSkill[0]}}
+
+ {{ if dataCharacter.equip}} +
+
+ +
+ +
+
+ {{dataCharacter.equip.name}} +
Lv.{{dataCharacter.equip.level}} + Lv.{{setSkill[1]}} +
+
+ {{/if}} +
+ + {{each skillList skill i}} +
+
+ +
+
+ {{ if skill.anchor=="Point01"}}普通攻击{{else if skill.anchor=="Point02"}}战技{{else if skill.anchor=="Point03"}}终结技{{else}}天赋{{/if}} +
Lv.{{skill.max_level}}
+
+
+
{{skill.cur_level}}
+
+
{{setSkill[i+2]}}
+
+
+ {{/each}} + +
+ {{if computes.avatar_consume.length + computes.skill_consume.length + computes.equipment_consume.length > 0}} +
+ {{if computes.avatar_consume.length > 0}} +
+
{{dataCharacter.name}}
+
Lv.{{dataCharacter.level}} Lv.{{setSkill[0]}}
+
+
角色消耗
+
+ {{each computes.avatar_consume avatar_consume}} +
+
+ +
+
{{avatar_consume.item_name}} x {{avatar_consume.num}}
+
+ {{/each}} +
+ {{/if}} + + {{if computes.skill_consume.length > 0}} +
行迹消耗
+
+ {{each computes.skill_consume skill_consume}} +
+
+ +
+
+ {{skill_consume.item_name}} x {{skill_consume.num}}
+
+ {{/each}} +
+ {{/if}} + + {{if computes.equipment_consume.length > 0}} +
+
{{dataCharacter.equip.name}}
+
Lv.{{dataCharacter.equip.level}} + Lv.{{setSkill[1]}}
+
+
+
+ {{each computes.equipment_consume equipment_consume}} +
+
+ +
+
{{equipment_consume.item_name}} x {{equipment_consume.num}}
+
+ {{/each}} +
+ {{/if}} + +
+ {{else}} +
+
毕业了,下一位 !
+
+ {{/if}} +
+ + + + \ No newline at end of file diff --git a/plugins/genshin/resources/StarRail/html/calculator/skillbg.png b/plugins/genshin/resources/StarRail/html/calculator/skillbg.png new file mode 100644 index 0000000000000000000000000000000000000000..06523c25ec4664c69ff535d2d58bc815211e6a01 GIT binary patch literal 54181 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