Merge pull request #1745 from MaaAssistantArknights/release/v4.3.1

Release v4.3.1
This commit is contained in:
MistEO
2022-09-03 12:58:27 +08:00
committed by GitHub
13 changed files with 173 additions and 147 deletions

View File

@@ -1,39 +1,6 @@
- 新增 刷理智 `博朗台碎石模式`,会在碎石界面等待 1 点理智恢复完成后再碎石 @MistEO
- 新增支持 基建宿舍 自动填充信赖未满干员,及是否按 `未进驻` 筛选干员功能 @Hydrogina @MistEO
- 新增支持 公招 自动上传 [企鹅数据公招统计](https://penguin-stats.cn/result/stage/recruit/recruit) 及 [一图流公招大数据](https://yituliu.site/maarecruitdata) (默认开启),并仅会上传由 MAA 刷出来的公招槽位,规避重复数据 @MistEO @zzyyyl @horror-proton
- 新增支持 自动公招 3 星 Tags 设置 7:40如有需要请进入设置中启用 @horror-proton @MistEO
- 新增支持 刷理智 备选关卡逻辑,如有需要请进入设置中启用 @ABA2396 @zzyyyl
- 新增 界面 支持两个备选关卡,并在活动结束后自动切换关卡导航 @ABA2396
- Using different recruitment profile in overseas clients @MistEO
- 优化 肉鸽 干员招募策略及优先级 @et2012 @zzyyyl @Private233
- 优化 刷理智 代理指挥连续失误四次后,停止刷理智任务 @zzyyyl
- 优化 刷理智 掉落识别检测算法 @horror-proton
- 优化 基建 温蒂组优先级 @MistEO
- 优化 截图 反复出错时的界面提示 @MistEO
- 修复 公招 不使用加急许可的问题 @horror-proton
- 修复 自动战斗 自动编队 `特别关注` 干员无法识别的问题 @MistEO
- 修复 自动战斗 自动编队干员名识别错误 @MistEO
- 修复 自动战斗 史尔特尔 ~~太红了所以~~ 不上场的问题 @MistEO
- 修复 自动战斗 编队干员识别错误 @ABA2396
- 修复 刷理智 IC 活动关卡的导航错误 @ABA2396
- 修复 刷理智 资源关卡全开放时的导航错误 @MistEO
- 修复 刷理智 一处掉落识别错误 @MistEO
- 修复 刷理智 掉落物设置不保存的问题 @ABA2396
- 修复 刷理智 无法识别 EX 关卡并继续刷的问题 @zzyyyl
- 修复 基建 宿舍 会将异格干员放入的问题 @Hydrogina
- 修复 基建 会客室 闪退的问题 @zzyyyl @ABA2396
- 修复 肉鸽 通关后卡住的问题,增加通关识别及界面提示 @MistEO
- 修复 肉鸽 招募不到干员的问题及滑动错误 @MistEO @et2012
- 修复 肉鸽 剧目集界面卡死的问题 @MistEO
- 修复 信用购物 多输入了空格时无法识别的问题 @lhhxxxxx
- 修复 自动战斗 作业编辑器的一些字段错误 @LYZhelloworld
- 修复 自动战斗 偶现干员撤退不掉的问题 @MistEO
- 优化 界面布局,界面细节调整 @MistEO @ABA2396 @LYZhelloworld @zzyyyl @lhhxxxxx @AnnoyingFlowers
- GUI 新增 蓝叠 HyperV 多开的小后门,请参考文档使用 @MistEO
- core 新增支持 刷理智 全部主线关卡导航,新增 AsstRunning 接口 @ABA2396 @MistEO
- 新增 Python 接口增量加载外服资源文件 @MistEO
- 修复 上传 企鹅物流 及 一图流数据 时回调消息不可靠的问题 @MistEO
- 新增 连接安卓手机 相关文档 @Stardust-Djohn @Zirun-wang @MistEO
- 项目文档更新、新增日文说明书 @Tastror @LYZhelloworld @ABA2396
- 项目代码、工程重构及整理,编译问题修复 @zzyyyl @horror-proton @LYZhelloworld @lhhxxxxx @MistEO @Mangolia-club @ChingCdesu
- Github bot 升级,文档整理 @zzyyyl
- 修复 刷理智 活动结束后关卡导航无法实时刷新、保存、及备选关卡显示的问题 @ABA2396
- 修复 自动公招 上传一图流数据时的响应检查错误 @MistEO
- 修复 自动战斗 关技能关不掉的问题 @MistEO
- 修复 基建 偶现不换人的问题 @MistEO
- 优化 基建 控制中枢 歌蕾蒂娅 优先级 @MistEO
- 优化 界面 布局 @MistEO

View File

@@ -10,7 +10,7 @@
"进驻控制中枢时,控制中枢内所有干员的心情每小时恢复+0.05;基建内深海猎人干员获得特殊加成(与部分技能有特殊叠加规则)"
],
"efficient": {
"all": 0.05
"all": 0.04
},
"name": [
"集群狩猎·α"
@@ -22,7 +22,7 @@
"进驻控制中枢时,控制中枢内所有干员的心情每小时恢复+0.05;基建内深海猎人干员获得特殊加成(与部分技能有特殊叠加规则)"
],
"efficient": {
"all": 0.05
"all": 0.04
},
"name": [
"集群狩猎·β"

View File

@@ -5050,7 +5050,7 @@
500,
220
],
"rearDelay": 1000
"rearDelay": 1500
},
"InfrastAddOperatorMfgAggressive": {
"template": "AddOperatorMfgAggressive.png",
@@ -5067,7 +5067,7 @@
80,
80
],
"rearDelay": 1000
"rearDelay": 1500
},
"InfrastAddOperatorTradeGentle": {
"template": "AddOperatorTradeGentle.png",
@@ -5078,7 +5078,7 @@
500,
220
],
"rearDelay": 1000
"rearDelay": 1500
},
"InfrastAddOperatorTradeAggressive": {
"template": "AddOperatorTradeAggressive.png",
@@ -5095,7 +5095,7 @@
80,
80
],
"rearDelay": 1000
"rearDelay": 1500
},
"InfrastAddOperatorReceptionGentle": {
"template": "AddOperatorReceptionGentle.png",
@@ -5106,7 +5106,7 @@
300,
720
],
"rearDelay": 1000
"rearDelay": 1500
},
"InfrastAddOperatorReceptionAggressive": {
"algorithm": "JustReturn",
@@ -5117,7 +5117,7 @@
200,
300
],
"rearDelay": 1000
"rearDelay": 1500
},
"InfrastOperSelected": {
"template": "empty.png",
@@ -6047,6 +6047,7 @@
210,
118
],
"templThreshold": 0.7,
"cache": false,
"action": "ClickSelf",
"rectMove": [

View File

@@ -722,7 +722,7 @@ void asst::AutoRecruitTask::upload_to_penguin(const json::value& details)
Log.info("response:\n", response);
cb_info["details"]["response"] = response;
static const std::regex http_ok_regex(R"(HTTP/.+ 200 OK)");
static const std::regex http_ok_regex(R"(HTTP/.+ 200)");
if (std::regex_search(response, http_ok_regex)) {
callback(AsstMsg::SubTaskCompleted, cb_info);
}
@@ -774,7 +774,7 @@ void asst::AutoRecruitTask::upload_to_yituliu(const json::value& details)
cb_info["details"]["response"] = response;
static const std::regex http_ok_regex(R"(HTTP/.+ 200 OK)");
static const std::regex http_ok_regex(R"(HTTP/.+ 200)");
if (std::regex_search(response, http_ok_regex)) {
callback(AsstMsg::SubTaskCompleted, cb_info);
}

View File

@@ -266,7 +266,7 @@ void asst::StageDropsTaskPlugin::upload_to_penguin()
Log.info("response:\n", response);
cb_info["details"]["response"] = response;
static const std::regex http_ok_regex(R"(HTTP/.+ 200 OK)");
static const std::regex http_ok_regex(R"(HTTP/.+ 200)");
if (std::regex_search(response, http_ok_regex)) {
callback(AsstMsg::SubTaskCompleted, cb_info);
}

View File

@@ -362,7 +362,8 @@
<!-- AboutUser -->
<system:String x:Key="Website">MAA Website</system:String>
<system:String x:Key="Github">Source: GitHub</system:String>
<system:String x:Key="QQgroup">Copilot Json sharing QQ group</system:String>
<system:String x:Key="PrtsPlus">Copilot Json sharing site</system:String>
<system:String x:Key="QQgroup">QQ group:</system:String>
<system:String x:Key="QQgroup1">QQ group 1</system:String>
<system:String x:Key="QQgroup2">QQ group 2</system:String>
<system:String x:Key="QQgroup3">QQ group 3</system:String>

View File

@@ -362,7 +362,8 @@
<!-- About -->
<system:String x:Key="Website">MAA公式サイト</system:String>
<system:String x:Key="Github">ソースコードGitHub</system:String>
<system:String x:Key="QQgroup">自動攻略ファイルシェアQQグループ</system:String>
<system:String x:Key="PrtsPlus">自動攻略ファイルシェアWebサイト</system:String>
<system:String x:Key="QQgroup">QQグループ</system:String>
<system:String x:Key="QQgroup1">グループ1</system:String>
<system:String x:Key="QQgroup2">グループ2</system:String>
<system:String x:Key="QQgroup3">グループ3</system:String>

View File

@@ -362,7 +362,8 @@
<!-- About -->
<system:String x:Key="Website">MAA 공식 웹사이트</system:String>
<system:String x:Key="Github">소스 코드: GitHub</system:String>
<system:String x:Key="QQgroup">자동 작전 작업 공유 QQ그룹</system:String>
<system:String x:Key="PrtsPlus">자동 작전 작업 공유 웹사이트</system:String>
<system:String x:Key="QQgroup">QQ그룹:</system:String>
<system:String x:Key="QQgroup1">QQ그룹1</system:String>
<system:String x:Key="QQgroup2">QQ그룹2</system:String>
<system:String x:Key="QQgroup3">QQ그룹3</system:String>

View File

@@ -361,7 +361,8 @@
<!-- About -->
<system:String x:Key="Website">🍸🍷🍺🍺</system:String>
<system:String x:Key="Github">💃🍺💃🍻💃</system:String>
<system:String x:Key="QQgroup">🕺🍷🍸🍺🍷🕺🍺</system:String>
<system:String x:Key="PrtsPlus">🕺🍷🍸🍺🍷🕺🍺</system:String>
<system:String x:Key="QQgroup">🍻🍻</system:String>
<system:String x:Key="QQgroup1">🍻🍺</system:String>
<system:String x:Key="QQgroup2">🍷💃</system:String>
<system:String x:Key="QQgroup3">🍺🍻</system:String>

View File

@@ -266,7 +266,7 @@
<system:String x:Key="Start">开始</system:String>
<system:String x:Key="CopilotJSONSharing">作业分享</system:String>
<system:String x:Key="CopilotJSONSharing">作业分享平台</system:String>
<system:String x:Key="VideoLink">视频链接</system:String>
<!-- 日志 -->
@@ -362,7 +362,8 @@
<!-- About -->
<system:String x:Key="Website">MAA 官网</system:String>
<system:String x:Key="Github">源码GitHub</system:String>
<system:String x:Key="QQgroup">自动战斗作业分享 Q 群</system:String>
<system:String x:Key="PrtsPlus">自动战斗作业分享平台</system:String>
<system:String x:Key="QQgroup">Q 群:</system:String>
<system:String x:Key="QQgroup1">一群</system:String>
<system:String x:Key="QQgroup2">二群</system:String>
<system:String x:Key="QQgroup3">三群</system:String>

View File

@@ -266,7 +266,7 @@
<system:String x:Key="Start">開始</system:String>
<system:String x:Key="CopilotJSONSharing">作業分享</system:String>
<system:String x:Key="CopilotJSONSharing">作業分享平台</system:String>
<system:String x:Key="VideoLink">影片連結</system:String>
<!-- 日誌 -->
@@ -362,7 +362,8 @@
<!-- About -->
<system:String x:Key="Website">MAA 官網</system:String>
<system:String x:Key="Github">原始碼GitHub</system:String>
<system:String x:Key="QQgroup">自動戰鬥作業分享 Q 群</system:String>
<system:String x:Key="PrtsPlus">自動戰鬥作業分享網站</system:String>
<system:String x:Key="QQgroup">Q 群:</system:String>
<system:String x:Key="QQgroup1">一群</system:String>
<system:String x:Key="QQgroup2">二群</system:String>
<system:String x:Key="QQgroup3">三群</system:String>

View File

@@ -41,13 +41,20 @@
Margin="5"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Style="{StaticResource TextBlockDefault}"
Text="{DynamicResource QQgroup}" />
Style="{StaticResource TextBlockDefault}">
<Hyperlink
Click="Hyperlink_Click"
NavigateUri="https://prts.plus/"
TextDecorations="None">
<TextBlock Text="{DynamicResource PrtsPlus}" />
</Hyperlink>
</TextBlock>
<TextBlock
Margin="5"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Style="{StaticResource TextBlockDefault}">
<TextBlock Text="{DynamicResource QQgroup}" />
<Hyperlink
Click="Hyperlink_Click"
NavigateUri="https://jq.qq.com/?_wv=1027&amp;k=xRh6gqQZ"

View File

@@ -294,77 +294,6 @@ namespace MeoAsstGui
TaskItemViewModels = new ObservableCollection<DragItemViewModel>(temp_order_list);
AllStageList = new List<CombData>();
if (DateTime.UtcNow.AddHours(8).Date < new DateTime(2022, 9, 1, 4, 0, 0))
{
var limit = new List<CombData>
{
// SideStory「理想城长夏狂欢季」活动
new CombData { Display = "IC-9", Value = "IC-9" },
new CombData { Display = "IC-8", Value = "IC-8" },
new CombData { Display = "IC-7", Value = "IC-7" },
};
AllStageList.AddRange(limit);
}
else
{
AllStageList.Add(new CombData { Display = Localization.GetString("ClosedStage"), Value = _closedStage });
Stage1 = _closedStage;
}
var resident = new List<CombData>
{
// 「当前/上次」关卡导航
new CombData { Display = Localization.GetString("DefaultStage"), Value = string.Empty },
// 主线关卡
new CombData { Display = "1-7", Value = "1-7" },
// 资源本
new CombData { Display = Localization.GetString("CE-6"), Value = "CE-6" },
new CombData { Display = Localization.GetString("AP-5"), Value = "AP-5" },
new CombData { Display = Localization.GetString("CA-5"), Value = "CA-5" },
new CombData { Display = Localization.GetString("LS-6"), Value = "LS-6" },
// 剿灭模式
new CombData { Display = Localization.GetString("Annihilation"), Value = "Annihilation" },
// 芯片本
new CombData { Display = Localization.GetString("PR-A-1"), Value = "PR-A-1" },
new CombData { Display = Localization.GetString("PR-A-2"), Value = "PR-A-2" },
new CombData { Display = Localization.GetString("PR-B-1"), Value = "PR-B-1" },
new CombData { Display = Localization.GetString("PR-B-2"), Value = "PR-B-2" },
new CombData { Display = Localization.GetString("PR-C-1"), Value = "PR-C-1" },
new CombData { Display = Localization.GetString("PR-C-2"), Value = "PR-C-2" },
new CombData { Display = Localization.GetString("PR-D-1"), Value = "PR-D-1" },
new CombData { Display = Localization.GetString("PR-D-2"), Value = "PR-D-2" },
// 老版本「当前/上次」关卡导航
// new CombData { Display = Localization.GetString("CurrentStage"), Value = string.Empty },
// new CombData { Display = Localization.GetString("LastBattle"), Value = "LastBattle" },
// SideStory「绿野幻梦」活动
// new CombData { Display = "DV-6", Value = "DV-6" },
// new CombData { Display = "DV-7", Value = "DV-7" },
// new CombData { Display = "DV-8", Value = "DV-8" },
// SideStory「尘影余音」活动
// new CombData { Display = "LE-7", Value = "LE-7" },
// new CombData { Display = "LE-6", Value = "LE-6" },
// new CombData { Display = "LE-5", Value = "LE-5" },
// SideStory「愚人号」活动关卡
// new CombData { Display = "SN-8", Value = "SN-8" },
// new CombData { Display = "SN-9", Value = "SN-9" },
// new CombData { Display = "SN-10", Value = "SN-10" },
// SideStory「风雪过境」活动关卡
// new CombData { Display = "BI-7", Value = "BI-7" },
// new CombData { Display = "BI-8", Value = "BI-8" }
};
AllStageList.AddRange(resident);
_stageAvailableInfo = new Dictionary<string, Tuple<List<DayOfWeek>, string>>
{
{ "CE-6", new Tuple<List<DayOfWeek>, string>(new List<DayOfWeek> { DayOfWeek.Tuesday, DayOfWeek.Thursday, DayOfWeek.Saturday, DayOfWeek.Sunday }, Localization.GetString("CETip")) },
@@ -402,6 +331,76 @@ namespace MeoAsstGui
/// </summary>
public void UpdateStageList()
{
AllStageList = new List<CombData>();
var limitTime = new DateTime(2022, 9, 3, 4, 0, 0);
var limit = new List<CombData>
{
// SideStory「理想城长夏狂欢季」活动
new CombData { Display = "IC-9", Value = "IC-9" },
new CombData { Display = "IC-8", Value = "IC-8" },
new CombData { Display = "IC-7", Value = "IC-7" },
// SideStory「绿野幻梦」活动
// new CombData { Display = "DV-6", Value = "DV-6" },
// new CombData { Display = "DV-7", Value = "DV-7" },
// new CombData { Display = "DV-8", Value = "DV-8" },
// SideStory「尘影余音」活动
// new CombData { Display = "LE-7", Value = "LE-7" },
// new CombData { Display = "LE-6", Value = "LE-6" },
// new CombData { Display = "LE-5", Value = "LE-5" },
// SideStory「愚人号」活动关卡
// new CombData { Display = "SN-8", Value = "SN-8" },
// new CombData { Display = "SN-9", Value = "SN-9" },
// new CombData { Display = "SN-10", Value = "SN-10" },
// SideStory「风雪过境」活动关卡
// new CombData { Display = "BI-7", Value = "BI-7" },
// new CombData { Display = "BI-8", Value = "BI-8" }
};
if (DateTime.Compare(DateTime.UtcNow.AddHours(8), limitTime) < 0)
{
AllStageList.AddRange(limit);
}
else
{
AllStageList.Add(new CombData { Display = Localization.GetString("ClosedStage"), Value = _closedStage });
}
var resident = new List<CombData>
{
// 「当前/上次」关卡导航
new CombData { Display = Localization.GetString("DefaultStage"), Value = string.Empty },
// 主线关卡
new CombData { Display = "1-7", Value = "1-7" },
// 资源本
new CombData { Display = Localization.GetString("CE-6"), Value = "CE-6" },
new CombData { Display = Localization.GetString("AP-5"), Value = "AP-5" },
new CombData { Display = Localization.GetString("CA-5"), Value = "CA-5" },
new CombData { Display = Localization.GetString("LS-6"), Value = "LS-6" },
// 剿灭模式
new CombData { Display = Localization.GetString("Annihilation"), Value = "Annihilation" },
// 芯片本
new CombData { Display = Localization.GetString("PR-A-1"), Value = "PR-A-1" },
new CombData { Display = Localization.GetString("PR-A-2"), Value = "PR-A-2" },
new CombData { Display = Localization.GetString("PR-B-1"), Value = "PR-B-1" },
new CombData { Display = Localization.GetString("PR-B-2"), Value = "PR-B-2" },
new CombData { Display = Localization.GetString("PR-C-1"), Value = "PR-C-1" },
new CombData { Display = Localization.GetString("PR-C-2"), Value = "PR-C-2" },
new CombData { Display = Localization.GetString("PR-D-1"), Value = "PR-D-1" },
new CombData { Display = Localization.GetString("PR-D-2"), Value = "PR-D-2" },
// 老版本「当前/上次」关卡导航
// new CombData { Display = Localization.GetString("CurrentStage"), Value = string.Empty },
// new CombData { Display = Localization.GetString("LastBattle"), Value = "LastBattle" },
};
AllStageList.AddRange(resident);
ObservableCollection<CombData> newList;
var settingsModel = _container.Get<SettingsViewModel>();
if (settingsModel.HideUnavailableStage)
@@ -433,21 +432,61 @@ namespace MeoAsstGui
return;
}
StageList = newList;
bool hasSavedValue = false;
foreach (var item in StageList)
if (settingsModel.HideUnavailableStage)
{
if (item.Value == Stage)
var stage1 = Stage1;
StageList = newList;
if (stage1 == null)
{
hasSavedValue = true;
break;
Stage1 = string.Empty;
}
else
{
foreach (var item in StageList)
{
if (item.Value == stage1)
{
Stage1 = stage1;
return;
}
}
Stage1 = string.Empty;
}
}
if (!hasSavedValue)
else
{
Stage1 = string.Empty;
// StageList更新会导致stage1stage2stage3变成null要先备份一下
var stage1 = Stage1;
var stage2 = Stage2;
var stage3 = Stage3;
StageList = newList;
if (DateTime.Compare(DateTime.UtcNow.AddHours(8), limitTime) >= 0)
{
foreach (var item in limit)
{
if (item.Value == stage1)
{
stage1 = _closedStage;
}
if (item.Value == stage2)
{
stage2 = _closedStage;
}
if (item.Value == stage2)
{
stage3 = _closedStage;
}
}
}
Stage1 = stage1;
Stage2 = stage2;
Stage3 = stage3;
}
}
@@ -1415,19 +1454,25 @@ namespace MeoAsstGui
}
}
foreach (var stage in newList)
if (_stage2 != _closedStage)
{
if (stage.Value == _stage2)
foreach (var stage in newList)
{
return _stage2;
if (stage.Value == _stage2)
{
return _stage2;
}
}
}
foreach (var stage in newList)
if (_stage3 != _closedStage)
{
if (stage.Value == _stage3)
foreach (var stage in newList)
{
return _stage3;
if (stage.Value == _stage3)
{
return _stage3;
}
}
}
}