初步支持星铁面板数据获取与展示

This commit is contained in:
Kokomi 2023-05-27 05:37:06 +08:00
parent ea2919d31f
commit 08e66d28be
6 changed files with 31 additions and 17 deletions

View File

@ -1,8 +1,9 @@
# 2.4.0 Dev # 2.4.0
* 尚未完成不推荐切换至Dev
* 初步支持星铁面板数据获取与展示 * 初步支持星铁面板数据获取与展示
* 面板属性计算暂未包含武器及圣遗物Buff面板数据暂不准确 * 可使用`#星铁更新面板`来获取面板信息,通过`#希儿面板`来进行查看
* 部分角色的伤害计算,以及圣遗物评分功能仍在补全中
* 使用Miao-Yunzai可使用`*`来代填`#星铁`前缀并能区分游戏使用不同UID目前仍在Dev版本请等待后续更新
# 2.3.8 # 2.3.8

View File

@ -55,6 +55,7 @@ const ProfileChange = {
ret.char = char.id ret.char = char.id
ret.mode = regRet[3] === '换' ? '面板' : regRet[3] ret.mode = regRet[3] === '换' ? '面板' : regRet[3]
ret.uid = regRet[1] || regRet[4] || '' ret.uid = regRet[1] || regRet[4] || ''
ret.game = char.game
msg = regRet[5] msg = regRet[5]
// 更换匹配 // 更换匹配
@ -147,13 +148,15 @@ const ProfileChange = {
* @param uid * @param uid
* @param charid * @param charid
* @param ds * @param ds
* @param game
* @returns {ProfileData|boolean} * @returns {ProfileData|boolean}
*/ */
getProfile (uid, charid, ds) { getProfile (uid, charid, ds, game = 'gs') {
if (!charid) { if (!charid) {
return false return false
} }
let player = Player.create(uid)
let player = Player.create(uid, game)
let source = player.getProfile(charid) let source = player.getProfile(charid)
let dc = ds.char || {} let dc = ds.char || {}
@ -180,7 +183,7 @@ const ProfileChange = {
let id = cfg.char || source.id let id = cfg.char || source.id
let key = cuid + ':' + id let key = cuid + ':' + id
if (!profiles[key]) { if (!profiles[key]) {
let cPlayer = Player.create(cuid) let cPlayer = Player.create(cuid, game)
profiles[key] = cPlayer.getProfile(id) || {} profiles[key] = cPlayer.getProfile(id) || {}
} }
return profiles[key]?.id ? profiles[key] : source return profiles[key]?.id ? profiles[key] : source
@ -194,6 +197,7 @@ const ProfileChange = {
fetter: source.fetter || 10, fetter: source.fetter || 10,
elem: char.elem, elem: char.elem,
dataSource: 'change', dataSource: 'change',
_source: 'change',
promote promote
}, char.game, false) }, char.game, false)
@ -201,9 +205,12 @@ const ProfileChange = {
let wCfg = ds.weapon || {} let wCfg = ds.weapon || {}
let wSource = getSource(wCfg).weapon || {} let wSource = getSource(wCfg).weapon || {}
let weapon = Weapon.get(wCfg?.weapon || wSource?.name || defWeapon[char.weaponType], char.game, char.weaponType) let weapon = Weapon.get(wCfg?.weapon || wSource?.name || defWeapon[char.weaponType], char.game, char.weaponType)
if (char.isGs) {
if (!weapon || weapon.type !== char.weaponType) { if (!weapon || weapon.type !== char.weaponType) {
weapon = Weapon.get(defWeapon[char.weaponType], char.game) weapon = Weapon.get(defWeapon[char.weaponType], char.game)
} }
}
let wDs = { let wDs = {
name: weapon.name, name: weapon.name,
star: weapon.star, star: weapon.star,

View File

@ -28,8 +28,12 @@ let ProfileDetail = {
e.reply('面板替换功能已禁用...') e.reply('面板替换功能已禁用...')
return true return true
} }
if (pc.game === 'sr') {
e.reply('星铁面板暂不支持面板替换,请等待后续升级...')
return true
}
e.uid = pc.uid || e.runtime.uid e.uid = pc.uid || e.runtime.uid
profileChange = ProfileChange.getProfile(e.uid, pc.char, pc.change) profileChange = ProfileChange.getProfile(e.uid, pc.char, pc.change, pc.game)
if (profileChange && profileChange.char) { if (profileChange && profileChange.char) {
msg = `#${profileChange.char?.name}${pc.mode || '面板'}` msg = `#${profileChange.char?.name}${pc.mode || '面板'}`
e._profile = profileChange e._profile = profileChange

View File

@ -75,9 +75,9 @@ export default class AvatarArtis extends Base {
arti.set = artiObj.setName || arti.set || '' arti.set = artiObj.setName || arti.set || ''
arti.level = ds.level || arti.level || 1 arti.level = ds.level || arti.level || 1
arti.star = artiObj.getStarById(ds.id) || arti.star || 5 arti.star = artiObj.getStarById(ds.id) || arti.star || 5
let attrIds = ds.attrIds || ds.attrs
if (ds.mainId && ds.attrs) { if (ds.mainId && attrIds) {
let attr = artiObj.getAttrData(ds.mainId, ds.attrs, arti.level, arti.star, idx) let attr = artiObj.getAttrData(ds.mainId, attrIds, arti.level, arti.star, idx)
if (attr) { if (attr) {
arti.mainId = ds.mainId arti.mainId = ds.mainId
arti.main = attr.main || arti.main || {} arti.main = attr.main || arti.main || {}
@ -85,6 +85,8 @@ export default class AvatarArtis extends Base {
} else { } else {
console.log('attr id error', ds.main, ds.mainId, idx, arti.level, arti.star) console.log('attr id error', ds.main, ds.mainId, idx, arti.level, arti.star)
} }
} else {
arti.attrs = []
} }
return return
} else { } else {
@ -160,9 +162,9 @@ export default class AvatarArtis extends Base {
if (this.isSr) { if (this.isSr) {
tmp.id = ds.id tmp.id = ds.id
tmp.mainId = ds.main?.id tmp.mainId = ds.main?.id
tmp.attrs = [] tmp.attrIds = []
lodash.forEach(ds.attrs, (as) => { lodash.forEach(ds.attrs, (as) => {
tmp.attrs.push([ tmp.attrIds.push([
as?.id || '', as?.id || '',
as?.count || 1, as?.count || 1,
as?.step || 0 as?.step || 0

View File

@ -94,13 +94,13 @@ const HomoData = {
id: ds.ID, id: ds.ID,
level: ds.Level || 1, level: ds.Level || 1,
mainId: ds.MainAffixID, mainId: ds.MainAffixID,
attrs: [] attrIds: []
} }
lodash.forEach(ds.RelicSubAffix, (s) => { lodash.forEach(ds.RelicSubAffix, (s) => {
if (!s.SubAffixID) { if (!s.SubAffixID) {
return true return true
} }
tmp.attrs.push([s.SubAffixID, s.Cnt, s.Step || 0].join(',')) tmp.attrIds.push([s.SubAffixID, s.Cnt, s.Step || 0].join(','))
}) })
ret[ds.Type] = tmp ret[ds.Type] = tmp
}) })

View File

@ -189,7 +189,7 @@ let ArtisMark = {
let ds = artis[idx] let ds = artis[idx]
if (ds) { if (ds) {
// 不再支持非id格式的面板 // 不再支持非id格式的面板
if (!ds.attrs || !ds.mainId) { if ((!ds.attrIds && !ds.attr) || !ds.mainId) {
return false return false
} }
} }