예제 #1
0
파일: MainForm.cs 프로젝트: 0b0/GameServer
        //obiekt przechowujący obiekty ubiegające się o dostęp do wątku
        //private Object Sync;
        public MainForm()
        {
            InitializeComponent();

            //Sync = new Object();

            //domyślnie serwer jest wyłączony
            isRunning = false;
            timer = new System.Windows.Forms.Timer();
            timer.Interval = 1000;
            timer.Tick += new EventHandler(DisplayServerTime);
            timer.Start();

            //utworzenie gniazda serwera
            try
            {
                server = new TcpListener(IPAddress.Any, 8001);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Nie udało się utworzyć gniazda serwera. Dalsze korzystanie z aplikacji może generować błędy! Uruchom aplikację jeszcze raz.\nDebuger message:\n" + ex.ToString(), "Błąd tworzenia gniazda serwera!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            dataBase = new GlobalMySql();

            try
            {
                dataBase.Connection.Open();
            }
            catch
            {
                AddLog("Nie udało się nawiązać połączenia z bazą danych. Aplikacja nie będzie działać poprawanie.");
            }
        }
예제 #2
0
        //konstruktor
        public Enemies(uint location, GlobalMySql GlobalMySqlObject)
        {
            enemiesList = new List<Mob>();

            //przypisanie obiektu zawierającego ustawienia i połączenie z bazą do obiektu postaci
            dataBase = GlobalMySqlObject;

            if (dataBase.Connection.State != ConnectionState.Open)
            {
                try
                {
                    dataBase.Connection.Open();
                }
                catch
                {
                    //
                }
            }

            MySqlCommand query = dataBase.Connection.CreateCommand();

            //wybierze potwory przypisane do zadanej lokalizacji
            query.CommandText = "SELECT C.id_creature, C.name, C.level, C.bonusHP, C.strength, C.luck, C.dexterity, C.stamina, C.gold_drop, C.exp, C.icon_name FROM creature C, wystepowanie W WHERE (W.id_surr = " + location + " AND W.id_creature = C.id_creature)";

            try
            {
                using (MySqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Mob mb = new Mob(
                            reader.GetUInt64("id_creature"),
                            reader.GetString("name"),
                            reader.GetUInt32("level"),
                            reader.GetUInt64("bonusHP"),
                            reader.GetUInt32("strength"),
                            reader.GetUInt32("luck"),
                            reader.GetUInt32("dexterity"),
                            reader.GetUInt32("stamina"),
                            reader.GetUInt32("gold_drop"),
                            reader.GetUInt32("exp"),
                            reader.GetString("icon_name")
                            );

                        enemiesList.Add(mb);
                        ++mobsCount;
                    }
                }
            }
            catch
            {
                //
            }
        }
예제 #3
0
        public ItemsWeapon(GlobalMySql dataBase)
        {
            itemWList = new List<ItemWeapon>();

            if (dataBase.Connection.State != ConnectionState.Open)
            {
                try
                {
                    dataBase.Connection.Open();
                }
                catch
                {
                    //
                }
            }

            MySqlCommand query = dataBase.Connection.CreateCommand();
            query.CommandText = "SELECT ITEM.*, WEAPON_DETAILS.min_attack, WEAPON_DETAILS.max_attack, BONUSES.strength, BONUSES.stamina, BONUSES.dexterity, BONUSES.luck FROM `item` ITEM, `weapon_details` WEAPON_DETAILS, `bonuses` BONUSES WHERE ITEM.type='weapon' AND ITEM.id=WEAPON_DETAILS.id AND ITEM.id=BONUSES.id";

            try
            {
                using (MySqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        ItemWeapon weapon = new ItemWeapon(
                            reader.GetUInt32("id"),
                            reader.GetString("type"),
                            reader.GetUInt32("price"),
                            reader.GetString("name"),
                            reader.GetUInt32("min_attack"),
                            reader.GetUInt32("max_attack"),
                            reader.GetUInt32("strength"),
                            reader.GetUInt32("stamina"),
                            reader.GetUInt32("dexterity"),
                            reader.GetUInt32("luck")
                            );
                        itemWList.Add(weapon);
                    }
                }
            }
            catch
            {
                //
            }
        }
예제 #4
0
        public CharacterStorage(ulong id, GlobalMySql GlobalMySqlObject)
        {
            //items = new List<Item>();
            storage = new List<Storage>();

            dataBase = GlobalMySqlObject;
            this.id = id;

            if (dataBase.Connection.State != ConnectionState.Open)
            {
                try
                {
                    dataBase.Connection.Open();
                }
                catch
                {
                    System.Windows.Forms.MessageBox.Show("Character_storage: Nie udało się połączyć z bazą danych");
                    return;
                }
            }

            MySqlCommand query = dataBase.Connection.CreateCommand();

            query.CommandText = "SELECT S.* FROM `character_storage` S WHERE S.id = " + this.id;

            try
            {
                using (MySqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Storage position = new Storage(
                            reader.GetUInt32("id"),
                            reader.GetUInt32("id_item"),
                            reader.GetUInt32("amount")
                            );
                        storage.Add(position);
                    }
                }
            }
            catch
            {
                //
            }
        }
예제 #5
0
        public CharacterEquipment(ulong characterId, GlobalMySql GlobalMySqlObject)
        {
            //przypisanie identyfikatora postaci
            id = characterId;

            //przypisanie obiektu zawierającego ustawienia i połączenie z bazą do obiektu postaci
            dataBase = GlobalMySqlObject;

            if (dataBase.Connection.State != ConnectionState.Open)
            {
                try
                {
                    dataBase.Connection.Open();
                }
                catch
                {
                    //
                }
            }

            MySqlCommand query = dataBase.Connection.CreateCommand();
            query.CommandText = "SELECT * FROM `character_equipment` WHERE `character_equipment`.`id` = " + id;

            try
            {
                using (MySqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        head = reader.GetUInt32("head");
                        chest = reader.GetUInt32("chest");
                        legs = reader.GetUInt32("legs");
                        weapon = reader.GetUInt32("weapon");
                        shield = reader.GetUInt32("shield");
                    }
                }
            }
            catch
            {
                //
            }
        }
예제 #6
0
        private void testConnection_Click(object sender, EventArgs e)
        {
            GlobalMySql testConnection;
            if (mysqlPort.Text == "")
            {
                testConnection = new GlobalMySql(mysqlLogin.Text, mysqlPass.Text, mysqlBase.Text, mysqlHost.Text);
            }
            else
            {
                testConnection = new GlobalMySql(mysqlLogin.Text, mysqlPass.Text, mysqlBase.Text, mysqlHost.Text, mysqlPort.Text);
            }

            //próba otworzenia połączenia
            try
            {
                testConnection.Connection.Open();
                MessageBox.Show("Udało połączyć się z hostem", "Połączenie udane!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Nie można połączyć się z bazą danych! Błąd: \n" + ex.Message.ToString(), "Błąd połączenia z bazą danych", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
예제 #7
0
        private void ExecuteQuery(object query, GlobalMySql db)
        {
            //zdefiniowanie zmiennej polecenia w obrębie obiektu połączenia connection
            MySqlCommand polecenie = db.Connection.CreateCommand();
            //utworzenie zapytania
            polecenie.CommandText = (string)query;

            polecenie.ExecuteNonQuery();
        }
예제 #8
0
파일: Map.cs 프로젝트: Bejusek/GameServer
        public Map(GlobalMySql GlobalMySqlObject)
        {
            //zainicjalizowanie obiektu obliczeniowego Dijkstry
            dijkstra = new Dijkstra.Dijkstra();

            citiesNumber = 0;
            maxId = 0;

            //ustawienie połączenia z bazą
            dataBase = GlobalMySqlObject;
            if (dataBase.Connection.State != ConnectionState.Open)
            {
                try
                {
                    dataBase.Connection.Open();
                }
                catch
                {
                    //
                }
            }

            MySqlCommand query = dataBase.Connection.CreateCommand();

            //ustalenie najwiekszego identyfikatora miasta w bazie
            query.CommandText = "SELECT GREATEST( MAX( id_city ) , MAX( id_cityB ) ) AS max FROM `times`";
            try
            {
                maxId = uint.Parse(query.ExecuteScalar().ToString());
            }
            catch
            {
                //
            }

            //utworznie zapytania pobierającego dane o miastach
            query.CommandText = "SELECT * FROM `map_city`";

            //pobranie danych o miastach
            try
            {
                using (MySqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        //utworznie obiektu typu City z danymi z pojedynczego rekordu
                        City city = new City(
                            reader.GetUInt32("id"),
                            reader.GetString("name"),
                            reader.GetUInt32("accessLevel"),
                            reader.GetUInt32("leftCoordinate"),
                            reader.GetUInt32("topCoordinate"),
                            reader.GetString("icon")
                            );

                        //dodanie obiektu do listy miast
                        cityData.Add(city);

                        //zwiększenie liczby miast
                        citiesNumber++;
                    }
                }
            }
            catch
            {
                //
            }

            //utworzenie zapytania pobierającego czasy między lokacjami
            query.CommandText = "SELECT * FROM `times`";

            //pobranie danych o miastach
            try
            {
                using (MySqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        //utworzenie połączenia pomiędzy
                        Link(
                            reader.GetUInt32("id_city"),
                            reader.GetUInt32("id_cityB"),
                            reader.GetInt32("weight")
                            );
                    }
                }
            }
            catch
            {
                //
            }
        }
예제 #9
0
        public Character(ulong playerId, GlobalMySql GlobalMySqlObject)
        {
            //kosntruktor postaci

            //przypisanie identyfikatora gracza do indetyfikatora postaci
            this.Id = playerId;

            //przypisanie obiektu zawierającego ustawienia i połączenie z bazą do obiektu postaci
            dataBase = GlobalMySqlObject;

            equipment = new CharacterEquipment(playerId, GlobalMySqlObject);
            storage = new CharacterStorage(playerId, dataBase);

            if (dataBase.Connection.State != ConnectionState.Open)
            {
                try
                {
                    dataBase.Connection.Open();
                }
                catch
                {
                    //
                }
            }

            MySqlCommand query = dataBase.Connection.CreateCommand();

            //zapytanie pobierające podstawowe dane postaci
            query.CommandText = "SELECT * FROM `character` WHERE `character`.`id` = " + Id;

            try
            {
                using (MySqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        name = reader.GetString("name");
                        level = reader.GetUInt32("level");
                        strength = reader.GetUInt32("strength");
                        stamina = reader.GetUInt32("stamina");
                        dexterity = reader.GetUInt32("dexterity");
                        luck = reader.GetUInt32("luck");

                        exp = reader.GetUInt32("exp");
                        gold = reader.GetUInt32("gold");
                    }
                }
            }
            catch
            {
                //
            }

            query.CommandText = "SELECT * FROM `character_status` WHERE `character_status`.`id` = " + Id;

            try
            {
                using (MySqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        status = reader.GetString("status");
                        lastDamage = reader.GetUInt64("lastDamage");
                        damage = reader.GetUInt64("damage");
                        lastFatigue = reader.GetUInt64("lastFatigue");
                        fatigue = reader.GetUInt64("fatigue");

                        location = reader.GetUInt32("location");
                        travelEndTime = reader.GetUInt64("travelEndTime");
                        travelDestination = reader.GetUInt32("travelDestination");
                    }
                }
            }
            catch
            {
                //
            }
        }
예제 #10
0
        public Skills(GlobalMySql dataBase)
        {
            skillList = new List<Skill>();

            if (dataBase.Connection.State != ConnectionState.Open)
            {
                try
                {
                    dataBase.Connection.Open();
                }
                catch
                {
                    //
                }
            }

            MySqlCommand query = dataBase.Connection.CreateCommand();
            query.CommandText = "SELECT * FROM `skills`";

            try
            {
                using (MySqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Skill skill = new Skill(
                            reader.GetUInt32("id_skill"),
                            reader.GetUInt32("dostep_lv"),
                            reader.GetUInt32("strength"),
                            reader.GetUInt32("stamina"),
                            reader.GetUInt32("dexterity"),
                            reader.GetUInt32("luck")
                            );
                        skillList.Add(skill);
                    }
                }
            }
            catch
            {
                //
            }
        }
예제 #11
0
        public ItemsArmor(GlobalMySql dataBase)
        {
            itemAList = new List<ItemArmor>();

            if (dataBase.Connection.State != ConnectionState.Open)
            {
                try
                {
                    dataBase.Connection.Open();
                }
                catch
                {
                    //
                }
            }

            MySqlCommand query = dataBase.Connection.CreateCommand();
            query.CommandText = "SELECT ITEM.*, ARMOR_DETAILS.part, ARMOR_DETAILS.armor, BONUSES.strength, BONUSES.stamina, BONUSES.dexterity, BONUSES.luck FROM `item` ITEM, `armor_details` ARMOR_DETAILS, `bonuses` BONUSES WHERE ITEM.type='armor' AND ITEM.id=ARMOR_DETAILS.id AND ITEM.id=BONUSES.id";

            try
            {
                using (MySqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        ItemArmor armor = new ItemArmor(
                            reader.GetUInt32("id"),
                            reader.GetString("type"),
                            reader.GetUInt32("price"),
                            reader.GetString("name"),
                            reader.GetString("part"),
                            reader.GetUInt32("armor"),
                            reader.GetUInt32("strength"),
                            reader.GetUInt32("stamina"),
                            reader.GetUInt32("dexterity"),
                            reader.GetUInt32("luck")
                            );
                        itemAList.Add(armor);
                    }
                }
            }
            catch
            {
                //
            }
        }