private void OnRecvPlayerAttribute(IChannel channel, Message message)
        {
            SPlayerAttribute msg = message as SPlayerAttribute;

            PlayerInfo.playerId     = msg.playerId;
            PlayerInfo.name         = msg.name;
            PlayerInfo.currentHP    = msg.currentHP;
            PlayerInfo.level        = msg.level;
            PlayerInfo.speed        = msg.speed;
            PlayerInfo.defense      = msg.defense;
            PlayerInfo.attack       = msg.attack;
            PlayerInfo.intelligence = msg.intelligence;
            PlayerInfo.GoldNum      = msg.GoldNum;
            PlayerInfo.SilverNum    = msg.SilverNum;
        }
Exemple #2
0
        private void OnRecvPlayerAttribute(IChannel channel, Message message)
        {
            SPlayerAttribute msg = message as SPlayerAttribute;
            var player           = World.Instance.fPlayer;

            player.base_health       = msg.health;
            player.base_intelligence = msg.intelligence;
            player.base_defence      = msg.defence;
            player.base_speed        = msg.speed;
            player.base_damage       = msg.damage;

            player.gold   = msg.gold;
            player.silver = msg.silver;
            player.hp     = msg.hp;

            player.pos = msg.pos;
            var trans = GameObject.FindObjectOfType <PlayerMyController>().transform;

            trans.position = new Vector3(msg.pos.x, msg.pos.y, msg.pos.z);
        }
Exemple #3
0
        private void OnRecvPlayerEnter(IChannel channel, Message message)
        {
            CPlayerEnter request = message as CPlayerEnter;
            Player       player  = (Player)channel.GetContent();
            Scene        scene   = World.Instance.GetScene(player.scene);

            // add the player to the scene
            player.Spawn();
            scene.AddEntity(player);

            // send player attributes
            SPlayerAttribute attrMessage = new SPlayerAttribute()
            {
                playerId     = player.entityId,
                name         = player.user,
                currentHP    = player.currentHP,
                level        = player.level,
                intelligence = player.intelligence,
                speed        = player.speed,
                attack       = player.attack,
                defense      = player.defense,
                GoldNum      = player.GoldNum,
                SilverNum    = player.SilverNum
            };

            channel.Send(attrMessage);

            // add online player
            OnlinePlayers.Add(player.user, player);
            // send oneline player to frontend
            Dictionary <int, string> SendDic = new Dictionary <int, string>();

            foreach (KeyValuePair <string, Player> tmp in OnlinePlayers)
            {
                SendDic.Add(tmp.Value.entityId, tmp.Key);
                Console.WriteLine("contains user:{0}", tmp.Key);
            }
            SFindFriends response = new SFindFriends()
            {
                friends = SendDic
            };

            player.Broadcast(response);


            // send treasure attributes
            ConnectDB connect = new ConnectDB();

            if (treasureAttributes.Count == 0)
            {
                treasureAttributes = new Dictionary <string, DTreasure>(connect.GetTreasureAttri());
            }
            STreasureAttribute treasureAttribute = new STreasureAttribute()
            {
                treasureAttri = new Dictionary <string, DTreasure>(treasureAttributes)
            };

            channel.Send(treasureAttribute);

            // send mall
            if (backMall.Count == 0)
            {
                backMall = new Dictionary <string, DTreasureMall>(connect.DBGetMall());
            }
            SMall mall = new SMall()
            {
                goods = new Dictionary <string, DTreasureMall>(backMall)
            };

            channel.Send(mall);

            // send package
            SPackage package = new SPackage()
            {
                goods = new Dictionary <string, DTreasurePackage>(connect.DBGetPackage(player.user))
            };

            channel.Send(package);

            // send friends
            SFriends friendList = new SFriends()
            {
                friends = new List <string>(connect.GetFriends(player.user))
            };

            channel.Send(friendList);

            // send friend requests
            SFindFriendRequests requestList = new SFindFriendRequests()
            {
                requests = new List <string>(connect.GetFriendRequest(player.user))
            };

            channel.Send(requestList);
        }
Exemple #4
0
        private void OnRecvBuy(IChannel channel, Message message)
        {
            CBuy             request  = message as CBuy;
            Player           player   = (Player)channel.GetContent();
            SPlayerAttribute response = new SPlayerAttribute();

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

            conn.Open();
            var cmd = new NpgsqlCommand(string.Format("SELECT gold_coins,silver_coins FROM users WHERE name = '{0}'", player.user), conn);

            Console.WriteLine("Select finished");
            Console.WriteLine(player.user);
            var reader = cmd.ExecuteReader();

            reader.Read();
            Console.WriteLine(reader.GetInt16(0));
            Console.WriteLine(reader.GetInt16(1));
            int remain_gold_coins   = reader.GetInt16(0) - request.sum_gold_price;
            int remain_silver_coins = reader.GetInt16(1) - request.sum_silver_price;

            reader.Close();
            Console.WriteLine(remain_gold_coins);
            Console.WriteLine(remain_silver_coins);
            Dictionary <String, int> products = new Dictionary <string, int>();

            products = request.products;
            foreach (KeyValuePair <string, int> kvp in products)
            {
                Console.Write("{0},{1}  ", kvp.Key, kvp.Value);
            }

            if (request.buy_by_gold == 1)
            {
                var conn2 = new NpgsqlConnection(connString);
                conn2.Open();
                Console.WriteLine("writing gold_coins");
                var cmd2    = new NpgsqlCommand(string.Format("UPDATE users SET gold_coins='{0}' WHERE name = '{1}';", remain_gold_coins, player.user), conn2);
                var reader2 = cmd2.ExecuteReader();
                reader2.Read();
                Console.WriteLine("write coins finished");
                ClientTipInfo(channel, string.Format("Bought successfully,your remainning gold_coin is {0}", remain_gold_coins));
                player.gold_coins = remain_gold_coins;
                reader2.Close();
            }
            else if (request.buy_by_silver == 1)
            {
                var conn2 = new NpgsqlConnection(connString);
                conn2.Open();
                Console.WriteLine("writing silver_coins");
                var cmd2    = new NpgsqlCommand(string.Format("UPDATE users SET silver_coins='{0}' WHERE name = '{1}';", remain_silver_coins, player.user), conn2);
                var reader2 = cmd2.ExecuteReader();
                reader2.Read();
                Console.WriteLine("write coins finished");
                ClientTipInfo(channel, string.Format("Bought successfully,your remainning silver_coin is {0}", remain_silver_coins));
                player.silver_coins = remain_silver_coins;
                reader2.Close();
            }



            Console.WriteLine("writing products");
            foreach (KeyValuePair <string, int> kvp in products)
            {
                Console.WriteLine("iterating");
                int current_num = 0;
                var conn3       = new NpgsqlConnection(connString);
                conn3.Open();
                var cmd3 = new NpgsqlCommand(string.Format("SELECT item_num FROM users_items WHERE item_name = '{0}'and user_name='{1}';", kvp.Key, player.user), conn3);
                Console.WriteLine("conn3 select");
                var reader3 = cmd3.ExecuteReader();
                int count   = 0;
                while (reader3.Read())
                {
                    count++;
                    current_num = reader3.GetInt16(0);
                }
                reader3.Close();
                Console.WriteLine(count);
                if (count != 0)
                {
                    Console.WriteLine("if 1");
                    Console.WriteLine(current_num);
                    var conn4 = new NpgsqlConnection(connString);
                    conn4.Open();
                    var cmd4    = new NpgsqlCommand(string.Format("update users_items set item_num=item_num+{0} where user_name='{1}'and item_name='{2}';", kvp.Value, player.user, kvp.Key), conn4);
                    var reader4 = cmd4.ExecuteReader();
                    reader4.Read();
                    reader4.Close();
                    Console.WriteLine("success if 1");
                }
                else
                {
                    Console.WriteLine("if 2");
                    var conn4 = new NpgsqlConnection(connString);
                    conn4.Open();
                    var cmd4    = new NpgsqlCommand(string.Format("INSERT INTO users_items VALUES ('{0}','{1}',{2});", kvp.Key, player.user, kvp.Value), conn4);
                    var reader4 = cmd4.ExecuteReader();
                    reader4.Read();
                    reader4.Close();
                    Console.WriteLine("success if 2");
                }
            }
            Console.WriteLine("write products finished");
            response.InteligenceValue = player.InteligenceValue;
            response.SpeedValue       = player.SpeedValue;
            response.LevelValue       = player.LevelValue;
            response.AttackValue      = player.AttackValue;
            response.DefenseValue     = player.DefenseValue;
            response.gold_coins       = player.gold_coins;
            response.silver_coins     = player.silver_coins;
            channel.Send(response);
        }
        private void OnRecvPlayerAttribute(IChannel channel, Message message)
        {
            //MyNetwork network = GameObject.FindObjectOfType<MyNetwork>();
            //GameStart startup = GameObject.FindObjectOfType<GameStart>();

            SPlayerAttribute msg = message as SPlayerAttribute;

            Attribute.name             = msg.name;
            Attribute.InteligenceValue = msg.InteligenceValue;
            Attribute.SpeedValue       = msg.SpeedValue;
            Attribute.LevelValue       = msg.LevelValue;
            Attribute.AttackValue      = msg.AttackValue;
            Attribute.DefenseValue     = msg.DefenseValue;
            Attribute.gold_coins       = msg.gold_coins;
            Attribute.silver_coins     = msg.silver_coins;
            Attribute.inteligence_item = msg.inteligence_item;
            Attribute.speed_item       = msg.speed_item;
            Attribute.defense_item     = msg.defense_item;
            Attribute.attack_item      = msg.attack_item;

            //GameObject.FindObjectOfType<CoinsUI>().GValue.SetText(Convert.ToString(Gamekit3D.Attribute.gold_coins), true);
            //GameObject.FindObjectOfType<CoinsUI>().SValue.SetText(Convert.ToString(Gamekit3D.Attribute.silver_coins), true);

            if (Attribute.defense_item != "0")
            {
                Sprite defense_icon = GetAllIcons.icons[Attribute.defense_item];
                GameObject.Find("DefenseImage").GetComponent <Image>().sprite = defense_icon;
            }
            if (Attribute.defense_item.Equals("0"))
            {
                GameObject.Find("DefenseImage").GetComponent <Image>().sprite = null;
            }

            if (Attribute.inteligence_item != "0")
            {
                Sprite in_icon = GetAllIcons.icons[Attribute.inteligence_item];
                GameObject.Find("InteligenceImage").GetComponent <Image>().sprite = in_icon;
            }
            if (Attribute.inteligence_item == "0")
            {
                GameObject.Find("InteligenceImage").GetComponent <Image>().sprite = null;
            }

            if (Attribute.attack_item != "0")
            {
                Sprite attack_icon = GetAllIcons.icons[Attribute.attack_item];
                GameObject.Find("AttackImage").GetComponent <Image>().sprite = attack_icon;
            }
            if (Attribute.attack_item == "0")
            {
                GameObject.Find("AttackImage").GetComponent <Image>().sprite = null;
            }

            if (Attribute.speed_item != "0")
            {
                Sprite speed_icon = GetAllIcons.icons[Attribute.speed_item];
                GameObject.Find("SpeedImage").GetComponent <Image>().sprite = speed_icon;
            }
            if (Attribute.speed_item == "0")
            {
                GameObject.Find("SpeedImage").GetComponent <Image>().sprite = null;
            }
        }
Exemple #6
0
        private void OnRecvUnapply(IChannel channel, Message message)
        {
            CUnapply         request  = message as CUnapply;
            SPlayerAttribute response = new SPlayerAttribute();
            //SGetInventory response2 = new SGetInventory();
            Player player = (Player)channel.GetContent();

            string item_name  = request.to_unapply;
            int    item_value = player.all_item_value[item_name];
            string item_type  = player.all_item_type[item_name];

            var connString = "Host=localhost;Port=5432;Username=postgres;Password=123456;Database=postgres";
            var sqlstring  = "";
            var sqlstring2 = "";

            if (item_type.Equals("defense"))
            {
                Console.WriteLine("if defense");
                player.defense_item = "0";
                sqlstring           = string.Format("update users set {0}={1}-{2} where name='{3}';", item_type, player.DefenseValue, item_value, player.user);
                sqlstring2          = string.Format("update users set defense_item='0' WHERE name='{0}'", player.user);
            }
            if (item_type.Equals("attack"))
            {
                Console.WriteLine("if attack");
                player.attack_item = "0";
                sqlstring          = string.Format("update users set {0}={1}-{2} where name='{3}';", item_type, player.AttackValue, item_value, player.user);
                sqlstring2         = string.Format("update users set defense_item='0' WHERE name='{0}'", player.user);
            }
            if (item_type.Equals("inteligence"))
            {
                Console.WriteLine("if inteligence");
                player.inteligence_item = "0";
                sqlstring  = string.Format("update users set {0}={1}-{2} where name='{3}';", item_type, player.InteligenceValue, item_value, player.user);
                sqlstring2 = string.Format("update users set defense_item='0' WHERE name='{0}'", player.user);
            }
            if (item_type.Equals("speed"))
            {
                Console.WriteLine("if speed");
                player.speed_item = "0";
                sqlstring         = string.Format("update users set {0}={1}-{2} where name='{3}';", item_type, player.SpeedValue, item_value, player.user);
                sqlstring2        = string.Format("update users set defense_item='0' WHERE name='{0}'", player.user);
            }
            var conn = new NpgsqlConnection(connString);

            conn.Open();
            var cmd    = new NpgsqlCommand(sqlstring, conn);
            var reader = cmd.ExecuteReader();

            reader.Read();
            reader.Close();

            var conn5 = new NpgsqlConnection(connString);

            conn5.Open();
            var cmd5    = new NpgsqlCommand(sqlstring2, conn5);
            var reader5 = cmd5.ExecuteReader();

            reader5.Read();
            reader5.Close();
            Console.WriteLine(" item and attribute update finished");

            var conn2 = new NpgsqlConnection(connString);

            conn2.Open();
            var cmd2    = 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}';", player.user), conn2);
            var reader2 = cmd2.ExecuteReader();

            reader2.Read();
            player.InteligenceValue = Convert.ToString(reader2.GetInt16(1));
            player.SpeedValue       = Convert.ToString(reader2.GetInt16(2));
            player.LevelValue       = Convert.ToString(reader2.GetInt16(3));
            player.AttackValue      = Convert.ToString(reader2.GetInt16(4));
            player.DefenseValue     = Convert.ToString(reader2.GetInt16(5));
            player.gold_coins       = reader2.GetInt16(6);
            player.silver_coins     = reader2.GetInt16(7);
            player.defense_item     = reader2.GetString(8);
            player.attack_item      = reader2.GetString(9);
            player.speed_item       = reader2.GetString(10);
            player.inteligence_item = reader2.GetString(11);

            Console.WriteLine("sending response");
            response.InteligenceValue = player.InteligenceValue;
            response.SpeedValue       = player.SpeedValue;
            response.LevelValue       = player.LevelValue;
            response.AttackValue      = player.AttackValue;
            response.DefenseValue     = player.DefenseValue;
            response.gold_coins       = player.gold_coins;
            response.silver_coins     = player.silver_coins;
            response.speed_item       = player.speed_item;
            response.attack_item      = player.attack_item;
            response.defense_item     = player.defense_item;
            response.inteligence_item = player.inteligence_item;
            reader2.Close();
            Console.WriteLine("update finished");
            channel.Send(response);


            ClientTipInfo(channel, "Unapplied successfully");
        }
Exemple #7
0
        private void OnRecvPlayerEnter(IChannel channel, Message message)
        {
            CPlayerEnter     request  = message as CPlayerEnter;
            SPlayerAttribute response = new SPlayerAttribute();
            Player           player   = (Player)channel.GetContent();

            Scene scene = World.Instance.GetScene(player.scene);

            // add the player to the scene
            player.Spawn();
            scene.AddEntity(player);
            Console.WriteLine("SPlayerAttribute response");
            response.name             = player.user;
            response.InteligenceValue = player.InteligenceValue;
            response.SpeedValue       = player.SpeedValue;
            response.LevelValue       = player.LevelValue;
            response.AttackValue      = player.AttackValue;
            response.DefenseValue     = player.DefenseValue;
            response.gold_coins       = player.gold_coins;
            response.silver_coins     = player.silver_coins;
            response.defense_item     = player.defense_item;
            response.attack_item      = player.attack_item;
            response.speed_item       = player.speed_item;
            response.inteligence_item = player.inteligence_item;
            channel.Send(response);


            SMarketAttribute market_response = new SMarketAttribute();

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

            conn.Open();
            var cmd = new NpgsqlCommand("SELECT item_name,item_type,item_value,gold_price,silver_price,durable FROM cartitems ", conn);

            Console.WriteLine("sql finished");
            var reader = cmd.ExecuteReader();
            //reader.Read();
            //int i = 0;
            String item_name;

            while (reader.Read())
            {
                /*for (i = 0; i < reader.FieldCount; i++)
                 * {
                 *  Console.Write("{0}  ", reader[i]); //获得字段名
                 * }*/
                item_name = Convert.ToString(reader["item_name"]);  // 获得指定字段的值
                //market.item.item_type  = Convert.ToString(reader["item_type"]);
                player.all_item_type.Add(item_name, Convert.ToString(reader["item_type"]));
                player.all_item_value.Add(item_name, Convert.ToInt16(reader["item_value"]));
                player.all_gold_price.Add(item_name, Convert.ToInt16(reader["gold_price"]));
                player.all_silver_price.Add(item_name, Convert.ToInt16(reader["silver_price"]));
                player.all_item_durable.Add(item_name, Convert.ToString(reader["durable"]));
            }
            reader.Close();
            //market_response.items = market.items;
            market_response.all_item_type    = player.all_item_type;
            market_response.all_item_value   = player.all_item_value;
            market_response.all_gold_price   = player.all_gold_price;
            market_response.all_silver_price = player.all_silver_price;
            market_response.all_item_durable = player.all_item_durable;

            /*foreach (KeyValuePair<string, short> kvp in market_response.all_gold_price)
             * {
             *  Console.Write("{0},{1}  ", kvp.Key,kvp.Value);
             * }*/
            channel.Send(market_response);

            SWorldMarketAttribute response2 = new SWorldMarketAttribute();
            //Console.WriteLine("Getting world market items");
            var conn2 = new NpgsqlConnection(connString);

            conn2.Open();
            var cmd2 = new NpgsqlCommand("SELECT item_id,item,seller,price,state FROM worldmarket", conn2);
            //Console.WriteLine("sql finished");
            var    reader2 = cmd2.ExecuteReader();
            String world_market_item_id;

            player.world_market_item_name.Clear();
            player.world_market_item_price.Clear();
            player.world_market_item_seller.Clear();
            while (reader2.Read())
            {
                if (Convert.ToInt16(reader2["state"]) == 0)
                {
                    world_market_item_id = Convert.ToString(reader2["item_id"]);
                    //Console.WriteLine(reader2["item_id"]);
                    player.world_market_item_name.Add(world_market_item_id, Convert.ToString(reader2["item"]));
                    //Console.WriteLine(reader2["item"]);
                    player.world_market_item_seller.Add(world_market_item_id, Convert.ToString(reader2["seller"]));
                    //Console.WriteLine(reader2["seller"]);
                    player.world_market_item_price.Add(world_market_item_id, Convert.ToInt16(reader2["price"]));
                    //Console.WriteLine(reader2["price"]);
                }
            }
            reader2.Close();
            response2.world_market_item_name   = player.world_market_item_name;
            response2.world_market_item_seller = player.world_market_item_seller;
            response2.world_market_item_price  = player.world_market_item_price;
            channel.Send(response2);


            SGetSellingInventory response3 = new SGetSellingInventory();

            Console.WriteLine("Getting Init Selling Inventory");
            var connString3 = "Host=localhost;Port=5432;Username=postgres;Password=123456;Database=postgres";
            var conn3       = new NpgsqlConnection(connString3);

            conn3.Open();
            var cmd3 = new NpgsqlCommand(string.Format("SELECT item_id,item FROM worldmarket WHERE seller = '{0}' and state=0;", player.user), conn3);

            Console.WriteLine("Select selling items finished");
            var    reader3    = cmd3.ExecuteReader();
            string item_name3 = "";
            string item_id    = "";

            while (reader3.Read())
            {
                item_id    = Convert.ToString(reader3["item_id"]);
                item_name3 = Convert.ToString(reader3["item"]); // 获得指定字段的值
                player.selling_Inventory.Add(item_id, item_name3);
            }
            reader3.Close();

            /*foreach (KeyValuePair<string, string> kvp in player.selling_Inventory)
             * {
             *  Console.WriteLine(kvp.Key + " "+kvp.Value);
             * }*/
            response3.player_selling_Inventory = player.selling_Inventory;
            channel.Send(response3);
        }
Exemple #8
0
        private void OnRecvApply(IChannel channel, Message message)
        {
            CApply           request   = message as CApply;
            SPlayerAttribute response  = new SPlayerAttribute();
            SGetInventory    response2 = new SGetInventory();
            Player           player    = (Player)channel.GetContent();

            Console.WriteLine("Applying");
            Console.WriteLine(request.to_apply);
            int    item_value = 0;
            int    current_defense_item_value     = 0;
            int    current_attack_item_value      = 0;
            int    current_speed_item_value       = 0;
            int    current_inteligence_item_value = 0;
            String item_type  = "";
            String if_durable = "";

            foreach (KeyValuePair <string, int> kvp in player.all_item_value)
            {
                if (kvp.Key.Equals(request.to_apply))
                {
                    item_value = kvp.Value;
                    Console.WriteLine(item_value);
                }
                if (kvp.Key.Equals(player.defense_item))
                {
                    current_defense_item_value = kvp.Value;
                }
                if (kvp.Key.Equals(player.attack_item))
                {
                    current_attack_item_value = kvp.Value;
                }
                if (kvp.Key.Equals(player.speed_item))
                {
                    current_speed_item_value = kvp.Value;
                }
                if (kvp.Key.Equals(player.inteligence_item))
                {
                    current_inteligence_item_value = kvp.Value;
                }
            }
            foreach (KeyValuePair <string, string> kvp in player.all_item_type)
            {
                if (kvp.Key.Equals(request.to_apply))
                {
                    item_type = kvp.Value;
                    Console.WriteLine(item_type);
                }
            }
            foreach (KeyValuePair <string, string> kvp in player.all_item_durable)
            {
                if (kvp.Key.Equals(request.to_apply))
                {
                    if_durable = kvp.Value;
                    Console.WriteLine(if_durable);
                }
            }
            var connString = "Host=localhost;Port=5432;Username=postgres;Password=123456;Database=postgres";
            var sqlstring  = "";
            var sqlstring2 = "";

            if (if_durable.Equals("1"))
            {
                Console.WriteLine("not durable");
                if (item_type.Equals("defense"))
                {
                    Console.WriteLine("if defense");
                    sqlstring = string.Format("update users set {0}={1}+{2} where name='{3}';", item_type, player.DefenseValue, item_value, player.user);
                    Console.WriteLine(sqlstring);
                }
                if (item_type.Equals("attack"))
                {
                    Console.WriteLine("if attack");
                    sqlstring = string.Format("update users set {0}={1}+{2} where name='{3}';", item_type, player.AttackValue, item_value, player.user);
                }
                if (item_type.Equals("inteligence"))
                {
                    Console.WriteLine("if inteligence");
                    sqlstring = string.Format("update users set {0}={1}+{2} where name='{3}';", item_type, player.InteligenceValue, item_value, player.user);
                }
                if (item_type.Equals("speed"))
                {
                    Console.WriteLine("if speed");
                    sqlstring = string.Format("update users set {0}={1}+{2} where name='{3}';", item_type, player.SpeedValue, item_value, player.user);
                }
                var conn3 = new NpgsqlConnection(connString);
                conn3.Open();
                var cmd3    = new NpgsqlCommand(string.Format("update users_items set item_num=item_num-1 where user_name='{0}'and item_name='{1}';", player.user, request.to_apply), conn3);
                var reader3 = cmd3.ExecuteReader();
                reader3.Read();
                reader3.Close();
                Console.WriteLine("update item number finished");
            }
            else if (if_durable.Equals("n"))
            {
                Console.WriteLine("if durable");

                if (item_type.Equals("defense"))
                {
                    Console.WriteLine("if defense");
                    player.defense_item = request.to_apply;
                    sqlstring           = string.Format("update users set {0}={1}-{2}+{3} where name='{4}';", item_type, player.DefenseValue, current_defense_item_value, item_value, player.user);
                    sqlstring2          = string.Format("update users set defense_item='{0}' WHERE name='{1}'", request.to_apply, player.user);
                }
                if (item_type.Equals("attack"))
                {
                    Console.WriteLine("if attack");
                    player.attack_item = request.to_apply;
                    sqlstring          = string.Format("update users set {0}={1}-{2}+{3} where name='{4}';", item_type, player.AttackValue, current_attack_item_value, item_value, player.user);
                    sqlstring2         = string.Format("update users set attack_item='{0}' WHERE name='{1}'", request.to_apply, player.user);
                }
                if (item_type.Equals("inteligence"))
                {
                    Console.WriteLine("if inteligence");
                    player.inteligence_item = request.to_apply;
                    sqlstring  = string.Format("update users set {0}={1}-{2}+{3} where name='{4}';", item_type, player.InteligenceValue, current_inteligence_item_value, item_value, player.user);
                    sqlstring2 = string.Format("update users set inteligence_item='{0}' WHERE name='{1}'", request.to_apply, player.user);
                }
                if (item_type.Equals("speed"))
                {
                    Console.WriteLine("if speed");
                    player.speed_item = request.to_apply;
                    sqlstring         = string.Format("update users set {0}={1}-{2}+{3} where name='{4}';", item_type, player.SpeedValue, current_speed_item_value, item_value, player.user);
                    sqlstring2        = string.Format("update users set speed_item='{0}' WHERE name='{1}'", request.to_apply, player.user);
                }
            }
            var conn = new NpgsqlConnection(connString);

            conn.Open();
            var cmd    = new NpgsqlCommand(sqlstring, conn);
            var reader = cmd.ExecuteReader();

            reader.Read();
            reader.Close();

            var conn5 = new NpgsqlConnection(connString);

            conn5.Open();
            var cmd5    = new NpgsqlCommand(sqlstring2, conn5);
            var reader5 = cmd5.ExecuteReader();

            reader5.Read();
            reader5.Close();
            Console.WriteLine("update finished");



            var conn2 = new NpgsqlConnection(connString);

            conn2.Open();
            var cmd2    = 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}';", player.user), conn2);
            var reader2 = cmd2.ExecuteReader();

            reader2.Read();
            player.InteligenceValue = Convert.ToString(reader2.GetInt16(1));
            player.SpeedValue       = Convert.ToString(reader2.GetInt16(2));
            player.LevelValue       = Convert.ToString(reader2.GetInt16(3));
            player.AttackValue      = Convert.ToString(reader2.GetInt16(4));
            player.DefenseValue     = Convert.ToString(reader2.GetInt16(5));
            player.gold_coins       = reader2.GetInt16(6);
            player.silver_coins     = reader2.GetInt16(7);
            player.defense_item     = reader2.GetString(8);
            player.attack_item      = reader2.GetString(9);
            player.speed_item       = reader2.GetString(10);
            player.inteligence_item = reader2.GetString(11);

            Console.WriteLine("sending response");
            response.InteligenceValue = player.InteligenceValue;
            response.SpeedValue       = player.SpeedValue;
            response.LevelValue       = player.LevelValue;
            response.AttackValue      = player.AttackValue;
            response.DefenseValue     = player.DefenseValue;
            response.gold_coins       = player.gold_coins;
            response.silver_coins     = player.silver_coins;
            response.speed_item       = player.speed_item;
            response.attack_item      = player.attack_item;
            response.defense_item     = player.defense_item;
            response.inteligence_item = player.inteligence_item;
            reader2.Close();
            Console.WriteLine("update finished");
            channel.Send(response);

            player.Inventory.Clear();
            var conn4 = new NpgsqlConnection(connString);

            conn4.Open();
            var    cmd4    = new NpgsqlCommand(string.Format("SELECT item_name,item_num from users_items WHERE user_name = '{0}'", player.user), conn4);
            var    reader4 = cmd4.ExecuteReader();
            String item_name;

            while (reader4.Read())
            {
                item_name = Convert.ToString(reader4["item_name"]); // 获得指定字段的值
                player.Inventory.Add(item_name, Convert.ToInt16(reader4["item_num"]));
            }
            reader4.Close();
            response2.player_Inventory = player.Inventory;
            channel.Send(response2);
            ClientTipInfo(channel, "Applied successfully");
        }
        private void OnRecvPlayerEnter(IChannel channel, Message message)
        {
            CPlayerEnter      request    = message as CPlayerEnter;
            SOtherPlayerEnter broundcast = new SOtherPlayerEnter();

            Player player = (Player)channel.GetContent();
            Scene  scene  = World.Instance.GetScene(player.scene);

            // add the player to the scene

            // broadcast a new player to all players
            broundcast.user  = player.token;
            broundcast.id    = player.entityId;
            broundcast.scene = player.scene;
            World.Instance.Broundcast(broundcast);

            // return all players online
            SOnlinePlayers onlinePlayers = new SOnlinePlayers();
            List <string>  names         = new List <string>();
            List <int>     ids           = new List <int>();
            List <string>  scenes_       = new List <string>();
            var            scenes        = World.Instance.Scenes;

            foreach (KeyValuePair <string, Scene> kv in scenes)
            {
                foreach (KeyValuePair <int, Player> p in kv.Value.Players)
                {
                    names.Add(p.Value.token);
                    ids.Add(p.Value.entityId);
                    scenes_.Add(p.Value.scene);
                }
            }
            onlinePlayers.users  = names.ToArray();
            onlinePlayers.ids    = ids.ToArray();
            onlinePlayers.scenes = scenes_.ToArray();
            channel.Send(onlinePlayers);

            // get attributes
            SPlayerAttribute attribute = new SPlayerAttribute();
            var attr_reader            = GameDataBase.SQLQuery(string.Format(
                                                                   "Select gold, silver, speed, damage, intelligence, defence, health, hp, pos_x, pos_y, pos_z From Player where player_id={0};", player.player_id
                                                                   ));

            attr_reader.Read();
            attribute.gold         = attr_reader.GetInt32(0);
            attribute.silver       = attr_reader.GetInt32(1);
            attribute.speed        = attr_reader.GetInt32(2);
            attribute.damage       = attr_reader.GetInt32(3);
            attribute.intelligence = attr_reader.GetInt32(4);
            attribute.defence      = attr_reader.GetInt32(5);
            attribute.health       = attr_reader.GetInt32(6);
            attribute.hp           = attr_reader.GetInt32(7);
            attribute.pos.x        = attr_reader.GetFloat(8);
            attribute.pos.y        = attr_reader.GetFloat(9);
            attribute.pos.z        = attr_reader.GetFloat(10);
            channel.Send(attribute);

            // get all items
            SPlayerInventory inventory = new SPlayerInventory();
            var reader = GameDataBase.SQLQuery(string.Format(
                                                   "Select * From Item Where player_id={0} And status!='Drop';", player.player_id
                                                   ));
            List <DItem> items = new List <DItem>();

            while (reader.Read())
            {
                var item = new DItem();
                item.item_id            = reader.GetInt32(0);
                item.status             = (ItemStatus)System.Enum.Parse(typeof(ItemStatus), reader.GetString(2));
                item.name               = reader.GetString(3);
                item.health_value       = reader.GetInt32(4);
                item.speed_value        = reader.GetInt32(5);
                item.damage_value       = reader.GetInt32(6);
                item.intelligence_value = reader.GetInt32(7);
                item.defence_value      = reader.GetInt32(8);
                item.icon_name          = reader.GetString(9);
                item.item_type          = (ItemType)System.Enum.Parse(typeof(ItemType), reader.GetString(10));
                item.silver_value       = reader.GetInt32(11);
                if (item.status != ItemStatus.Drop)
                {
                    items.Add(item);
                }
            }
            reader.Close();
            inventory.dItems = items.ToArray();
            channel.Send(inventory);

            System.Console.WriteLine("{0} Enter", player.token);
            System.Console.WriteLine("Get items {0}", items.Count);

            player.Position = Entity.V3ToPoint3d(attribute.pos);
            player.Spawn();
            player.maxHP             = attribute.health;
            player.currentHP         = attribute.hp;
            player.base_damage       = attribute.damage;
            player.base_speed        = attribute.speed;
            player.base_health       = attribute.health;
            player.base_intelligence = attribute.intelligence;
            player.base_defence      = attribute.defence;

            foreach (var ditem in items)
            {
                switch (ditem.status)
                {
                case ItemStatus.Storing:
                    player.inventory.Add(ditem.item_id, ditem);
                    break;

                case ItemStatus.Selling:
                    player.selling.Add(ditem.item_id, ditem);
                    break;

                case ItemStatus.Using:
                    player.wearing.Add(ditem.item_type, ditem);
                    break;
                }
            }
            player.refreshAttr();
            player.currentHP = attribute.hp;
            scene.AddEntity(player);

            // send triger status
            STrigerStatus sTriger = new STrigerStatus();

            sTriger.doors = new Door[World.Instance.Doors.Values.Count];
            World.Instance.Doors.Values.CopyTo(sTriger.doors, 0);
            sTriger.pressurePads = new PressurePad[World.Instance.PressurePads.Count];
            World.Instance.PressurePads.Values.CopyTo(sTriger.pressurePads, 0);
            sTriger.switchCrystals = new SwitchCrystal[World.Instance.SwitchCrystals.Count];
            World.Instance.SwitchCrystals.Values.CopyTo(sTriger.switchCrystals, 0);
            channel.Send(sTriger);
        }