diff --git a/.gitea/workflows/build-trigger.yaml b/.gitea/workflows/build-trigger.yaml new file mode 100644 index 0000000..6b66d9f --- /dev/null +++ b/.gitea/workflows/build-trigger.yaml @@ -0,0 +1,35 @@ +name: Trigger Main Build Pipeline + +on: + push: + tags: + - '*' + +jobs: + trigger-main-build: + runs-on: ubuntu-latest + steps: + - name: Setup Git Config + run: | + git config --global user.email "noreply@sp-tarkov.com" + git config --global user.name "TriggerBot" + + - name: Clone Build Repository + run: | + rm -rf ../Build + git clone https://${{ secrets.BUILD_USERNAME }}:${{ secrets.BUILD_ACCESS_TOKEN }}@dev.sp-tarkov.com/SPT-AKI/Build.git ../Build + + - name: Trigger Branch + working-directory: ../Build + run: git checkout -b trigger || git checkout trigger + + - name: Create Trigger File + working-directory: ../Build + run: | + echo "${GITHUB_REF_NAME}" > .gitea/trigger + git add .gitea/trigger + git commit -m "Launcher triggered build with tag '${GITHUB_REF_NAME}'" + + - name: Force Push + working-directory: ../Build + run: git push --force origin trigger diff --git a/README.md b/README.md index ffa68cb..e69e5e5 100644 --- a/README.md +++ b/README.md @@ -19,9 +19,10 @@ git config --local user.email "USERNAME@SOMETHING.com" ## Requirements -- Escape From Tarkov 26535 +- Escape From Tarkov 29197 - .NET 6 SDK - Visual Studio Code +- [PowerShell v7](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows) ### For UI Development @@ -31,7 +32,7 @@ git config --local user.email "USERNAME@SOMETHING.com" ## Build 1. Run `dotnet tool restore` from command line inside project folder 2. Open Launcher.code-workspace in Visual Studio Code. -3. Run the build task: (top toolbar) Terminal -> Run Build Task... +3. Run the build task: (top toolbar) Terminal -> Run Build Task... (requires running twice on first run) 4. Copy-paste all files inside `Build` into `game root directory`, overwrite when prompted. ## Server Endpoints diff --git a/project/.config/dotnet-tools.json b/project/.config/dotnet-tools.json deleted file mode 100644 index 31e896e..0000000 --- a/project/.config/dotnet-tools.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": 1, - "isRoot": true, - "tools": { - "cake.tool": { - "version": "2.0.0", - "commands": [ - "dotnet-cake" - ] - } - } -} \ No newline at end of file diff --git a/project/Aki.Build/Aki.Build.csproj b/project/Aki.Build/Aki.Build.csproj index 29c7892..f78b6e4 100644 --- a/project/Aki.Build/Aki.Build.csproj +++ b/project/Aki.Build/Aki.Build.csproj @@ -1,22 +1,13 @@  - - net6.0 - win10-x64 - + + net8.0 + win-x64 + - - - - - - - - - - - - + + + diff --git a/project/Aki.ByteBanger/Aki.ByteBanger.csproj b/project/Aki.ByteBanger/Aki.ByteBanger.csproj index fff7812..ae2821e 100644 --- a/project/Aki.ByteBanger/Aki.ByteBanger.csproj +++ b/project/Aki.ByteBanger/Aki.ByteBanger.csproj @@ -1,7 +1,7 @@  - net6.0 + net8.0 diff --git a/project/Aki.ByteBanger/PatchUtil.cs b/project/Aki.ByteBanger/PatchUtil.cs index f5b67b5..e032cf1 100644 --- a/project/Aki.ByteBanger/PatchUtil.cs +++ b/project/Aki.ByteBanger/PatchUtil.cs @@ -24,7 +24,7 @@ namespace Aki.ByteBanger PatchedLength = patched.Length }; - using (SHA256CryptoServiceProvider sha256 = new SHA256CryptoServiceProvider()) + using (SHA256 sha256 = SHA256.Create()) { pi.OriginalChecksum = sha256.ComputeHash(original); pi.PatchedChecksum = sha256.ComputeHash(patched); @@ -97,7 +97,7 @@ namespace Aki.ByteBanger public static PatchResult Patch(byte[] input, PatchInfo pi) { byte[] inputHash; - using (SHA256CryptoServiceProvider sha256 = new SHA256CryptoServiceProvider()) + using (SHA256 sha256 = SHA256.Create()) { inputHash = sha256.ComputeHash(input); } @@ -114,7 +114,7 @@ namespace Aki.ByteBanger Array.Copy(itm.Data, 0, patchedData, itm.Offset, itm.Data.Length); byte[] patchedHash; - using (SHA256CryptoServiceProvider sha256 = new SHA256CryptoServiceProvider()) + using (SHA256 sha256 = SHA256.Create()) { patchedHash = sha256.ComputeHash(patchedData); } diff --git a/project/Aki.Launcher.Base/Aki.Launcher.Base.csproj b/project/Aki.Launcher.Base/Aki.Launcher.Base.csproj index 7f8cf16..3f9a5fc 100644 --- a/project/Aki.Launcher.Base/Aki.Launcher.Base.csproj +++ b/project/Aki.Launcher.Base/Aki.Launcher.Base.csproj @@ -1,7 +1,7 @@ - net6.0 + net8.0 Aki.Launch diff --git a/project/Aki.Launcher.Base/Controllers/AccountManager.cs b/project/Aki.Launcher.Base/Controllers/AccountManager.cs index e2ae19f..6e302a4 100644 --- a/project/Aki.Launcher.Base/Controllers/AccountManager.cs +++ b/project/Aki.Launcher.Base/Controllers/AccountManager.cs @@ -8,11 +8,13 @@ */ +using System; using Aki.Launcher.Helpers; using Aki.Launcher.MiniCommon; using Aki.Launcher.Models.Aki; using Aki.Launcher.Models.Launcher; using System.Threading.Tasks; +using Aki.Launcher.Controllers; namespace Aki.Launcher { @@ -135,6 +137,8 @@ namespace Aki.Launcher { return AccountStatus.NoConnection; } + + LogManager.Instance.Info($"Account Registered: {username}"); return Login(username, password); } @@ -159,16 +163,20 @@ namespace Aki.Launcher if(Json.Deserialize(json)) { SelectedAccount = null; + + LogManager.Instance.Info($"Account Removed: {data.username}"); return AccountStatus.OK; } else { + LogManager.Instance.Error($"Failed to remove account: {data.username}"); return AccountStatus.UpdateFailed; } } catch { + LogManager.Instance.Error($"Failed to remove account: {data.username} - NO CONNECTION"); return AccountStatus.NoConnection; } } @@ -271,15 +279,18 @@ namespace Aki.Launcher if (json != STATUS_OK) { + LogManager.Instance.Error($"Failed to wipe account: {data.username}"); return AccountStatus.UpdateFailed; } } catch { + LogManager.Instance.Error($"Failed to wipe account: {data.username} - NO CONNECTION"); return AccountStatus.NoConnection; } SelectedAccount.edition = edition; + LogManager.Instance.Info($"Account Wiped: {data.username} -> {edition}"); return AccountStatus.OK; } } diff --git a/project/Aki.Launcher.Base/Controllers/GameStarter.cs b/project/Aki.Launcher.Base/Controllers/GameStarter.cs index 4131ac3..de50288 100644 --- a/project/Aki.Launcher.Base/Controllers/GameStarter.cs +++ b/project/Aki.Launcher.Base/Controllers/GameStarter.cs @@ -57,23 +57,32 @@ namespace Aki.Launcher public async Task LaunchGame(ServerInfo server, AccountInfo account, string gamePath) { + LogManager.Instance.Info(">>> Launching Game"); + LogManager.Instance.Info($">>> Account: {account.username}"); + LogManager.Instance.Info($">>> Server : {server.backendUrl}"); // setup directories if (IsInstalledInLive()) { - LogManager.Instance.Warning("Failed installed in live check"); + LogManager.Instance.Error("[LaunchGame] Installed in Live :: YES"); return GameStarterResult.FromError(-1); } - + + LogManager.Instance.Info("[LaunchGame] Installed in Live :: NO"); + + LogManager.Instance.Info("[LaunchGame] Setup Game Files ..."); SetupGameFiles(gamePath); if (!ValidationUtil.Validate()) { - LogManager.Instance.Warning("Failed validation check"); + LogManager.Instance.Error("[LaunchGame] Game Validation :: FAILED"); return GameStarterResult.FromError(-2); } + + LogManager.Instance.Info("[LaunchGame] Game Validation :: OK"); if (account.wipe) { + LogManager.Instance.Info("[LaunchGame] Wipe profile requested"); RemoveRegistryKeys(); CleanTempFiles(); } @@ -83,9 +92,12 @@ namespace Aki.Launcher if (!File.Exists(clientExecutable)) { - LogManager.Instance.Warning($"Could not find {clientExecutable}"); + LogManager.Instance.Error("[LaunchGame] Valid Game Path :: FAILED"); + LogManager.Instance.Error($"Could not find {clientExecutable}"); return GameStarterResult.FromError(-6); } + + LogManager.Instance.Info("[LaunchGame] Valid Game Path :: OK"); // apply patches ProgressReportingPatchRunner patchRunner = new ProgressReportingPatchRunner(gamePath); @@ -96,10 +108,12 @@ namespace Aki.Launcher } catch (TaskCanceledException) { - LogManager.Instance.Warning("Failed to apply assembly patch"); + LogManager.Instance.Error("[LaunchGame] Applying Patch :: FAILED"); return GameStarterResult.FromError(-4); } + LogManager.Instance.Info("[LaunchGame] Applying Patch :: OK"); + //start game var args = $"-force-gfx-jobs native -token={account.id} -config={Json.Serialize(new ClientConfig(server.backendUrl))}"; @@ -107,6 +121,7 @@ namespace Aki.Launcher if (_showOnly) { Console.WriteLine($"{clientExecutable} {args}"); + LogManager.Instance.Info("[LaunchGame] NOOP :: show only"); } else { @@ -118,6 +133,7 @@ namespace Aki.Launcher }; Process.Start(clientProcess); + LogManager.Instance.Info("[LaunchGame] Game process started"); } return GameStarterResult.FromSuccess(); @@ -160,6 +176,7 @@ namespace Aki.Launcher if (File.Exists(file.FullName)) { File.Delete(file.FullName); + LogManager.Instance.Warning($"File removed :: found in live dir: {file.FullName}"); isInstalledInLive = true; } } @@ -169,6 +186,7 @@ namespace Aki.Launcher if (Directory.Exists(directory.FullName)) { RemoveFilesRecurse(directory); + LogManager.Instance.Warning($"Directory removed :: found in live dir: {directory.FullName}"); isInstalledInLive = true; } } @@ -237,6 +255,7 @@ namespace Aki.Launcher foreach (var value in key.GetValueNames()) { key.DeleteValue(value); + LogManager.Instance.Debug($"Removing reg key: {key.Name}"); } } catch (Exception ex) @@ -266,6 +285,8 @@ namespace Aki.Launcher bool RemoveFilesRecurse(DirectoryInfo basedir) { + LogManager.Instance.Info($"Recursive Removal: {basedir}"); + if (!basedir.Exists) { return true; @@ -286,6 +307,7 @@ namespace Aki.Launcher { file.IsReadOnly = false; file.Delete(); + LogManager.Instance.Debug($" -> del file: {file.FullName}"); } // remove directory diff --git a/project/Aki.Launcher.Base/Controllers/LogManager.cs b/project/Aki.Launcher.Base/Controllers/LogManager.cs index 8a2a127..9b9c5e5 100644 --- a/project/Aki.Launcher.Base/Controllers/LogManager.cs +++ b/project/Aki.Launcher.Base/Controllers/LogManager.cs @@ -17,35 +17,42 @@ namespace Aki.Launcher.Controllers /// public class LogManager { - //TODO - update this to use reflection to get the calling method, class, etc private static LogManager _instance; - public static LogManager Instance => _instance ?? (_instance = new LogManager()); - private string filepath; + public static LogManager Instance => _instance ??= new LogManager(); + private readonly string _filePath; + private readonly string _logFile; - public LogManager() + private LogManager() { - filepath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "user", "logs"); + _filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "user", "logs"); + _logFile = Path.Combine(_filePath, "launcher.log"); + + if (File.Exists(_logFile)) + { + File.Delete(_logFile); + } + + Write($" ==== Launcher Started ===="); } - public void Write(string text) + private void Write(string text) { - if (!Directory.Exists(filepath)) + if (!Directory.Exists(_filePath)) { - Directory.CreateDirectory(filepath); + Directory.CreateDirectory(_filePath); } - string filename = Path.Combine(filepath, "launcher.log"); - File.AppendAllLines(filename, new[] { $"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}]{text}" }); + File.AppendAllLines(_logFile, new[] { $"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}]{text}" }); } - public void Debug(string text) => Write($"[Debug]{text}"); + public void Debug(string text) => Write($"[Debug] {text}"); - public void Info(string text) => Write($"[Info]{text}"); + public void Info(string text) => Write($"[Info] {text}"); - public void Warning(string text) => Write($"[Warning]{text}"); + public void Warning(string text) => Write($"[Warning] {text}"); - public void Error(string text) => Write($"[Error]{text}"); + public void Error(string text) => Write($"[Error] {text}"); - public void Exception(Exception ex) => Write($"[Exception]{ex.Message}\nStacktrace:\n{ex.StackTrace}"); + public void Exception(Exception ex) => Write($"[Exception] {ex.Message}\nStacktrace:\n{ex.StackTrace}"); } } diff --git a/project/Aki.Launcher.Base/Helpers/LauncherSettingsProvider.cs b/project/Aki.Launcher.Base/Helpers/LauncherSettingsProvider.cs index aa2d571..771b513 100644 --- a/project/Aki.Launcher.Base/Helpers/LauncherSettingsProvider.cs +++ b/project/Aki.Launcher.Base/Helpers/LauncherSettingsProvider.cs @@ -14,6 +14,7 @@ using Newtonsoft.Json; using System; using System.ComponentModel; using System.IO; +using Aki.Launcher.Controllers; namespace Aki.Launcher.Helpers { @@ -142,6 +143,8 @@ namespace Aki.Launcher.Helpers { if (!File.Exists(LauncherSettingsProvider.DefaultSettingsFileLocation)) { + LogManager.Instance.Warning("Launcher config not found"); + LogManager.Instance.Info($"Creating launcher config: {LauncherSettingsProvider.DefaultSettingsFileLocation}"); LauncherStartGameAction = LauncherAction.MinimizeAction; UseAutoLogin = true; GamePath = Environment.CurrentDirectory; @@ -149,6 +152,8 @@ namespace Aki.Launcher.Helpers Server = new ServerSetting { Name = "SPT-AKI", Url = "http://127.0.0.1:6969" }; SaveSettings(); } + + LogManager.Instance.Info($"Using launcher config at: {LauncherSettingsProvider.DefaultSettingsFileLocation}"); } public event PropertyChangedEventHandler PropertyChanged; diff --git a/project/Aki.Launcher.Base/Helpers/LocalizationProvider.cs b/project/Aki.Launcher.Base/Helpers/LocalizationProvider.cs index 39a5df3..f469137 100644 --- a/project/Aki.Launcher.Base/Helpers/LocalizationProvider.cs +++ b/project/Aki.Launcher.Base/Helpers/LocalizationProvider.cs @@ -16,6 +16,7 @@ using System.ComponentModel; using System.Globalization; using System.IO; using System.Linq; +using Aki.Launcher.Controllers; namespace Aki.Launcher.Helpers { @@ -41,7 +42,8 @@ namespace Aki.Launcher.Helpers public static void LoadLocaleFromFile(string localeRomanName) { - LocaleData newLocale = Json.LoadClassWithoutSaving(Path.Join(DefaultLocaleFolderPath, $"{localeRomanName}.json")); + var localePath = Path.Join(DefaultLocaleFolderPath, $"{localeRomanName}.json"); + LocaleData newLocale = Json.LoadClassWithoutSaving(localePath); if (newLocale != null) { @@ -54,9 +56,11 @@ namespace Aki.Launcher.Helpers LauncherSettingsProvider.Instance.SaveSettings(); LocaleChanged(null, EventArgs.Empty); + + return; } - //could possibly raise an event here to say why the local wasn't changed. + LogManager.Instance.Error($"Could not load locale: {localePath}"); } public static void TryAutoSetLocale() @@ -172,12 +176,17 @@ namespace Aki.Launcher.Helpers englishLocale.i_understand = "I Understand"; englishLocale.game_version_mismatch_format_2 = "SPT is unable to run, this is because SPT expected to find EFT version '{1}',\nbut instead found version '{0}'\n\nEnsure you've downgraded your EFT as described in the install guide\non the page you downloaded SPT from"; englishLocale.description = "Description"; - englishLocale.server_mods = "Server Mods"; - englishLocale.profile_mods = "Profile Mods"; englishLocale.author = "Author"; englishLocale.wipe_on_start = "Wipe profile on game start"; englishLocale.copy_live_settings_question = "Would you like to copy your live game settings to spt"; englishLocale.mod_not_in_server_warning = "This mod was found in your profile, but is not loaded on the server"; + englishLocale.active_server_mods = "Active Server Mods"; + englishLocale.active_server_mods_info_text = "These mods are currently running on the server"; + englishLocale.inactive_server_mods = "Inactive Server Mods"; + englishLocale.inactive_server_mods_info_text = + "These mods have not been loaded by the server, but your profile has used them in the past"; + englishLocale.open_link_question_format_1 = "Are you sure you want to open the following link: \n{0}"; + englishLocale.open_link = "Open Link"; #endregion Directory.CreateDirectory(LocalizationProvider.DefaultLocaleFolderPath); @@ -1576,38 +1585,6 @@ namespace Aki.Launcher.Helpers } #endregion - #region server_mods - private string _server_mods; - public string server_mods - { - get => _server_mods; - set - { - if (_server_mods != value) - { - _server_mods = value; - RaisePropertyChanged(nameof(server_mods)); - } - } - } - #endregion - - #region profile_mods - private string _profile_mods; - public string profile_mods - { - get => _profile_mods; - set - { - if (_profile_mods != value) - { - _profile_mods = value; - RaisePropertyChanged(nameof(profile_mods)); - } - } - } - #endregion - #region author private string _author; public string author @@ -1672,6 +1649,111 @@ namespace Aki.Launcher.Helpers } } #endregion + + #region active_server_mods + private string _active_server_mods; + public string active_server_mods + { + get => _active_server_mods; + set + { + if (_active_server_mods != value) + { + _active_server_mods = value; + RaisePropertyChanged(nameof(active_server_mods)); + } + } + } + #endregion + + #region active_server_mods_info_text + + private string _active_server_mods_info_text; + + public string active_server_mods_info_text + { + get => _active_server_mods_info_text; + set + { + if (_active_server_mods_info_text != value) + { + _active_server_mods_info_text = value; + RaisePropertyChanged(nameof(active_server_mods_info_text)); + } + } + } + #endregion + + #region inactive_server_mods + private string _inactive_server_mods; + public string inactive_server_mods + { + get => _inactive_server_mods; + set + { + if (_inactive_server_mods != value) + { + _inactive_server_mods = value; + RaisePropertyChanged(nameof(inactive_server_mods)); + } + } + } + #endregion + + #region inactive_server_mods_info_text + + private string _inactive_server_mods_info_text; + + public string inactive_server_mods_info_text + { + get => _inactive_server_mods_info_text; + set + { + if (_inactive_server_mods_info_text != value) + { + _inactive_server_mods_info_text = value; + RaisePropertyChanged(nameof(inactive_server_mods_info_text)); + } + } + } + #endregion + + #region open_link_question_format_1 + + private string _open_link_question_format_1; + + public string open_link_question_format_1 + { + get => _open_link_question_format_1; + set + { + if (_open_link_question_format_1 != value) + { + _open_link_question_format_1 = value; + RaisePropertyChanged(nameof(open_link_question_format_1)); + } + } + } + #endregion + + #region open_link + + private string _open_link; + + public string open_link + { + get => _open_link; + set + { + if (_open_link != value) + { + _open_link = value; + RaisePropertyChanged(nameof(open_link)); + } + } + } + #endregion + #endregion public event PropertyChangedEventHandler PropertyChanged; diff --git a/project/Aki.Launcher.Base/Models/Aki/AkiMod.cs b/project/Aki.Launcher.Base/Models/Aki/AkiMod.cs index 7bd2dc8..4f0b81d 100644 --- a/project/Aki.Launcher.Base/Models/Aki/AkiMod.cs +++ b/project/Aki.Launcher.Base/Models/Aki/AkiMod.cs @@ -7,5 +7,6 @@ public string Author { get; set; } public string Name { get; set; } public string Version { get; set; } + public string Url { get; set; } } } diff --git a/project/Aki.Launcher.Base/Models/Aki/AkiVersion.cs b/project/Aki.Launcher.Base/Models/Aki/AkiVersion.cs index b4c2d1e..68ba98e 100644 --- a/project/Aki.Launcher.Base/Models/Aki/AkiVersion.cs +++ b/project/Aki.Launcher.Base/Models/Aki/AkiVersion.cs @@ -59,5 +59,10 @@ namespace Aki.Launcher.Models.Aki { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property)); } + + public override string ToString() + { + return HasTag ? $"{Major}.{Minor}.{Build}-{Tag}" : $"{Major}.{Minor}.{Build}"; + } } } diff --git a/project/Aki.Launcher.Base/Models/Launcher/ModInfoCollection.cs b/project/Aki.Launcher.Base/Models/Launcher/ModInfoCollection.cs index 7a80a7f..aa6b4c3 100644 --- a/project/Aki.Launcher.Base/Models/Launcher/ModInfoCollection.cs +++ b/project/Aki.Launcher.Base/Models/Launcher/ModInfoCollection.cs @@ -20,7 +20,7 @@ namespace Aki.Launcher.Models.Launcher } } } - + private int _profileModsCount; public int ProfileModsCount { @@ -35,20 +35,6 @@ namespace Aki.Launcher.Models.Launcher } } - private bool _hasProfileOnlyMods; - public bool HasProfileOnlyMods - { - get => _hasProfileOnlyMods; - set - { - if (_hasProfileOnlyMods != value) - { - _hasProfileOnlyMods = value; - RaisePropertyChanged(nameof(HasProfileOnlyMods)); - } - } - } - private bool _hasMods; public bool HasMods { @@ -63,7 +49,8 @@ namespace Aki.Launcher.Models.Launcher } } - public ObservableCollection Mods { get; private set; } = new ObservableCollection(); + public ObservableCollection ActiveMods { get; private set; } = new ObservableCollection(); + public ObservableCollection InactiveMods { get; private set; } = new ObservableCollection(); public ModInfoCollection() { @@ -73,15 +60,15 @@ namespace Aki.Launcher.Models.Launcher ServerModsCount = serverMods?.Count() ?? 0; ProfileModsCount = profileMods?.Count() ?? 0; - foreach (var serverMod in serverMods) + foreach (var activeMod in serverMods) { - serverMod.InServer = true; - Mods.Add(serverMod); + activeMod.InServer = true; + ActiveMods.Add(activeMod); } - foreach (var profileMod in profileMods) + foreach (var inactiveMod in profileMods) { - var existingMod = Mods.Where(x => x.Name == profileMod.Name && x.Version == profileMod.Version && x.Author == profileMod.Author).FirstOrDefault(); + var existingMod = ActiveMods.Where(x => x.Name == inactiveMod.Name && x.Version == inactiveMod.Version && x.Author == inactiveMod.Author).FirstOrDefault(); if (existingMod != null) { @@ -89,12 +76,11 @@ namespace Aki.Launcher.Models.Launcher continue; } - profileMod.InProfile = true; - Mods.Add(profileMod); + inactiveMod.InProfile = true; + InactiveMods.Add(inactiveMod); } - HasMods = Mods.Count() > 0; - HasProfileOnlyMods = Mods.Where(x => x.InProfile && !x.InServer).Count() > 0; + HasMods = ActiveMods.Count > 0 || InactiveMods.Count > 0; } public event PropertyChangedEventHandler PropertyChanged; diff --git a/project/Aki.Launcher/Aki.Launcher.csproj b/project/Aki.Launcher/Aki.Launcher.csproj index 29ff631..357388d 100644 --- a/project/Aki.Launcher/Aki.Launcher.csproj +++ b/project/Aki.Launcher/Aki.Launcher.csproj @@ -1,8 +1,8 @@  WinExe - net6.0 - win10-x64 + net8.0 + win-x64 true enable Assets\icon.ico diff --git a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Chinese (Simplified).json b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Chinese (Simplified).json index 9ddeb28..99f6f19 100644 --- a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Chinese (Simplified).json +++ b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Chinese (Simplified).json @@ -81,13 +81,17 @@ "i_understand": "我了解", "game_version_mismatch_format_2": "SPT无法运行,这是由于SPT需要EFT版本 '{1}',\n但现有版本是 '{0}'\n\n确保你已经按照你下载SPT的页面上的\n安装指导的描述降级你的EFT", "description": "描述", - "server_mods": "Server Mods", - "profile_mods": "Profile Mods", "author": "Author", "load_live_settings": "Load Live Settings", "load_live_settings_succeeded": "Game settings copied from live", "load_live_settings_failed": "Failed to copy live settings", "wipe_on_start": "Wipe profile on game start", "copy_live_settings_question": "Would you like to copy your live game settings to spt", - "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server" + "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server", + "active_server_mods": "Active Server Mods", + "active_server_mods_info_text": "These mods are currently running on the server", + "inactive_server_mods": "Inactive Server Mods", + "inactive_server_mods_info_text": "These mods have not been loaded by the server, but your profile has used them in the past", + "open_link_question_format_1": "Are you sure you want to open the following link: \n{0}", + "open_link": "Open Link" } diff --git a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Chinese (Traditional).json b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Chinese (Traditional).json index 59cad68..ecafdf6 100644 --- a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Chinese (Traditional).json +++ b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Chinese (Traditional).json @@ -81,13 +81,17 @@ "i_understand": "I Understand", "game_version_mismatch_format_2": "SPT is unable to run, this is because SPT expected to find EFT version '{1}',\nbut instead found version '{0}'\n\nEnsure you've downgraded your EFT as described in the install guide\non the page you downloaded SPT from", "description": "Description", - "server_mods": "Server Mods", - "profile_mods": "Profile Mods", "author": "Author", "load_live_settings": "Load Live Settings", "load_live_settings_succeeded": "Game settings copied from live", "load_live_settings_failed": "Failed to copy live settings", "wipe_on_start": "Wipe profile on game start", "copy_live_settings_question": "Would you like to copy your live game settings to spt", - "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server" + "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server", + "active_server_mods": "Active Server Mods", + "active_server_mods_info_text": "These mods are currently running on the server", + "inactive_server_mods": "Inactive Server Mods", + "inactive_server_mods_info_text": "These mods have not been loaded by the server, but your profile has used them in the past", + "open_link_question_format_1": "Are you sure you want to open the following link: \n{0}", + "open_link": "Open Link" } \ No newline at end of file diff --git a/project/Aki.Launcher/Aki_Data/Launcher/Locales/English.json b/project/Aki.Launcher/Aki_Data/Launcher/Locales/English.json index f84bd3f..64b4ab0 100644 --- a/project/Aki.Launcher/Aki_Data/Launcher/Locales/English.json +++ b/project/Aki.Launcher/Aki_Data/Launcher/Locales/English.json @@ -81,13 +81,17 @@ "i_understand": "I Understand", "game_version_mismatch_format_2": "SPT is unable to run, this is because SPT expected to find EFT version '{1}',\nbut instead found version '{0}'\n\nEnsure you've downgraded your EFT as described in the install guide\non the page you downloaded SPT from", "description": "Description", - "server_mods": "Server Mods", - "profile_mods": "Profile Mods", "author": "Author", "load_live_settings": "Load Live Settings", "load_live_settings_succeeded": "Game settings copied from live", "load_live_settings_failed": "Failed to copy live settings", "wipe_on_start": "Wipe profile on game start", "copy_live_settings_question": "Would you like to copy your live game settings to spt", - "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server" + "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server", + "active_server_mods": "Active Server Mods", + "active_server_mods_info_text": "These mods are currently running on the server", + "inactive_server_mods": "Inactive Server Mods", + "inactive_server_mods_info_text": "These mods have not been loaded by the server, but your profile has used them in the past", + "open_link_question_format_1": "Are you sure you want to open the following link: \n{0}", + "open_link": "Open Link" } \ No newline at end of file diff --git a/project/Aki.Launcher/Aki_Data/Launcher/Locales/French.json b/project/Aki.Launcher/Aki_Data/Launcher/Locales/French.json index acda7fb..a1c4d11 100644 --- a/project/Aki.Launcher/Aki_Data/Launcher/Locales/French.json +++ b/project/Aki.Launcher/Aki_Data/Launcher/Locales/French.json @@ -81,13 +81,17 @@ "i_understand": "I Understand", "game_version_mismatch_format_2": "SPT is unable to run, this is because SPT expected to find EFT version '{1}',\nbut instead found version '{0}'\n\nEnsure you've downgraded your EFT as described in the install guide\non the page you downloaded SPT from", "description": "Description", - "server_mods": "Server Mods", - "profile_mods": "Profile Mods", "author": "Author", "load_live_settings": "Load Live Settings", "load_live_settings_succeeded": "Game settings copied from live", "load_live_settings_failed": "Failed to copy live settings", "wipe_on_start": "Wipe profile on game start", "copy_live_settings_question": "Would you like to copy your live game settings to spt", - "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server" + "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server", + "active_server_mods": "Active Server Mods", + "active_server_mods_info_text": "These mods are currently running on the server", + "inactive_server_mods": "Inactive Server Mods", + "inactive_server_mods_info_text": "These mods have not been loaded by the server, but your profile has used them in the past", + "open_link_question_format_1": "Are you sure you want to open the following link: \n{0}", + "open_link": "Open Link" } \ No newline at end of file diff --git a/project/Aki.Launcher/Aki_Data/Launcher/Locales/German.json b/project/Aki.Launcher/Aki_Data/Launcher/Locales/German.json index 26108c2..b87e533 100644 --- a/project/Aki.Launcher/Aki_Data/Launcher/Locales/German.json +++ b/project/Aki.Launcher/Aki_Data/Launcher/Locales/German.json @@ -81,13 +81,17 @@ "i_understand": "I Understand", "game_version_mismatch_format_2": "SPT is unable to run, this is because SPT expected to find EFT version '{1}',\nbut instead found version '{0}'\n\nEnsure you've downgraded your EFT as described in the install guide\non the page you downloaded SPT from", "description": "Description", - "server_mods": "Server Mods", - "profile_mods": "Profile Mods", "author": "Author", "load_live_settings": "Load Live Settings", "load_live_settings_succeeded": "Game settings copied from live", "load_live_settings_failed": "Failed to copy live settings", "wipe_on_start": "Wipe profile on game start", "copy_live_settings_question": "Would you like to copy your live game settings to spt", - "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server" + "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server", + "active_server_mods": "Active Server Mods", + "active_server_mods_info_text": "These mods are currently running on the server", + "inactive_server_mods": "Inactive Server Mods", + "inactive_server_mods_info_text": "These mods have not been loaded by the server, but your profile has used them in the past", + "open_link_question_format_1": "Are you sure you want to open the following link: \n{0}", + "open_link": "Open Link" } \ No newline at end of file diff --git a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Italian.json b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Italian.json index 6b838c9..cee5e8c 100644 --- a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Italian.json +++ b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Italian.json @@ -81,13 +81,17 @@ "i_understand": "Accetto", "game_version_mismatch_format_2": "SPT non riesce ad avviarsi, questo è perché SPT si aspettava la versione di EFT '{1}',\nmentre invece tu hai la versione '{0}'\n\nAssicurati di aver downgradato correttamente EFT come descritto nella guida all'installazione\nche hai trovato sulla pagina web da cui hai scaricato SPT", "description": "Descrizione", - "server_mods": "Server Mods", - "profile_mods": "Profile Mods", "author": "Author", "load_live_settings": "Load Live Settings", "load_live_settings_succeeded": "Game settings copied from live", "load_live_settings_failed": "Failed to copy live settings", "wipe_on_start": "Wipe profile on game start", "copy_live_settings_question": "Would you like to copy your live game settings to spt", - "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server" + "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server", + "active_server_mods": "Active Server Mods", + "active_server_mods_info_text": "These mods are currently running on the server", + "inactive_server_mods": "Inactive Server Mods", + "inactive_server_mods_info_text": "These mods have not been loaded by the server, but your profile has used them in the past", + "open_link_question_format_1": "Are you sure you want to open the following link: \n{0}", + "open_link": "Open Link" } \ No newline at end of file diff --git a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Japanese.json b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Japanese.json index 4cd3b99..56a3321 100644 --- a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Japanese.json +++ b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Japanese.json @@ -81,13 +81,17 @@ "i_understand": "了解", "game_version_mismatch_format_2": "SPT を実行できません。これは、SPT が EFT バージョン '{1}' を検出することを期待していたためです\n代わりにバージョン '{0}' を検出しました\n\nインストール ガイドの説明に従って EFT をダウングレードしたことを確認してください\n SPT をダウンロードしたページ", "description": "Description", - "server_mods": "Server Mods", - "profile_mods": "Profile Mods", "author": "Author", "load_live_settings": "Load Live Settings", "load_live_settings_succeeded": "Game settings copied from live", "load_live_settings_failed": "Failed to copy live settings", "wipe_on_start": "Wipe profile on game start", "copy_live_settings_question": "Would you like to copy your live game settings to spt", - "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server" + "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server", + "active_server_mods": "Active Server Mods", + "active_server_mods_info_text": "These mods are currently running on the server", + "inactive_server_mods": "Inactive Server Mods", + "inactive_server_mods_info_text": "These mods have not been loaded by the server, but your profile has used them in the past", + "open_link_question_format_1": "Are you sure you want to open the following link: \n{0}", + "open_link": "Open Link" } \ No newline at end of file diff --git a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Korean.json b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Korean.json index f7af75b..01a7e48 100644 --- a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Korean.json +++ b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Korean.json @@ -81,13 +81,17 @@ "i_understand": "이해하였습니다", "game_version_mismatch_format_2": "당신의 게임 버전은 '{0}'이며 호환되는 버전은 '{1}' 입니다.\n\n게임 실행에 문제가 발생하거나 되지 않을 수 있습니다.", "description": "설명", - "server_mods": "서버 모드", - "profile_mods": "프로필 모드", "author": "개발자", "load_live_settings": "공식(Live) 서버의 설정 불러오기", "load_live_settings_succeeded": "공식(Live) 서버 설정을 불러왔습니다", "load_live_settings_failed": "공식(Live) 서버 설정 불러오기에 실패하였습니다", "wipe_on_start": "게임 시작 시 프로필 초기화", "copy_live_settings_question": "공식(Live) 서버에서 사용하던 설정 파일을 SPT에 복사하시겠습니까?", - "mod_not_in_server_warning":"SPT 서버에 없는 모드가 플레이어 프로필에서 발견되었습니다" + "mod_not_in_server_warning":"SPT 서버에 없는 모드가 플레이어 프로필에서 발견되었습니다", + "active_server_mods": "Active Server Mods", + "active_server_mods_info_text": "These mods are currently running on the server", + "inactive_server_mods": "Inactive Server Mods", + "inactive_server_mods_info_text": "These mods have not been loaded by the server, but your profile has used them in the past", + "open_link_question_format_1": "Are you sure you want to open the following link: \n{0}", + "open_link": "Open Link" } \ No newline at end of file diff --git a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Polish.json b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Polish.json index 9c2d2dc..3542d09 100644 --- a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Polish.json +++ b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Polish.json @@ -81,13 +81,17 @@ "i_understand": "Rozumiem", "game_version_mismatch_format_2": "SPT nie może zostać uruchomiony, ponieważ SPT oczekiwał wersji EFT '{1}',\nale zamiast tego znalazł wersję '{0}'\n\nUpewnij się, że zainstalowałeś starszą wersję EFT, zgodnie z instrukcją instalacji\nna stronie, z której pobrałeś SPT", "description": "Opis", - "server_mods": "Mody serwera", - "profile_mods": "Mody profilu", "author": "Autor", "load_live_settings": "Wczytaj ustawienia EFT", "load_live_settings_succeeded": "Ustawienia gry skopiowane z EFT", "load_live_settings_failed": "Nie udało się skopiować ustawień EFT", "wipe_on_start": "Wipe profile on game start", "copy_live_settings_question": "Would you like to copy your live game settings to spt", - "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server" + "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server", + "active_server_mods": "Active Server Mods", + "active_server_mods_info_text": "These mods are currently running on the server", + "inactive_server_mods": "Inactive Server Mods", + "inactive_server_mods_info_text": "These mods have not been loaded by the server, but your profile has used them in the past", + "open_link_question_format_1": "Are you sure you want to open the following link: \n{0}", + "open_link": "Open Link" } \ No newline at end of file diff --git a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Russian.json b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Russian.json index 5bd6d44..158bb8c 100644 --- a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Russian.json +++ b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Russian.json @@ -81,13 +81,17 @@ "i_understand": "Я понимаю", "game_version_mismatch_format_2": "Ваша версия игры: '{0}' и совместимая версия: '{1}'.\n\nИгра может работать некорректно или не работать вообще.", "description": "Описание", - "server_mods": "Серверные моды", - "profile_mods": "Моды профиля", "author": "Автор", "load_live_settings": "Загрузить настройкий онлайн-версии", "load_live_settings_succeeded": "Настройки игры скопированы из онлайн-версии", "load_live_settings_failed": "Не удалось скопировать настройки онлайн-версии", - "wipe_on_start": "Wipe profile on game start", - "copy_live_settings_question": "Would you like to copy your live game settings to spt", - "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server" + "wipe_on_start": "Очистить профиль при старте игры", + "copy_live_settings_question": "Хотите скопировать настройки онлайн-версии в spt?", + "mod_not_in_server_warning":"Этот мод был найден в вашем профиле, но не загружен на сервер", + "active_server_mods": "Активные серверные моды", + "active_server_mods_info_text": "На данный момент эти моды работают на сервере", + "inactive_server_mods": "Неактивные серверные моды", + "inactive_server_mods_info_text": "Эти моды не были загружены сервером, но ваш профиль использовал их раньше", + "open_link_question_format_1": "Вы уверены, что хотите открыть следующую ссылку? \n{0}", + "open_link": "Открыть ссылку" } \ No newline at end of file diff --git a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Spanish.json b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Spanish.json index 1423db8..b5fd961 100644 --- a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Spanish.json +++ b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Spanish.json @@ -81,13 +81,17 @@ "i_understand": "Lo entiendo", "game_version_mismatch_format_2": "SPT no puede iniciar, esto es debido a que la versión de EFT esperada es '{1}',\npero la versión encontrada es '{0}'\n\nAsegurate de haber realizado el downgrade de tu versión de EFT, tal como se indica en la guía de instalación\nen la página en la que has descargado SPT", "description": "Descripción", - "server_mods": "Server Mods", - "profile_mods": "Profile Mods", "author": "Author", "load_live_settings": "Load Live Settings", "load_live_settings_succeeded": "Game settings copied from live", "load_live_settings_failed": "Failed to copy live settings", "wipe_on_start": "Wipe profile on game start", "copy_live_settings_question": "Would you like to copy your live game settings to spt", - "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server" + "mod_not_in_server_warning":"This mod was found in your profile, but is not loaded on the server", + "active_server_mods": "Active Server Mods", + "active_server_mods_info_text": "These mods are currently running on the server", + "inactive_server_mods": "Inactive Server Mods", + "inactive_server_mods_info_text": "These mods have not been loaded by the server, but your profile has used them in the past", + "open_link_question_format_1": "Are you sure you want to open the following link: \n{0}", + "open_link": "Open Link" } \ No newline at end of file diff --git a/project/Aki.Launcher/Aki_Data/Launcher/Locales/Turkish.json b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Turkish.json new file mode 100644 index 0000000..938095b --- /dev/null +++ b/project/Aki.Launcher/Aki_Data/Launcher/Locales/Turkish.json @@ -0,0 +1,97 @@ +{ + "ietf_tag": "tr", + "native_name": "Turkish", + "retry": "Yeniden Dene", + "server_connecting": "Bağlanıyor", + "server_unavailable_format_1": "Varsayılan sunucu '{0}' mevcut değil.", + "no_servers_available": "Sunucu bulunamadı. Ayarlardaki sunucu listesini kontrol edin.", + "settings_menu": "Ayarlar", + "back": "Geri dön", + "wipe_profile": "Profili Wipela", + "username": "Kullanıcı Adı", + "password": "Şifre", + "update": "Güncelleme", + "edit_account_update_error": "Profilinizi güncellerken bir sorun oluştu.", + "register": "Kayıt Ol", + "go_to_register": "Kayıt Ol'a git", + "login_or_register": "Giriş Yap / Kaydol", + "go_to_login": "Giriş Yap'a git", + "login_automatically": "Otomatik Oturum Açma", + "incorrect_login": "Kullanıcı adı veya şifre yanlış.", + "login_failed": "Oturum Açma Başarısız", + "edition": "Sürüm", + "id": "ID", + "logout": "Oturumu Kapat", + "account": "Profil", + "edit_account": "Profil Düzenle", + "start_game": "Oyunu Başlat", + "installed_in_live_game_warning": "Aki canlı oyun dizinine yüklenmemelidir. Lütfen Aki'yi bilgisayarınızın başka bir yerindeki oyun dizininin bir kopyasına yükleyin.", + "no_official_game_warning": "Escape From Tarkov oyunu bilgisayarınızda yüklü değil. Lütfen oyunun bir kopyasını satın alın ve geliştiricileri destekleyin!", + "eft_exe_not_found_warning": "EscapeFromTarkov.exe oyun yolunda bulunamadı. Lütfen dizinin doğru olup olmadığını kontrol edin.", + "account_exist": "Profil zaten mevcut", + "url": "URL", + "default_language": "Varsayılan Dil", + "game_path": "SPT Oyun Klasörü", + "clear_game_settings": "Oyun Ayarlarını Temizle", + "clear_game_settings_succeeded": "Oyun ayarları temizlendi.", + "clear_game_settings_failed": "Oyun ayarları temizlenirken bir sorun oluştu.", + "remove_registry_keys": "Kayıt Defteri Anahtarlarını Kaldır", + "remove_registry_keys_succeeded": "Kayıt defteri anahtarları kaldırıldı.", + "remove_registry_keys_failed": "Kayıt defteri anahtarları kaldırılırken bir sorun oluştu.", + "clean_temp_files": "Temp Dosyalarını Temizleme", + "clean_temp_files_succeeded": "Temp dosyaları temizlendi.", + "clean_temp_files_failed": "Temp dosyalar temizlenirken bir sorun oluştu.", + "select_folder": "Klasör Seçin", + "registration_failed": "Kayıt başarısız oldu.", + "minimize_action": "Küçült", + "do_nothing_action": "Hiçbir şey yapma", + "exit_action": "Başlatıcıyı Kapat", + "on_game_start": "Oyun Başlayınca başlatıcıya ne yapılsın", + "game": "Oyun", + "new_password": "Yeni Parola", + "cancel": "İptal", + "need_an_account": "Henüz bir profiliniz yok mu?", + "have_an_account": "Zaten bir profiliniz var mı?", + "reapply_patch": "Yamayı Yeniden Uygula", + "failed_to_receive_patches": "Yamalar alınamadı", + "failed_core_patch": "Core yaması başarısız", + "failed_mod_patch": "Mod yaması başarısız oldu", + "ok": "TAMAM.", + "account_page_denied": "Profil sayfası reddedildi. Ya giriş yapmadınız ya da oyun çalışıyor.", + "account_updated": "Profiliniz güncellendi", + "nickname": "Kullanıcı adı", + "side": "Taraf", + "level": "Level", + "patching": "Yama", + "file_mismatch_dialog_message": "Girdi dosyası hash'i beklenen hash ile eşleşmiyor. İstemci dosyalarınız için AKI'nin yanlış sürümünü kullanıyor olabilirsiniz.\n\nDevam etmek istiyor musunuz?", + "yes": "Evet", + "no": "Hayır", + "open_folder": "Klasörü Aç", + "select_edition": "Versiyon Seçin", + "profile_created": "Profil Oluşturuldu", + "registration_question_format_1": "Profil '{0}' mevcut değil.\n\nBunu oluşturmak ister misiniz?", + "next_level_in": "Bir sonraki seviye", + "wipe_warning": "Hesap sürümünüzü değiştirmek için profil silmeniz gerekir. Bu, oyun ilerlemenizi sıfırlayacaktır.", + "copied": "Kopyalandı", + "no_profile_data": "Profil verisi yok", + "profile_version_mismath": "Profiliniz farklı bir aki sürümü kullanılarak oluşturulmuştur ve sorunları olabilir", + "profile_removed": "Profil kaldırıldı", + "profile_removal_failed": "Profil kaldırılamadı", + "profile_remove_question_format_1": "'{0}' profilini kalıcı olarak kaldıralım mı?", + "i_understand": "Anlıyorum.", + "game_version_mismatch_format_2": "SPT çalıştırılamıyor, bunun nedeni SPT'nin '{1}' EFT sürümünü bulmayı beklemesi, ancak bunun yerine '{0}' sürümünü bulmasıdır\n\nEFT'nizi SPT'yi indirdiğiniz sayfada değil\nkurulum kılavuzunda açıklandığı şekilde düşürdüğünüzden emin olun", + "description": "Açıklama", + "author": "Yazar", + "load_live_settings": "Canlı Ayarları Yükle", + "load_live_settings_succeeded": "Oyun ayarları canlıdan kopyalandı", + "load_live_settings_failed": "Canlı ayarlar kopyalanamadı", + "wipe_on_start": "Oyun başladığında profili wipela", + "copy_live_settings_question": "Canlı oyun ayarlarınızı spt'ye kopyalamak ister misiniz", + "mod_not_in_server_warning":"Bu mod profilinizde bulundu, ancak sunucuda yüklü değil", + "active_server_mods": "Aktif Sunucu Modları", + "active_server_mods_info_text": "Bu modlar şu anda sunucuda çalışmaktadır", + "inactive_server_mods": "Aktif Olmayan Sunucu Modları", + "inactive_server_mods_info_text": "Bu modlar sunucu tarafından yüklenmedi, ancak profiliniz geçmişte bunları kullandı", + "open_link_question_format_1": "Aşağıdaki bağlantıyı açmak istediğinizden emin misiniz? \n{0}", + "open_link": "Bağlantıyı Aç" +} \ No newline at end of file diff --git a/project/Aki.Launcher/Aki_Data/Launcher/Patches/aki-core/EscapeFromTarkov_Data/Managed/Assembly-CSharp.dll.bpf b/project/Aki.Launcher/Aki_Data/Launcher/Patches/aki-core/EscapeFromTarkov_Data/Managed/Assembly-CSharp.dll.bpf index 9c8fb94..f640201 100644 Binary files a/project/Aki.Launcher/Aki_Data/Launcher/Patches/aki-core/EscapeFromTarkov_Data/Managed/Assembly-CSharp.dll.bpf and b/project/Aki.Launcher/Aki_Data/Launcher/Patches/aki-core/EscapeFromTarkov_Data/Managed/Assembly-CSharp.dll.bpf differ diff --git a/project/Aki.Launcher/App.axaml b/project/Aki.Launcher/App.axaml index ec353f3..4ecaa8a 100644 --- a/project/Aki.Launcher/App.axaml +++ b/project/Aki.Launcher/App.axaml @@ -31,34 +31,37 @@ - + - - - - - - - + + - - + + + diff --git a/project/Aki.Launcher/CustomControls/ModInfoCard.axaml b/project/Aki.Launcher/CustomControls/ModInfoCard.axaml index 8982a1d..c1321f1 100644 --- a/project/Aki.Launcher/CustomControls/ModInfoCard.axaml +++ b/project/Aki.Launcher/CustomControls/ModInfoCard.axaml @@ -13,21 +13,26 @@ Background="{StaticResource AKI_Background_Dark}" > + + VerticalAlignment="Center" + Orientation="Horizontal" Spacing="5" + > + + IsVisible="{Binding IsInServer, RelativeSource={RelativeSource AncestorType=UserControl}}" + /> + + + - @@ -39,15 +44,38 @@ + + + +