This commit is contained in:
baiqwerdvd 2024-02-20 14:47:56 +08:00
commit d0c263feaf
No known key found for this signature in database
GPG Key ID: 7378121720ECEBED
14 changed files with 253 additions and 177 deletions

21
.vscode/settings.json vendored
View File

@ -1,7 +1,11 @@
{
"python.languageServer": "Pylance",
"python.analysis.typeCheckingMode": "basic",
"cSpell.words": ["enka", "genshin", "genshinuid"],
"cSpell.words": [
"enka",
"genshin",
"genshinuid"
],
"editor.formatOnSave": true,
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
@ -10,11 +14,22 @@
"source.organizeImports": "explicit"
}
},
"isort.args": ["--profile", "black"],
"isort.args": [
"--profile",
"black"
],
"python.formatting.provider": "black",
"python.linting.flake8Enabled": true,
"python.linting.flake8CategorySeverity.W": "Warning",
"python.linting.flake8CategorySeverity.F": "Warning",
"python.linting.flake8CategorySeverity.E": "Warning",
"python.analysis.extraPaths": ["${workspaceFolder}/../../../../"]
"python.analysis.extraPaths": [
"${workspaceFolder}/../../../"
],
"python.autoComplete.extraPaths": [
"${workspaceFolder}/../../../"
],
"python.analysis.include": [
"${workspaceFolder}/../../../"
]
}

View File

@ -1205,5 +1205,56 @@
],
"Maze": [20],
"Ultra_Use": [120]
},
"1307": {
"Normal": [
0.3000000002793968, 0.3600000003352761, 0.4200000003911555,
0.48000000044703484, 0.5400000005029142, 0.6000000005587935,
0.6600000006146729, 0.7200000006705523, 0.7800000007264316
],
"BPSkill": [
0.45000000041909516, 0.4950000001117587, 0.5400000005029142,
0.5850000001955777, 0.6300000005867332, 0.6750000002793968,
0.7312500011175871, 0.7875000005587935, 0.8437500013969839,
0.9000000008381903, 0.9450000005308539, 0.9900000009220093,
1.0349999996833503, 1.0800000000745058, 1.1249999997671694
],
"BPSkill_D": [
0.1479999995790422, 0.1539999998640269, 0.1600000001490116,
0.1659999997355044, 0.1720000000204891, 0.17799999960698187,
0.18550000013783574, 0.19299999997019768, 0.20050000050105155,
0.20799999963492155, 0.21399999991990626, 0.22000000020489097,
0.22599999979138374, 0.23200000007636845, 0.23799999966286123
],
"Ultra_A": [
0.1500000001396984, 0.1600000001490116, 0.17000000015832484,
0.18000000016763806, 0.1900000001769513, 0.20000000018626451,
0.21250000037252903, 0.2249999998603016, 0.23750000004656613,
0.25000000023283064, 0.26000000024214387, 0.2700000002514571,
0.2800000002607703, 0.29000000027008355, 0.3000000002793968
],
"Ultra": [
0.7200000006705523, 0.7680000001564622, 0.8160000003408641,
0.8640000005252659, 0.9120000007096678, 0.9600000008940697,
1.0200000000186265, 1.0800000000745058, 1.1400000001303852,
1.2000000001862645, 1.2479999996721745, 1.2959999998565763,
1.3440000000409782, 1.39200000022538, 1.440000000409782
],
"Talent": [
0.9600000008940697, 1.1183999998029321, 1.2768000003416091,
1.4352000001817942, 1.5936000007204711, 1.7520000005606562,
1.8960000004153699, 2.040000000037253, 2.220000000204891,
2.400000000372529, 2.5200000004842877, 2.6400000005960464,
2.760000000707805, 2.880000000819564, 3
],
"Talent_UP": [
0.04799999948590994, 0.0559200004208833, 0.06384000065736473,
0.07176000089384615, 0.07968000043183565, 0.08759999996982515,
0.0948000003118068, 0.10199999995529652, 0.11100000003352761,
0.12000000011175871, 0.12599999969825149, 0.1319999999832362,
0.13799999956972897, 0.14399999985471368, 0.1500000001396984
],
"Maze": [20],
"Ultra_Use": [120]
}
}

View File

@ -2,20 +2,20 @@ import re
from pathlib import Path
from typing import Tuple, cast
from gsuid_core.bot import Bot
from gsuid_core.message_models import Button
from gsuid_core.models import Event
from gsuid_core.sv import SV
from PIL import Image
from gsuid_core.sv import SV
from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.message_models import Button
from starrail_damage_cal.map.SR_MAP_PATH import avatarId2Name
from .to_card import api_to_card
from ..utils.convert import get_uid
from ..utils.sr_prefix import PREFIX
from ..utils.error_reply import UID_HINT
from .get_char_img import draw_char_info_img
from ..utils.image.convert import convert_img
from ..utils.resource.RESOURCE_PATH import TEMP_PATH
from ..utils.sr_prefix import PREFIX
from .get_char_img import draw_char_info_img
from .to_card import api_to_card
sv_char_info_config = SV('sr面板设置', pm=2)
sv_get_char_info = SV('sr面板查询', priority=10)

View File

@ -5,16 +5,29 @@ import textwrap
from pathlib import Path
from typing import Dict, Union
from PIL import Image, ImageDraw
from gsuid_core.logger import logger
from starrail_damage_cal.to_data import api_to_dict
from gsuid_core.utils.image.convert import convert_img
from gsuid_core.utils.image.image_tools import draw_text_by_line
from PIL import Image, ImageDraw
from starrail_damage_cal.cal_damage import cal_char_info, cal_info
from starrail_damage_cal.to_data import api_to_dict
from starrail_damage_cal.cal_damage import cal_info, cal_char_info
from ..utils.error_reply import CHAR_HINT
from ..utils.excel.read_excel import light_cone_ranks
from ..utils.fonts.first_world import fw_font_28
from ..utils.excel.read_excel import light_cone_ranks
from ..utils.map.name_covert import name_to_avatar_id, alias_to_char_name
from ..utils.map.SR_MAP_PATH import (
RelicId2Rarity,
AvatarRelicScore,
avatarId2Name,
)
from ..utils.resource.RESOURCE_PATH import (
RELIC_PATH,
SKILL_PATH,
PLAYER_PATH,
WEAPON_PATH,
CHAR_PORTRAIT_PATH,
)
from ..utils.fonts.starrail_fonts import (
sr_font_18,
sr_font_20,
@ -25,19 +38,6 @@ from ..utils.fonts.starrail_fonts import (
sr_font_34,
sr_font_38,
)
from ..utils.map.name_covert import alias_to_char_name, name_to_avatar_id
from ..utils.map.SR_MAP_PATH import (
AvatarRelicScore,
RelicId2Rarity,
avatarId2Name,
)
from ..utils.resource.RESOURCE_PATH import (
CHAR_PORTRAIT_PATH,
PLAYER_PATH,
RELIC_PATH,
SKILL_PATH,
WEAPON_PATH,
)
Excel_path = Path(__file__).parent
with Path.open(Excel_path / 'Excel' / 'SkillData.json', encoding='utf-8') as f:
@ -95,7 +95,7 @@ RELIC_CNT = {
}
async def draw_char_img(char_data: Dict, sr_uid: str, msg: str):
async def draw_char_img(char_data: Dict, sr_uid: str, msg: str) -> Union[bytes, str]:
if isinstance(char_data, str):
return char_data
char = await cal_char_info(char_data)
@ -132,9 +132,7 @@ async def draw_char_img(char_data: Dict, sr_uid: str, msg: str):
# 放角色名
char_img_draw = ImageDraw.Draw(char_info)
char_img_draw.text(
(620, 207), char.char_name, (255, 255, 255), sr_font_38, 'lm'
)
char_img_draw.text((620, 207), char.char_name, (255, 255, 255), sr_font_38, 'lm')
if hasattr(sr_font_38, 'getsize'):
char_name_len = sr_font_38.getsize(char.char_name)[0] # type: ignore
else:
@ -180,11 +178,13 @@ async def draw_char_img(char_data: Dict, sr_uid: str, msg: str):
hp = int(char.base_attributes.get('hp'))
add_hp = int(
char.add_attr.get('HPDelta', 0)
+ hp * char.add_attr.get('HPAddedRatio', 0)
+ hp
* char.add_attr.get(
'HPAddedRatio',
0,
)
attr_bg_draw.text(
(413, 31), f'{hp + add_hp}', white_color, sr_font_26, 'rm'
)
attr_bg_draw.text((413, 31), f'{hp + add_hp}', white_color, sr_font_26, 'rm')
attr_bg_draw.text(
(428, 31),
f'(+{round(add_hp)!s})',
@ -275,9 +275,7 @@ async def draw_char_img(char_data: Dict, sr_uid: str, msg: str):
'rm',
)
# 效果命中
status_probability_base = (
char.add_attr.get('StatusProbabilityBase', 0) * 100
)
status_probability_base = char.add_attr.get('StatusProbabilityBase', 0) * 100
attr_bg_draw.text(
(500, 31 + 48 * 6),
f'{status_probability_base:.1f}%',
@ -402,8 +400,7 @@ async def draw_char_img(char_data: Dict, sr_uid: str, msg: str):
weapon_bg.paste(rank_img, (weapon_name_len + 330, 2), rank_img)
rarity_img = Image.open(
TEXT_PATH
/ f'LightCore_Rarity{char.equipment["equipmentRarity"]}.png'
TEXT_PATH / f'LightCore_Rarity{char.equipment["equipmentRarity"]}.png'
).resize((306, 72))
weapon_bg.paste(rarity_img, (223, 55), rarity_img)
weapon_bg_draw.text(
@ -416,9 +413,9 @@ async def draw_char_img(char_data: Dict, sr_uid: str, msg: str):
# 武器技能
desc = light_cone_ranks[str(char.equipment['equipmentID'])]['desc']
desc_params = light_cone_ranks[str(char.equipment['equipmentID'])][
'params'
][char.equipment['equipmentRank'] - 1]
desc_params = light_cone_ranks[str(char.equipment['equipmentID'])]['params'][
char.equipment['equipmentRank'] - 1
]
for i in range(len(desc_params)):
temp = math.floor(desc_params[i] * 1000) / 10
desc = desc.replace(f'#{i + 1}[i]%', f'{temp!s}%')
@ -588,9 +585,7 @@ async def draw_char_img(char_data: Dict, sr_uid: str, msg: str):
anchor='rm',
)
char_info.paste(
relic_img, RELIC_POS[str(relic['Type'])], relic_img
)
char_info.paste(relic_img, RELIC_POS[str(relic['Type'])], relic_img)
relic_score += single_relic_score
if relic_score > 210:
relic_value_level = Image.open(TEXT_PATH / 'CommonIconSSS.png')
@ -662,9 +657,7 @@ async def draw_char_img(char_data: Dict, sr_uid: str, msg: str):
damage_img = Image.open(TEXT_PATH / 'attack_1.png')
else:
damage_img = Image.open(TEXT_PATH / 'attack_2.png')
char_info.paste(
damage_img, (0, 2028 + damage_num * 48), damage_img
)
char_info.paste(damage_img, (0, 2028 + damage_num * 48), damage_img)
char_img_draw.text(
(55, 2048 + damage_num * 48),
f'{damage_info["name"]}',
@ -819,9 +812,7 @@ async def get_relic_score(
add_value = subValue * 0.3 * 0.5 * weight_dict['AttackDelta'] * 1.0
relic_score += add_value
if subProperty == 'DefenceDelta':
add_value = (
subValue * 0.3 * 0.5 * weight_dict['DefenceDelta'] * 1.0
)
add_value = subValue * 0.3 * 0.5 * weight_dict['DefenceDelta'] * 1.0
relic_score += add_value
if subProperty == 'HPDelta':
add_value = subValue * 0.158 * 0.5 * weight_dict['HPDelta'] * 1.0
@ -830,9 +821,7 @@ async def get_relic_score(
add_value = subValue * 1.5 * weight_dict['AttackAddedRatio'] * 100
relic_score += add_value
if subProperty == 'DefenceAddedRatio':
add_value = (
subValue * 1.19 * weight_dict['DefenceAddedRatio'] * 100
)
add_value = subValue * 1.19 * weight_dict['DefenceAddedRatio'] * 100
relic_score += add_value
if subProperty == 'HPAddedRatio':
add_value = subValue * 1.5 * weight_dict['HPAddedRatio'] * 100
@ -841,18 +830,12 @@ async def get_relic_score(
add_value = subValue * 2.53 * weight_dict['SpeedDelta']
relic_score += add_value
if subProperty == 'BreakDamageAddedRatioBase':
add_value = (
subValue * 1.0 * weight_dict['BreakDamageAddedRatioBase'] * 100
)
add_value = subValue * 1.0 * weight_dict['BreakDamageAddedRatioBase'] * 100
relic_score += add_value
if subProperty == 'StatusProbabilityBase':
add_value = (
subValue * 1.49 * weight_dict['StatusProbabilityBase'] * 100
)
add_value = subValue * 1.49 * weight_dict['StatusProbabilityBase'] * 100
relic_score += add_value
if subProperty == 'StatusResistanceBase':
add_value = (
subValue * 1.49 * weight_dict['StatusResistanceBase'] * 100
)
add_value = subValue * 1.49 * weight_dict['StatusResistanceBase'] * 100
relic_score += add_value
return relic_score

View File

@ -133,17 +133,13 @@ async def get_char_args(
if isinstance(char_data, str):
return char_data
else:
for i, s in enumerate(
['头部', '手部', '躯干', '腿部', '位面球', '连结绳']
):
for i, s in enumerate(['头部', '手部', '躯干', '腿部', '位面球', '连结绳']):
if '赤沙' in part:
continue
if part[-1] in PieceName_ilst[i]:
if isinstance(char_data, str):
return char_data
char_data = await change_equip(
changeuid, char_data, part, s, i
)
char_data = await change_equip(changeuid, char_data, part, s, i)
if not char_data:
change_name = part.replace(part[-1], '')
return f'要替换的{change_name}{s}遗器不存在噢~'
@ -154,9 +150,7 @@ async def get_char_args(
return char_data, weapon, weapon_affix, talent_num
async def change_equip(
uid: str, char_data: Dict, part: str, s: str, i: int
) -> Dict:
async def change_equip(uid: str, char_data: Dict, part: str, s: str, i: int) -> Dict:
char_name = part.replace(part[-1], '').replace(uid, '')
fake_data = await get_char_data(uid, char_name)
if isinstance(fake_data, str):
@ -265,28 +259,18 @@ async def make_new_charinfo(
char_id = await name_to_avatar_id(fake_name)
char_data['avatarId'] = int(char_id)
char_data['avatarName'] = fake_name
char_data['avatarElement'] = avatarId2DamageType[
str(char_data['avatarId'])
]
char_data['avatarRarity'] = str(
avatarId2Rarity[str(char_data['avatarId'])]
)
char_data['avatarElement'] = avatarId2DamageType[str(char_data['avatarId'])]
char_data['avatarRarity'] = str(avatarId2Rarity[str(char_data['avatarId'])])
char_data['avatarPromotion'] = 6
char_data['avatarLevel'] = 80
char_data['avatarSkill'] = await get_skill_list(char_data['avatarId'])
char_data['avatarExtraAbility'] = await get_extra_list(
char_data['avatarId']
)
char_data['avatarAttributeBonus'] = await get_attribute_list(
char_data['avatarId']
)
char_data['avatarExtraAbility'] = await get_extra_list(char_data['avatarId'])
char_data['avatarAttributeBonus'] = await get_attribute_list(char_data['avatarId'])
char_data['RelicInfo'] = []
char_data['avatarEnName'] = avatarId2EnName[str(char_data['avatarId'])]
char_data['rank'] = 0
char_data['rankList'] = []
char_data['baseAttributes'] = await get_baseAttributes(
char_data['avatarId']
)
char_data['baseAttributes'] = await get_baseAttributes(char_data['avatarId'])
char_data['equipmentInfo'] = {}
return char_data
@ -316,13 +300,9 @@ async def get_baseAttributes(
# 速度
base_attributes['speed'] = avatar_promotion_base.SpeedBase.Value
# 暴击率
base_attributes[
'CriticalChanceBase'
] = avatar_promotion_base.CriticalChance.Value
base_attributes['CriticalChanceBase'] = avatar_promotion_base.CriticalChance.Value
# 暴击伤害
base_attributes[
'CriticalDamageBase'
] = avatar_promotion_base.CriticalDamage.Value
base_attributes['CriticalDamageBase'] = avatar_promotion_base.CriticalDamage.Value
# 嘲讽
base_attributes['BaseAggro'] = avatar_promotion_base.BaseAggro.Value
return base_attributes
@ -342,9 +322,7 @@ async def get_attribute_list(
attribute_bonus_temp['statusAdd'] = {}
if status_add:
for property_ in status_add:
attribute_bonus_temp['statusAdd']['property'] = property_[
'type'
]
attribute_bonus_temp['statusAdd']['property'] = property_['type']
attribute_bonus_temp['statusAdd']['name'] = Property2Name[
property_['type']
]
@ -374,9 +352,7 @@ async def get_skill_list(
skill_temp['skillId'] = char_id * 100 + skillid
skill_temp['skillName'] = skillId2Name[str(skill_temp['skillId'])]
skill_temp['skillEffect'] = skillId2Effect[str(skill_temp['skillId'])]
skill_temp['skillAttackType'] = skillId2AttackType[
str(skill_temp['skillId'])
]
skill_temp['skillAttackType'] = skillId2AttackType[str(skill_temp['skillId'])]
skilllevel = 10
if skillid == 1:
skilllevel = 6
@ -429,9 +405,7 @@ async def get_char(
skill_id = item['id']
skill_up_num = item['num']
# 查找skill_id在不在avatarSkill中
for index, skill_item in enumerate(
char_data['avatarSkill']
):
for index, skill_item in enumerate(char_data['avatarSkill']):
if str(skill_id) == str(skill_item['skillId']):
if skill_id[-1] == 1:
skilllevel_max = 7
@ -439,9 +413,7 @@ async def get_char(
skilllevel_max = 12
skilllevel = min(
skilllevel_max,
char_data['avatarSkill'][index][
'skillLevel'
]
char_data['avatarSkill'][index]['skillLevel']
+ skill_up_num,
)
char_data['avatarSkill'][index][
@ -462,13 +434,11 @@ async def get_char(
equipment_info['equipmentLevel'] = 80
equipment_info['equipmentPromotion'] = 6
equipment_info['equipmentRank'] = weapon_affix
equipment_info['equipmentRarity'] = EquipmentID2Rarity[
str(equipmentid)
]
equipment_info['equipmentRarity'] = EquipmentID2Rarity[str(equipmentid)]
equipment_base_attributes = {}
equipment_promotion_base = EquipmentPromotionConfig.Equipment[
str(equipmentid)
]['6']
equipment_promotion_base = EquipmentPromotionConfig.Equipment[str(equipmentid)][
'6'
]
# 生命值
equipment_base_attributes['hp'] = (

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View File

@ -2,19 +2,16 @@ import asyncio
from pathlib import Path
from typing import Dict, List, Tuple, Union
from ..utils.fonts.first_world import fw_font_28
from ..utils.fonts.starrail_fonts import sr_font_24, sr_font_30, sr_font_58
from ..utils.image.convert import convert_img
from ..utils.map.name_covert import avatar_id_to_char_star
from ..utils.resource.RESOURCE_PATH import (
CHAR_ICON_PATH,
CHAR_PREVIEW_PATH,
PLAYER_PATH,
)
from PIL import Image, ImageDraw
from starrail_damage_cal.map.SR_MAP_PATH import avatarId2Name
from starrail_damage_cal.to_data import api_to_dict
from gsuid_core.utils.image.convert import convert_img
from starrail_damage_cal.map.SR_MAP_PATH import avatarId2Name
from gsuid_core.utils.image.image_tools import crop_center_img
from ..utils.fonts.first_world import fw_font_28
from ..utils.map.name_covert import avatar_id_to_char_star
from ..utils.resource.RESOURCE_PATH import PLAYER_PATH, CHAR_PREVIEW_PATH
from ..utils.fonts.starrail_fonts import sr_font_24, sr_font_30, sr_font_58
half_color = (255, 255, 255, 120)
first_color = (29, 29, 29)
@ -23,7 +20,7 @@ white_color = (247, 247, 247)
gray_color = (175, 175, 175)
TEXT_PATH = Path(__file__).parent / 'texture2D'
char_mask = Image.open(TEXT_PATH / 'char_mask.png')
char_mask = Image.open(TEXT_PATH / 'ring_mask.png')
char_bg_mask = Image.open(TEXT_PATH / 'char_bg_mask.png')
tag = Image.open(TEXT_PATH / 'tag.png')
footbar = Image.open(TEXT_PATH / 'footbar.png')
@ -65,29 +62,26 @@ async def draw_enka_card(uid: str, char_list: List, showfrom: int = 0):
return await convert_img(Image.new('RGBA', (0, 1), (255, 255, 255)))
else:
line1 = f'UID {uid} 刷新成功'
line2 = (
f'可以使用 sr查询{char_data_list[0]["avatarName"]} 查询详情角色面板'
)
line2 = f'可以使用 sr查询{char_data_list[0]["avatarName"]} 查询详情角色面板'
char_num = len(char_data_list)
if char_num <= 4:
based_w, based_h = 1380, 926
show_type = 1
else:
show_type = 0
based_w, based_h = 1380, 660 + (char_num - 5) // 5 * 110
if (char_num - 5) % 5 >= 4:
based_h += 110
based_w, based_h = 1380, 310 + (((char_num - 1) // 4) + 1) * 320
img = Image.open(TEXT_PATH / 'shin-w.jpg').resize((based_w, based_h))
img = Image.open(TEXT_PATH / 'shin.jpg')
img = crop_center_img(img, based_w, based_h)
img.paste(tag, (0, 0), tag)
img_draw = ImageDraw.Draw(img, 'RGBA')
# 写底层文字
img_draw.text(
(690, based_h - 16),
(690, based_h - 26),
'--Created by qwerdvd-Designed By Wuyi-Thank for mihomo.me--',
(0, 0, 255),
(22, 22, 22),
fw_font_28,
'mm',
)
@ -151,40 +145,35 @@ async def draw_mihomo_char(index: int, img: Image.Image, char_data: Dict):
async def draw_enka_char(index: int, img: Image.Image, char_data: Dict):
char_id = char_data['avatarId']
char_star = await avatar_id_to_char_star(str(char_id))
char_card = Image.open(TEXT_PATH / f'char_card_{char_star}.png')
char_img = (
Image.open(str(CHAR_ICON_PATH / f'{char_id}.png'))
.convert('RGBA')
.resize((204, 204))
char_card = Image.open(TEXT_PATH / f'ring_{char_star}.png')
_path = CHAR_PREVIEW_PATH / f'{char_id}.png'
char_img = Image.open(_path).convert('RGBA')
char_img = char_img.resize(
(int(char_img.size[0] * 0.76), int(char_img.size[1] * 0.76))
)
char_temp = Image.new('RGBA', (300, 400))
card_temp = Image.new('RGBA', (300, 400))
char_temp.paste(char_img, (19, 57), char_img)
card_temp.paste(char_temp, (0, 0), char_mask)
char_draw = ImageDraw.Draw(card_temp)
char_draw.text(
(144, 285),
char_data['avatarName'],
'white',
sr_font_30,
'mm',
)
char_temp = Image.new('RGBA', (220, 220))
char_temp.paste(char_img, (8, 8), char_img)
char_card.paste(char_temp, (0, 0), char_mask)
if index <= 7:
if img.size[0] <= 1100:
x = 60 + (index % 4) * 220
else:
x = 160 + (index % 4) * 220
img.paste(
char_card,
(x, 187 + (index // 4) * 220),
(113 + (index % 4) * 289, 152 + (index // 4) * 336),
char_card,
)
elif index <= 12:
img.paste(
char_card,
(50 + (index % 8) * 220, 296),
char_card,
)
else:
_i = index - 13
x, y = 50 + (_i % 9) * 220, 512 + (_i // 9) * 220
if _i % 9 >= 5:
y += 110
x = 160 + ((_i - 5) % 9) * 220
img.paste(
char_card,
(x, y),
char_card,
card_temp,
(113 + (index % 4) * 289, 152 + (index // 4) * 336),
card_temp,
)

View File

@ -43,9 +43,9 @@ async def sign_in(sr_uid: str) -> str:
if isinstance(sign_data, int):
logger.warning(f'[SR签到] {sr_uid} 出错, 请检查Cookies是否过期!')
return 'sr签到失败...请检查Cookies是否过期!'
if sign_data.risk_code:
if sign_data.risk_code == 5001 or sign_data.risk_code == 0:
# 出现校验码
if sign_data.risk_code == 5001:
if sign_data.risk_code == 5001 and sign_data.is_risk:
if core_plugins_config.get_config('CaptchaPass').data:
gt = sign_data.gt
ch = sign_data.challenge
@ -76,11 +76,12 @@ async def sign_in(sr_uid: str) -> str:
f'[SR签到] [无感验证] {sr_uid} 该用户重试 {index} 次验证成功!'
)
break
if (int(str(sr_uid)[0]) > 5) and (sign_data.code == 'ok'):
elif (int(str(sr_uid)[0]) > 5) and (sign_data.code == 'ok'):
# 国际服签到无risk_code字段
logger.info(f'[SR国际服签到] {sr_uid} 签到成功!')
break
# 重试超过阈值
else:
logger.warning('[SR签到] 超过请求阈值...')
return 'sr签到失败...出现验证码!\n请过段时间使用[签到]或由管理员[全部重签]或手动至米游社进行签到!'
# 签到失败

View File

@ -89,10 +89,64 @@
"StatusResistanceBase": 0.0,
"AttributeAddedRatio": 1
},
{
"role": "黑天鹅",
"HPDelta": 0.0,
"HPAddedRatio": 0.0,
"AttackDelta": 1,
"AttackAddedRatio": 1,
"DefenceDelta": 0.0,
"DefenceAddedRatio": 0.0,
"SpeedDelta": 1.0,
"CriticalChanceBase": 0.5,
"CriticalDamageBase": 0.5,
"BreakDamageAddedRatioBase": 0.0,
"HealRatio": 0,
"SPRatio": 0.5,
"StatusProbabilityBase": 1,
"StatusResistanceBase": 0.0,
"AttributeAddedRatio": 1
},
{
"role": "花火",
"HPDelta": 0.5,
"HPAddedRatio": 0.5,
"AttackDelta": 0.5,
"AttackAddedRatio": 0.5,
"DefenceDelta": 0.5,
"DefenceAddedRatio": 0.5,
"SpeedDelta": 1.0,
"CriticalChanceBase": 0,
"CriticalDamageBase": 1.0,
"BreakDamageAddedRatioBase": 0.0,
"HealRatio": 0,
"SPRatio": 1.0,
"StatusProbabilityBase": 0.0,
"StatusResistanceBase": 0.5,
"AttributeAddedRatio": 0.0
},
{
"role": "米沙",
"HPDelta": 0.0,
"HPAddedRatio": 0.0,
"AttackDelta": 0.75,
"AttackAddedRatio": 0.75,
"DefenceDelta": 0.0,
"DefenceAddedRatio": 0.0,
"SpeedDelta": 0.75,
"CriticalChanceBase": 1,
"CriticalDamageBase": 1,
"BreakDamageAddedRatioBase": 0.0,
"HealRatio": 0,
"SPRatio": 0.75,
"StatusProbabilityBase": 0.0,
"StatusResistanceBase": 0.0,
"AttributeAddedRatio": 1
},
{
"role": "布洛妮娅",
"HPDelta": 0.75,
"HPAddedRatio": 0.75,
"HPDelta": 0.5,
"HPAddedRatio": 0.5,
"AttackDelta": 0.5,
"AttackAddedRatio": 0.5,
"DefenceDelta": 0.5,

View File

@ -39,6 +39,9 @@
"1302": ["银枝"],
"1305": ["真理医生"],
"1303": ["阮•梅", "阮梅"],
"1306": ["花火"],
"1307": ["黑天鹅"],
"1312": ["米沙"],
"8000": [
"开拓者",
"爷",
@ -120,6 +123,14 @@
"21032": ["镂月裁云之意", "镂月裁云"],
"21033": ["无处可逃"],
"21034": ["今日亦是和平的一日", "和平的一日"],
"21035": ["何物为真"],
"21036": ["美梦小镇大冒险", "大冒险", "美梦小镇"],
"21037": ["最后的赢家"],
"21038": ["在火的远处"],
"21039": ["织造命运之线", "命运之线"],
"21040": ["银河沦陷日"],
"21041": ["好戏开演"],
"21042": ["铭记于心的约定"],
"22000": ["新手任务开始前"],
"23000": ["银河铁道之夜"],
"23001": ["于夜色中", "希儿专武"],
@ -141,6 +152,8 @@
"23018": ["片刻,留在眼底", "片刻留在眼底", "留在眼底"],
"23019": ["镜中故我"],
"23020": ["纯粹思维的洗礼", "思维的洗礼"],
"23021": ["游戏尘寰", "游戏"],
"23022": ["重塑时光之忆", "时光之忆"],
"24000": ["记一位星神的陨落", "星神陨落", "星神的陨落"],
"24001": ["星海巡航"],
"24002": ["记忆的质料"],