mirror of
https://github.com/JustArchiNET/ArchiSteamFarm.git
synced 2025-12-31 13:40:46 +00:00
Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3afb6fa0e8 | ||
|
|
b0ecccd916 | ||
|
|
56b88c4c72 | ||
|
|
0625e57333 | ||
|
|
d1cb536981 | ||
|
|
fde9adb56b | ||
|
|
353af0d67b | ||
|
|
4a768f8ce0 | ||
|
|
a455a7bbdd | ||
|
|
36b5534f9e | ||
|
|
d554c57b34 | ||
|
|
befc71f358 | ||
|
|
72045e5f71 | ||
|
|
e1358f0b90 | ||
|
|
a9332c3a8c | ||
|
|
9f4a710676 | ||
|
|
d55ebb79da | ||
|
|
87eafaf81d |
@@ -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 {
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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><{0}> Моля, въведете името на устройството за вашият 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><{0}> Моля въведете Вашият 2FA код от Steam authenticator приложението: </value>
|
||||
<comment>{0} will be replaced by bot's name. Please note that this translation should end with space</comment>
|
||||
</data>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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.
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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>
|
||||
19
appveyor.yml
19
appveyor.yml
@@ -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 [](https://www.paypal.me/JustArchi/1usd) [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=HD2P2P3WGS5Y4) [](https://blockchain.info/address/1Archi6M1r5b41Rvn1SY2FfJAzsrEUT7aT) [](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
|
||||
|
||||
BIN
packages/SteamKit2.1.8.0/SteamKit2.1.8.0.nupkg
vendored
BIN
packages/SteamKit2.1.8.0/SteamKit2.1.8.0.nupkg
vendored
Binary file not shown.
BIN
packages/SteamKit2.1.8.0/lib/net45/SteamKit2.dll
vendored
BIN
packages/SteamKit2.1.8.0/lib/net45/SteamKit2.dll
vendored
Binary file not shown.
8297
packages/SteamKit2.1.8.0/lib/net45/SteamKit2.xml
vendored
8297
packages/SteamKit2.1.8.0/lib/net45/SteamKit2.xml
vendored
File diff suppressed because it is too large
Load Diff
BIN
packages/SteamKit2.1.8.1-citest/SteamKit2.1.8.1-citest.nupkg
Normal file
BIN
packages/SteamKit2.1.8.1-citest/SteamKit2.1.8.1-citest.nupkg
Normal file
Binary file not shown.
BIN
packages/SteamKit2.1.8.1-citest/lib/net45/SteamKit2.dll
Normal file
BIN
packages/SteamKit2.1.8.1-citest/lib/net45/SteamKit2.dll
Normal file
Binary file not shown.
Reference in New Issue
Block a user