Esempio n. 1
0
        private static List <SniperInfo> GetSniperInfoFrom_pokezz(ISession session, List <PokemonId> pokemonIds)
        {
            var options = new IO.Options();

            options.Transports = Quobject.Collections.Immutable.ImmutableList.Create <string>("websocket");

            var socket = IO.Socket("http://pokezz.com", options);

            var hasError = true;

            ManualResetEventSlim waitforbroadcast = new ManualResetEventSlim(false);

            List <PokemonLocation_pokezz> pokemons = new List <PokemonLocation_pokezz>();

            socket.On("a", (msg) =>
            {
                hasError = false;
                socket.Close();
                string[] pokemonDefinitions = ((String)msg).Split('~');
                foreach (var pokemonDefinition in pokemonDefinitions)
                {
                    try
                    {
                        string[] pokemonDefinitionElements   = pokemonDefinition.Split('|');
                        PokemonLocation_pokezz pokezzElement = new PokemonLocation_pokezz();
                        pokezzElement.name     = (PokemonId)Convert.ToInt32(pokemonDefinitionElements[0], CultureInfo.InvariantCulture);
                        pokezzElement.lat      = Convert.ToDouble(pokemonDefinitionElements[1], CultureInfo.InvariantCulture);
                        pokezzElement.lng      = Convert.ToDouble(pokemonDefinitionElements[2], CultureInfo.InvariantCulture);
                        pokezzElement.time     = Convert.ToDouble(pokemonDefinitionElements[3], CultureInfo.InvariantCulture);
                        pokezzElement.verified = (pokemonDefinitionElements[4] == "0") ? false : true;
                        pokezzElement.iv       = pokemonDefinitionElements[5];

                        pokemons.Add(pokezzElement);
                    }
                    catch (Exception)
                    {
                        // Just in case Pokezz changes their implementation, let's catch the error and set the error flag.
                        hasError = true;
                    }
                }

                waitforbroadcast.Set();
            });

            socket.On(Quobject.SocketIoClientDotNet.Client.Socket.EVENT_ERROR, () =>
            {
                socket.Close();
                waitforbroadcast.Set();
            });

            socket.On(Quobject.SocketIoClientDotNet.Client.Socket.EVENT_CONNECT_ERROR, () =>
            {
                socket.Close();
                waitforbroadcast.Set();
            });

            waitforbroadcast.Wait(5000); // Wait a maximum of 5 seconds for Pokezz to respond.
            socket.Close();
            if (!hasError)
            {
                foreach (var pokemon in pokemons)
                {
                    var SnipInfo = new SniperInfo();
                    SnipInfo.Id                  = pokemon.name;
                    SnipInfo.Latitude            = pokemon.lat;
                    SnipInfo.Longitude           = pokemon.lng;
                    SnipInfo.TimeStampAdded      = DateTime.Now;
                    SnipInfo.ExpirationTimestamp = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(pokemon.time).ToLocalTime();
                    SnipInfo.IV                  = pokemon._iv;
                    if (pokemon.verified || !session.LogicSettings.GetOnlyVerifiedSniperInfoFromPokezz)
                    {
                        SnipeLocations.Add(SnipInfo);
                    }
                }

                var locationsToSnipe = SnipeLocations?.Where(q =>
                                                             (!session.LogicSettings.UseTransferIvForSnipe ||
                                                              (q.IV == 0 && !session.LogicSettings.SnipeIgnoreUnknownIv) ||
                                                              (q.IV >= session.Inventory.GetPokemonTransferFilter(q.Id).KeepMinIvPercentage)) &&
                                                             !LocsVisited.Contains(new PokemonLocation(q.Latitude, q.Longitude)) &&
                                                             !(q.ExpirationTimestamp != default(DateTime) &&
                                                               q.ExpirationTimestamp > new DateTime(2016) &&
                                                               // make absolutely sure that the server sent a correct datetime
                                                               q.ExpirationTimestamp < DateTime.Now) &&
                                                             (q.Id == PokemonId.Missingno || pokemonIds.Contains(q.Id))).ToList() ??
                                       new List <SniperInfo>();

                return(locationsToSnipe.OrderBy(q => q.ExpirationTimestamp).ToList());
            }
            else
            {
                session.EventDispatcher.Send(new ErrorEvent {
                    Message = "(Pokezz.com) Connection Error"
                });
                return(null);
            }
        }
Esempio n. 2
0
        private static List<SniperInfo> GetSniperInfoFrom_pokezz(ISession session, List<PokemonId> pokemonIds)
        {
            var options = new IO.Options();
            options.Transports = Quobject.Collections.Immutable.ImmutableList.Create<string>("websocket");

            var socket = IO.Socket("http://pokezz.com", options);

            var hasError = true;

            ManualResetEventSlim waitforbroadcast = new ManualResetEventSlim(false);

            List<PokemonLocation_pokezz> pokemons = new List<PokemonLocation_pokezz>();

            socket.On("a", (msg) =>
            {
                hasError = false;
                socket.Close();
                string[] pokemonDefinitions = ((String)msg).Split('~');
                foreach (var pokemonDefinition in pokemonDefinitions)
                {
                    try
                    {
                        string[] pokemonDefinitionElements = pokemonDefinition.Split('|');
                        PokemonLocation_pokezz pokezzElement = new PokemonLocation_pokezz();
                        pokezzElement.name = (PokemonId)Convert.ToInt32(pokemonDefinitionElements[0], CultureInfo.InvariantCulture);
                        pokezzElement.lat = Convert.ToDouble(pokemonDefinitionElements[1], CultureInfo.InvariantCulture);
                        pokezzElement.lng = Convert.ToDouble(pokemonDefinitionElements[2], CultureInfo.InvariantCulture);
                        pokezzElement.time = Convert.ToDouble(pokemonDefinitionElements[3], CultureInfo.InvariantCulture);
                        pokezzElement.verified = (pokemonDefinitionElements[4] == "0") ? false : true;
                        pokezzElement.iv = pokemonDefinitionElements[5];

                        pokemons.Add(pokezzElement);
                    }
                    catch(Exception)
                    {
                        // Just in case Pokezz changes their implementation, let's catch the error and set the error flag.
                        hasError = true;
                    }
                }
                
                waitforbroadcast.Set();
            });

            socket.On(Quobject.SocketIoClientDotNet.Client.Socket.EVENT_ERROR, () =>
            {
                socket.Close();
                waitforbroadcast.Set();
            });

            socket.On(Quobject.SocketIoClientDotNet.Client.Socket.EVENT_CONNECT_ERROR, () =>
            {
                socket.Close();
                waitforbroadcast.Set();
            });

            waitforbroadcast.Wait(5000); // Wait a maximum of 5 seconds for Pokezz to respond.
            socket.Close();
            if (!hasError)
            {
                foreach (var pokemon in pokemons)
                {
                    var SnipInfo = new SniperInfo();
                    SnipInfo.Id = pokemon.name;
                    SnipInfo.Latitude = pokemon.lat;
                    SnipInfo.Longitude = pokemon.lng;
                    SnipInfo.TimeStampAdded = DateTime.Now;
                    SnipInfo.ExpirationTimestamp = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(pokemon.time).ToLocalTime();
                    SnipInfo.IV = pokemon._iv;
                    if (pokemon.verified || !session.LogicSettings.GetOnlyVerifiedSniperInfoFromPokezz)
                        SnipeLocations.Add(SnipInfo);
                }

                var locationsToSnipe = SnipeLocations?.Where(q =>
                    (!session.LogicSettings.UseTransferIvForSnipe ||
                    (q.IV == 0 && !session.LogicSettings.SnipeIgnoreUnknownIv) ||
                    (q.IV >= session.Inventory.GetPokemonTransferFilter(q.Id).KeepMinIvPercentage)) &&
                    !LocsVisited.Contains(new PokemonLocation(q.Latitude, q.Longitude))
                    && !(q.ExpirationTimestamp != default(DateTime) &&
                    q.ExpirationTimestamp > new DateTime(2016) &&
                    // make absolutely sure that the server sent a correct datetime
                    q.ExpirationTimestamp < DateTime.Now) &&
                    (q.Id == PokemonId.Missingno || pokemonIds.Contains(q.Id))).ToList() ??
                    new List<SniperInfo>();

                return locationsToSnipe.OrderBy(q => q.ExpirationTimestamp).ToList();
            }
            else
            {
                session.EventDispatcher.Send(new ErrorEvent {Message = "(Pokezz.com) Connection Error"});
                return null;
            }
        }