public static async Task Execute(ISession session) { var inv = await session.Inventory.GetItems(); if (inv != null) { foreach (var item in inv) { await session.Client.Inventory.RecycleItem(item.ItemId, item.Count); } } var pokes = await session.Inventory.GetPokemons(); if (pokes != null) { foreach (var p in pokes) { await session.Client.Inventory.TransferPokemon(p.Id); } } var navi = new Navigation(session.Client); for (int i = 0; i < 30; i++) { var lat = session.Client.Rnd.NextInRange(-90, 90); var lng = session.Client.Rnd.NextInRange(-180, 180); await navi.HumanPathWalking( session, new GeoCoordinate(lat, lng), 360000, async() => { await CatchNearbyPokemonsTask.Execute(session, default(CancellationToken)); //Catch Incense Pokemon await CatchIncensePokemonsTask.Execute(session, default(CancellationToken)); return(true); }, async() => { await UseNearbyPokestopsTask.Execute(session, default(CancellationToken)); await PokeNearbyGym.Execute(session, default(CancellationToken)); return(true); }, default(CancellationToken) ); } }
private static async Task MoveToPokestop(ISession session, CancellationToken cancellationToken, FortCacheItem pokeStop, List <GeoCoordinate> waypoints, EggWalker eggWalker) { await session.Navigation.Move(new GeoCoordinate(pokeStop.Latitude, pokeStop.Longitude), session.LogicSettings.WalkingSpeedMin, session.LogicSettings.WalkingSpeedMax, async() => { if (session.LogicSettings.CatchWildPokemon) { // Catch normal map Pokemon await CatchNearbyPokemonsTask.Execute(session, cancellationToken); //Catch Incense Pokemon await CatchIncensePokemonsTask.Execute(session, cancellationToken); } return(true); }, async() => { await UseNearbyPokestopsTask.Execute(session, cancellationToken); await PokeNearbyGym.Execute(session, cancellationToken); return(true); }, cancellationToken, session, waypointsToVisit : waypoints, eggWalker : eggWalker); }
private static async Task FollowTheYellowbrickroad(ISession session, CancellationToken cancellationToken, CustomRoute route, Navigation navi, EggWalker eggWalker, string prevRouteName) { var initialize = true; //Find closest point of route and it's index! var closestPoint = await CheckClosestAndMove(session, cancellationToken, route); long nextMaintenceStamp = 0; var sameRoute = true; while (sameRoute) { foreach (var wp in route.RoutePoints) { if (session.ForceMoveTo != null) { break; } if (initialize) { if (wp != closestPoint) { continue; } initialize = false; } if (prevRouteName != session.LogicSettings.CustomRouteName) { sameRoute = false; session.EventDispatcher.Send(new NoticeEvent() { Message = $"Route switched from {prevRouteName} to {session.LogicSettings.CustomRouteName}!" }); break; } session.State = BotState.Walk; var distance = LocationUtils.CalculateDistanceInMeters(session.Client.CurrentLatitude, session.Client.CurrentLongitude, wp.Latitude, wp.Longitude); await navi.HumanPathWalking( session, wp, NextMoveSpeed(session), async() => { await CatchNearbyPokemonsTask.Execute(session, cancellationToken); //Catch Incense Pokemon await CatchIncensePokemonsTask.Execute(session, cancellationToken); return(true); }, async() => { await UseNearbyPokestopsTask.Execute(session, cancellationToken, true); await PokeNearbyGym.Execute(session, cancellationToken); return(true); }, cancellationToken ); session.State = BotState.Idle; await eggWalker.ApplyDistance(distance, cancellationToken); if (nextMaintenceStamp >= DateTime.UtcNow.ToUnixTime() && session.Runtime.StopsHit < 100) { continue; } await MaintenanceTask.Execute(session, cancellationToken); nextMaintenceStamp = DateTime.UtcNow.AddMinutes(3).ToUnixTime(); } if (initialize) { initialize = false; } if (session.ForceMoveTo != null) { await ForceMoveTask.Execute(session, cancellationToken); closestPoint = await CheckClosestAndMove(session, cancellationToken, route); initialize = true; } } }