public static void LoadNPCs()
        {
            lock (DatabaseProvider.Locker)
            {
                var sqlText = "SELECT * FROM npcs";
                var sqlCommand = new MySqlCommand(sqlText, DatabaseProvider.Connection);

                var sqlReader = sqlCommand.ExecuteReader();

                while (sqlReader.Read())
                {
                    var npcModel = new Models.NPC.NoPlayerCharacterModel()
                    {
                        ID = sqlReader.GetInt32("ID"),
                        GfxID = sqlReader.GetInt32("Gfx"),
                        Size = sqlReader.GetInt32("Size"),
                        Sex = sqlReader.GetInt32("Sex"),
                        Color = sqlReader.GetInt32("Color1"),
                        Color2 = sqlReader.GetInt32("Color2"),
                        Color3 = sqlReader.GetInt32("Color3"),

                        Name = sqlReader.GetString("Name"),
                        Items = sqlReader.GetString("Items"),

                        Question = (sqlReader.GetInt32("initQuestion") != -1 ? QuestionsList.First
                            (x => x.QuestionID == sqlReader.GetInt32("initQuestion")) : null),
                    };

                    foreach (var itemToSell in sqlReader.GetString("SellingList").Split(','))
                    {
                        if (itemToSell == "")
                            continue;

                        npcModel.SellingList.Add(int.Parse(itemToSell));
                    }

                    var infosMap = sqlReader.GetString("Mapinfos").Split(';');

                    var npc = new Game.Characters.NPC.NPCMap(npcModel)
                    {

                        MapID = int.Parse(infosMap[0]),
                        MapCell = int.Parse(infosMap[1]),
                        Dir = int.Parse(infosMap[2]),
                        MustMove = bool.Parse(infosMap[3]),
                    };

                    if (MapsRequests.MapsList.Any(x => x.Model.ID == npc.MapID))
                    {
                        var map = MapsRequests.MapsList.First(x => x.Model.ID == npc.MapID);
                        npc.ID = MapsRequests.MapsList.First(x => x.Model.ID == npc.MapID).NextNpcID();

                        map.Npcs.Add(npc);

                        npc.StartMove();
                    }

                    NpcsList.Add(npc);
                }

                sqlReader.Close();
            }

            Utilities.Loggers.Status.Write(string.Format("Loaded '{0}' npcs from the database !", NpcsList.Count));
        }
示例#2
0
        public static void LoadNPCs()
        {
            var sqlText    = "SELECT * FROM npcs";
            var sqlCommand = new MySqlCommand(sqlText, Program.DBHelper.Use());

            var sqlReader = sqlCommand.ExecuteReader();

            while (sqlReader.Read())
            {
                var npcModel = new Models.NPC.NoPlayerCharacterModel()
                {
                    ID     = sqlReader.GetInt32("ID"),
                    GfxID  = sqlReader.GetInt32("Gfx"),
                    Size   = sqlReader.GetInt32("Size"),
                    Sex    = sqlReader.GetInt32("Sex"),
                    Color  = sqlReader.GetInt32("Color1"),
                    Color2 = sqlReader.GetInt32("Color2"),
                    Color3 = sqlReader.GetInt32("Color3"),

                    Name  = sqlReader.GetString("Name"),
                    Items = sqlReader.GetString("Items"),

                    Question = (sqlReader.GetInt32("initQuestion") != -1 ? QuestionsList.First
                                    (x => x.QuestionID == sqlReader.GetInt32("initQuestion")) : null),
                };

                foreach (var itemToSell in sqlReader.GetString("SellingList").Split(','))
                {
                    if (itemToSell == "")
                    {
                        continue;
                    }

                    npcModel.SellingList.Add(int.Parse(itemToSell));
                }

                var infosMap = sqlReader.GetString("Mapinfos").Split(';');

                var npc = new NPCMap(npcModel)
                {
                    MapID    = int.Parse(infosMap[0]),
                    MapCell  = int.Parse(infosMap[1]),
                    Dir      = int.Parse(infosMap[2]),
                    MustMove = bool.Parse(infosMap[3]),
                };

                if (MapsRequests.MapsList.Any(x => x.Model.ID == npc.MapID))
                {
                    var map = MapsRequests.MapsList.First(x => x.Model.ID == npc.MapID);
                    npc.ID = MapsRequests.MapsList.First(x => x.Model.ID == npc.MapID).NextNpcID();

                    map.Npcs.Add(npc);

                    npc.StartMove();
                }

                NpcsList.Add(npc);
            }

            sqlReader.Close();

            Utilities.Loggers.Status.Write(string.Format("Loaded '{0}' npcs from the database !", NpcsList.Count));
        }
示例#3
0
        public static void LoadNPCs()
        {
            lock (DatabaseHandler.ConnectionLocker)
            {
                var sqlText = "SELECT * FROM datas_npcs";
                var sqlCommand = new MySqlCommand(sqlText, DatabaseHandler.Connection);

                var sqlReader = sqlCommand.ExecuteReader();

                while (sqlReader.Read())
                {
                    var npcModel = new Models.NPC.NoPlayerCharacterModel();
                    {
                        npcModel.ID = sqlReader.GetInt32("ID");
                        npcModel.GfxID = sqlReader.GetInt32("Gfx");
                        npcModel.Size = sqlReader.GetInt32("Size");
                        npcModel.Sex = sqlReader.GetInt32("Sex");
                        npcModel.Color = sqlReader.GetInt32("Color1");
                        npcModel.Color2 = sqlReader.GetInt32("Color2");
                        npcModel.Color3 = sqlReader.GetInt32("Color3");

                        if(sqlReader.GetInt32("initQuestion") != -1)
                            npcModel.Question = QuestionsList.First(x => x.QuestionID == sqlReader.GetInt32("initQuestion"));

                        npcModel.Name = sqlReader.GetString("Name");
                        npcModel.Items = sqlReader.GetString("Items");
                    }

                    foreach (var itemToSell in sqlReader.GetString("SellingList").Split(','))
                    {
                        if (itemToSell == "")
                            continue;

                        lock(npcModel.SellingList)
                            npcModel.SellingList.Add(int.Parse(itemToSell));
                    }

                    var npc = new Realm.Characters.NPC.NPCMap(npcModel);
                    {
                        var infosMap = sqlReader.GetString("Mapinfos").Split(';');
                        npc.MapID = int.Parse(infosMap[0]);
                        npc.MapCell = int.Parse(infosMap[1]);
                        npc.Dir = int.Parse(infosMap[2]);
                        npc.mustMove = bool.Parse(infosMap[3]);

                        if (MapsCache.MapsList.Any(x => x.GetModel.ID == npc.MapID))
                        {
                            var map = MapsCache.MapsList.First(x => x.GetModel.ID == npc.MapID);
                            npc.ID = MapsCache.MapsList.First(x => x.GetModel.ID == npc.MapID).NextNpcID();

                            lock(map.Npcs)
                                map.Npcs.Add(npc);

                            npc.StartMove();
                        }
                    }

                    lock(NpcsList)
                        NpcsList.Add(npc);
                }

                sqlReader.Close();
            }

            Utilities.Loggers.StatusLogger.Write(string.Format("Loaded @'{0}' npcs@ from the database !", NpcsList.Count));
        }