mirror of
https://github.com/baiqwerdvd/ArknightsUID.git
synced 2025-05-04 11:07:35 +08:00
ruff format
This commit is contained in:
parent
16cb44591c
commit
7653a3b705
@ -53,9 +53,7 @@ async def get_ap_img(bot_id: str, user_id: str):
|
||||
return '请先绑定一个可用CRED & UID再来查询哦~'
|
||||
# 开始绘图任务
|
||||
task = []
|
||||
img = Image.new(
|
||||
'RGBA', (based_w * len(useable_uid_list), based_h), (0, 0, 0, 0)
|
||||
)
|
||||
img = Image.new('RGBA', (based_w * len(useable_uid_list), based_h), (0, 0, 0, 0))
|
||||
for uid_index, uid in enumerate(useable_uid_list):
|
||||
task.append(_draw_all_ap_img(img, uid, uid_index))
|
||||
await asyncio.gather(*task)
|
||||
@ -514,7 +512,6 @@ async def draw_ap_img(uid: str) -> Image.Image:
|
||||
)
|
||||
img.paste(blue_bar_bg1_img, (-20, 1570), blue_bar_bg1_img)
|
||||
|
||||
|
||||
img_draw = ImageDraw.Draw(img)
|
||||
img_draw.text(
|
||||
(425, 1710),
|
||||
|
@ -1,4 +1,5 @@
|
||||
from typing import Dict
|
||||
|
||||
from gsuid_core.gss import gss
|
||||
from gsuid_core.logger import logger
|
||||
|
||||
@ -52,7 +53,8 @@ async def all_check(
|
||||
if arkconfig.get_config('CrazyNotice').data:
|
||||
if not await check(mode, raw_data, push_data[f'{mode}_value']):
|
||||
await ArknightsPush.update_push_data(
|
||||
uid, {f'{mode}_is_push': False}
|
||||
uid,
|
||||
{f'{mode}_is_push': False},
|
||||
)
|
||||
continue
|
||||
# 准备推送
|
||||
|
@ -9,7 +9,7 @@ from gsuid_core.utils.error_reply import UID_HINT
|
||||
from ..utils.database.models import ArknightsBind
|
||||
from .set_config import set_config_func, set_push_value
|
||||
|
||||
sv_self_config = SV("ark配置")
|
||||
sv_self_config = SV('ark配置')
|
||||
|
||||
|
||||
# @sv_self_config.on_fullmatch(("ark配置", "方舟配置"))
|
||||
@ -19,46 +19,46 @@ sv_self_config = SV("ark配置")
|
||||
# await bot.send(im)
|
||||
|
||||
|
||||
@sv_self_config.on_prefix(("ark设置")) # noqa: UP034
|
||||
@sv_self_config.on_prefix(('ark设置')) # noqa: UP034
|
||||
async def send_config_ev(bot: Bot, ev: Event):
|
||||
logger.info("开始执行[设置阈值信息]")
|
||||
logger.info('开始执行[设置阈值信息]')
|
||||
|
||||
uid = await ArknightsBind.get_uid_by_game(ev.user_id, bot.bot_id)
|
||||
if uid is None:
|
||||
return await bot.send(UID_HINT)
|
||||
|
||||
func = "".join(re.findall("[\u4e00-\u9fa5]", ev.text.replace("阈值", "")))
|
||||
value = re.findall(r"\d+", ev.text)
|
||||
func = ''.join(re.findall('[\u4e00-\u9fa5]', ev.text.replace('阈值', '')))
|
||||
value = re.findall(r'\d+', ev.text)
|
||||
value = value[0] if value else None
|
||||
|
||||
if value is None:
|
||||
return await bot.send("请输入正确的阈值数字...")
|
||||
return await bot.send('请输入正确的阈值数字...')
|
||||
|
||||
logger.info(f"[设置阈值信息]func: {func}, value: {value}")
|
||||
logger.info(f'[设置阈值信息]func: {func}, value: {value}')
|
||||
im = await set_push_value(ev.bot_id, func, uid, int(value))
|
||||
await bot.send(im)
|
||||
|
||||
|
||||
# 开启 自动签到 功能
|
||||
@sv_self_config.on_prefix(("ark开启", "ark关闭"))
|
||||
@sv_self_config.on_prefix(('ark开启', 'ark关闭'))
|
||||
async def open_switch_func(bot: Bot, ev: Event):
|
||||
user_id = ev.user_id
|
||||
config_name = ev.text
|
||||
|
||||
logger.info(f"[{user_id}]尝试[{ev.command[2:]}]了[{ev.text}]功能")
|
||||
logger.info(f'[{user_id}]尝试[{ev.command[2:]}]了[{ev.text}]功能')
|
||||
|
||||
if ev.command == "ark开启":
|
||||
if ev.command == 'ark开启':
|
||||
query = True
|
||||
gid = ev.group_id if ev.group_id else "on"
|
||||
gid = ev.group_id if ev.group_id else 'on'
|
||||
else:
|
||||
query = False
|
||||
gid = "off"
|
||||
gid = 'off'
|
||||
|
||||
is_admin = ev.user_pm <= 2
|
||||
if ev.at and is_admin:
|
||||
user_id = ev.at
|
||||
elif ev.at:
|
||||
return await bot.send("你没有权限...")
|
||||
return await bot.send('你没有权限...')
|
||||
|
||||
uid = await ArknightsBind.get_uid_by_game(ev.user_id, bot.bot_id)
|
||||
if uid is None:
|
||||
|
@ -7,12 +7,13 @@ from .ark_config import arkconfig
|
||||
from .config_default import CONIFG_DEFAULT
|
||||
|
||||
PUSH_MAP = {
|
||||
"理智": "ap",
|
||||
"训练室": "train",
|
||||
'理智': 'ap',
|
||||
'训练室': 'train',
|
||||
'版本更新': 'version',
|
||||
}
|
||||
PRIV_MAP = {
|
||||
"自动签到": "sign",
|
||||
"推送": "push",
|
||||
'自动签到': 'sign',
|
||||
'推送': 'push',
|
||||
}
|
||||
|
||||
|
||||
@ -20,20 +21,20 @@ async def set_push_value(bot_id: str, func: str, uid: str, value: int):
|
||||
if func in PUSH_MAP:
|
||||
status = PUSH_MAP[func]
|
||||
else:
|
||||
return "该配置项不存在!"
|
||||
logger.info(f"[设置推送阈值]func: {status}, value: {value}")
|
||||
if await ArknightsPush.update_push_data(uid, {f"{status}_value": value}):
|
||||
return f"设置成功!\n当前{func}推送阈值:{value}"
|
||||
return '该配置项不存在!'
|
||||
logger.info(f'[设置推送阈值]func: {status}, value: {value}')
|
||||
if await ArknightsPush.update_push_data(uid, {f'{status}_value': value}):
|
||||
return f'设置成功!\n当前{func}推送阈值:{value}'
|
||||
else:
|
||||
return "设置失败!\n请检查参数是否正确!"
|
||||
return '设置失败!\n请检查参数是否正确!'
|
||||
|
||||
|
||||
async def set_config_func(
|
||||
bot_id: str,
|
||||
config_name: str = "",
|
||||
uid: str = "0",
|
||||
user_id: str = "",
|
||||
option: str = "0",
|
||||
config_name: str = '',
|
||||
uid: str = '0',
|
||||
user_id: str = '',
|
||||
option: str = '0',
|
||||
query: Optional[bool] = None,
|
||||
is_admin: bool = False,
|
||||
):
|
||||
@ -45,17 +46,17 @@ async def set_config_func(
|
||||
break
|
||||
else:
|
||||
logger.info(
|
||||
f"uid: {uid}, option: {option}, config_name: {config_name}"
|
||||
f'uid: {uid}, option: {option}, config_name: {config_name}',
|
||||
)
|
||||
if config_name in PRIV_MAP:
|
||||
# 执行设置
|
||||
await ArknightsUser.update_user_data(
|
||||
uid,
|
||||
{
|
||||
f"{PRIV_MAP[config_name]}_switch": option,
|
||||
f'{PRIV_MAP[config_name]}_switch': option,
|
||||
},
|
||||
)
|
||||
elif config_name.replace("推送", "") in PUSH_MAP:
|
||||
elif config_name.replace('推送', '') in PUSH_MAP:
|
||||
await ArknightsPush.update_push_data(
|
||||
uid,
|
||||
{
|
||||
@ -63,24 +64,24 @@ async def set_config_func(
|
||||
},
|
||||
)
|
||||
else:
|
||||
return "该配置项不存在!"
|
||||
return '该配置项不存在!'
|
||||
|
||||
if option == "on":
|
||||
succeed_msg = "开启至私聊消息!"
|
||||
elif option == "off":
|
||||
succeed_msg = "关闭!"
|
||||
if option == 'on':
|
||||
succeed_msg = '开启至私聊消息!'
|
||||
elif option == 'off':
|
||||
succeed_msg = '关闭!'
|
||||
else:
|
||||
succeed_msg = f"开启至群{option}"
|
||||
return f"{config_name}已{succeed_msg}"
|
||||
succeed_msg = f'开启至群{option}'
|
||||
return f'{config_name}已{succeed_msg}'
|
||||
|
||||
if is_admin:
|
||||
logger.info(f"config_name:{config_name},query:{query}")
|
||||
logger.info(f'config_name:{config_name},query:{query}')
|
||||
# 执行设置
|
||||
if query is not None:
|
||||
arkconfig.set_config(name, query)
|
||||
im = "成功设置{}为{}。".format(config_name, "开" if query else "关")
|
||||
im = '成功设置{}为{}。'.format(config_name, '开' if query else '关')
|
||||
else:
|
||||
im = "未传入参数query!"
|
||||
im = '未传入参数query!'
|
||||
else:
|
||||
im = "只有管理员才能设置群服务。"
|
||||
im = '只有管理员才能设置群服务。'
|
||||
return im
|
||||
|
@ -18,7 +18,8 @@ async def get_help_data() -> Union[Dict[str, PluginHelp], None]:
|
||||
if HELP_DATA.exists():
|
||||
async with aiofiles.open(HELP_DATA, 'rb') as file:
|
||||
return msgjson.decode(
|
||||
await file.read(), type=Dict[str, PluginHelp],
|
||||
await file.read(),
|
||||
type=Dict[str, PluginHelp],
|
||||
)
|
||||
|
||||
|
||||
@ -37,7 +38,8 @@ async def get_core_help() -> Union[bytes, str]:
|
||||
Image.open(TEXT_PATH / 'banner.png'),
|
||||
Image.open(TEXT_PATH / 'button.png'),
|
||||
source_han_sans_cn_origin,
|
||||
extra_message = [f'Client Version:{Arknights_Client_version} '
|
||||
f' Res version: {Arknights_Res_version}'],
|
||||
extra_message=[
|
||||
f'Client Version:{Arknights_Client_version} ' f' Res version: {Arknights_Res_version}'
|
||||
],
|
||||
)
|
||||
return img
|
||||
|
137
ArknightsUID/arknightsuid_mind/__init__.py
Normal file
137
ArknightsUID/arknightsuid_mind/__init__.py
Normal file
@ -0,0 +1,137 @@
|
||||
# import asyncio
|
||||
# import json
|
||||
# from typing import Dict
|
||||
|
||||
# import aiohttp
|
||||
# from gsuid_core.aps import scheduler
|
||||
# from gsuid_core.bot import Bot
|
||||
# from gsuid_core.gss import gss
|
||||
# from gsuid_core.logger import logger
|
||||
# from gsuid_core.models import Event
|
||||
# from gsuid_core.segment import MessageSegment
|
||||
# from gsuid_core.sv import SV
|
||||
# from msgspec import Struct, convert
|
||||
|
||||
# from ..utils.ark_prefix import PREFIX
|
||||
# from ..utils.database.models import (
|
||||
# ArknightsPush,
|
||||
# ArknightsUser,
|
||||
# )
|
||||
# from ..version import Arknights_Client_version, Arknights_Res_version
|
||||
|
||||
# sv_get_version = SV('ark查询版本')
|
||||
# sv_get_version_admin = SV('ark推送版本更新', pm=1)
|
||||
|
||||
|
||||
# @sv_get_version_admin.on_fullmatch((f'{PREFIX}开启推送版本更新')) # noqa: UP034
|
||||
# async def force_version_job(bot: Bot, ev: Event):
|
||||
# await bot.logger.info('开始执行[ark推送版本更新]')
|
||||
# await ark_version_job()
|
||||
|
||||
|
||||
# class ArkVersion(Struct):
|
||||
# clientVersion: str
|
||||
# resVersion: str
|
||||
|
||||
|
||||
# async def get_notice_list(im: list[str]) -> Dict[str, Dict[str, Dict]]:
|
||||
# msg_dict: Dict[str, Dict[str, Dict]] = {}
|
||||
# for _bot_id in gss.active_bot:
|
||||
# user_list = await ArknightsUser.get_all_push_user_list()
|
||||
# print(user_list)
|
||||
# for user in user_list:
|
||||
# if user.uid is not None:
|
||||
# push_data = await ArknightsPush.select_push_data(user.uid)
|
||||
# print(push_data)
|
||||
# if push_data is None:
|
||||
# continue
|
||||
|
||||
# if push_data.version_push is False:
|
||||
# pass
|
||||
# else:
|
||||
# if user.bot_id not in msg_dict:
|
||||
# msg_dict[user.bot_id] = {'direct': {}, 'group': {}}
|
||||
# if push_data.version_push:
|
||||
# # 添加私聊信息
|
||||
# if user.user_id not in msg_dict[user.bot_id]['direct']:
|
||||
# msg_dict[user.bot_id]['direct'][user.user_id] = im
|
||||
# else:
|
||||
# msg_dict[user.bot_id]['direct'][user.user_id] += im
|
||||
# await ArknightsPush.update_push_data(
|
||||
# user.uid, {'version_is_push': True}
|
||||
# )
|
||||
# # 群号推送到群聊
|
||||
# else:
|
||||
# # 初始化
|
||||
# gid = push_data.version_push
|
||||
# if gid not in msg_dict[user.bot_id]['group']:
|
||||
# msg_dict[user.bot_id]['group'][gid] = {}
|
||||
|
||||
# if (
|
||||
# user.user_id
|
||||
# not in msg_dict[user.bot_id]['group'][gid]
|
||||
# ):
|
||||
# msg_dict[user.bot_id]['group'][gid][
|
||||
# user.user_id
|
||||
# ] = im
|
||||
# else:
|
||||
# msg_dict[user.bot_id]['group'][gid][
|
||||
# user.user_id
|
||||
# ] += im
|
||||
# await ArknightsPush.update_push_data(
|
||||
# user.uid, {'version_is_push': True}
|
||||
# )
|
||||
# return msg_dict
|
||||
|
||||
|
||||
# async def get_resVersion():
|
||||
# async with aiohttp.ClientSession() as session:
|
||||
# async with session.get(
|
||||
# "https://ak-conf.hypergryph.com/config/prod/official/Android/version"
|
||||
# ) as response:
|
||||
# version = convert(json.loads(await response.text()), ArkVersion)
|
||||
# if (
|
||||
# version.clientVersion != Arknights_Client_version
|
||||
# and version.resVersion != Arknights_Res_version
|
||||
# ):
|
||||
# im = []
|
||||
# im.append(MessageSegment.text("检测到明日方舟版本更新!"))
|
||||
# im.append(
|
||||
# MessageSegment.text(f"客户端版本号:{version.clientVersion}")
|
||||
# )
|
||||
# im.append(MessageSegment.text(f"资源版本号:{version.resVersion}"))
|
||||
# return im
|
||||
# logger.info("Version no update")
|
||||
|
||||
|
||||
# @scheduler.scheduled_job('interval', seconds=3)
|
||||
# async def ark_version_job():
|
||||
# im = await get_resVersion()
|
||||
# im = ['test']
|
||||
# if im is not None:
|
||||
# result = await get_notice_list(im)
|
||||
# logger.info('[ark更新检查]完成!等待消息推送中...')
|
||||
# logger.debug(result)
|
||||
|
||||
# # 执行私聊推送
|
||||
# for bot_id in result:
|
||||
# for BOT_ID in gss.active_bot:
|
||||
# bot = gss.active_bot[BOT_ID]
|
||||
# for user_id in result[bot_id]['direct']:
|
||||
# msg = result[bot_id]['direct'][user_id]
|
||||
# await bot.target_send(
|
||||
# msg, 'direct', user_id, bot_id, '', ''
|
||||
# )
|
||||
# await asyncio.sleep(0.5)
|
||||
# logger.info('[ark更新检查] 私聊推送完成')
|
||||
# for gid in result[bot_id]['group']:
|
||||
# msg_list = []
|
||||
# for user_id in result[bot_id]['group'][gid]:
|
||||
# msg_list.append(MessageSegment.at(user_id))
|
||||
# msg = result[bot_id]['group'][gid][user_id]
|
||||
# msg_list.append(MessageSegment.text(msg))
|
||||
# await bot.target_send(
|
||||
# msg_list, 'group', gid, bot_id, '', ''
|
||||
# )
|
||||
# await asyncio.sleep(0.5)
|
||||
# logger.info('[ark更新检查] 群聊推送完成')
|
@ -13,27 +13,25 @@ from gsuid_core.sv import SV
|
||||
from .constants import Excel
|
||||
from .memoryStore import store
|
||||
|
||||
sv_download_config = SV("下载资源", pm=2)
|
||||
sv_download_config = SV('下载资源', pm=2)
|
||||
|
||||
|
||||
@sv_download_config.on_fullmatch(("ark下载全部资源")) # noqa: UP034
|
||||
@sv_download_config.on_fullmatch(('ark下载全部资源')) # noqa: UP034
|
||||
async def send_download_resource_msg(bot: Bot, ev: Event):
|
||||
await bot.send("正在开始下载~可能需要较久的时间!")
|
||||
await bot.send('正在开始下载~可能需要较久的时间!')
|
||||
im = await download_all_resource()
|
||||
await bot.send(im)
|
||||
|
||||
|
||||
async def startup():
|
||||
logger.info("[资源文件下载] 正在检查与下载缺失的资源文件, 可能需要较长时间, 请稍等")
|
||||
logger.info('[资源文件下载] 正在检查与下载缺失的资源文件, 可能需要较长时间, 请稍等')
|
||||
await download_all_resource()
|
||||
logger.info("[资源文件下载] 检查完毕, 正在加载 gamedata")
|
||||
logger.info('[资源文件下载] 检查完毕, 正在加载 gamedata')
|
||||
|
||||
TASK = []
|
||||
for file_path in Path(
|
||||
get_res_path(["ArknightsUID", "resource", "gamedata"])
|
||||
).glob("*.json"):
|
||||
for file_path in Path(get_res_path(['ArknightsUID', 'resource', 'gamedata'])).glob('*.json'):
|
||||
TASK.append(store.get_file(file_path))
|
||||
asyncio.gather(*TASK)
|
||||
|
||||
await Excel.preload_table()
|
||||
logger.info("[资源文件下载] gamedata 加载完毕")
|
||||
logger.info('[资源文件下载] gamedata 加载完毕')
|
||||
|
@ -103,18 +103,14 @@ class ExcelTableManager:
|
||||
zone_table_: ZoneTable
|
||||
|
||||
async def activity_table(self) -> None:
|
||||
self.activity_table_ = ActivityTable.convert(
|
||||
await store.get_excel("activity_table")
|
||||
)
|
||||
self.activity_table_ = ActivityTable.convert(await store.get_excel('activity_table'))
|
||||
|
||||
@property
|
||||
def ACTIVITY_TABLE(self) -> ActivityTable:
|
||||
return self.activity_table_
|
||||
|
||||
async def audio_data(self) -> None:
|
||||
self.audio_data_ = AudioData.convert(
|
||||
await store.get_excel("audio_data")
|
||||
)
|
||||
self.audio_data_ = AudioData.convert(await store.get_excel('audio_data'))
|
||||
|
||||
@property
|
||||
def AUDIO_DATA(self) -> AudioData:
|
||||
@ -122,7 +118,7 @@ class ExcelTableManager:
|
||||
|
||||
async def battle_equip_table(self) -> None:
|
||||
self.battle_equip_table_ = BattleEquipTable.convert(
|
||||
{"equips": await store.get_excel("battle_equip_table")}
|
||||
{'equips': await store.get_excel('battle_equip_table')}
|
||||
)
|
||||
|
||||
@property
|
||||
@ -130,124 +126,98 @@ class ExcelTableManager:
|
||||
return self.battle_equip_table_
|
||||
|
||||
async def building_data(self) -> None:
|
||||
self.building_data_ = BuildingData.convert(
|
||||
await store.get_excel("building_data")
|
||||
)
|
||||
self.building_data_ = BuildingData.convert(await store.get_excel('building_data'))
|
||||
|
||||
@property
|
||||
def BUILDING_DATA(self) -> BuildingData:
|
||||
return self.building_data_
|
||||
|
||||
async def campaign_table(self) -> None:
|
||||
self.campaign_table_ = CampaignTable.convert(
|
||||
await store.get_excel("campaign_table")
|
||||
)
|
||||
self.campaign_table_ = CampaignTable.convert(await store.get_excel('campaign_table'))
|
||||
|
||||
@property
|
||||
def CAMPAIGN_TABLE(self) -> CampaignTable:
|
||||
return self.campaign_table_
|
||||
|
||||
async def chapter_table(self) -> None:
|
||||
self.chapter_table_ = ChapterTable.convert(
|
||||
{"chapters": await store.get_excel("chapter_table")}
|
||||
)
|
||||
self.chapter_table_ = ChapterTable.convert({'chapters': await store.get_excel('chapter_table')})
|
||||
|
||||
@property
|
||||
def CHAPTER_TABLE(self) -> ChapterTable:
|
||||
return self.chapter_table_
|
||||
|
||||
async def character_table(self) -> None:
|
||||
self.character_table_ = CharacterTable.convert(
|
||||
{"chars": await store.get_excel("character_table")}
|
||||
)
|
||||
self.character_table_ = CharacterTable.convert({'chars': await store.get_excel('character_table')})
|
||||
|
||||
@property
|
||||
def CHARATER_TABLE(self) -> CharacterTable:
|
||||
return self.character_table_
|
||||
|
||||
async def char_meta_table(self) -> None:
|
||||
self.char_meta_table_ = CharMetaTable.convert(
|
||||
await store.get_excel("char_meta_table")
|
||||
)
|
||||
self.char_meta_table_ = CharMetaTable.convert(await store.get_excel('char_meta_table'))
|
||||
|
||||
@property
|
||||
def CHAR_META_TABLE(self) -> CharMetaTable:
|
||||
return self.char_meta_table_
|
||||
|
||||
async def charm_table(self) -> None:
|
||||
self.charm_table_ = CharmTable.convert(
|
||||
await store.get_excel("charm_table")
|
||||
)
|
||||
self.charm_table_ = CharmTable.convert(await store.get_excel('charm_table'))
|
||||
|
||||
@property
|
||||
def CHARM_TABLE(self) -> CharmTable:
|
||||
return self.charm_table_
|
||||
|
||||
async def char_patch_table(self) -> None:
|
||||
self.char_patch_table_ = CharPatchTable.convert(
|
||||
await store.get_excel("char_patch_table")
|
||||
)
|
||||
self.char_patch_table_ = CharPatchTable.convert(await store.get_excel('char_patch_table'))
|
||||
|
||||
@property
|
||||
def CHAR_PATH_TABLE(self) -> CharPatchTable:
|
||||
return self.char_patch_table_
|
||||
|
||||
async def charword_table(self) -> None:
|
||||
self.charword_table_ = CharwordTable.convert(
|
||||
await store.get_excel("charword_table")
|
||||
)
|
||||
self.charword_table_ = CharwordTable.convert(await store.get_excel('charword_table'))
|
||||
|
||||
@property
|
||||
def CHARWORD_TABLE(self) -> CharwordTable:
|
||||
return self.charword_table_
|
||||
|
||||
async def checkin_table(self) -> None:
|
||||
self.checkin_table_ = CheckinTable.convert(
|
||||
await store.get_excel("checkin_table")
|
||||
)
|
||||
self.checkin_table_ = CheckinTable.convert(await store.get_excel('checkin_table'))
|
||||
|
||||
@property
|
||||
def CHECKIN_TABLE(self) -> CheckinTable:
|
||||
return self.checkin_table_
|
||||
|
||||
async def climb_tower_table(self) -> None:
|
||||
self.climb_tower_table_ = ClimbTowerTable.convert(
|
||||
await store.get_excel("climb_tower_table")
|
||||
)
|
||||
self.climb_tower_table_ = ClimbTowerTable.convert(await store.get_excel('climb_tower_table'))
|
||||
|
||||
@property
|
||||
def CLIMB_TOWER_TABLE(self) -> ClimbTowerTable:
|
||||
return self.climb_tower_table_
|
||||
|
||||
async def clue_data(self) -> None:
|
||||
self.clue_data_ = ClueData.convert(await store.get_excel("clue_data"))
|
||||
self.clue_data_ = ClueData.convert(await store.get_excel('clue_data'))
|
||||
|
||||
@property
|
||||
def CLUE_DATA(self) -> ClueData:
|
||||
return self.clue_data_
|
||||
|
||||
async def crisis_table(self) -> None:
|
||||
self.crisis_table_ = CrisisTable.convert(
|
||||
await store.get_excel("crisis_table")
|
||||
)
|
||||
self.crisis_table_ = CrisisTable.convert(await store.get_excel('crisis_table'))
|
||||
|
||||
@property
|
||||
def CRISIS_TABLE(self) -> CrisisTable:
|
||||
return self.crisis_table_
|
||||
|
||||
async def crisis_v2_table(self) -> None:
|
||||
self.crisis_v2_table_ = CrisisV2Table.convert(
|
||||
await store.get_excel("crisis_v2_table")
|
||||
)
|
||||
self.crisis_v2_table_ = CrisisV2Table.convert(await store.get_excel('crisis_v2_table'))
|
||||
|
||||
@property
|
||||
def CRISIS_V2_TABLE(self) -> CrisisV2Table:
|
||||
return self.crisis_v2_table_
|
||||
|
||||
async def display_meta_table(self) -> None:
|
||||
self.display_meta_table_ = DisplayMetaTable.convert(
|
||||
await store.get_excel("display_meta_table")
|
||||
)
|
||||
self.display_meta_table_ = DisplayMetaTable.convert(await store.get_excel('display_meta_table'))
|
||||
|
||||
@property
|
||||
def DISPLAY_META_TABLE(self) -> DisplayMetaTable:
|
||||
@ -255,7 +225,7 @@ class ExcelTableManager:
|
||||
|
||||
async def enemy_handbook_table(self) -> None:
|
||||
self.enemy_handbook_table_ = EnemyHandbookTable.convert(
|
||||
await store.get_excel("enemy_handbook_table")
|
||||
await store.get_excel('enemy_handbook_table')
|
||||
)
|
||||
|
||||
@property
|
||||
@ -263,45 +233,35 @@ class ExcelTableManager:
|
||||
return self.enemy_handbook_table_
|
||||
|
||||
async def favor_table(self) -> None:
|
||||
self.favor_table_ = FavorTable.convert(
|
||||
await store.get_excel("favor_table")
|
||||
)
|
||||
self.favor_table_ = FavorTable.convert(await store.get_excel('favor_table'))
|
||||
|
||||
@property
|
||||
def FAVOR_TABLE(self) -> FavorTable:
|
||||
return self.favor_table_
|
||||
|
||||
async def gacha_table(self) -> None:
|
||||
self.gacha_table_ = GachaTable.convert(
|
||||
await store.get_excel("gacha_table")
|
||||
)
|
||||
self.gacha_table_ = GachaTable.convert(await store.get_excel('gacha_table'))
|
||||
|
||||
@property
|
||||
def GACHA_TABLE(self) -> GachaTable:
|
||||
return self.gacha_table_
|
||||
|
||||
async def gamedata_const(self) -> None:
|
||||
self.gamedata_const_ = GamedataConst.convert(
|
||||
await store.get_excel("gamedata_const")
|
||||
)
|
||||
self.gamedata_const_ = GamedataConst.convert(await store.get_excel('gamedata_const'))
|
||||
|
||||
@property
|
||||
def GAMEDATA_CONST(self) -> GamedataConst:
|
||||
return self.gamedata_const_
|
||||
|
||||
async def handbook_info_table(self) -> None:
|
||||
self.handbook_info_table_ = HandbookInfoTable.convert(
|
||||
await store.get_excel("handbook_info_table")
|
||||
)
|
||||
self.handbook_info_table_ = HandbookInfoTable.convert(await store.get_excel('handbook_info_table'))
|
||||
|
||||
@property
|
||||
def HANDBOOK_INFO_TABLE(self) -> HandbookInfoTable:
|
||||
return self.handbook_info_table_
|
||||
|
||||
async def handbook_table(self) -> None:
|
||||
self.handbook_table_ = HandbookTable.convert(
|
||||
await store.get_excel("handbook_table")
|
||||
)
|
||||
self.handbook_table_ = HandbookTable.convert(await store.get_excel('handbook_table'))
|
||||
|
||||
@property
|
||||
def HANDBOOK_TABLE(self) -> HandbookTable:
|
||||
@ -309,7 +269,7 @@ class ExcelTableManager:
|
||||
|
||||
async def handbook_team_table(self) -> None:
|
||||
self.handbook_team_table_ = HandbookTeamTable.convert(
|
||||
{"team": await store.get_excel("handbook_team_table")}
|
||||
{'team': await store.get_excel('handbook_team_table')}
|
||||
)
|
||||
|
||||
@property
|
||||
@ -317,54 +277,42 @@ class ExcelTableManager:
|
||||
return self.handbook_team_table_
|
||||
|
||||
async def item_table(self) -> None:
|
||||
self.item_table_ = ItemTable.convert(
|
||||
await store.get_excel("item_table")
|
||||
)
|
||||
self.item_table_ = ItemTable.convert(await store.get_excel('item_table'))
|
||||
|
||||
@property
|
||||
def ITEM_TABLE(self) -> ItemTable:
|
||||
return self.item_table_
|
||||
|
||||
async def medal_table(self) -> None:
|
||||
self.medal_table_ = MedalTable.convert(
|
||||
await store.get_excel("medal_table")
|
||||
)
|
||||
self.medal_table_ = MedalTable.convert(await store.get_excel('medal_table'))
|
||||
|
||||
@property
|
||||
def MEDAL_TABLE(self) -> MedalTable:
|
||||
return self.medal_table_
|
||||
|
||||
async def mission_table(self) -> None:
|
||||
self.mission_table_ = MissionTable.convert(
|
||||
await store.get_excel("mission_table")
|
||||
)
|
||||
self.mission_table_ = MissionTable.convert(await store.get_excel('mission_table'))
|
||||
|
||||
@property
|
||||
def MISSION_TABLE(self) -> MissionTable:
|
||||
return self.mission_table_
|
||||
|
||||
async def open_server_table(self) -> None:
|
||||
self.open_server_table_ = OpenServerTable.convert(
|
||||
await store.get_excel("open_server_table")
|
||||
)
|
||||
self.open_server_table_ = OpenServerTable.convert(await store.get_excel('open_server_table'))
|
||||
|
||||
@property
|
||||
def OPEN_SERVER_TABLE(self) -> OpenServerTable:
|
||||
return self.open_server_table_
|
||||
|
||||
async def player_avatar_table(self) -> None:
|
||||
self.player_avatar_table_ = PlayerAvatarTable.convert(
|
||||
await store.get_excel("player_avatar_table")
|
||||
)
|
||||
self.player_avatar_table_ = PlayerAvatarTable.convert(await store.get_excel('player_avatar_table'))
|
||||
|
||||
@property
|
||||
def PLAYER_AVATAR_TABLE(self) -> PlayerAvatarTable:
|
||||
return self.player_avatar_table_
|
||||
|
||||
async def range_table(self) -> None:
|
||||
self.range_table_ = RangeTable.convert(
|
||||
{"range_": await store.get_excel("range_table")}
|
||||
)
|
||||
self.range_table_ = RangeTable.convert({'range_': await store.get_excel('range_table')})
|
||||
|
||||
@property
|
||||
def RANGE_TABLE(self) -> RangeTable:
|
||||
@ -372,7 +320,7 @@ class ExcelTableManager:
|
||||
|
||||
async def replicate_table(self) -> None:
|
||||
self.replicate_table_ = ReplicateTable.convert(
|
||||
{"replicate": await store.get_excel("replicate_table")}
|
||||
{'replicate': await store.get_excel('replicate_table')}
|
||||
)
|
||||
|
||||
@property
|
||||
@ -380,18 +328,14 @@ class ExcelTableManager:
|
||||
return self.replicate_table_
|
||||
|
||||
async def retro_table(self) -> None:
|
||||
self.retro_table_ = RetroTable.convert(
|
||||
await store.get_excel("retro_table")
|
||||
)
|
||||
self.retro_table_ = RetroTable.convert(await store.get_excel('retro_table'))
|
||||
|
||||
@property
|
||||
def RETRO_TABLE(self) -> RetroTable:
|
||||
return self.retro_table_
|
||||
|
||||
async def roguelike_table(self) -> None:
|
||||
self.roguelike_table_ = RoguelikeTable.convert(
|
||||
await store.get_excel("roguelike_table")
|
||||
)
|
||||
self.roguelike_table_ = RoguelikeTable.convert(await store.get_excel('roguelike_table'))
|
||||
|
||||
@property
|
||||
def ROGUELIKE_TABLE(self) -> RoguelikeTable:
|
||||
@ -399,7 +343,7 @@ class ExcelTableManager:
|
||||
|
||||
async def roguelike_topic_table(self) -> None:
|
||||
self.roguelike_topic_table_ = RoguelikeTopicTable.convert(
|
||||
await store.get_excel("roguelike_topic_table")
|
||||
await store.get_excel('roguelike_topic_table')
|
||||
)
|
||||
|
||||
@property
|
||||
@ -407,45 +351,35 @@ class ExcelTableManager:
|
||||
return self.roguelike_topic_table_
|
||||
|
||||
async def sandbox_table(self) -> None:
|
||||
self.sandbox_table_ = SandboxTable.convert(
|
||||
await store.get_excel("sandbox_table")
|
||||
)
|
||||
self.sandbox_table_ = SandboxTable.convert(await store.get_excel('sandbox_table'))
|
||||
|
||||
@property
|
||||
def SANDBOX_TABLE(self) -> SandboxTable:
|
||||
return self.sandbox_table_
|
||||
|
||||
async def shop_client_table(self) -> None:
|
||||
self.shop_client_table_ = ShopClientTable.convert(
|
||||
await store.get_excel("shop_client_table")
|
||||
)
|
||||
self.shop_client_table_ = ShopClientTable.convert(await store.get_excel('shop_client_table'))
|
||||
|
||||
@property
|
||||
def SHOP_CLIENT_TABLE(self) -> ShopClientTable:
|
||||
return self.shop_client_table_
|
||||
|
||||
async def skill_table(self) -> None:
|
||||
self.skill_table_ = SkillTable.convert(
|
||||
{"skills": await store.get_excel("skill_table")}
|
||||
)
|
||||
self.skill_table_ = SkillTable.convert({'skills': await store.get_excel('skill_table')})
|
||||
|
||||
@property
|
||||
def SKILL_TABLE(self) -> SkillTable:
|
||||
return self.skill_table_
|
||||
|
||||
async def skin_table(self) -> None:
|
||||
self.skin_table_ = SkinTable.convert(
|
||||
await store.get_excel("skin_table")
|
||||
)
|
||||
self.skin_table_ = SkinTable.convert(await store.get_excel('skin_table'))
|
||||
|
||||
@property
|
||||
def SKIN_TABLE(self) -> SkinTable:
|
||||
return self.skin_table_
|
||||
|
||||
async def stage_table(self) -> None:
|
||||
self.stage_table_ = StageTable.convert(
|
||||
await store.get_excel("stage_table")
|
||||
)
|
||||
self.stage_table_ = StageTable.convert(await store.get_excel('stage_table'))
|
||||
|
||||
@property
|
||||
def STAGE_TABLE(self) -> StageTable:
|
||||
@ -453,7 +387,7 @@ class ExcelTableManager:
|
||||
|
||||
async def story_review_meta_table(self) -> None:
|
||||
self.story_review_meta_table_ = StoryReviewMetaTable.convert(
|
||||
await store.get_excel("story_review_meta_table")
|
||||
await store.get_excel('story_review_meta_table')
|
||||
)
|
||||
|
||||
@property
|
||||
@ -462,7 +396,7 @@ class ExcelTableManager:
|
||||
|
||||
async def story_review_table(self) -> None:
|
||||
self.story_review_table_ = StoryReviewTable.convert(
|
||||
{"storyreviewtable": await store.get_excel("story_review_table")}
|
||||
{'storyreviewtable': await store.get_excel('story_review_table')}
|
||||
)
|
||||
|
||||
@property
|
||||
@ -470,61 +404,49 @@ class ExcelTableManager:
|
||||
return self.story_review_table_
|
||||
|
||||
async def story_table(self) -> None:
|
||||
self.story_table_ = StoryTable.convert(
|
||||
{"stories": await store.get_excel("story_table")}
|
||||
)
|
||||
self.story_table_ = StoryTable.convert({'stories': await store.get_excel('story_table')})
|
||||
|
||||
@property
|
||||
def STORY_TABLE(self) -> StoryTable:
|
||||
return self.story_table_
|
||||
|
||||
async def tech_buff_table(self) -> None:
|
||||
self.tech_buff_table_ = TechBuffTable.convert(
|
||||
await store.get_excel("tech_buff_table")
|
||||
)
|
||||
self.tech_buff_table_ = TechBuffTable.convert(await store.get_excel('tech_buff_table'))
|
||||
|
||||
@property
|
||||
def TECH_BUFF_TABLE(self) -> TechBuffTable:
|
||||
return self.tech_buff_table_
|
||||
|
||||
async def tip_table(self) -> None:
|
||||
self.tip_table_ = TipTable.convert(await store.get_excel("tip_table"))
|
||||
self.tip_table_ = TipTable.convert(await store.get_excel('tip_table'))
|
||||
|
||||
@property
|
||||
def TIP_TABLE(self) -> TipTable:
|
||||
return self.tip_table_
|
||||
|
||||
async def token_table(self) -> None:
|
||||
self.token_table_ = TokenTable.convert(
|
||||
{"tokens": await store.get_excel("token_table")}
|
||||
)
|
||||
self.token_table_ = TokenTable.convert({'tokens': await store.get_excel('token_table')})
|
||||
|
||||
@property
|
||||
def TOKEN_TABLE(self) -> TokenTable:
|
||||
return self.token_table_
|
||||
|
||||
async def uniequip_data(self) -> None:
|
||||
self.uniequip_data_ = UniequipData.convert(
|
||||
await store.get_excel("uniequip_data")
|
||||
)
|
||||
self.uniequip_data_ = UniequipData.convert(await store.get_excel('uniequip_data'))
|
||||
|
||||
@property
|
||||
def UNIEQUIP_DATA(self) -> UniequipData:
|
||||
return self.uniequip_data_
|
||||
|
||||
async def uniequip_table(self) -> None:
|
||||
self.uniequip_table_ = UniEquipTable.convert(
|
||||
await store.get_excel("uniequip_table")
|
||||
)
|
||||
self.uniequip_table_ = UniEquipTable.convert(await store.get_excel('uniequip_table'))
|
||||
|
||||
@property
|
||||
def UNIEQUIP_TABLE(self) -> UniEquipTable:
|
||||
return self.uniequip_table_
|
||||
|
||||
async def zone_table(self) -> None:
|
||||
self.zone_table_ = ZoneTable.convert(
|
||||
await store.get_excel("zone_table")
|
||||
)
|
||||
self.zone_table_ = ZoneTable.convert(await store.get_excel('zone_table'))
|
||||
|
||||
@property
|
||||
def ZONE_TABLE(self) -> ZoneTable:
|
||||
@ -535,9 +457,9 @@ class ExcelTableManager:
|
||||
for name, method in inspect.getmembers(self):
|
||||
if not inspect.iscoroutinefunction(method):
|
||||
continue
|
||||
if name.startswith("__"):
|
||||
if name.startswith('__'):
|
||||
continue
|
||||
if name != "preload_table" and name != 'CHARATER_TABLE':
|
||||
if name != 'preload_table' and name != 'CHARATER_TABLE':
|
||||
task.append(method())
|
||||
await asyncio.gather(*task)
|
||||
|
||||
|
@ -24,10 +24,10 @@ def read_json(file_path: Path, **kwargs) -> dict:
|
||||
Read a JSON file and return its contents as a dictionary.
|
||||
"""
|
||||
try:
|
||||
with Path.open(file_path, encoding="UTF-8", **kwargs) as file:
|
||||
with Path.open(file_path, encoding='UTF-8', **kwargs) as file:
|
||||
return json.load(file)
|
||||
except (FileNotFoundError, json.JSONDecodeError) as e:
|
||||
logger.error(f"Error reading JSON file: {e}")
|
||||
logger.error(f'Error reading JSON file: {e}')
|
||||
return {}
|
||||
|
||||
|
||||
@ -84,7 +84,7 @@ class StorageObject(Struct):
|
||||
|
||||
|
||||
class StoreService(Store):
|
||||
__slots__ = ("store", "lock", "path")
|
||||
__slots__ = ('store', 'lock', 'path')
|
||||
|
||||
def __init__(self) -> None:
|
||||
self.path: anyioPath = anyioPath('data')
|
||||
@ -102,7 +102,7 @@ class StoreService(Store):
|
||||
|
||||
def _write_sync(self, target_file: anyioPath) -> None:
|
||||
try:
|
||||
tmp_file_fd, tmp_file_name = mkstemp(dir=self.path, prefix=f"{target_file.name}.cache")
|
||||
tmp_file_fd, tmp_file_name = mkstemp(dir=self.path, prefix=f'{target_file.name}.cache')
|
||||
renamed = False
|
||||
try:
|
||||
try:
|
||||
@ -122,7 +122,7 @@ class StoreService(Store):
|
||||
|
||||
async def set(self, key: str, value: Any, expires_in: int | timedelta | None = None) -> None:
|
||||
if isinstance(value, str):
|
||||
value = value.encode("UTF-8")
|
||||
value = value.encode('UTF-8')
|
||||
async with self.lock:
|
||||
self.store_[key] = StorageObject.new(data=value, expires_in=expires_in)
|
||||
|
||||
|
@ -34,9 +34,7 @@ async def get_role_img(uid: str):
|
||||
secretary_skinId = secretary.skinId.replace('@', '_')
|
||||
|
||||
secretary_char_img = (
|
||||
Image.open(SKIN_PATH / f'{secretary_skinId}b.png')
|
||||
.resize((768, 768))
|
||||
.convert('RGBA')
|
||||
Image.open(SKIN_PATH / f'{secretary_skinId}b.png').resize((768, 768)).convert('RGBA')
|
||||
)
|
||||
char_info.paste(secretary_char_img, (0, -20), secretary_char_img)
|
||||
|
||||
@ -48,12 +46,11 @@ async def get_role_img(uid: str):
|
||||
player_info.status.name,
|
||||
(255, 255, 255),
|
||||
sans_font_28,
|
||||
'lm'
|
||||
'lm',
|
||||
)
|
||||
|
||||
# 放入职信息
|
||||
|
||||
|
||||
base_info.resize((475, 400)).convert('RGBA')
|
||||
char_info.paste(base_info, (200, 0), base_info)
|
||||
|
||||
|
@ -82,9 +82,7 @@ async def single_daily_sign(bot_id: str, ark_uid: str, gid: str, qid: str):
|
||||
if gid == 'on':
|
||||
if qid not in private_msg_list:
|
||||
private_msg_list[qid] = []
|
||||
private_msg_list[qid].append(
|
||||
{'bot_id': bot_id, 'uid': ark_uid, 'msg': im}
|
||||
)
|
||||
private_msg_list[qid].append({'bot_id': bot_id, 'uid': ark_uid, 'msg': im})
|
||||
else:
|
||||
# 向群消息推送列表添加这个群
|
||||
if gid not in group_msg_list:
|
||||
|
@ -8,4 +8,5 @@ async def all_start():
|
||||
await startup()
|
||||
await ark_adapter()
|
||||
|
||||
|
||||
asyncio.run(all_start())
|
||||
|
@ -25,9 +25,7 @@ ark_skd_cred_add = SV('森空岛cred绑定')
|
||||
# await bot.send(uid_list)
|
||||
|
||||
|
||||
@sv_user_info.on_command(
|
||||
(f'{PREFIX}绑定uid', f'{PREFIX}切换uid', f'{PREFIX}删除uid', f'{PREFIX}解绑uid')
|
||||
)
|
||||
@sv_user_info.on_command((f'{PREFIX}绑定uid', f'{PREFIX}切换uid', f'{PREFIX}删除uid', f'{PREFIX}解绑uid'))
|
||||
async def send_link_uid_msg(bot: Bot, ev: Event):
|
||||
await bot.logger.info('开始执行[绑定/解绑用户信息]')
|
||||
qid = ev.user_id
|
||||
|
@ -3,9 +3,7 @@ import re
|
||||
from ..utils.ark_api import ark_skd_api
|
||||
from ..utils.database.models import ArknightsBind, ArknightsPush, ArknightsUser
|
||||
|
||||
ERROR_HINT = (
|
||||
'添加失败, 格式为: skd添加cred Cred 例如: skd添加cred VropL583Sb1hClS5buQ4nSASkDlL8tMT'
|
||||
)
|
||||
ERROR_HINT = '添加失败, 格式为: skd添加cred Cred 例如: skd添加cred VropL583Sb1hClS5buQ4nSASkDlL8tMT'
|
||||
UID_HINT = '添加失败, 请先绑定明日方舟UID'
|
||||
|
||||
|
||||
@ -22,7 +20,8 @@ async def deal_skd_cred(bot_id: str, cred: str, user_id: str) -> str:
|
||||
token = await ark_skd_api.refresh_token(match.group())
|
||||
|
||||
check_cred = await ark_skd_api.check_cred_valid(
|
||||
cred=match.group(), token=token
|
||||
cred=match.group(),
|
||||
token=token,
|
||||
)
|
||||
|
||||
if isinstance(check_cred, bool):
|
||||
|
@ -21,13 +21,9 @@ async def text2pic(text: str, max_size: int = 800, font_size: int = 20):
|
||||
if text.endswith('\n'):
|
||||
text = text[:-1]
|
||||
|
||||
img = Image.new(
|
||||
'RGB', (max_size, len(text) * font_size // 5), (228, 222, 210)
|
||||
)
|
||||
img = Image.new('RGB', (max_size, len(text) * font_size // 5), (228, 222, 210))
|
||||
img_draw = ImageDraw.ImageDraw(img)
|
||||
y = draw_center_text_by_line(
|
||||
img_draw, (25, 0), text, sans_font_20, 'black', 750, True
|
||||
)
|
||||
y = draw_center_text_by_line(img_draw, (25, 0), text, sans_font_20, 'black', 750, True)
|
||||
img = img.crop((0, 0, 800, int(y + 30)))
|
||||
return await convert_img(img)
|
||||
|
||||
@ -50,6 +46,7 @@ async def send_role_wiki_pic(bot: Bot, ev: Event):
|
||||
img = await get_wiki_info(char_id=char_id)
|
||||
await bot.send(await text2pic(img))
|
||||
|
||||
|
||||
@sv_sr_wiki.on_prefix('ark模组图鉴')
|
||||
async def send_equip_wiki_pic(bot: Bot, ev: Event):
|
||||
char_name = ' '.join(re.findall('[\u4e00-\u9fa5]+', ev.text))
|
||||
|
@ -3,18 +3,15 @@ import re
|
||||
from pathlib import Path
|
||||
from typing import Union
|
||||
|
||||
from gsuid_core.data_store import get_res_path
|
||||
from gsuid_core.plugins.ArknightsUID.ArknightsUID.arknightsuid_resource.memoryStore import store
|
||||
from jinja2 import Template
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
# from rich import print
|
||||
from ..arknightsuid_resource.constants import Excel
|
||||
from ..utils.fonts.source_han_sans import (
|
||||
sans_font_18,
|
||||
sans_font_26,
|
||||
sans_font_34,
|
||||
sans_font_50,
|
||||
# sans_font_18,
|
||||
# sans_font_26,
|
||||
# sans_font_34,
|
||||
# sans_font_50,
|
||||
sans_font_120,
|
||||
)
|
||||
|
||||
@ -30,36 +27,36 @@ red_color = (235, 61, 75)
|
||||
black_color = (0, 0, 0)
|
||||
|
||||
profession_en_to_cn = {
|
||||
"WARRIOR": "近卫",
|
||||
"SNIPER": "狙击",
|
||||
"TANK": "重装",
|
||||
"MEDIC": "医疗",
|
||||
"SUPPORT": "辅助",
|
||||
"CASTER": "术师",
|
||||
"SPECIAL": "特种",
|
||||
"PIONEER": "先锋",
|
||||
"TOKEN": "召唤物",
|
||||
"TRAP": "陷阱",
|
||||
'WARRIOR': '近卫',
|
||||
'SNIPER': '狙击',
|
||||
'TANK': '重装',
|
||||
'MEDIC': '医疗',
|
||||
'SUPPORT': '辅助',
|
||||
'CASTER': '术师',
|
||||
'SPECIAL': '特种',
|
||||
'PIONEER': '先锋',
|
||||
'TOKEN': '召唤物',
|
||||
'TRAP': '陷阱',
|
||||
}
|
||||
|
||||
char_position_en_to_cn = {
|
||||
"MELEE": "近战",
|
||||
"RANGED": "远程",
|
||||
"ALL": "近战/远程",
|
||||
"NONE": "无",
|
||||
'MELEE': '近战',
|
||||
'RANGED': '远程',
|
||||
'ALL': '近战/远程',
|
||||
'NONE': '无',
|
||||
}
|
||||
|
||||
attr_en_to_cn = {
|
||||
"maxHp": "生命",
|
||||
"atk": "攻击",
|
||||
"def_": "防御",
|
||||
"magicResistance": "法抗",
|
||||
"cost": "部署费用",
|
||||
"blockCnt": "阻挡",
|
||||
'maxHp': '生命',
|
||||
'atk': '攻击',
|
||||
'def_': '防御',
|
||||
'magicResistance': '法抗',
|
||||
'cost': '部署费用',
|
||||
'blockCnt': '阻挡',
|
||||
# "moveSpeed": "移动速度",
|
||||
"attackSpeed": "攻击速度",
|
||||
"baseAttackTime": "攻击间隔",
|
||||
"respawnTime": "再部署时间",
|
||||
'attackSpeed': '攻击速度',
|
||||
'baseAttackTime': '攻击间隔',
|
||||
'respawnTime': '再部署时间',
|
||||
# "hpRecoveryPerSec": "生命回复",
|
||||
# "spRecoveryPerSec": "技力回复",
|
||||
# "maxDeployCount": "部署数量上限",
|
||||
@ -75,19 +72,18 @@ attr_en_to_cn = {
|
||||
}
|
||||
|
||||
potential_id_to_cn = {
|
||||
0: "潜能2",
|
||||
1: "潜能3",
|
||||
2: "潜能4",
|
||||
3: "潜能5",
|
||||
4: "潜能6",
|
||||
0: '潜能2',
|
||||
1: '潜能3',
|
||||
2: '潜能4',
|
||||
3: '潜能5',
|
||||
4: '潜能6',
|
||||
}
|
||||
|
||||
|
||||
def render_template(template_str, data):
|
||||
# Extract placeholders and formatting options from the template using regular expression
|
||||
matches = re.finditer(r'\{([^}:]+)\}', template_str)
|
||||
matches_1 = re.finditer(r'\{([^{}]+):([^{}]+)\}', template_str)
|
||||
|
||||
# Create a dictionary with placeholder names, formatting options, and corresponding values
|
||||
placeholder_data = {}
|
||||
for match in matches:
|
||||
placeholder = match.groups()
|
||||
@ -95,16 +91,17 @@ def render_template(template_str, data):
|
||||
placeholder_data[placeholder[0]] = (formatting_option, data.get(placeholder[0], ''))
|
||||
for match in matches_1:
|
||||
placeholder, formatting_option = match.groups()
|
||||
# placeholder = placeholder.replace('-', '')
|
||||
|
||||
placeholder_data[placeholder] = (formatting_option, data.get(placeholder.replace('-', ''), ''))
|
||||
# Replace the placeholders in the template with the formatted values
|
||||
|
||||
for placeholder, (formatting_option, value) in placeholder_data.items():
|
||||
if formatting_option == '':
|
||||
template_str = template_str.replace(f'{{{placeholder}}}', f"{value}")
|
||||
template_str = template_str.replace(f'{{{placeholder}}}', f'{value}')
|
||||
else:
|
||||
template_str = template_str.replace(f'{{{placeholder}:{formatting_option}}}', f"{value:{formatting_option}}")
|
||||
template_str = template_str.replace(
|
||||
f'{{{placeholder}:{formatting_option}}}', f'{value:{formatting_option}}'
|
||||
)
|
||||
|
||||
# Render the template
|
||||
template = Template(template_str)
|
||||
rendered_text = template.render()
|
||||
|
||||
@ -112,7 +109,6 @@ def render_template(template_str, data):
|
||||
|
||||
|
||||
async def get_equip_info(char_id: str):
|
||||
|
||||
UNIEQUIP_TABLE = Excel.UNIEQUIP_TABLE
|
||||
BATTLE_EQUIP_TABLE = Excel.BATTLE_EQUIP_TABLE
|
||||
|
||||
@ -225,9 +221,7 @@ async def get_equip_info(char_id: str):
|
||||
return im
|
||||
|
||||
|
||||
|
||||
async def get_wiki_info(char_id: str):
|
||||
|
||||
CHARACTER_TABLE = Excel.CHARATER_TABLE
|
||||
SKILL_TABLE = Excel.SKILL_TABLE
|
||||
UNIEQUIP_TABLE = Excel.UNIEQUIP_TABLE
|
||||
@ -290,8 +284,10 @@ async def get_wiki_info(char_id: str):
|
||||
if len(potential.buff.attributes.attributeModifiers) == 1:
|
||||
potential_add_attribute_type = potential_add_attribute[0].attributeType
|
||||
potential_add_attribute_value = potential_add_attribute[0].value
|
||||
potential_add_dict[potential_id] = (potential_add_attribute_type, potential_add_attribute_value)
|
||||
# im += f"{potential_add_attribute_type}: {potential_add_attribute_value}"
|
||||
potential_add_dict[potential_id] = (
|
||||
potential_add_attribute_type,
|
||||
potential_add_attribute_value,
|
||||
)
|
||||
else:
|
||||
raise NotImplementedError
|
||||
im += '-----------------\n'
|
||||
@ -316,7 +312,7 @@ async def get_wiki_info(char_id: str):
|
||||
skill_data = SKILL_TABLE.skills[skill]
|
||||
skill_level_data = skill_data.levels[-1]
|
||||
skill_name = skill_level_data.name
|
||||
im += f"技能名: {skill_name}\n"
|
||||
im += f'技能名: {skill_name}\n'
|
||||
skill_type = skill_level_data.skillType
|
||||
skill_description = skill_level_data.description
|
||||
skill_sp_data = skill_level_data.spData
|
||||
@ -331,7 +327,6 @@ async def get_wiki_info(char_id: str):
|
||||
elif skill_sp_type == 8:
|
||||
pass
|
||||
else:
|
||||
print(skill_name, skill_sp_type)
|
||||
raise NotImplementedError
|
||||
|
||||
if skill_type == 1:
|
||||
@ -341,13 +336,11 @@ async def get_wiki_info(char_id: str):
|
||||
elif skill_type == 0:
|
||||
pass
|
||||
else:
|
||||
print(skill_name, skill_type)
|
||||
raise NotImplementedError
|
||||
|
||||
skill_duration = skill_level_data.duration
|
||||
im += f'消耗: {skill_sp_data.spCost} '
|
||||
im += f'初始: {skill_sp_data.initSp} '
|
||||
# im += f'持续: {skill_sp_data.increment}\n'
|
||||
im += f'持续: {str(skill_duration)}\n'
|
||||
skill_blackboard_data = skill_level_data.blackboard
|
||||
black_board_dict: dict[str, Union[Union[int, float], None]] = {}
|
||||
@ -356,45 +349,21 @@ async def get_wiki_info(char_id: str):
|
||||
if skill_description:
|
||||
skill_description = skill_description.replace(':0.0', '')
|
||||
skill_description = re.sub(r'<[^>]+>', '', skill_description)
|
||||
# print(skill_description)
|
||||
# [max_hp].max_hp [atk].atk [def].def
|
||||
# skill_description = re.sub(r'\[max_hp].max_hp', '', skill_description)
|
||||
# skill_description = re.sub(r'\[atk].atk', '', skill_description)
|
||||
# skill_description = re.sub(r'\[def].def', '', skill_description)
|
||||
# print(skill_description)
|
||||
# print(black_board_dict)
|
||||
# print(skill_description)
|
||||
skill_description = render_template(skill_description, black_board_dict).replace('--', '-')
|
||||
# skill_description = template.render(**black_board_dict)
|
||||
|
||||
# skill_description = skill_description.format(**black_board_dict)
|
||||
last_skill_description = re.sub(r'.000000', '', skill_description)
|
||||
print()
|
||||
if '{' in last_skill_description:
|
||||
print(last_skill_description)
|
||||
raise NotImplementedError
|
||||
# re 匹配 '\n'
|
||||
|
||||
skill_desc = re.findall(r'[^\\n]+', last_skill_description)
|
||||
for skill_desc_line in skill_desc:
|
||||
im += f'{skill_desc_line}\n'
|
||||
im += '-----------------\n'
|
||||
im = im[:-19]
|
||||
|
||||
print(im)
|
||||
return im
|
||||
|
||||
|
||||
async def draw_wiki(char_id: str):
|
||||
|
||||
# TASK = []
|
||||
# for file_path in Path(
|
||||
# get_res_path(["ArknightsUID", "resource", "gamedata"])
|
||||
# ).glob("*.json"):
|
||||
# TASK.append(store.get_file(file_path))
|
||||
# asyncio.gather(*TASK)
|
||||
|
||||
# await Excel.preload_table()
|
||||
|
||||
CHARACTER_TABLE = Excel.CHARATER_TABLE
|
||||
SKILL_TABLE = Excel.SKILL_TABLE
|
||||
UNIEQUIP_TABLE = Excel.UNIEQUIP_TABLE
|
||||
@ -445,7 +414,10 @@ async def draw_wiki(char_id: str):
|
||||
if len(potential.buff.attributes.attributeModifiers) == 1:
|
||||
potential_add_attribute_type = potential_add_attribute[0].attributeType
|
||||
potential_add_attribute_value = potential_add_attribute[0].value
|
||||
potential_add_dict[potential_id] = (potential_add_attribute_type, potential_add_attribute_value)
|
||||
potential_add_dict[potential_id] = (
|
||||
potential_add_attribute_type,
|
||||
potential_add_attribute_value,
|
||||
)
|
||||
else:
|
||||
raise NotImplementedError
|
||||
|
||||
@ -487,8 +459,5 @@ async def draw_wiki(char_id: str):
|
||||
return img
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import asyncio
|
||||
|
||||
asyncio.run(draw_wiki(char_id='char_4098_vvana'))
|
||||
|
@ -1,8 +1,8 @@
|
||||
from copy import deepcopy
|
||||
import hashlib
|
||||
import hmac
|
||||
import json
|
||||
import time
|
||||
import hmac
|
||||
from copy import deepcopy
|
||||
from typing import Any, Dict, Literal, Tuple, Union, cast
|
||||
from urllib.parse import urlparse
|
||||
|
||||
@ -36,7 +36,7 @@ _HEADER: Dict[str, str] = {
|
||||
'nId': '1',
|
||||
'os': '33',
|
||||
'manufacturer': 'Xiaomi',
|
||||
'Connection': 'close'
|
||||
'Connection': 'close',
|
||||
}
|
||||
|
||||
|
||||
@ -104,14 +104,11 @@ class BaseArkApi:
|
||||
return -61
|
||||
header = deepcopy(_HEADER)
|
||||
header['cred'] = cred
|
||||
data = {
|
||||
'uid': uid,
|
||||
'gameId': 1
|
||||
}
|
||||
data = {'uid': uid, 'gameId': 1}
|
||||
header = await self.set_sign(
|
||||
ARK_SKD_SIGN,
|
||||
header=header,
|
||||
data=data
|
||||
data=data,
|
||||
)
|
||||
header['Content-Type'] = 'application/json'
|
||||
header['Content-Length'] = str(len(json.dumps(data)))
|
||||
@ -146,7 +143,7 @@ class BaseArkApi:
|
||||
header=header,
|
||||
params={
|
||||
'uid': uid,
|
||||
'gameId': 1
|
||||
'gameId': 1,
|
||||
},
|
||||
)
|
||||
raw_data = await self.ark_request(
|
||||
@ -154,7 +151,7 @@ class BaseArkApi:
|
||||
method='GET',
|
||||
params={
|
||||
'uid': uid,
|
||||
'gameId': 1
|
||||
'gameId': 1,
|
||||
},
|
||||
header=header,
|
||||
)
|
||||
@ -219,14 +216,15 @@ class BaseArkApi:
|
||||
parsed_url = urlparse(url)
|
||||
path = parsed_url.path
|
||||
timestamp = str(int(time.time()) - 2)
|
||||
dId = hashlib.sha256(header["cred"].encode('utf-8')).hexdigest()[0:16]
|
||||
dId = hashlib.sha256(header['cred'].encode('utf-8')).hexdigest()[0:16]
|
||||
str1 = json.dumps(
|
||||
{
|
||||
'platform': header.get('platform', '1'),
|
||||
'timestamp': timestamp,
|
||||
'dId': dId,
|
||||
'vName': header.get('vName', '')
|
||||
}, separators=(',', ':')
|
||||
'vName': header.get('vName', ''),
|
||||
},
|
||||
separators=(',', ':'),
|
||||
)
|
||||
s2 = ''
|
||||
if params:
|
||||
@ -241,13 +239,13 @@ class BaseArkApi:
|
||||
logger.debug(f'cred {header["cred"]} token {token} token_ {token_}')
|
||||
token = token if token else token_
|
||||
if token is None:
|
||||
raise Exception("token is None")
|
||||
raise Exception('token is None')
|
||||
encode_token = token.encode('utf-8')
|
||||
hex_s = hmac.new(encode_token, str2.encode('utf-8'), hashlib.sha256).hexdigest()
|
||||
sign = hashlib.md5(hex_s.encode('utf-8')).hexdigest().encode('utf-8').decode('utf-8')
|
||||
header["sign"] = sign
|
||||
header["timestamp"] = timestamp
|
||||
header["dId"] = dId
|
||||
header['sign'] = sign
|
||||
header['timestamp'] = timestamp
|
||||
header['dId'] = dId
|
||||
logger.debug(header)
|
||||
return header
|
||||
|
||||
@ -292,9 +290,7 @@ class BaseArkApi:
|
||||
data: Union[Dict[str, Any], None] = None,
|
||||
use_proxy: Union[bool, None] = False,
|
||||
) -> Union[Dict, Union[int, None]]:
|
||||
async with ClientSession(
|
||||
connector=TCPConnector(verify_ssl=ssl_verify)
|
||||
) as client:
|
||||
async with ClientSession(connector=TCPConnector(verify_ssl=ssl_verify)) as client:
|
||||
raw_data = {}
|
||||
if 'cred' not in header:
|
||||
return 10001
|
||||
|
@ -13,7 +13,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy.future import select
|
||||
from sqlmodel import Field
|
||||
|
||||
T_ARK_User = TypeVar("T_ARK_User", bound="ArknightsUser")
|
||||
T_ARK_User = TypeVar('T_ARK_User', bound='ArknightsUser')
|
||||
|
||||
|
||||
class ArknightsBind(Bind, table=True):
|
||||
@ -29,7 +29,9 @@ class ArknightsUser(User, table=True):
|
||||
@classmethod
|
||||
@with_session
|
||||
async def select_data_by_cred(
|
||||
cls, session: AsyncSession, cred: str
|
||||
cls,
|
||||
session: AsyncSession,
|
||||
cred: str,
|
||||
) -> Union[BaseModel, None]:
|
||||
sql = select(cls).where(cls.cred == cred)
|
||||
result = await session.execute(sql)
|
||||
@ -38,10 +40,8 @@ class ArknightsUser(User, table=True):
|
||||
|
||||
@classmethod
|
||||
@with_session
|
||||
async def get_all_user(
|
||||
cls: Type[T_ARK_User], session: AsyncSession
|
||||
) -> List[T_ARK_User]:
|
||||
sql = select(cls).where(cls.cred is not None, cls.cred != "")
|
||||
async def get_all_user(cls: Type[T_ARK_User], session: AsyncSession) -> List[T_ARK_User]:
|
||||
sql = select(cls).where(cls.cred is not None, cls.cred != '')
|
||||
result = await session.execute(sql)
|
||||
data: List[T_ARK_User] = result.scalars().all()
|
||||
return data
|
||||
@ -66,7 +66,10 @@ class ArknightsUser(User, table=True):
|
||||
retcode = -1
|
||||
if await cls.data_exist(uid=uid):
|
||||
retcode = await cls.update_data_by_uid(
|
||||
uid, cls.bot_id, None, **{attr: value}
|
||||
uid,
|
||||
cls.bot_id,
|
||||
None,
|
||||
**{attr: value},
|
||||
)
|
||||
return not bool(retcode)
|
||||
|
||||
@ -83,13 +86,9 @@ class ArknightsPush(Push, table=True):
|
||||
ap_is_push: Union[bool, None] = Field(default=False, title='理智是否已经推送')
|
||||
training_push: Union[bool, None] = Field(default=False, title='训练室推送')
|
||||
training_value: Union[int, None] = Field(default=30, title='训练室推送阈值')
|
||||
training_is_push: Union[bool, None] = Field(
|
||||
default=False, title='训练室是否已经推送'
|
||||
)
|
||||
training_is_push: Union[bool, None] = Field(default=False, title='训练室是否已经推送')
|
||||
version_push: Union[bool, None] = Field(default=False, title='版本更新推送')
|
||||
version_is_push: Union[bool, None] = Field(
|
||||
default=False, title='版本更新是否已经推送'
|
||||
)
|
||||
version_is_push: Union[bool, None] = Field(default=False, title='版本更新是否已经推送')
|
||||
|
||||
@classmethod
|
||||
async def insert_push_data(cls, bot_id: str, uid: str, skd_uid: str):
|
||||
@ -122,7 +121,10 @@ class ArknightsPush(Push, table=True):
|
||||
retcode = -1
|
||||
if await cls.data_exist(uid=uid):
|
||||
retcode = await cls.update_data_by_uid(
|
||||
uid, cls.bot_id, None, **data
|
||||
uid,
|
||||
cls.bot_id,
|
||||
None,
|
||||
**data,
|
||||
)
|
||||
return not bool(retcode)
|
||||
|
||||
@ -136,9 +138,7 @@ class ArknightsPush(Push, table=True):
|
||||
await cls.update_push_data(uid, {f'{mode}_is_push': status})
|
||||
|
||||
@classmethod
|
||||
async def select_push_data(
|
||||
cls: Type[T_BaseIDModel], uid: str
|
||||
) -> Union[T_BaseIDModel, None]:
|
||||
async def select_push_data(cls: Type[T_BaseIDModel], uid: str) -> Union[T_BaseIDModel, None]:
|
||||
return await cls.base_select_data(uid=uid)
|
||||
|
||||
@classmethod
|
||||
|
@ -3,6 +3,7 @@ from typing import Union
|
||||
|
||||
UID_HINT = '添加失败, 请先绑定明日方舟UID'
|
||||
|
||||
|
||||
def get_error(retcode: Union[int, str]) -> str:
|
||||
if retcode == 10000:
|
||||
return '请求异常, 请检查具体实现代码...'
|
||||
|
@ -7,7 +7,7 @@ from msgspec import json as mscjson
|
||||
from typing_extensions import dataclass_transform
|
||||
|
||||
Model = TypeVar('Model', bound='BaseStruct')
|
||||
T = TypeVar("T")
|
||||
T = TypeVar('T')
|
||||
|
||||
|
||||
def transUnset(v: Union[T, UnsetType], d: Any = None) -> Union[T, Any]:
|
||||
@ -16,7 +16,10 @@ def transUnset(v: Union[T, UnsetType], d: Any = None) -> Union[T, Any]:
|
||||
|
||||
@dataclass_transform(field_specifiers=(field,))
|
||||
class BaseStruct(
|
||||
Struct, forbid_unknown_fields=True, omit_defaults=True, gc=False
|
||||
Struct,
|
||||
forbid_unknown_fields=True,
|
||||
omit_defaults=True,
|
||||
gc=False,
|
||||
):
|
||||
class Config:
|
||||
encoder = mscjson.Encoder()
|
||||
|
@ -7,8 +7,8 @@ from msgspec import field
|
||||
|
||||
|
||||
class ActivityTableBasicData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name='id')
|
||||
type_: str = field(name='type')
|
||||
name: str
|
||||
startTime: int
|
||||
endTime: int
|
||||
@ -32,16 +32,16 @@ class ActivityTableHomeActivityConfig(BaseStruct):
|
||||
|
||||
|
||||
class MissionDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
|
||||
|
||||
class MissionData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
sortId: int
|
||||
description: str
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
itemBgType: str
|
||||
preMissionIds: Union[List[str], None]
|
||||
template: str
|
||||
@ -59,9 +59,9 @@ class MissionData(BaseStruct):
|
||||
|
||||
|
||||
class MissionGroup(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
title: Union[str, None]
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
preMissionGroup: Union[str, None]
|
||||
period: Union[List[int], None]
|
||||
rewards: Union[List[MissionDisplayRewards], None]
|
||||
@ -79,9 +79,9 @@ class DefaultZoneData(BaseStruct):
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class DefaultShopData(BaseStruct):
|
||||
@ -244,7 +244,7 @@ class Act3D0DataLimitedPoolDetailInfoPoolItemInfo(BaseStruct):
|
||||
perCount: int
|
||||
totalCount: int
|
||||
weight: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
orderId: int
|
||||
|
||||
|
||||
@ -259,7 +259,7 @@ class Act3D0DataInfinitePoolDetailInfoPoolItemInfo(BaseStruct):
|
||||
goodType: str
|
||||
perCount: int
|
||||
weight: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
orderId: int
|
||||
|
||||
|
||||
@ -492,7 +492,7 @@ class RuneData(BaseStruct):
|
||||
|
||||
|
||||
class RuneTablePackedRuneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
points: float
|
||||
mutexGroupKey: Union[str, None]
|
||||
description: str
|
||||
@ -520,7 +520,7 @@ class Act5D1Data(BaseStruct):
|
||||
|
||||
|
||||
class ActivityCollectionDataCollectionInfo(BaseStruct):
|
||||
id_: int = field(name="id")
|
||||
id_: int = field(name='id')
|
||||
itemType: str
|
||||
itemId: str
|
||||
itemCnt: int
|
||||
@ -733,7 +733,7 @@ class Act13SideDataLongTermMissionData(BaseStruct):
|
||||
|
||||
|
||||
class Act13SideDataDailyMissionData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
sortId: int
|
||||
description: str
|
||||
missionName: str
|
||||
@ -929,7 +929,7 @@ class Act17sideDataMainlineChapterData(BaseStruct):
|
||||
chapterDes: str
|
||||
chapterIcon: str
|
||||
unlockDes: str
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
|
||||
|
||||
class Act17sideDataMainlineData(BaseStruct):
|
||||
@ -1172,9 +1172,9 @@ class SharedCharData(BaseStruct):
|
||||
evolvePhase: int
|
||||
level: int
|
||||
favorPoint: int
|
||||
currentEquip: Union[str, None] = field(name="currentEquip", default=None)
|
||||
currentEquip: Union[str, None] = field(name='currentEquip', default=None)
|
||||
equips: Union[Dict[str, SharedCharDataCharEquipInfo], None] = field(
|
||||
name="equip",
|
||||
name='equip',
|
||||
default={},
|
||||
)
|
||||
skillIndex: Union[int, None] = None
|
||||
@ -1241,8 +1241,8 @@ class ActivityBossRushDataBossRushStageAdditionData(BaseStruct):
|
||||
class ActivityBossRushDataDisplayDetailRewards(BaseStruct):
|
||||
occPercent: int
|
||||
dropCount: int
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
dropType: int
|
||||
|
||||
|
||||
@ -1348,15 +1348,15 @@ class ActivityFloatParadeDataDailyData(BaseStruct):
|
||||
|
||||
class ActivityFloatParadeDataRewardPool(BaseStruct):
|
||||
grpId: str
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name='id')
|
||||
type_: str = field(name='type')
|
||||
name: str
|
||||
desc: Union[str, None]
|
||||
reward: ItemBundle
|
||||
|
||||
|
||||
class ActivityFloatParadeDataTactic(BaseStruct):
|
||||
id_: int = field(name="id")
|
||||
id_: int = field(name='id')
|
||||
name: str
|
||||
packName: str
|
||||
briefName: str
|
||||
@ -1395,7 +1395,7 @@ class ActSandboxData(BaseStruct):
|
||||
|
||||
|
||||
class ActivityMainlineBuffDataMissionGroupData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
bindBanner: str
|
||||
sortId: int
|
||||
zoneId: str
|
||||
@ -1411,7 +1411,7 @@ class ActivityMainlineBuffDataPeriodDataStepData(BaseStruct):
|
||||
|
||||
|
||||
class ActivityMainlineBuffDataPeriodData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
startTime: int
|
||||
endTime: int
|
||||
favorUpCharDesc: str
|
||||
@ -1511,23 +1511,23 @@ class Act24SideDataMissionExtraData(BaseStruct):
|
||||
|
||||
|
||||
class WeightItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name='id')
|
||||
type_: str = field(name='type')
|
||||
dropType: str
|
||||
count: int
|
||||
weight: int
|
||||
|
||||
|
||||
class StageDataDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
dropType: int
|
||||
|
||||
|
||||
class StageDataDisplayDetailRewards(BaseStruct):
|
||||
occPercent: int
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
dropType: int
|
||||
|
||||
|
||||
@ -1599,7 +1599,7 @@ class Act25SideDataArchiveItemData(BaseStruct):
|
||||
|
||||
class Act25SideDataArchiveMapInfoData(BaseStruct):
|
||||
objectId: str
|
||||
type_: int = field(name="type")
|
||||
type_: int = field(name='type')
|
||||
numberId: str
|
||||
areaId: str
|
||||
sortId: int
|
||||
@ -1622,7 +1622,7 @@ class Act25SideDataAreaInfoData(BaseStruct):
|
||||
|
||||
|
||||
class Act25SideDataAreaMissionData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
areaId: str
|
||||
preposedMissionId: Union[str, None]
|
||||
sortId: int
|
||||
@ -1711,7 +1711,7 @@ class Act38D1DataAct38D1DimensionItemData(BaseStruct):
|
||||
|
||||
|
||||
class Act38D1DataAct38D1CommentData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
sortId: int
|
||||
desc: str
|
||||
|
||||
@ -1746,7 +1746,7 @@ class Act38D1Data(BaseStruct):
|
||||
|
||||
|
||||
class Act27SideDataAct27SideGoodData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
name: str
|
||||
typeDesc: str
|
||||
iconId: str
|
||||
@ -1865,7 +1865,7 @@ class Act42D0DataEffectGroupInfoData(BaseStruct):
|
||||
|
||||
|
||||
class Act42D0DataEffectInfoRuneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
points: int
|
||||
mutexGroupKey: Union[str, None]
|
||||
description: str
|
||||
@ -1958,14 +1958,14 @@ class Act29SideFragData(BaseStruct):
|
||||
|
||||
|
||||
class Act29SideOrcheType(Enum):
|
||||
ORCHE_1 = "ORCHE_1"
|
||||
ORCHE_2 = "ORCHE_2"
|
||||
ORCHE_3 = "ORCHE_3"
|
||||
ENUM = "ENUM"
|
||||
ORCHE_1 = 'ORCHE_1'
|
||||
ORCHE_2 = 'ORCHE_2'
|
||||
ORCHE_3 = 'ORCHE_3'
|
||||
ENUM = 'ENUM'
|
||||
|
||||
|
||||
class Act29SideOrcheData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
name: str
|
||||
desc: str
|
||||
icon: str
|
||||
@ -1974,12 +1974,12 @@ class Act29SideOrcheData(BaseStruct):
|
||||
|
||||
|
||||
class Act29SideProductType(Enum):
|
||||
PRODUCT_TYPE_1 = "PRODUCT_TYPE_1"
|
||||
PRODUCT_TYPE_2 = "PRODUCT_TYPE_2"
|
||||
PRODUCT_TYPE_3 = "PRODUCT_TYPE_3"
|
||||
PRODUCT_TYPE_4 = "PRODUCT_TYPE_4"
|
||||
PRODUCT_TYPE_5 = "PRODUCT_TYPE_5"
|
||||
ENUM = "ENUM"
|
||||
PRODUCT_TYPE_1 = 'PRODUCT_TYPE_1'
|
||||
PRODUCT_TYPE_2 = 'PRODUCT_TYPE_2'
|
||||
PRODUCT_TYPE_3 = 'PRODUCT_TYPE_3'
|
||||
PRODUCT_TYPE_4 = 'PRODUCT_TYPE_4'
|
||||
PRODUCT_TYPE_5 = 'PRODUCT_TYPE_5'
|
||||
ENUM = 'ENUM'
|
||||
|
||||
|
||||
class Act29SideProductGroupData(BaseStruct):
|
||||
@ -2009,7 +2009,7 @@ class Act29SideProductGroupData(BaseStruct):
|
||||
|
||||
|
||||
class Act29SideProductData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
orcheId: Union[str, None]
|
||||
groupId: str
|
||||
formId: Union[str, None]
|
||||
@ -2034,9 +2034,9 @@ class Act29SideInvestResultData(BaseStruct):
|
||||
|
||||
|
||||
class Act29SideInvestType(Enum):
|
||||
MAJOR = "MAJOR"
|
||||
RARE = "RARE"
|
||||
NORMAL = "NORMAL"
|
||||
MAJOR = 'MAJOR'
|
||||
RARE = 'RARE'
|
||||
NORMAL = 'NORMAL'
|
||||
|
||||
|
||||
class Act29SideInvestData(BaseStruct):
|
||||
@ -2142,8 +2142,8 @@ class ActivityThemeDataTimeNode(BaseStruct):
|
||||
|
||||
|
||||
class ActivityThemeData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name='id')
|
||||
type_: str = field(name='type')
|
||||
funcId: str
|
||||
endTs: int
|
||||
sortId: int
|
||||
@ -2365,7 +2365,7 @@ class AprilFoolTable(BaseStruct):
|
||||
class CartComponents(BaseStruct):
|
||||
compId: str
|
||||
sortId: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
posList: List[str]
|
||||
posIdDict: Dict[str, List[str]]
|
||||
name: str
|
||||
@ -2605,7 +2605,7 @@ class ActivityTableExtraData(BaseStruct):
|
||||
|
||||
|
||||
class ActivityTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
basicInfo: Dict[str, ActivityTableBasicData]
|
||||
homeActConfig: Dict[str, ActivityTableHomeActivityConfig]
|
||||
|
@ -62,7 +62,7 @@ class BattleVoiceOption(BaseStruct):
|
||||
|
||||
|
||||
class MusicData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
name: str
|
||||
bank: str
|
||||
|
||||
@ -91,7 +91,7 @@ class AudioDataFadeStyle(BaseStruct):
|
||||
|
||||
|
||||
class AudioData(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
bgmBanks: List[BGMBank]
|
||||
soundFXBanks: List[SoundFXBank]
|
||||
|
@ -78,6 +78,6 @@ class BattleEquipData(BaseStruct):
|
||||
|
||||
|
||||
class BattleEquipTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
equips: Dict[str, BattleEquipData]
|
||||
|
@ -6,13 +6,13 @@ from msgspec import field
|
||||
|
||||
|
||||
class BuildingDataRoomUnlockCondCondItem(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
level: int
|
||||
count: int
|
||||
|
||||
|
||||
class BuildingDataRoomUnlockCond(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
number: Dict[str, BuildingDataRoomUnlockCondCondItem]
|
||||
|
||||
|
||||
@ -22,9 +22,9 @@ class GridPosition(BaseStruct):
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class BuildingDataRoomDataBuildCost(BaseStruct):
|
||||
@ -44,7 +44,7 @@ class BuildingDataRoomDataPhaseData(BaseStruct):
|
||||
|
||||
|
||||
class BuildingDataRoomData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
name: str
|
||||
description: Union[str, None]
|
||||
defaultPrefabId: str
|
||||
@ -56,7 +56,7 @@ class BuildingDataRoomData(BaseStruct):
|
||||
|
||||
|
||||
class BuildingDataLayoutDataRoomSlot(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
cleanCostId: str
|
||||
costLabor: int
|
||||
provideLabor: int
|
||||
@ -71,26 +71,26 @@ class BuildingDataLayoutDataSlotCleanCostCountCost(BaseStruct):
|
||||
|
||||
|
||||
class BuildingDataLayoutDataSlotCleanCost(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
number: Dict[str, BuildingDataLayoutDataSlotCleanCostCountCost]
|
||||
|
||||
|
||||
class BuildingDataLayoutDataStoreyData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
yOffset: int
|
||||
unlockControlLevel: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class BuildingDataLayoutData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
slots: Dict[str, BuildingDataLayoutDataRoomSlot]
|
||||
cleanCosts: Dict[str, BuildingDataLayoutDataSlotCleanCost]
|
||||
storeys: Dict[str, BuildingDataLayoutDataStoreyData]
|
||||
|
||||
|
||||
class BuildingDataPrefabInfo(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
blueprintRoomOverrideId: Union[str, None]
|
||||
size: GridPosition
|
||||
floorGridSize: GridPosition
|
||||
@ -98,45 +98,45 @@ class BuildingDataPrefabInfo(BaseStruct):
|
||||
obstacleId: Union[str, None]
|
||||
|
||||
|
||||
class BuildingDataManufactPhase(BaseStruct, tag="BuildingDataManufactPhase"):
|
||||
class BuildingDataManufactPhase(BaseStruct, tag='BuildingDataManufactPhase'):
|
||||
speed: Union[float, int]
|
||||
outputCapacity: int
|
||||
|
||||
|
||||
class BuildingDataShopPhase(BaseStruct, tag="BuildingDataShopPhase"):
|
||||
class BuildingDataShopPhase(BaseStruct, tag='BuildingDataShopPhase'):
|
||||
counterNum: int
|
||||
speed: Union[float, int]
|
||||
moneyCapacity: int
|
||||
|
||||
|
||||
class BuildingDataHirePhase(BaseStruct, tag="BuildingDataHirePhase"):
|
||||
class BuildingDataHirePhase(BaseStruct, tag='BuildingDataHirePhase'):
|
||||
economizeRate: float
|
||||
resSpeed: int
|
||||
refreshTimes: int
|
||||
|
||||
|
||||
class BuildingDataDormPhase(BaseStruct, tag="BuildingDataDormPhase"):
|
||||
class BuildingDataDormPhase(BaseStruct, tag='BuildingDataDormPhase'):
|
||||
manpowerRecover: int
|
||||
decorationLimit: int
|
||||
|
||||
|
||||
class BuildingDataMeetingPhase(BaseStruct, tag="BuildingDataMeetingPhase"):
|
||||
class BuildingDataMeetingPhase(BaseStruct, tag='BuildingDataMeetingPhase'):
|
||||
friendSlotInc: int
|
||||
maxVisitorNum: int
|
||||
gatheringSpeed: int
|
||||
|
||||
|
||||
class BuildingDataTradingPhase(BaseStruct, tag="BuildingDataTradingPhase"):
|
||||
class BuildingDataTradingPhase(BaseStruct, tag='BuildingDataTradingPhase'):
|
||||
orderSpeed: Union[float, int]
|
||||
orderLimit: int
|
||||
orderRarity: int
|
||||
|
||||
|
||||
class BuildingDataWorkshopPhase(BaseStruct, tag="BuildingDataWorkshopPhase"):
|
||||
class BuildingDataWorkshopPhase(BaseStruct, tag='BuildingDataWorkshopPhase'):
|
||||
manpowerFactor: Union[float, int]
|
||||
|
||||
|
||||
class BuildingDataTrainingPhase(BaseStruct, tag="BuildingDataTrainingPhase"):
|
||||
class BuildingDataTrainingPhase(BaseStruct, tag='BuildingDataTrainingPhase'):
|
||||
specSkillLvlLimit: int
|
||||
|
||||
|
||||
@ -222,11 +222,11 @@ class BuildingDataBuildingBuff(BaseStruct):
|
||||
|
||||
|
||||
class BuildingDataCustomDataFurnitureData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
sortId: int
|
||||
name: str
|
||||
iconId: str
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
subType: str
|
||||
location: str
|
||||
category: str
|
||||
@ -257,11 +257,11 @@ class BuildingDataCustomDataThemeQuickSetupItem(BaseStruct):
|
||||
furnitureId: str
|
||||
pos0: int
|
||||
pos1: int
|
||||
dir_: int = field(name="dir")
|
||||
dir_: int = field(name='dir')
|
||||
|
||||
|
||||
class BuildingDataCustomDataThemeData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
sortId: int
|
||||
name: str
|
||||
themeType: str
|
||||
@ -272,7 +272,7 @@ class BuildingDataCustomDataThemeData(BaseStruct):
|
||||
|
||||
|
||||
class BuildingDataCustomDataGroupData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
sortId: int
|
||||
name: str
|
||||
themeId: str
|
||||
@ -282,14 +282,14 @@ class BuildingDataCustomDataGroupData(BaseStruct):
|
||||
|
||||
|
||||
class BuildingDataCustomDataFurnitureTypeData(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
name: str
|
||||
|
||||
|
||||
class BuildingDataCustomDataFurnitureSubTypeData(BaseStruct):
|
||||
subType: str
|
||||
name: str
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
sortId: int
|
||||
|
||||
|
||||
@ -318,9 +318,7 @@ class BuildingDataCustomDataDiyUISortTemplateListData(BaseStruct):
|
||||
expandState: str
|
||||
defaultTemplateIndex: int
|
||||
defaultTemplateOrder: str
|
||||
templates: List[
|
||||
BuildingDataCustomDataDiyUISortTemplateListDataDiyUISortTemplateData
|
||||
]
|
||||
templates: List[BuildingDataCustomDataDiyUISortTemplateListDataDiyUISortTemplateData]
|
||||
|
||||
|
||||
class BuildingDataCustomData(BaseStruct):
|
||||
@ -423,7 +421,7 @@ class BuildingDataCreditFormula(BaseStruct):
|
||||
|
||||
|
||||
class BuildingData(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
controlSlotId: str
|
||||
meetingSlotId: str
|
||||
|
@ -6,9 +6,9 @@ from msgspec import field
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class CampaignDataBreakRewardLadder(BaseStruct):
|
||||
@ -18,16 +18,16 @@ class CampaignDataBreakRewardLadder(BaseStruct):
|
||||
|
||||
|
||||
class WeightItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name='id')
|
||||
type_: str = field(name='type')
|
||||
dropType: str
|
||||
count: int
|
||||
weight: int
|
||||
|
||||
|
||||
class StageDataDisplayRewards_(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
dropType: int
|
||||
|
||||
|
||||
@ -58,15 +58,15 @@ class CampaignDataGainLadder(BaseStruct):
|
||||
|
||||
|
||||
class StageDataDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
dropType: int
|
||||
|
||||
|
||||
class StageDataDisplayDetailRewards(BaseStruct):
|
||||
occPercent: int
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
dropType: int
|
||||
|
||||
|
||||
@ -93,19 +93,19 @@ class CampaignGroupData(BaseStruct):
|
||||
|
||||
|
||||
class CampaignRegionData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
isUnknwon: int
|
||||
|
||||
|
||||
class CampaignZoneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
name: str
|
||||
regionId: str
|
||||
templateId: str
|
||||
|
||||
|
||||
class CampaignMissionData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
sortId: int
|
||||
param: List[str]
|
||||
description: str
|
||||
@ -145,7 +145,7 @@ class CampaignTrainingAllOpenTimeData(BaseStruct):
|
||||
|
||||
|
||||
class CampaignTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
campaigns: Dict[str, CampaignData]
|
||||
campaignGroups: Dict[str, CampaignGroupData]
|
||||
|
@ -15,6 +15,6 @@ class ChapterData(BaseStruct):
|
||||
|
||||
|
||||
class ChapterTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
chapters: Dict[str, ChapterData]
|
||||
|
@ -6,9 +6,9 @@ from msgspec import field
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class SpCharMissionData(BaseStruct):
|
||||
@ -21,7 +21,7 @@ class SpCharMissionData(BaseStruct):
|
||||
|
||||
|
||||
class CharMetaTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
spCharGroups: Dict[str, List[str]]
|
||||
spCharMissions: Dict[str, Dict[str, SpCharMissionData]]
|
||||
|
@ -37,7 +37,7 @@ class CharacterDataTraitDataBundle(BaseStruct):
|
||||
class AttributesData(BaseStruct):
|
||||
maxHp: int
|
||||
atk: int
|
||||
def_: int = field(name="def")
|
||||
def_: int = field(name='def')
|
||||
magicResistance: float
|
||||
cost: int
|
||||
blockCnt: int
|
||||
@ -65,9 +65,9 @@ class CharacterDataAttributesKeyFrame(BaseStruct):
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class CharacterDataPhaseData(BaseStruct):
|
||||
@ -129,7 +129,7 @@ class ExternalBuff(BaseStruct):
|
||||
|
||||
|
||||
class CharacterDataPotentialRank(BaseStruct):
|
||||
type_: int = field(name="type")
|
||||
type_: int = field(name='type')
|
||||
description: str
|
||||
buff: Union[ExternalBuff, None]
|
||||
equivalentCost: Union[ItemBundle, None]
|
||||
@ -191,7 +191,7 @@ class CharPatchDataPatchDetailInfo(BaseStruct):
|
||||
|
||||
|
||||
class CharPatchTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
infos: Dict[str, CharPatchDataPatchInfo]
|
||||
patchChars: Dict[str, CharacterData]
|
||||
|
@ -33,7 +33,7 @@ class CharacterDataTraitDataBundle(BaseStruct):
|
||||
class AttributesData(BaseStruct):
|
||||
maxHp: int
|
||||
atk: int
|
||||
def_: int = field(name="def")
|
||||
def_: int = field(name='def')
|
||||
magicResistance: float
|
||||
cost: int
|
||||
blockCnt: int
|
||||
@ -61,9 +61,9 @@ class CharacterDataAttributesKeyFrame(BaseStruct):
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class CharacterDataPhaseData(BaseStruct):
|
||||
@ -126,7 +126,7 @@ class ExternalBuff(BaseStruct):
|
||||
|
||||
|
||||
class CharacterDataPotentialRank(BaseStruct):
|
||||
type_: int = field(name="type")
|
||||
type_: int = field(name='type')
|
||||
description: str
|
||||
buff: Union[ExternalBuff, None]
|
||||
equivalentCost: Union[ItemBundle, None]
|
||||
@ -175,7 +175,7 @@ class CharacterData(BaseStruct):
|
||||
|
||||
|
||||
class CharacterTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
chars: Dict[str, CharacterData]
|
||||
|
||||
|
@ -31,7 +31,7 @@ class RuneData(BaseStruct):
|
||||
|
||||
|
||||
class RuneTablePackedRuneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
points: float
|
||||
mutexGroupKey: Union[str, None]
|
||||
description: str
|
||||
@ -39,7 +39,7 @@ class RuneTablePackedRuneData(BaseStruct):
|
||||
|
||||
|
||||
class CharmItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
sort: int
|
||||
name: str
|
||||
icon: str
|
||||
@ -58,6 +58,6 @@ class CharmItemData(BaseStruct):
|
||||
|
||||
|
||||
class CharmTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
charmList: List[CharmItemData]
|
||||
|
@ -36,7 +36,7 @@ class VoiceLangInfoData(BaseStruct):
|
||||
class VoiceLangData(BaseStruct):
|
||||
wordkeys: List[str]
|
||||
charId: str
|
||||
dict_: Dict[str, VoiceLangInfoData] = field(name="dict")
|
||||
dict_: Dict[str, VoiceLangInfoData] = field(name='dict')
|
||||
|
||||
|
||||
class VoiceLangTypeData(BaseStruct):
|
||||
@ -55,7 +55,7 @@ class NewVoiceTimeData(BaseStruct):
|
||||
|
||||
|
||||
class CharwordTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
charWords: Dict[str, CharWordData]
|
||||
voiceLangDict: Dict[str, VoiceLangData]
|
||||
|
@ -6,9 +6,9 @@ from msgspec import field
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class MonthlySignInData(BaseStruct):
|
||||
@ -36,7 +36,7 @@ class MonthlyDailyBonusGroup(BaseStruct):
|
||||
|
||||
|
||||
class CheckinTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
groups: Dict[str, MonthlySignInGroupData]
|
||||
monthlySubItem: Dict[str, List[MonthlyDailyBonusGroup]]
|
||||
|
@ -6,9 +6,9 @@ from msgspec import field
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class ClimbTowerSingleTowerDataClimbTowerTaskRewardData(BaseStruct):
|
||||
@ -17,7 +17,7 @@ class ClimbTowerSingleTowerDataClimbTowerTaskRewardData(BaseStruct):
|
||||
|
||||
|
||||
class ClimbTowerSingleTowerData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
sortId: int
|
||||
stageNum: int
|
||||
name: str
|
||||
@ -42,29 +42,29 @@ class ClimbTowerSingleTowerData(BaseStruct):
|
||||
|
||||
|
||||
class WeightItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name='id')
|
||||
type_: str = field(name='type')
|
||||
dropType: str
|
||||
count: int
|
||||
weight: int
|
||||
|
||||
|
||||
class StageDataDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
dropType: int
|
||||
|
||||
|
||||
class StageDataDisplayDetailRewards(BaseStruct):
|
||||
occPercent: int
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
dropType: int
|
||||
|
||||
|
||||
class ClimbTowerDropDisplayInfo(BaseStruct):
|
||||
itemId: str
|
||||
type_: int = field(name="type")
|
||||
type_: int = field(name='type')
|
||||
maxCount: int
|
||||
minCount: int
|
||||
|
||||
@ -77,7 +77,7 @@ class ClimbTowerLevelDropInfo(BaseStruct):
|
||||
|
||||
|
||||
class ClimbTowerSingleLevelData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
levelId: str
|
||||
towerId: str
|
||||
layerNum: int
|
||||
@ -90,7 +90,7 @@ class ClimbTowerSingleLevelData(BaseStruct):
|
||||
|
||||
|
||||
class ClimbTowerTacticalBuffData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
desc: str
|
||||
profession: str
|
||||
isDefaultActive: bool
|
||||
@ -124,7 +124,7 @@ class RuneData(BaseStruct):
|
||||
|
||||
|
||||
class RuneTablePackedRuneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
points: float
|
||||
mutexGroupKey: Union[str, None]
|
||||
description: str
|
||||
@ -132,8 +132,8 @@ class RuneTablePackedRuneData(BaseStruct):
|
||||
|
||||
|
||||
class ClimbTowerMainCardData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name='id')
|
||||
type_: str = field(name='type')
|
||||
linkedTowerId: Union[str, None]
|
||||
sortId: int
|
||||
name: str
|
||||
@ -144,7 +144,7 @@ class ClimbTowerMainCardData(BaseStruct):
|
||||
|
||||
|
||||
class ClimbTowerSubCardData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
mainCardId: str
|
||||
sortId: int
|
||||
name: str
|
||||
@ -154,7 +154,7 @@ class ClimbTowerSubCardData(BaseStruct):
|
||||
|
||||
|
||||
class ClimbTowerCurseCardData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
towerIdList: List[str]
|
||||
name: str
|
||||
desc: str
|
||||
@ -162,7 +162,7 @@ class ClimbTowerCurseCardData(BaseStruct):
|
||||
|
||||
|
||||
class ClimbTowerSeasonInfoData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
name: str
|
||||
startTs: int
|
||||
endTs: int
|
||||
@ -196,16 +196,16 @@ class ClimbTowerRewardInfo(BaseStruct):
|
||||
|
||||
|
||||
class MissionDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
|
||||
|
||||
class MissionData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
sortId: int
|
||||
description: str
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
itemBgType: str
|
||||
preMissionIds: Union[List[str], None]
|
||||
template: str
|
||||
@ -228,9 +228,9 @@ class ClimbTowerMissionData(MissionData):
|
||||
|
||||
|
||||
class MissionGroup(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
title: Union[str, None]
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
preMissionGroup: Union[str, None]
|
||||
period: Union[List[int], None]
|
||||
rewards: List[MissionDisplayRewards]
|
||||
@ -240,7 +240,7 @@ class MissionGroup(BaseStruct):
|
||||
|
||||
|
||||
class ClimbTowerTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
towers: Dict[str, ClimbTowerSingleTowerData]
|
||||
levels: Dict[str, ClimbTowerSingleLevelData]
|
||||
|
@ -21,7 +21,7 @@ class MeetingClueDataReceiveTimeBonus(BaseStruct):
|
||||
|
||||
|
||||
class ClueData(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
clues: List[MeetingClueDataClueData]
|
||||
clueTypes: List[MeetingClueDataClueTypeData]
|
||||
|
@ -6,9 +6,9 @@ from msgspec import field
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class StringKeyFrames(BaseStruct):
|
||||
@ -34,7 +34,7 @@ class CrisisMapRankInfo(BaseStruct):
|
||||
|
||||
|
||||
class CrisisTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
seasonInfo: List[CrisisClientDataSeasonInfo]
|
||||
meta: str
|
||||
|
@ -7,9 +7,9 @@ from msgspec import field
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class StringKeyFrames(BaseStruct):
|
||||
@ -31,13 +31,13 @@ class CrisisV2ConstData(BaseStruct):
|
||||
|
||||
|
||||
class appraiseType(Enum):
|
||||
RANK_D = "RANK_D"
|
||||
RANK_C = "RANK_C"
|
||||
RANK_B = "RANK_B"
|
||||
RANK_A = "RANK_A"
|
||||
RANK_S = "RANK_S"
|
||||
RANK_SS = "RANK_SS"
|
||||
RANK_SSS = "RANK_SSS"
|
||||
RANK_D = 'RANK_D'
|
||||
RANK_C = 'RANK_C'
|
||||
RANK_B = 'RANK_B'
|
||||
RANK_A = 'RANK_A'
|
||||
RANK_S = 'RANK_S'
|
||||
RANK_SS = 'RANK_SS'
|
||||
RANK_SSS = 'RANK_SSS'
|
||||
|
||||
|
||||
class CrisisV2ScoreLevelToAppraiseData(BaseStruct):
|
||||
@ -45,7 +45,7 @@ class CrisisV2ScoreLevelToAppraiseData(BaseStruct):
|
||||
|
||||
|
||||
class CrisisV2Table(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
seasonInfoDataMap: Dict
|
||||
scoreLevelToAppraiseDataMap: Dict[str, CrisisV2ScoreLevelToAppraiseData]
|
||||
|
@ -42,8 +42,8 @@ class HomeBackgroundSingleData(BaseStruct):
|
||||
|
||||
|
||||
class HomeBackgroundThemeData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name='id')
|
||||
type_: str = field(name='type')
|
||||
sortId: int
|
||||
startTime: int
|
||||
tmName: str
|
||||
@ -61,7 +61,7 @@ class ThemeLimitInfo(BaseStruct):
|
||||
|
||||
|
||||
class HomeBackgroundThemeLimitData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
limitInfos: List[ThemeLimitInfo]
|
||||
|
||||
|
||||
@ -76,7 +76,7 @@ class HomeBackgroundData(BaseStruct):
|
||||
|
||||
|
||||
class DisplayMetaTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
playerAvatarData: PlayerAvatarData
|
||||
homeBackgroundData: HomeBackgroundData
|
||||
|
@ -31,14 +31,14 @@ class EnemyHandBookData(BaseStruct):
|
||||
|
||||
|
||||
class EnemyHandbookLevelInfoDataRangePair(BaseStruct):
|
||||
min_: float = field(name="min")
|
||||
max_: float = field(name="max")
|
||||
min_: float = field(name='min')
|
||||
max_: float = field(name='max')
|
||||
|
||||
|
||||
class EnemyHandbookLevelInfoData(BaseStruct):
|
||||
classLevel: str
|
||||
attack: EnemyHandbookLevelInfoDataRangePair
|
||||
def_: EnemyHandbookLevelInfoDataRangePair = field(name="def")
|
||||
def_: EnemyHandbookLevelInfoDataRangePair = field(name='def')
|
||||
magicRes: EnemyHandbookLevelInfoDataRangePair
|
||||
maxHP: EnemyHandbookLevelInfoDataRangePair
|
||||
moveSpeed: EnemyHandbookLevelInfoDataRangePair
|
||||
@ -48,13 +48,13 @@ class EnemyHandbookLevelInfoData(BaseStruct):
|
||||
|
||||
|
||||
class EnemyHandbookRaceData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
raceName: str
|
||||
sortId: int
|
||||
|
||||
|
||||
class EnemyHandbookTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
levelInfoList: List[EnemyHandbookLevelInfoData]
|
||||
enemyData: Dict[str, EnemyHandBookData]
|
||||
|
@ -15,7 +15,7 @@ class FavorDataFrames(BaseStruct):
|
||||
|
||||
|
||||
class FavorTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
maxFavor: int
|
||||
favorFrames: List[FavorDataFrames]
|
||||
|
@ -32,9 +32,9 @@ class GachaDataCarouselData(BaseStruct):
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class GachaDataRecruitRange(BaseStruct):
|
||||
@ -131,7 +131,7 @@ class GachaDataFesGachaPoolRelateItem(BaseStruct):
|
||||
|
||||
|
||||
class GachaTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
gachaTags: List[GachaTag]
|
||||
carousel: List[GachaDataCarouselData]
|
||||
|
@ -6,9 +6,9 @@ from msgspec import field
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class GameDataConstsCharAssistRefreshTimeState(BaseStruct):
|
||||
@ -23,7 +23,7 @@ class TermDescriptionData(BaseStruct):
|
||||
|
||||
|
||||
class GamedataConst(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
addedRewardDisplayZone: str
|
||||
advancedGachaCrystalCost: int
|
||||
|
@ -13,9 +13,9 @@ class HandbookUnlockParam(BaseStruct):
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class HandbookStageTimeData(BaseStruct):
|
||||
@ -43,11 +43,11 @@ class HandbookStoryStageData(BaseStruct):
|
||||
class HandbookDisplayCondition(BaseStruct):
|
||||
charId: str
|
||||
conditionCharId: str
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class HandbookTeamMission(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
sort: int
|
||||
powerId: str
|
||||
powerName: str
|
||||
@ -122,7 +122,7 @@ class HandbookInfoData(BaseStruct):
|
||||
|
||||
|
||||
class HandbookInfoTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
handbookDict: Dict[str, HandbookInfoData]
|
||||
npcDict: Dict[str, NPCData]
|
||||
|
@ -40,6 +40,6 @@ class CharHandbook(BaseStruct):
|
||||
|
||||
|
||||
class HandbookTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
char_102_texas: CharHandbook
|
||||
|
@ -15,6 +15,6 @@ class HandbookTeam(BaseStruct):
|
||||
|
||||
|
||||
class HandbookTeamTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
team: Dict[str, HandbookTeam]
|
||||
|
@ -16,9 +16,9 @@ class ItemDataBuildingProductInfo(BaseStruct):
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class FavorCharacterInfo(BaseStruct):
|
||||
@ -47,13 +47,13 @@ class UniCollectionInfo(BaseStruct):
|
||||
|
||||
|
||||
class ApSupplyFeature(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
ap: int
|
||||
hasTs: bool
|
||||
|
||||
|
||||
class ExpItemFeature(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
gainExp: int
|
||||
|
||||
|
||||
@ -83,7 +83,7 @@ class ItemData(BaseStruct):
|
||||
|
||||
class CharVoucherItemFeature(BaseStruct):
|
||||
displayType: int
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
|
||||
|
||||
class ServerItemReminderMailData(BaseStruct):
|
||||
@ -98,7 +98,7 @@ class ServerItemReminderInfo(BaseStruct):
|
||||
|
||||
|
||||
class ItemTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
activityPotentialCharacters: Dict[str, ActivityPotentialCharacterInfo]
|
||||
apSupplies: Dict[str, ApSupplyFeature]
|
||||
|
@ -8,13 +8,13 @@ from msgspec import field
|
||||
class MedalExpireTime(BaseStruct):
|
||||
start: int
|
||||
end: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class MedalGroupData(BaseStruct):
|
||||
@ -61,7 +61,7 @@ class MedalPerData(BaseStruct):
|
||||
|
||||
|
||||
class MedalTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
medalList: List[MedalPerData]
|
||||
medalTypeData: Dict[str, MedalTypeData]
|
||||
|
@ -6,8 +6,8 @@ from msgspec import field
|
||||
|
||||
|
||||
class MissionDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
|
||||
|
||||
@ -28,26 +28,26 @@ class MissionWeeklyRewardConf(BaseStruct):
|
||||
beginTime: int
|
||||
endTime: int
|
||||
groupId: str
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
periodicalPointCost: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
sortIndex: int
|
||||
rewards: List[MissionDisplayRewards]
|
||||
|
||||
|
||||
class MissionDailyRewardConf(BaseStruct):
|
||||
groupId: str
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
periodicalPointCost: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
sortIndex: int
|
||||
rewards: List[MissionDisplayRewards]
|
||||
|
||||
|
||||
class MissionGroup(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
title: Union[str, None]
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
preMissionGroup: Union[str, None]
|
||||
period: Union[List[int], None]
|
||||
rewards: Union[List[MissionDisplayRewards], None]
|
||||
@ -57,10 +57,10 @@ class MissionGroup(BaseStruct):
|
||||
|
||||
|
||||
class MissionData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
sortId: int
|
||||
description: str
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
itemBgType: str
|
||||
preMissionIds: Union[List[str], None]
|
||||
template: str
|
||||
@ -78,7 +78,7 @@ class MissionData(BaseStruct):
|
||||
|
||||
|
||||
class MissionTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
missions: Dict[str, MissionData]
|
||||
missionGroups: Dict[str, MissionGroup]
|
||||
|
@ -6,21 +6,21 @@ from msgspec import field
|
||||
|
||||
|
||||
class RewardItem(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
sortId: int
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
|
||||
|
||||
class MissionDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
|
||||
|
||||
@ -42,7 +42,7 @@ class ReturnCheckinData(BaseStruct):
|
||||
|
||||
|
||||
class ReturnLongTermTaskData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
sortId: int
|
||||
template: str
|
||||
param: List[str]
|
||||
@ -53,7 +53,7 @@ class ReturnLongTermTaskData(BaseStruct):
|
||||
|
||||
class ReturnDailyTaskData(BaseStruct):
|
||||
groupId: str
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
groupSortId: int
|
||||
taskSortId: int
|
||||
template: str
|
||||
@ -105,10 +105,10 @@ class ChainLoginData(BaseStruct):
|
||||
|
||||
|
||||
class MissionData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
sortId: int
|
||||
description: str
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
itemBgType: str
|
||||
preMissionIds: None
|
||||
template: str
|
||||
@ -126,9 +126,9 @@ class MissionData(BaseStruct):
|
||||
|
||||
|
||||
class MissionGroup(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
title: None
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
preMissionGroup: None
|
||||
period: None
|
||||
rewards: None
|
||||
@ -145,7 +145,7 @@ class OpenServerData(BaseStruct):
|
||||
|
||||
|
||||
class OpenServerScheduleItem(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
startTs: int
|
||||
endTs: int
|
||||
totalCheckinDescption: str
|
||||
@ -269,7 +269,7 @@ class OpenServerNewbieCheckInPackage(BaseStruct):
|
||||
|
||||
|
||||
class OpenServerTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
schedule: List[OpenServerScheduleItem]
|
||||
dataMap: Dict[str, OpenServerData]
|
||||
|
@ -21,7 +21,7 @@ class PlayerAvatarPerData(BaseStruct):
|
||||
|
||||
|
||||
class PlayerAvatarTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
avatarList: List[PlayerAvatarPerData]
|
||||
avatarTypeData: Dict[str, PlayerAvatarGroupData]
|
||||
|
@ -18,13 +18,13 @@ class ObscuredRect(BaseStruct):
|
||||
|
||||
|
||||
class Stage(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
direction: int
|
||||
grids: List[GridPosition]
|
||||
boundingBoxes: Union[List[ObscuredRect], None] = None
|
||||
|
||||
|
||||
class RangeTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
range_: Dict[str, Stage]
|
||||
|
@ -6,9 +6,9 @@ from msgspec import field
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class ReplicateData(BaseStruct):
|
||||
@ -21,6 +21,6 @@ class ReplicateList(BaseStruct):
|
||||
|
||||
|
||||
class ReplicateTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
replicate: Dict[str, ReplicateList]
|
||||
|
@ -6,14 +6,14 @@ from msgspec import field
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class StageDataDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
dropType: int
|
||||
|
||||
|
||||
@ -32,8 +32,8 @@ class Act17sideDataChoiceNodeOptionData(BaseStruct):
|
||||
|
||||
class StageDataDisplayDetailRewards(BaseStruct):
|
||||
occPercent: int
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
dropType: int
|
||||
CannotGetPercent: Union[float, None] = None
|
||||
GetPercent: Union[float, None] = None
|
||||
@ -69,7 +69,7 @@ class Act17sideDataMainlineChapterData(BaseStruct):
|
||||
chapterDes: str
|
||||
chapterIcon: str
|
||||
unlockDes: str
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
|
||||
|
||||
class RunesSelector(BaseStruct):
|
||||
@ -92,7 +92,7 @@ class TechTreeBranchRunes(BaseStruct):
|
||||
|
||||
|
||||
class BranchRuneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
points: float
|
||||
mutexGroupKey: None
|
||||
description: str
|
||||
@ -260,7 +260,7 @@ class RuneData(BaseStruct):
|
||||
|
||||
class RuneTablePackedRuneData(BaseStruct):
|
||||
description: str
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
points: float
|
||||
runes: List[RuneData]
|
||||
mutexGroupKey: Union[str, None] = None
|
||||
@ -316,8 +316,8 @@ class RetroTrailRuleData(BaseStruct):
|
||||
class WeightItemBundle(BaseStruct):
|
||||
count: int
|
||||
dropType: str
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name='id')
|
||||
type_: str = field(name='type')
|
||||
weight: int
|
||||
|
||||
|
||||
@ -401,7 +401,7 @@ class RetroTrailData(BaseStruct):
|
||||
|
||||
class RetroActData(BaseStruct):
|
||||
retroId: str
|
||||
type_: int = field(name="type")
|
||||
type_: int = field(name='type')
|
||||
linkedActId: List[str]
|
||||
startTime: int
|
||||
trailStartTime: int
|
||||
@ -430,7 +430,7 @@ class RetroStageOverrideInfo(BaseStruct):
|
||||
|
||||
|
||||
class RetroTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
customData: ActivityCustomData
|
||||
initRetroCoin: int
|
||||
|
@ -28,12 +28,12 @@ class RoguelikeOuterBuff(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeOutBuffData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
buffs: Dict[str, RoguelikeOuterBuff]
|
||||
|
||||
|
||||
class RoguelikeEndingData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
backgroundId: str
|
||||
name: str
|
||||
description: str
|
||||
@ -43,7 +43,7 @@ class RoguelikeEndingData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeModeData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
name: str
|
||||
canUnlockItem: int
|
||||
scoreFactor: float
|
||||
@ -56,24 +56,24 @@ class RoguelikeModeData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeChoiceSceneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
title: str
|
||||
description: str
|
||||
background: str
|
||||
|
||||
|
||||
class RoguelikeChoiceData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
title: str
|
||||
description: Union[str, None]
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
nextSceneId: Union[str, None]
|
||||
icon: Union[str, None]
|
||||
param: Dict[str, object]
|
||||
|
||||
|
||||
class RoguelikeZoneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
name: str
|
||||
description: str
|
||||
endingDescription: str
|
||||
@ -82,7 +82,7 @@ class RoguelikeZoneData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeStageData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
linkedStageId: str
|
||||
levelId: str
|
||||
code: str
|
||||
@ -96,12 +96,12 @@ class RoguelikeStageData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeRelicFeature(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
buffs: List[RoguelikeBuff]
|
||||
|
||||
|
||||
class RoguelikeUpgradeTicketFeature(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
profession: int
|
||||
rarity: int
|
||||
professionList: List[str]
|
||||
@ -109,7 +109,7 @@ class RoguelikeUpgradeTicketFeature(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeRecruitTicketFeature(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
profession: int
|
||||
rarity: int
|
||||
professionList: List[str]
|
||||
@ -125,13 +125,13 @@ class RelicStableUnlockParam(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
name: str
|
||||
description: Union[str, None]
|
||||
usage: str
|
||||
obtainApproach: str
|
||||
iconId: str
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
rarity: str
|
||||
value: int
|
||||
sortId: int
|
||||
@ -193,7 +193,7 @@ class RoguelikeConstTable(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
constTable: RoguelikeConstTable
|
||||
itemTable: RoguelikeItemTable
|
||||
|
@ -21,7 +21,7 @@ class RoguelikeTopicConfig(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeTopicBasicData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
name: str
|
||||
startTime: int
|
||||
disappearTimeOnMainScreen: int
|
||||
@ -68,7 +68,7 @@ class RoguelikeTopicEnroll(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeTopicBP(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
level: int
|
||||
tokenNum: int
|
||||
nextTokenNum: int
|
||||
@ -88,9 +88,9 @@ class RoguelikeTopicMilestoneUpdateData(BaseStruct):
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class RoguelikeTopicBPGrandPrize(BaseStruct):
|
||||
@ -111,7 +111,7 @@ class RoguelikeTopicBPGrandPrize(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeTopicMonthMission(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
taskName: str
|
||||
taskClass: str
|
||||
innerClassWeight: int
|
||||
@ -122,7 +122,7 @@ class RoguelikeTopicMonthMission(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeTopicMonthSquad(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
teamName: str
|
||||
teamSubName: Union[str, None]
|
||||
teamFlavorDesc: Union[str, None]
|
||||
@ -292,8 +292,8 @@ class ActArchiveBuffData(BaseStruct):
|
||||
|
||||
|
||||
class ActArchiveTotemItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
type_: int = field(name="type")
|
||||
id_: str = field(name='id')
|
||||
type_: int = field(name='type')
|
||||
enrollConditionId: Union[str, None]
|
||||
sortId: int
|
||||
|
||||
@ -303,7 +303,7 @@ class ActArchiveTotemData(BaseStruct):
|
||||
|
||||
|
||||
class ActArchiveChaosItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
isHidden: bool
|
||||
enrollId: Union[str, None]
|
||||
sortId: int
|
||||
@ -412,7 +412,7 @@ class RoguelikeGameInitData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeGameStageData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
linkedStageId: str
|
||||
levelId: str
|
||||
code: str
|
||||
@ -431,7 +431,7 @@ class RoguelikeGameStageData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeGameZoneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
name: str
|
||||
clockPerformance: Union[str, None]
|
||||
displayTime: Union[str, None]
|
||||
@ -453,7 +453,7 @@ class RoguelikeGameTrapData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeGameRecruitTicketData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
profession: int
|
||||
rarity: int
|
||||
professionList: List[str]
|
||||
@ -464,7 +464,7 @@ class RoguelikeGameRecruitTicketData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeGameUpgradeTicketData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
profession: int
|
||||
rarity: int
|
||||
professionList: List[str]
|
||||
@ -472,7 +472,7 @@ class RoguelikeGameUpgradeTicketData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeGameCustomTicketData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
subType: str
|
||||
discardText: str
|
||||
|
||||
@ -489,7 +489,7 @@ class RoguelikeBuff(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeGameRelicData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
buffs: List[RoguelikeBuff]
|
||||
|
||||
|
||||
@ -500,13 +500,13 @@ class RoguelikeGameRelicCheckParam(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeGameRelicParamData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
checkCharBoxTypes: List[str]
|
||||
checkCharBoxParams: List[RoguelikeGameRelicCheckParam]
|
||||
|
||||
|
||||
class RoguelikeGameRecruitGrpData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
iconId: str
|
||||
name: str
|
||||
desc: str
|
||||
@ -514,7 +514,7 @@ class RoguelikeGameRecruitGrpData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeChoiceDisplayData(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
funcIconId: Union[str, None]
|
||||
itemId: Union[str, None]
|
||||
taskId: Union[str, None]
|
||||
@ -524,11 +524,11 @@ class RoguelikeChoiceDisplayData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeGameChoiceData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
title: str
|
||||
description: Union[str, None]
|
||||
lockedCoverDesc: Union[str, None]
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
leftDecoType: str
|
||||
nextSceneId: Union[str, None]
|
||||
icon: Union[str, None]
|
||||
@ -537,7 +537,7 @@ class RoguelikeGameChoiceData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeGameChoiceSceneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
title: str
|
||||
description: str
|
||||
background: Union[str, None]
|
||||
@ -560,8 +560,8 @@ class RoguelikeGameNodeSubTypeData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeGameVariationData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name='id')
|
||||
type_: str = field(name='type')
|
||||
outerName: str
|
||||
innerName: str
|
||||
functionDesc: str
|
||||
@ -571,7 +571,7 @@ class RoguelikeGameVariationData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeGameCharBuffData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
iconId: str
|
||||
outerName: str
|
||||
innerName: str
|
||||
@ -581,7 +581,7 @@ class RoguelikeGameCharBuffData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeGameSquadBuffData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
iconId: str
|
||||
outerName: str
|
||||
innerName: str
|
||||
@ -663,7 +663,7 @@ class RoguelikeGameEndingDataLevelIcon(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeGameEndingData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
familyId: int
|
||||
name: str
|
||||
desc: str
|
||||
@ -685,13 +685,13 @@ class TipData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeGameItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
name: str
|
||||
description: Union[str, None]
|
||||
usage: str
|
||||
obtainApproach: str
|
||||
iconId: str
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
subType: str
|
||||
rarity: str
|
||||
value: int
|
||||
@ -961,7 +961,7 @@ class RoguelikeVisionData(BaseStruct):
|
||||
|
||||
class RoguelikeVisionModuleDataVisionChoiceConfig(BaseStruct):
|
||||
value: int
|
||||
type_: int = field(name="type")
|
||||
type_: int = field(name='type')
|
||||
|
||||
|
||||
class RoguelikeVisionModuleConsts(BaseStruct):
|
||||
@ -1227,7 +1227,7 @@ class RoguelikeTopicCustomizeData(BaseStruct):
|
||||
|
||||
|
||||
class RoguelikeTopicTable(BaseStruct):
|
||||
__version__ = "23-04-23-15-07-53-24a81c"
|
||||
__version__ = '23-04-23-15-07-53-24a81c'
|
||||
|
||||
topics: Dict[str, RoguelikeTopicBasicData]
|
||||
constant: RoguelikeTopicConst
|
||||
|
@ -240,7 +240,7 @@ class SandboxEventData(BaseStruct):
|
||||
|
||||
class SandboxEventSceneData(BaseStruct):
|
||||
choiceSceneId: str
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
title: str
|
||||
description: str
|
||||
choices: List[str]
|
||||
@ -248,7 +248,7 @@ class SandboxEventSceneData(BaseStruct):
|
||||
|
||||
class SandboxEventChoiceData(BaseStruct):
|
||||
choiceId: str
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
costAction: int
|
||||
finishScene: bool
|
||||
title: str
|
||||
@ -272,12 +272,12 @@ class SandboxMissionData(BaseStruct):
|
||||
|
||||
|
||||
class SandboxUnitData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
name: str
|
||||
|
||||
|
||||
class SandboxDailyDescTemplateData(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
templateDesc: List[str]
|
||||
|
||||
|
||||
@ -296,7 +296,7 @@ class RushEnemyGroupConfig(BaseStruct):
|
||||
|
||||
|
||||
class RushEnemyGroupRushEnemyDBRef(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
level: int
|
||||
|
||||
|
||||
@ -331,7 +331,7 @@ class RuneData(BaseStruct):
|
||||
|
||||
|
||||
class RuneTablePackedRuneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
points: Union[int, float]
|
||||
mutexGroupKey: Union[str, None]
|
||||
description: str
|
||||
@ -398,7 +398,7 @@ class SandboxItemData(BaseStruct):
|
||||
|
||||
|
||||
class SandboxTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
sandboxActTables: Dict[str, SandboxActTable]
|
||||
itemDatas: Dict[str, SandboxItemData]
|
||||
|
@ -20,7 +20,7 @@ class ShopRecommendGroup(BaseStruct):
|
||||
|
||||
|
||||
class ShopKeeperWord(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
text: str
|
||||
|
||||
|
||||
@ -91,7 +91,7 @@ class ShopCreditUnlockItem(BaseStruct):
|
||||
|
||||
|
||||
class ShopCreditUnlockGroup(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
index: str
|
||||
startDateTime: int
|
||||
charDict: List[ShopCreditUnlockItem]
|
||||
@ -144,7 +144,7 @@ class LMTGSShopOverlaySchedule(BaseStruct):
|
||||
|
||||
|
||||
class ShopClientTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
recommendList: List[ShopRecommendItem]
|
||||
creditUnlockGroup: Dict[str, ShopCreditUnlockGroup]
|
||||
|
@ -6,9 +6,9 @@ from msgspec import field
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class SpData(BaseStruct):
|
||||
@ -46,6 +46,6 @@ class SkillDataBundle(BaseStruct):
|
||||
|
||||
|
||||
class SkillTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
skills: Dict[str, SkillDataBundle]
|
||||
|
@ -82,7 +82,7 @@ class SpecialSkinInfo(BaseStruct):
|
||||
|
||||
|
||||
class SkinTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
charSkins: Dict[str, CharSkinData]
|
||||
buildinEvolveMap: Dict[str, Dict[str, str]]
|
||||
|
@ -11,15 +11,15 @@ class StageDataConditionDesc(BaseStruct):
|
||||
|
||||
|
||||
class StageDataDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
dropType: int
|
||||
|
||||
|
||||
class StageDataDisplayDetailRewards(BaseStruct):
|
||||
occPercent: int
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name='type')
|
||||
id_: str = field(name='id')
|
||||
dropType: int
|
||||
|
||||
|
||||
@ -44,9 +44,9 @@ class ProgressInfo(BaseStruct):
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class ExtraInfo(BaseStruct):
|
||||
@ -139,7 +139,7 @@ class TileAppendInfo(BaseStruct):
|
||||
|
||||
|
||||
class WeeklyForceOpenTable(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
startTime: int
|
||||
endTime: int
|
||||
forceOpenList: List[str]
|
||||
@ -241,7 +241,7 @@ class ApProtectZoneInfo(BaseStruct):
|
||||
|
||||
|
||||
class StageTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
stages: Dict[str, StageData]
|
||||
runeStageGroups: Dict[str, RuneStageGroupData]
|
||||
|
@ -11,9 +11,9 @@ class MiniActTrialDataRuleData(BaseStruct):
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class MiniActTrialDataMiniActTrialRewardData(BaseStruct):
|
||||
@ -38,23 +38,23 @@ class MiniActTrialData(BaseStruct):
|
||||
|
||||
|
||||
class ActArchiveResDataPicArchiveResItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
desc: str
|
||||
assetPath: str
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
subType: Union[str, None]
|
||||
picDescription: str
|
||||
kvId: Union[str, None]
|
||||
|
||||
|
||||
class ActArchiveResDataAudioArchiveResItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
desc: str
|
||||
name: str
|
||||
|
||||
|
||||
class ActArchiveResDataAvgArchiveResItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
desc: str
|
||||
breifPath: Union[str, None]
|
||||
contentPath: str
|
||||
@ -64,7 +64,7 @@ class ActArchiveResDataAvgArchiveResItemData(BaseStruct):
|
||||
|
||||
|
||||
class ActArchiveResDataStoryArchiveResItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
desc: str
|
||||
date: Union[str, None]
|
||||
pic: str
|
||||
@ -86,7 +86,7 @@ class ActArchiveResDataActivityNewsLine(BaseStruct):
|
||||
|
||||
|
||||
class ActArchiveResDataNewsArchiveResItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
desc: str
|
||||
newsType: str
|
||||
newsFormat: ActArchiveResDataNewsFormatData
|
||||
@ -229,7 +229,7 @@ class ActArchiveComponentTable(BaseStruct):
|
||||
|
||||
|
||||
class StoryReviewMetaTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
miniActTrialData: MiniActTrialData
|
||||
actArchiveResData: ActArchiveResData
|
||||
|
@ -6,9 +6,9 @@ from msgspec import field
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class StoryDataConditionStageCondition(BaseStruct):
|
||||
@ -40,7 +40,7 @@ class StoryReviewInfoClientData(BaseStruct):
|
||||
|
||||
|
||||
class StoryReviewGroupClientData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
name: str
|
||||
entryType: str
|
||||
actType: str
|
||||
@ -60,6 +60,6 @@ class StoryReviewGroupClientData(BaseStruct):
|
||||
|
||||
|
||||
class StoryReviewTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
storyreviewtable: Dict[str, StoryReviewGroupClientData]
|
||||
|
@ -6,7 +6,7 @@ from msgspec import field
|
||||
|
||||
|
||||
class StoryDataTrigger(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
key: Union[str, None]
|
||||
useRegex: bool
|
||||
|
||||
@ -27,13 +27,13 @@ class StoryDataCondition(BaseStruct):
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class StoryData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
needCommit: bool
|
||||
repeatable: bool
|
||||
disabled: bool
|
||||
@ -46,6 +46,6 @@ class StoryData(BaseStruct):
|
||||
|
||||
|
||||
class StoryTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
stories: Dict[str, StoryData]
|
||||
|
@ -27,7 +27,7 @@ class RuneData(BaseStruct):
|
||||
|
||||
|
||||
class PackedRuneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
points: float
|
||||
mutexGroupKey: Union[str, None]
|
||||
description: str
|
||||
@ -35,6 +35,6 @@ class PackedRuneData(BaseStruct):
|
||||
|
||||
|
||||
class TechBuffTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
runes: List[PackedRuneData]
|
||||
|
@ -17,7 +17,7 @@ class WorldViewTip(BaseStruct):
|
||||
|
||||
|
||||
class TipTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
tips: List[TipData]
|
||||
worldViewTips: List[WorldViewTip]
|
||||
|
@ -32,7 +32,7 @@ class CharacterDataTraitDataBundle(BaseStruct):
|
||||
class AttributesData(BaseStruct):
|
||||
maxHp: int
|
||||
atk: int
|
||||
def_: int = field(name="def")
|
||||
def_: int = field(name='def')
|
||||
magicResistance: float
|
||||
cost: int
|
||||
blockCnt: int
|
||||
@ -60,9 +60,9 @@ class CharacterDataAttributesKeyFrame(BaseStruct):
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class CharacterDataPhaseData(BaseStruct):
|
||||
@ -123,7 +123,7 @@ class ExternalBuff(BaseStruct):
|
||||
|
||||
|
||||
class CharacterDataPotentialRank(BaseStruct):
|
||||
type_: int = field(name="type")
|
||||
type_: int = field(name='type')
|
||||
description: str
|
||||
buff: Union[ExternalBuff, None]
|
||||
equivalentCost: Union[ItemBundle, None]
|
||||
@ -170,6 +170,6 @@ class TokenCharacterData(BaseStruct):
|
||||
|
||||
|
||||
class TokenTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
tokens: Dict[str, TokenCharacterData]
|
||||
|
@ -6,9 +6,9 @@ from msgspec import field
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class UnlockCondition(BaseStruct):
|
||||
@ -39,7 +39,7 @@ class UniEquipData(BaseStruct):
|
||||
unlockFavorPercent: int
|
||||
missionList: List[str]
|
||||
itemCost: Union[List[ItemBundle], None]
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
traitDescBundle: List[TraitDescBundle]
|
||||
|
||||
|
||||
@ -59,7 +59,7 @@ class SubProfessionData(BaseStruct):
|
||||
|
||||
|
||||
class UniequipData(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
equipDict: Dict[str, UniEquipData]
|
||||
missionList: Dict[str, UniEquipMissionData]
|
||||
|
@ -6,9 +6,9 @@ from msgspec import field
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class UniEquipData(BaseStruct):
|
||||
@ -29,7 +29,7 @@ class UniEquipData(BaseStruct):
|
||||
unlockFavorPoint: int
|
||||
missionList: List[str]
|
||||
itemCost: Union[Dict[str, List[ItemBundle]], None]
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
uniEquipGetTime: int
|
||||
charEquipOrder: int
|
||||
|
||||
@ -61,7 +61,7 @@ class UniEquipTimeInfo(BaseStruct):
|
||||
|
||||
|
||||
class UniEquipTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
equipDict: Dict[str, UniEquipData]
|
||||
missionList: Dict[str, UniEquipMissionData]
|
||||
|
@ -8,7 +8,7 @@ from msgspec import field
|
||||
class ZoneData(BaseStruct):
|
||||
zoneID: str
|
||||
zoneIndex: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
zoneNameFirst: Union[str, None]
|
||||
zoneNameSecond: Union[str, None]
|
||||
zoneNameTitleCurrent: Union[str, None]
|
||||
@ -21,7 +21,7 @@ class ZoneData(BaseStruct):
|
||||
|
||||
class WeeklyZoneData(BaseStruct):
|
||||
daysOfWeek: List[int]
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class ZoneValidInfo(BaseStruct):
|
||||
@ -47,9 +47,9 @@ class MainlineZoneData(BaseStruct):
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
id_: str = field(name='id')
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class RecordRewardInfo(BaseStruct):
|
||||
@ -101,7 +101,7 @@ class ZoneMetaData(BaseStruct):
|
||||
|
||||
|
||||
class ZoneTable(BaseStruct):
|
||||
__version__ = "23-10-31-11-47-45-d410ff"
|
||||
__version__ = '23-10-31-11-47-45-d410ff'
|
||||
|
||||
zones: Dict[str, ZoneData]
|
||||
weeklyAdditionInfo: Dict[str, WeeklyZoneData]
|
||||
|
@ -2,23 +2,25 @@ from __future__ import annotations
|
||||
|
||||
from collections.abc import Callable, Iterable, Iterator
|
||||
from copy import copy, deepcopy
|
||||
from typing import Any, Dict, Tuple, TypeVar, Union
|
||||
from typing_extensions import dataclass_transform
|
||||
from typing import Any, TypeVar
|
||||
|
||||
from msgspec import (
|
||||
Struct,
|
||||
UnsetType,
|
||||
convert,
|
||||
field,
|
||||
)
|
||||
from msgspec import (
|
||||
json as mscjson,
|
||||
)
|
||||
from typing_extensions import dataclass_transform
|
||||
|
||||
Model = TypeVar("Model", bound="BaseStruct")
|
||||
T1 = TypeVar("T1")
|
||||
T2 = TypeVar("T2")
|
||||
Model = TypeVar('Model', bound='BaseStruct')
|
||||
T1 = TypeVar('T1')
|
||||
T2 = TypeVar('T2')
|
||||
|
||||
|
||||
def transUnset(v: Union[T1, UnsetType], d: T2 = None) -> Union[T1, T2]:
|
||||
def transUnset(v: T1 | UnsetType, d: T2 = None) -> T1 | T2:
|
||||
return v if not isinstance(v, UnsetType) else d
|
||||
|
||||
|
||||
@ -39,8 +41,8 @@ class BaseStruct(
|
||||
*,
|
||||
strict: bool = True,
|
||||
from_attributes: bool = False,
|
||||
dec_hook: Union[Callable[[type, Any], Any], None] = None,
|
||||
builtin_types: Union[Iterable[type], None] = None,
|
||||
dec_hook: Callable[[type, Any], Any] | None = None,
|
||||
builtin_types: Iterable[type] | None = None,
|
||||
str_keys: bool = False,
|
||||
) -> Model:
|
||||
if obj is None:
|
||||
@ -57,7 +59,7 @@ class BaseStruct(
|
||||
str_keys=str_keys,
|
||||
)
|
||||
|
||||
def __iter__(self) -> Iterator[Tuple[str, Any]]:
|
||||
def __iter__(self) -> Iterator[tuple[str, Any]]:
|
||||
for field_name in self.__struct_fields__:
|
||||
yield field_name, getattr(self, field_name)
|
||||
|
||||
@ -68,7 +70,7 @@ class BaseStruct(
|
||||
for field_name in self.__struct_fields__:
|
||||
yield getattr(self, field_name)
|
||||
|
||||
def model_dump(self) -> Dict[str, Any]:
|
||||
def model_dump(self) -> dict[str, Any]:
|
||||
return mscjson.decode(mscjson.encode(self))
|
||||
|
||||
def dump_child(self, target: str) -> Any:
|
||||
|
@ -42,19 +42,22 @@ class ArknightsAttendanceAward(Struct):
|
||||
count: int
|
||||
type_: str = field(name='type')
|
||||
|
||||
|
||||
class ArknightsAttendanceModel(Struct):
|
||||
ts: str
|
||||
awards: List[ArknightsAttendanceAward]
|
||||
|
||||
|
||||
################
|
||||
# ArknightsAttendance End
|
||||
################
|
||||
|
||||
|
||||
|
||||
################
|
||||
# ArknightsUserMeModel Start
|
||||
################
|
||||
|
||||
|
||||
class UserMeInfoApply(Struct):
|
||||
nickname: str
|
||||
profile: str
|
||||
@ -137,16 +140,17 @@ class ArknightsUserMeModel(Struct, omit_defaults=True):
|
||||
moderator: UserMeModerator
|
||||
userInfoApply: UserMeInfoApply
|
||||
|
||||
|
||||
################
|
||||
# ArknightsUserMeModel End
|
||||
################
|
||||
|
||||
|
||||
|
||||
################
|
||||
# ArknightsPlayerInfoModel Start
|
||||
################
|
||||
|
||||
|
||||
class PlayerManufactureFormulaInfo(Struct):
|
||||
id_: str = field(name='id')
|
||||
itemId: str
|
||||
|
@ -12,6 +12,7 @@ RESOURCE_PATH = MAIN_PATH / 'resource'
|
||||
GAMEDATA_PATH = RESOURCE_PATH / 'gamedata'
|
||||
SKIN_PATH = RESOURCE_PATH / 'skin'
|
||||
|
||||
|
||||
def init_dir():
|
||||
for i in [
|
||||
MAIN_PATH,
|
||||
@ -19,7 +20,7 @@ def init_dir():
|
||||
PLAYER_PATH,
|
||||
RESOURCE_PATH,
|
||||
GAMEDATA_PATH,
|
||||
SKIN_PATH
|
||||
SKIN_PATH,
|
||||
]:
|
||||
i.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
ArknightsUID_version = "0.1.0"
|
||||
Arknights_Client_version = "2.1.21"
|
||||
Arknights_Res_version = "23-10-31-11-47-45-d410ff"
|
||||
ArknightsUID_version = '0.1.0'
|
||||
Arknights_Client_version = '2.1.21'
|
||||
Arknights_Res_version = '23-10-31-11-47-45-d410ff'
|
||||
|
@ -4,14 +4,13 @@
|
||||
<a href="https://github.com/qwerdvd/ArknightsUID"><img src="https://s2.loli.net/2023/10/30/eFZmkfrni9bBjdV.png" width="256" height="256" alt="ArknightsUID"></a>
|
||||
</p>
|
||||
<h1 align = "center">ArknightsUID 0.1</h1>
|
||||
<h4 align = "center">🚧支持OneBot(QQ)、QQ频道、微信、开黑啦、Telegram的全功能星铁Bot插件🚧</h4>
|
||||
<h4 align = "center">🚧支持OneBot(QQ)、QQ频道、微信、开黑啦、Telegram的全功能明日方舟Bot插件🚧</h4>
|
||||
<div align = "center">
|
||||
<a href="https://docs.sayu-bot.com/" target="_blank">安装文档</a> ·
|
||||
<a href="https://docs.sayu-bot.com/插件帮助/ArknightsUID.html" target="_blank">指令列表</a> ·
|
||||
<a href="https://docs.sayu-bot.com/常见问题/">常见问题</a>
|
||||
</div>
|
||||
|
||||
|
||||
## 丨安装提醒
|
||||
|
||||
> **注意:该插件为[早柚核心(gsuid_core)](https://github.com/Genshin-bots/gsuid_core)的扩展,具体安装方式可参考[GenshinUID](https://github.com/KimigaiiWuyi/GenshinUID)**
|
||||
|
@ -57,7 +57,9 @@ pythonPlatform = "All"
|
||||
|
||||
[tool.ruff]
|
||||
select = ["E", "W", "F", "UP", "C", "T", "PYI", "PT", "Q"]
|
||||
ignore = ["C901", "Q000"]
|
||||
|
||||
ignore = ["C901", "Q000", "Q003"]
|
||||
line-length = 108
|
||||
target-version = "py38"
|
||||
|
||||
[tool.ruff.format]
|
||||
quote-style = "single"
|
||||
|
Loading…
x
Reference in New Issue
Block a user