예제 #1
0
        public MasterServer()
        {
            SqlConnection = new MySQL_Connection();

            HellEmissary         = new HellEmissary((Int16)Constants.HellPort);
            ConnectionDispatcher = new ConnectionDispatcher((Int16)Constants.CDPPort);
            LobbyListener        = new LobbyListener((Int16)Constants.LLPort);
        }
예제 #2
0
        private void LoadDBConfig(string configFile)
        {
            var lines = File.ReadLines(configFile)
                        .Select(l => l.Split(' '))
                        .Select(p => p.Length == 2 ? "" : p[2])
                        .ToList();
            string Username = lines[0];
            string Password = lines[1];
            string Database = lines[2];
            string Host     = lines[3];

            UsersDatabase = new MySQL_Connection(MasterThread.Instance, Username, Password, Database, Host);
        }
예제 #3
0
        //Main Application Window



        #endregion


        #region Events

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            //Assigns
            Connection = new MySQL_Connection();


            //Read Saved Settings
            ReadSettings();

            //Check Database Connection
            Connection.IsConnected = Connection.CheckDatabaseServer();

            //Show Main Window

            ForceAdminLogin();
        }
예제 #4
0
        public static void Load(MySQL_Connection connection, string baseTableName, string whereStatement, AddItemCallback callback)
        {
            using (var data = connection.RunQuery($"SELECT * FROM {GetInventoryTableName(InventoryType.Eqp, baseTableName)} WHERE {whereStatement}") as MySqlDataReader)
            {
                while (data.Read())
                {
                    var item = BaseItem.CreateFromItemID(data.GetInt32("itemid"));
                    item.Load(data);
                    callback(InventoryType.Eqp, 1, data.GetInt16("slot"), item);
                }
            }

            using (var data = connection.RunQuery($"SELECT * FROM {GetInventoryTableName(InventoryType.Bundle, baseTableName)} WHERE {whereStatement}") as MySqlDataReader)
            {
                while (data.Read())
                {
                    var item = BaseItem.CreateFromItemID(data.GetInt32("itemid"));
                    item.Load(data);
                    callback(InventoryType.Bundle, (byte)data.GetInt16("inv"), data.GetInt16("slot"), item);
                }
            }
        }
 public static void InitializeDB(MySQL_Connection characterDatabaseConnection)
 {
     _characterDatabaseConnection = characterDatabaseConnection;
 }
예제 #6
0
        public static void Save(MySQL_Connection connection, string baseTableName, string columnsBeforeItemInfo, string whereStatement, StoredItemsCallback callback, MySQL_Connection.LogAction dbgCallback)
        {
            #region bundle


            connection.RunTransaction(comm =>
            {
                var tableName = GetInventoryTableName(InventoryType.Bundle, baseTableName);

                comm.CommandText = $"DELETE FROM {tableName} WHERE {whereStatement}";
                comm.ExecuteNonQuery();

                var itemQuery = new StringBuilder();

                bool firstrun = true;
                // Inventories
                for (byte inventory = 2; inventory <= 5; inventory++)
                {
                    var items = callback(InventoryType.Bundle, inventory);

                    foreach (var item in items)
                    {
                        if (!(item is BundleItem))
                        {
                            continue;
                        }

                        if (firstrun)
                        {
                            itemQuery.Append($"INSERT INTO {tableName} VALUES (");
                            firstrun = false;
                        }
                        else
                        {
                            itemQuery.Append(", (");
                        }

                        itemQuery.Append(columnsBeforeItemInfo);
                        itemQuery.Append(inventory + ", ");
                        itemQuery.Append(item.InventorySlot + ", ");
                        itemQuery.Append(item.GetFullSaveColumns());
                        itemQuery.AppendLine(")");
                    }
                }

                if (itemQuery.Length == 0)
                {
                    return;
                }

                comm.CommandText = itemQuery.ToString();
                comm.ExecuteNonQuery();
            }, dbgCallback);

            #endregion

            #region eqp

            connection.RunTransaction(comm =>
            {
                var tableName    = GetInventoryTableName(InventoryType.Eqp, baseTableName);
                comm.CommandText = $"DELETE FROM {tableName} WHERE {whereStatement}";
                comm.ExecuteNonQuery();

                var itemQuery = new StringBuilder();

                bool firstrun = true;

                var equips = callback(InventoryType.Eqp, 1);
                foreach (var item in equips)
                {
                    if (item == null)
                    {
                        continue;
                    }

                    if (firstrun)
                    {
                        itemQuery.Append($"INSERT INTO {tableName} VALUES (");
                        firstrun = false;
                    }
                    else
                    {
                        itemQuery.Append(", (");
                    }


                    itemQuery.Append(columnsBeforeItemInfo);
                    itemQuery.Append(item.InventorySlot + ", ");
                    itemQuery.Append(item.GetFullSaveColumns());
                    itemQuery.AppendLine(")");
                }

                if (itemQuery.Length == 0)
                {
                    return;
                }

                comm.CommandText = itemQuery.ToString();
                comm.ExecuteNonQuery();
            }, dbgCallback);

            #endregion
        }