This commit is contained in:
西瓜°
2026-02-25 23:49:50 +08:00
parent bc972f1fcc
commit 9349b7ab3c
10 changed files with 206 additions and 28 deletions
+2 -2
View File
@@ -9,6 +9,7 @@ from api.core.Redis import get_redis_info
from api.dp import RedisDep,AltersDep
from core.character.adventure import get_adv_list
from core.basic.character import createCharacter
from core.open.helper import get_user_info_by_id
router = APIRouter()
@@ -97,8 +98,7 @@ async def get_skill_info(
@router.get("/dnfhelper/{uid}/")
async def get_info_by_dnfhelper(uid: str, redis: RedisDep):
try:
from openapi.dnfhelper.main import get_main_user_info_by_id
result = await get_main_user_info_by_id(uid)
result = await get_user_info_by_id(uid,'')
return response(data=result)
except Exception as e:
print(f"Error fetching DNFHelper info: {e}")
+2 -2
View File
@@ -724,9 +724,9 @@ class Character(CharacterProperty):
def calc_avatar(self, avatar: dict):
"""计算时装效果"""
equ = get_equipment(self.equVersion)
dress = {key: value for key, value in avatar.items() if key in ['头发', '帽子', '脸部', '胸部', '上衣', '腰带', '下装', '鞋']}
dress = {key: value for key, value in avatar.items() if key in ['头部', '帽子', '脸部', '胸部', '上衣', '腰带', '下装', '鞋']}
equ.funs.calc_dress_effect(dress, self)
avatarElse = {key: value for key, value in avatar.items() if key not in ['头发', '帽子', '脸部', '胸部', '上衣', '腰带', '下装', '鞋']}
avatarElse = {key: value for key, value in avatar.items() if key not in ['头部', '帽子', '脸部', '胸部', '上衣', '腰带', '下装', '鞋']}
for key in avatarElse:
value = avatarElse[key].get('enchant', None)
emblem_0 = avatarElse[key].get('emblem_0', None)
+12 -12
View File
@@ -31,10 +31,10 @@ adv = [
'name': 'fighter_male',
'title': '格斗家(男)',
'children': [
{'id': 0, 'name': 'nenmaster_male', 'title': '归元·气功师', 'open': True,'class': 'GF.fighter_male.nenmaster_male'},
{'id': 0, 'name': 'nenmaster_male', 'title': '归元·气功师', 'open': True, 'class': 'GF.fighter_male.nenmaster_male'},
{'id': 1, 'name': 'striker_male', 'title': '归元·散打', 'open': True, 'class': 'GF.fighter_male.striker_male'},
{'id': 2, 'name': 'brawler_male', 'title': '归元·街霸', 'open': True, 'class': 'GF.fighter_male.brawler_male'},
{'id': 3, 'name': 'grappler_male', 'title': '归元·柔道家', 'open': True,'class': 'GF.fighter_male.grappler_male'},
{'id': 3, 'name': 'grappler_male', 'title': '归元·柔道家', 'open': True, 'class': 'GF.fighter_male.grappler_male'},
{'name': 'empty', 'title': '', 'comment': '首页'},
],
},
@@ -44,9 +44,9 @@ adv = [
'title': '格斗家(女)',
'children': [
{'id': 0, 'name': 'nenmaster_female', 'title': '归元·气功师', 'open': True, 'class': 'GF.fighter_female.nenmaster_female'},
{'id': 1, 'name': 'striker_female', 'title': '归元·散打', 'open': True,'class':"GF.fighter_female.striker_female"},
{'id': 1, 'name': 'striker_female', 'title': '归元·散打', 'open': True, 'class': 'GF.fighter_female.striker_female'},
{'id': 2, 'name': 'brawler_female', 'title': '归元·街霸', 'open': False},
{'id': 3, 'name': 'grappler_female', 'title': '归元·柔道家', 'open': True,'class':"GF.fighter_female.grappler_female"},
{'id': 3, 'name': 'grappler_female', 'title': '归元·柔道家', 'open': True, 'class': 'GF.fighter_female.grappler_female'},
{'name': 'sponsor', 'url': 'https://bbs.colg.cn', 'title': '', 'open': True},
],
},
@@ -67,9 +67,9 @@ adv = [
'name': 'gunner_female',
'title': '神枪手(女)',
'children': [
{'id': 0, 'name': 'ranger_female', 'title': '重霄·漫游枪手', 'open': True,'class':"GF.gunner_female.ranger_female"},
{'id': 1, 'name': 'launcher_female', 'title': '重霄·枪炮师', 'open': True,'class':'GF.gunner_female.launcher_female'},
{'id': 2, 'name': 'mechanic_female', 'title': '重霄·机械师', 'open': False,'class': 'GF.gunner_female.mechanic_female'},
{'id': 0, 'name': 'ranger_female', 'title': '重霄·漫游枪手', 'open': True, 'class': 'GF.gunner_female.ranger_female'},
{'id': 1, 'name': 'launcher_female', 'title': '重霄·枪炮师', 'open': True, 'class': 'GF.gunner_female.launcher_female'},
{'id': 2, 'name': 'mechanic_female', 'title': '重霄·机械师', 'open': False, 'class': 'GF.gunner_female.mechanic_female'},
{'id': 3, 'name': 'spitfire_female', 'title': '重霄·弹药专家', 'open': True, 'class': 'GF.gunner_female.spitfire_female'},
{'id': 4, 'name': 'paramedic', 'title': '重霄·协战师', 'open': True, 'class': 'GF.gunner_female.paramedic'},
],
@@ -114,7 +114,7 @@ adv = [
'name': 'crusader_male',
'title': '神启·圣骑士',
'open': True,
'class': 'GF.priest_male.crusader_male'
'class': 'GF.priest_male.crusader_male',
# 'options': [{'id': 0, 'name': 'default', 'title': '奶', 'class': 'crusader_male'}, {'id': 1, 'name': 'default', 'title': '审判', 'class': 'crusader_male_carry'}],
},
{'id': 1, 'name': 'infighter', 'title': '神启·蓝拳圣使', 'open': True, 'class': 'GF.priest_male.infighter'},
@@ -133,7 +133,7 @@ adv = [
'name': 'crusader_female',
'title': '神启·圣骑士',
'open': True,
'class': 'GF.priest_female.crusader_female'
'class': 'GF.priest_female.crusader_female',
# 'options': [{'id': 0, 'name': 'default', 'title': '奶', 'class': 'GF.priest_female.crusader_female', "open": True}, {'id': 1, 'name': 'default', 'title': '输出', 'class': 'crusader_female_carry'}],
},
{'id': 1, 'name': 'inquistor', 'title': '神启·异端审判者', 'open': True, 'class': 'GF.priest_female.inquistor'},
@@ -171,10 +171,10 @@ adv = [
'name': 'demonic_lancer',
'title': '魔枪士',
'children': [
{'id': 0, 'name': 'vanguard', 'title': '千魂·征战者', 'open': True,'class': 'GF.demonic_lancer.vanguard'},
{'id': 0, 'name': 'vanguard', 'title': '千魂·征战者', 'open': True, 'class': 'GF.demonic_lancer.vanguard'},
{'id': 1, 'name': 'skirmisher', 'title': '千魂·决战者', 'open': True, 'class': 'GF.demonic_lancer.skirmisher'},
{'id': 2, 'name': 'dragoon', 'title': '千魂·狩猎者', 'open': True, 'class': 'GF.demonic_lancer.dragoon'},
{'id': 3, 'name': 'impaler', 'title': '千魂·暗枪士', 'open': True,'class': 'GF.demonic_lancer.impaler'},
{'id': 3, 'name': 'impaler', 'title': '千魂·暗枪士', 'open': True, 'class': 'GF.demonic_lancer.impaler'},
{'id': 4, 'name': 'empty', 'title': ''},
],
},
@@ -184,7 +184,7 @@ adv = [
'title': '枪剑士',
'children': [
{'id': 0, 'name': 'hitman', 'title': '苍暮·暗刃', 'open': True, 'class': 'GF.gunblader.hitman'},
{'id': 1, 'name': 'agent', 'title': '苍暮·特工', 'open': True,'class': 'GF.gunblader.agent'},
{'id': 1, 'name': 'agent', 'title': '苍暮·特工', 'open': True, 'class': 'GF.gunblader.agent'},
{'id': 2, 'name': 'trouble_shooter', 'title': '苍暮·战线佣兵', 'open': True, 'class': 'GF.gunblader.trouble_shooter'},
{'id': 3, 'name': 'specialist', 'title': '苍暮·源能专家', 'open': True, 'class': 'GF.gunblader.specialist'},
{'id': 4, 'name': 'empty', 'title': ''},
+9 -9
View File
@@ -65,8 +65,8 @@ class 装扮:
skill.lv += 1
class 神器装扮头发(装扮):
部位 = "头发"
class 神器装扮头部(装扮):
部位 = "头部"
品质 = "神器"
套装 = "神器装扮"
id = 1
@@ -123,8 +123,8 @@ class 神器装扮鞋(装扮):
选项集合 = ("力量", "体力", "移动速度")
class 稀有装扮头发(装扮):
部位 = "头发"
class 稀有装扮头部(装扮):
部位 = "头部"
品质 = "稀有"
套装 = "稀有装扮"
选项集合 = ("智力", "精神", "施放速度")
@@ -179,8 +179,8 @@ class 稀有装扮鞋(装扮):
选项集合 = ("力量", "体力", "移动速度")
class 高级装扮头发(装扮):
部位 = "头发"
class 高级装扮头部(装扮):
部位 = "头部"
品质 = "高级"
套装 = "高级装扮"
选项集合 = ("智力", "精神", "施放速度")
@@ -235,11 +235,11 @@ class 高级装扮鞋(装扮):
选项集合 = ("力量", "体力", "移动速度")
神器装扮集合 = (神器装扮头发, 神器装扮帽子, 神器装扮脸部, 神器装扮胸部,
神器装扮集合 = (神器装扮头部, 神器装扮帽子, 神器装扮脸部, 神器装扮胸部,
神器装扮上衣, 神器装扮腰带, 神器装扮下装, 神器装扮鞋)
稀有装扮集合 = (稀有装扮头发, 稀有装扮帽子, 稀有装扮脸部, 稀有装扮胸部,
稀有装扮集合 = (稀有装扮头部, 稀有装扮帽子, 稀有装扮脸部, 稀有装扮胸部,
稀有装扮上衣, 稀有装扮腰带, 稀有装扮下装, 稀有装扮鞋)
高级装扮集合 = (高级装扮头发, 高级装扮帽子, 高级装扮脸部, 高级装扮胸部,
高级装扮集合 = (高级装扮头部, 高级装扮帽子, 高级装扮脸部, 高级装扮胸部,
高级装扮上衣, 高级装扮腰带, 高级装扮下装, 高级装扮鞋)
装扮集合 = tuple(map(lambda x: x[1](x[0]), enumerate(神器装扮集合 + 稀有装扮集合 + 高级装扮集合)))
+6
View File
@@ -15655,6 +15655,12 @@ def equ_4021(char: CharacterProperty):
char.SetSkillCD(1, 100, 0.05, [])
pass
@register
def equ_4022(char: CharacterProperty):
"""
"""
equ_4020(char)
pass
# endregion
# region 耕耘
+172
View File
@@ -0,0 +1,172 @@
from openapi.dnfhelper.public import get_main_user_info_by_id
from core.basic.equipment import get_equipment
job_mapping = {
'极诣·剑魂': 'weapon_master',
'极诣·鬼泣': 'soul_bender',
'极诣·狂战士': 'berserker',
'极诣·阿修罗': 'asura',
'极诣·剑影': 'ghostblade',
'极诣·驭剑士': 'sword_master',
'极诣·暗殿骑士': 'dark_templar',
'极诣·契魔者': 'demon_slayer',
'极诣·流浪武士': 'vegabond',
'极诣·刃影': 'spectre',
'归元·气功师(男)': 'nenmaster_male',
'归元·散打(男)': 'striker_male',
'归元·街霸(男)': 'brawler_male',
'归元·柔道家(男)': 'grappler_male',
'归元·气功师(女)': 'nenmaster_female',
'归元·散打(女)': 'striker_female',
'归元·街霸(女)': 'brawler_female',
'归元·柔道家(女)': 'grappler_female',
'重霄·漫游枪手(男)': 'ranger_male',
'重霄·枪炮师(男)': 'launcher_male',
'重霄·机械师(男)': 'mechanic_male',
'重霄·弹药专家(男)': 'spitfire_male',
'重霄·合金战士': 'assault',
'重霄·漫游枪手(女)': 'ranger_female',
'重霄·枪炮师(女)': 'launcher_female',
'重霄·机械师(女)': 'mechanic_female',
'重霄·弹药专家(女)': 'spitfire_female',
'重霄·协战师': 'paramedic',
'知源·元素爆破师': 'elemental_bomber',
'知源·冰结师': 'glacial_master',
'知源·血法师': 'blood_mage',
'知源·逐风者': 'swift_master',
'知源·次元行者': 'dimension_walker',
'知源·元素师': 'elementalist',
'知源·召唤师': 'summoner',
'知源·战斗法师': 'battle_mage',
'知源·魔道学者': 'witch',
'知源·小魔女': 'enchantress',
'光启·光明骑士(男)': 'crusader_male',
'光启·蓝拳圣使': 'infighter',
'光启·驱魔师(男)': 'exorcist',
'光启·惩戒者': 'avenger',
'光启·光明骑士(女)': 'crusader_female',
'光启·正义审判者': 'inquistor',
'光启·驱魔师(女)': 'sorceress',
'光启·除恶者': 'mistress',
'隐夜·暗星': 'rogue',
'隐夜·黑夜术士': 'necro',
'隐夜·忍者': 'kunoichi',
'隐夜·影舞者': 'shadow_dancer',
'皓曦·精灵骑士': 'elven_knight',
'皓曦·混沌魔灵': 'chaos',
'皓曦·帕拉丁': 'paladin',
'皓曦·龙骑士': 'dragon_knight',
'千魂·征战者': 'vanguard',
'千魂·决战者': 'skirmisher',
'千魂·狩猎者': 'dragoon',
'千魂·暗枪士': 'impaler',
'苍暮·暗刃': 'hitman',
'苍暮·特工': 'agent',
'苍暮·战线佣兵': 'trouble_shooter',
'苍暮·源能专家': 'specialist',
'聆风·缪斯': 'muse',
'聆风·旅人': 'traveler',
'聆风·猎人': 'hunter',
'聆风·妖护使': 'vigilante',
'聆风·奇美拉': 'chimera',
'知源·缔造者': 'creator',
'极诣·黑暗武士': 'dark_knight',
}
async def get_user_info_by_id(user_id: str, alter: str):
# 通过OCR助手获取用户信息
helper_info = await get_main_user_info_by_id(user_id)
if helper_info is None:
return None
else:
return trans_to_dcalc_set(helper_info)
pass
def trans_to_dcalc_set(detail):
job = job_mapping.get(detail.get('job', ''), '')
basic = get_equipment('0')
basicAvatars = basic.funs.get_dress_list([])
equs = detail.get('equs', [])
equips = {}
avatar = {}
for equ in equs:
info = {
'id': '0',
# 强化
'reinforce': equ.get('enhance', {}).get('reinforce', 0),
# 强化类型
'reinforceType': equ.get('enhance', {}).get('reinforceType', 0),
# 附魔
'enchant': 0,
# 徽章1
'emblem_0': 0,
# 徽章2
'emblem_1': 0,
# 贴膜
'fusion': 0,
# 锻造等级
'refine': equ.get('enhance', {}).get('refine', 0),
# 调试等级
'adaptation': 3,
# 精度
'precision': 100,
}
# 装备
dcalcEqu = next((item for item in basic.equs if item.name == equ['name']), None)
# 贴膜
if dcalcEqu:
info['id'] = dcalcEqu.id
dcalcEquFusion = next((item for item in basic.stones if item.name == equ.get('upgrade', '')), None)
if dcalcEquFusion:
info['fusion'] = dcalcEquFusion.id
info['enchant'] = getEnchatIdByName(equ.get('enchant', ''), equ.get('posName', ''), basic.enchants)
emblems = [getEmblemIdByName(i.get('detail', ''), i.get('categorize', ''), i.get('rarity', ''), basic.emblems) for i in equ.get('emblems', [])]
info['emblem_0'] = emblems[0] if len(emblems) > 0 else 0
info['emblem_1'] = emblems[1] if len(emblems) > 1 else 0
equips[equ['posName']] = info
avatars = detail.get('avatars', [])
for item in avatars:
info = {
'id': '',
'option': '',
'enchant': '',
'emblem_0': '',
'emblem_1': '',
}
list = basicAvatars.get(item.get('posName', ''), [])
if len(list) > 0:
dcalcAvatar = next((i for i in list if i.get('rarity', '') == item.get('rarity', '')), None)
if dcalcAvatar:
info['id'] = dcalcAvatar.get('id', '0')
info['option'] = item.get('attr', '')
avatar[item['posName']] = info
else:
print(avatar)
return {
'job': job,
'equips': equips,
'avatars': avatar,
}
# 处理装备
# 处理时装
pass
def getEnchatIdByName(name: str, position: str, items: list):
items = list(filter(lambda x: position in x.get('position', []), items))
for item in items:
if '|'.join(sorted(item.get('detail', '').split('|'))) == '|'.join(sorted(name.split('|'))):
return item.get('id', 0)
return 0
def getEmblemIdByName(detail: str, categorize: str, rarity: str, items: list):
print()
if categorize == '白金':
return detail
for item in items:
if item.get('detail', '') == detail and categorize in item.get('categorize', []) and item.get('rarity', '') == rarity:
return item.get('id', 0)
return 0
Binary file not shown.