mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-07 21:00:21 +08:00
update
This commit is contained in:
@@ -1,17 +1,15 @@
|
||||
|
||||
import os
|
||||
from util.init_result import image
|
||||
import nonebot
|
||||
import random
|
||||
from .config import PRTS_FIVE_P, PRTS_FOUR_P, PRTS_SIX_P, PRTS_THREE_P
|
||||
from .config import PRTS_FIVE_P, PRTS_FOUR_P, PRTS_SIX_P, PRTS_THREE_P, DRAW_PATH, PRTS_FLAG
|
||||
from .update_game_info import update_info
|
||||
from .util import generate_img, init_star_rst, max_card, BaseData, UpEvent, set_list
|
||||
from .util import generate_img, init_star_rst, max_card, BaseData, UpEvent, set_list, get_star, format_card_information
|
||||
from .init_card_pool import init_game_pool
|
||||
from pathlib import Path
|
||||
from .announcement import PrtsAnnouncement
|
||||
from dataclasses import dataclass
|
||||
from util.init_result import image
|
||||
from configs.path_config import DRAW_PATH
|
||||
from services.log import logger
|
||||
try:
|
||||
import ujson as json
|
||||
except ModuleNotFoundError:
|
||||
@@ -36,13 +34,15 @@ class Operator(BaseData):
|
||||
|
||||
async def prts_draw(count: int = 300):
|
||||
cnlist = ['★★★★★★', '★★★★★', '★★★★', '★★★']
|
||||
operator_list, operator_dict, six_list, star_list, six_olist = _format_card_information(count)
|
||||
star_list = [0, 0, 0, 0]
|
||||
operator_list, operator_dict, six_list, star_list, six_index_list = format_card_information(count, star_list,
|
||||
_get_operator_card)
|
||||
up_list = []
|
||||
if _CURRENT_POOL_TITLE:
|
||||
for x in UP_OPERATOR:
|
||||
for operator in x.operators:
|
||||
up_list.append(operator)
|
||||
rst = init_star_rst(star_list, cnlist, six_list, six_olist, up_list)
|
||||
rst = init_star_rst(star_list, cnlist, six_list, six_index_list, up_list)
|
||||
if count > 90:
|
||||
operator_list = set_list(operator_list)
|
||||
pool_info = "当前up池: " if _CURRENT_POOL_TITLE else ""
|
||||
@@ -63,22 +63,19 @@ async def update_prts_info():
|
||||
@driver.on_startup
|
||||
async def init_data():
|
||||
global prts_dict, ALL_OPERATOR
|
||||
if not os.path.exists(DRAW_PATH + '/draw_card_config/prts.json'):
|
||||
await update_prts_info()
|
||||
else:
|
||||
with open(DRAW_PATH + '/draw_card_config/prts.json', 'r', encoding='utf8') as f:
|
||||
prts_dict = json.load(f)
|
||||
ALL_OPERATOR = init_game_pool('prts', prts_dict, Operator)
|
||||
await _init_up_char()
|
||||
# print([x.operators for x in UP_OPERATOR if x.star == 5 and x.zoom > 1])
|
||||
if PRTS_FLAG:
|
||||
if not os.path.exists(DRAW_PATH + 'prts.json'):
|
||||
await update_prts_info()
|
||||
else:
|
||||
with open(DRAW_PATH + 'prts.json', 'r', encoding='utf8') as f:
|
||||
prts_dict = json.load(f)
|
||||
ALL_OPERATOR = init_game_pool('prts', prts_dict, Operator)
|
||||
await _init_up_char()
|
||||
|
||||
|
||||
# 抽取干员
|
||||
def _get_operator_card():
|
||||
star = random.sample([6, 5, 4, 3],
|
||||
counts=[int(PRTS_SIX_P * 100), int(PRTS_FIVE_P * 100),
|
||||
int(PRTS_FOUR_P * 100), int(PRTS_THREE_P * 100)],
|
||||
k=1)[0]
|
||||
star = get_star([6, 5, 4, 3], [PRTS_SIX_P, PRTS_FIVE_P, PRTS_FOUR_P, PRTS_THREE_P])
|
||||
if _CURRENT_POOL_TITLE:
|
||||
zooms = [x.zoom for x in UP_OPERATOR if x.star == star]
|
||||
zoom = 0
|
||||
@@ -108,39 +105,16 @@ def _get_operator_card():
|
||||
else:
|
||||
acquire_operator = random.choice([x for x in ALL_OPERATOR if x.star == star
|
||||
and not any([x.limited, x.event_only, x.recruit_only])])
|
||||
# print(f'{acquire_operator}: {star}')
|
||||
return acquire_operator, abs(star - 6)
|
||||
|
||||
|
||||
# 整理抽卡数据
|
||||
def _format_card_information(count: int):
|
||||
operator_list = [] # 抽取的干员列表
|
||||
operator_dict = {} # 抽取各干员次数
|
||||
star_list = [0, 0, 0, 0] # 各个星级次数
|
||||
six_list = [] # 六星干员列表
|
||||
six_index_list = [] # 六星干员获取位置
|
||||
for i in range(count):
|
||||
operator, code = _get_operator_card()
|
||||
star_list[code] += 1
|
||||
if code == 0:
|
||||
six_list.append(operator.name)
|
||||
six_index_list.append(i)
|
||||
try:
|
||||
operator_dict[operator.name] += 1
|
||||
except KeyError:
|
||||
operator_dict[operator.name] = 1
|
||||
operator_list.append(operator)
|
||||
return operator_list, operator_dict, six_list, star_list, six_index_list
|
||||
|
||||
|
||||
# 获取up干员和概率
|
||||
async def _init_up_char():
|
||||
global up_char_dict, _CURRENT_POOL_TITLE
|
||||
global _CURRENT_POOL_TITLE
|
||||
up_char_dict = await PrtsAnnouncement.update_up_char()
|
||||
# print(up_char_dict)
|
||||
_CURRENT_POOL_TITLE = up_char_dict['title']
|
||||
up_char_dict = up_char_dict['up_char']
|
||||
logger.info(f'成功获取明日方舟当前up信息...当前up池: {_CURRENT_POOL_TITLE}')
|
||||
print(f'成功获取明日方舟当前up信息...当前up池: {_CURRENT_POOL_TITLE}')
|
||||
average_dict = {'6': {}, '5': {}, '4': {}}
|
||||
for star in up_char_dict.keys():
|
||||
for key in up_char_dict[star].keys():
|
||||
@@ -148,7 +122,6 @@ async def _init_up_char():
|
||||
average_dict[star][up_char_dict[star][key]].append(key)
|
||||
else:
|
||||
average_dict[star][up_char_dict[star][key]] = [key]
|
||||
up_char_dict = {'6': {}, '5': {}, '4': {}}
|
||||
for star in average_dict.keys():
|
||||
for str_zoom in average_dict[star].keys():
|
||||
if str_zoom[0] == '权':
|
||||
|
||||
Reference in New Issue
Block a user