本文整理汇总了C#中Client.GetFort方法的典型用法代码示例。如果您正苦于以下问题:C# Client.GetFort方法的具体用法?C# Client.GetFort怎么用?C# Client.GetFort使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Client
的用法示例。
在下文中一共展示了Client.GetFort方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ExecuteFarmingPokestops
private static async Task ExecuteFarmingPokestops(Client client)
{
var mapObjects = await client.GetMapObjects();
var pokeStops = mapObjects.Payload[0].Profile.SelectMany(i => i.Fort).Where(i => i.FortType == (int)MiscEnums.FortType.CHECKPOINT && i.CooldownCompleteMs < DateTime.UtcNow.ToUnixTime());
foreach (var pokeStop in pokeStops)
{
var update = await client.UpdatePlayerLocation(pokeStop.Latitude, pokeStop.Longitude);
var fortInfo = await client.GetFort(pokeStop.FortId, pokeStop.Latitude, pokeStop.Longitude);
var fortSearch = await client.SearchFort(pokeStop.FortId, pokeStop.Latitude, pokeStop.Longitude);
var bag = fortSearch.Payload[0];
System.Console.WriteLine($"Farmed XP: {bag.XpAwarded}, Gems: { bag.GemsAwarded}, Eggs: {bag.EggPokemon} Items: {GetFriendlyItemsString(bag.Items)}");
await Task.Delay(15000);
}
}
示例2: ExecuteFarmingPokestopsAndPokemons
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);
System.Console.WriteLine($"[{DateTime.Now.ToString("HH:mm:ss")}] Farmed XP: {fortSearch.ExperienceAwarded}, Gems: { fortSearch.GemsAwarded}, Eggs: {fortSearch.PokemonDataEgg} Items: {StringUtils.GetSummedFriendlyNameOfItemAwardList(fortSearch.ItemsAwarded)}");
await Task.Delay(15000);
await ExecuteCatchAllNearbyPokemons(client);
}
}
示例3: ExecuteFarmingPokestopsAndPokemons
private static 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(ConsoleColor.Cyan, PokeStopOutput.ToString());
if (fortSearch.ExperienceAwarded != 0)
TotalExperience += (fortSearch.ExperienceAwarded);
await Task.Delay(15000);
await ExecuteCatchAllNearbyPokemons(client);
}
}
示例4: ExecuteFarmingPokestopsAndPokemons
private async Task ExecuteFarmingPokestopsAndPokemons(Client client, IEnumerable<FortData> pokeStops = null)
{
var mapObjects = await client.GetMapObjects();
if (pokeStops == null)
{
pokeStops = mapObjects.MapCells.SelectMany(i => i.Forts).Where(i => i.Type == FortType.Checkpoint && i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime());
}
HashSet<FortData> pokeStopSet = new HashSet<FortData>(pokeStops);
IEnumerable<FortData> nextPokeStopList = null;
ColoredConsoleWrite(Color.Cyan, $"Visiting {pokeStops.Count()} PokeStops");
foreach (var pokeStop in pokeStops)
{
double pokeStopDistance = locationManager.getDistance(pokeStop.Latitude, pokeStop.Longitude);
await locationManager.update(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);
var pokeStopMapObjects = await client.GetMapObjects();
/* Gets all pokeStops near this pokeStop which are not in the set of pokeStops being currently
* traversed and which are ready to be farmed again. */
var pokeStopsNearPokeStop = pokeStopMapObjects.MapCells.SelectMany(i => i.Forts).Where(i =>
i.Type == FortType.Checkpoint
&& i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime()
&& !pokeStopSet.Contains(i)
);
/* We choose the longest list of farmable PokeStops to traverse next, though we could use a different
* criterion, such as the number of PokeStops with lures in the list.*/
if (pokeStopsNearPokeStop.Count() > (nextPokeStopList == null ? 0 : nextPokeStopList.Count()))
{
nextPokeStopList = pokeStopsNearPokeStop;
}
await ExecuteCatchAllNearbyPokemons(client);
}
if (nextPokeStopList != null)
{
client.RecycleItems(client);
await ExecuteFarmingPokestopsAndPokemons(client, nextPokeStopList);
}
}
示例5: ForceUnban
private async Task ForceUnban(Client client)
{
if (!ForceUnbanning && !Stopping)
{
ColoredConsoleWrite(Color.LightGreen, "Waiting for last farming action to be complete...");
ForceUnbanning = true;
while (FarmingStops || FarmingPokemons)
{
await Task.Delay(25);
}
ColoredConsoleWrite(Color.LightGreen, "Starting force unban...");
pokestopsOverlay.Routes.Clear();
pokestopsOverlay.Markers.Clear();
bool done = false;
foreach (var pokeStop in pokeStops)
{
if (pokeStop.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime())
{
await locationManager.update(pokeStop.Latitude, pokeStop.Longitude);
UpdatePlayerLocation(pokeStop.Latitude, pokeStop.Longitude);
UpdateMap();
var fortInfo = await client.GetFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
if (fortInfo.Name != string.Empty)
{
ColoredConsoleWrite(Color.LightGreen, "Chosen PokeStop " + fortInfo.Name + " for force unban");
for (int i = 1; i <= 50; i++)
{
var fortSearch = await client.SearchFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
if (fortSearch.ExperienceAwarded == 0)
{
ColoredConsoleWrite(Color.LightGreen, "Attempt: " + i);
}
else
{
ColoredConsoleWrite(Color.LightGreen, "Fuck yes, you are now unbanned! Total attempts: " + i);
done = true;
break;
}
}
if (done)
break;
}
}
}
if (!done)
ColoredConsoleWrite(Color.LightGreen, "Force unban failed, please try again.");
ForceUnbanning = false;
}
else
{
ColoredConsoleWrite(Color.Red, "A action is in play... Please wait.");
}
}
示例6: ExecuteFarmingPokestopsAndPokemons
private async Task ExecuteFarmingPokestopsAndPokemons(Client client)
{
var mapObjects = await client.GetMapObjects();
FortData[] rawPokeStops = mapObjects.MapCells.SelectMany(i => i.Forts).Where(i => i.Type == FortType.Checkpoint && i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime()).ToArray();
if (rawPokeStops == null || rawPokeStops.Count() <= 0)
{
ColoredConsoleWrite(Color.Red, $"No PokeStops to visit here, please stop the bot and change your location.");
return;
}
pokeStops = rawPokeStops;
UpdateMap();
ColoredConsoleWrite(Color.Cyan, $"Finding fastest route through all PokeStops..");
LatLong startingLatLong = new LatLong(ClientSettings.DefaultLatitude, ClientSettings.DefaultLongitude);
pokeStops = RouteOptimizer.Optimize(rawPokeStops, startingLatLong, pokestopsOverlay);
wildPokemons = mapObjects.MapCells.SelectMany(i => i.WildPokemons);
if (!ForceUnbanning && !Stopping)
ColoredConsoleWrite(Color.Cyan, $"Visiting {pokeStops.Count()} PokeStops");
UpdateMap();
foreach (var pokeStop in pokeStops)
{
if (ForceUnbanning || Stopping)
break;
FarmingStops = true;
await locationManager.update(pokeStop.Latitude, pokeStop.Longitude);
UpdatePlayerLocation(pokeStop.Latitude, pokeStop.Longitude);
UpdateMap();
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);
pokeStop.CooldownCompleteTimestampMs = DateTime.UtcNow.ToUnixTime() + 300000;
if (ClientSettings.CatchPokemon)
await ExecuteCatchAllNearbyPokemons(client);
}
FarmingStops = false;
if (!ForceUnbanning && !Stopping)
{
client.RecycleItems(client);
await ExecuteFarmingPokestopsAndPokemons(client);
}
}
示例7: ExecuteFarmingPokestopsAndPokemons
private static 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($"[{DateTime.Now.ToString("HH:mm:ss")}] ");
if (fortInfo.Name != Empty)
PokeStopOutput.Write(Language.GetPhrases()["pokestop"].Replace("[pokestop]", fortInfo.Name));
if (fortSearch.ExperienceAwarded != 0)
PokeStopOutput.Write($", {Language.GetPhrases()["xp"].Replace("[xp]", Convert.ToString(fortSearch.ExperienceAwarded))}");
if (fortSearch.GemsAwarded != 0)
PokeStopOutput.Write($", {Language.GetPhrases()["gem"].Replace("[gem]", Convert.ToString(fortSearch.GemsAwarded))}");
if (fortSearch.PokemonDataEgg != null)
PokeStopOutput.Write($", {Language.GetPhrases()["egg"].Replace("[egg]", Convert.ToString(fortSearch.PokemonDataEgg))}");
if (GetFriendlyItemsString(fortSearch.ItemsAwarded) != Empty)
PokeStopOutput.Write($", {Language.GetPhrases()["item"].Replace("[item]", GetFriendlyItemsString(fortSearch.ItemsAwarded))}");
ColoredConsoleWrite(ConsoleColor.Cyan, PokeStopOutput.ToString());
if (fortSearch.ExperienceAwarded != 0)
_totalExperience += (fortSearch.ExperienceAwarded);
await Task.Delay(15000);
await ExecuteCatchAllNearbyPokemons(client);
}
}
示例8: ExecuteFarmingPokestopsAndPokemons
private static async Task ExecuteFarmingPokestopsAndPokemons(Client client)
{
await Task.Delay(defaultDelay); ColoredConsoleWrite(ConsoleColor.White, $"GetMapObjects (Pokestops)");
var mapObjects = await client.GetMapObjects();
var pokeStops = mapObjects.MapCells.SelectMany(i => i.Forts).Where(i => i.Type == FortType.Checkpoint && i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime());
ColoredConsoleWrite(ConsoleColor.Red, $"[{DateTime.Now.ToString("HH:mm:ss")}] Number of Pokestop: {pokeStops.Count()}");
Location startLocation = new Location(client.getCurrentLat(), client.getCurrentLng());
IList<FortData> query = pokeStops.ToList();
while (query.Count > 10) //Ignore last 10 pokestop, usually far away
{
startLocation = new Location(client.getCurrentLat(), client.getCurrentLng());
query = query.OrderBy(pS => Spheroid.CalculateDistanceBetweenLocations(startLocation, new Location(pS.Latitude, pS.Longitude))).ToList();
var pokeStop = query.First();
query.RemoveAt(0);
Location endLocation = new Location(pokeStop.Latitude, pokeStop.Longitude);
var distanceToPokestop = Spheroid.CalculateDistanceBetweenLocations(startLocation, endLocation);
await Task.Delay(defaultDelay); ColoredConsoleWrite(ConsoleColor.White, $"UpdatePlayerLocation");
var update = await client.UpdatePlayerLocation(endLocation.latitude, endLocation.longitude);
ColoredConsoleWrite(ConsoleColor.White, $"[{DateTime.Now.ToString("HH:mm:ss")}] Moved {(int)distanceToPokestop}m, wait {25.0 * (int)distanceToPokestop}ms, Number of Pokestop in this zone: {query.Count}");
int delay = (int)(25.0 * distanceToPokestop);
if (delay < defaultDelay) delay = defaultDelay;
await Task.Delay(delay); ColoredConsoleWrite(ConsoleColor.White, $"fortInfo");
var fortInfo = await client.GetFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
await Task.Delay(defaultDelay); ColoredConsoleWrite(ConsoleColor.White, $"fortSearch");
var fortSearch = await client.SearchFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
StringWriter PokeStopOutput = new StringWriter();
PokeStopOutput.Write($"[{DateTime.Now.ToString("HH:mm:ss")}] ");
if (fortInfo.Name != string.Empty)
PokeStopOutput.Write(Language.GetPhrases()["pokestop"].Replace("[pokestop]", fortInfo.Name));
if (fortSearch.ExperienceAwarded != 0)
PokeStopOutput.Write($", {Language.GetPhrases()["xp"].Replace("[xp]", Convert.ToString(fortSearch.ExperienceAwarded))}");
if (fortSearch.GemsAwarded != 0)
PokeStopOutput.Write($", {Language.GetPhrases()["gem"].Replace("[gem]", Convert.ToString(fortSearch.GemsAwarded))}");
if (fortSearch.PokemonDataEgg != null)
PokeStopOutput.Write($", {Language.GetPhrases()["egg"].Replace("[egg]", Convert.ToString(fortSearch.PokemonDataEgg))}");
if (GetFriendlyItemsString(fortSearch.ItemsAwarded) != string.Empty)
PokeStopOutput.Write($", {Language.GetPhrases()["item"].Replace("[item]", GetFriendlyItemsString(fortSearch.ItemsAwarded))}");
ColoredConsoleWrite(ConsoleColor.Cyan, PokeStopOutput.ToString());
expDone += fortSearch.ExperienceAwarded;
ColoredConsoleWrite(ConsoleColor.Red, $"Exp/H: {expDone/GetRuntime()}");
if (fortSearch.ExperienceAwarded != 0)
TotalExperience += (fortSearch.ExperienceAwarded);
await ExecuteCatchAllNearbyPokemons(client);
}
ColoredConsoleWrite(ConsoleColor.White, $"[{DateTime.Now.ToString("HH:mm:ss")}] Finished pokestop route, reset position and restart.");
}
示例9: ExecuteFarmingPokestopsAndPokemons
private async Task ExecuteFarmingPokestopsAndPokemons(Client client)
{
var distanceFromStart = LocationUtils.CalculateDistanceInMeters(_clientSettings.DefaultLatitude, _clientSettings.DefaultLongitude, _client.CurrentLat, _client.CurrentLng);
if (_clientSettings.MaxWalkingRadiusInMeters != 0 && distanceFromStart > _clientSettings.MaxWalkingRadiusInMeters)
{
Logger.ColoredConsoleWrite(ConsoleColor.Green, "Youre outside of the defined Max Walking Radius. Walking back!");
var update = await _navigation.HumanLikeWalking(new GeoCoordinate(_clientSettings.DefaultLatitude, _clientSettings.DefaultLongitude), _clientSettings.WalkingSpeedInKilometerPerHour, null);
var start = await _navigation.HumanLikeWalking(new GeoCoordinate(_clientSettings.DefaultLatitude, _clientSettings.DefaultLongitude), _clientSettings.WalkingSpeedInKilometerPerHour, ExecuteCatchAllNearbyPokemons);
}
Resources.OutPutWalking = true;
var mapObjects = await client.GetMapObjects();
//var pokeStops = mapObjects.MapCells.SelectMany(i => i.Forts).Where(i => i.Type == FortType.Checkpoint && i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime());
var pokeStops =
_navigation.pathByNearestNeighbour(
mapObjects.MapCells.SelectMany(i => i.Forts)
.Where(
i =>
i.Type == FortType.Checkpoint &&
i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime())
.OrderBy(
i =>
LocationUtils.CalculateDistanceInMeters(_client.CurrentLat, _client.CurrentLng, i.Latitude, i.Longitude)).ToArray(), _clientSettings.WalkingSpeedInKilometerPerHour);
if (_clientSettings.MaxWalkingRadiusInMeters != 0)
{
pokeStops = pokeStops.Where(i => LocationUtils.CalculateDistanceInMeters(_client.CurrentLat, _client.CurrentLng, i.Latitude, i.Longitude) <= _clientSettings.MaxWalkingRadiusInMeters).ToArray();
if (pokeStops.Count() == 0)
{
Logger.ColoredConsoleWrite(ConsoleColor.Red, "We cant find any PokeStops in a range of " + _clientSettings.MaxWalkingRadiusInMeters + "m!");
}
}
if (pokeStops.Count() == 0)
{
Logger.ColoredConsoleWrite(ConsoleColor.Red, "We cant find any PokeStops, which are unused! Probably Server unstable, or you visted them all. Retrying..");
await ExecuteCatchAllNearbyPokemons();
}
else
{
Logger.ColoredConsoleWrite(ConsoleColor.Yellow, "We found " + pokeStops.Count() + " PokeStops near.");
}
foreach (var pokeStop in pokeStops)
{
await ExecuteCatchAllNearbyPokemons();
count++;
if (count >= 3)
{
count = 0;
await StatsLog(client);
if (_clientSettings.EvolvePokemonsIfEnoughCandy)
{
await EvolveAllPokemonWithEnoughCandy();
}
await TransferDuplicatePokemon(true);
await RecycleItems();
}
var distance = LocationUtils.CalculateDistanceInMeters(_client.CurrentLat, _client.CurrentLng, pokeStop.Latitude, pokeStop.Longitude);
var fortInfo = await client.GetFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
Logger.ColoredConsoleWrite(ConsoleColor.Green, $"Next Pokestop: {fortInfo.Name} in {distance:0.##}m distance.");
var update = await _navigation.HumanLikeWalking(new GeoCoordinate(pokeStop.Latitude, pokeStop.Longitude), _clientSettings.WalkingSpeedInKilometerPerHour, ExecuteCatchAllNearbyPokemons);
////var fortInfo = await client.GetFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
var fortSearch = await client.SearchFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
if (fortSearch.ExperienceAwarded > 0)
{
_botStats.addExperience(fortSearch.ExperienceAwarded);
Logger.ColoredConsoleWrite(ConsoleColor.Green, $"Farmed XP: {fortSearch.ExperienceAwarded}, Gems: { fortSearch.GemsAwarded}, Eggs: {fortSearch.PokemonDataEgg} Items: {StringUtils.GetSummedFriendlyNameOfItemAwardList(fortSearch.ItemsAwarded)}", LogLevel.Info);
}
await RandomHelper.RandomDelay(50, 200);
}
if (_clientSettings.WalkBackToDefaultLocation)
{
Logger.ColoredConsoleWrite(ConsoleColor.Green, "Walking back to Default Location.");
await _navigation.HumanLikeWalking(new GeoCoordinate(_clientSettings.DefaultLatitude, _clientSettings.DefaultLongitude), _clientSettings.WalkingSpeedInKilometerPerHour, ExecuteCatchAllNearbyPokemons);
}
}
示例10: ForceUnban
private async Task ForceUnban(Client client)
{
if (!ForceUnbanning && !Stopping)
{
ColoredConsoleWrite(Color.LightGreen, "Waiting for last farming action to be complete...");
ForceUnbanning = true;
while (FarmingStops || FarmingPokemons)
{
await Task.Delay(25);
}
ColoredConsoleWrite(Color.LightGreen, "Starting force unban...");
var mapObjects = await client.GetMapObjects();
var pokeStops = mapObjects.MapCells.SelectMany(i => i.Forts).Where(i => i.Type == FortType.Checkpoint && i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime());
await Task.Delay(10000);
bool done = false;
foreach (var pokeStop in pokeStops)
{
double pokeStopDistance = locationManager.getDistance(pokeStop.Latitude, pokeStop.Longitude);
await locationManager.update(pokeStop.Latitude, pokeStop.Longitude);
var fortInfo = await client.GetFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
if (fortInfo.Name != string.Empty)
{
ColoredConsoleWrite(Color.LightGreen, "Chosen PokeStop " + fortInfo.Name + " for force unban");
for (int i = 1; i <= 50; i++)
{
var fortSearch = await client.SearchFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
if (fortSearch.ExperienceAwarded == 0)
{
ColoredConsoleWrite(Color.LightGreen, "Attempt: " + i);
}
else
{
ColoredConsoleWrite(Color.LightGreen, "Fuck yes, you are now unbanned! Total attempts: " + i);
done = true;
break;
}
}
}
if (!done)
ColoredConsoleWrite(Color.LightGreen, "Force unban failed, please try again.");
ForceUnbanning = false;
break;
}
}
else
{
ColoredConsoleWrite(Color.Red, "A action is in play... Please wait.");
}
}
示例11: ExecuteFarmingPokestopsAndPokemons
private async Task ExecuteFarmingPokestopsAndPokemons(Client client, IEnumerable<FortData> pokeStops = null)
{
double maxDist = 99999999; //max dist in km
double defLatitude = ClientSettings.DefaultLatitude;
double defLongitude = ClientSettings.DefaultLongitude;
bool catchPokemons = ClientSettings.CatchPokemon;
FortSearchResponse fortSearch;
var mapObjects = await client.GetMapObjects();
if (pokeStops == null)
{
pokeStops = mapObjects.MapCells.SelectMany(i => i.Forts).Where(
i => i.Type == FortType.Checkpoint && distanceFrom(i.Latitude, i.Longitude, defLatitude, defLongitude) < maxDist).ToList();
}
// pokeStops.ToList().ForEach(i => i.CooldownCompleteTimestampMs = 0);
if (!ForceUnbanning && !Stopping)
ColoredConsoleWrite(Color.Cyan, $"Visiting {pokeStops.Count()} PokeStops");
do
{
var PossiblePokestops = pokeStops.
Where(i => i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime()).OrderBy(i => locationManager.getDistance(i.Latitude, i.Longitude)).ToList();
//ColoredConsoleWrite(Color.Yellow, "Pokestop near " + pokeStops.Where(i => distanceFrom(i.Latitude, i.Longitude, ClientSettings.DefaultLatitude, ClientSettings.DefaultLongitude) < maxDist).Count());
if (PossiblePokestops.Count() < 1)
PossiblePokestops = pokeStops.
Where(i => distanceFrom(i.Latitude, i.Longitude, defLatitude, defLongitude) < maxDist)
.OrderBy(i => i.CooldownCompleteTimestampMs).ToList();
if (PossiblePokestops.Count() < 1)
{
ColoredConsoleWrite(Color.Red, $"Please choice a spot with at least 1 pokestop");
return;
}
var pokeStop = PossiblePokestops.First();
FarmingStops = true;
await locationManager.update(pokeStop.Latitude, pokeStop.Longitude);
var fortInfo = await client.GetFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
int wait = 300;
do
{
await Task.Delay(wait);
wait += wait;
fortSearch = await client.SearchFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
PrintPokestopTakeInfos(fortInfo, fortSearch);
}
while (fortSearch.ExperienceAwarded == 0 && !ForceUnbanning && !Stopping);
pokeStop.CooldownCompleteTimestampMs = DateTime.UtcNow.AddMinutes(5).ToUnixTime();
var pokeStopMapObjects = await client.GetMapObjects();
///* Gets all pokeStops near this pokeStop which are not in the set of pokeStops being currently
// * traversed and which are ready to be farmed again. */
var pokeStopsNearPokeStop = pokeStopMapObjects.MapCells.SelectMany(i => i.Forts).Where(i =>
i.Type == FortType.Checkpoint).ToList();
var ids = pokeStops.Select(p => p.Id).ToList();
var items = pokeStopsNearPokeStop.Where(i => !ids.Contains(i.Id) && distanceFrom(i.Latitude, i.Longitude, defLatitude, defLongitude) < maxDist ).ToList();
pokeStops = pokeStops.Concat(items);
// ColoredConsoleWrite(Color.Yellow, "Pokestop count " + pokeStops.Count());
/* We choose the longest list of farmable PokeStops to traverse next, though we could use a different
* criterion, such as the number of PokeStops with lures in the list.*/
//if (pokeStopsNearPokeStop.Count() > (nextPokeStopList == null ? 0 : nextPokeStopList.Count()))
//{
// nextPokeStopList = pokeStopsNearPokeStop;
//}
if (catchPokemons)
await ExecuteCatchAllNearbyPokemons(client, pokeStopMapObjects);
} while (!ForceUnbanning && !Stopping);
FarmingStops = false;
}
示例12: ForceUnban
private async Task ForceUnban(Client client)
{
if (!ForceUnbanning && !Stopping)
{
ColoredConsoleWrite(Color.LightGreen, Properties.Strings.waiting_farming);
ForceUnbanning = true;
while (FarmingStops || FarmingPokemons)
{
await Task.Delay(25);
}
ColoredConsoleWrite(Color.LightGreen, Properties.Strings.start_unban);
pokestopsOverlay.Routes.Clear();
pokestopsOverlay.Markers.Clear();
bool done = false;
foreach (var pokeStop in pokeStops)
{
if (pokeStop.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime())
{
await locationManager.update(pokeStop.Latitude, pokeStop.Longitude);
UpdatePlayerLocation(pokeStop.Latitude, pokeStop.Longitude);
UpdateMap();
var fortInfo = await client.GetFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
if (fortInfo.Name != string.Empty)
{
ColoredConsoleWrite(Color.LightGreen, string.Format(Properties.Strings.chose_pokestop, fortInfo.Name));
for (int i = 1; i <= 50; i++)
{
var fortSearch = await client.SearchFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
if (fortSearch.ExperienceAwarded == 0)
{
ColoredConsoleWrite(Color.LightGreen, Properties.Strings.attempt + i);
}
else
{
ColoredConsoleWrite(Color.LightGreen, Properties.Strings.unbanned + i);
done = true;
break;
}
}
if (done)
break;
}
}
}
if (!done)
ColoredConsoleWrite(Color.LightGreen, Properties.Strings.unban_failed);
ForceUnbanning = false;
}
else
{
ColoredConsoleWrite(Color.Red, Properties.Strings.action_in_play);
}
}
示例13: ExecuteFarmingPokestopsAndPokemons
private async Task ExecuteFarmingPokestopsAndPokemons(Client client)
{
var mapObjects = await client.GetMapObjects();
FortData[] rawPokeStops = mapObjects.MapCells.SelectMany(i => i.Forts).Where(i => i.Type == FortType.Checkpoint && i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime()).ToArray();
pokeStops = PokeStopOptimizer.Optimize(rawPokeStops, ClientSettings.DefaultLatitude, ClientSettings.DefaultLongitude, pokestopsOverlay);
wildPokemons = mapObjects.MapCells.SelectMany(i => i.WildPokemons);
if (!ForceUnbanning && !Stopping)
ColoredConsoleWrite(Color.Cyan, string.Format(Properties.Strings.visiting_pokestops, pokeStops.Count()));
UpdateMap();
foreach (var pokeStop in pokeStops)
{
if (ForceUnbanning || Stopping)
break;
FarmingStops = true;
await locationManager.update(pokeStop.Latitude, pokeStop.Longitude);
UpdatePlayerLocation(pokeStop.Latitude, pokeStop.Longitude);
UpdateMap();
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(Properties.Strings.pokestop + fortInfo.Name);
if (fortSearch.ExperienceAwarded != 0)
PokeStopOutput.Write(string.Format(Properties.Strings.xp, fortSearch.ExperienceAwarded));
if (fortSearch.GemsAwarded != 0)
PokeStopOutput.Write(string.Format(Properties.Strings.gems, fortSearch.GemsAwarded));
if (fortSearch.PokemonDataEgg != null)
PokeStopOutput.Write(string.Format(Properties.Strings.eggs, fortSearch.PokemonDataEgg));
if (GetFriendlyItemsString(fortSearch.ItemsAwarded) != string.Empty)
PokeStopOutput.Write(string.Format(Properties.Strings.items, GetFriendlyItemsString(fortSearch.ItemsAwarded)));
ColoredConsoleWrite(Color.Cyan, PokeStopOutput.ToString());
if (fortSearch.ExperienceAwarded != 0)
TotalExperience += (fortSearch.ExperienceAwarded);
pokeStop.CooldownCompleteTimestampMs = DateTime.UtcNow.ToUnixTime() + 300000;
if (ClientSettings.CatchPokemon)
await ExecuteCatchAllNearbyPokemons(client);
}
FarmingStops = false;
if (!ForceUnbanning && !Stopping)
{
client.RecycleItems(client);
await ExecuteFarmingPokestopsAndPokemons(client);
}
}