Compare commits

..

18 Commits

Author SHA1 Message Date
JustArchi
3afb6fa0e8 Release tag fix 2017-02-12 15:50:24 +01:00
JustArchi
b0ecccd916 Correct AppVeyor permission to deploy 2017-02-12 15:42:51 +01:00
Łukasz Domeradzki
56b88c4c72 Merge pull request #465 from JustArchi/l10n
New Crowdin translations
2017-02-12 15:32:36 +01:00
JustArchi
0625e57333 Switch from self-compiled SK2 back to original SK2
It got updated so I no longer need my own version for bugfixes
2017-02-12 15:29:50 +01:00
JustArchi
d1cb536981 Start deploying through AppVeyor 2017-02-12 15:15:20 +01:00
Łukasz Domeradzki
fde9adb56b Translated 2017-02-11 23:50:51 +01:00
JustArchi
353af0d67b Update SK2 to latest master and rewrite ASF to use newly-introduced EPurchaseResultDetail 2017-02-11 22:24:49 +01:00
Łukasz Domeradzki
4a768f8ce0 New translations 2017-02-11 19:30:54 +01:00
Łukasz Domeradzki
a455a7bbdd New translations 2017-02-11 19:20:53 +01:00
Łukasz Domeradzki
36b5534f9e Translated 2017-02-11 19:20:50 +01:00
JustArchi
d554c57b34 Misc 2017-02-11 17:18:50 +01:00
JustArchi
befc71f358 Code cleanup 2017-02-11 17:09:15 +01:00
JustArchi
72045e5f71 Add WCF metadata publishing, #448 2017-02-11 16:06:05 +01:00
Łukasz Domeradzki
e1358f0b90 New translations 2017-02-10 22:03:49 +01:00
Łukasz Domeradzki
a9332c3a8c New translations 2017-02-10 21:32:27 +01:00
Łukasz Domeradzki
9f4a710676 New translations 2017-02-09 22:22:42 +01:00
Łukasz Domeradzki
d55ebb79da New translations 2017-02-09 22:22:38 +01:00
JustArchi
87eafaf81d Bump 2017-02-09 14:01:00 +01:00
23 changed files with 167 additions and 8405 deletions

View File

@@ -384,7 +384,7 @@ namespace ArchiSteamFarm {
internal sealed class PurchaseResponseCallback : CallbackMsg {
internal readonly Dictionary<uint, string> Items;
internal EPurchaseResult PurchaseResult { get; set; }
internal EPurchaseResultDetail PurchaseResultDetail { get; set; }
internal PurchaseResponseCallback(JobID jobID, CMsgClientPurchaseResponse msg) {
if ((jobID == null) || (msg == null)) {
@@ -392,7 +392,7 @@ namespace ArchiSteamFarm {
}
JobID = jobID;
PurchaseResult = (EPurchaseResult) msg.purchase_result_details;
PurchaseResultDetail = (EPurchaseResultDetail) msg.purchase_result_details;
if (msg.purchase_receipt_info == null) {
ASF.ArchiLogger.LogNullError(nameof(msg.purchase_receipt_info));
@@ -436,20 +436,6 @@ namespace ArchiSteamFarm {
Items[packageID] = gameName;
}
}
internal enum EPurchaseResult : sbyte {
[SuppressMessage("ReSharper", "UnusedMember.Global")]
Unknown = -2,
Timeout = -1,
OK = 0,
AlreadyOwned = 9,
RegionLocked = 13,
InvalidKey = 14,
DuplicatedKey = 15,
BaseGameRequired = 24,
SteamWalletCode = 50,
OnCooldown = 53
}
}
internal sealed class RedeemGuestPassResponseCallback : CallbackMsg {

View File

@@ -79,18 +79,6 @@
<HintPath>..\packages\HtmlAgilityPack.1.4.9.5\lib\Net45\HtmlAgilityPack.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.168.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.9.0.2-beta2\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
@@ -115,9 +103,9 @@
<HintPath>..\packages\protobuf-net.2.0.0.668\lib\net40\protobuf-net.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="SteamKit2, Version=1.8.0.26737, Culture=neutral, PublicKeyToken=ed3ce47ed5aad940, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>lib\SteamKit2.dll</HintPath>
<Reference Include="SteamKit2, Version=1.8.1.0, Culture=neutral, PublicKeyToken=ed3ce47ed5aad940, processorArchitecture=MSIL">
<HintPath>..\packages\SteamKit2.1.8.1-citest\lib\net45\SteamKit2.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration.Install" />

View File

@@ -939,14 +939,14 @@ namespace ArchiSteamFarm {
internal void OnDisconnected() => Ready = false;
internal async Task<ArchiHandler.PurchaseResponseCallback.EPurchaseResult> RedeemWalletKey(string key) {
internal async Task<EPurchaseResultDetail> RedeemWalletKey(string key) {
if (string.IsNullOrEmpty(key)) {
Bot.ArchiLogger.LogNullError(nameof(key));
return ArchiHandler.PurchaseResponseCallback.EPurchaseResult.Unknown;
return EPurchaseResultDetail.Timeout;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return ArchiHandler.PurchaseResponseCallback.EPurchaseResult.Timeout;
return EPurchaseResultDetail.Timeout;
}
const string request = SteamStoreURL + "/account/validatewalletcode";
@@ -955,7 +955,7 @@ namespace ArchiSteamFarm {
};
Steam.RedeemWalletResponse response = await WebBrowser.UrlPostToJsonResultRetry<Steam.RedeemWalletResponse>(request, data).ConfigureAwait(false);
return response?.PurchaseResult ?? ArchiHandler.PurchaseResponseCallback.EPurchaseResult.Timeout;
return response?.PurchaseResultDetail ?? EPurchaseResultDetail.Timeout;
}
internal async Task<bool> SendTradeOffer(HashSet<Steam.Item> inventory, ulong partnerID, string token = null) {

View File

@@ -2375,47 +2375,46 @@ namespace ArchiSteamFarm {
} else {
ArchiHandler.PurchaseResponseCallback result = await currentBot.ArchiHandler.RedeemKey(key).ConfigureAwait(false);
if (result == null) {
response.Append(Environment.NewLine + "<" + currentBot.BotName + "> Key: " + key + " | Status: " + ArchiHandler.PurchaseResponseCallback.EPurchaseResult.Timeout);
response.Append(Environment.NewLine + "<" + currentBot.BotName + "> Key: " + key + " | Status: " + EPurchaseResultDetail.Timeout);
currentBot = null; // Either bot will be changed, or loop aborted
} else {
switch (result.PurchaseResult) {
case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.DuplicatedKey:
case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.InvalidKey:
case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.OK:
case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.SteamWalletCode:
case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.Timeout:
case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.Unknown:
if (result.PurchaseResult == ArchiHandler.PurchaseResponseCallback.EPurchaseResult.SteamWalletCode) {
switch (result.PurchaseResultDetail) {
case EPurchaseResultDetail.NoDetail: // OK
case EPurchaseResultDetail.Timeout:
case EPurchaseResultDetail.BadActivationCode:
case EPurchaseResultDetail.DuplicateActivationCode:
case EPurchaseResultDetail.CannotRedeemCodeFromClient: // Steam wallet code
if (result.PurchaseResultDetail == EPurchaseResultDetail.CannotRedeemCodeFromClient) {
// If it's a wallet code, try to redeem it, and forward the result
// The result is final, there is no place for forwarding
result.PurchaseResult = await currentBot.ArchiWebHandler.RedeemWalletKey(key).ConfigureAwait(false);
result.PurchaseResultDetail = await currentBot.ArchiWebHandler.RedeemWalletKey(key).ConfigureAwait(false);
}
if ((result.Items != null) && (result.Items.Count > 0)) {
response.Append(Environment.NewLine + string.Format(Strings.BotRedeemResponseWithItems, currentBot.BotName, key, result.PurchaseResult, string.Join("", result.Items)));
response.Append(Environment.NewLine + string.Format(Strings.BotRedeemResponseWithItems, currentBot.BotName, key, result.PurchaseResultDetail, string.Join("", result.Items)));
} else {
response.Append(Environment.NewLine + string.Format(Strings.BotRedeemResponse, currentBot.BotName, key, result.PurchaseResult));
response.Append(Environment.NewLine + string.Format(Strings.BotRedeemResponse, currentBot.BotName, key, result.PurchaseResultDetail));
}
if (result.PurchaseResult != ArchiHandler.PurchaseResponseCallback.EPurchaseResult.Timeout) {
if (result.PurchaseResultDetail != EPurchaseResultDetail.Timeout) {
unusedKeys.Remove(key);
}
key = reader.ReadLine(); // Next key
if (result.PurchaseResult == ArchiHandler.PurchaseResponseCallback.EPurchaseResult.OK) {
if (result.PurchaseResultDetail == EPurchaseResultDetail.NoDetail) {
break; // Next bot (if needed)
}
continue; // Keep current bot
case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.AlreadyOwned:
case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.BaseGameRequired:
case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.OnCooldown:
case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.RegionLocked:
case EPurchaseResultDetail.AlreadyPurchased:
case EPurchaseResultDetail.RestrictedCountry:
case EPurchaseResultDetail.DoesNotOwnRequiredApp:
case EPurchaseResultDetail.RateLimited:
if ((result.Items != null) && (result.Items.Count > 0)) {
response.Append(Environment.NewLine + string.Format(Strings.BotRedeemResponseWithItems, currentBot.BotName, key, result.PurchaseResult, string.Join("", result.Items)));
response.Append(Environment.NewLine + string.Format(Strings.BotRedeemResponseWithItems, currentBot.BotName, key, result.PurchaseResultDetail, string.Join("", result.Items)));
} else {
response.Append(Environment.NewLine + string.Format(Strings.BotRedeemResponse, currentBot.BotName, key, result.PurchaseResult));
response.Append(Environment.NewLine + string.Format(Strings.BotRedeemResponse, currentBot.BotName, key, result.PurchaseResultDetail));
}
if (!forward) {
@@ -2438,19 +2437,19 @@ namespace ArchiSteamFarm {
continue;
}
switch (otherResult.PurchaseResult) {
case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.DuplicatedKey:
case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.InvalidKey:
case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.OK:
switch (otherResult.PurchaseResultDetail) {
case EPurchaseResultDetail.NoDetail:
case EPurchaseResultDetail.BadActivationCode:
case EPurchaseResultDetail.DuplicateActivationCode:
alreadyHandled = true; // This key is already handled, as we either redeemed it or we're sure it's dupe/invalid
unusedKeys.Remove(key);
break;
}
if ((otherResult.Items != null) && (otherResult.Items.Count > 0)) {
response.Append(Environment.NewLine + string.Format(Strings.BotRedeemResponseWithItems, bot.BotName, key, otherResult.PurchaseResult, string.Join("", otherResult.Items)));
response.Append(Environment.NewLine + string.Format(Strings.BotRedeemResponseWithItems, bot.BotName, key, otherResult.PurchaseResultDetail, string.Join("", otherResult.Items)));
} else {
response.Append(Environment.NewLine + string.Format(Strings.BotRedeemResponse, bot.BotName, key, otherResult.PurchaseResult));
response.Append(Environment.NewLine + string.Format(Strings.BotRedeemResponse, bot.BotName, key, otherResult.PurchaseResultDetail));
}
if (alreadyHandled) {
@@ -2466,6 +2465,19 @@ namespace ArchiSteamFarm {
}
}
key = reader.ReadLine(); // Next key
break; // Next bot (if needed)
default:
ASF.ArchiLogger.LogGenericWarning(string.Format(Strings.WarningUnknownValuePleaseReport, nameof(result.PurchaseResultDetail), result.PurchaseResultDetail));
if ((result.Items != null) && (result.Items.Count > 0)) {
response.Append(Environment.NewLine + string.Format(Strings.BotRedeemResponseWithItems, currentBot.BotName, key, result.PurchaseResultDetail, string.Join("", result.Items)));
} else {
response.Append(Environment.NewLine + string.Format(Strings.BotRedeemResponse, currentBot.BotName, key, result.PurchaseResultDetail));
}
unusedKeys.Remove(key);
key = reader.ReadLine(); // Next key
break; // Next bot (if needed)
}
@@ -2478,7 +2490,7 @@ namespace ArchiSteamFarm {
do {
currentBot = enumerator.MoveNext() ? enumerator.Current : null;
} while ((currentBot == this) || ((currentBot != null) && !currentBot.IsConnectedAndLoggedOn));
} while ((currentBot == this) || (currentBot?.IsConnectedAndLoggedOn == false));
}
}
}

View File

@@ -392,7 +392,7 @@ namespace ArchiSteamFarm.JSON {
internal sealed class RedeemWalletResponse {
#pragma warning disable 649
[JsonProperty(PropertyName = "detail", Required = Required.Always)]
internal readonly ArchiHandler.PurchaseResponseCallback.EPurchaseResult PurchaseResult;
internal readonly EPurchaseResultDetail PurchaseResultDetail;
#pragma warning restore 649
// Deserialized from JSON

View File

@@ -203,7 +203,9 @@
<data name="GlobalConfigChanged" xml:space="preserve">
<value>Файлът с общите настройки беше променен!</value>
</data>
<data name="ErrorGlobalConfigRemoved" xml:space="preserve">
<value>Файлът с общите настройки е премахнат!</value>
</data>
<data name="IgnoringTrade" xml:space="preserve">
<value>Пренебрегване на замяната: {0}</value>
<comment>{0} will be replaced by trade number</comment>
@@ -225,8 +227,13 @@
<data name="Restarting" xml:space="preserve">
<value>Рестартиране…</value>
</data>
<data name="WarningRuntimeUnsupported" xml:space="preserve">
<value>ASF засече неподържана версия. Програмата е вероятно да НЕ работи правилно. Продължаването на работа при това положение е за ваш риск и без подръжка!</value>
</data>
<data name="RuntimeVersionComparison" xml:space="preserve">
<value>Изискана версия: {0} | Открита версия: {1}</value>
<comment>{0} will be replaced by required version, {1} will be replaced by current version</comment>
</data>
<data name="RuntimeVersionOK" xml:space="preserve">
<value>Вашата {0} версия е ОК.</value>
<comment>{0} will be replaced by runtime name (e.g. "Mono")</comment>
@@ -292,8 +299,14 @@
<value>Версия на компютъра Ви: {0} | Версия на сървъра: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputDeviceID" xml:space="preserve">
<value>&lt;{0}&gt; Моля, въведете името на устройството за вашият mobile authenticator (включително "android:): </value>
<comment>{0} will be replaced by bot's name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>&lt;{0}&gt; Моля въведете Вашият 2FA код от Steam authenticator приложението: </value>
<comment>{0} will be replaced by bot's name. Please note that this translation should end with space</comment>
</data>

View File

@@ -129,7 +129,10 @@
<value>Sisältö: {0}</value>
<comment>{0} will be replaced by content string. Please note that this string should include newline for formatting.</comment>
</data>
<data name="ErrorConfigPropertyInvalid" xml:space="preserve">
<value>Kohdassa {0} muokattu arvo {1} on epäkelpo</value>
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by invalid value</comment>
</data>
<data name="ErrorExitingWithNonZeroErrorCode" xml:space="preserve">

View File

@@ -174,7 +174,7 @@ Hata bilgileri:
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Eski ASF binary dosyalar kaldırılamadı, lütfen güncelleme fonksiyonunun çalışması için {0} 'yi manuel olarak kaldırın!</value>
<value>Eski ASF binary dosyaları kaldırılamadı, lütfen güncelleme fonksiyonunun çalışması için {0} dosyasını manuel olarak kaldırın!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
@@ -384,7 +384,7 @@ Hata bilgileri:
<comment>{0} will be replaced by bot's name, {1} will be replaced by game's appID (number), {2} will be replaced by game's name, {3} will be replaced by number of cards left to idle, {4} will be replaced by total number of games to idle, {5} will be replaced by total number of cards to idle, {6} will be replaced by translated TimeSpan string built from TimeSpan* translation parts</comment>
</data>
<data name="BotStatusIdlingList" xml:space="preserve">
<value>Bot {0}, {1} oyundan {2} adet oyun ({3} kart) kaldı (kalan süre: {4}).</value>
<value>Bot {0}: {1} oyundan {2} adet oyun ({3} kart) kaldı (kalan süre: {4}).</value>
<comment>{0} will be replaced by bot's name, {1} will be replaced by list of the games (appIDs, numbers), {2} will be replaced by total number of games to idle, {3} will be replaced by total number of cards to idle, {4} will be replaced by translated TimeSpan string built from TimeSpan* translation parts</comment>
</data>
<data name="CheckingFirstBadgePage" xml:space="preserve">
@@ -401,7 +401,7 @@ Hata bilgileri:
<value>Bitti!</value>
</data>
<data name="GamesToIdle" xml:space="preserve">
<value>Rölanti edilecek {0} oyun({1} kart) kaldı.(kalan süre: ~{2})...</value>
<value>Kart düşürülecek {0} oyun ({1} kart) kaldı (kalan süre: ~{2})...</value>
<comment>{0} will be replaced by number of games, {1} will be replaced by number of cards, {2} will be replaced by translated TimeSpan string built from TimeSpan* translation parts</comment>
</data>
<data name="IdlingFinished" xml:space="preserve">

View File

@@ -44,7 +44,7 @@ namespace ArchiSteamFarm {
internal const string ServiceDescription = "ASF is an application that allows you to farm steam cards using multiple steam accounts simultaneously.";
internal const string ServiceName = "ArchiSteamFarm";
internal const string StatisticsServer = "asf.justarchi.net";
internal const string VersionNumber = "2.2.2.5";
internal const string VersionNumber = "2.2.2.6";
internal static readonly Version Version = Assembly.GetEntryAssembly().GetName().Version;
}

View File

@@ -26,6 +26,7 @@ using System;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using ArchiSteamFarm.Localization;
namespace ArchiSteamFarm {
@@ -133,22 +134,51 @@ namespace ArchiSteamFarm {
ASF.ArchiLogger.LogGenericInfo(string.Format(Strings.WCFStarting, url));
Uri uri;
try {
ServiceHost = new ServiceHost(typeof(WCF), new Uri(url));
ServiceHost.AddServiceEndpoint(
typeof(IWCF),
binding,
string.Empty
);
uri = new Uri(url);
} catch (UriFormatException e) {
ASF.ArchiLogger.LogGenericException(e);
return;
}
ServiceHost = new ServiceHost(typeof(WCF), uri);
ServiceHost.AddServiceEndpoint(
typeof(IWCF),
binding,
string.Empty
);
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
switch (binding.Scheme) {
case "http":
smb.HttpGetEnabled = true;
break;
case "https":
smb.HttpsGetEnabled = true;
break;
case "net.tcp":
break;
default:
ASF.ArchiLogger.LogGenericWarning(string.Format(Strings.WarningUnknownValuePleaseReport, nameof(binding.Scheme), binding.Scheme));
goto case "net.tcp";
}
ServiceHost.Description.Behaviors.Add(smb);
try {
ServiceHost.Open();
ASF.ArchiLogger.LogGenericInfo(Strings.WCFReady);
} catch (AddressAccessDeniedException) {
ASF.ArchiLogger.LogGenericError(Strings.ErrorWCFAddressAccessDeniedException);
return;
} catch (Exception e) {
ASF.ArchiLogger.LogGenericException(e);
return;
}
ASF.ArchiLogger.LogGenericInfo(Strings.WCFReady);
}
internal void StopServer() {

Binary file not shown.

View File

@@ -11,5 +11,5 @@
<package id="NLog" version="5.0.0-beta05-test" targetFramework="net461" />
<package id="protobuf-net" version="2.0.0.668" targetFramework="net45" />
<package id="Resource.Embedder" version="1.2.2" targetFramework="net461" developmentDependency="true" />
<package id="SteamKit2" version="1.8.0" targetFramework="net461" />
<package id="SteamKit2" version="1.8.1-citest" targetFramework="net461" />
</packages>

View File

@@ -199,15 +199,37 @@ ASF: {0} | ConfigGenerator: {1}
<data name="TutorialFinished" xml:space="preserve">
<value>Поздравления! Изпълнихте всичко, което беше необходимо, за да използвате ASF. С това завършва обучението, които Ви подготвихме. Силно препоръчително е да прочетете цялата секция за настройки в нашето wiki, тъй като ASF предлага много полезни функции, които Вие да си настроите, като вадите карти в режим offline или ASF да ползва най-ефективния метод за вадене на карти за Вашия профил. Всичко това са допълнителни възможности и сега спокойно можете да затворите конфигуратора, когато пожелаете. Надяваме се, че ще се радвате на софтуера, който сме Ви предоставили!</value>
</data>
<data name="TutorialMainFormBotsManagementButtons" xml:space="preserve">
<value>Най-отгоре на прозореца, може да видите вече заредените настройки, както и 3 допълнителни бутона за премахване [-], преименуване [~] и за добавяне на нови настройки [+].</value>
<comment>If possible, try to keep visual representation of buttons: [-], [~] and [+]</comment>
</data>
<data name="TutorialMainFormConfigurationWiki" xml:space="preserve">
<value>Моля, имайте в предвид, че пълната информация за възможните настройки, включително тяхното описание, цен и приемливи стойности е налична на нашата GitHub wiki. Моля, ползвайте я за насоки.</value>
</data>
<data name="TutorialMainFormConfigurationWindow" xml:space="preserve">
<value>В средата на прозореца, Вие можете да зададете всички възможни настройки, които са Ви предоставени, за сегашно избраният профил.</value>
</data>
<data name="TutorialMainFormFinished" xml:space="preserve">
<value>Сега, нека започнем да настройваме нашият ASF. Натиснете на бутон плюс [+], за да добавите вашият първи Steam профил!</value>
<comment>If possible, try to keep visual representation of [+] button</comment>
</data>
<data name="TutorialMainFormHelpButton" xml:space="preserve">
<value>В горният десен ъгъл, можете да откриете бутона за помощ [?], който ще Ви пренасочи към ASF wiki за повече информация.</value>
<comment>If possible, try to keep visual representation of [?] button</comment>
</data>
<data name="TutorialMainFormShown" xml:space="preserve">
<value>Това е главният ASF ConfigGenerator екран, който е много лесен за упортеба!</value>
</data>
<data name="TutorialNewBotFormFinished" xml:space="preserve">
<value>Както виждате, вашият бот е готов да бъде настроен! Първото нещо, което ще искате да промените {0} стойността от false на true, опитайте!</value>
<comment>{0} will be replaced by name of the configuration property ("Enabled")</comment>
</data>
<data name="TutorialNewBotFormShown" xml:space="preserve">
<value>Браво! Ще бъдете попитани за име на Вашият бот. Добър пример ще е името на вашият Steam профил, който ще настроите, или всяко други име по Ваш избор, което ще Ви е лесно да свържете с Вашия бот, който е настройван в момента.</value>
</data>
<data name="TutorialStart" xml:space="preserve">
<value>Добре дошли! Забелязах, че ползвате ASF ConfigGenerator за пръв път, затова ми позволете да Ви помогна.</value>
</data>
<data name="UserInputBotName" xml:space="preserve">
<value>Моля, въведете ново име за бот: </value>
<comment>Please note that this translation should end with space</comment>

View File

@@ -48,18 +48,6 @@
<HintPath>..\packages\HtmlAgilityPack.1.4.9.5\lib\Net45\HtmlAgilityPack.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.168.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.9.0.2-beta2\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
@@ -88,9 +76,9 @@
<HintPath>..\packages\protobuf-net.2.0.0.668\lib\net40\protobuf-net.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="SteamKit2, Version=1.8.0.26737, Culture=neutral, PublicKeyToken=ed3ce47ed5aad940, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\ArchiSteamFarm\lib\SteamKit2.dll</HintPath>
<Reference Include="SteamKit2, Version=1.8.1.0, Culture=neutral, PublicKeyToken=ed3ce47ed5aad940, processorArchitecture=MSIL">
<HintPath>..\packages\SteamKit2.1.8.1-citest\lib\net45\SteamKit2.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />

View File

@@ -12,5 +12,5 @@
<package id="NLog.Windows.Forms" version="4.2.3" targetFramework="net461" />
<package id="protobuf-net" version="2.0.0.668" targetFramework="net461" />
<package id="Resource.Embedder" version="1.2.2" targetFramework="net461" developmentDependency="true" />
<package id="SteamKit2" version="1.8.0" targetFramework="net461" />
<package id="SteamKit2" version="1.8.1-citest" targetFramework="net461" />
</packages>

View File

@@ -1,4 +1,6 @@
version: 1.0.{build}-{branch}
pull_requests:
do_not_increment_build_number: true
skip_branch_with_pr: true
image: Visual Studio 2015
configuration: Release
@@ -19,9 +21,24 @@ artifacts:
name: ASF-ConfigGenerator.exe
- path: out\ASF-Service.exe
name: ASF-Service.exe
deploy:
- provider: GitHub
tag: $(appveyor_repo_tag_name)
release: ArchiSteamFarm V$(appveyor_repo_tag_name)
description: '**NOTICE:** Pre-releases are experimental versions that often contain unpatched bugs, work-in-progress features or rewritten implementations. If you don''t consider yourself advanced user, please download **[latest stable release](https://github.com/JustArchi/ArchiSteamFarm/releases/latest)** instead. Pre-release versions are dedicated to users who know how to report bugs, deal with issues and give feedback - no technical support will be given. Check out ASF **[release cycle](https://github.com/JustArchi/ArchiSteamFarm/wiki/Release-cycle)** if you''d like to learn more.\n\n---\n\nThis is automated AppVeyor GitHub deployment, human-readable changelog should be available soon. In the meantime please refer to GitHub commits.\n\n---\n\nASF is available for free. If you''re grateful for what we''re doing, please consider donating. Developing ASF requires massive amount of time and knowledge, especially when it comes to Steam (and its problems). Even 1$ is highly appreciated and shows that you care!\n\n [![Paypal.me Donate](https://img.shields.io/badge/Paypal.me-donate-yellow.svg)](https://www.paypal.me/JustArchi/1usd) [![Paypal Donate](https://img.shields.io/badge/Paypal-donate-yellow.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=HD2P2P3WGS5Y4) [![Bitcoin Donate](https://img.shields.io/badge/Bitcoin-donate-yellow.svg)](https://blockchain.info/address/1Archi6M1r5b41Rvn1SY2FfJAzsrEUT7aT) [![Steam Donate](https://img.shields.io/badge/Steam-donate-yellow.svg)](https://steamcommunity.com/tradeoffer/new/?partner=46697991&token=0ix2Ruv_)'
auth_token:
secure: QC5gIDMvSpd43EG6qW8d1E3ZHiVU4aR7pbKQonXstjj/JtAABf5S1IbtoY4OsnOR
artifact: /.*/
draft: true
prerelease: true
force_update: false
on:
branch: master
configuration: Release
appveyor_repo_tag: true
notifications:
- provider: Webhook
url: https://webhooks.gitter.im/e/6cc89e76555ee263cc11
url: https://webhooks.gitter.im/e/6982e3cd9dc9e57b1119
method: POST
on_build_success: true
on_build_failure: true

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff