mirror of
https://github.com/wangdage12/Snap.Hutao.git
synced 2026-02-18 02:42:15 +08:00
Compare commits
15 Commits
1.17.3.0
...
1.18.0.0_T
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
068eb65fef | ||
|
|
09a8cded2f | ||
|
|
c38fdf30d0 | ||
|
|
bc1ff03d0a | ||
|
|
b288860c3b | ||
|
|
1e40a6e576 | ||
|
|
d342b37dc0 | ||
|
|
179177a77c | ||
|
|
6c68a55d81 | ||
|
|
7bd61c8035 | ||
|
|
c19b71e2c4 | ||
|
|
45b7383fc1 | ||
|
|
c83a2f3e9d | ||
|
|
2bab0baf69 | ||
|
|
2726e74731 |
4
.github/workflows/alpha.yml
vendored
4
.github/workflows/alpha.yml
vendored
@@ -95,7 +95,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Cache NuGet packages
|
- name: Cache NuGet packages
|
||||||
if: ${{ needs.select-runner.outputs.runner == 'windows-latest' }}
|
if: ${{ needs.select-runner.outputs.runner == 'windows-latest' }}
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v5
|
||||||
with:
|
with:
|
||||||
path: ~/.nuget/packages
|
path: ~/.nuget/packages
|
||||||
key: ${{ runner.os }}-nuget-${{ hashFiles('**/Snap.Hutao.csproj') }}
|
key: ${{ runner.os }}-nuget-${{ hashFiles('**/Snap.Hutao.csproj') }}
|
||||||
@@ -113,7 +113,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload signed msix
|
- name: Upload signed msix
|
||||||
if: success() && github.event_name != 'pull_request'
|
if: success() && github.event_name != 'pull_request'
|
||||||
uses: actions/upload-artifact@v5
|
uses: actions/upload-artifact@v6
|
||||||
with:
|
with:
|
||||||
name: Snap.Hutao.Alpha-${{ steps.cake.outputs.version }}
|
name: Snap.Hutao.Alpha-${{ steps.cake.outputs.version }}
|
||||||
path: ${{ github.workspace }}/src/output/Snap.Hutao.Alpha-${{ steps.cake.outputs.version }}.msix
|
path: ${{ github.workspace }}/src/output/Snap.Hutao.Alpha-${{ steps.cake.outputs.version }}.msix
|
||||||
|
|||||||
4
.github/workflows/canary.yml
vendored
4
.github/workflows/canary.yml
vendored
@@ -59,7 +59,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Cache NuGet packages
|
- name: Cache NuGet packages
|
||||||
if: ${{ steps.merge.outputs.continue == 'true' }}
|
if: ${{ steps.merge.outputs.continue == 'true' }}
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v5
|
||||||
with:
|
with:
|
||||||
path: ~/.nuget/packages
|
path: ~/.nuget/packages
|
||||||
key: ${{ runner.os }}-nuget-${{ hashFiles('**/Snap.Hutao.csproj') }}
|
key: ${{ runner.os }}-nuget-${{ hashFiles('**/Snap.Hutao.csproj') }}
|
||||||
@@ -77,7 +77,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload signed msix
|
- name: Upload signed msix
|
||||||
if: ${{ success() && steps.merge.outputs.continue == 'true' }}
|
if: ${{ success() && steps.merge.outputs.continue == 'true' }}
|
||||||
uses: actions/upload-artifact@v5
|
uses: actions/upload-artifact@v6
|
||||||
with:
|
with:
|
||||||
name: Snap.Hutao.Canary-${{ steps.cake.outputs.version }}
|
name: Snap.Hutao.Canary-${{ steps.cake.outputs.version }}
|
||||||
path: ${{ github.workspace }}/src/output/Snap.Hutao.Canary-${{ steps.cake.outputs.version }}.msix
|
path: ${{ github.workspace }}/src/output/Snap.Hutao.Canary-${{ steps.cake.outputs.version }}.msix
|
||||||
|
|||||||
2
.github/workflows/lock_closed_issues.yml
vendored
2
.github/workflows/lock_closed_issues.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
|||||||
action:
|
action:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: dessant/lock-threads@v5
|
- uses: dessant/lock-threads@v6
|
||||||
with:
|
with:
|
||||||
issue-inactive-days: '30'
|
issue-inactive-days: '30'
|
||||||
issue-comment: 'This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related topic.'
|
issue-comment: 'This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related topic.'
|
||||||
|
|||||||
2
.github/workflows/msi-build.yml
vendored
2
.github/workflows/msi-build.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
|||||||
run: dotnet build src/Snap.Hutao/Snap.Hutao.Installer/Snap.Hutao.Installer.wixproj -c Release
|
run: dotnet build src/Snap.Hutao/Snap.Hutao.Installer/Snap.Hutao.Installer.wixproj -c Release
|
||||||
|
|
||||||
- name: Upload MSI Artifact
|
- name: Upload MSI Artifact
|
||||||
uses: actions/upload-artifact@v5
|
uses: actions/upload-artifact@v6
|
||||||
with:
|
with:
|
||||||
name: Snap.Hutao-MSI
|
name: Snap.Hutao-MSI
|
||||||
path: |
|
path: |
|
||||||
|
|||||||
43
README.md
43
README.md
@@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
该版本注入功能暂不可用,并且由于缺失资源和开发能力,不建议长期使用
|
该版本注入功能暂不可用,并且由于缺失资源和开发能力,不建议长期使用
|
||||||
|
|
||||||
|
有条件的话可以加入discord服务器:https://discord.gg/ucH3mgeWpQ
|
||||||
|
|
||||||
**English**
|
**English**
|
||||||
Snap Hutao is an open-source Genshin Impact toolkit under MIT license, designed for modern Windows platform to improve the gaming experience for desktop players.
|
Snap Hutao is an open-source Genshin Impact toolkit under MIT license, designed for modern Windows platform to improve the gaming experience for desktop players.
|
||||||
|
|
||||||
@@ -25,28 +27,16 @@ Snap Hutao is an open-source Genshin Impact toolkit under MIT license, designed
|
|||||||
项目启动位置已升级为 VS2026 的 slnx 格式 Snap.Hutao\src\Snap.Hutao\Snap.Hutao.slnx
|
项目启动位置已升级为 VS2026 的 slnx 格式 Snap.Hutao\src\Snap.Hutao\Snap.Hutao.slnx
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> 要使该项目可以长期运行,我们需要以下资源
|
> 要使该项目可以长期运行,我们需要以下资源
|
||||||
> 1. `src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/DataSigning/SaltConstants.cs`中的新签名值
|
> 1. 元数据的编写
|
||||||
> 2. 元数据的编写
|
> 2. 图片资源
|
||||||
> 3. 图片资源
|
|
||||||
|
已同步原作者的元数据
|
||||||
|
|
||||||
V6.2的元数据已在编写中
|
|
||||||
测试仓库位置:http://server.wdg.cloudns.ch:3000/wdg1122/Snap.Metadata.Test
|
|
||||||
**目前元数据的编写进度:**
|
**目前元数据的编写进度:**
|
||||||
|
|
||||||
| 项目(V6.2) | 是否完成 |
|
| 项目(V6.2) | 是否完成 |
|
||||||
| ----------- | ----------- |
|
| ----------- | ----------- |
|
||||||
| 新角色的基本数据 | ✔️ |
|
| 总体数据 | ✔️ |
|
||||||
| 新版本角色/怪物基础数值 | ❔ |
|
|
||||||
| 新角色的详细资料、名片等 | ❌ |
|
|
||||||
| 新武器 | ✔️ |
|
|
||||||
| 新材料 | ❇️ |
|
|
||||||
| 新怪物 | ❇️ |
|
|
||||||
| 新圣遗物 | / |
|
|
||||||
| 新卡池 | ❇️ |
|
|
||||||
| 新成就 | ✔️ |
|
|
||||||
| 深境螺旋 | 💠 |
|
|
||||||
| 幻想真境剧诗 | 💠 |
|
|
||||||
| 幽境危战 | ✔️ |
|
|
||||||
|
|
||||||
✔️:已完成
|
✔️:已完成
|
||||||
❌:未编写
|
❌:未编写
|
||||||
@@ -81,30 +71,21 @@ https://deepwiki.com/DGP-Studio/Snap.Hutao.Server
|
|||||||
https://github.com/wangdage12/Snap.Metadata
|
https://github.com/wangdage12/Snap.Metadata
|
||||||
|
|
||||||
镜像:
|
镜像:
|
||||||

|

|
||||||
|
|
||||||
http://server.wdg.cloudns.ch:3000/wdg1122/Snap.Metadata
|
http://htgit.wdg.cloudns.ch/wdg1122/Snap.Metadata
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
http://serverjp.wdg.cloudns.ch:3000/wdg1122/Snap.Metadata
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**临时API:**
|
**临时API:**
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
http://server.wdg.cloudns.ch:5222/
|
https://htserver.wdg.cloudns.ch/api/
|
||||||
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
http://serverjp.wdg.cloudns.ch:5222/
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**临时资源站:**
|
**临时资源站:**
|
||||||
http://server.wdg.cloudns.ch:8007/
|
|
||||||
|
|
||||||
http://serverjp.wdg.cloudns.ch:8001/
|
https://htserver.wdg.cloudns.ch/
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<Package
|
<Package
|
||||||
Name="Snap.Hutao"
|
Name="Snap.Hutao"
|
||||||
Manufacturer="Millennium Science Technology R-D Inst"
|
Manufacturer="Millennium Science Technology R-D Inst"
|
||||||
Version="1.0.0.0"
|
Version="1.17.4.0"
|
||||||
UpgradeCode="121203be-60cb-408f-92cc-7080f6598e68"
|
UpgradeCode="121203be-60cb-408f-92cc-7080f6598e68"
|
||||||
Scope="perMachine">
|
Scope="perMachine">
|
||||||
|
|
||||||
|
|||||||
@@ -193,11 +193,39 @@ internal sealed class ProcessFactory
|
|||||||
|
|
||||||
public static void StartUsingShellExecuteRunAs(string fileName)
|
public static void StartUsingShellExecuteRunAs(string fileName)
|
||||||
{
|
{
|
||||||
global::System.Diagnostics.Process.Start(new global::System.Diagnostics.ProcessStartInfo
|
// 尝试从app包中启动
|
||||||
|
try
|
||||||
{
|
{
|
||||||
FileName = fileName,
|
global::System.Diagnostics.Process.Start(new global::System.Diagnostics.ProcessStartInfo
|
||||||
UseShellExecute = true,
|
{
|
||||||
Verb = "runas",
|
FileName = fileName,
|
||||||
});
|
UseShellExecute = true,
|
||||||
|
Verb = "runas",
|
||||||
|
});
|
||||||
|
}catch
|
||||||
|
{
|
||||||
|
// 如果失败且filename含有Snap.Hutao.Unpackaged,就直接用Snap.Hutao.exe重启
|
||||||
|
if (fileName.Contains("Snap.Hutao.Unpackaged"))
|
||||||
|
{
|
||||||
|
string currentDirectory = Directory.GetCurrentDirectory();
|
||||||
|
string unpackagedPath = Path.Combine(currentDirectory, "Snap.Hutao.exe");
|
||||||
|
if (File.Exists(unpackagedPath))
|
||||||
|
{
|
||||||
|
fileName = unpackagedPath;
|
||||||
|
}
|
||||||
|
// 否则抛出异常
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
// 重新尝试启动
|
||||||
|
global::System.Diagnostics.Process.Start(new global::System.Diagnostics.ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = fileName,
|
||||||
|
UseShellExecute = true,
|
||||||
|
Verb = "runas",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
<Identity
|
<Identity
|
||||||
Name="60568DGPStudio.SnapHutao"
|
Name="60568DGPStudio.SnapHutao"
|
||||||
Publisher="CN=35C8E923-85DF-49A7-9172-B39DC6312C52"
|
Publisher="CN=35C8E923-85DF-49A7-9172-B39DC6312C52"
|
||||||
Version="1.17.1.0" />
|
Version="1.17.4.0" />
|
||||||
|
|
||||||
<Properties>
|
<Properties>
|
||||||
<DisplayName>Snap Hutao</DisplayName>
|
<DisplayName>Snap Hutao</DisplayName>
|
||||||
|
|||||||
@@ -24,14 +24,23 @@ internal static class AvatarViewBuilderExtension
|
|||||||
{
|
{
|
||||||
if (detailedCharacter.Costumes is [{ Id: { } id }, ..])
|
if (detailedCharacter.Costumes is [{ Id: { } id }, ..])
|
||||||
{
|
{
|
||||||
MetadataCostume costume = avatar.Costumes.Single(c => c.Id == id);
|
MetadataCostume? costume = avatar.Costumes.SingleOrDefault(c => c.Id == id);
|
||||||
|
|
||||||
|
if (costume != null)
|
||||||
|
{
|
||||||
|
ArgumentNullException.ThrowIfNull(costume.FrontIcon);
|
||||||
|
ArgumentNullException.ThrowIfNull(costume.SideIcon);
|
||||||
|
|
||||||
ArgumentNullException.ThrowIfNull(costume.FrontIcon);
|
// Set to costume icon
|
||||||
ArgumentNullException.ThrowIfNull(costume.SideIcon);
|
builder.View.Icon = AvatarIconConverter.IconNameToUri(costume.FrontIcon);
|
||||||
|
builder.View.SideIcon = AvatarIconConverter.IconNameToUri(costume.SideIcon);
|
||||||
// Set to costume icon
|
}
|
||||||
builder.View.Icon = AvatarIconConverter.IconNameToUri(costume.FrontIcon);
|
else
|
||||||
builder.View.SideIcon = AvatarIconConverter.IconNameToUri(costume.SideIcon);
|
{
|
||||||
|
// Costume not found in metadata, fallback to default avatar icon
|
||||||
|
builder.View.Icon = AvatarIconConverter.IconNameToUri(avatar.Icon);
|
||||||
|
builder.View.SideIcon = AvatarIconConverter.IconNameToUri(avatar.SideIcon);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -10,6 +10,9 @@
|
|||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<UseWinUI>true</UseWinUI>
|
<UseWinUI>true</UseWinUI>
|
||||||
<UseWPF>False</UseWPF>
|
<UseWPF>False</UseWPF>
|
||||||
|
<!-- 配置版本号 -->
|
||||||
|
<Version>1.17.4.0</Version>
|
||||||
|
|
||||||
<UseWindowsForms>False</UseWindowsForms>
|
<UseWindowsForms>False</UseWindowsForms>
|
||||||
<ImplicitUsings>False</ImplicitUsings>
|
<ImplicitUsings>False</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
@@ -288,7 +291,7 @@
|
|||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Snap.Hutao.SourceGeneration" Version="1.3.14">
|
<PackageReference Include="Snap.Hutao.SourceGeneration" Version="1.3.15">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
// Copyright (c) DGP Studio. All rights reserved.
|
|
||||||
// Licensed under the MIT license.
|
|
||||||
|
|
||||||
namespace Snap.Hutao.Web.Hoyolab.DataSigning;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Salt constants for data signing
|
|
||||||
/// Values are obtained from https://github.com/UIGF-org/Hoyolab.Salt
|
|
||||||
/// This file should normally be generated by Snap.Hutao.SourceGeneration.Automation.SaltConstantGenerator
|
|
||||||
/// But is provided manually when the generator fails to fetch values from the network.
|
|
||||||
///
|
|
||||||
/// IMPORTANT: For local builds, you must manually obtain salt values from:
|
|
||||||
/// https://github.com/UIGF-org/Hoyolab.Salt
|
|
||||||
/// </summary>
|
|
||||||
|
|
||||||
internal static class SaltConstants
|
|
||||||
{
|
|
||||||
// Version numbers - Update these according to the current miHoYo app versions
|
|
||||||
public const string CNVersion = "2.95.1";
|
|
||||||
public const string OSVersion = "2.54.0";
|
|
||||||
|
|
||||||
// Salt keys for Chinese (CN) server
|
|
||||||
// These are placeholder values - MUST be replaced with actual values from UIGF-org/Hoyolab.Salt
|
|
||||||
public const string CNK2 = "sfYPEgpxkOe1I3XVMLdwp1Lyt9ORgZsq";
|
|
||||||
public const string CNLK2 = "sidQFEglajEz7FA0Aj7HQPV88zpf17SO";
|
|
||||||
|
|
||||||
// Salt keys for Overseas (OS) server
|
|
||||||
public const string OSK2 = "599uqkwc0dlqu3h6epzjzfhgyyrd44ae";
|
|
||||||
public const string OSLK2 = "rk4xg2hakoi26nljpr099fv9fck1ah10";
|
|
||||||
|
|
||||||
// Note: The actual salt values are security-sensitive and should not be committed
|
|
||||||
// to public repositories. For local builds, obtain them from the UIGF organization
|
|
||||||
// and replace the placeholders above.
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user