From 9559bcb3b84a86a390e0e053b0292ddcc3296e27 Mon Sep 17 00:00:00 2001 From: Ryzhehvost Date: Mon, 25 Jan 2016 09:42:59 +0200 Subject: [PATCH] Distribute keys among bots --- ArchiSteamFarm/Bot.cs | 62 +++++++++++++++++++++++++++---- ArchiSteamFarm/config/example.xml | 8 ++++ 2 files changed, 62 insertions(+), 8 deletions(-) mode change 100644 => 100755 ArchiSteamFarm/Bot.cs mode change 100644 => 100755 ArchiSteamFarm/config/example.xml diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs old mode 100644 new mode 100755 index 9461faadc..97a7250ce --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -81,6 +81,7 @@ namespace ArchiSteamFarm { internal bool FarmOffline { get; private set; } = false; internal bool HandleOfflineMessages { get; private set; } = false; internal bool ForwardKeysToOtherBots { get; private set; } = false; + internal bool DistributeKeys { get; private set; } = false; internal bool UseAsfAsMobileAuthenticator { get; private set; } = false; internal bool ShutdownOnFarmingFinished { get; private set; } = false; internal bool SendOnFarmingFinished { get; private set; } = false; @@ -362,6 +363,9 @@ namespace ArchiSteamFarm { case "ForwardKeysToOtherBots": ForwardKeysToOtherBots = bool.Parse(value); break; + case "DistributeKeys": + DistributeKeys = bool.Parse(value); + break; case "ShutdownOnFarmingFinished": ShutdownOnFarmingFinished = bool.Parse(value); break; @@ -583,17 +587,22 @@ namespace ArchiSteamFarm { internal async Task ResponseRedeem(string message, bool validate) { StringBuilder response = new StringBuilder(); using (StringReader reader = new StringReader(message)) { - string key; - while ((key = reader.ReadLine()) != null) { + string key= reader.ReadLine(); + IEnumerator iterator = Bots.Values.GetEnumerator(); + Bot currentBot = this; + while (key != null) { + if (currentBot == null) { + break; + } if (validate && !IsValidCdKey(key)) { continue; } ArchiHandler.PurchaseResponseCallback result; try { - result = await ArchiHandler.RedeemKey(key); + result = await currentBot.ArchiHandler.RedeemKey(key); } catch (Exception e) { - Logging.LogGenericException(e, BotName); + Logging.LogGenericException(e, currentBot.BotName); break; } @@ -609,8 +618,24 @@ namespace ArchiSteamFarm { case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.BaseGameRequired: case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.OnCooldown: case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.RegionLocked: - response.Append(Environment.NewLine + "<" + BotName + "> Key: " + key + " | Status: " + purchaseResult + " | Items: " + string.Join("", items)); + response.Append(Environment.NewLine + "<" + currentBot.BotName + "> Key: " + key + " | Status: " + purchaseResult + " | Items: " + string.Join("", items)); + if (DistributeKeys) { + do { + if (iterator.MoveNext()) { + currentBot = iterator.Current; + } else { + currentBot = null; + } + } while (currentBot==this); + + if (!ForwardKeysToOtherBots) { + key = reader.ReadLine(); + } + break; + } + if (!ForwardKeysToOtherBots) { + key = reader.ReadLine(); break; } @@ -654,14 +679,35 @@ namespace ArchiSteamFarm { break; } } + key = reader.ReadLine(); break; case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.OK: - response.Append(Environment.NewLine + "<" + BotName + "> Key: " + key + " | Status: " + purchaseResult + " | Items: " + string.Join("", items)); + response.Append(Environment.NewLine + "<" + currentBot.BotName + "> Key: " + key + " | Status: " + purchaseResult + " | Items: " + string.Join("", items)); + if (DistributeKeys) { + do { + if (iterator.MoveNext()) { + currentBot = iterator.Current; + } else { + currentBot = null; + } + } while (currentBot==this); + } + key = reader.ReadLine(); break; case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.DuplicatedKey: case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.InvalidKey: - response.Append(Environment.NewLine + "<" + BotName + "> Key: " + key + " | Status: " + purchaseResult + " | Items: " + string.Join("", items)); - break; + response.Append(Environment.NewLine + "<" + currentBot.BotName + "> Key: " + key + " | Status: " + purchaseResult + " | Items: " + string.Join("", items)); + if (DistributeKeys && !ForwardKeysToOtherBots) { + do { + if (iterator.MoveNext()) { + currentBot = iterator.Current; + } else { + currentBot = null; + } + } while (currentBot==this); + } + key = reader.ReadLine(); + break; } } } diff --git a/ArchiSteamFarm/config/example.xml b/ArchiSteamFarm/config/example.xml old mode 100644 new mode 100755 index 25d858dbb..1f65675bf --- a/ArchiSteamFarm/config/example.xml +++ b/ArchiSteamFarm/config/example.xml @@ -97,6 +97,14 @@ + + + + + + + +