Exemplo n.º 1
0
        private static void InitialiseEntityVendorInfo()
        {
            ImmutableDictionary <uint, EntityVendor> vendors = WorldDatabase.GetEntityVendors()
                                                               .GroupBy(v => v.Id)
                                                               .ToImmutableDictionary(g => g.Key, g => g.First());

            ImmutableDictionary <uint, ImmutableList <EntityVendorCategory> > vendorCategories = WorldDatabase.GetEntityVendorCategories()
                                                                                                 .GroupBy(c => c.Id)
                                                                                                 .ToImmutableDictionary(g => g.Key, g => g.ToImmutableList());

            ImmutableDictionary <uint, ImmutableList <EntityVendorItem> > vendorItems = WorldDatabase.GetEntityVendorItems()
                                                                                        .GroupBy(i => i.Id)
                                                                                        .ToImmutableDictionary(g => g.Key, g => g.ToImmutableList());

            // category with no items
            foreach (uint source in vendorCategories.Keys.Except(vendorItems.Keys))
            {
            }

            // items with no category
            foreach (uint source in vendorItems.Keys.Except(vendorCategories.Keys))
            {
            }

            VendorInfo = vendorCategories.Keys
                         .Select(i => new VendorInfo(vendors[i], vendorCategories[i], vendorItems[i]))
                         .ToImmutableDictionary(v => v.Id, v => v);

            log.Info($"Loaded vendor information for {VendorInfo.Count} {(VendorInfo.Count > 1 ? "entities" : "entity")}.");
        }
Exemplo n.º 2
0
        public WorldServer()
        {
            Config = new WorldServerConfig("Resources/Config/World.ini");

            WorldDatabase = new WorldDatabase(Config);
            if (WorldDatabase.Connection.CheckConnection())
            {
                Console.WriteLine("Connecting to cluster server...");

                int clusterPort    = (int)Config.GetSetting("ClusterPort");
                int worldStartPort = (int)Config.GetSetting("WorldStartPort");

                Console.WriteLine("Searching open port for cluster server communication...");
                while (PortChecker.IsPortAvailable(worldStartPort))
                {
                    Console.WriteLine("Port {0} not available, let's try another port", worldStartPort.ToString());
                    worldStartPort += 1;
                }

                ClusterConnector = new ClusterConnector(clusterPort.ToString(), worldStartPort.ToString());
                ClusterConnector.StartListening();

                // Let's wait a bit to let the subscriber and publisher socket to connect
                Thread.Sleep(1500);
                RegisterChannelRequest request = new RegisterChannelRequest((string)Config.GetSetting("ClusterAuthorizationPassword"), (string)Config.GetSetting("Address"), worldStartPort.ToString(), (string)Config.GetSetting("ChannelName"), 50, ClusterConnector.PublisherSocket);

                ClusterConnector.OnRegisterChannelSuccesful += new ClusterConnector.RequestSuccesfulHandler(OnRegisterChannelSuccesful);
            }
        }
Exemplo n.º 3
0
 public void ResetWorldDatabase(bool useConnStr)
 {
     if (useConnStr)
         worldDatabase = new WorldDatabase(SAI_Editor_Manager.Instance.connString.Server, SAI_Editor_Manager.Instance.connString.Port, SAI_Editor_Manager.Instance.connString.UserID, SAI_Editor_Manager.Instance.connString.Password, SAI_Editor_Manager.Instance.connString.Database);
     else
         worldDatabase = new WorldDatabase(Settings.Default.Host, Settings.Default.Port, Settings.Default.User, GetPasswordSetting(), Settings.Default.Database);
 }
Exemplo n.º 4
0
        static async Task MainAsync(string[] args)
        {
            //Starting
            string host = "127.0.0.1", database = "mimic_auth", user = "******", pass = "******";
            var    builder = new DbContextOptionsBuilder().UseMySQL($"Server={host}; database={database}; UID={user}; password={pass}");

            authDatabase = new AuthDatabase(builder.Options);
            authDatabase.Database.EnsureCreated();

            database      = "mimic_world";
            builder       = new DbContextOptionsBuilder().UseMySQL($"Server={host}; database={database}; UID={user}; password={pass}");
            worldDatabase = new WorldDatabase(builder.Options);
            worldDatabase.Database.EnsureCreated();

            world = new World();

            string ip            = "0.0.0.0";
            ushort port          = 8085;
            var    socketManager = new SocketManager <WorldHandler>(ip, port);

            await socketManager.StartAsync();

            Console.Out.WriteLine("Started on " + ip + ":" + port);

            //Started. Looping
            InitWorldLoop();
            //Stopping
        }
Exemplo n.º 5
0
        private void CalculateEntityAreaData()
        {
            log.Info("Calculating area information for entities...");

            var mapFiles = new Dictionary <ushort, MapFile>();
            var entities = new HashSet <EntityModel>();

            foreach (EntityModel model in WorldDatabase.GetEntitiesWithoutArea())
            {
                entities.Add(model);

                if (!mapFiles.TryGetValue(model.World, out MapFile mapFile))
                {
                    WorldEntry entry = GameTableManager.Instance.World.GetEntry(model.World);
                    mapFile = BaseMapManager.Instance.GetBaseMap(entry.AssetPath);
                    mapFiles.Add(model.World, mapFile);
                }

                uint worldAreaId = mapFile.GetWorldAreaId(new Vector3(model.X, model.Y, model.Z));
                model.Area = (ushort)worldAreaId;

                log.Info($"Calculated area {worldAreaId} for entity {model.Id}.");
            }

            WorldDatabase.UpdateEntities(entities);

            log.Info($"Calculated area information for {entities.Count} {(entities.Count == 1 ? "entity" : "entities")}.");
        }
Exemplo n.º 6
0
 private void Start()
 {
     //TODO: This shouldn't be neccesary once I've got the cartridge loader scene up and running
     //Will check that all data exists before even entering the game scene
     //Load all Data, Make sure none are missing
     if (!WorldDatabase.LoadWorldData())
     {
         Debug.LogWarning("World Data is Missing!");
     }
     else if (!LevelDatabase.LoadLevelData())
     {
         Debug.LogWarning("Level Data is Missing!");
     }
     else if (!RoomDatabase.LoadRoomData())
     {
         Debug.LogWarning("Room Data is Missing!");
     }
     else if (!InteractableDatabase.LoadInteractableData())
     {
         Debug.LogWarning("Interaction Data is Missing!");
     }
     else if (!ObstacleDatabase.LoadObstacleData())
     {
         Debug.LogWarning("Obstacle Data is Missing!");
     }
     else if (!ItemDatabase.LoadItemData())
     {
         Debug.LogWarning("Item Data is Missing!");
     }
     else
     {
         WorldManagerInst.EnterWorld();
         UIController.Instance.EnableUI();
     }
 }
Exemplo n.º 7
0
        /// <summary>
        /// Called when the BlockWorld behaviour is enabled.
        /// </summary>
        private void OnEnable()
        {
            if (m_WorldContainer != null)
            {
                return; // Already enabled
            }
            var chunkSize = new GridSize(4);

            var world     = new World(chunkSize);
            var blockList = new BlockTypeList();
            var remesh    = new RemeshHandler();
            var database  = new WorldDatabase("/home/thedudefromci/Bones3/TestWorld");

            remesh.AddDistributor(new StandardDistributor());

            m_WorldContainer = new WorldContainer(world, remesh, blockList, database);
            m_WorldContainer.BlockContainerProvider.OnBlockContainerCreated   += OnChunkCreated;
            m_WorldContainer.BlockContainerProvider.OnBlockContainerDestroyed += OnChunkDestroyed;
            m_WorldContainer.RemeshHandler.OnRemeshFinish += OnRemeshFinished;

#if UNITY_EDITOR
            if (!Application.isPlaying)
            {
                UnityEditor.EditorApplication.update += Update;
            }
#endif
        }
Exemplo n.º 8
0
        private void buttonTestConnection_Click(object sender, EventArgs e)
        {
            buttonTestConnection.Enabled = false;

            MySqlConnectionStringBuilder _connectionString = new MySqlConnectionStringBuilder();

            _connectionString.Server   = textBoxHost.Text;
            _connectionString.UserID   = textBoxUsername.Text;
            _connectionString.Port     = CustomConverter.ToUInt32(textBoxPort.Text);
            _connectionString.Database = textBoxWorldDatabase.Text;

            if (textBoxPassword.Text.Length > 0)
            {
                _connectionString.Password = textBoxPassword.Text;
            }

            WorldDatabase worldDatabase = null;

            if (!Settings.Default.UseWorldDatabase)
            {
                worldDatabase = new WorldDatabase(Settings.Default.Host, Settings.Default.Port, Settings.Default.User, SAI_Editor_Manager.Instance.GetPasswordSetting(), Settings.Default.Database);
            }
            else
            {
                worldDatabase = SAI_Editor_Manager.Instance.worldDatabase;
            }

            //! If no connection was established, it would throw an error in WorldDatabase.CanConnectToDatabase.
            if (worldDatabase.CanConnectToDatabase(_connectionString))
            {
                MessageBox.Show("Connection successful!", "Connection status", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            buttonTestConnection.Enabled = true;
        }
Exemplo n.º 9
0
        void Form1_Load(object sender, EventArgs e)
        {
            _StatusBar = "Initializing...";

            settings = new Properties.Settings();                                                                                                                                                                                                                                                                                                    // metadata=res://*/Database.csdl|res://*/Database.ssdl|res://*/Database.msl;
            world    = new WorldDatabase($"metadata=res://*/Database.Database.csdl|res://*/Database.Database.ssdl|res://*/Database.Database.msl;provider=MySql.Data.MySqlClient;provider connection string=\";server={settings.IPAdress};user id={settings.User};password={settings.Pass};database={settings.World_DB};persistsecurityinfo=True\""); //new WorldDatabase();

            Text = $"Database Editor - {settings.IPAdress}";

            // Initialize dictionary for tables and set datagridviews column names
            DatabaseStructure.InitializeDictionary();

            // Creature Control
            creatureControl.world    = world;
            creatureControl.settings = settings;
            creatureControl.Initialize();
            creatureControl.CreatureTab.SelectedIndexChanged += EditorControlTab_SelectedIndexChanged;

            AcceptButton = creatureControl.AcceptButton;

            // GameObject Control
            gameObjectControl.world    = world;
            gameObjectControl.settings = settings;
            gameObjectControl.Initialize();
            gameObjectControl.GameObjectTab.SelectedIndexChanged += EditorControlTab_SelectedIndexChanged;

            // Item Control
            itemControl.world    = world;
            itemControl.settings = settings;
            itemControl.Initialize();
            itemControl.ItemTab.SelectedIndexChanged += EditorControlTab_SelectedIndexChanged;

            // Load App settings
            if (settings.FormSize.Height != 0 && settings.FormSize.Width != 0)
            {
                Size = settings.FormSize;
            }

            // Load DBCs
            if (settings.DBC_Path == String.Empty)
            {
                DBCPath dbcPath = new DBCPath();
                dbcPath.ShowDialog();
            }

            DbcStore.LoadFiles();
            //DBC.DBCStores.LoadFiles();

            /*List<DBC.FamilyEntry> list = new List<DBC.FamilyEntry>();
             *
             * foreach (var record in DBC.DBCStores.Family.Records) // Records in DBC
             * {
             *  list.Add(record.ID, record.
             * }
             *
             * DBCDataGridView.DataSource = list;*/

            _StatusBar = "Ready, MySQL connect success";
        }
Exemplo n.º 10
0
 public Database()
 {
     ItemDatabase      = new ItemDatabase();
     TileDatabase      = new TileDatabase();
     WorldDatabase     = new WorldDatabase();
     BiomeDatabase     = new BiomeDatabase();
     StructureDatabase = new StructureDatabase();
 }
Exemplo n.º 11
0
        public static void TestSetup(TestContext context)
        {
            // copy config.js
            File.Copy(Path.Combine(Environment.CurrentDirectory, "..\\..\\..\\..\\..\\ACE.Server\\Config.js"), ".\\Config.js", true);

            ConfigManager.Initialize();
            worldDb = new WorldDatabase();
        }
Exemplo n.º 12
0
        public TCManager()
        {
            var set = Settings.Default;

            AuthDatabase  = new AuthDatabase(set.DBHost, set.DBPort, set.DBUsername, set.DBPassword.DecryptString(Encoding.Unicode.GetBytes(Settings.Default.Entropy)).ToInsecureString(), set.DBAuthName);
            CharDatabase  = new CharDatabase(set.DBHost, set.DBPort, set.DBUsername, set.DBPassword.DecryptString(Encoding.Unicode.GetBytes(Settings.Default.Entropy)).ToInsecureString(), set.DBCharName);
            WorldDatabase = new WorldDatabase(set.DBHost, set.DBPort, set.DBUsername, set.DBPassword.DecryptString(Encoding.Unicode.GetBytes(Settings.Default.Entropy)).ToInsecureString(), set.DBWorldName);
        }
Exemplo n.º 13
0
        private EntityCache LoadEntityCache(ushort worldId)
        {
            var entityCache = new EntityCache(WorldDatabase.GetEntities(worldId));

            entityCaches.Add(worldId, entityCache);

            log.Trace($"Initialised {entityCache.EntityCount} spawns on {entityCache.GridCount} grids for world {worldId}.");
            return(entityCache);
        }
Exemplo n.º 14
0
 public World()
 {
     StaticData   = WorldDatabase.GetWorldData();
     _worldLevels = new Level[LevelDatabase.LevelCount];
     for (int i = 0; i < _worldLevels.Length; i++)
     {
         _worldLevels[i] = new Level(i + 1);
     }
 }
Exemplo n.º 15
0
    public static WorldDatabase Create()
    {
        WorldDatabase asset = ScriptableObject.CreateInstance <WorldDatabase>();

        AssetDatabase.CreateAsset(asset, "Assets/WorldDatabase.asset");
        AssetDatabase.SaveAssets();

        return(asset);
    }
Exemplo n.º 16
0
        public void ResetDatabases()
        {
            string password = Settings.Default.Password;

            if (password.Length > 0)
                password = SecurityExtensions.DecryptString(password, Encoding.Unicode.GetBytes(Settings.Default.Entropy)).ToInsecureString();

            worldDatabase = new WorldDatabase(Settings.Default.Host, Settings.Default.Port, Settings.Default.User, password, Settings.Default.Database);
            sqliteDatabase = new SQLiteDatabase("Resources/sqlite_database.db");
        }
        private async void DownloadApplyTDB()
        {
            var result = _messageService.Show("This will create the 'world' database. If the database already exists, it will be overwritten! Continue?", "Warning!", MessageButton.YesNo, MessageImage.Warning);

            if (result == MessageResult.Yes)
            {
                Progress <int> progress = new Progress <int>(val =>
                {
                    TDBSetupProgress = val;
                });

                //var wizard = e.Source as Xceed.Wpf.Toolkit.Wizard;

                //if (Wizard != null)
                //{
                //    Wizard.CanSelectNextPage = false;
                //    Wizard.CanSelectPreviousPage = false;
                //}

                TDBSetupWorking = true;

                string tempDir   = FileHelper.GenerateTempDirectory();
                string file      = Path.Combine(tempDir, "TDB.7z");
                string extractTo = Path.Combine(tempDir, "TDB");
                Directory.CreateDirectory(extractTo);

                await TDB.DownloadTDBAsync(progress, file);

                await TDB.Extract7zAsync(file, extractTo, progress);

                string[] files  = Directory.GetFiles(extractTo);
                string   tdbSql = "";

                foreach (string f in files)
                {
                    if (Path.GetFileName(f).StartsWith("TDB_full"))
                    {
                        tdbSql = f;
                        break;
                    }
                }

                if (!string.IsNullOrEmpty(tdbSql))
                {
                    MySqlDatabase db = new WorldDatabase(MySQLHost, MySQLPort, MySQLUsername, MySQLPassword, "world");
                    await db.CreateDatabaseAsync();

                    await TDB.ApplyAsync(tdbSql, db, progress, new CancellationTokenSource());
                }

                FileHelper.DeleteDirectory(tempDir);
                TDBSetupWorking = false;
            }
        }
Exemplo n.º 18
0
 public void ResetWorldDatabase(bool useConnStr)
 {
     if (useConnStr)
     {
         worldDatabase = new WorldDatabase(SAI_Editor_Manager.Instance.connString.Server, SAI_Editor_Manager.Instance.connString.Port, SAI_Editor_Manager.Instance.connString.UserID, SAI_Editor_Manager.Instance.connString.Password, SAI_Editor_Manager.Instance.connString.Database);
     }
     else
     {
         worldDatabase = new WorldDatabase(Settings.Default.Host, Settings.Default.Port, Settings.Default.User, GetPasswordSetting(), Settings.Default.Database);
     }
 }
Exemplo n.º 19
0
        private async void buttonSearchForWorldDb_Click(object sender, EventArgs e)
        {
            WorldDatabase worldDatabase = new WorldDatabase(textBoxHost.Text, XConverter.ToUInt32(textBoxPort.Text), textBoxUsername.Text, textBoxPassword.Text, "");
            List <string> databaseNames = await SAI_Editor_Manager.Instance.GetDatabasesInConnection(textBoxHost.Text, textBoxUsername.Text, XConverter.ToUInt32(textBoxPort.Text), textBoxPassword.Text, worldDatabase);

            if (databaseNames != null && databaseNames.Count > 0)
            {
                using (var selectDatabaseForm = new SelectDatabaseForm(databaseNames, textBoxWorldDatabase))
                    selectDatabaseForm.ShowDialog(this);
            }
        }
Exemplo n.º 20
0
        private void CacheEntitySpawns()
        {
            foreach (var entity in WorldDatabase.GetEntities((ushort)Entry.Id))
            {
                // TODO: cache spawns by grid, only spawn when grid is loaded
                // (int X, int Z) coord = GetGridCoord(vector);

                var test   = new NonPlayer(entity);
                var vector = new Vector3(entity.X, entity.Y, entity.Z);
                EnqueueAdd(test, vector);
            }
        }
Exemplo n.º 21
0
        private void CacheEntitySpawns()
        {
            uint count = 0u;

            foreach (EntityModel model in WorldDatabase.GetEntities((ushort)Entry.Id))
            {
                entityCache.AddEntity(model);
                count++;
            }

            log.Trace($"Initialised {count} spawns for world {Entry.Id}.");
        }
Exemplo n.º 22
0
        public void ResetDatabases()
        {
            string password = Settings.Default.Password;

            if (password.Length > 0)
            {
                password = SecurityExtensions.DecryptString(password, Encoding.Unicode.GetBytes(Settings.Default.Entropy)).ToInsecureString();
            }

            worldDatabase  = new WorldDatabase(Settings.Default.Host, Settings.Default.Port, Settings.Default.User, password, Settings.Default.Database);
            sqliteDatabase = new SQLiteDatabase("Resources/sqlite_database.db");
        }
Exemplo n.º 23
0
        public void Initialise()
        {
            var builder = ImmutableDictionary.CreateBuilder <ulong, Disable>();

            foreach (DisableModel model in WorldDatabase.GetDisables())
            {
                DisableType type = (DisableType)model.Type;
                builder.Add(Hash(type, model.ObjectId), new Disable(type, model.ObjectId, model.Note));
            }

            disables = builder.ToImmutable();
        }
Exemplo n.º 24
0
        public static void TestSetup(TestContext context)
        {
            // copy config.json
            File.Copy(Path.Combine(Environment.CurrentDirectory, "..\\..\\..\\..\\ACE\\Config.json"), ".\\Config.json", true);

            ConfigManager.Initialize();
            worldDb = new WorldDatabase();
            worldDb.Initialize(ConfigManager.Config.MySql.World.Host,
                               ConfigManager.Config.MySql.World.Port,
                               ConfigManager.Config.MySql.World.Username,
                               ConfigManager.Config.MySql.World.Password,
                               ConfigManager.Config.MySql.World.Database);
        }
Exemplo n.º 25
0
        void Loot_Load(object sender, EventArgs e)
        {
            settings = new Properties.Settings();

            world = MainForm.Instance.WorldDB;

            //todo initialize datagrid column names
            WorldDatabase db    = new WorldDatabase();
            var           query = world.item_template.Select(x => new { x.entry, x.name }).ToList();

            DataGrid.Load(query);

            // find row and select
        }
Exemplo n.º 26
0
        public void HandlerNotFound_ThrowsError()
        {
            var rootFolder = TestFolder + "/Saves/world15";
            var db         = new WorldDatabase(rootFolder);

            var props = new WorldProperties
            {
                ChunkSize = new GridSize(2),
                WorldName = "New World",
            };

            Assert.Throws <System.ArgumentException>(() => db.SaveObject(props));
            Assert.Throws <System.ArgumentException>(() => db.LoadObject(props));
        }
Exemplo n.º 27
0
        public void RegisterHandler()
        {
            var rootFolder = TestFolder + "/Saves/world15";
            var db         = new WorldDatabase(rootFolder);

            var handler = new Mock <IFileHandler <string> >();

            db.RegisterFileHandler(handler.Object);

            db.SaveObject("Hello World!");
            handler.Verify(h => h.Save(rootFolder, "Hello World!"));

            db.LoadObject <string>();
            handler.Verify(h => h.Load(rootFolder, null));
        }
Exemplo n.º 28
0
        private void testDatabaseToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var db = new WorldDatabase();

            try
            {
                var config = WeenieEditorConfig.Load();
                db.Initialize(config.ServerIp, uint.Parse(config.ServerPort), config.RootUsername, config.RootPassword, config.WorldDatabaseName, false);
                MessageBox.Show(this, "Connection to database successful!", "ACE", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error connecting to database." + Environment.NewLine + ex, "ACE", MessageBoxButtons.OK);
            }
        }
Exemplo n.º 29
0
        private void byIDToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string weenieId = Interaction.InputBox("Enter the Weenie ID", "ACE");
            uint   id;

            if (uint.TryParse(weenieId, out id))
            {
                var db     = new WorldDatabase();
                var config = WeenieEditorConfig.Load();
                db.Initialize(config.ServerIp, uint.Parse(config.ServerPort), config.RootUsername, config.RootPassword, config.WorldDatabaseName);

                _weenie = db.GetWeenie(id);
                LoadWeenie();
            }
        }
Exemplo n.º 30
0
        static BaseController()
        {
            WorldDb = new WorldDatabase();
            WorldDb.Initialize(ConfigManager.Config.MySql.World.Host,
                               ConfigManager.Config.MySql.World.Port,
                               ConfigManager.Config.MySql.World.Username,
                               ConfigManager.Config.MySql.World.Password,
                               ConfigManager.Config.MySql.World.Database);

            AuthDb = new AuthenticationDatabase();
            AuthDb.Initialize(ConfigManager.Config.MySql.Authentication.Host,
                              ConfigManager.Config.MySql.Authentication.Port,
                              ConfigManager.Config.MySql.Authentication.Username,
                              ConfigManager.Config.MySql.Authentication.Password,
                              ConfigManager.Config.MySql.Authentication.Database);
        }
Exemplo n.º 31
0
        /// <summary>
        /// Called when the BlockWorld behaviour is enabled.
        /// </summary>
        private void OnEnable()
        {
            var chunkSize = new GridSize(4);

            var world     = new World(chunkSize);
            var blockList = new BlockTypeList();
            var remesh    = new RemeshHandler();
            var database  = new WorldDatabase("/home/thedudefromci/Bones3/TestWorld");

            remesh.AddDistributor(new StandardDistributor());

            WorldContainer = new WorldContainer(world, remesh, blockList, database);
            WorldContainer.BlockContainerProvider.OnBlockContainerCreated   += OnChunkCreated;
            WorldContainer.BlockContainerProvider.OnBlockContainerDestroyed += OnChunkDestroyed;
            WorldContainer.RemeshHandler.OnRemeshFinish += OnRemeshFinished;
        }
Exemplo n.º 32
0
        private void InitialiseStoreCategories()
        {
            IEnumerable <StoreCategory> storeCategoryModels = WorldDatabase.GetStoreCategories()
                                                              .OrderBy(i => i.Id)
                                                              .Where(x => x.ParentId != 0 && // exclude top level parent category placeholder
                                                                     Convert.ToBoolean(x.Visible));

            var builder = ImmutableDictionary.CreateBuilder <uint, Category>();

            foreach (StoreCategory category in storeCategoryModels)
            {
                builder.Add(category.Id, new Category(category));
            }

            storeCategories = builder.ToImmutable();
        }
Exemplo n.º 33
0
        public Task<List<string>> GetDatabasesInConnection(string host, string username, uint port, string password = "", WorldDatabase _worldDatabase = null)
        {
            return Task.Run(() =>
            {
                if (host.Length <= 0 || username.Length <= 0 || port <= 0)
                {
                    MessageBox.Show("You must fill a host, username and port in order to search for your world database (we need to establish a connection to list your databases)!", "An error has occurred!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return null;
                }

                MySqlConnectionStringBuilder _connectionString = new MySqlConnectionStringBuilder();
                _connectionString.Server = host;
                _connectionString.UserID = username;
                _connectionString.Port = port;

                if (password.Length > 0)
                    _connectionString.Password = password;

                //! Will throw an error message itself if no connection can be made.
                if (!(_worldDatabase ?? Instance.worldDatabase).CanConnectToDatabase(_connectionString))
                    return null;

                List<string> databaseNames = new List<string>();

                try
                {
                    using (var connection = new MySqlConnection(_connectionString.ToString()))
                    {
                        connection.Open();
                        var returnVal = new MySqlDataAdapter("SHOW DATABASES", connection);
                        var dataTable = new DataTable();
                        returnVal.Fill(dataTable);

                        if (dataTable.Rows.Count <= 0)
                        {
                            MessageBox.Show("Your connection contains no databases!", "An error has occurred!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return null;
                        }

                        foreach (DataRow row in dataTable.Rows) databaseNames.AddRange(row.ItemArray.Select(t => t.ToString()));
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Something went wrong!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                return databaseNames;
            });
        }
Exemplo n.º 34
0
 private string GetStringByTargetType(SmartScript smartScript, WorldDatabase worldDatabase)
 {
     switch ((SmartTarget)smartScript.target_type)
     {
         case SmartTarget.SMART_TARGET_SELF:
             return "Self";
         case SmartTarget.SMART_TARGET_VICTIM:
             return "Victim";
         case SmartTarget.SMART_TARGET_HOSTILE_SECOND_AGGRO:
             return "Second On Threatlist";
         case SmartTarget.SMART_TARGET_HOSTILE_LAST_AGGRO:
             return "Last On Threatlist";
         case SmartTarget.SMART_TARGET_HOSTILE_RANDOM:
             return "Random On Threatlist";
         case SmartTarget.SMART_TARGET_HOSTILE_RANDOM_NOT_TOP:
             return "Random On Threatlist Not Top";
         case SmartTarget.SMART_TARGET_ACTION_INVOKER:
             return "Invoker";
         case SmartTarget.SMART_TARGET_POSITION:
             return "Position";
         case SmartTarget.SMART_TARGET_CREATURE_RANGE:
         case SmartTarget.SMART_TARGET_CREATURE_DISTANCE:
         case SmartTarget.SMART_TARGET_CLOSEST_CREATURE:
             return "Closest Creature '" + worldDatabase.GetCreatureNameById(smartScript.target_param1) + "'";
         case SmartTarget.SMART_TARGET_CREATURE_GUID:
             return "Closest Creature '" + worldDatabase.GetCreatureNameByGuid(smartScript.target_param1) + "'";
         case SmartTarget.SMART_TARGET_GAMEOBJECT_RANGE:
         case SmartTarget.SMART_TARGET_GAMEOBJECT_DISTANCE:
         case SmartTarget.SMART_TARGET_CLOSEST_GAMEOBJECT:
             return "Closest Gameobject '" + worldDatabase.GetGameobjectNameById(smartScript.target_param1) + "'";
         case SmartTarget.SMART_TARGET_GAMEOBJECT_GUID:
             return "Closest Gameobject '" + worldDatabase.GetGameobjectNameByGuid(smartScript.target_param1) + "'";
         case SmartTarget.SMART_TARGET_INVOKER_PARTY:
             return "Invoker's Party";
         case SmartTarget.SMART_TARGET_PLAYER_RANGE:
         case SmartTarget.SMART_TARGET_PLAYER_DISTANCE:
         case SmartTarget.SMART_TARGET_CLOSEST_PLAYER:
             return "Closest Player";
         case SmartTarget.SMART_TARGET_ACTION_INVOKER_VEHICLE:
             return "Invoker's Vehicle";
         case SmartTarget.SMART_TARGET_OWNER_OR_SUMMONER:
             return "Owner Or Summoner";
         case SmartTarget.SMART_TARGET_THREAT_LIST:
             return "First Unit On Threatlist";
         case SmartTarget.SMART_TARGET_CLOSEST_ENEMY:
             return "Closest Enemy";
         case SmartTarget.SMART_TARGET_CLOSEST_FRIENDLY:
             return "Closest Friendly Unit";
         default:
             return "<unsupported target type>";
     }
 }
Exemplo n.º 35
0
 public void ResetWorldDatabase()
 {
     worldDatabase = new WorldDatabase(Settings.Default.Host, Settings.Default.Port, Settings.Default.User, GetPasswordSetting(), Settings.Default.Database);
 }
Exemplo n.º 36
0
 public void ResetWorldDatabase(MySqlConnectionStringBuilder _connectionString)
 {
     worldDatabase = new WorldDatabase(_connectionString.Server, _connectionString.Port, _connectionString.UserID, _connectionString.Password, _connectionString.Database);
 }
Exemplo n.º 37
0
 protected Manager()
 {
     WorldDB = WorldDatabase.ActiveWorldDatabase;
 }
Exemplo n.º 38
0
        private void buttonTestConnection_Click(object sender, EventArgs e)
        {
            buttonTestConnection.Enabled = false;

            MySqlConnectionStringBuilder _connectionString = new MySqlConnectionStringBuilder();
            _connectionString.Server = textBoxHost.Text;
            _connectionString.UserID = textBoxUsername.Text;
            _connectionString.Port = CustomConverter.ToUInt32(textBoxPort.Text);
            _connectionString.Database = textBoxWorldDatabase.Text;

            if (textBoxPassword.Text.Length > 0)
                _connectionString.Password = textBoxPassword.Text;

            WorldDatabase worldDatabase = null;

            if (!Settings.Default.UseWorldDatabase)
                worldDatabase = new WorldDatabase(Settings.Default.Host, Settings.Default.Port, Settings.Default.User, SAI_Editor_Manager.Instance.GetPasswordSetting(), Settings.Default.Database);
            else
                worldDatabase = SAI_Editor_Manager.Instance.worldDatabase;

            //! If no connection was established, it would throw an error in WorldDatabase.CanConnectToDatabase.
            if (worldDatabase.CanConnectToDatabase(_connectionString))
                MessageBox.Show("Connection successful!", "Connection status", MessageBoxButtons.OK, MessageBoxIcon.Information);

            buttonTestConnection.Enabled = true;
        }
Exemplo n.º 39
0
        private async void buttonSearchForWorldDb_Click(object sender, EventArgs e)
        {
            buttonSearchForWorldDb.Enabled = false;

            WorldDatabase worldDatabase = new WorldDatabase(textBoxHost.Text, CustomConverter.ToUInt32(textBoxPort.Text), textBoxUsername.Text, textBoxPassword.Text, "");
            List<string> databaseNames = await SAI_Editor_Manager.Instance.GetDatabasesInConnection(textBoxHost.Text, textBoxUsername.Text, CustomConverter.ToUInt32(textBoxPort.Text), textBoxPassword.Text, worldDatabase);

            if (databaseNames != null && databaseNames.Count > 0)
                using (var selectDatabaseForm = new SelectDatabaseForm(databaseNames, textBoxWorldDatabase))
                    selectDatabaseForm.ShowDialog(this);

            buttonSearchForWorldDb.Enabled = true;
        }