From 32e68f2be316c3637d0a6f4b9cfcfa53652e5dbc Mon Sep 17 00:00:00 2001 From: JustArchi Date: Sun, 20 Dec 2015 19:01:05 +0100 Subject: [PATCH] Add offline farming, closes #41 --- ArchiSteamFarm/ArchiHandler.cs | 19 +++++++++++++++++++ ArchiSteamFarm/Bot.cs | 8 +++++++- ArchiSteamFarm/config/example.xml | 5 +++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/ArchiSteamFarm/ArchiHandler.cs b/ArchiSteamFarm/ArchiHandler.cs index aa469c860..6e3d52a6a 100644 --- a/ArchiSteamFarm/ArchiHandler.cs +++ b/ArchiSteamFarm/ArchiHandler.cs @@ -132,6 +132,9 @@ namespace ArchiSteamFarm { } switch (packetMsg.MsgType) { + case EMsg.ClientFSOfflineMessageNotification: + HandleFSOfflineMessageNotification(packetMsg); + break; case EMsg.ClientPurchaseResponse: HandlePurchaseResponse(packetMsg); break; @@ -141,12 +144,28 @@ namespace ArchiSteamFarm { } } + private void HandleFSOfflineMessageNotification(IPacketMsg packetMsg) { + if (packetMsg == null) { + return; + } + + // TODO: Handle offline messages? + } + private void HandlePurchaseResponse(IPacketMsg packetMsg) { + if (packetMsg == null) { + return; + } + var response = new ClientMsgProtobuf(packetMsg); Client.PostCallback(new PurchaseResponseCallback(response.Body)); } private void HandleUserNotifications(IPacketMsg packetMsg) { + if (packetMsg == null) { + return; + } + var response = new ClientMsgProtobuf(packetMsg); foreach (var notification in response.Body.notifications) { Client.PostCallback(new NotificationCallback(notification)); diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 76584a2f0..97977e99d 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -67,6 +67,7 @@ namespace ArchiSteamFarm { internal ulong SteamMasterID { get; private set; } = 0; internal ulong SteamMasterClanID { get; private set; } = 0; internal bool CardDropsRestricted { get; private set; } = false; + internal bool FarmOnline { get; private set; } = true; internal bool UseAsfAsMobileAuthenticator { get; private set; } = false; internal bool ShutdownOnFarmingFinished { get; private set; } = false; internal HashSet Blacklist { get; private set; } = new HashSet { 303700, 335590, 368020, 425280 }; @@ -301,6 +302,9 @@ namespace ArchiSteamFarm { case "CardDropsRestricted": CardDropsRestricted = bool.Parse(value); break; + case "FarmOnline": + FarmOnline = bool.Parse(value); + break; case "ShutdownOnFarmingFinished": ShutdownOnFarmingFinished = bool.Parse(value); break; @@ -688,7 +692,9 @@ namespace ArchiSteamFarm { return; } - SteamFriends.SetPersonaState(EPersonaState.Online); + if (FarmOnline) { + SteamFriends.SetPersonaState(EPersonaState.Online); + } } private void OnLoggedOff(SteamUser.LoggedOffCallback callback) { diff --git a/ArchiSteamFarm/config/example.xml b/ArchiSteamFarm/config/example.xml index f646bf760..0d26110a8 100644 --- a/ArchiSteamFarm/config/example.xml +++ b/ArchiSteamFarm/config/example.xml @@ -63,6 +63,11 @@ + + + + +