Пример #1
0
        private void OnRecvPlayerEnter(IChannel channel, Message message)
        {
            SPlayerEnter msg = message as SPlayerEnter;

            switch (msg.status)
            {
            case SPlayerEnter.Status.Fail:
                Debug.Log("Login fail");
                Debug.Log(string.Format("name:{0} token:{1} scene:{2} status:{3}", msg.user, msg.token, msg.scene, msg.status));
                MessageBox.Show("Username doesn't exists or wrong password.");
                return;

            case SPlayerEnter.Status.Error:
                MessageBox.Show("Login Error.");
                return;
            }
            MyNetwork network = GameObject.FindObjectOfType <MyNetwork>();
            GameStart startup = GameObject.FindObjectOfType <GameStart>();

            if (network.gameScene)
            {// ignore enter scene message when debug mode
                return;
            }
            //Console.WriteLine("Receive Enter...");
            World.Instance.selfId = msg.id;
            startup.PlayerEnter(msg.scene);
        }
Пример #2
0
        private void OnRecvPlayerEnter(IChannel channel, Message message)
        {
            MyNetwork network = GameObject.FindObjectOfType <MyNetwork>();
            GameStart startup = GameObject.FindObjectOfType <GameStart>();

            if (network.gameScene)
            {// ignore enter scene message when debug mode
                return;
            }
            //Console.WriteLine("Receive Enter...");
            SPlayerEnter msg = message as SPlayerEnter;

            startup.PlayerEnter(msg.scene);
        }
Пример #3
0
        private void OnRecvLogin(IChannel channel, Message message)
        {
            CLogin request = message as CLogin;
            string scene   = "Level1";

            // read from database
            ConnectDB connect  = new ConnectDB();
            int       playerID = connect.LogIn(request.user, request.password);

            if (playerID == 0)
            {
                ClientTipInfo(channel, "Wrong UserName or Passwd!");
                return;
            }
            if (OnlinePlayers.ContainsKey(request.user))
            {
                ClientTipInfo(channel, "user has logged in!");
                return;
            }

            SPlayerEnter response = new SPlayerEnter()
            {
                user  = request.user,
                token = request.user,
                scene = scene
            };

            channel.Send(response);

            Player player = new Player(channel)
            {
                scene = scene
            };
            DEntity dentity = World.Instance.EntityData["Ellen"];

            player.FromDEntity(dentity);
            player.forClone = false;
            connect.GetPlayerAttri(playerID, player);
            Console.WriteLine("user: {0} login", player.user);

            // DOTO: Add xyz from db
        }
Пример #4
0
        private void OnRecvPlayerEnter(IChannel channel, Message message)
        {
            MyNetwork network = GameObject.FindObjectOfType <MyNetwork>();
            GameStart startup = GameObject.FindObjectOfType <GameStart>();

            if (network.gameScene)
            {// ignore enter scene message when debug mode
                return;
            }
            Debug.Log("Receive Enter...");
            SPlayerEnter msg = message as SPlayerEnter;

            World.Instance.init(msg.user, msg.id, msg.dbid, msg.inventory, msg.gold, msg.silver, msg.teammate_id);
            //World.Instance.addPlayers(msg.user, msg.id);
            foreach (KeyValuePair <string, int> kvp in World.Instance.get_players())
            {
                Debug.Log(kvp.Key);
            }
            Debug.Log(msg.id);
            startup.PlayerEnter(msg.scene);
        }
Пример #5
0
        private void OnRecvLogin(IChannel channel, Message message)
        {
            CLogin       request  = message as CLogin;
            SPlayerEnter response = new SPlayerEnter();
            string       scene    = "Level1";

            response.user  = request.user;
            response.token = request.user;
            response.scene = scene;
            channel.Send(response);

            Player player = new Player(channel);

            player.scene = scene;
            // TODO read from database
            DEntity dentity = World.Instance.EntityData["Ellen"];

            player.FromDEntity(dentity);
            player.forClone = false;
            //ClientTipInfo(channel, "TODO: get player's attribute from database");
            // player will be added to scene when receive client's CEnterSceneDone message
        }
Пример #6
0
        private void OnRecvLogin(IChannel channel, Message message)
        {
            CLogin       request  = message as CLogin;
            SPlayerEnter response = new SPlayerEnter();
            string       scene    = "Level1";

            response.user = request.user;
            //Console.WriteLine(request.user);
            response.token = request.password;
            //Console.WriteLine(request.password);
            response.scene        = scene;
            response.exist_or_not = false;

            Player player = new Player(channel);

            player.scene = scene;
            player.user  = request.user;

            Console.WriteLine("Connecting PostgreSQL");
            var connString = "Host=localhost;Port=5432;Username=postgres;Password=123456;Database=postgres";
            var conn       = new NpgsqlConnection(connString);

            conn.Open();
            Console.WriteLine("Connected PostgreSQL");
            var    cmd      = new NpgsqlCommand(string.Format("SELECT password,Inteligence,Speed,Level,Attack,Defense,gold_coins,silver_coins,defense_item,attack_item,speed_item,inteligence_item FROM users WHERE name = '{0}'", request.user), conn);
            var    reader   = cmd.ExecuteReader();
            int    count    = 0;
            string password = "";

            while (reader.Read())
            {
                count++;
                Console.WriteLine(reader.GetString(0));
                password = reader.GetString(0);

                Console.WriteLine(reader.GetInt16(1));
                player.InteligenceValue = Convert.ToString(reader.GetInt16(1));

                Console.WriteLine(reader.GetInt16(2));
                player.SpeedValue = Convert.ToString(reader.GetInt16(2));

                Console.WriteLine(reader.GetInt16(3));
                player.LevelValue = Convert.ToString(reader.GetInt16(3));

                Console.WriteLine(reader.GetInt16(4));
                player.AttackValue = Convert.ToString(reader.GetInt16(4));

                Console.WriteLine(reader.GetInt16(5));
                player.DefenseValue = Convert.ToString(reader.GetInt16(5));

                Console.WriteLine(reader.GetInt16(6));
                player.gold_coins = reader.GetInt16(6);

                Console.WriteLine(reader.GetInt16(7));
                player.silver_coins = reader.GetInt16(7);

                Console.WriteLine(reader.GetString(8));
                player.defense_item = reader.GetString(8);

                Console.WriteLine(reader.GetString(9));
                player.attack_item = reader.GetString(9);

                Console.WriteLine(reader.GetString(10));
                player.speed_item = reader.GetString(10);

                Console.WriteLine(reader.GetString(11));
                player.inteligence_item = reader.GetString(11);
            }
            Console.WriteLine(count);
            if (count != 0)
            {
                Console.WriteLine("count!=0");
                if (password.Equals(request.password))
                {
                    Console.WriteLine("Comparing yes");
                    ClientTipInfo(channel, "Entering");
                    response.exist_or_not = true;
                    channel.Send(response);
                }
                else
                {
                    Console.WriteLine("Comparing no");
                    ClientTipInfo(channel, "Wrong password");
                    channel.Send(response);
                }
            }
            else
            {
                ClientTipInfo(channel, "Wrong username");
                channel.Send(response);
            }

            DEntity dentity = World.Instance.EntityData["Ellen"];

            player.FromDEntity(dentity);
            player.forClone = false;

            reader.Close();
        }
Пример #7
0
        private void OnRecvLogin(IChannel channel, Message message)
        {
            CLogin       request  = message as CLogin;
            SPlayerEnter response = new SPlayerEnter();

            var hasUser = GameDataBase.SQLQueryScalar(string.Format(
                                                          "Select player_id from Player Where account_id IN (Select account_id from Account Where username='******' and password='******');", request.user, request.password
                                                          ));

            if (hasUser == null)
            {
                response.status = SPlayerEnter.Status.Fail;
                channel.Send(response);
                Console.WriteLine("Login Fail : {0} {1}", request.user, request.password);
                return;
            }
            else if (World.Instance.OnlinePlayers.ContainsKey((int)hasUser))
            {
                response.status = SPlayerEnter.Status.Error;
                channel.Send(response);
                Console.WriteLine("Player {0} {1} relogin.", request.user, hasUser);
                return;
            }
            Player player = new Player(channel);

            player.player_id = (int)hasUser;
            string scene = "Level1";

            using (var conn = DataBase.GameDataBase.GetConnection())
            {
                using (var cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "Select scene From Player Where player_id = @player_id";
                    cmd.Parameters.AddWithValue("player_id", player.player_id);
                    var res = cmd.ExecuteScalar();
                    if (res == null)
                    {
                        return;
                    }
                    scene = (string)res;
                }
            }
            response.user   = request.user;
            response.token  = request.user;
            response.id     = player.entityId;
            response.scene  = scene;
            response.status = SPlayerEnter.Status.Success;
            channel.Send(response);

            World.Instance.AddPlayer(player);

            Console.WriteLine("User {0} login", request.user);

            player.scene = scene;
            // TODO read from database
            DEntity dentity = World.Instance.EntityData["Ellen"];

            player.FromDEntity(dentity);
            player.forClone = false;
            player.token    = response.user;
            player.user     = response.user;
        }
Пример #8
0
        private void OnRecvLogin(IChannel channel, Message message)
        {
            CLogin       request  = message as CLogin;
            SPlayerEnter response = new SPlayerEnter();
            string       scene    = "Level1";

            response.user  = request.user;
            response.token = request.user;
            response.scene = scene;
            var conn = db.Instance.Connect();

            if (db.Instance.LoginUser(request.user.ToString(), request.password.ToString(), conn))
            {
                //response.id = db.GetID(request.user);
                ClientTipInfo(channel, "Successfully login :)");
                //channel.Send(response);
            }
            else
            {
                ClientTipInfo(channel, "Sorry :(");
                return;
            }
            Player player = new Player(channel);

            player.scene = scene;
            player.user  = request.user;
            player.id    = response.id;
            player.dbid  = db.Instance.GetID(request.user, conn);
            int k = player.entityId;

            response.id   = k;
            response.dbid = player.dbid;
            ClientTipInfo(channel, string.Format("Backend:('name: {0}', 'entity_id: {1}','sql_id: {2});", player.user, player.entityId, player.dbid));
            DEntity dentity = World.Instance.EntityData["Ellen"];

            player.FromDEntity(dentity);
            player.forClone = false;

            SCommunity bm = new SCommunity();

            bm.name              = request.user;
            bm.id                = k;
            bm.enter             = true;
            response.inventory   = db.Instance.GetInventory(player.dbid, conn);
            response.market      = db.Instance.GetMyMarket(player.dbid, conn);
            response.silver      = db.Instance.GetSilverCoins(player.dbid, conn);
            response.gold        = db.Instance.GetGoldCoins(player.dbid, conn);
            response.teammate_id = db.Instance.getTeammate(player.dbid, conn);
            channel.Send(response);
            Scene      scenes   = World.Instance.GetScene(player.scene);
            List <int> myFriend = db.Instance.getMyFriend(player.dbid, conn);

            foreach (var kvp in scenes.Players)
            {
                if (myFriend.Contains(kvp.Value.dbid) == false)
                {
                    continue;
                }
                SCommunity am = new SCommunity();
                am.name  = kvp.Value.user;
                am.id    = kvp.Value.entityId;
                am.enter = true;
                channel.Send(am);
                kvp.Value.connection.Send(bm);
            }

            STemp snameresponse = new STemp();

            snameresponse.name     = request.user;
            snameresponse.entityid = player.entityId;
            World.Instance.Broundcast(snameresponse);
            Console.WriteLine(string.Format("send to backend sucess"));
        }