diff --git a/PokemonGo/RocketAPI/ClassDiagram1.cd b/PokemonGo/RocketAPI/ClassDiagram1.cd
index 65df112..669c3d7 100644
--- a/PokemonGo/RocketAPI/ClassDiagram1.cd
+++ b/PokemonGo/RocketAPI/ClassDiagram1.cd
@@ -1,179 +1,179 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ClassDiagram MajorVersion="1" MinorVersion="1">
- <Class Name="AllEnum.AllEnumReflection">
- <Position X="0.5" Y="0.75" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Class>
- <Enum Name="AllEnum.RpcDirection" Collapsed="true">
- <Position X="4" Y="5" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AAAAAAAAAABAAAAAAAAAAAAAAAAAgAAAAAAAAAAAABA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.TeamColor" Collapsed="true">
- <Position X="5.75" Y="5" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AAACAAAAAAAAAgAAAAAAAAAAAAAAIAAAAAAAACAAAAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.RequestMethod" Collapsed="true">
- <Position X="2.25" Y="5" Width="1.5" />
- <TypeIdentifier>
- <HashCode>IIEIDEUIQAgqBDwIoCGGoIJApQyEDCBAk2AQBAaCIhA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.PokemonMove" Collapsed="true">
- <Position X="5.75" Y="4.25" Width="1.5" />
- <TypeIdentifier>
- <HashCode>///2a2taND3nEkI0wUfJo5wDB/SAnlktDmPQTadRedI=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.ItemId" Collapsed="true">
- <Position X="4" Y="3.5" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AABEMCCAIiAAAAABAAAgAADmAEQQIQAAEAAAECRAEhA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.InventoryUpgradeType" Collapsed="true">
- <Position X="7.5" Y="2.75" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AAEIAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.EggIncubatorType" Collapsed="true">
- <Position X="7.5" Y="2" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AAAAAAAAAAAAAIAAAAAAAAAAAAAACAAAAAAAAAAAAAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.PokemonFamilyId" Collapsed="true">
- <Position X="2.25" Y="4.25" Width="1.5" />
- <TypeIdentifier>
- <HashCode>4ABEQHEDC1gQ1AB4LFTSAUAAUAAwQwoVEAowJDJkQCg=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.MapObjectsStatus" Collapsed="true">
- <Position X="7.5" Y="3.5" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AAAgAAAAAAAAABAAAAAAAAAAAgAAAAAAAAAAAAAAAAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.FortType" Collapsed="true">
- <Position X="4" Y="2.75" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.PokemonId" Collapsed="true">
- <Position X="4" Y="4.25" Width="1.5" />
- <TypeIdentifier>
- <HashCode>BhccSFupyuqvFunnYpjg+yh/jNHQBhy0N3uocpNlETg=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.FortSponsor" Collapsed="true">
- <Position X="2.25" Y="2.75" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AAAAAAAAAAAAAAAAAAAAAACAAAAAAAACAAAAAACAAAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.FortRenderingType" Collapsed="true">
- <Position X="0.5" Y="2.75" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAAAAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.ItemType" Collapsed="true">
- <Position X="5.75" Y="3.5" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AAACAAAIARAAACAABAAQCSAAAAAAAAAAAAAAAkEAAAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.ItemCategory" Collapsed="true">
- <Position X="0.5" Y="3.5" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AAACAAAAAQAAACAABAAAASAAQAAAAAAAAAAAAkEACAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.ItemEffect" Collapsed="true">
- <Position X="2.25" Y="3.5" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AAAAAAAABAAAAAAgACQAAAAwAAAAIAACAAAAIAUEQIA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.ActivityType">
- <Position X="0.5" Y="2" Width="1.5" />
- <TypeIdentifier>
- <HashCode>ABBAAAEAAICBBBAAAAAAYQQAACAMgASAAIAAAAABQAo=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.BadgeType" Collapsed="true">
- <Position X="2.25" Y="2" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AAYAAAAAgBgiEAAYDUIAAEAICAAsEABAUAUkgAAAeAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.HoloIapItemCategory" Collapsed="true">
- <Position X="5.75" Y="2.75" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AEAAAAAAAAAAgAAAAAAAAAEAAAAAACAAAAAAAAAAQAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.CameraInterpolation" Collapsed="true">
- <Position X="4" Y="2" Width="1.5" />
- <TypeIdentifier>
- <HashCode>IEAAAAAAAAAAIAAAAACAAAAAAAAABAAAAAAAAAAAAAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.CameraTarget" Collapsed="true">
- <Position X="5.75" Y="2" Width="1.5" />
- <TypeIdentifier>
- <HashCode>gAAAAABIAAAAAAAAhAICAAAABAAAAACIAAAGAAAAFAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.PokemonType" Collapsed="true">
- <Position X="0.5" Y="5" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AAIAAAAAAAACAAAIBUAAAAAACAAsAABAEAAEAAEAcAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.PokemonMovementType" Collapsed="true">
- <Position X="7.5" Y="4.25" Width="1.5" />
- <TypeIdentifier>
- <HashCode>ABAAAIAgAAAAAAAAAAAAAAAAAAAAECgAAAAAQAAAAAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Enum Name="AllEnum.PokemonClass" Collapsed="true">
- <Position X="0.5" Y="4.25" Width="1.5" />
- <TypeIdentifier>
- <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAgAIIAAAAAAAAAAAAAAA=</HashCode>
- <FileName>GeneratedCode\AllEnum.cs</FileName>
- </TypeIdentifier>
- </Enum>
- <Font Name="Segoe UI" Size="9" />
+<?xml version="1.0" encoding="utf-8"?>
+<ClassDiagram MajorVersion="1" MinorVersion="1">
+ <Class Name="AllEnum.AllEnumReflection">
+ <Position X="0.5" Y="0.75" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Class>
+ <Enum Name="AllEnum.RpcDirection" Collapsed="true">
+ <Position X="4" Y="5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAAAABAAAAAAAAAAAAAAAAAgAAAAAAAAAAAABA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.TeamColor" Collapsed="true">
+ <Position X="5.75" Y="5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAACAAAAAAAAAgAAAAAAAAAAAAAAIAAAAAAAACAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.RequestMethod" Collapsed="true">
+ <Position X="2.25" Y="5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>IIEIDEUIQAgqBDwIoCGGoIJApQyEDCBAk2AQBAaCIhA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.PokemonMove" Collapsed="true">
+ <Position X="5.75" Y="4.25" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>///2a2taND3nEkI0wUfJo5wDB/SAnlktDmPQTadRedI=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.ItemId" Collapsed="true">
+ <Position X="4" Y="3.5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AABEMCCAIiAAAAABAAAgAADmAEQQIQAAEAAAECRAEhA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.InventoryUpgradeType" Collapsed="true">
+ <Position X="7.5" Y="2.75" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAEIAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.EggIncubatorType" Collapsed="true">
+ <Position X="7.5" Y="2" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAAAAAAAIAAAAAAAAAAAAAACAAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.PokemonFamilyId" Collapsed="true">
+ <Position X="2.25" Y="4.25" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>4ABEQHEDC1gQ1AB4LFTSAUAAUAAwQwoVEAowJDJkQCg=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.MapObjectsStatus" Collapsed="true">
+ <Position X="7.5" Y="3.5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAgAAAAAAAAABAAAAAAAAAAAgAAAAAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.FortType" Collapsed="true">
+ <Position X="4" Y="2.75" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.PokemonId" Collapsed="true">
+ <Position X="4" Y="4.25" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>BhccSFupyuqvFunnYpjg+yh/jNHQBhy0N3uocpNlETg=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.FortSponsor" Collapsed="true">
+ <Position X="2.25" Y="2.75" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAAAAAAAAAAAAAAAACAAAAAAAACAAAAAACAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.FortRenderingType" Collapsed="true">
+ <Position X="0.5" Y="2.75" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.ItemType" Collapsed="true">
+ <Position X="5.75" Y="3.5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAACAAAIARAAACAABAAQCSAAAAAAAAAAAAAAAkEAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.ItemCategory" Collapsed="true">
+ <Position X="0.5" Y="3.5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAACAAAAAQAAACAABAAAASAAQAAAAAAAAAAAAkEACAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.ItemEffect" Collapsed="true">
+ <Position X="2.25" Y="3.5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAABAAAAAAgACQAAAAwAAAAIAACAAAAIAUEQIA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.ActivityType">
+ <Position X="0.5" Y="2" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>ABBAAAEAAICBBBAAAAAAYQQAACAMgASAAIAAAAABQAo=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.BadgeType" Collapsed="true">
+ <Position X="2.25" Y="2" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAYAAAAAgBgiEAAYDUIAAEAICAAsEABAUAUkgAAAeAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.HoloIapItemCategory" Collapsed="true">
+ <Position X="5.75" Y="2.75" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AEAAAAAAAAAAgAAAAAAAAAEAAAAAACAAAAAAAAAAQAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.CameraInterpolation" Collapsed="true">
+ <Position X="4" Y="2" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>IEAAAAAAAAAAIAAAAACAAAAAAAAABAAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.CameraTarget" Collapsed="true">
+ <Position X="5.75" Y="2" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>gAAAAABIAAAAAAAAhAICAAAABAAAAACIAAAGAAAAFAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.PokemonType" Collapsed="true">
+ <Position X="0.5" Y="5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAIAAAAAAAACAAAIBUAAAAAACAAsAABAEAAEAAEAcAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.PokemonMovementType" Collapsed="true">
+ <Position X="7.5" Y="4.25" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>ABAAAIAgAAAAAAAAAAAAAAAAAAAAECgAAAAAQAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.PokemonClass" Collapsed="true">
+ <Position X="0.5" Y="4.25" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAgAIIAAAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Font Name="Segoe UI" Size="9" />
</ClassDiagram>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Login/GoogleLogin.cs b/PokemonGo/RocketAPI/Login/GoogleLogin.cs
index 4bfeefc..4187931 100644
--- a/PokemonGo/RocketAPI/Login/GoogleLogin.cs
+++ b/PokemonGo/RocketAPI/Login/GoogleLogin.cs
@@ -1,119 +1,119 @@
-#region
-
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows.Forms;
+#region
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
using PokemonGo.RocketAPI.Helpers;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
-using PokemonGo.RocketAPI.Enums;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.Login
-{
- public static class GoogleLogin
- {
- private const string OauthTokenEndpoint = "https://www.googleapis.com/oauth2/v4/token";
- private const string OauthEndpoint = "https://accounts.google.com/o/oauth2/device/code";
- private const string ClientId = "848232511240-73ri3t7plvk96pj4f85uj8otdat2alem.apps.googleusercontent.com";
- private const string ClientSecret = "NCjF1TLi2CcY6t5mt0ZveuL7";
-
- /// <summary>
- /// Gets the access token from Google
- /// </summary>
- /// <param name="deviceCode"></param>
- /// <returns>tokenResponse</returns>
- public static async Task<TokenResponseModel> GetAccessToken(DeviceCodeModel deviceCode)
- {
- //Poll until user submitted code..
- TokenResponseModel tokenResponse;
- do
- {
- await Task.Delay(2000);
- tokenResponse = await PollSubmittedToken(deviceCode.device_code);
- } while (tokenResponse.access_token == null || tokenResponse.refresh_token == null);
-
- return tokenResponse;
- }
-
- public static async Task<TokenResponseModel> GetAccessToken(string refreshToken)
- {
- return await HttpClientHelper.PostFormEncodedAsync<TokenResponseModel>(OauthTokenEndpoint,
- new KeyValuePair<string, string>("access_type", "offline"),
- new KeyValuePair<string, string>("client_id", ClientId),
- new KeyValuePair<string, string>("client_secret", ClientSecret),
- new KeyValuePair<string, string>("refresh_token", refreshToken),
- new KeyValuePair<string, string>("grant_type", "refresh_token"),
- new KeyValuePair<string, string>("scope", "openid email https://www.googleapis.com/auth/userinfo.email"));
- }
-
- public static async Task<DeviceCodeModel> GetDeviceCode()
- {
- var deviceCode = await HttpClientHelper.PostFormEncodedAsync<DeviceCodeModel>(OauthEndpoint,
- new KeyValuePair<string, string>("client_id", ClientId),
- new KeyValuePair<string, string>("scope", "openid email https://www.googleapis.com/auth/userinfo.email"));
-
- try
- {
- //ColoredConsoleWrite("Google Device Code copied to clipboard");
- System.Console.WriteLine($"Goto: http://www.google.com/device & enter {deviceCode.user_code}");
- Thread.Sleep(2000);
- Process.Start(@"http://www.google.com/device");
- var thread = new Thread(() => Clipboard.SetText(deviceCode.user_code)); //Copy device code
- thread.SetApartmentState(ApartmentState.STA); //Set the thread to STA
- thread.Start();
- thread.Join();
- }
- catch (Exception)
- {
- //System.Console.WriteLine("Couldnt copy to clipboard, do it manually");
- //System.Console.WriteLine($"Goto: http://www.google.com/device & enter {deviceCode.user_code}");
- }
-
- return deviceCode;
- }
-
- private static async Task<TokenResponseModel> PollSubmittedToken(string deviceCode)
- {
- return await HttpClientHelper.PostFormEncodedAsync<TokenResponseModel>(OauthTokenEndpoint,
- new KeyValuePair<string, string>("client_id", ClientId),
- new KeyValuePair<string, string>("client_secret", ClientSecret),
- new KeyValuePair<string, string>("code", deviceCode),
- new KeyValuePair<string, string>("grant_type", "http://oauth.net/grant_type/device/1.0"),
- new KeyValuePair<string, string>("scope", "openid email https://www.googleapis.com/auth/userinfo.email"));
- }
-
-
- internal class ErrorResponseModel
- {
- public string error { get; set; }
- public string error_description { get; set; }
- }
-
- public class TokenResponseModel
- {
- public string access_token { get; set; }
- public string token_type { get; set; }
- public int expires_in { get; set; }
- public string refresh_token { get; set; }
- public string id_token { get; set; }
- }
-
-
- public class DeviceCodeModel
- {
- public string verification_url { get; set; }
- public int expires_in { get; set; }
- public int interval { get; set; }
- public string device_code { get; set; }
- public string user_code { get; set; }
- }
- }
+using PokemonGo.RocketAPI.Enums;
+
+#endregion
+
+namespace PokemonGo.RocketAPI.Login
+{
+ public static class GoogleLogin
+ {
+ private const string OauthTokenEndpoint = "https://www.googleapis.com/oauth2/v4/token";
+ private const string OauthEndpoint = "https://accounts.google.com/o/oauth2/device/code";
+ private const string ClientId = "848232511240-73ri3t7plvk96pj4f85uj8otdat2alem.apps.googleusercontent.com";
+ private const string ClientSecret = "NCjF1TLi2CcY6t5mt0ZveuL7";
+
+ /// <summary>
+ /// Gets the access token from Google
+ /// </summary>
+ /// <param name="deviceCode"></param>
+ /// <returns>tokenResponse</returns>
+ public static async Task<TokenResponseModel> GetAccessToken(DeviceCodeModel deviceCode)
+ {
+ //Poll until user submitted code..
+ TokenResponseModel tokenResponse;
+ do
+ {
+ await Task.Delay(2000);
+ tokenResponse = await PollSubmittedToken(deviceCode.device_code);
+ } while (tokenResponse.access_token == null || tokenResponse.refresh_token == null);
+
+ return tokenResponse;
+ }
+
+ public static async Task<TokenResponseModel> GetAccessToken(string refreshToken)
+ {
+ return await HttpClientHelper.PostFormEncodedAsync<TokenResponseModel>(OauthTokenEndpoint,
+ new KeyValuePair<string, string>("access_type", "offline"),
+ new KeyValuePair<string, string>("client_id", ClientId),
+ new KeyValuePair<string, string>("client_secret", ClientSecret),
+ new KeyValuePair<string, string>("refresh_token", refreshToken),
+ new KeyValuePair<string, string>("grant_type", "refresh_token"),
+ new KeyValuePair<string, string>("scope", "openid email https://www.googleapis.com/auth/userinfo.email"));
+ }
+
+ public static async Task<DeviceCodeModel> GetDeviceCode()
+ {
+ var deviceCode = await HttpClientHelper.PostFormEncodedAsync<DeviceCodeModel>(OauthEndpoint,
+ new KeyValuePair<string, string>("client_id", ClientId),
+ new KeyValuePair<string, string>("scope", "openid email https://www.googleapis.com/auth/userinfo.email"));
+
+ try
+ {
+ //ColoredConsoleWrite("Google Device Code copied to clipboard");
+ System.Console.WriteLine($"Goto: http://www.google.com/device & enter {deviceCode.user_code}");
+ Thread.Sleep(2000);
+ Process.Start(@"http://www.google.com/device");
+ var thread = new Thread(() => Clipboard.SetText(deviceCode.user_code)); //Copy device code
+ thread.SetApartmentState(ApartmentState.STA); //Set the thread to STA
+ thread.Start();
+ thread.Join();
+ }
+ catch (Exception)
+ {
+ //System.Console.WriteLine("Couldnt copy to clipboard, do it manually");
+ //System.Console.WriteLine($"Goto: http://www.google.com/device & enter {deviceCode.user_code}");
+ }
+
+ return deviceCode;
+ }
+
+ private static async Task<TokenResponseModel> PollSubmittedToken(string deviceCode)
+ {
+ return await HttpClientHelper.PostFormEncodedAsync<TokenResponseModel>(OauthTokenEndpoint,
+ new KeyValuePair<string, string>("client_id", ClientId),
+ new KeyValuePair<string, string>("client_secret", ClientSecret),
+ new KeyValuePair<string, string>("code", deviceCode),
+ new KeyValuePair<string, string>("grant_type", "http://oauth.net/grant_type/device/1.0"),
+ new KeyValuePair<string, string>("scope", "openid email https://www.googleapis.com/auth/userinfo.email"));
+ }
+
+
+ internal class ErrorResponseModel
+ {
+ public string error { get; set; }
+ public string error_description { get; set; }
+ }
+
+ public class TokenResponseModel
+ {
+ public string access_token { get; set; }
+ public string token_type { get; set; }
+ public int expires_in { get; set; }
+ public string refresh_token { get; set; }
+ public string id_token { get; set; }
+ }
+
+
+ public class DeviceCodeModel
+ {
+ public string verification_url { get; set; }
+ public int expires_in { get; set; }
+ public int interval { get; set; }
+ public string device_code { get; set; }
+ public string user_code { get; set; }
+ }
+ }
}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj b/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
index 6b2baca..82621b0 100644
--- a/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
+++ b/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
@@ -1,113 +1,113 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
- <PropertyGroup>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProjectGuid>{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}</ProjectGuid>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>PokemonGo.RocketAPI</RootNamespace>
- <AssemblyName>Pokemon Go Rocket API</AssemblyName>
- <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
- <FileAlignment>512</FileAlignment>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>bin\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <ItemGroup>
- <Reference Include="C5, Version=2.2.5073.27396, Culture=neutral, PublicKeyToken=282361b99ded7e8e, processorArchitecture=MSIL">
- <HintPath>..\..\packages\C5.2.2.5073.27396\lib\portable-net40+sl50+wp80+win\C5.dll</HintPath>
- <Private>True</Private>
- </Reference>
- <Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
- <HintPath>..\..\packages\Google.Protobuf.3.0.0-beta3\lib\dotnet\Google.Protobuf.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.1\lib\net45\Newtonsoft.Json.dll</HintPath>
- <Private>True</Private>
- </Reference>
- <Reference Include="S2Geometry, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
- <HintPath>..\..\packages\S2Geometry.1.0.1\lib\portable-net45+wp8+win8\S2Geometry.dll</HintPath>
- <Private>True</Private>
- </Reference>
- <Reference Include="System" />
- <Reference Include="System.Configuration" />
- <Reference Include="System.Core" />
- <Reference Include="System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
- <HintPath>..\..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath>
- <Private>True</Private>
- </Reference>
- <Reference Include="System.VarintBitConverter, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
- <HintPath>..\..\packages\VarintBitConverter.1.0.0.0\lib\Net40\System.VarintBitConverter.dll</HintPath>
- <Private>True</Private>
- </Reference>
- <Reference Include="System.Web" />
- <Reference Include="System.Windows.Forms" />
- <Reference Include="System.Xml.Linq" />
- <Reference Include="System.Data.DataSetExtensions" />
- <Reference Include="Microsoft.CSharp" />
- <Reference Include="System.Data" />
- <Reference Include="System.Net.Http" />
- <Reference Include="System.Xml" />
- </ItemGroup>
- <ItemGroup>
- <Compile Include="Enums\AuthType.cs" />
- <Compile Include="Enums\MiscEnums.cs" />
- <Compile Include="Enums\RequestType.cs" />
- <Compile Include="Exceptions\PtcOfflineException.cs" />
- <Compile Include="Extensions\DateTimeExtensions.cs" />
- <Compile Include="GeneratedCode\AllEnum.cs" />
- <Compile Include="GeneratedCode\Payloads.cs" />
- <Compile Include="GeneratedCode\Request.cs" />
- <Compile Include="GeneratedCode\Response.cs" />
- <Compile Include="Helpers\HttpClientHelper.cs" />
- <Compile Include="Helpers\JsonHelper.cs" />
- <Compile Include="Helpers\ProtoHelper.cs" />
- <Compile Include="Helpers\RetryHandler.cs" />
- <Compile Include="Helpers\S2Helper.cs" />
- <Compile Include="Helpers\Utils.cs" />
- <Compile Include="ISettings.cs" />
- <Compile Include="Login\GoogleLogin.cs" />
- <Compile Include="Login\PtcLogin.cs" />
- <None Include="app.config" />
- <Compile Include="Client.cs" />
- <Compile Include="Extensions\HttpClientExtensions.cs" />
- <Compile Include="Helpers\RandomHelper.cs" />
- <Compile Include="Helpers\RequestBuilder.cs" />
- <Compile Include="Resources.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- </ItemGroup>
- <ItemGroup>
- <None Include="ClassDiagram1.cd" />
- <None Include="packages.config" />
- <None Include="Proto\AllEnum.proto" />
- <None Include="Proto\Payloads.proto" />
- <None Include="Proto\Response.proto" />
- <None Include="Proto\Request.proto" />
- </ItemGroup>
- <ItemGroup />
- <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>PokemonGo.RocketAPI</RootNamespace>
+ <AssemblyName>Pokemon Go Rocket API</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="C5, Version=2.2.5073.27396, Culture=neutral, PublicKeyToken=282361b99ded7e8e, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\C5.2.2.5073.27396\lib\portable-net40+sl50+wp80+win\C5.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Google.Protobuf.3.0.0-beta3\lib\dotnet\Google.Protobuf.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.1\lib\net45\Newtonsoft.Json.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="S2Geometry, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\S2Geometry.1.0.1\lib\portable-net45+wp8+win8\S2Geometry.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Configuration" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.VarintBitConverter, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\VarintBitConverter.1.0.0.0\lib\Net40\System.VarintBitConverter.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Web" />
+ <Reference Include="System.Windows.Forms" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Enums\AuthType.cs" />
+ <Compile Include="Enums\MiscEnums.cs" />
+ <Compile Include="Enums\RequestType.cs" />
+ <Compile Include="Exceptions\PtcOfflineException.cs" />
+ <Compile Include="Extensions\DateTimeExtensions.cs" />
+ <Compile Include="GeneratedCode\AllEnum.cs" />
+ <Compile Include="GeneratedCode\Payloads.cs" />
+ <Compile Include="GeneratedCode\Request.cs" />
+ <Compile Include="GeneratedCode\Response.cs" />
+ <Compile Include="Helpers\HttpClientHelper.cs" />
+ <Compile Include="Helpers\JsonHelper.cs" />
+ <Compile Include="Helpers\ProtoHelper.cs" />
+ <Compile Include="Helpers\RetryHandler.cs" />
+ <Compile Include="Helpers\S2Helper.cs" />
+ <Compile Include="Helpers\Utils.cs" />
+ <Compile Include="ISettings.cs" />
+ <Compile Include="Login\GoogleLogin.cs" />
+ <Compile Include="Login\PtcLogin.cs" />
+ <None Include="app.config" />
+ <Compile Include="Client.cs" />
+ <Compile Include="Extensions\HttpClientExtensions.cs" />
+ <Compile Include="Helpers\RandomHelper.cs" />
+ <Compile Include="Helpers\RequestBuilder.cs" />
+ <Compile Include="Resources.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="ClassDiagram1.cd" />
+ <None Include="packages.config" />
+ <None Include="Proto\AllEnum.proto" />
+ <None Include="Proto\Payloads.proto" />
+ <None Include="Proto\Response.proto" />
+ <None Include="Proto\Request.proto" />
+ </ItemGroup>
+ <ItemGroup />
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
- -->
+ -->
</Project>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/MainForm.cs b/PokemonGo/RocketAPI/Window/MainForm.cs
index d8aa73d..6f2d8d2 100644
--- a/PokemonGo/RocketAPI/Window/MainForm.cs
+++ b/PokemonGo/RocketAPI/Window/MainForm.cs
@@ -1,790 +1,790 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Net;
-using System.Reflection;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using System.Xml;
-using AllEnum;
-using PokemonGo.RocketAPI.Enums;
-using PokemonGo.RocketAPI.Exceptions;
-using PokemonGo.RocketAPI.Extensions;
-using PokemonGo.RocketAPI.GeneratedCode;
-
-namespace PokemonGo.RocketAPI.Window
-{
- public partial class MainForm : Form
- {
- public MainForm()
- {
- InitializeComponent();
- ClientSettings = Settings.Instance;
- }
-
- private void MainForm_Load(object sender, EventArgs e)
- {
-
- }
-
- public static ISettings ClientSettings;
- private static int Currentlevel = -1;
- private static int TotalExperience = 0;
- private static int TotalPokemon = 0;
- private static DateTime TimeStarted = DateTime.Now;
- public static DateTime InitSessionDateTime = DateTime.Now;
-
- public static double GetRuntime()
- {
- return ((DateTime.Now - TimeStarted).TotalSeconds) / 3600;
- }
-
- public void CheckVersion()
- {
- try
- {
- var match =
- new Regex(
- @"\[assembly\: AssemblyVersion\(""(\d{1,})\.(\d{1,})\.(\d{1,})\.(\d{1,})""\)\]")
- .Match(DownloadServerVersion());
-
- if (!match.Success) return;
- var gitVersion =
- new Version(
- string.Format(
- "{0}.{1}.{2}.{3}",
- match.Groups[1],
- match.Groups[2],
- match.Groups[3],
- match.Groups[4]));
- if (gitVersion <= Assembly.GetExecutingAssembly().GetName().Version)
- {
- ColoredConsoleWrite(Color.Green, "Awesome! You have already got the newest version! " + Assembly.GetExecutingAssembly().GetName().Version);
- return;
- }
-
- ColoredConsoleWrite(Color.Red, "There is a new Version available: " + gitVersion);
- ColoredConsoleWrite(Color.Red, "You can find it at https://github.com/DetectiveSquirrel/Pokemon-Go-Rocket-API");
- }
- catch (Exception)
- {
- ColoredConsoleWrite(Color.Red, "Unable to check for updates now...");
- }
- }
-
- private static string DownloadServerVersion()
- {
- using (var wC = new WebClient())
- return
- wC.DownloadString(
- "https://raw.githubusercontent.com/DetectiveSquirrel/Pokemon-Go-Rocket-API/master/PokemonGo/RocketAPI/Window/Properties/AssemblyInfo.cs");
- }
-
- public void ColoredConsoleWrite(Color color, string text)
- {
- if (InvokeRequired)
- {
- Invoke(new Action<Color, string>(ColoredConsoleWrite), color, text);
- return;
- }
- string textToAppend = "[" + DateTime.Now.ToString("HH:mm:ss tt") + "] " + text + "\r\n";
- logTextBox.SelectionColor = color;
- logTextBox.AppendText(textToAppend);
-
- object syncRoot = new object();
- lock (syncRoot) // Added locking to prevent text file trying to be accessed by two things at the same time
- {
- File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + @"\Logs.txt", "[" + DateTime.Now.ToString("HH:mm:ss tt") + "] " + text + "\n");
- }
- }
-
- public void SetStatusText(string text)
- {
- if (InvokeRequired)
- {
- Invoke(new Action<string>(SetStatusText), text);
- return;
- }
-
- statusLabel.Text = text;
- }
-
- private async Task EvolveAllGivenPokemons(Client client, IEnumerable<PokemonData> pokemonToEvolve)
- {
- foreach (var pokemon in pokemonToEvolve)
- {
- /*
- enum Holoholo.Rpc.Types.EvolvePokemonOutProto.Result {
- UNSET = 0;
- SUCCESS = 1;
- FAILED_POKEMON_MISSING = 2;
- FAILED_INSUFFICIENT_RESOURCES = 3;
- FAILED_POKEMON_CANNOT_EVOLVE = 4;
- FAILED_POKEMON_IS_DEPLOYED = 5;
- }
- }*/
-
- var countOfEvolvedUnits = 0;
- var xpCount = 0;
-
- EvolvePokemonOut evolvePokemonOutProto;
- do
- {
- evolvePokemonOutProto = await client.EvolvePokemon(pokemon.Id);
- //todo: someone check whether this still works
-
- if (evolvePokemonOutProto.Result == 1)
- {
- ColoredConsoleWrite(Color.Cyan,
- $"Evolved {pokemon.PokemonId} successfully for {evolvePokemonOutProto.ExpAwarded}xp");
-
- countOfEvolvedUnits++;
- xpCount += evolvePokemonOutProto.ExpAwarded;
- }
- else
- {
- var result = evolvePokemonOutProto.Result;
- /*
- ColoredConsoleWrite(ConsoleColor.White, $"Failed to evolve {pokemon.PokemonId}. " +
- $"EvolvePokemonOutProto.Result was {result}");
-
- ColoredConsoleWrite(ConsoleColor.White, $"Due to above error, stopping evolving {pokemon.PokemonId}");
- */
- }
- } while (evolvePokemonOutProto.Result == 1);
- if (countOfEvolvedUnits > 0)
- ColoredConsoleWrite(Color.Cyan,
- $"Evolved {countOfEvolvedUnits} pieces of {pokemon.PokemonId} for {xpCount}xp");
-
- await Task.Delay(3000);
- }
- }
-
- private async void Execute()
- {
- var client = new Client(ClientSettings);
- try
- {
- switch (ClientSettings.AuthType)
- {
- case AuthType.Ptc:
- ColoredConsoleWrite(Color.Green, "Attempting to log into Pokemon Trainers Club..");
- await client.DoPtcLogin(ClientSettings.PtcUsername, ClientSettings.PtcPassword);
- break;
- case AuthType.Google:
- ColoredConsoleWrite(Color.Green, "Attempting to log into Google..");
- if (ClientSettings.GoogleRefreshToken == "")
- ColoredConsoleWrite(Color.Green, "Now opening www.Google.com/device and copying the 8 digit code to your clipboard");
-
- await client.DoGoogleLogin();
- break;
- }
-
- await client.SetServer();
- var profile = await client.GetProfile();
- var settings = await client.GetSettings();
- var mapObjects = await client.GetMapObjects();
- var inventory = await client.GetInventory();
- var pokemons =
- inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon)
- .Where(p => p != null && p?.PokemonId > 0);
-
- ConsoleLevelTitle(profile.Profile.Username, client);
-
- // Write the players ingame details
- ColoredConsoleWrite(Color.Yellow, "----------------------------");
- if (ClientSettings.AuthType == AuthType.Ptc)
- {
- ColoredConsoleWrite(Color.Cyan, "Account: " + ClientSettings.PtcUsername);
- ColoredConsoleWrite(Color.Cyan, "Password: " + ClientSettings.PtcPassword + "\n");
- }
- ColoredConsoleWrite(Color.DarkGray, "Name: " + profile.Profile.Username);
- ColoredConsoleWrite(Color.DarkGray, "Team: " + profile.Profile.Team);
- if (profile.Profile.Currency.ToArray()[0].Amount > 0) // If player has any pokecoins it will show how many they have.
- ColoredConsoleWrite(Color.DarkGray, "Pokecoins: " + profile.Profile.Currency.ToArray()[0].Amount);
- ColoredConsoleWrite(Color.DarkGray, "Stardust: " + profile.Profile.Currency.ToArray()[1].Amount + "\n");
- ColoredConsoleWrite(Color.DarkGray, "Latitude: " + ClientSettings.DefaultLatitude);
- ColoredConsoleWrite(Color.DarkGray, "Longitude: " + ClientSettings.DefaultLongitude);
- try
- {
- ColoredConsoleWrite(Color.DarkGray, "Country: " + CallAPI("country", ClientSettings.DefaultLatitude, ClientSettings.DefaultLongitude));
- ColoredConsoleWrite(Color.DarkGray, "Area: " + CallAPI("place", ClientSettings.DefaultLatitude, ClientSettings.DefaultLongitude));
- }
- catch (Exception)
- {
- ColoredConsoleWrite(Color.DarkGray, "Unable to get Country/Place");
- }
-
- ColoredConsoleWrite(Color.Yellow, "----------------------------");
-
- // I believe a switch is more efficient and easier to read.
- switch (ClientSettings.TransferType)
- {
- case "leaveStrongest":
- await TransferAllButStrongestUnwantedPokemon(client);
- break;
- case "all":
- await TransferAllGivenPokemons(client, pokemons);
- break;
- case "duplicate":
- await TransferDuplicatePokemon(client);
- break;
- case "cp":
- await TransferAllWeakPokemon(client, ClientSettings.TransferCPThreshold);
- break;
- default:
- ColoredConsoleWrite(Color.DarkGray, "Transfering pokemon disabled");
- break;
- }
-
- if (ClientSettings.EvolveAllGivenPokemons)
- await EvolveAllGivenPokemons(client, pokemons);
- if (ClientSettings.Recycler)
- client.RecycleItems(client);
-
- await Task.Delay(5000);
- PrintLevel(client);
- await ExecuteFarmingPokestopsAndPokemons(client);
- ColoredConsoleWrite(Color.Red, $"No nearby usefull locations found. Please wait 10 seconds.");
- await Task.Delay(10000);
- CheckVersion();
- Execute();
- }
- catch (TaskCanceledException) { ColoredConsoleWrite(Color.Red, "Task Canceled Exception - Restarting"); Execute(); }
- catch (UriFormatException) { ColoredConsoleWrite(Color.Red, "System URI Format Exception - Restarting"); Execute(); }
- catch (ArgumentOutOfRangeException) { ColoredConsoleWrite(Color.Red, "ArgumentOutOfRangeException - Restarting"); Execute(); }
- catch (ArgumentNullException) { ColoredConsoleWrite(Color.Red, "Argument Null Refference - Restarting"); Execute(); }
- catch (NullReferenceException) { ColoredConsoleWrite(Color.Red, "Null Refference - Restarting"); Execute(); }
- catch (Exception ex) { ColoredConsoleWrite(Color.Red, ex.ToString()); Execute(); }
- }
-
- private static string CallAPI(string elem, double lat, double lon)
- {
- using (XmlReader reader = XmlReader.Create(@"http://api.geonames.org/findNearby?lat=" + lat + "&lng=" + lon + "&username=demo"))
- {
- while (reader.Read())
- {
- if (reader.IsStartElement())
- {
- switch (elem)
- {
- case "country":
- if (reader.Name == "countryName")
- {
- return reader.ReadString();
- }
- break;
-
- case "place":
- if (reader.Name == "toponymName")
- {
- return reader.ReadString();
- }
- break;
- default:
- return "N/A";
- break;
- }
- }
- }
- }
- return "Error";
- }
-
- private async Task ExecuteCatchAllNearbyPokemons(Client client)
- {
- var mapObjects = await client.GetMapObjects();
-
- var pokemons = mapObjects.MapCells.SelectMany(i => i.CatchablePokemons);
-
- var inventory2 = await client.GetInventory();
- var pokemons2 = inventory2.InventoryDelta.InventoryItems
- .Select(i => i.InventoryItemData?.Pokemon)
- .Where(p => p != null && p?.PokemonId > 0)
- .ToArray();
-
- foreach (var pokemon in pokemons)
- {
- var update = await client.UpdatePlayerLocation(pokemon.Latitude, pokemon.Longitude);
- var encounterPokemonResponse = await client.EncounterPokemon(pokemon.EncounterId, pokemon.SpawnpointId);
- var pokemonCP = encounterPokemonResponse?.WildPokemon?.PokemonData?.Cp;
- CatchPokemonResponse caughtPokemonResponse;
- do
- {
- if (ClientSettings.RazzBerryMode == "cp")
- if (pokemonCP > ClientSettings.RazzBerrySetting)
- await client.UseRazzBerry(client, pokemon.EncounterId, pokemon.SpawnpointId);
- if (ClientSettings.RazzBerryMode == "probability")
- if (encounterPokemonResponse.CaptureProbability.CaptureProbability_.First() < ClientSettings.RazzBerrySetting)
- await client.UseRazzBerry(client, pokemon.EncounterId, pokemon.SpawnpointId);
- caughtPokemonResponse = await client.CatchPokemon(pokemon.EncounterId, pokemon.SpawnpointId, pokemon.Latitude, pokemon.Longitude, MiscEnums.Item.ITEM_POKE_BALL, pokemonCP); ; //note: reverted from settings because this should not be part of settings but part of logic
- } while (caughtPokemonResponse.Status == CatchPokemonResponse.Types.CatchStatus.CatchMissed || caughtPokemonResponse.Status == CatchPokemonResponse.Types.CatchStatus.CatchEscape);
-
- string pokemonName;
- if (ClientSettings.Language == "german")
- {
- string name_english = Convert.ToString(pokemon.PokemonId);
- var request = (HttpWebRequest)WebRequest.Create("http://boosting-service.de/pokemon/index.php?pokeName=" + name_english);
- var response = (HttpWebResponse)request.GetResponse();
- pokemonName = new StreamReader(response.GetResponseStream()).ReadToEnd();
- }
- else
- pokemonName = Convert.ToString(pokemon.PokemonId);
- if (caughtPokemonResponse.Status == CatchPokemonResponse.Types.CatchStatus.CatchSuccess)
- {
- ColoredConsoleWrite(Color.Green, $"We caught a {pokemonName} with {encounterPokemonResponse?.WildPokemon?.PokemonData?.Cp} CP");
- foreach (int xp in caughtPokemonResponse.Scores.Xp)
- TotalExperience += xp;
- TotalPokemon += 1;
- }
- else
- ColoredConsoleWrite(Color.Red, $"{pokemonName} with {encounterPokemonResponse?.WildPokemon?.PokemonData?.Cp} CP got away..");
-
- if (ClientSettings.TransferType == "leaveStrongest")
- await TransferAllButStrongestUnwantedPokemon(client);
- else if (ClientSettings.TransferType == "all")
- await TransferAllGivenPokemons(client, pokemons2);
- else if (ClientSettings.TransferType == "duplicate")
- await TransferDuplicatePokemon(client);
- else if (ClientSettings.TransferType == "cp")
- await TransferAllWeakPokemon(client, ClientSettings.TransferCPThreshold);
-
- await Task.Delay(3000);
- }
- }
-
- private async Task ExecuteFarmingPokestopsAndPokemons(Client client)
- {
- var mapObjects = await client.GetMapObjects();
-
- var pokeStops = mapObjects.MapCells.SelectMany(i => i.Forts).Where(i => i.Type == FortType.Checkpoint && i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime());
-
- foreach (var pokeStop in pokeStops)
- {
- var update = await client.UpdatePlayerLocation(pokeStop.Latitude, pokeStop.Longitude);
- var fortInfo = await client.GetFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
- var fortSearch = await client.SearchFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
-
- StringWriter PokeStopOutput = new StringWriter();
- PokeStopOutput.Write($"");
- if (fortInfo.Name != string.Empty)
- PokeStopOutput.Write("PokeStop: " + fortInfo.Name);
- if (fortSearch.ExperienceAwarded != 0)
- PokeStopOutput.Write($", XP: {fortSearch.ExperienceAwarded}");
- if (fortSearch.GemsAwarded != 0)
- PokeStopOutput.Write($", Gems: {fortSearch.GemsAwarded}");
- if (fortSearch.PokemonDataEgg != null)
- PokeStopOutput.Write($", Eggs: {fortSearch.PokemonDataEgg}");
- if (GetFriendlyItemsString(fortSearch.ItemsAwarded) != string.Empty)
- PokeStopOutput.Write($", Items: {GetFriendlyItemsString(fortSearch.ItemsAwarded)} ");
- ColoredConsoleWrite(Color.Cyan, PokeStopOutput.ToString());
-
- if (fortSearch.ExperienceAwarded != 0)
- TotalExperience += (fortSearch.ExperienceAwarded);
- await Task.Delay(15000);
- await ExecuteCatchAllNearbyPokemons(client);
- }
- }
-
- private string GetFriendlyItemsString(IEnumerable<FortSearchResponse.Types.ItemAward> items)
- {
- var enumerable = items as IList<FortSearchResponse.Types.ItemAward> ?? items.ToList();
-
- if (!enumerable.Any())
- return string.Empty;
-
- return enumerable.GroupBy(i => i.ItemId)
- .Select(kvp => new { ItemName = kvp.Key.ToString().Substring(4), Amount = kvp.Sum(x => x.ItemCount) })
- .Select(y => $"{y.Amount}x {y.ItemName}")
- .Aggregate((a, b) => $"{a}, {b}");
- }
-
-
- private async Task TransferAllButStrongestUnwantedPokemon(Client client)
- {
- //ColoredConsoleWrite(ConsoleColor.White, $"Firing up the meat grinder");
-
- var unwantedPokemonTypes = new[]
- {
- PokemonId.Pidgey,
- PokemonId.Rattata,
- PokemonId.Weedle,
- PokemonId.Zubat,
- PokemonId.Caterpie,
- PokemonId.Pidgeotto,
- PokemonId.NidoranFemale,
- PokemonId.Paras,
- PokemonId.Venonat,
- PokemonId.Psyduck,
- PokemonId.Poliwag,
- PokemonId.Slowpoke,
- PokemonId.Drowzee,
- PokemonId.Gastly,
- PokemonId.Goldeen,
- PokemonId.Staryu,
- PokemonId.Magikarp,
- PokemonId.Clefairy,
- PokemonId.Eevee,
- PokemonId.Tentacool,
- PokemonId.Dratini,
- PokemonId.Ekans,
- PokemonId.Jynx,
- PokemonId.Lickitung,
- PokemonId.Spearow,
- PokemonId.NidoranFemale,
- PokemonId.NidoranMale
- };
-
- var inventory = await client.GetInventory();
- var pokemons = inventory.InventoryDelta.InventoryItems
- .Select(i => i.InventoryItemData?.Pokemon)
- .Where(p => p != null && p?.PokemonId > 0)
- .ToArray();
-
- foreach (var unwantedPokemonType in unwantedPokemonTypes)
- {
- var pokemonOfDesiredType = pokemons.Where(p => p.PokemonId == unwantedPokemonType)
- .OrderByDescending(p => p.Cp)
- .ToList();
-
- var unwantedPokemon =
- pokemonOfDesiredType.Skip(1) // keep the strongest one for potential battle-evolving
- .ToList();
-
- //ColoredConsoleWrite(ConsoleColor.White, $"Grinding {unwantedPokemon.Count} pokemons of type {unwantedPokemonType}");
- await TransferAllGivenPokemons(client, unwantedPokemon);
- }
-
- //ColoredConsoleWrite(ConsoleColor.White, $"Finished grinding all the meat");
- }
-
- public static float Perfect(PokemonData poke)
- {
- return ((float)(poke.IndividualAttack + poke.IndividualDefense + poke.IndividualStamina) / (3.0f * 15.0f)) * 100.0f;
- }
-
- private async Task TransferAllGivenPokemons(Client client, IEnumerable<PokemonData> unwantedPokemons, float keepPerfectPokemonLimit = 80.0f)
- {
- foreach (var pokemon in unwantedPokemons)
- {
- if (Perfect(pokemon) >= keepPerfectPokemonLimit) continue;
- ColoredConsoleWrite(Color.White, $"Pokemon {pokemon.PokemonId} with {pokemon.Cp} CP has IV percent less than {keepPerfectPokemonLimit}%");
-
- if (pokemon.Favorite == 0)
- {
- var transferPokemonResponse = await client.TransferPokemon(pokemon.Id);
-
- /*
- ReleasePokemonOutProto.Status {
- UNSET = 0;
- SUCCESS = 1;
- POKEMON_DEPLOYED = 2;
- FAILED = 3;
- ERROR_POKEMON_IS_EGG = 4;
- }*/
- string pokemonName;
- if (ClientSettings.Language == "german")
- {
- // Dont really need to print this do we? youll know if its German or not
- //ColoredConsoleWrite(Color.DarkCyan, "german");
- string name_english = Convert.ToString(pokemon.PokemonId);
- var request = (HttpWebRequest)WebRequest.Create("http://boosting-service.de/pokemon/index.php?pokeName=" + name_english);
- var response = (HttpWebResponse)request.GetResponse();
- pokemonName = new StreamReader(response.GetResponseStream()).ReadToEnd();
- }
- else
- pokemonName = Convert.ToString(pokemon.PokemonId);
- if (transferPokemonResponse.Status == 1)
- {
- ColoredConsoleWrite(Color.Magenta, $"Transferred {pokemonName} with {pokemon.Cp} CP");
- }
- else
- {
- var status = transferPokemonResponse.Status;
-
- ColoredConsoleWrite(Color.Red, $"Somehow failed to transfer {pokemonName} with {pokemon.Cp} CP. " +
- $"ReleasePokemonOutProto.Status was {status}");
- }
-
- await Task.Delay(3000);
- }
- }
- }
-
- private async Task TransferDuplicatePokemon(Client client)
- {
-
- //ColoredConsoleWrite(ConsoleColor.White, $"Check for duplicates");
- var inventory = await client.GetInventory();
- var allpokemons =
- inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon)
- .Where(p => p != null && p?.PokemonId > 0);
-
- var dupes = allpokemons.OrderBy(x => x.Cp).Select((x, i) => new { index = i, value = x })
- .GroupBy(x => x.value.PokemonId)
- .Where(x => x.Skip(1).Any());
-
- for (var i = 0; i < dupes.Count(); i++)
- {
- for (var j = 0; j < dupes.ElementAt(i).Count() - 1; j++)
- {
- var dubpokemon = dupes.ElementAt(i).ElementAt(j).value;
- if (dubpokemon.Favorite == 0)
- {
- var transfer = await client.TransferPokemon(dubpokemon.Id);
- string pokemonName;
- if (ClientSettings.Language == "german")
- {
- string name_english = Convert.ToString(dubpokemon.PokemonId);
- var request = (HttpWebRequest)WebRequest.Create("http://boosting-service.de/pokemon/index.php?pokeName=" + name_english);
- var response = (HttpWebResponse)request.GetResponse();
- pokemonName = new StreamReader(response.GetResponseStream()).ReadToEnd();
- }
- else
- pokemonName = Convert.ToString(dubpokemon.PokemonId);
- ColoredConsoleWrite(Color.DarkGreen,
- $"Transferred {pokemonName} with {dubpokemon.Cp} CP (Highest is {dupes.ElementAt(i).Last().value.Cp})");
-
- }
- }
- }
- }
-
- private async Task TransferAllWeakPokemon(Client client, int cpThreshold)
- {
- //ColoredConsoleWrite(ConsoleColor.White, $"Firing up the meat grinder");
-
- PokemonId[] doNotTransfer = new[] //these will not be transferred even when below the CP threshold
- { // DO NOT EMPTY THIS ARRAY
- //PokemonId.Pidgey,
- //PokemonId.Rattata,
- //PokemonId.Weedle,
- //PokemonId.Zubat,
- //PokemonId.Caterpie,
- //PokemonId.Pidgeotto,
- //PokemonId.NidoranFemale,
- //PokemonId.Paras,
- //PokemonId.Venonat,
- //PokemonId.Psyduck,
- //PokemonId.Poliwag,
- //PokemonId.Slowpoke,
- //PokemonId.Drowzee,
- //PokemonId.Gastly,
- //PokemonId.Goldeen,
- //PokemonId.Staryu,
- PokemonId.Magikarp,
- PokemonId.Eevee//,
- //PokemonId.Dratini
- };
-
- var inventory = await client.GetInventory();
- var pokemons = inventory.InventoryDelta.InventoryItems
- .Select(i => i.InventoryItemData?.Pokemon)
- .Where(p => p != null && p?.PokemonId > 0)
- .ToArray();
-
- //foreach (var unwantedPokemonType in unwantedPokemonTypes)
- {
- List<PokemonData> pokemonToDiscard;
- if (doNotTransfer.Count() != 0)
- pokemonToDiscard = pokemons.Where(p => !doNotTransfer.Contains(p.PokemonId) && p.Cp < cpThreshold).OrderByDescending(p => p.Cp).ToList();
- else
- pokemonToDiscard = pokemons.Where(p => p.Cp < cpThreshold).OrderByDescending(p => p.Cp).ToList();
-
-
- //var unwantedPokemon = pokemonOfDesiredType.Skip(1) // keep the strongest one for potential battle-evolving
- // .ToList();
- ColoredConsoleWrite(Color.Gray, $"Grinding {pokemonToDiscard.Count} pokemon below {cpThreshold} CP.");
- await TransferAllGivenPokemons(client, pokemonToDiscard);
-
- }
-
- ColoredConsoleWrite(Color.Gray, $"Finished grinding all the meat");
- }
-
- public async Task PrintLevel(Client client)
- {
- var inventory = await client.GetInventory();
- var stats = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.PlayerStats).ToArray();
- foreach (var v in stats)
- if (v != null)
- {
- int XpDiff = GetXpDiff(client, v.Level);
- if (ClientSettings.LevelOutput == "time")
- ColoredConsoleWrite(Color.Yellow, $"Current Level: " + v.Level + " (" + (v.Experience - XpDiff) + "/" + (v.NextLevelXp - XpDiff) + ")");
- else if (ClientSettings.LevelOutput == "levelup")
- if (Currentlevel != v.Level)
- {
- Currentlevel = v.Level;
- ColoredConsoleWrite(Color.Magenta, $"Current Level: " + v.Level + ". XP needed for next Level: " + (v.NextLevelXp - v.Experience));
- }
- }
- if (ClientSettings.LevelOutput == "levelup")
- await Task.Delay(1000);
- else
- await Task.Delay(ClientSettings.LevelTimeInterval * 1000);
- PrintLevel(client);
- }
-
- // Pulled from NecronomiconCoding
- public static string _getSessionRuntimeInTimeFormat()
- {
- return (DateTime.Now - InitSessionDateTime).ToString(@"dd\.hh\:mm\:ss");
- }
-
- public async Task ConsoleLevelTitle(string Username, Client client)
- {
- var inventory = await client.GetInventory();
- var stats = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.PlayerStats).ToArray();
- var profile = await client.GetProfile();
- foreach (var v in stats)
- if (v != null)
- {
- int XpDiff = GetXpDiff(client, v.Level);
- SetStatusText(string.Format(Username + " | Level: {0:0} - ({2:0} / {3:0}) | Runtime {1} | Stardust: {4:0}", v.Level, _getSessionRuntimeInTimeFormat(), (v.Experience - v.PrevLevelXp - XpDiff), (v.NextLevelXp - v.PrevLevelXp - XpDiff), profile.Profile.Currency.ToArray()[1].Amount) + " | XP/Hour: " + Math.Round(TotalExperience / GetRuntime()) + " | Pokemon/Hour: " + Math.Round(TotalPokemon / GetRuntime()));
- }
- await Task.Delay(1000);
- ConsoleLevelTitle(Username, client);
- }
-
- public static int GetXpDiff(Client client, int Level)
- {
- switch (Level)
- {
- case 1:
- return 0;
- case 2:
- return 1000;
- case 3:
- return 2000;
- case 4:
- return 3000;
- case 5:
- return 4000;
- case 6:
- return 5000;
- case 7:
- return 6000;
- case 8:
- return 7000;
- case 9:
- return 8000;
- case 10:
- return 9000;
- case 11:
- return 10000;
- case 12:
- return 10000;
- case 13:
- return 10000;
- case 14:
- return 10000;
- case 15:
- return 15000;
- case 16:
- return 20000;
- case 17:
- return 20000;
- case 18:
- return 20000;
- case 19:
- return 25000;
- case 20:
- return 25000;
- case 21:
- return 50000;
- case 22:
- return 75000;
- case 23:
- return 100000;
- case 24:
- return 125000;
- case 25:
- return 150000;
- case 26:
- return 190000;
- case 27:
- return 200000;
- case 28:
- return 250000;
- case 29:
- return 300000;
- case 30:
- return 350000;
- case 31:
- return 500000;
- case 32:
- return 500000;
- case 33:
- return 750000;
- case 34:
- return 1000000;
- case 35:
- return 1250000;
- case 36:
- return 1500000;
- case 37:
- return 2000000;
- case 38:
- return 2500000;
- case 39:
- return 1000000;
- case 40:
- return 1000000;
- }
- return 0;
- }
-
- private void logTextBox_TextChanged(object sender, EventArgs e)
- {
- logTextBox.SelectionStart = logTextBox.Text.Length;
- logTextBox.ScrollToCaret();
- }
-
- private void settingsToolStripMenuItem_Click(object sender, EventArgs e)
- {
- SettingsForm settingsForm = new SettingsForm();
- settingsForm.Show();
- }
-
- private void startBotToolStripMenuItem_Click(object sender, EventArgs e)
- {
- startBotToolStripMenuItem.Enabled = false;
- Task.Run(() =>
- {
- try
- {
- //ColoredConsoleWrite(ConsoleColor.White, "Coded by Ferox - edited by NecronomiconCoding");
- CheckVersion();
- Execute();
- }
- catch (PtcOfflineException)
- {
- ColoredConsoleWrite(Color.Red, "PTC Servers are probably down OR your credentials are wrong. Try google");
- }
- catch (Exception ex)
- {
- ColoredConsoleWrite(Color.Red, $"Unhandled exception: {ex}");
- }
- });
- }
-
- private void showAllToolStripMenuItem3_Click(object sender, EventArgs e)
- {
- var pForm = new PokemonForm();
- pForm.Show();
- }
-
- private void statsToolStripMenuItem_Click(object sender, EventArgs e)
- {
- // todo: add player stats later
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Reflection;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using System.Xml;
+using AllEnum;
+using PokemonGo.RocketAPI.Enums;
+using PokemonGo.RocketAPI.Exceptions;
+using PokemonGo.RocketAPI.Extensions;
+using PokemonGo.RocketAPI.GeneratedCode;
+
+namespace PokemonGo.RocketAPI.Window
+{
+ public partial class MainForm : Form
+ {
+ public MainForm()
+ {
+ InitializeComponent();
+ ClientSettings = Settings.Instance;
+ }
+
+ private void MainForm_Load(object sender, EventArgs e)
+ {
+
+ }
+
+ public static ISettings ClientSettings;
+ private static int Currentlevel = -1;
+ private static int TotalExperience = 0;
+ private static int TotalPokemon = 0;
+ private static DateTime TimeStarted = DateTime.Now;
+ public static DateTime InitSessionDateTime = DateTime.Now;
+
+ public static double GetRuntime()
+ {
+ return ((DateTime.Now - TimeStarted).TotalSeconds) / 3600;
+ }
+
+ public void CheckVersion()
+ {
+ try
+ {
+ var match =
+ new Regex(
+ @"\[assembly\: AssemblyVersion\(""(\d{1,})\.(\d{1,})\.(\d{1,})\.(\d{1,})""\)\]")
+ .Match(DownloadServerVersion());
+
+ if (!match.Success) return;
+ var gitVersion =
+ new Version(
+ string.Format(
+ "{0}.{1}.{2}.{3}",
+ match.Groups[1],
+ match.Groups[2],
+ match.Groups[3],
+ match.Groups[4]));
+ if (gitVersion <= Assembly.GetExecutingAssembly().GetName().Version)
+ {
+ ColoredConsoleWrite(Color.Green, "Awesome! You have already got the newest version! " + Assembly.GetExecutingAssembly().GetName().Version);
+ return;
+ }
+
+ ColoredConsoleWrite(Color.Red, "There is a new Version available: " + gitVersion);
+ ColoredConsoleWrite(Color.Red, "You can find it at https://github.com/DetectiveSquirrel/Pokemon-Go-Rocket-API");
+ }
+ catch (Exception)
+ {
+ ColoredConsoleWrite(Color.Red, "Unable to check for updates now...");
+ }
+ }
+
+ private static string DownloadServerVersion()
+ {
+ using (var wC = new WebClient())
+ return
+ wC.DownloadString(
+ "https://raw.githubusercontent.com/DetectiveSquirrel/Pokemon-Go-Rocket-API/master/PokemonGo/RocketAPI/Window/Properties/AssemblyInfo.cs");
+ }
+
+ public void ColoredConsoleWrite(Color color, string text)
+ {
+ if (InvokeRequired)
+ {
+ Invoke(new Action<Color, string>(ColoredConsoleWrite), color, text);
+ return;
+ }
+ string textToAppend = "[" + DateTime.Now.ToString("HH:mm:ss tt") + "] " + text + "\r\n";
+ logTextBox.SelectionColor = color;
+ logTextBox.AppendText(textToAppend);
+
+ object syncRoot = new object();
+ lock (syncRoot) // Added locking to prevent text file trying to be accessed by two things at the same time
+ {
+ File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + @"\Logs.txt", "[" + DateTime.Now.ToString("HH:mm:ss tt") + "] " + text + "\n");
+ }
+ }
+
+ public void SetStatusText(string text)
+ {
+ if (InvokeRequired)
+ {
+ Invoke(new Action<string>(SetStatusText), text);
+ return;
+ }
+
+ statusLabel.Text = text;
+ }
+
+ private async Task EvolveAllGivenPokemons(Client client, IEnumerable<PokemonData> pokemonToEvolve)
+ {
+ foreach (var pokemon in pokemonToEvolve)
+ {
+ /*
+ enum Holoholo.Rpc.Types.EvolvePokemonOutProto.Result {
+ UNSET = 0;
+ SUCCESS = 1;
+ FAILED_POKEMON_MISSING = 2;
+ FAILED_INSUFFICIENT_RESOURCES = 3;
+ FAILED_POKEMON_CANNOT_EVOLVE = 4;
+ FAILED_POKEMON_IS_DEPLOYED = 5;
+ }
+ }*/
+
+ var countOfEvolvedUnits = 0;
+ var xpCount = 0;
+
+ EvolvePokemonOut evolvePokemonOutProto;
+ do
+ {
+ evolvePokemonOutProto = await client.EvolvePokemon(pokemon.Id);
+ //todo: someone check whether this still works
+
+ if (evolvePokemonOutProto.Result == 1)
+ {
+ ColoredConsoleWrite(Color.Cyan,
+ $"Evolved {pokemon.PokemonId} successfully for {evolvePokemonOutProto.ExpAwarded}xp");
+
+ countOfEvolvedUnits++;
+ xpCount += evolvePokemonOutProto.ExpAwarded;
+ }
+ else
+ {
+ var result = evolvePokemonOutProto.Result;
+ /*
+ ColoredConsoleWrite(ConsoleColor.White, $"Failed to evolve {pokemon.PokemonId}. " +
+ $"EvolvePokemonOutProto.Result was {result}");
+
+ ColoredConsoleWrite(ConsoleColor.White, $"Due to above error, stopping evolving {pokemon.PokemonId}");
+ */
+ }
+ } while (evolvePokemonOutProto.Result == 1);
+ if (countOfEvolvedUnits > 0)
+ ColoredConsoleWrite(Color.Cyan,
+ $"Evolved {countOfEvolvedUnits} pieces of {pokemon.PokemonId} for {xpCount}xp");
+
+ await Task.Delay(3000);
+ }
+ }
+
+ private async void Execute()
+ {
+ var client = new Client(ClientSettings);
+ try
+ {
+ switch (ClientSettings.AuthType)
+ {
+ case AuthType.Ptc:
+ ColoredConsoleWrite(Color.Green, "Attempting to log into Pokemon Trainers Club..");
+ await client.DoPtcLogin(ClientSettings.PtcUsername, ClientSettings.PtcPassword);
+ break;
+ case AuthType.Google:
+ ColoredConsoleWrite(Color.Green, "Attempting to log into Google..");
+ if (ClientSettings.GoogleRefreshToken == "")
+ ColoredConsoleWrite(Color.Green, "Now opening www.Google.com/device and copying the 8 digit code to your clipboard");
+
+ await client.DoGoogleLogin();
+ break;
+ }
+
+ await client.SetServer();
+ var profile = await client.GetProfile();
+ var settings = await client.GetSettings();
+ var mapObjects = await client.GetMapObjects();
+ var inventory = await client.GetInventory();
+ var pokemons =
+ inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon)
+ .Where(p => p != null && p?.PokemonId > 0);
+
+ ConsoleLevelTitle(profile.Profile.Username, client);
+
+ // Write the players ingame details
+ ColoredConsoleWrite(Color.Yellow, "----------------------------");
+ if (ClientSettings.AuthType == AuthType.Ptc)
+ {
+ ColoredConsoleWrite(Color.Cyan, "Account: " + ClientSettings.PtcUsername);
+ ColoredConsoleWrite(Color.Cyan, "Password: " + ClientSettings.PtcPassword + "\n");
+ }
+ ColoredConsoleWrite(Color.DarkGray, "Name: " + profile.Profile.Username);
+ ColoredConsoleWrite(Color.DarkGray, "Team: " + profile.Profile.Team);
+ if (profile.Profile.Currency.ToArray()[0].Amount > 0) // If player has any pokecoins it will show how many they have.
+ ColoredConsoleWrite(Color.DarkGray, "Pokecoins: " + profile.Profile.Currency.ToArray()[0].Amount);
+ ColoredConsoleWrite(Color.DarkGray, "Stardust: " + profile.Profile.Currency.ToArray()[1].Amount + "\n");
+ ColoredConsoleWrite(Color.DarkGray, "Latitude: " + ClientSettings.DefaultLatitude);
+ ColoredConsoleWrite(Color.DarkGray, "Longitude: " + ClientSettings.DefaultLongitude);
+ try
+ {
+ ColoredConsoleWrite(Color.DarkGray, "Country: " + CallAPI("country", ClientSettings.DefaultLatitude, ClientSettings.DefaultLongitude));
+ ColoredConsoleWrite(Color.DarkGray, "Area: " + CallAPI("place", ClientSettings.DefaultLatitude, ClientSettings.DefaultLongitude));
+ }
+ catch (Exception)
+ {
+ ColoredConsoleWrite(Color.DarkGray, "Unable to get Country/Place");
+ }
+
+ ColoredConsoleWrite(Color.Yellow, "----------------------------");
+
+ // I believe a switch is more efficient and easier to read.
+ switch (ClientSettings.TransferType)
+ {
+ case "leaveStrongest":
+ await TransferAllButStrongestUnwantedPokemon(client);
+ break;
+ case "all":
+ await TransferAllGivenPokemons(client, pokemons);
+ break;
+ case "duplicate":
+ await TransferDuplicatePokemon(client);
+ break;
+ case "cp":
+ await TransferAllWeakPokemon(client, ClientSettings.TransferCPThreshold);
+ break;
+ default:
+ ColoredConsoleWrite(Color.DarkGray, "Transfering pokemon disabled");
+ break;
+ }
+
+ if (ClientSettings.EvolveAllGivenPokemons)
+ await EvolveAllGivenPokemons(client, pokemons);
+ if (ClientSettings.Recycler)
+ client.RecycleItems(client);
+
+ await Task.Delay(5000);
+ PrintLevel(client);
+ await ExecuteFarmingPokestopsAndPokemons(client);
+ ColoredConsoleWrite(Color.Red, $"No nearby usefull locations found. Please wait 10 seconds.");
+ await Task.Delay(10000);
+ CheckVersion();
+ Execute();
+ }
+ catch (TaskCanceledException) { ColoredConsoleWrite(Color.Red, "Task Canceled Exception - Restarting"); Execute(); }
+ catch (UriFormatException) { ColoredConsoleWrite(Color.Red, "System URI Format Exception - Restarting"); Execute(); }
+ catch (ArgumentOutOfRangeException) { ColoredConsoleWrite(Color.Red, "ArgumentOutOfRangeException - Restarting"); Execute(); }
+ catch (ArgumentNullException) { ColoredConsoleWrite(Color.Red, "Argument Null Refference - Restarting"); Execute(); }
+ catch (NullReferenceException) { ColoredConsoleWrite(Color.Red, "Null Refference - Restarting"); Execute(); }
+ catch (Exception ex) { ColoredConsoleWrite(Color.Red, ex.ToString()); Execute(); }
+ }
+
+ private static string CallAPI(string elem, double lat, double lon)
+ {
+ using (XmlReader reader = XmlReader.Create(@"http://api.geonames.org/findNearby?lat=" + lat + "&lng=" + lon + "&username=demo"))
+ {
+ while (reader.Read())
+ {
+ if (reader.IsStartElement())
+ {
+ switch (elem)
+ {
+ case "country":
+ if (reader.Name == "countryName")
+ {
+ return reader.ReadString();
+ }
+ break;
+
+ case "place":
+ if (reader.Name == "toponymName")
+ {
+ return reader.ReadString();
+ }
+ break;
+ default:
+ return "N/A";
+ break;
+ }
+ }
+ }
+ }
+ return "Error";
+ }
+
+ private async Task ExecuteCatchAllNearbyPokemons(Client client)
+ {
+ var mapObjects = await client.GetMapObjects();
+
+ var pokemons = mapObjects.MapCells.SelectMany(i => i.CatchablePokemons);
+
+ var inventory2 = await client.GetInventory();
+ var pokemons2 = inventory2.InventoryDelta.InventoryItems
+ .Select(i => i.InventoryItemData?.Pokemon)
+ .Where(p => p != null && p?.PokemonId > 0)
+ .ToArray();
+
+ foreach (var pokemon in pokemons)
+ {
+ var update = await client.UpdatePlayerLocation(pokemon.Latitude, pokemon.Longitude);
+ var encounterPokemonResponse = await client.EncounterPokemon(pokemon.EncounterId, pokemon.SpawnpointId);
+ var pokemonCP = encounterPokemonResponse?.WildPokemon?.PokemonData?.Cp;
+ CatchPokemonResponse caughtPokemonResponse;
+ do
+ {
+ if (ClientSettings.RazzBerryMode == "cp")
+ if (pokemonCP > ClientSettings.RazzBerrySetting)
+ await client.UseRazzBerry(client, pokemon.EncounterId, pokemon.SpawnpointId);
+ if (ClientSettings.RazzBerryMode == "probability")
+ if (encounterPokemonResponse.CaptureProbability.CaptureProbability_.First() < ClientSettings.RazzBerrySetting)
+ await client.UseRazzBerry(client, pokemon.EncounterId, pokemon.SpawnpointId);
+ caughtPokemonResponse = await client.CatchPokemon(pokemon.EncounterId, pokemon.SpawnpointId, pokemon.Latitude, pokemon.Longitude, MiscEnums.Item.ITEM_POKE_BALL, pokemonCP); ; //note: reverted from settings because this should not be part of settings but part of logic
+ } while (caughtPokemonResponse.Status == CatchPokemonResponse.Types.CatchStatus.CatchMissed || caughtPokemonResponse.Status == CatchPokemonResponse.Types.CatchStatus.CatchEscape);
+
+ string pokemonName;
+ if (ClientSettings.Language == "german")
+ {
+ string name_english = Convert.ToString(pokemon.PokemonId);
+ var request = (HttpWebRequest)WebRequest.Create("http://boosting-service.de/pokemon/index.php?pokeName=" + name_english);
+ var response = (HttpWebResponse)request.GetResponse();
+ pokemonName = new StreamReader(response.GetResponseStream()).ReadToEnd();
+ }
+ else
+ pokemonName = Convert.ToString(pokemon.PokemonId);
+ if (caughtPokemonResponse.Status == CatchPokemonResponse.Types.CatchStatus.CatchSuccess)
+ {
+ ColoredConsoleWrite(Color.Green, $"We caught a {pokemonName} with {encounterPokemonResponse?.WildPokemon?.PokemonData?.Cp} CP");
+ foreach (int xp in caughtPokemonResponse.Scores.Xp)
+ TotalExperience += xp;
+ TotalPokemon += 1;
+ }
+ else
+ ColoredConsoleWrite(Color.Red, $"{pokemonName} with {encounterPokemonResponse?.WildPokemon?.PokemonData?.Cp} CP got away..");
+
+ if (ClientSettings.TransferType == "leaveStrongest")
+ await TransferAllButStrongestUnwantedPokemon(client);
+ else if (ClientSettings.TransferType == "all")
+ await TransferAllGivenPokemons(client, pokemons2);
+ else if (ClientSettings.TransferType == "duplicate")
+ await TransferDuplicatePokemon(client);
+ else if (ClientSettings.TransferType == "cp")
+ await TransferAllWeakPokemon(client, ClientSettings.TransferCPThreshold);
+
+ await Task.Delay(3000);
+ }
+ }
+
+ private async Task ExecuteFarmingPokestopsAndPokemons(Client client)
+ {
+ var mapObjects = await client.GetMapObjects();
+
+ var pokeStops = mapObjects.MapCells.SelectMany(i => i.Forts).Where(i => i.Type == FortType.Checkpoint && i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime());
+
+ foreach (var pokeStop in pokeStops)
+ {
+ var update = await client.UpdatePlayerLocation(pokeStop.Latitude, pokeStop.Longitude);
+ var fortInfo = await client.GetFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
+ var fortSearch = await client.SearchFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
+
+ StringWriter PokeStopOutput = new StringWriter();
+ PokeStopOutput.Write($"");
+ if (fortInfo.Name != string.Empty)
+ PokeStopOutput.Write("PokeStop: " + fortInfo.Name);
+ if (fortSearch.ExperienceAwarded != 0)
+ PokeStopOutput.Write($", XP: {fortSearch.ExperienceAwarded}");
+ if (fortSearch.GemsAwarded != 0)
+ PokeStopOutput.Write($", Gems: {fortSearch.GemsAwarded}");
+ if (fortSearch.PokemonDataEgg != null)
+ PokeStopOutput.Write($", Eggs: {fortSearch.PokemonDataEgg}");
+ if (GetFriendlyItemsString(fortSearch.ItemsAwarded) != string.Empty)
+ PokeStopOutput.Write($", Items: {GetFriendlyItemsString(fortSearch.ItemsAwarded)} ");
+ ColoredConsoleWrite(Color.Cyan, PokeStopOutput.ToString());
+
+ if (fortSearch.ExperienceAwarded != 0)
+ TotalExperience += (fortSearch.ExperienceAwarded);
+ await Task.Delay(15000);
+ await ExecuteCatchAllNearbyPokemons(client);
+ }
+ }
+
+ private string GetFriendlyItemsString(IEnumerable<FortSearchResponse.Types.ItemAward> items)
+ {
+ var enumerable = items as IList<FortSearchResponse.Types.ItemAward> ?? items.ToList();
+
+ if (!enumerable.Any())
+ return string.Empty;
+
+ return enumerable.GroupBy(i => i.ItemId)
+ .Select(kvp => new { ItemName = kvp.Key.ToString().Substring(4), Amount = kvp.Sum(x => x.ItemCount) })
+ .Select(y => $"{y.Amount}x {y.ItemName}")
+ .Aggregate((a, b) => $"{a}, {b}");
+ }
+
+
+ private async Task TransferAllButStrongestUnwantedPokemon(Client client)
+ {
+ //ColoredConsoleWrite(ConsoleColor.White, $"Firing up the meat grinder");
+
+ var unwantedPokemonTypes = new[]
+ {
+ PokemonId.Pidgey,
+ PokemonId.Rattata,
+ PokemonId.Weedle,
+ PokemonId.Zubat,
+ PokemonId.Caterpie,
+ PokemonId.Pidgeotto,
+ PokemonId.NidoranFemale,
+ PokemonId.Paras,
+ PokemonId.Venonat,
+ PokemonId.Psyduck,
+ PokemonId.Poliwag,
+ PokemonId.Slowpoke,
+ PokemonId.Drowzee,
+ PokemonId.Gastly,
+ PokemonId.Goldeen,
+ PokemonId.Staryu,
+ PokemonId.Magikarp,
+ PokemonId.Clefairy,
+ PokemonId.Eevee,
+ PokemonId.Tentacool,
+ PokemonId.Dratini,
+ PokemonId.Ekans,
+ PokemonId.Jynx,
+ PokemonId.Lickitung,
+ PokemonId.Spearow,
+ PokemonId.NidoranFemale,
+ PokemonId.NidoranMale
+ };
+
+ var inventory = await client.GetInventory();
+ var pokemons = inventory.InventoryDelta.InventoryItems
+ .Select(i => i.InventoryItemData?.Pokemon)
+ .Where(p => p != null && p?.PokemonId > 0)
+ .ToArray();
+
+ foreach (var unwantedPokemonType in unwantedPokemonTypes)
+ {
+ var pokemonOfDesiredType = pokemons.Where(p => p.PokemonId == unwantedPokemonType)
+ .OrderByDescending(p => p.Cp)
+ .ToList();
+
+ var unwantedPokemon =
+ pokemonOfDesiredType.Skip(1) // keep the strongest one for potential battle-evolving
+ .ToList();
+
+ //ColoredConsoleWrite(ConsoleColor.White, $"Grinding {unwantedPokemon.Count} pokemons of type {unwantedPokemonType}");
+ await TransferAllGivenPokemons(client, unwantedPokemon);
+ }
+
+ //ColoredConsoleWrite(ConsoleColor.White, $"Finished grinding all the meat");
+ }
+
+ public static float Perfect(PokemonData poke)
+ {
+ return ((float)(poke.IndividualAttack + poke.IndividualDefense + poke.IndividualStamina) / (3.0f * 15.0f)) * 100.0f;
+ }
+
+ private async Task TransferAllGivenPokemons(Client client, IEnumerable<PokemonData> unwantedPokemons, float keepPerfectPokemonLimit = 80.0f)
+ {
+ foreach (var pokemon in unwantedPokemons)
+ {
+ if (Perfect(pokemon) >= keepPerfectPokemonLimit) continue;
+ ColoredConsoleWrite(Color.White, $"Pokemon {pokemon.PokemonId} with {pokemon.Cp} CP has IV percent less than {keepPerfectPokemonLimit}%");
+
+ if (pokemon.Favorite == 0)
+ {
+ var transferPokemonResponse = await client.TransferPokemon(pokemon.Id);
+
+ /*
+ ReleasePokemonOutProto.Status {
+ UNSET = 0;
+ SUCCESS = 1;
+ POKEMON_DEPLOYED = 2;
+ FAILED = 3;
+ ERROR_POKEMON_IS_EGG = 4;
+ }*/
+ string pokemonName;
+ if (ClientSettings.Language == "german")
+ {
+ // Dont really need to print this do we? youll know if its German or not
+ //ColoredConsoleWrite(Color.DarkCyan, "german");
+ string name_english = Convert.ToString(pokemon.PokemonId);
+ var request = (HttpWebRequest)WebRequest.Create("http://boosting-service.de/pokemon/index.php?pokeName=" + name_english);
+ var response = (HttpWebResponse)request.GetResponse();
+ pokemonName = new StreamReader(response.GetResponseStream()).ReadToEnd();
+ }
+ else
+ pokemonName = Convert.ToString(pokemon.PokemonId);
+ if (transferPokemonResponse.Status == 1)
+ {
+ ColoredConsoleWrite(Color.Magenta, $"Transferred {pokemonName} with {pokemon.Cp} CP");
+ }
+ else
+ {
+ var status = transferPokemonResponse.Status;
+
+ ColoredConsoleWrite(Color.Red, $"Somehow failed to transfer {pokemonName} with {pokemon.Cp} CP. " +
+ $"ReleasePokemonOutProto.Status was {status}");
+ }
+
+ await Task.Delay(3000);
+ }
+ }
+ }
+
+ private async Task TransferDuplicatePokemon(Client client)
+ {
+
+ //ColoredConsoleWrite(ConsoleColor.White, $"Check for duplicates");
+ var inventory = await client.GetInventory();
+ var allpokemons =
+ inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon)
+ .Where(p => p != null && p?.PokemonId > 0);
+
+ var dupes = allpokemons.OrderBy(x => x.Cp).Select((x, i) => new { index = i, value = x })
+ .GroupBy(x => x.value.PokemonId)
+ .Where(x => x.Skip(1).Any());
+
+ for (var i = 0; i < dupes.Count(); i++)
+ {
+ for (var j = 0; j < dupes.ElementAt(i).Count() - 1; j++)
+ {
+ var dubpokemon = dupes.ElementAt(i).ElementAt(j).value;
+ if (dubpokemon.Favorite == 0)
+ {
+ var transfer = await client.TransferPokemon(dubpokemon.Id);
+ string pokemonName;
+ if (ClientSettings.Language == "german")
+ {
+ string name_english = Convert.ToString(dubpokemon.PokemonId);
+ var request = (HttpWebRequest)WebRequest.Create("http://boosting-service.de/pokemon/index.php?pokeName=" + name_english);
+ var response = (HttpWebResponse)request.GetResponse();
+ pokemonName = new StreamReader(response.GetResponseStream()).ReadToEnd();
+ }
+ else
+ pokemonName = Convert.ToString(dubpokemon.PokemonId);
+ ColoredConsoleWrite(Color.DarkGreen,
+ $"Transferred {pokemonName} with {dubpokemon.Cp} CP (Highest is {dupes.ElementAt(i).Last().value.Cp})");
+
+ }
+ }
+ }
+ }
+
+ private async Task TransferAllWeakPokemon(Client client, int cpThreshold)
+ {
+ //ColoredConsoleWrite(ConsoleColor.White, $"Firing up the meat grinder");
+
+ PokemonId[] doNotTransfer = new[] //these will not be transferred even when below the CP threshold
+ { // DO NOT EMPTY THIS ARRAY
+ //PokemonId.Pidgey,
+ //PokemonId.Rattata,
+ //PokemonId.Weedle,
+ //PokemonId.Zubat,
+ //PokemonId.Caterpie,
+ //PokemonId.Pidgeotto,
+ //PokemonId.NidoranFemale,
+ //PokemonId.Paras,
+ //PokemonId.Venonat,
+ //PokemonId.Psyduck,
+ //PokemonId.Poliwag,
+ //PokemonId.Slowpoke,
+ //PokemonId.Drowzee,
+ //PokemonId.Gastly,
+ //PokemonId.Goldeen,
+ //PokemonId.Staryu,
+ PokemonId.Magikarp,
+ PokemonId.Eevee//,
+ //PokemonId.Dratini
+ };
+
+ var inventory = await client.GetInventory();
+ var pokemons = inventory.InventoryDelta.InventoryItems
+ .Select(i => i.InventoryItemData?.Pokemon)
+ .Where(p => p != null && p?.PokemonId > 0)
+ .ToArray();
+
+ //foreach (var unwantedPokemonType in unwantedPokemonTypes)
+ {
+ List<PokemonData> pokemonToDiscard;
+ if (doNotTransfer.Count() != 0)
+ pokemonToDiscard = pokemons.Where(p => !doNotTransfer.Contains(p.PokemonId) && p.Cp < cpThreshold).OrderByDescending(p => p.Cp).ToList();
+ else
+ pokemonToDiscard = pokemons.Where(p => p.Cp < cpThreshold).OrderByDescending(p => p.Cp).ToList();
+
+
+ //var unwantedPokemon = pokemonOfDesiredType.Skip(1) // keep the strongest one for potential battle-evolving
+ // .ToList();
+ ColoredConsoleWrite(Color.Gray, $"Grinding {pokemonToDiscard.Count} pokemon below {cpThreshold} CP.");
+ await TransferAllGivenPokemons(client, pokemonToDiscard);
+
+ }
+
+ ColoredConsoleWrite(Color.Gray, $"Finished grinding all the meat");
+ }
+
+ public async Task PrintLevel(Client client)
+ {
+ var inventory = await client.GetInventory();
+ var stats = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.PlayerStats).ToArray();
+ foreach (var v in stats)
+ if (v != null)
+ {
+ int XpDiff = GetXpDiff(client, v.Level);
+ if (ClientSettings.LevelOutput == "time")
+ ColoredConsoleWrite(Color.Yellow, $"Current Level: " + v.Level + " (" + (v.Experience - XpDiff) + "/" + (v.NextLevelXp - XpDiff) + ")");
+ else if (ClientSettings.LevelOutput == "levelup")
+ if (Currentlevel != v.Level)
+ {
+ Currentlevel = v.Level;
+ ColoredConsoleWrite(Color.Magenta, $"Current Level: " + v.Level + ". XP needed for next Level: " + (v.NextLevelXp - v.Experience));
+ }
+ }
+ if (ClientSettings.LevelOutput == "levelup")
+ await Task.Delay(1000);
+ else
+ await Task.Delay(ClientSettings.LevelTimeInterval * 1000);
+ PrintLevel(client);
+ }
+
+ // Pulled from NecronomiconCoding
+ public static string _getSessionRuntimeInTimeFormat()
+ {
+ return (DateTime.Now - InitSessionDateTime).ToString(@"dd\.hh\:mm\:ss");
+ }
+
+ public async Task ConsoleLevelTitle(string Username, Client client)
+ {
+ var inventory = await client.GetInventory();
+ var stats = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.PlayerStats).ToArray();
+ var profile = await client.GetProfile();
+ foreach (var v in stats)
+ if (v != null)
+ {
+ int XpDiff = GetXpDiff(client, v.Level);
+ SetStatusText(string.Format(Username + " | Level: {0:0} - ({2:0} / {3:0}) | Runtime {1} | Stardust: {4:0}", v.Level, _getSessionRuntimeInTimeFormat(), (v.Experience - v.PrevLevelXp - XpDiff), (v.NextLevelXp - v.PrevLevelXp - XpDiff), profile.Profile.Currency.ToArray()[1].Amount) + " | XP/Hour: " + Math.Round(TotalExperience / GetRuntime()) + " | Pokemon/Hour: " + Math.Round(TotalPokemon / GetRuntime()));
+ }
+ await Task.Delay(1000);
+ ConsoleLevelTitle(Username, client);
+ }
+
+ public static int GetXpDiff(Client client, int Level)
+ {
+ switch (Level)
+ {
+ case 1:
+ return 0;
+ case 2:
+ return 1000;
+ case 3:
+ return 2000;
+ case 4:
+ return 3000;
+ case 5:
+ return 4000;
+ case 6:
+ return 5000;
+ case 7:
+ return 6000;
+ case 8:
+ return 7000;
+ case 9:
+ return 8000;
+ case 10:
+ return 9000;
+ case 11:
+ return 10000;
+ case 12:
+ return 10000;
+ case 13:
+ return 10000;
+ case 14:
+ return 10000;
+ case 15:
+ return 15000;
+ case 16:
+ return 20000;
+ case 17:
+ return 20000;
+ case 18:
+ return 20000;
+ case 19:
+ return 25000;
+ case 20:
+ return 25000;
+ case 21:
+ return 50000;
+ case 22:
+ return 75000;
+ case 23:
+ return 100000;
+ case 24:
+ return 125000;
+ case 25:
+ return 150000;
+ case 26:
+ return 190000;
+ case 27:
+ return 200000;
+ case 28:
+ return 250000;
+ case 29:
+ return 300000;
+ case 30:
+ return 350000;
+ case 31:
+ return 500000;
+ case 32:
+ return 500000;
+ case 33:
+ return 750000;
+ case 34:
+ return 1000000;
+ case 35:
+ return 1250000;
+ case 36:
+ return 1500000;
+ case 37:
+ return 2000000;
+ case 38:
+ return 2500000;
+ case 39:
+ return 1000000;
+ case 40:
+ return 1000000;
+ }
+ return 0;
+ }
+
+ private void logTextBox_TextChanged(object sender, EventArgs e)
+ {
+ logTextBox.SelectionStart = logTextBox.Text.Length;
+ logTextBox.ScrollToCaret();
+ }
+
+ private void settingsToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ SettingsForm settingsForm = new SettingsForm();
+ settingsForm.Show();
+ }
+
+ private void startBotToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ startBotToolStripMenuItem.Enabled = false;
+ Task.Run(() =>
+ {
+ try
+ {
+ //ColoredConsoleWrite(ConsoleColor.White, "Coded by Ferox - edited by NecronomiconCoding");
+ CheckVersion();
+ Execute();
+ }
+ catch (PtcOfflineException)
+ {
+ ColoredConsoleWrite(Color.Red, "PTC Servers are probably down OR your credentials are wrong. Try google");
+ }
+ catch (Exception ex)
+ {
+ ColoredConsoleWrite(Color.Red, $"Unhandled exception: {ex}");
+ }
+ });
+ }
+
+ private void showAllToolStripMenuItem3_Click(object sender, EventArgs e)
+ {
+ var pForm = new PokemonForm();
+ pForm.Show();
+ }
+
+ private void statsToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ // todo: add player stats later
+ }
+ }
+}
diff --git a/PokemonGo/RocketAPI/Window/PokemonForm.Designer.cs b/PokemonGo/RocketAPI/Window/PokemonForm.Designer.cs
index 87ae0a3..c9ee330 100644
--- a/PokemonGo/RocketAPI/Window/PokemonForm.Designer.cs
+++ b/PokemonGo/RocketAPI/Window/PokemonForm.Designer.cs
@@ -28,66 +28,66 @@
/// </summary>
private void InitializeComponent()
{
- this.button1 = new System.Windows.Forms.Button();
- this.listView1 = new System.Windows.Forms.ListView();
- this.pokemonId = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
- this.pokemonCp = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
- this.SuspendLayout();
- //
- // button1
- //
- this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.button1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.button1.Location = new System.Drawing.Point(12, 373);
- this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(289, 33);
- this.button1.TabIndex = 1;
- this.button1.Text = "UPDATE LIST";
- this.button1.UseVisualStyleBackColor = true;
- this.button1.Click += new System.EventHandler(this.button1_Click);
- //
- // listView1
- //
- this.listView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
- this.pokemonId,
- this.pokemonCp});
- this.listView1.GridLines = true;
- this.listView1.Location = new System.Drawing.Point(12, 12);
- this.listView1.Name = "listView1";
- this.listView1.Size = new System.Drawing.Size(287, 352);
- this.listView1.TabIndex = 2;
- this.listView1.UseCompatibleStateImageBehavior = false;
- this.listView1.View = System.Windows.Forms.View.Details;
- this.listView1.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView1_ColumnClick);
- this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged);
- //
- // pokemonId
- //
- this.pokemonId.Text = "Pokemon Id";
- this.pokemonId.Width = 133;
- //
- // pokemonCp
- //
- this.pokemonCp.Text = "Combat Power";
- this.pokemonCp.Width = 133;
- //
- // PokemonForm
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(311, 418);
- this.Controls.Add(this.button1);
- this.Controls.Add(this.listView1);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
- this.Name = "PokemonForm";
- this.Text = "Pokemon List";
- this.Load += new System.EventHandler(this.PokemonForm_Load);
- this.ResumeLayout(false);
-
+ this.button1 = new System.Windows.Forms.Button();
+ this.listView1 = new System.Windows.Forms.ListView();
+ this.pokemonId = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+ this.pokemonCp = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+ this.SuspendLayout();
+ //
+ // button1
+ //
+ this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.button1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.button1.Location = new System.Drawing.Point(12, 373);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(289, 33);
+ this.button1.TabIndex = 1;
+ this.button1.Text = "UPDATE LIST";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // listView1
+ //
+ this.listView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+ this.pokemonId,
+ this.pokemonCp});
+ this.listView1.GridLines = true;
+ this.listView1.Location = new System.Drawing.Point(12, 12);
+ this.listView1.Name = "listView1";
+ this.listView1.Size = new System.Drawing.Size(287, 352);
+ this.listView1.TabIndex = 2;
+ this.listView1.UseCompatibleStateImageBehavior = false;
+ this.listView1.View = System.Windows.Forms.View.Details;
+ this.listView1.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView1_ColumnClick);
+ this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged);
+ //
+ // pokemonId
+ //
+ this.pokemonId.Text = "Pokemon Id";
+ this.pokemonId.Width = 133;
+ //
+ // pokemonCp
+ //
+ this.pokemonCp.Text = "Combat Power";
+ this.pokemonCp.Width = 133;
+ //
+ // PokemonForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(311, 418);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.listView1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
+ this.Name = "PokemonForm";
+ this.Text = "Pokemon List";
+ this.Load += new System.EventHandler(this.PokemonForm_Load);
+ this.ResumeLayout(false);
+
}
#endregion
diff --git a/PokemonGo/RocketAPI/Window/PokemonForm.cs b/PokemonGo/RocketAPI/Window/PokemonForm.cs
index 67328f0..89cfe15 100644
--- a/PokemonGo/RocketAPI/Window/PokemonForm.cs
+++ b/PokemonGo/RocketAPI/Window/PokemonForm.cs
@@ -46,7 +46,7 @@ namespace PokemonGo.RocketAPI.Window
var inventory = await client.GetInventory();
var pokemons =
inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon)
- .Where(p => p != null && p?.PokemonId > 0).OrderByDescending(key => key.Cp);
+ .Where(p => p != null && p?.PokemonId > 0).OrderByDescending(key => key.Cp);
foreach (var pokemon in pokemons)
@@ -70,7 +70,7 @@ namespace PokemonGo.RocketAPI.Window
}
private void button1_Click(object sender, EventArgs e)
- {
+ {
listView1.Items.Clear();
Execute();
}
@@ -78,11 +78,11 @@ namespace PokemonGo.RocketAPI.Window
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
//listView1.Sorting = listView1.Sorting == SortOrder.Ascending ? SortOrder.Descending : SortOrder.Ascending;
- }
-
- private void listView1_SelectedIndexChanged(object sender, EventArgs e)
- {
-
- }
+ }
+
+ private void listView1_SelectedIndexChanged(object sender, EventArgs e)
+ {
+
+ }
}
}
diff --git a/PokemonGo/RocketAPI/Window/PokemonForm.resx b/PokemonGo/RocketAPI/Window/PokemonForm.resx
index 29dcb1b..1af7de1 100644
--- a/PokemonGo/RocketAPI/Window/PokemonForm.resx
+++ b/PokemonGo/RocketAPI/Window/PokemonForm.resx
@@ -1,120 +1,120 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
- <!--
- Microsoft ResX Schema
-
- Version 2.0
-
- The primary goals of this format is to allow a simple XML format
- that is mostly human readable. The generation and parsing of the
- various data types are done through the TypeConverter classes
- associated with the data types.
-
- Example:
-
- ... ado.net/XML headers & schema ...
- <resheader name="resmimetype">text/microsoft-resx</resheader>
- <resheader name="version">2.0</resheader>
- <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
- <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
- <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
- <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
- <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
- <value>[base64 mime encoded serialized .NET Framework object]</value>
- </data>
- <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
- <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
- <comment>This is a comment</comment>
- </data>
-
- There are any number of "resheader" rows that contain simple
- name/value pairs.
-
- Each data row contains a name, and value. The row also contains a
- type or mimetype. Type corresponds to a .NET class that support
- text/value conversion through the TypeConverter architecture.
- Classes that don't support this are serialized and stored with the
- mimetype set.
-
- The mimetype is used for serialized objects, and tells the
- ResXResourceReader how to depersist the object. This is currently not
- extensible. For a given mimetype the value must be set accordingly:
-
- Note - application/x-microsoft.net.object.binary.base64 is the format
- that the ResXResourceWriter will generate, however the reader can
- read any of the formats listed below.
-
- mimetype: application/x-microsoft.net.object.binary.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.soap.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.bytearray.base64
- value : The object must be serialized into a byte array
- : using a System.ComponentModel.TypeConverter
- : and then encoded with base64 encoding.
- -->
- <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
- <xsd:element name="root" msdata:IsDataSet="true">
- <xsd:complexType>
- <xsd:choice maxOccurs="unbounded">
- <xsd:element name="metadata">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" />
- </xsd:sequence>
- <xsd:attribute name="name" use="required" type="xsd:string" />
- <xsd:attribute name="type" type="xsd:string" />
- <xsd:attribute name="mimetype" type="xsd:string" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="assembly">
- <xsd:complexType>
- <xsd:attribute name="alias" type="xsd:string" />
- <xsd:attribute name="name" type="xsd:string" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="data">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
- <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
- <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="resheader">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- </xsd:complexType>
- </xsd:element>
- </xsd:choice>
- </xsd:complexType>
- </xsd:element>
- </xsd:schema>
- <resheader name="resmimetype">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name="version">
- <value>2.0</value>
- </resheader>
- <resheader name="reader">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name="writer">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
</root>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/SettingsForm.Designer.cs b/PokemonGo/RocketAPI/Window/SettingsForm.Designer.cs
index a852b78..87963bc 100644
--- a/PokemonGo/RocketAPI/Window/SettingsForm.Designer.cs
+++ b/PokemonGo/RocketAPI/Window/SettingsForm.Designer.cs
@@ -27,256 +27,256 @@
/// </summary>
private void InitializeComponent()
{
- this.authTypeLabel = new System.Windows.Forms.Label();
- this.authTypeCb = new System.Windows.Forms.ComboBox();
- this.ptcUserLabel = new System.Windows.Forms.Label();
- this.ptcPasswordLabel = new System.Windows.Forms.Label();
- this.latLabel = new System.Windows.Forms.Label();
- this.longiLabel = new System.Windows.Forms.Label();
- this.label1 = new System.Windows.Forms.Label();
- this.label2 = new System.Windows.Forms.Label();
- this.label3 = new System.Windows.Forms.Label();
- this.label4 = new System.Windows.Forms.Label();
- this.label5 = new System.Windows.Forms.Label();
- this.ptcUserText = new System.Windows.Forms.TextBox();
- this.ptcPassText = new System.Windows.Forms.TextBox();
- this.latitudeText = new System.Windows.Forms.TextBox();
- this.longitudeText = new System.Windows.Forms.TextBox();
- this.razzmodeCb = new System.Windows.Forms.ComboBox();
- this.razzSettingText = new System.Windows.Forms.TextBox();
- this.transferTypeCb = new System.Windows.Forms.ComboBox();
- this.transferCpThresText = new System.Windows.Forms.TextBox();
- this.evolveAllChk = new System.Windows.Forms.CheckBox();
- this.saveBtn = new System.Windows.Forms.Button();
- this.SuspendLayout();
- //
- // authTypeLabel
- //
- this.authTypeLabel.AutoSize = true;
- this.authTypeLabel.Location = new System.Drawing.Point(12, 13);
- this.authTypeLabel.Name = "authTypeLabel";
- this.authTypeLabel.Size = new System.Drawing.Size(59, 13);
- this.authTypeLabel.TabIndex = 0;
- this.authTypeLabel.Text = "Auth Type:";
- //
- // authTypeCb
- //
- this.authTypeCb.FormattingEnabled = true;
- this.authTypeCb.Items.AddRange(new object[] {
- "Ptc",
- "Google"});
- this.authTypeCb.Location = new System.Drawing.Point(113, 10);
- this.authTypeCb.Name = "authTypeCb";
- this.authTypeCb.Size = new System.Drawing.Size(75, 21);
- this.authTypeCb.TabIndex = 1;
- this.authTypeCb.SelectedIndexChanged += new System.EventHandler(this.authTypeCb_SelectedIndexChanged);
- //
- // ptcUserLabel
- //
- this.ptcUserLabel.AutoSize = true;
- this.ptcUserLabel.Location = new System.Drawing.Point(12, 42);
- this.ptcUserLabel.Name = "ptcUserLabel";
- this.ptcUserLabel.Size = new System.Drawing.Size(77, 13);
- this.ptcUserLabel.TabIndex = 2;
- this.ptcUserLabel.Text = "Ptc Username:";
- //
- // ptcPasswordLabel
- //
- this.ptcPasswordLabel.AutoSize = true;
- this.ptcPasswordLabel.Location = new System.Drawing.Point(12, 68);
- this.ptcPasswordLabel.Name = "ptcPasswordLabel";
- this.ptcPasswordLabel.Size = new System.Drawing.Size(75, 13);
- this.ptcPasswordLabel.TabIndex = 3;
- this.ptcPasswordLabel.Text = "Ptc Password:";
- //
- // latLabel
- //
- this.latLabel.AutoSize = true;
- this.latLabel.Location = new System.Drawing.Point(12, 94);
- this.latLabel.Name = "latLabel";
- this.latLabel.Size = new System.Drawing.Size(48, 13);
- this.latLabel.TabIndex = 4;
- this.latLabel.Text = "Latitude:";
- //
- // longiLabel
- //
- this.longiLabel.AutoSize = true;
- this.longiLabel.Location = new System.Drawing.Point(12, 120);
- this.longiLabel.Name = "longiLabel";
- this.longiLabel.Size = new System.Drawing.Size(57, 13);
- this.longiLabel.TabIndex = 5;
- this.longiLabel.Text = "Longitude:";
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(12, 146);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(86, 13);
- this.label1.TabIndex = 6;
- this.label1.Text = "Razzberry mode:";
- //
- // label2
- //
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(12, 199);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(76, 13);
- this.label2.TabIndex = 7;
- this.label2.Text = "Transfer Type:";
- //
- // label3
- //
- this.label3.AutoSize = true;
- this.label3.Location = new System.Drawing.Point(12, 256);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(103, 13);
- this.label3.TabIndex = 8;
- this.label3.Text = "Evolve all pokemon:";
- //
- // label4
- //
- this.label4.AutoSize = true;
- this.label4.Location = new System.Drawing.Point(12, 227);
- this.label4.Name = "label4";
- this.label4.Size = new System.Drawing.Size(98, 13);
- this.label4.TabIndex = 9;
- this.label4.Text = "Trsfr CP Threshold:";
- //
- // label5
- //
- this.label5.AutoSize = true;
- this.label5.Location = new System.Drawing.Point(12, 173);
- this.label5.Name = "label5";
- this.label5.Size = new System.Drawing.Size(93, 13);
- this.label5.TabIndex = 10;
- this.label5.Text = "Razzberry Setting:";
- //
- // ptcUserText
- //
- this.ptcUserText.Location = new System.Drawing.Point(113, 39);
- this.ptcUserText.Name = "ptcUserText";
- this.ptcUserText.Size = new System.Drawing.Size(100, 20);
- this.ptcUserText.TabIndex = 11;
- //
- // ptcPassText
- //
- this.ptcPassText.Location = new System.Drawing.Point(113, 65);
- this.ptcPassText.Name = "ptcPassText";
- this.ptcPassText.Size = new System.Drawing.Size(100, 20);
- this.ptcPassText.TabIndex = 12;
- //
- // latitudeText
- //
- this.latitudeText.Location = new System.Drawing.Point(113, 91);
- this.latitudeText.Name = "latitudeText";
- this.latitudeText.Size = new System.Drawing.Size(100, 20);
- this.latitudeText.TabIndex = 13;
- //
- // longitudeText
- //
- this.longitudeText.Location = new System.Drawing.Point(113, 117);
- this.longitudeText.Name = "longitudeText";
- this.longitudeText.Size = new System.Drawing.Size(100, 20);
- this.longitudeText.TabIndex = 14;
- //
- // razzmodeCb
- //
- this.razzmodeCb.FormattingEnabled = true;
- this.razzmodeCb.Items.AddRange(new object[] {
- "probability",
- "cp"});
- this.razzmodeCb.Location = new System.Drawing.Point(113, 143);
- this.razzmodeCb.Name = "razzmodeCb";
- this.razzmodeCb.Size = new System.Drawing.Size(100, 21);
- this.razzmodeCb.TabIndex = 15;
- //
- // razzSettingText
- //
- this.razzSettingText.Location = new System.Drawing.Point(113, 170);
- this.razzSettingText.Name = "razzSettingText";
- this.razzSettingText.Size = new System.Drawing.Size(37, 20);
- this.razzSettingText.TabIndex = 16;
- //
- // transferTypeCb
- //
- this.transferTypeCb.FormattingEnabled = true;
- this.transferTypeCb.Items.AddRange(new object[] {
- "none",
- "cp",
- "leaveStrongest",
- "duplicate",
- "all"});
- this.transferTypeCb.Location = new System.Drawing.Point(113, 196);
- this.transferTypeCb.Name = "transferTypeCb";
- this.transferTypeCb.Size = new System.Drawing.Size(100, 21);
- this.transferTypeCb.TabIndex = 17;
- //
- // transferCpThresText
- //
- this.transferCpThresText.Location = new System.Drawing.Point(113, 224);
- this.transferCpThresText.Name = "transferCpThresText";
- this.transferCpThresText.Size = new System.Drawing.Size(100, 20);
- this.transferCpThresText.TabIndex = 18;
- //
- // evolveAllChk
- //
- this.evolveAllChk.AutoSize = true;
- this.evolveAllChk.Location = new System.Drawing.Point(113, 256);
- this.evolveAllChk.Name = "evolveAllChk";
- this.evolveAllChk.Size = new System.Drawing.Size(15, 14);
- this.evolveAllChk.TabIndex = 19;
- this.evolveAllChk.UseVisualStyleBackColor = true;
- //
- // saveBtn
- //
- this.saveBtn.Location = new System.Drawing.Point(75, 276);
- this.saveBtn.Name = "saveBtn";
- this.saveBtn.Size = new System.Drawing.Size(75, 23);
- this.saveBtn.TabIndex = 20;
- this.saveBtn.Text = "Save";
- this.saveBtn.UseVisualStyleBackColor = true;
- this.saveBtn.Click += new System.EventHandler(this.saveBtn_Click);
- //
- // SettingsForm
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(233, 310);
- this.Controls.Add(this.saveBtn);
- this.Controls.Add(this.evolveAllChk);
- this.Controls.Add(this.transferCpThresText);
- this.Controls.Add(this.transferTypeCb);
- this.Controls.Add(this.razzSettingText);
- this.Controls.Add(this.razzmodeCb);
- this.Controls.Add(this.longitudeText);
- this.Controls.Add(this.latitudeText);
- this.Controls.Add(this.ptcPassText);
- this.Controls.Add(this.ptcUserText);
- this.Controls.Add(this.label5);
- this.Controls.Add(this.label4);
- this.Controls.Add(this.label3);
- this.Controls.Add(this.label2);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.longiLabel);
- this.Controls.Add(this.latLabel);
- this.Controls.Add(this.ptcPasswordLabel);
- this.Controls.Add(this.ptcUserLabel);
- this.Controls.Add(this.authTypeCb);
- this.Controls.Add(this.authTypeLabel);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
- this.MaximizeBox = false;
- this.MinimizeBox = false;
- this.Name = "SettingsForm";
- this.Padding = new System.Windows.Forms.Padding(9);
- this.ShowIcon = false;
- this.ShowInTaskbar = false;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "Settings";
- this.Load += new System.EventHandler(this.SettingsForm_Load);
- this.ResumeLayout(false);
- this.PerformLayout();
-
+ this.authTypeLabel = new System.Windows.Forms.Label();
+ this.authTypeCb = new System.Windows.Forms.ComboBox();
+ this.ptcUserLabel = new System.Windows.Forms.Label();
+ this.ptcPasswordLabel = new System.Windows.Forms.Label();
+ this.latLabel = new System.Windows.Forms.Label();
+ this.longiLabel = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.ptcUserText = new System.Windows.Forms.TextBox();
+ this.ptcPassText = new System.Windows.Forms.TextBox();
+ this.latitudeText = new System.Windows.Forms.TextBox();
+ this.longitudeText = new System.Windows.Forms.TextBox();
+ this.razzmodeCb = new System.Windows.Forms.ComboBox();
+ this.razzSettingText = new System.Windows.Forms.TextBox();
+ this.transferTypeCb = new System.Windows.Forms.ComboBox();
+ this.transferCpThresText = new System.Windows.Forms.TextBox();
+ this.evolveAllChk = new System.Windows.Forms.CheckBox();
+ this.saveBtn = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // authTypeLabel
+ //
+ this.authTypeLabel.AutoSize = true;
+ this.authTypeLabel.Location = new System.Drawing.Point(12, 13);
+ this.authTypeLabel.Name = "authTypeLabel";
+ this.authTypeLabel.Size = new System.Drawing.Size(59, 13);
+ this.authTypeLabel.TabIndex = 0;
+ this.authTypeLabel.Text = "Auth Type:";
+ //
+ // authTypeCb
+ //
+ this.authTypeCb.FormattingEnabled = true;
+ this.authTypeCb.Items.AddRange(new object[] {
+ "Ptc",
+ "Google"});
+ this.authTypeCb.Location = new System.Drawing.Point(113, 10);
+ this.authTypeCb.Name = "authTypeCb";
+ this.authTypeCb.Size = new System.Drawing.Size(75, 21);
+ this.authTypeCb.TabIndex = 1;
+ this.authTypeCb.SelectedIndexChanged += new System.EventHandler(this.authTypeCb_SelectedIndexChanged);
+ //
+ // ptcUserLabel
+ //
+ this.ptcUserLabel.AutoSize = true;
+ this.ptcUserLabel.Location = new System.Drawing.Point(12, 42);
+ this.ptcUserLabel.Name = "ptcUserLabel";
+ this.ptcUserLabel.Size = new System.Drawing.Size(77, 13);
+ this.ptcUserLabel.TabIndex = 2;
+ this.ptcUserLabel.Text = "Ptc Username:";
+ //
+ // ptcPasswordLabel
+ //
+ this.ptcPasswordLabel.AutoSize = true;
+ this.ptcPasswordLabel.Location = new System.Drawing.Point(12, 68);
+ this.ptcPasswordLabel.Name = "ptcPasswordLabel";
+ this.ptcPasswordLabel.Size = new System.Drawing.Size(75, 13);
+ this.ptcPasswordLabel.TabIndex = 3;
+ this.ptcPasswordLabel.Text = "Ptc Password:";
+ //
+ // latLabel
+ //
+ this.latLabel.AutoSize = true;
+ this.latLabel.Location = new System.Drawing.Point(12, 94);
+ this.latLabel.Name = "latLabel";
+ this.latLabel.Size = new System.Drawing.Size(48, 13);
+ this.latLabel.TabIndex = 4;
+ this.latLabel.Text = "Latitude:";
+ //
+ // longiLabel
+ //
+ this.longiLabel.AutoSize = true;
+ this.longiLabel.Location = new System.Drawing.Point(12, 120);
+ this.longiLabel.Name = "longiLabel";
+ this.longiLabel.Size = new System.Drawing.Size(57, 13);
+ this.longiLabel.TabIndex = 5;
+ this.longiLabel.Text = "Longitude:";
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(12, 146);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(86, 13);
+ this.label1.TabIndex = 6;
+ this.label1.Text = "Razzberry mode:";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(12, 199);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(76, 13);
+ this.label2.TabIndex = 7;
+ this.label2.Text = "Transfer Type:";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(12, 256);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(103, 13);
+ this.label3.TabIndex = 8;
+ this.label3.Text = "Evolve all pokemon:";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(12, 227);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(98, 13);
+ this.label4.TabIndex = 9;
+ this.label4.Text = "Trsfr CP Threshold:";
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(12, 173);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(93, 13);
+ this.label5.TabIndex = 10;
+ this.label5.Text = "Razzberry Setting:";
+ //
+ // ptcUserText
+ //
+ this.ptcUserText.Location = new System.Drawing.Point(113, 39);
+ this.ptcUserText.Name = "ptcUserText";
+ this.ptcUserText.Size = new System.Drawing.Size(100, 20);
+ this.ptcUserText.TabIndex = 11;
+ //
+ // ptcPassText
+ //
+ this.ptcPassText.Location = new System.Drawing.Point(113, 65);
+ this.ptcPassText.Name = "ptcPassText";
+ this.ptcPassText.Size = new System.Drawing.Size(100, 20);
+ this.ptcPassText.TabIndex = 12;
+ //
+ // latitudeText
+ //
+ this.latitudeText.Location = new System.Drawing.Point(113, 91);
+ this.latitudeText.Name = "latitudeText";
+ this.latitudeText.Size = new System.Drawing.Size(100, 20);
+ this.latitudeText.TabIndex = 13;
+ //
+ // longitudeText
+ //
+ this.longitudeText.Location = new System.Drawing.Point(113, 117);
+ this.longitudeText.Name = "longitudeText";
+ this.longitudeText.Size = new System.Drawing.Size(100, 20);
+ this.longitudeText.TabIndex = 14;
+ //
+ // razzmodeCb
+ //
+ this.razzmodeCb.FormattingEnabled = true;
+ this.razzmodeCb.Items.AddRange(new object[] {
+ "probability",
+ "cp"});
+ this.razzmodeCb.Location = new System.Drawing.Point(113, 143);
+ this.razzmodeCb.Name = "razzmodeCb";
+ this.razzmodeCb.Size = new System.Drawing.Size(100, 21);
+ this.razzmodeCb.TabIndex = 15;
+ //
+ // razzSettingText
+ //
+ this.razzSettingText.Location = new System.Drawing.Point(113, 170);
+ this.razzSettingText.Name = "razzSettingText";
+ this.razzSettingText.Size = new System.Drawing.Size(37, 20);
+ this.razzSettingText.TabIndex = 16;
+ //
+ // transferTypeCb
+ //
+ this.transferTypeCb.FormattingEnabled = true;
+ this.transferTypeCb.Items.AddRange(new object[] {
+ "none",
+ "cp",
+ "leaveStrongest",
+ "duplicate",
+ "all"});
+ this.transferTypeCb.Location = new System.Drawing.Point(113, 196);
+ this.transferTypeCb.Name = "transferTypeCb";
+ this.transferTypeCb.Size = new System.Drawing.Size(100, 21);
+ this.transferTypeCb.TabIndex = 17;
+ //
+ // transferCpThresText
+ //
+ this.transferCpThresText.Location = new System.Drawing.Point(113, 224);
+ this.transferCpThresText.Name = "transferCpThresText";
+ this.transferCpThresText.Size = new System.Drawing.Size(100, 20);
+ this.transferCpThresText.TabIndex = 18;
+ //
+ // evolveAllChk
+ //
+ this.evolveAllChk.AutoSize = true;
+ this.evolveAllChk.Location = new System.Drawing.Point(113, 256);
+ this.evolveAllChk.Name = "evolveAllChk";
+ this.evolveAllChk.Size = new System.Drawing.Size(15, 14);
+ this.evolveAllChk.TabIndex = 19;
+ this.evolveAllChk.UseVisualStyleBackColor = true;
+ //
+ // saveBtn
+ //
+ this.saveBtn.Location = new System.Drawing.Point(75, 276);
+ this.saveBtn.Name = "saveBtn";
+ this.saveBtn.Size = new System.Drawing.Size(75, 23);
+ this.saveBtn.TabIndex = 20;
+ this.saveBtn.Text = "Save";
+ this.saveBtn.UseVisualStyleBackColor = true;
+ this.saveBtn.Click += new System.EventHandler(this.saveBtn_Click);
+ //
+ // SettingsForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(233, 310);
+ this.Controls.Add(this.saveBtn);
+ this.Controls.Add(this.evolveAllChk);
+ this.Controls.Add(this.transferCpThresText);
+ this.Controls.Add(this.transferTypeCb);
+ this.Controls.Add(this.razzSettingText);
+ this.Controls.Add(this.razzmodeCb);
+ this.Controls.Add(this.longitudeText);
+ this.Controls.Add(this.latitudeText);
+ this.Controls.Add(this.ptcPassText);
+ this.Controls.Add(this.ptcUserText);
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.longiLabel);
+ this.Controls.Add(this.latLabel);
+ this.Controls.Add(this.ptcPasswordLabel);
+ this.Controls.Add(this.ptcUserLabel);
+ this.Controls.Add(this.authTypeCb);
+ this.Controls.Add(this.authTypeLabel);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "SettingsForm";
+ this.Padding = new System.Windows.Forms.Padding(9);
+ this.ShowIcon = false;
+ this.ShowInTaskbar = false;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Settings";
+ this.Load += new System.EventHandler(this.SettingsForm_Load);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
}
#endregion
diff --git a/PokemonGo/RocketAPI/Window/SettingsForm.cs b/PokemonGo/RocketAPI/Window/SettingsForm.cs
index 25dd127..c315a6b 100644
--- a/PokemonGo/RocketAPI/Window/SettingsForm.cs
+++ b/PokemonGo/RocketAPI/Window/SettingsForm.cs
@@ -44,25 +44,25 @@ namespace PokemonGo.RocketAPI.Window
Settings.Instance.SetSetting(evolveAllChk.Checked ? "true" : "false", "EvolveAllGivenPokemons");
Settings.Instance.Reload();
Close();
- }
-
- private void authTypeCb_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (authTypeCb.Text == "Google")
- {
- ptcUserText.Visible = false;
- ptcPassText.Visible = false;
- ptcUserLabel.Visible = false;
- ptcPasswordLabel.Visible = false;
- }
- else
- {
- ptcUserText.Visible = true;
- ptcPassText.Visible = true;
- ptcUserLabel.Visible = true;
- ptcPasswordLabel.Visible = true;
-
- }
- }
+ }
+
+ private void authTypeCb_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (authTypeCb.Text == "Google")
+ {
+ ptcUserText.Visible = false;
+ ptcPassText.Visible = false;
+ ptcUserLabel.Visible = false;
+ ptcPasswordLabel.Visible = false;
+ }
+ else
+ {
+ ptcUserText.Visible = true;
+ ptcPassText.Visible = true;
+ ptcUserLabel.Visible = true;
+ ptcPasswordLabel.Visible = true;
+
+ }
+ }
}
}
diff --git a/PokemonGo/RocketAPI/Window/SettingsForm.resx b/PokemonGo/RocketAPI/Window/SettingsForm.resx
index 29dcb1b..1af7de1 100644
--- a/PokemonGo/RocketAPI/Window/SettingsForm.resx
+++ b/PokemonGo/RocketAPI/Window/SettingsForm.resx
@@ -1,120 +1,120 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
- <!--
- Microsoft ResX Schema
-
- Version 2.0
-
- The primary goals of this format is to allow a simple XML format
- that is mostly human readable. The generation and parsing of the
- various data types are done through the TypeConverter classes
- associated with the data types.
-
- Example:
-
- ... ado.net/XML headers & schema ...
- <resheader name="resmimetype">text/microsoft-resx</resheader>
- <resheader name="version">2.0</resheader>
- <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
- <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
- <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
- <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
- <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
- <value>[base64 mime encoded serialized .NET Framework object]</value>
- </data>
- <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
- <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
- <comment>This is a comment</comment>
- </data>
-
- There are any number of "resheader" rows that contain simple
- name/value pairs.
-
- Each data row contains a name, and value. The row also contains a
- type or mimetype. Type corresponds to a .NET class that support
- text/value conversion through the TypeConverter architecture.
- Classes that don't support this are serialized and stored with the
- mimetype set.
-
- The mimetype is used for serialized objects, and tells the
- ResXResourceReader how to depersist the object. This is currently not
- extensible. For a given mimetype the value must be set accordingly:
-
- Note - application/x-microsoft.net.object.binary.base64 is the format
- that the ResXResourceWriter will generate, however the reader can
- read any of the formats listed below.
-
- mimetype: application/x-microsoft.net.object.binary.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.soap.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.bytearray.base64
- value : The object must be serialized into a byte array
- : using a System.ComponentModel.TypeConverter
- : and then encoded with base64 encoding.
- -->
- <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
- <xsd:element name="root" msdata:IsDataSet="true">
- <xsd:complexType>
- <xsd:choice maxOccurs="unbounded">
- <xsd:element name="metadata">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" />
- </xsd:sequence>
- <xsd:attribute name="name" use="required" type="xsd:string" />
- <xsd:attribute name="type" type="xsd:string" />
- <xsd:attribute name="mimetype" type="xsd:string" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="assembly">
- <xsd:complexType>
- <xsd:attribute name="alias" type="xsd:string" />
- <xsd:attribute name="name" type="xsd:string" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="data">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
- <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
- <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="resheader">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- </xsd:complexType>
- </xsd:element>
- </xsd:choice>
- </xsd:complexType>
- </xsd:element>
- </xsd:schema>
- <resheader name="resmimetype">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name="version">
- <value>2.0</value>
- </resheader>
- <resheader name="reader">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name="writer">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
</root>
\ No newline at end of file
You may download the files in Public Git.