Compare commits

..

21 Commits

Author SHA1 Message Date
JustArchi
c6c63a7928 More tests 2017-09-09 21:01:23 +02:00
JustArchi
8ef60a6316 AppVeyor: max compression test 2017-09-09 20:41:17 +02:00
JustArchi
82aebaf457 Translations update 2017-09-09 20:29:43 +02:00
JustArchi
3c9ab82b7d Continue websocket testing 2017-09-09 20:28:39 +02:00
JustArchi
5d0a3f5ebe Update ASF to SK2 alpha8+ compatibility 2017-09-09 20:24:57 +02:00
JustArchi
9d5ccbca27 Translations update 2017-09-08 08:21:23 +02:00
JustArchi
90af55e6f4 Packages update 2017-09-08 08:20:11 +02:00
JustArchi
a11b2025e9 Packages update 2017-09-06 06:02:53 +02:00
JustArchi
67a3b5a745 Misc logging improvement 2017-09-06 06:02:28 +02:00
JustArchi
42079006a0 Misc 2017-09-05 08:25:11 +02:00
JustArchi
efb4aa70f4 Translations cleanup 2017-09-04 11:41:43 +02:00
JustArchi
d4684d123a FileSystemWatcher improvements 2017-09-04 11:34:50 +02:00
JustArchi
0d38c2b1f4 Misc 2017-09-04 00:59:56 +02:00
JustArchi
4938bcf673 crowdin-cli 2.0.19 2017-09-04 00:34:45 +02:00
JustArchi
33eba37ed2 Translations update 2017-09-04 00:34:07 +02:00
JustArchi
602d22fa9c Packages update 2017-09-04 00:32:58 +02:00
JustArchi
795757ab0a Travis: fix test 2017-09-03 20:46:46 +02:00
JustArchi
5d69059e0b CI: Test 2017-09-03 20:41:59 +02:00
JustArchi
89ef81c5a8 Update NH2 tools 2017-09-03 20:10:51 +02:00
JustArchi
3bf60d2762 AppVeyor: Misc 2017-09-03 19:54:49 +02:00
JustArchi
d9c5f7e044 Bump 2017-08-31 18:48:34 +02:00
55 changed files with 262 additions and 415 deletions

View File

@@ -41,7 +41,7 @@ namespace ArchiSteamFarm {
internal static readonly ArchiLogger ArchiLogger = new ArchiLogger(SharedInfo.ASF);
private static readonly ConcurrentDictionary<Bot, DateTime> LastWriteTimes = new ConcurrentDictionary<Bot, DateTime>();
private static readonly ConcurrentDictionary<string, DateTime> LastWriteTimes = new ConcurrentDictionary<string, DateTime>();
private static Timer AutoUpdatesTimer;
private static FileSystemWatcher FileSystemWatcher;
@@ -341,6 +341,32 @@ namespace ArchiSteamFarm {
return;
}
DateTime lastWriteTime = File.GetLastWriteTime(e.FullPath);
if (LastWriteTimes.TryGetValue(botName, out DateTime savedLastWriteTime)) {
if (savedLastWriteTime >= lastWriteTime) {
return;
}
}
LastWriteTimes[botName] = lastWriteTime;
// It's entirely possible that some process is still accessing our file, allow at least a second before trying to read it
await Task.Delay(1000).ConfigureAwait(false);
// It's also possible that we got some other event in the meantime
if (LastWriteTimes.TryGetValue(botName, out savedLastWriteTime)) {
if (lastWriteTime != savedLastWriteTime) {
return;
}
if (LastWriteTimes.TryRemove(botName, out savedLastWriteTime)) {
if (lastWriteTime != savedLastWriteTime) {
return;
}
}
}
if (botName.Equals(SharedInfo.ASF)) {
ArchiLogger.LogGenericInfo(Strings.GlobalConfigChanged);
await RestartOrExit().ConfigureAwait(false);
@@ -351,32 +377,6 @@ namespace ArchiSteamFarm {
return;
}
DateTime lastWriteTime = File.GetLastWriteTime(e.FullPath);
if (LastWriteTimes.TryGetValue(bot, out DateTime savedLastWriteTime)) {
if (savedLastWriteTime >= lastWriteTime) {
return;
}
}
LastWriteTimes[bot] = lastWriteTime;
// It's entirely possible that some process is still accessing our file, allow at least a second before trying to read it
await Task.Delay(1000).ConfigureAwait(false);
// It's also possible that we got some other event in the meantime
if (LastWriteTimes.TryGetValue(bot, out savedLastWriteTime)) {
if (lastWriteTime != savedLastWriteTime) {
return;
}
if (LastWriteTimes.TryRemove(bot, out savedLastWriteTime)) {
if (lastWriteTime != savedLastWriteTime) {
return;
}
}
}
await bot.OnNewConfigLoaded(new BotConfigEventArgs(BotConfig.Load(e.FullPath))).ConfigureAwait(false);
}
@@ -386,18 +386,32 @@ namespace ArchiSteamFarm {
return;
}
string botName = Path.GetFileNameWithoutExtension(e.Name);
await OnCreatedFile(e.Name, e.FullPath).ConfigureAwait(false);
}
private static async Task<bool> OnCreatedFile(string name, string fullPath) {
if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(fullPath)) {
ArchiLogger.LogNullError(nameof(name) + " || " + nameof(fullPath));
return false;
}
string botName = Path.GetFileNameWithoutExtension(name);
if (string.IsNullOrEmpty(botName) || (botName[0] == '.')) {
return;
return false;
}
if (botName.Equals(SharedInfo.ASF)) {
ArchiLogger.LogGenericInfo(Strings.GlobalConfigChanged);
await RestartOrExit().ConfigureAwait(false);
return;
return false;
}
if (!IsValidBotName(botName)) {
return false;
}
await CreateBot(botName).ConfigureAwait(false);
return true;
}
private static async void OnDeleted(object sender, FileSystemEventArgs e) {
@@ -406,27 +420,42 @@ namespace ArchiSteamFarm {
return;
}
string botName = Path.GetFileNameWithoutExtension(e.Name);
await OnDeletedFile(e.Name, e.FullPath).ConfigureAwait(false);
}
private static async Task<bool> OnDeletedFile(string name, string fullPath) {
if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(fullPath)) {
ArchiLogger.LogNullError(nameof(name) + " || " + nameof(fullPath));
return false;
}
string botName = Path.GetFileNameWithoutExtension(name);
if (string.IsNullOrEmpty(botName)) {
return;
return false;
}
if (botName.Equals(SharedInfo.ASF)) {
if (File.Exists(fullPath)) {
return false;
}
// Some editors might decide to delete file and re-create it in order to modify it
// If that's the case, we wait for maximum of 5 seconds before shutting down
await Task.Delay(5000).ConfigureAwait(false);
if (File.Exists(e.FullPath)) {
return;
if (File.Exists(fullPath)) {
return false;
}
ArchiLogger.LogGenericError(Strings.ErrorGlobalConfigRemoved);
await Program.Exit(1).ConfigureAwait(false);
return;
return false;
}
if (Bot.Bots.TryGetValue(botName, out Bot bot)) {
await bot.OnNewConfigLoaded(new BotConfigEventArgs()).ConfigureAwait(false);
}
return true;
}
private static async void OnRenamed(object sender, RenamedEventArgs e) {
@@ -435,27 +464,19 @@ namespace ArchiSteamFarm {
return;
}
string oldBotName = Path.GetFileNameWithoutExtension(e.OldName);
if (string.IsNullOrEmpty(oldBotName)) {
return;
// We must remember to handle all three cases here - *.any to *.json, *.json to *.any and *.json to *.json
string oldFileExtension = Path.GetExtension(e.OldName);
if (!string.IsNullOrEmpty(oldFileExtension) && oldFileExtension.Equals(".json")) {
if (!await OnDeletedFile(e.OldName, e.OldFullPath).ConfigureAwait(false)) {
return;
}
}
if (oldBotName.Equals(SharedInfo.ASF)) {
ArchiLogger.LogGenericError(Strings.ErrorGlobalConfigRemoved);
await Program.Exit(1).ConfigureAwait(false);
return;
string newFileExtension = Path.GetExtension(e.Name);
if (!string.IsNullOrEmpty(newFileExtension) && newFileExtension.Equals(".json")) {
await OnCreatedFile(e.Name, e.FullPath).ConfigureAwait(false);
}
if (Bot.Bots.TryGetValue(oldBotName, out Bot bot)) {
await bot.OnNewConfigLoaded(new BotConfigEventArgs()).ConfigureAwait(false);
}
string newBotName = Path.GetFileNameWithoutExtension(e.Name);
if (string.IsNullOrEmpty(newBotName) || (newBotName[0] == '.')) {
return;
}
await CreateBot(newBotName).ConfigureAwait(false);
}
private static async Task RestartOrExit() {

View File

@@ -3,8 +3,8 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<AssemblyVersion>3.0.2.2</AssemblyVersion>
<FileVersion>3.0.2.2</FileVersion>
<AssemblyVersion>3.0.2.3</AssemblyVersion>
<FileVersion>3.0.2.3</FileVersion>
<LangVersion>latest</LangVersion>
<ErrorReport>none</ErrorReport>
<ApplicationIcon>ASF.ico</ApplicationIcon>
@@ -31,12 +31,14 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="HtmlAgilityPack" Version="1.5.2-beta6" />
<PackageReference Include="HtmlAgilityPack" Version="1.5.5" />
<PackageReference Include="Humanizer" Version="2.2.0" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
<PackageReference Include="NLog" Version="5.0.0-beta09" />
<PackageReference Include="SteamKit2" Version="2.0.0-Alpha7" />
<PackageReference Include="NLog" Version="5.0.0-beta10" />
<PackageReference Include="SteamKit2" Version="2.0.0-Alpha8" />
<PackageReference Include="System.Net.NameResolution" Version="4.3.0" />
<PackageReference Include="System.Security.Cryptography.ProtectedData" Version="4.4.0" />
<PackageReference Include="System.Threading.ThreadPool" Version="4.3.0" />
</ItemGroup>
<ItemGroup>

View File

@@ -60,8 +60,6 @@ namespace ArchiSteamFarm {
private static readonly SemaphoreSlim InventorySemaphore = new SemaphoreSlim(1, 1);
private static int Timeout = GlobalConfig.DefaultConnectionTimeout * 1000; // This must be int type
private readonly SemaphoreSlim ApiKeySemaphore = new SemaphoreSlim(1, 1);
private readonly Bot Bot;
private readonly SemaphoreSlim PublicInventorySemaphore = new SemaphoreSlim(1, 1);
@@ -182,21 +180,19 @@ namespace ArchiSteamFarm {
KeyValue response = null;
for (byte i = 0; (i < WebBrowser.MaxTries) && (response == null); i++) {
await Task.Run(() => {
using (dynamic iEconService = WebAPI.GetInterface(IEconService, steamApiKey)) {
iEconService.Timeout = Timeout;
using (dynamic iEconService = WebAPI.GetAsyncInterface(IEconService, steamApiKey)) {
iEconService.Timeout = WebBrowser.Timeout;
try {
response = iEconService.DeclineTradeOffer(
tradeofferid: tradeID.ToString(),
method: WebRequestMethods.Http.Post,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
}
try {
response = await iEconService.DeclineTradeOffer(
tradeofferid: tradeID.ToString(),
method: WebRequestMethods.Http.Post,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
}
}).ConfigureAwait(false);
}
}
if (response == null) {
@@ -233,23 +229,21 @@ namespace ArchiSteamFarm {
KeyValue response = null;
for (byte i = 0; (i < WebBrowser.MaxTries) && (response == null); i++) {
await Task.Run(() => {
using (dynamic iEconService = WebAPI.GetInterface(IEconService, steamApiKey)) {
iEconService.Timeout = Timeout;
using (dynamic iEconService = WebAPI.GetAsyncInterface(IEconService, steamApiKey)) {
iEconService.Timeout = WebBrowser.Timeout;
try {
response = iEconService.GetTradeOffers(
active_only: 1,
get_descriptions: 1,
get_received_offers: 1,
secure: true,
time_historical_cutoff: uint.MaxValue
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
}
try {
response = await iEconService.GetTradeOffers(
active_only: 1,
get_descriptions: 1,
get_received_offers: 1,
secure: true,
time_historical_cutoff: uint.MaxValue
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
}
}).ConfigureAwait(false);
}
}
if (response == null) {
@@ -630,21 +624,19 @@ namespace ArchiSteamFarm {
KeyValue response = null;
for (byte i = 0; (i < WebBrowser.MaxTries) && (response == null); i++) {
await Task.Run(() => {
using (dynamic iPlayerService = WebAPI.GetInterface(IPlayerService, steamApiKey)) {
iPlayerService.Timeout = Timeout;
using (dynamic iPlayerService = WebAPI.GetAsyncInterface(IPlayerService, steamApiKey)) {
iPlayerService.Timeout = WebBrowser.Timeout;
try {
response = iPlayerService.GetOwnedGames(
steamid: steamID,
include_appinfo: 1,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
}
try {
response = await iPlayerService.GetOwnedGames(
steamid: steamID,
include_appinfo: 1,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
}
}).ConfigureAwait(false);
}
}
if (response == null) {
@@ -669,20 +661,18 @@ namespace ArchiSteamFarm {
internal async Task<uint> GetServerTime() {
KeyValue response = null;
for (byte i = 0; (i < WebBrowser.MaxTries) && (response == null); i++) {
await Task.Run(() => {
using (dynamic iTwoFactorService = WebAPI.GetInterface(ITwoFactorService)) {
iTwoFactorService.Timeout = Timeout;
using (dynamic iTwoFactorService = WebAPI.GetAsyncInterface(ITwoFactorService)) {
iTwoFactorService.Timeout = WebBrowser.Timeout;
try {
response = iTwoFactorService.QueryTime(
method: WebRequestMethods.Http.Post,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
}
try {
response = await iTwoFactorService.QueryTime(
method: WebRequestMethods.Http.Post,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
}
}).ConfigureAwait(false);
}
}
if (response != null) {
@@ -867,8 +857,6 @@ namespace ArchiSteamFarm {
internal async Task<bool> HasValidApiKey() => !string.IsNullOrEmpty(await GetApiKey().ConfigureAwait(false));
internal static void Init() => Timeout = Program.GlobalConfig.ConnectionTimeout * 1000;
internal async Task<bool> Init(ulong steamID, EUniverse universe, string webAPIUserNonce, string parentalPin, string vanityURL = null) {
if ((steamID == 0) || (universe == EUniverse.Invalid) || string.IsNullOrEmpty(webAPIUserNonce) || string.IsNullOrEmpty(parentalPin)) {
Bot.ArchiLogger.LogNullError(nameof(steamID) + " || " + nameof(universe) + " || " + nameof(webAPIUserNonce) + " || " + nameof(parentalPin));
@@ -901,23 +889,21 @@ namespace ArchiSteamFarm {
Bot.ArchiLogger.LogGenericInfo(string.Format(Strings.LoggingIn, ISteamUserAuth));
KeyValue authResult = null;
await Task.Run(() => {
using (dynamic iSteamUserAuth = WebAPI.GetInterface(ISteamUserAuth)) {
iSteamUserAuth.Timeout = Timeout;
using (dynamic iSteamUserAuth = WebAPI.GetAsyncInterface(ISteamUserAuth)) {
iSteamUserAuth.Timeout = WebBrowser.Timeout;
try {
authResult = iSteamUserAuth.AuthenticateUser(
steamid: steamID,
sessionkey: Encoding.ASCII.GetString(WebUtility.UrlEncodeToBytes(cryptedSessionKey, 0, cryptedSessionKey.Length)),
encrypted_loginkey: Encoding.ASCII.GetString(WebUtility.UrlEncodeToBytes(cryptedLoginKey, 0, cryptedLoginKey.Length)),
method: WebRequestMethods.Http.Post,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
}
try {
authResult = await iSteamUserAuth.AuthenticateUser(
steamid: steamID,
sessionkey: Encoding.ASCII.GetString(WebUtility.UrlEncodeToBytes(cryptedSessionKey, 0, cryptedSessionKey.Length)),
encrypted_loginkey: Encoding.ASCII.GetString(WebUtility.UrlEncodeToBytes(cryptedLoginKey, 0, cryptedLoginKey.Length)),
method: WebRequestMethods.Http.Post,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
}
}).ConfigureAwait(false);
}
if (authResult == null) {
return false;

View File

@@ -1435,10 +1435,10 @@ namespace ArchiSteamFarm {
nickname = SteamFriends.GetPersonaName();
}
if (string.IsNullOrEmpty(nickname) || nickname.Equals("[unassigned]")) {
ArchiLogger.LogGenericError(string.Format(Strings.ErrorObjectIsNull, nameof(nickname)));
return;
}
// We should return here if [unassigned] is still our nickname at this point
// However, [unassigned] could be real nickname of the user regardless
// In this case, we can't tell a difference between real nickname and lack of it
// We must blindly assume that SK2 did the right thing and our timeout was enough
try {
await SteamFriends.SetPersonaState(EPersonaState.Online);
@@ -1466,7 +1466,7 @@ namespace ArchiSteamFarm {
return;
}
if ((callback.ChatMsgType != EChatEntryType.ChatMsg) || string.IsNullOrEmpty(callback.Message)) {
if ((callback.ChatMsgType != EChatEntryType.ChatMsg) || string.IsNullOrWhiteSpace(callback.Message)) {
return;
}
@@ -1639,7 +1639,7 @@ namespace ArchiSteamFarm {
return;
}
if ((callback.EntryType != EChatEntryType.ChatMsg) || string.IsNullOrEmpty(callback.Message)) {
if ((callback.EntryType != EChatEntryType.ChatMsg) || string.IsNullOrWhiteSpace(callback.Message)) {
return;
}
@@ -4202,6 +4202,8 @@ namespace ArchiSteamFarm {
return;
}
ArchiLogger.LogGenericTrace(steamID + "/" + SteamID + ": " + message);
for (int i = 0; i < message.Length; i += MaxSteamMessageLength - 2) {
if (i > 0) {
await Task.Delay(CallbackSleep).ConfigureAwait(false);
@@ -4222,6 +4224,8 @@ namespace ArchiSteamFarm {
return;
}
ArchiLogger.LogGenericTrace(steamID + "/" + SteamID + ": " + message);
for (int i = 0; i < message.Length; i += MaxSteamMessageLength - 2) {
if (i > 0) {
await Task.Delay(CallbackSleep).ConfigureAwait(false);

View File

@@ -105,7 +105,7 @@ namespace ArchiSteamFarm {
internal readonly bool Statistics = true;
[JsonProperty(Required = Required.DisallowNull)]
internal readonly ProtocolTypes SteamProtocols = ProtocolTypes.Tcp;
internal readonly ProtocolTypes SteamProtocols = ProtocolTypes.WebSocket;
[JsonProperty(Required = Required.DisallowNull)]
internal readonly EUpdateChannel UpdateChannel = EUpdateChannel.Stable;

View File

@@ -112,7 +112,7 @@ namespace ArchiSteamFarm {
switch (key) {
case "command":
string command = context.Request.QueryString.Get(i);
if (string.IsNullOrEmpty(command)) {
if (string.IsNullOrWhiteSpace(command)) {
break;
}

View File

@@ -864,15 +864,6 @@ namespace ArchiSteamFarm.Localization {
}
}
/// <summary>
/// Wyszukuje zlokalizowany ciąg podobny do ciągu IPC service could not be started because of AddressAccessDeniedException! If you want to use IPC service provided by ASF, consider starting ASF as administrator, or giving proper permissions!.
/// </summary>
internal static string ErrorIPCAddressAccessDeniedException {
get {
return ResourceManager.GetString("ErrorIPCAddressAccessDeniedException", resourceCulture);
}
}
/// <summary>
/// Wyszukuje zlokalizowany ciąg podobny do ciągu {0} is empty!.
/// </summary>
@@ -927,15 +918,6 @@ namespace ArchiSteamFarm.Localization {
}
}
/// <summary>
/// Wyszukuje zlokalizowany ciąg podobny do ciągu Could not remove old ASF binary. Please remove {0} manually in order for update function to work!.
/// </summary>
internal static string ErrorRemovingOldBinary {
get {
return ResourceManager.GetString("ErrorRemovingOldBinary", resourceCulture);
}
}
/// <summary>
/// Wyszukuje zlokalizowany ciąg podobny do ciągu Request failed after {0} attempts!.
/// </summary>

View File

@@ -157,7 +157,6 @@
<data name="WarningFailed" xml:space="preserve">
<value>فشل!</value>
</data>
@@ -216,7 +215,6 @@
<data name="Done" xml:space="preserve">

View File

@@ -170,10 +170,6 @@
<value>Разборът {0} се провали!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Не може да се премахне старият ASF файл. Моля премахнете {0} ръчно, за може обновлението да сработи!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Заявката не е изпълнена след {0} опити!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -191,7 +187,7 @@
<value>Получено е желание за промяна от потребителя, но процеса продължава в режим без възможност за промяна!</value>
</data>
<data name="ErrorIPCAccessDenied" xml:space="preserve">
<value>Отказване на желанието, защото SteamOwnerID не е зададено!</value>
<value>Отказва да обработи заявката, защото SteamOwnerID не е зададено!</value>
<comment>SteamOwnerID is name of bot config property, it should not be translated</comment>
</data>
<data name="Exiting" xml:space="preserve">
@@ -297,9 +293,6 @@
<value>Играенето на повече от {0} игри едновременно е невъзможно, само първите {0} от {1} ще бъдат ползвани!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>IPC услугата не може да бъде стартирана, заради AddressAccessDeniedException! Ако искате да ползвате IPC услугата, предоставена от ASF, помислете за стартирането на ASF като администратор или задаването му на правилните позволения!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Отговоряне на IPC командата: {0} с {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>
@@ -526,7 +519,10 @@
<value>Вече се притежава: {0} | {1}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="BotRateLimitExceeded" xml:space="preserve">
<value>Ограничението надвишено; Ще повторим след {0} на "отброяване"...</value>
<comment>{0} will be replaced by translated TimeSpan string (such as "25 minutes")</comment>
</data>
<data name="BotReconnecting" xml:space="preserve">
<value>Повторно свързване…</value>
</data>
@@ -575,39 +571,70 @@
<value>Неуспешно поради грешка: {0}</value>
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotConnectionLost" xml:space="preserve">
<value>Връзката с мрежата на Steam е загубена. Повторно свързване...</value>
</data>
<data name="BotAccountFree" xml:space="preserve">
<value>Акаунтът не е вече зает: ваденето на карти е възобновено!</value>
</data>
<data name="BotAccountOccupied" xml:space="preserve">
<value>Акаунтът в момента се ползва: ASF ще възобнови ваденето на карти, когато е свободен...</value>
</data>
<data name="BotAutomaticIdlingPauseTimeout" xml:space="preserve">
<value>Споделената библиотека не е стартирана през даденият период на време. Ваденето на карти е продължено!</value>
</data>
<data name="BotConnecting" xml:space="preserve">
<value>Свързване…</value>
</data>
<data name="BotHeartBeatFailed" xml:space="preserve">
<value>Неуспешно прекъсване на връзката на клиента. Премахва се този бот!</value>
</data>
<data name="BotSteamDirectoryInitializationFailed" xml:space="preserve">
<value>Неуспешно стартиране на SteamDirectory: свързването с мрежата на Steam може да отнеме много повече време от обичайното!</value>
</data>
<data name="BotStopping" xml:space="preserve">
<value>Спиране…</value>
</data>
<data name="ErrorBotConfigInvalid" xml:space="preserve">
<value>Настройката на вашият бот е невалидна. Моля проверете съдържанието на {0} и опитайте отново!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorDatabaseInvalid" xml:space="preserve">
<value>Постоянната база данни не може да бъде заредена, ако проблемът продължава, моля премахнете {0} за да се пресъздаде базата данни!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="Initializing" xml:space="preserve">
<value>Стартиране {0}…</value>
<comment>{0} will be replaced by service name that is being initialized</comment>
</data>
<data name="WarningPrivacyPolicy" xml:space="preserve">
<value>Моля, прегледайте нашата секция в wiki за "лична неприкосновеност", ако сте загрижени за това, което всъщност прави ASF!</value>
</data>
<data name="Welcome" xml:space="preserve">
<value>Това изглежда е първото стартиране на програмата, добре дошли!</value>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>Задали сте невалиден CurrentCulture. ASF ще продължи работа със зададения по подразбиране!</value>
</data>
<data name="TranslationIncomplete" xml:space="preserve">
<value>ASF ще се опита да използва вашият предпочитан {0} език, но преводът на този език е завършен само в {1}. Може би можете да помогнете да подобрим ASF с превод за вашия език?</value>
<comment>{0} will be replaced by culture code, such as "en-US", {1} will be replaced by completeness percentage, such as "78.5%"</comment>
</data>
<data name="IdlingGameNotPossible" xml:space="preserve">
<value>Вадене на карти {0} ({1}) е временно забранено, тъй като ASG не е в състояние да играе тази игра в момента.</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="WarningIdlingGameMismatch" xml:space="preserve">
<value>ASF откри несъответствие на ID за {0} ({1}) и ще използва ID на {2} вместо това.</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name, {2} will be replaced by game's ID (number)</comment>
</data>
<data name="BotVersion" xml:space="preserve">
<value>{0} V{1}</value>
<comment>{0} will be replaced by program's name (e.g. "ASF"), {1} will be replaced by program's version (e.g. "1.0.0.0"). This string typically has nothing to translate and you should leave it as it is, unless you need to change the format, e.g. in RTL languages.</comment>
</data>
<data name="BotAccountLocked" xml:space="preserve">
<value>Този акаунт е заключен, ваденето на карти е недостъпно завинаги!</value>
</data>
<data name="BotStatusLocked" xml:space="preserve">
<value>Бота е заключен и не може да пусне никакви карти чрез "играене".</value>
</data>
@@ -621,12 +648,23 @@
<data name="ErrorAccessDenied" xml:space="preserve">
<value>Достъпът отказан!</value>
</data>
<data name="WarningPreReleaseVersion" xml:space="preserve">
<value>Вие използвате версия, която е по-нова от последната версия за актуализация. Моля, имайте предвид, че предварителните версии са посветени на потребителите, които знаят как да докладват за бъгове, да се справят с проблеми и да дават обратна връзка - няма да ви бъде осигурена техническа подръжка.</value>
</data>
<data name="BotStats" xml:space="preserve">
<value>В момента се ползва памет: {0} MB.</value>
<comment>{0} will be replaced by number (in megabytes) of memory being used</comment>
</data>
<data name="ClearingDiscoveryQueue" xml:space="preserve">
<value>Изчистване на предложенията на Steam #{0}...</value>
<comment>{0} will be replaced by queue number</comment>
</data>
<data name="DoneClearingDiscoveryQueue" xml:space="preserve">
<value>Завърши изчистването на предложенията на Steam #{0}.</value>
<comment>{0} will be replaced by queue number</comment>
</data>
<data name="BotOwnsOverview" xml:space="preserve">
<value>Има {0}/{1} ботове, които вече притежават всички игри, които се проверяват.</value>
<comment>{0} will be replaced by number of bots that already own games being checked, {1} will be replaced by total number of bots that were checked during the process</comment>
</data>
</root>

View File

@@ -173,10 +173,6 @@ StackTrace:
<value>Analýza {0} selhala.</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Nepodařilo se odstranit starý binární soubor aplikace ASF. Chcete-li zajistit správné fungování funkce aktualizace, odstraňte soubor {0} ručně.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Požadavek selhal po {0} pokusech.</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -300,9 +296,6 @@ StackTrace:
<value>Spušt2ní více než {0} her není aktuálně možné, použito bude pouze prvních {0} položek z {1}.</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>Služba IPC nemohla být spuštěna kvůli AddressAccessDeniedException. Pokud si přejete použít službu IPC, poskytovanou aplikací ASF, zvažte spuštění aplikace ASF jako správce, nebo aplikaci přidělte dostatečná oprávnění.</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Odpovězeno na příkaz IPC: {0} odpověď: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -172,10 +172,6 @@ StackTrace:
<value>Parsing {0} fejlet!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Kunne ikke fjerne gammel ASF binær fil. Vær venlig at fjerne {0} manuelt for at opdaterings funktionen virker!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Anmodning fejlede efter {0} forsøg!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -291,7 +287,6 @@ StackTrace:
<data name="BotAlreadyStopped" xml:space="preserve">
<value>Denne bot er allerede stoppet!</value>
</data>

View File

@@ -172,10 +172,6 @@ StackTrace:
<value>Fehler beim Parsen von {0}!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Konnte alte ASF Binärdatei nicht löschen. Bitte entferne {0} manuell, damit die Updatefunktion funktionieren kann!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Anfrage nach {0} Versuchen fehlgeschlagen!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -299,9 +295,6 @@ StackTrace:
<value>Das Spielen von mehr als {0} Spielen gleichzeitig ist nicht möglich, nur die ersten {0} Einträge von {1} werden verwendet!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>Der IPC-Dienst konnte wegen einer AddressAccessDeniedException nicht gestartet werden! Wenn du den IPC-Service von ASF nutzen möchtest, erwäge es ASF als Administrator auszuführen oder die korrekten Berechtigungen zu erteilen!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Auf IPC-Befehl geantwortet: {0} mit {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>
@@ -672,5 +665,8 @@ StackTrace:
<value>Fertig mit Löschung der Steam Entdeckungsliste #{0}.</value>
<comment>{0} will be replaced by queue number</comment>
</data>
<data name="BotOwnsOverview" xml:space="preserve">
<value>Es gibt {0}/{1}-Bots, die bereits alle geprüften Spiele besitzen.</value>
<comment>{0} will be replaced by number of bots that already own games being checked, {1} will be replaced by total number of bots that were checked during the process</comment>
</data>
</root>

View File

@@ -173,10 +173,6 @@ StackTrace:
<value>Fehler beim Parsen von {0}!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Konnte alte ASF Binärdatei nicht löschen. Bitte entferne {0} manuell, damit die Updatefunktion funktionieren kann!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Anfrage nach {0} Versuchen fehlgeschlagen!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -300,9 +296,6 @@ StackTrace:
<value>Das Spielen von mehr als {0} Spielen gleichzeitig ist nicht möglich, nur die ersten {0} Einträge von {1} werden verwendet!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>Der IPC-Dienst konnte wegen einer AddressAccessDeniedException nicht gestartet werden! Wenn du den IPC-Service von ASF nutzen möchtest, erwäge es ASF als Administrator auszuführen oder die korrekten Berechtigungen zu erteilen!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Auf IPC-Befehl geantwortet: {0} mit {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -173,10 +173,6 @@ StackTrace:
<value>Η ανάλυση του {0} απέτυχε!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Αδυναμία αφαίρεσης του παλιού ASF binary, αφαιρέστε το {0} χειροκίνητα ώστε να λειτουργήσει η λειτουργία ενημέρωσης!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Το αίτημα απέτυχε έπειτα από {0} προσπάθειες!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -300,9 +296,6 @@ StackTrace:
<value>Η συλλογή περισσότερων από {0} παιχνιδιών ταυτόχρονα δεν είναι δυνατή, μόνο οι πρώτες {0} καταχρήσεις από το {1} θα χρησιμοποιηθούν!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>Η υπηρεσία IPC δεν ήταν δυνατό να εκκινηθεί λόγω σφάλματος AddressAccessDeniedException! Εάν θέλετε να χρησιμοποιήσετε την υπηρεσία IPC που παρέχεται από το ASF, δοκιμάστε να εκκινήσετε το ASF ως διαχειριστής ή να παραχωρήσετε τα κατάλληλα δικαιώματα!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Έγινε απάντηση στην εντολή IPC: {0} με: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -172,10 +172,6 @@ StackTrace:
<value>Análisis de {0} fallido!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>No se pudo borrar el anterior ejecutable de ASF. Por favor elimina {0} manualmente para que la actualización funcione!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>¡La solicitud falló después de {0} intentos!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -299,9 +295,6 @@ StackTrace:
<value>¡Ejecutar más de {0} juegos a la vez no es posible, sólo se usarán las primeras {0} entradas de {1}!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>¡El servicio de WCF no pudo ser iniciado por un error en AddressAccessDeniedException! Si deseas usar el servicio de WCF proporcionado por ASF, intenta iniciar ASF como administrador, o dar los permisos adecuados!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Se ha respondido al comando WCF: {0} con: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -152,10 +152,6 @@
<value>{0} jäsentäminen epäonnistui!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Vanhaa ASF-binaariä ei voitu poistaa. Ole hyvä ja poista {0} manuaalisesti, jotta päivitystoiminto toimisi!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Pyyntö epäonnistui {0} yrityksen jälkeen!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -226,7 +222,6 @@
<data name="BotNotFound" xml:space="preserve">
<value>Bottia nimeltä {0} ei voitu löytää!</value>
<comment>{0} will be replaced by bot's name query (string)</comment>

View File

@@ -173,10 +173,6 @@ StackTrace :
<value>Lanalyse de {0} a échoué !</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Impossible de supprimer l'ancien binaire d'ASF, merci de supprimer {0} manuellement afin que la fonction de mise à jour puisse fonctionner !</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>La requête a échoué après {0} tentatives !</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -184,7 +180,9 @@ StackTrace :
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>Impossible de vérifier la dernière version !</value>
</data>
<data name="ErrorUpdateNoAssetForThisVersion" xml:space="preserve">
<value>Impossible de procéder à la mise à jour car il n'y a aucun fichier correspondant à la version actuelle ! La mise à jour automatique vers cette version n'est pas possible.</value>
</data>
<data name="ErrorUpdateNoAssets" xml:space="preserve">
<value>Impossible de procéder à une mise à jour parce que cette version ne contient aucun fichier !</value>
</data>
@@ -286,7 +284,10 @@ StackTrace :
<value>Veuillez entrer la valeur non documentée de {0} : </value>
<comment>{0} will be replaced by property name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputIPCHost" xml:space="preserve">
<value>Veuillez saisir votre hôte IPC: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="WarningUnknownValuePleaseReport" xml:space="preserve">
<value>{0} a reçu une valeur inconnue, veuillez le signaler : {1}</value>
<comment>{0} will be replaced by object's name, {1} will be replaced by value for that object</comment>
@@ -295,10 +296,17 @@ StackTrace :
<value>Jouer à plus de {0} jeux en même temps nest pas actuelllement possible, seules les {0} premières entrées de {1} seront utilisées !</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Réponse à la commande IPC: {0} avec {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>
</data>
<data name="IPCReady" xml:space="preserve">
<value>Serveur IPC prêt !</value>
</data>
<data name="IPCStarting" xml:space="preserve">
<value>Démarrage du serveur IPC sur {0}...</value>
<comment>{0} will be replaced by IPC hostname</comment>
</data>
<data name="BotAlreadyStopped" xml:space="preserve">
<value>Ce bot est déjà arrêté !</value>
</data>
@@ -658,5 +666,8 @@ StackTrace :
<value>Fini de consulter la liste de découvertes #{0}.</value>
<comment>{0} will be replaced by queue number</comment>
</data>
<data name="BotOwnsOverview" xml:space="preserve">
<value>Il y a {0}/{1} bots qui possède déjà tous les jeux en cours de vérification.</value>
<comment>{0} will be replaced by number of bots that already own games being checked, {1} will be replaced by total number of bots that were checked during the process</comment>
</data>
</root>

View File

@@ -173,10 +173,6 @@ StackTrace :
<value>Lanalyse de {0} a échoué !</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Impossible de supprimer l'ancien fichier d'ASF. Merci de supprimer {0} manuellement afin que la fonction de mise à jour puisse fonctionner !</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>La requête a échoué après {0} tentatives !</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -300,9 +296,6 @@ StackTrace :
<value>Jouer à plus de {0} jeux en même temps nest pas possible, seules les {0} premières entrées de {1} seront utilisées !</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>Le service IPC n'a pas pu démarrer en raison d'un refus d'accès AdressAccessDeniedException ! Si vous souhaitez utiliser le service IPC fourni par ASF, assurez-vous de lancer ASF en tant qu'administrateur ou avec les autorisations appropriées !</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Réponse à la commande IPC: {0} avec {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -167,7 +167,6 @@ StackTrace:
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>לא ניתן לבדוק את הגירסה העדכנית ביותר!</value>
</data>
@@ -253,7 +252,6 @@ StackTrace:
<data name="BotNotFound" xml:space="preserve">
<value>לא ניתן למצוא אף בוט בשם {0}!</value>
<comment>{0} will be replaced by bot's name query (string)</comment>

View File

@@ -163,7 +163,6 @@
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>कुड नॉट चैक लैटेस्ट वर्ज़न!</value>
</data>
@@ -309,7 +308,6 @@
</root>

View File

@@ -171,10 +171,6 @@ StackTrace: {2}</value>
<value>{0} feldolgozása sikertelen!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Nem lehet kitörölni a régi ASF bináris fájlt. Kérlek manuálisan távolítsd el a {0}-t, hogy a frissítés sikeres legyen!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>A kérés sikertelen volt {0} próbálkozás után!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -290,7 +286,6 @@ StackTrace: {2}</value>
<data name="BotAlreadyStopped" xml:space="preserve">
<value>Ez a bor már leállt!</value>
</data>

View File

@@ -170,10 +170,6 @@
<value>Parsing {0} gagal!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Tidak dapat menghapus file biner ASF lama, silakan hapus {0} secara manual agar fungsi update bekerja!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Permintaan gagal setelah {0} kali upaya!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -297,9 +293,6 @@
<value>Tidak dapat bermain lebih dari {0} game secara bersamaan, hanya {0} entri pertama dari {1} game yang akan digunakan</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>Layanan WCF tidak bisa dimulai karena AddressAccessDeniedException! Jika anda ingin menggunakan layanan WCF yang disediakan ASF, jalankan ASF sebagai Administrator, atau berikan izin yang benar!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Jawaban untuk perintah IPC: {0} dengan: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -171,10 +171,6 @@
<value>Analisi di {0} non riuscita!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Impossibile rimuovere i vecchi file binari di ASF. Si prega di rimuovere {0} manualmente affinché l'aggiornamento funzioni correttamente!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Richiesta non riuscita dopo {0} tentativi!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -298,9 +294,6 @@
<value>Non è possibile giocare a più di {0} giochi contemporaneamente, verranno utilizzate solo le prime {0} voci di {1}!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>Il servizio IPC non può essere avviato a causa di AddressAccessDeniedException! Se desideri utilizzare il servizio IPC fornito da ASF, considera la possibilità di avviare ASF come amministratore, o di dargli le autorizzazioni necessarie!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Risposto al comando IPC: {0} con: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -170,10 +170,6 @@
<value>{0} の解析に失敗しました!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>古いASFのバイナリを削除できませんでした。アップデート機能を動作させるには、{0} を手動で削除してください!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>要求を{0} 回試行し、失敗しました!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -295,9 +291,6 @@
<value>同時に{0} つより多くのゲームをプレイすることはできません。{1} から最初の{0} だけが使用されます!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>AddressAccessDeniedExceptionのため、IPC サービスを開始できませんでしたASFによるIPC サービスを使用したい場合、ASFを管理者として起動するか、適切な権限を付与してください</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>IPC コマンド: {0} 返答:{1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -173,10 +173,6 @@ StackTrace:
<value>{0}의 분석에 실패했습니다!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>이전의 ASF 실행 파일을 제거할 수 없습니다. 업데이트 기능의 작동을 위해, 수동으로 {0}을(를) 제거하시기 바랍니다.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>{0} 번의 시도 후, 요청이 실패했습니다!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -300,9 +296,6 @@ StackTrace:
<value>동시에 {0}개 이상의 게임들을 플레이하는 것은 불가능합니다. {1}에 의해 단지 {0}개의 항목만 사용될 것입니다!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>AddressAccessDeniedException로 인해 IPC 서비스가 시작될 수 없습니다! ASF에서 제공하는 IPC 서비스를 사용하고 싶다면, ASF를 관리자 모드로 실행하거나 적절한 권한을 줘야 합니다!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>{0} IPC 명령에 대한 응답: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -149,7 +149,7 @@
<comment>{0} will be replaced by URL of the request</comment>
</data>
<data name="ErrorGlobalConfigNotLoaded" xml:space="preserve">
<value>Pasaulinė konfigūracija negalėjo būti įkelta, įsitikinkite, kad {0} egzistuoja ir yra galiojantis! Sekite steigimo vadovą vikipedijoje jei esate supainioti.</value>
<value>Pagrindinė konfigūracija negalėjo būti įkelta, įsitikinkite, kad {0} egzistuoja ir yra galiojantis! Sekite steigimo vadovą vikipedijoje jei esate supainioti.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
@@ -170,10 +170,6 @@
<value>Apdorojanti {0} nepavyko!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Nepavyko pašalinti senos ASF bibliotekos. Prašome pašalinti {0} rankiniu būdu tam, kad atnaujinimo funkcija veiktų!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Užklausa nepavyko po {0} bandymų!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -201,10 +197,10 @@
<value>Nepavyko!</value>
</data>
<data name="GlobalConfigChanged" xml:space="preserve">
<value>Pasaulinis konfiguracijos failas buvo pakeistas!</value>
<value>Pagrindinis konfiguracijos failas buvo pakeistas!</value>
</data>
<data name="ErrorGlobalConfigRemoved" xml:space="preserve">
<value>Pasaulinis konfiguracijos failas buvo pašalintas!</value>
<value>Pagrindinis konfiguracijos failas buvo pašalintas!</value>
</data>
<data name="IgnoringTrade" xml:space="preserve">
<value>Ignoruojami mainai: {0}</value>
@@ -297,9 +293,6 @@
<value>Žaisti daugiau negu {0} žaidimų vienu metu yra neįmanoma, bus naudojamas tik pirmasis {0} įrašas iš {1}!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>IPC tarnybos nepavyko paleisti dėl "AddressAccessDeniedException"! Jei norite naudotis IPC tarnybomis kurias teikia ASF, apsvarstykite pradėti ASF kaip administratorius, arba suteikti atitinkamus leidimus!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Atsakyta į IPC komandą: {0} su: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -172,10 +172,6 @@ StackTrace:
<value>Verwerking van {0} mislukt!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Het oude ASF-bestand kon niet worden verwijderd. Verwijder {0} handmatig, zodat de update uitgevoerd kan worden!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Verzoek is mislukt na {0} pogingen!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -300,9 +296,6 @@ StackTrace:
<value>Het gelijktijdig spelen van meer dan {0} spellen is niet mogelijk, alleen de eerste {0} spellen van {1} worden gespeeld!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>IPC service kan niet worden gestart vanwege de AddressAccessDeniedException! Als je gebruik wilt maken van de IPC service van ASF, start ASF als administrator of geef de juiste machtigingen!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Gereageerd op IPC opdracht: {0} met: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -172,10 +172,6 @@ StackTrace:
<value>Verwerking van {0} mislukt!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Het oude ASF-bestand kon niet worden verwijderd. Verwijder {0} handmatig, zodat de update uitgevoerd kan worden!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Verzoek is mislukt na {0} pogingen!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -300,9 +296,6 @@ StackTrace:
<value>Het gelijktijdig spelen van meer dan {0} spellen is niet mogelijk, alleen de eerste {0} spellen van {1} worden gespeeld!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>IPC service kan niet worden gestart vanwege de AddressAccessDeniedException! Als je gebruik wilt maken van de IPC service van ASF, start ASF als administrator of geef de juiste machtigingen!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Gereageerd op IPC opdracht: {0} met: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -143,7 +143,6 @@
<data name="Exiting" xml:space="preserve">
<value>Avslutter...</value>
</data>
@@ -196,7 +195,6 @@
<data name="Done" xml:space="preserve">

View File

@@ -173,10 +173,6 @@ StackTrace:
<value>Analizowanie {0} nie powiodło się!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Nie można usunąć starej binarki ASF. Usuń ręcznie {0} aby naprawić funkcję aktualizacji!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Żądanie nie powiodło się, po {0} próbach!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -300,9 +296,6 @@ StackTrace:
<value>Uruchomienie więcej niż {0} gier naraz nie jest możliwe, jedynie pierwsze {0} gier z {1} zostanie użytych!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>Usługa IPC nie mogła zostać uruchomiona z powodu błędu AddressAccessDeniedException! Jeżeli chcesz używać usługi IPC dostarczonej przez ASF, przemyśl uruchomienie ASF jako administrator lub przyznanie odpowiednich uprawnień!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Odpowiedziano na komendę IPC: {0} wiadomością: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -173,10 +173,6 @@ StackTrace:
<value>Falha ao analisar {0}!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Não foi possível remover o arquivo {0}. Por favor, remova-o manualmente para que a atualização funcione normalmente!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>A solicitação falhou após {0} tentativas!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -300,9 +296,6 @@ StackTrace:
<value>Não é possível jogar mais de {0} jogos ao mesmo tempo, apenas os primeiros {0} jogos de {1} serão usados!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>Não foi possível iniciar o serviço IPC devido a AddressAccessDeniedException! Se você quer utilizar o serviço IPC fornecido pelo ASF, considere iniciar o ASF como administrador, ou dando as permissões necessárias!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Respondeu ao comando IPC: {0} com: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -173,10 +173,6 @@ StackTrace:
<value>Falha ao analisar {0}!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Não foi possível remover o velho ASF, por favor remova {0} manualmente para a função de atualização funcionar!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>O pedido falhou após {0} tentativas!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -300,9 +296,6 @@ StackTrace:
<value>Não é possível jogar {0} ao mesmo tempo, apenas {0} jogos vão usados com {1}!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>Serviço de IPC não pode ser iniciado devido a AddressAccessDeniedException! Se quiser usar o serviço IPC fornecido pelo ASF, considere iniciar o ASF como administrador, ou dando permissões adequadas!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Respondeu ao comando do IPC: {0} com: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -173,10 +173,6 @@ StackTrace:
<value>Parsing {0} failed!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Could not remove old ASF binary. Please remove {0} manually in order for update function to work!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Request failed after {0} attempts!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -300,9 +296,6 @@ StackTrace:
<value>Playing more than {0} games concurrently is not possible, only first {0} entries from {1} will be used!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>IPC service could not be started because of AddressAccessDeniedException! If you want to use IPC service provided by ASF, consider starting ASF as administrator, or giving proper permissions!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Answered to IPC command: {0} with: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -173,10 +173,6 @@ StackTrace:
<value>Parsarea {0} a eșuat!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Nu a fost posibilă eliminarea ultimului executabil ASF. Te rog să elimini manual {0} pentru ca funcția de actualizare să funcționeze!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Cererea a eșuat după {0} încercări!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -300,9 +296,6 @@ StackTrace:
<value>Jucarea a mai mult de {0} jocuri concomitent nu este posibil, numai primele {0} intrări de la {1} vor fi folosite!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>Serviciul IPC nu a putut fi pornit din cauza AddressAccessDeniedException! Dacă dorești să utilizezi serviciul IPC oferit de ASF, ia în considerare rularea ASF-ului ca administrator sau acordarea de permisiuni adecvate!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Se răspunde la comanda IPC: {0} cu: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -173,10 +173,6 @@
<value>Обработка {0} не удалась!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Невозможно удалить старый исполняемый файл ASF. Пожалуйста, удалите {0} самостоятельно, для восстановления функции автоматического обновления!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Запрос окончился неудачей после {0} попыток!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -300,9 +296,6 @@
<value>Невозможен запуск более {0} игр одновременно, будут использованы только первые {0} записей из параметра {1}!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>Сервис IPC не может быть запущен, из-за "AddressAccessDeniedException" (исключение: отказ в доступе к адресу)! Если Вы желаете использовать сервис IPC, предоставляемый ASF, то попробуйте запустить ASF от имени администратора, или выдать необходимые права!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>На запрос IPC: {0} дан ответ: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -173,10 +173,6 @@ StackTrace:
<value>Spracovávanie {0} zlyhalo!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Nepodarilo sa odstrániť starý binárny súbor ASF. Aby aktualizačná funkcia pracovala správne, odstráň prosím súbor {0} ručne!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Požiadavka zlyhala po {0} pokusoch!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -292,7 +288,6 @@ StackTrace:
<data name="BotAlreadyStopped" xml:space="preserve">
<value>Tento bot už bol zastavený!</value>
</data>

View File

@@ -164,7 +164,6 @@ StackTrace:
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>Neuspešno traženje nove verzije!</value>
</data>
@@ -256,7 +255,6 @@ StackTrace:
<data name="BotNotFound" xml:space="preserve">
<value>Nije moguće pronaći bilo kakvog bot-a nazvanog {0}!</value>
<comment>{0} will be replaced by bot's name query (string)</comment>

View File

@@ -173,10 +173,6 @@ StackTrace:
<value>Tolkning {0} misslyckades!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Kunde inte ta bort den gamla ASF binären, vänligen ta bort {0} manuellt för att uppdateringsfunktionen ska fungera!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Begäran misslyckades efter {0} försök!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -301,9 +297,6 @@ StackTrace:
<value>Går inte att spela mer än {0} spel samtidigt, bara första {0} poster från {1} kommer att användas!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>IPC-tjänsten kunde inte startas pågrund av AddressAccessDeniedException! om du vill använda IPC-tjänsten som tillhandahålls av ASF, överväg att starta ASF som administratör, eller ge den rätt rättigheter!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Svarade till IPC kommandot {0} med: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -173,10 +173,6 @@ Yığın izleme:
<value>{0} nesnesi işlenirken bir hata oluştu!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Eski ASF ikili dosyası kaldırılamadı, lütfen güncelleme fonksiyonunun çalışması için {0} dosyasını el ile kaldırın!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>{0} denemeden sonra istek başarısız oldu!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -300,9 +296,6 @@ Yığın izleme:
<value>Eşzamanlı olarak {0} oyundan fazlasını oynamak mümkün değildir, yalnızca {1} yapılandırmasından ilk {0} girdisi kullanılacaktır!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>IPC hizmeti AddressAccessDeniedException nedeniyle başlatılamadı! ASF tarafından sağlanan IPC hizmetini kullanmak istiyorsanız, ASF'yi yönetici olarak başlatmayı veya uygun izinler vermeyi düşünün!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>IPC komutu {0} için cevap: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -173,10 +173,6 @@
<value>Не вдалося обробити {0}!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Неможливо видалити старий виконуваний файл ASF. Будь ласка, видаліть {0} самостійно, для відновлення функції автоматичного оновлення!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Не вдалося виконати запит після {0} спроб!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -292,7 +288,6 @@
<data name="BotAlreadyStopped" xml:space="preserve">
<value>Цей бот вже зупинений!</value>
</data>

View File

@@ -173,10 +173,6 @@ StackTrace:
<value>Phân tách ngữ pháp {0} không thành công!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Không thể xóa tập tin ASF cũ, vui lòng xóa thủ công {0} để chạy chức năng cập nhật!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Yêu cầu thất bại sau {0} nỗ lực!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -300,9 +296,6 @@ StackTrace:
<value>Chơi nhiều hơn {0} trò chơi đồng thời là không thể, chỉ {0} trò chơi đầu tiên {1} sẽ được sử dụng!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>Dịch vụ IPC không thể chạy do AddressAccessDeniedException! Nếu bạn muốn dùng dịch vụ IPC được cung cấp bởi ASF, hãy chạy ASF bằng quyền admin, hoặc cấp quyền thích hợp!</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>Đã trả lời lệnh IPC: {0} với: {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -170,10 +170,6 @@
<value>解析 {0} 失败 </value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>无法删除旧的ASF文件请手动移除{0} 以启动更新功能!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>在 {0} 次尝试后请求失败!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -297,9 +293,6 @@
<value>目前无法同时挂 {0} 个以上的游戏,只有 {1} 里面的前 {0} 个游戏可用!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="ErrorIPCAddressAccessDeniedException" xml:space="preserve">
<value>由于目标地址访问受拒绝,无法启动 IPC 服务 如果你想要使用ASF提供的 IPC 服务,请用管理员身份运行,或者给予更高的权限。</value>
</data>
<data name="IPCAnswered" xml:space="preserve">
<value>IPC 命令响应︰ {0} 及 {1}</value>
<comment>{0} will be replaced by IPC command, {1} will be replaced by IPC answer</comment>

View File

@@ -170,10 +170,6 @@
<value>分析 {0} 失敗 </value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>無法刪除舊的 ASF 檔案,請依序手動刪除 {0} ,使更新功能正常運作!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>嘗試請求 {0} 次後失敗!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -289,7 +285,6 @@
<data name="BotAlreadyStopped" xml:space="preserve">
<value>這個 BOT 已經停止了!</value>
</data>
@@ -403,7 +398,7 @@
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by status string, {2} will be replaced by list of granted IDs (numbers), separated by a comma</comment>
</data>
<data name="BotAlreadyRunning" xml:space="preserve">
<value>BOT已在運行中</value>
<value>BOT 已在運行中!</value>
</data>
<data name="BotAuthenticatorConverting" xml:space="preserve">
<value>正在將 .maFile 轉化成 ASF 的文件格式...</value>
@@ -649,5 +644,8 @@
<value>已完成 Steam 探索佇列 #{0}。</value>
<comment>{0} will be replaced by queue number</comment>
</data>
<data name="BotOwnsOverview" xml:space="preserve">
<value>{0}/{1} 的 BOT 已經擁有所有被檢查的遊戲。</value>
<comment>{0} will be replaced by number of bots that already own games being checked, {1} will be replaced by total number of bots that were checked during the process</comment>
</data>
</root>

View File

@@ -313,7 +313,6 @@ namespace ArchiSteamFarm {
return;
}
ArchiWebHandler.Init();
IPC.Initialize(GlobalConfig.IPCHost, GlobalConfig.IPCPort);
OS.Init(GlobalConfig.Headless);
WebBrowser.Init();

View File

@@ -43,6 +43,8 @@ namespace ArchiSteamFarm {
internal readonly CookieContainer CookieContainer = new CookieContainer();
internal TimeSpan Timeout => HttpClient.Timeout;
private readonly ArchiLogger ArchiLogger;
private readonly HttpClient HttpClient;

View File

@@ -19,6 +19,6 @@
"OptimizationMode": 0,
"Statistics": true,
"SteamOwnerID": 0,
"SteamProtocols": 1,
"SteamProtocols": 4,
"UpdateChannel": 1
}

View File

@@ -5,12 +5,12 @@ branches:
only:
- master
skip_branch_with_pr: true
image: Visual Studio 2017 Preview
image: Visual Studio 2017
configuration: Release
platform: Any CPU
clone_depth: 10
environment:
DOTNET_CHANNEL: release/2.0.0
DOTNET_CHANNEL: 2.0
DOTNET_CLI_TELEMETRY_OPTOUT: true
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
RUNTIMES: generic win-x64 linux-x64 linux-arm osx-x64
@@ -29,10 +29,7 @@ install:
Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/dotnet/cli/master/scripts/obtain/dotnet-install.ps1' -OutFile '.\scripts\obtain\dotnet-install.ps1'
.\scripts\obtain\dotnet-install.ps1 -Channel "$env:DOTNET_CHANNEL" -InstallDir "$env:DOTNET_INSTALL_DIR" -NoPath
$env:Path = "$env:DOTNET_INSTALL_DIR;$env:Path"
.\scripts\obtain\dotnet-install.ps1 -Channel "$env:DOTNET_CHANNEL" -InstallDir "$env:DOTNET_INSTALL_DIR"
before_build:
- ps: >-
$ErrorActionPreference = 'Stop'
@@ -69,7 +66,7 @@ after_test:
Set-Content -Path "ArchiSteamFarm\out\$RUNTIME\ArchiSteamFarm.version" -Value "$RUNTIME"
7z a -bd -tzip -mm=Deflate64 -mx=7 "ArchiSteamFarm\out\ASF-$RUNTIME.zip" "$env:APPVEYOR_BUILD_FOLDER\ArchiSteamFarm\out\$RUNTIME\*"
7z a -bd -tzip -mm=Deflate64 -mx=9 -mfb=257 -mpass=3 "ArchiSteamFarm\out\ASF-$RUNTIME.zip" "$env:APPVEYOR_BUILD_FOLDER\ArchiSteamFarm\out\$RUNTIME\*"
Push-AppveyorArtifact "ArchiSteamFarm\out\ASF-$RUNTIME.zip" -FileName "ASF-$RUNTIME.zip" -DeploymentName "ASF-$RUNTIME.zip"
}

Binary file not shown.

Binary file not shown.

View File

@@ -4,14 +4,14 @@ NetHook2
This tool is used for reverse-engineering of Steam client. It's capable of hooking and recording network traffic sent/received by the client. If you're not trying to implement missing SK2 functionality in ASF, then please do not proceed.
1. Launch Steam client
2. Execute ```hook.bat```
2. Execute `hook.cmd`
3. Reproduce the functionality you're trying to add
4. Execute ```unhook.bat```
5. Use ```NetHookAnalyzer2.exe``` for analyzing recorded log (which can be found in your Steam directory)
4. Execute `unhook.cmd`
5. Use `NetHookAnalyzer2.exe` for analyzing recorded log (which can be found in your Steam directory)
- Source of the ```NetHook2.dll``` can be found **[here](https://github.com/SteamRE/SteamKit/tree/master/Resources/NetHook2)**
- Source of the ```NetHookAnalyzer2.exe``` can be found **[here](https://github.com/SteamRE/SteamKit/tree/master/Resources/NetHookAnalyzer2)**
- Source of the `NetHook2.dll` can be found **[here](https://github.com/SteamRE/SteamKit/tree/master/Resources/NetHook2)**
- Source of the `NetHookAnalyzer2.exe` can be found **[here](https://github.com/SteamRE/SteamKit/tree/master/Resources/NetHookAnalyzer2)**
===================
There is absolutely no guarantee that this will even work for you, not to mention the consequences from hooking the external DLL into steam client. You're on your own.
There is absolutely no guarantee that this will even work for you, not to mention the consequences from hooking the external DLL into steam client. You're on your own. This build is for me so I don't need to compile it from scratch every time - I strongly recommend against using it. You have SK2 sources for a reason.

Binary file not shown.

Binary file not shown.

Binary file not shown.