コード例 #1
0
        private void GetNameBySpyinit()
        {
            if (!InitSpy)
            {
                // Clear memomry
                playerMapp  = null;
                planeteMapp = null;
                lastPlayer  = null;

                // Get planet wihtout name and quest
                List <Planet>        listPlanete     = new List <Planet>();
                IEnumerable <Player> listPlayerQuest = new PlayerAction().GetPlayerQuestWithoutName();
                foreach (Player player in listPlayerQuest)
                {
                    if (player.Planets.Count != 0)
                    {
                        listPlanete.Add(player.Planets[0]);
                    }
                }
                spy     = new Spy(listPlanete);
                InitSpy = true;
            }
        }
コード例 #2
0
        public void GetNameByMessage(Main mainForm)
        {
            if (nav.NavigationPage(mainForm.webBrowserMain, urlMessageSpy))
            {
                if (!messageRead)
                {
                    HtmlDocument          htmlDoc   = mainForm.webBrowserMain.Document;
                    HtmlElementCollection listTable = htmlDoc.GetElementsByTagName("table");

                    // drop start and end
                    int nbMessage = listTable[2].Children[0].Children.Count - 2;

                    Dictionary <string, object> messageIds = new Dictionary <string, object>();
                    //Start at 1 (0 is header)
                    if (nbMessage == 1)
                    {
                        mainForm.action = Action.UNKNOW;
                        nav.NavigationPage(mainForm.webBrowserMain, urlMessageSpy);
                        return;
                    }

                    for (int i = 1; i <= nbMessage; i++)
                    {
                        listTable[2].Children[0].Children[i].Children[0].Children[0].SetAttribute("checked", "checked");

                        // Get player by planet
                        Planet planet = null;


                        var   text                   = listTable[2].Children[0].Children[i].InnerText;
                        var   namePlayer             = Regex.Match(text, @"\(([^)]*)\)").Groups[1].Value;
                        var   positionPlayer         = Regex.Match(text, @"\[([^)]*)\]").Groups[1].Value;
                        var   positionSeparateString = positionPlayer.Split(':');
                        int[] positionSeparate       = Array.ConvertAll(positionSeparateString, int.Parse);

                        //update player
                        var messageId = listTable[2].Children[0].Children[i].Children[0].Children[0].GetAttribute("name");
                        messageIds.Add(messageId, "on");
                        planet = new PlanetAction().GetPlanetByPosition(positionSeparate[0], positionSeparate[1], positionSeparate[2]);
                        PlayerAction playerAction = new PlayerAction();
                        var          player       = playerAction.GetPlayerById(planet.PlayerId);
                        player.Name = namePlayer;
                        playerAction.UpdatePlayer(player);
                    }

                    // Click "Voir les messages
                    var listElement = htmlDoc.GetElementsByTagName("input");
                    foreach (HtmlElement item in listElement)
                    {
                        bool boutonReadFound = item.OuterHtml.Contains("value=Lire");
                        if (boutonReadFound)
                        {
                            nav.InvokeMember(item, "click");
                            messageRead = true;
                        }
                    }
                }
                else
                {
                    messageRead = false;
                    nav.NavigationPage(mainForm.webBrowserMain, urlBase + "messagerie_delester.php?cat=Espio");
                }
            }
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: k0nsun/ORScrapping
        public static void MergeBDD()
        {
            DataAccess db = new DataAccess();

            Dictionary <int, IList <Planet> > QuestMaybe = new Dictionary <int, IList <Planet> >();

            var allQuest = db.GetAllQuestDetails();
            var count2   = allQuest.Count();

            allQuest = allQuest.Where(x => !QueteAlreadyProcess.Any(y => y == x.IDQuete));
            count2   = allQuest.Count();
            var allQuestGroupBy = allQuest.GroupBy(x => x.IDQuete);

            QuestError.Clear();


            foreach (IEnumerable <QueteDetails> queteDetails in allQuestGroupBy)
            {
                List <Planet> temp    = new List <Planet>();
                bool          add     = false;
                int           groupby = 1;
                int           count   = 1;
                foreach (QueteDetails details in queteDetails)
                {
                    string sanitiseName = string.Empty;
                    var    temp2        = details.Nom.Split('.');
                    if (temp2.Count() > 2)
                    {
                        details.Nom = temp2[0].Substring(0, temp2[0].Count() - 2);
                    }

                    var planets = new PlanetAction().SearchByNameQuest(details.Nom.Trim());
                    if (planets.Count() == 0)
                    {
                        // planete non reconnu
                        continue;
                    }
                    else if (planets.Count() > 1)
                    {
                        if (temp.Count == 0)
                        {
                            temp.AddRange(planets.ToList());
                            continue;
                        }
                        else
                        {
                            count++;
                            temp.AddRange(planets.ToList());
                            var groupByPlayerTemp = temp.GroupBy(x => x.PlayerId);
                            var player2           = groupByPlayerTemp.Where(x => x.Count() > groupby);
                            var player3           = player2.Where(x => x.Any(b => b.Name.ToLower() == details.Nom));
                            if (player2.Count() == 0)
                            {
                                continue;
                            }
                            else if (player2.Count() == 1)
                            {
                                planets = player2.First();
                                add     = true;
                            }
                            else
                            {
                                if (count == queteDetails.Count())
                                {
                                    planets = player2.First();
                                    add     = true;
                                }

                                temp = new List <Planet>();
                                foreach (var item in player2)
                                {
                                    temp.AddRange(item);
                                }
                            }
                        }
                    }
                    else
                    {
                        add = true;
                    }



                    if (add)
                    {
                        var   quete = db.GetQuestById(details.IDQuete);
                        Quest quest = new Quest()
                        {
                            Name              = quete.Nom,
                            RewardTypeId      = quete.IDTypeRecompense,
                            ProfitId          = quete.IDNomRecompense,
                            ProfitTypeId      = quete.IDTypeGain,
                            ValueProfit       = (Int16)quete.Valeur,
                            DurationProfil    = (Int16)quete.Duree,
                            HasSoldier        = quete.Soldat,
                            HasSpaceship      = quete.Flotte,
                            HasDefense        = quete.Defense,
                            HasExploration    = quete.Exploration,
                            Comment           = quete.Commentaire,
                            Visible           = quete.Visible,
                            ProfilOldDatabase = quete.RecompenseDetail,
                            PlayerId          = planets.First().PlayerId
                        };

                        try
                        {
                            new QuestAction().AddQuest(quest);
                            QueteAlreadyProcess.Add(quete.ID);
                            break;
                        }
                        catch
                        {
                            if (!QuestAddBug.Contains(quete.ID))
                            {
                                QuestAddBug.Add(quete.ID);
                            }
                        }
                    }
                }

                if (!add)
                {
                    if (!QuestError.Contains(queteDetails.First().IDQuete))
                    {
                        QuestError.Add(queteDetails.First().IDQuete);
                    }
                }
            }
        }
コード例 #4
0
        public void Search(Main mainForm)
        {
            // on regarde initialise la page au debut
            if (!ProcessInit)
            {
                mainForm.action = Action.updatePlayerIdUnique;
                Initialisation(mainForm);
                return;
            }
            if (GalaxyNavigation <= GalaxyMax)
            {
                // on est actuellement au coordonnées suivantes
                string galaxieActual = mainForm.webBrowserMain.Document.GetElementById("galaxi").GetAttribute("value");
                string systemActual  = mainForm.webBrowserMain.Document.GetElementById("system").GetAttribute("value");

                // on recupere l'ID parent le plus proche des planetes
                HtmlElement pageSystemSolaire = mainForm.webBrowserMain.Document.GetElementById("galaxiform");
                foreach (HtmlElement elementTemp in pageSystemSolaire.Children)
                {
                    // on recupere le conteneur de l'ensemble des planetes
                    if (elementTemp.GetAttribute("className").Contains("orcp2m"))
                    {
                        // mainForm.searchCDRUserView.progressChanged(this.GalaxyStart, this.SystemStart, this.GalaxyMax, 100, this.GalaxyNavigation, this.SystemNavigation, base.lastLoadTime);
                        int position = 0;
                        foreach (HtmlElement elementTemp2 in elementTemp.Children)
                        {
                            // Parcours de chaques lignes de planetes (pas de différence en les zones sombres et claires)
                            if (elementTemp2.GetAttribute("className").Contains("orcp2mlg"))
                            {
                                position++;
                                Player  player;
                                Planete planete = null;
                                foreach (HtmlElement elementTemp3 in elementTemp2.Children)
                                {
                                    // on recupère les informations de la planète
                                    if (elementTemp3.GetAttribute("className").Contains("orcp2mlgc"))
                                    {
                                        string planeteName = elementTemp3.InnerText;
                                        if (!string.IsNullOrEmpty(planeteName))
                                        {
                                            planete          = new Planete();
                                            planete.Galaxy   = GalaxyNavigation;
                                            planete.System   = SystemNavigation;
                                            planete.Position = position;
                                            planete.Name     = planeteName;
                                        }
                                    }

                                    if (elementTemp3.GetAttribute("className").Contains("orcp2mlgf"))
                                    {
                                        if ((elementTemp3.FirstChild != null) && (planete != null))
                                        {
                                            string elementClick = elementTemp3.FirstChild.OuterHtml;
                                            if (elementClick.Contains("messagerie_ecrire"))
                                            {
                                                List <long> allInt = GeneralFunction.getNumberFromText(elementClick);

                                                int UniquePUniqueNumberContact = Convert.ToInt32(allInt[0]);
                                                player = new Player();
                                                player.UniqueNumberContact = UniquePUniqueNumberContact;


                                                EasyOR.DataAccess.SqlServer.PlayerAction playerDB = new DataAccess.SqlServer.PlayerAction();
                                                var playerFound = playerDB.GetUserByInternalIdOR(player.UniqueNumberContact);
                                                if (playerFound == null)
                                                {
                                                    // Add player
                                                    playerDB.AddPlayer(new EasyOR.DTO.Player()
                                                    {
                                                        Name = null, IsAFK = null, IsVacation = null, InternalIdOR = player.UniqueNumberContact
                                                    });

                                                    playerFound = playerDB.GetUserByInternalIdOR(player.UniqueNumberContact);
                                                    // add planet
                                                    new PlanetAction().AddPlanet(new DTO.Planet()
                                                    {
                                                        Galaxy = (Int16)planete.Galaxy, System = (Int16)planete.System, Position = (Int16)planete.Position, PlayerId = playerFound.PlayerId, Name = planete.Name
                                                    });
                                                }
                                                else
                                                {
                                                    var planet = new PlanetAction().GetByCoordinatesAndUserInternalID((Int16)planete.Galaxy, (Int16)planete.System, (Int16)planete.Position, player.UniqueNumberContact);
                                                    if (planet == null)
                                                    {
                                                        new PlanetAction().AddPlanet(new DTO.Planet()
                                                        {
                                                            Galaxy = (Int16)planete.Galaxy, System = (Int16)planete.System, Position = (Int16)planete.Position, PlayerId = playerFound.PlayerId, Name = planete.Name
                                                        });
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                SystemNavigation++;
                new Navigation().InvokeForm(capteurInterstellaireURL, mainForm.webBrowserMain, "galaxi_envoi", new object[] { GalaxyNavigation, SystemNavigation });
            }
            else
            {
                mainForm.action        = Action.updatePlayerNameStep1;
                mainForm.getPlayerName = new GetPlayerName();
                mainForm.getPlayerName.GetName(mainForm);
                mainForm.searchPlayer = null;
            }
        }