예제 #1
0
        public void Join(UserManager.UserClass _user)
        {
            _user.sep.Send("[" + (int)ServerOpcode.enter_room + "]");

            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            using (JsonWriter writer = new JsonTextWriter(sw))
            {
                writer.Formatting = Formatting.None;
                writer.WriteStartArray();
                writer.WriteValue((int)ServerOpcode.room_state);
                writer.WriteStartArray();
                writer.WriteValue(_chanel_id);
                writer.WriteValue(_chanel_name);
                writer.WriteValue(_chanel_password);
                writer.WriteValue(_chanel_maxplayers);
                writer.WriteValue(_chanel_gamemode);
                writer.WriteValue(_chanel_map);
                writer.WriteValue(_chanel_avatar_on);
                writer.WriteValue(_chanel_max_wind);
                writer.WriteValue(_chanel_gp_rate);
                writer.WriteEndArray();
                writer.WriteEndArray();
            }
            _user.sep.Send(sb.ToString());
            RoomPlayer(_user);
        }
 //-----------------------------------------------------------------------------------------------------
 public void RemoveUser(UserManager.UserClass _user)
 {
     if (_user.Is_Master == 1 && UserInSala.Count <= 1)
     {
         _user.Is_Master = 0;
         Program.Chanels.Remove(this);
     }
     else
     {
         UserInSala.Remove(_user);
         if (UserInSala.Count() > 0)
         {
             StringBuilder sb = new StringBuilder();
             StringWriter  sw = new StringWriter(sb);
             using (JsonWriter writer = new JsonTextWriter(sw))
             {
                 writer.Formatting = Formatting.None;
                 writer.WriteStartArray();
                 writer.WriteValue((int)ServerOpcode.player_left);
                 writer.WriteValue(5);
                 writer.WriteValue(0);
                 writer.WriteValue(_user.user_id);
                 writer.WriteEndArray();
             }
             SendAll(sb.ToString());
             RemoveSlot(_user.Position, _user.Is_Master);
             _user.Is_Master = 0;
         }
     }
 }
예제 #3
0
        public static string Msj(string _msjx, UserManager.UserClass _user)
        {
            string        msj_f = HttpUtility.HtmlEncode(_msjx.Replace("\\\"", "\""));
            StringBuilder sb    = new StringBuilder();
            StringWriter  sw    = new StringWriter(sb);

            using (JsonWriter writer = new JsonTextWriter(sw))
            {
                writer.Formatting = Formatting.None;
                writer.WriteStartArray();
                writer.WriteValue((int)ServerOpcode.chat);
                writer.WriteValue(_msjx);
                writer.WriteValue(_user.Name);

                if (_user.rank >= 24)
                {
                    writer.WriteValue(ChatType.CHAT_TYPE_GM); //type
                }
                else
                {
                    writer.WriteValue(0); //type
                }
                if (_user.guild > 0)
                {
                    writer.WriteValue(_user.guild_name);
                }

                writer.WriteEndArray();
            }

            return(sb.ToString());
        }
예제 #4
0
        public static void Notice(UserManager.UserClass _user)
        {
            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            using (JsonWriter writer = new JsonTextWriter(sw))
            {
                writer.Formatting = Formatting.None;
                writer.WriteStartArray();
                writer.WriteValue((int)ServerOpcode.room_state);

                writer.WriteStartArray();

                writer.WriteStartArray();
                writer.WriteValue("GameServerDB");
                writer.WriteValue("");
                writer.WriteValue(9);
                writer.WriteEndArray();

                writer.WriteStartArray();
                writer.WriteValue("Bienvenido!");
                writer.WriteValue("");
                writer.WriteValue(9);
                writer.WriteEndArray();

                writer.WriteEndArray();

                writer.WriteEndArray();
            }
            _user.sep.Send(sb.ToString());
        }
        //-----------------------------------------------------------------------------------------------------
        public void AddBot(int slot, string id_bot)
        {
            string tt = "[35,[2,1,[],1,131702018,\"Clown Stripe\",0,0,0,1,\"m\",0,[17,31],1,0]]";

            UserManager.UserClass usr = new UserManager.UserClass();
            usr.Name     = "Clown Stripe";
            usr.user_id  = 131702018;
            usr.gender   = "m";
            usr.Is_Bot   = 1;
            usr.Position = 2;
            this.Join(usr);
            SendAll(tt);
        }
예제 #6
0
        public void RoomPlayer(UserManager.UserClass user_send)
        {
            for (int x = 0; x < 8; x++)
            {
                if (user_slot[x] == false)
                {
                    user_send.Position = x;
                    user_slot[x]       = true;
                    break;
                }
            }
            UserInSala.Add(user_send);
            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            using (JsonWriter writer = new JsonTextWriter(sw))
            {
                writer.Formatting = Formatting.None;
                writer.WriteStartArray();
                writer.WriteValue((int)ServerOpcode.room_players);
                writer.WriteStartArray();
                foreach (UserManager.UserClass _user in UserInSala)
                {
                    writer.WriteValue(5);
                    writer.WriteValue(0);
                    writer.WriteValue(_user.Position);
                    writer.WriteValue(_user.user_id);
                    writer.WriteValue(_user.Name);
                    writer.WriteValue(_user.rank);
                    writer.WriteValue(0);
                    writer.WriteValue(1);
                    writer.WriteValue(1);
                    writer.WriteValue(_user.gender);
                    writer.WriteValue(_user.mobil);
                    writer.WriteStartArray();
                    writer.WriteValue(_user.head);
                    writer.WriteValue(_user.body);
                    writer.WriteValue(_user.eyes);
                    writer.WriteValue(_user.flag);
                    writer.WriteValue(_user.foreground);
                    writer.WriteValue(_user.background);
                    writer.WriteEndArray();
                }
                writer.WriteValue(0);
                writer.WriteValue(0);
                writer.WriteEndArray();
                writer.WriteEndArray();
            }
            user_send.sep.Send(sb.ToString());
        }
예제 #7
0
        public bool UserIn(UserManager.UserClass _user)
        {
            bool vr = false;

            if (UserInSala.Count > 0)
            {
                UserManager.UserClass rt = UserInSala.Single(a => a.user_id == _user.user_id);
                if (rt != null)
                {
                    vr = true;
                }
            }
            return(vr);
        }
예제 #8
0
        //-----------------------------------------------------------------------------------------------------
        public void PassMaster(UserManager.UserClass _usr)
        {
            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            using (JsonWriter writer = new JsonTextWriter(sw))
            {
                writer.Formatting = Formatting.None;
                writer.WriteStartArray();
                writer.WriteValue((int)ServerOpcode.pass_master);
                writer.WriteValue(_usr.user_id);
                writer.WriteEndArray();
            }
            SendAll(sb.ToString());
        }
        //-----------------------------------------------------------------------------------------------------
        public void RoomPlayer(UserManager.UserClass user_send)
        {
            //[2,[2,7,[],0,146634,"Carlos 22",0,0,1,1,"m",0,[1,2,0,0,0,0],0,0,1,181494328,"Bill Board",13,0,0,1,"m",5,[12,30],1,0]]
            user_send.Position = SlotJoin();
            LogConsole.Show(LogType.INFO, "newPosition: {0}", user_send.Position);
            UpdateSlot(user_send);
            UserInSala.Add(user_send);
            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            using (JsonWriter writer = new JsonTextWriter(sw))
            {
                writer.Formatting = Formatting.None;
                writer.WriteStartArray();
                writer.WriteValue((int)ServerOpcode.room_players);
                writer.WriteStartArray();
                writer.WriteValue(UserInSala.Count); //unk1 - user_on?
                writer.WriteValue(7);                //unk2
                writer.WriteStartArray();
                writer.WriteEndArray();
                foreach (UserManager.UserClass _user in UserInSala)
                {
                    writer.WriteValue(_user.Position);
                    writer.WriteValue(_user.user_id);
                    writer.WriteValue(_user.Name);
                    writer.WriteValue(_user.rank);
                    writer.WriteValue(0);               // unk - guild ?
                    writer.WriteValue(_user.Is_Master); // unk - is_master ?
                    writer.WriteValue(0);               // unk - is_ready ?
                    writer.WriteValue(_user.gender);
                    writer.WriteValue(_user.mobil);
                    writer.WriteStartArray();
                    writer.WriteValue(_user.head);
                    writer.WriteValue(_user.body);
                    writer.WriteValue(_user.eyes);
                    writer.WriteValue(_user.flag);
                    writer.WriteValue(_user.foreground);
                    writer.WriteValue(_user.background);
                    writer.WriteEndArray();
                    writer.WriteValue(0);  // unk - is_bot ?
                    writer.WriteValue(0);  // unk - power_user ?
                    //team a - b c%2
                }
                writer.WriteEndArray();
                writer.WriteEndArray();
            }
            user_send.sep.Send(sb.ToString());
        }
        //-----------------------------------------------------------------------------------------------------
        public void GameShoot(UserManager.UserClass _user, int _x, int _y, int _body, int _look, int _angle, int _a, int _b, int _d)
        {
            try
            {
                int x     = _x;     //1022
                int y     = _y;     //121
                int body  = _body;  //0
                int look  = _look;  //1
                int angle = _angle; //24
                //int a; //43 - power
                //int b; //7  - Timer
                //int d; //0  - ShotType / 0 = shot 1 - 1 = shot 2 - 2 = shot ss
                int power = (int)Math.Round((double)((_a * 234) / 100));
                int a     = (look == 0 ? 180 - angle : angle);
                cshot.SetShot(_user, a, power, 0, 398, x, y, look);
                cshot.Start();

                /*
                 * var E_PLAY = Object.freeze({
                 * next_turn_number: 0,
                 * player_number: 1,
                 * x: 2,
                 * y: 3,
                 * look: 4,
                 * add_delay: 5,
                 * next_turn_of_player: 6,
                 * chat: 7,
                 * thor_x: 8,
                 * thor_y: 9,
                 * thor_angle: 10,
                 * thor_damage: 11,
                 * new_weather: 12,
                 * wind_power: 13,
                 * wind_angle: 14,
                 * shots: 15,
                 * gold: 16
                 * }),
                 */
                //[8,[2,0,1022,121,1,845,1,[],799,-420,24,0,3,0,326,[{"start":{"x":1042,"y":95,"ang":24,"power":101,"ax":0,"ay":398},"exp":0,"img":0,"time":1340}],0]]
                LogConsole.Show(LogType.DEBUG, "Send: x: {0} - y: {1} angle: {2}", _x, _y, _angle);
            }
            catch (Exception ex)
            {
                LogConsole.Show(LogType.ERROR, ex.ToString());
            }
        }
예제 #11
0
        public void ChangeReady(UserManager.UserClass _user, int tp)
        {
            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            using (JsonWriter writer = new JsonTextWriter(sw))
            {
                writer.Formatting = Formatting.None;
                writer.WriteStartArray();
                writer.WriteValue((int)ServerOpcode.changed_ready);
                writer.WriteValue(_user.user_id);
                writer.WriteValue(tp);
                writer.WriteEndArray();
                foreach (UserManager.UserClass _usp in UserInSala)
                {
                    _usp.sep.Send(sb.ToString());
                }
            }
        }
예제 #12
0
        public void Move(UserManager.UserClass _user)
        {
            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            using (JsonWriter writer = new JsonTextWriter(sw))
            {
                writer.Formatting = Formatting.None;
                writer.WriteStartArray();
                writer.WriteValue((int)ServerOpcode.update);
                writer.WriteStartArray();
                writer.WriteValue(_user.Position);
                writer.WriteValue(_user.x);
                writer.WriteValue(_user.y);
                writer.WriteValue(_user.look);
                writer.WriteEndArray();
                writer.WriteEndArray();
            }
            SendAll(sb.ToString());
        }
예제 #13
0
        public void ChangeTeam(UserManager.UserClass _user, string team)
        {
            //[8,"B"]
            //[33,0,5,146634,"B"]
            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            using (JsonWriter writer = new JsonTextWriter(sw))
            {
                writer.Formatting = Formatting.None;
                writer.WriteStartArray();
                writer.WriteValue((int)ServerOpcode.changed_team);
                writer.WriteValue(0);
                writer.WriteValue(5);
                writer.WriteValue(_user.user_id);
                writer.WriteValue(team);
                writer.WriteEndArray();
            }
            _user.sep.Send(sb.ToString());
        }
        //-----------------------------------------------------------------------------------------------------
        public void UpdateSlot(UserManager.UserClass _user)
        {
            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            using (JsonWriter writer = new JsonTextWriter(sw))
            {
                writer.Formatting = Formatting.None;
                writer.WriteStartArray();
                writer.WriteValue((int)ServerOpcode.slot_update);
                writer.WriteStartArray();
                writer.WriteValue(UserInSala.Count);
                writer.WriteValue(5);
                writer.WriteStartArray();
                writer.WriteEndArray();
                writer.WriteValue(_user.Position);
                writer.WriteValue(_user.user_id);
                writer.WriteValue(_user.Name);
                writer.WriteValue(_user.rank);
                writer.WriteValue(0);
                writer.WriteValue(0);
                writer.WriteValue(0);
                writer.WriteValue(_user.gender);
                writer.WriteValue(_user.mobil);
                writer.WriteStartArray();
                writer.WriteValue(_user.head);
                writer.WriteValue(_user.body);
                writer.WriteValue(_user.eyes);
                writer.WriteValue(_user.flag);
                writer.WriteValue(_user.foreground);
                writer.WriteValue(_user.background);
                writer.WriteEndArray();
                writer.WriteValue(0);
                writer.WriteValue(0);
                writer.WriteEndArray();
                writer.WriteEndArray();
            }
            SendAll(sb.ToString());
        }
 //-----------------------------------------------------------------------------------------------------
 public void PassTurn(UserManager.UserClass _user)
 {
     //[28,[4,0,1585,98,0,585,1,[],652,-436,18,0,2,0,99]]
     try
     {
         StringBuilder sb = new StringBuilder();
         StringWriter  sw = new StringWriter(sb);
         using (JsonWriter writer = new JsonTextWriter(sw))
         {
             writer.Formatting = Formatting.None;
             writer.WriteStartArray();
             writer.WriteValue((int)ServerOpcode.pass);
             writer.WriteStartArray();
             writer.WriteValue(0);     //next_turn_number
             writer.WriteValue(0);     //slot user
             writer.WriteValue(0);     //x
             writer.WriteValue(0);     //y
             writer.WriteValue(0);     //look
             writer.WriteValue(0);     //delay
             writer.WriteValue(0);     //next turn of player
             writer.WriteStartArray(); //chat
             writer.WriteEndArray();
             writer.WriteValue(0);     //thor_x
             writer.WriteValue(0);     //thor_y
             writer.WriteValue(0);     //thor_angle
             writer.WriteValue(0);     //thor_damage
             writer.WriteValue(0);     //new_wheater
             writer.WriteValue(0);     //wind_power
             writer.WriteValue(0);     //wind_angle
             writer.WriteEndArray();
             writer.WriteEndArray();
         }
         SendAll(sb.ToString());
     }
     catch (Exception ex)
     {
         LogConsole.Show(LogType.ERROR, ex.ToString());
     }
 }
        //-----------------------------------------------------------------------------------------------------
        private void RemoveSlot(int posSlot, int master = 0)
        {
            int TeamLeav = posSlot % 2;
            int posArray = (TeamLeav == 1) ? (posSlot <= 3 ? (posSlot == 3 ? posSlot - 2 : posSlot - 1) : (posSlot - 1) / 2) : (TeamLeav < 4 ? ((TeamLeav == 2) ? TeamLeav - 1 : TeamLeav) : (TeamLeav / 2));

            d[TeamLeav][posArray] = 0;
            for (int x = 0; x < 4; x++)
            {
                if (d[TeamLeav][x] == 0)
                {
                    int np = (x + 1) < 3 ? x + 1 : 3;
                    if (d[TeamLeav][np] == 1 && x < 3)
                    {
                        d[TeamLeav][x]  = 1;
                        d[TeamLeav][np] = 0;
                        int px  = GetPosT(TeamLeav, x, x, true);
                        int pnp = GetPosT(TeamLeav, np, np, true);
                        try
                        {
                            UserManager.UserClass _usr = UserInSala.Single(a => a.Position == pnp);
                            if (_usr != null)
                            {
                                _usr.Position = px;
                            }
                        }
                        catch (Exception ex)
                        {
                            LogConsole.Show(LogType.ERROR, ex.ToString());
                        }
                    }
                }
            }
            if (master == 1)
            {
                NewMas();
            }
        }
        //-----------------------------------------------------------------------------------------------------
        private void NewMas()
        {
            int  pos  = 0;
            bool foun = false;

            for (int i = 0; i < 4; i++)
            {
                if (d[0][i] == 1)
                {
                    pos  = GetPosT(0, i, i, true);
                    foun = true;
                    break;
                }
                else if (d[1][i] == 1)
                {
                    pos  = GetPosT(1, i, i, true);
                    foun = true;
                    break;
                }
            }
            if (foun)
            {
                try
                {
                    UserManager.UserClass _usr = UserInSala.Single(a => a.Position == pos);
                    if (_usr != null)
                    {
                        _usr.Is_Master = 1;
                        PassMaster(_usr);
                    }
                }
                catch (Exception ex)
                {
                    LogConsole.Show(LogType.ERROR, ex.ToString());
                }
            }
        }
예제 #18
0
 //-----------------------------------------------------------------------------------------------------
 public void AddBot(int slot, string id_bot)
 {
     string tt = "[35,[2,1,[],1,131702018,\"Clown Stripe\",0,0,0,1,\"m\",0,[17,31],1,0]]";
     UserManager.UserClass usr = new UserManager.UserClass();
     usr.Name = "Clown Stripe";
     usr.user_id = 131702018;
     usr.gender = "m";
     usr.Is_Bot = 1;
     usr.Position = 2;
     this.Join(usr);
     SendAll(tt);
 }
예제 #19
0
        public void GameShoot(UserManager.UserClass _user, int _x, int _y, int _body, int _look, int _angle, int _a, int _b, int _d)
        {
            /*
             * 0.74,// Armor
             * 0.78,// Mage
             * 0.99,
             * 0.87,
             * 0.74,
             * 1.395,// Boomer
             * 0.827,
             * 0.72,
             * 0.625,
             * 0.765,
             * 0.625,
             * 0.74,
             * 0.65,
             * 0.695,
             * 0.67,
             * 0.905,
             * 0.0,// Slots
             * 0.0	// Aid*/

            int x = _x;
            int y = _y;
            //int xb = _xb;
            int look  = _look;
            int angle = _angle;
            int body  = _body;
            int a     = (look == 0 ? 180 - angle : angle) - body;

            if (90 < a)
            {
                a = 180 - a;
            }
            double xn    = (look == 0 ? x - 22 : x + 22);
            double yn    = -Math.Sin((angle * Math.PI / 180));
            int    delay = 1;
            int    next_turn_of_player = 0;

            double DEGTORAD = 0.0174532925199433;

            double[] WindEffect = { 0.74 };
            double[] Gravity    = { 73.5 };

            double x_f = 0.5 * Math.Cos(a) * 0.5 + _user.x;
            double y_f = -1 * ((0.5 * Math.Sin(a)) * 0.5 - ((0.5) * 73.5 * ((int)0.5 ^ 2)) - _user.y);

            double digg = Math.PI / 180;
            int    d    = 0;
            int    c    = 0;
            double x_o  = (Math.Cos(d * digg) * c) * 0.74;
            double y_o  = (Math.Sin(d * digg) * c) * 0.74 - 73.5;


            LogConsole.Show("Send: x: {0} - y: {1}", _x, _y);
            LogConsole.Show("Player: x: {0} - y: {1}", _user.x, _user.y);
            LogConsole.Show("Fin: x: {0} - y: {1}", x_f, y_f);

            int fin_p = 0;

            if (_a == 1)
            {
                fin_p = 2;
            }
            else if ((_a + _a) + 1 <= 10)
            {
                fin_p = (_a + _a) + 1;
            }
            else if ((_a + _a) + 2 <= 20)
            {
                fin_p = (_a + _a) + 2;
            }
            else if ((_a + _a) + 3 <= 30)
            {
                fin_p = (_a + _a) + 3;
            }
            else if ((_a + _a) + 4 <= 40)
            {
                fin_p = (_a + _a) + 4;
            }
            else if ((_a + _a) + 5 <= 50)
            {
                fin_p = (_a + _a) + 5;
            }
            else if ((_a + _a) + 6 <= 60)
            {
                fin_p = (_a + _a) + 6;
            }
            else if ((_a + _a) + 7 <= 70)
            {
                fin_p = (_a + _a) + 7;
            }
            else if ((_a + _a) + 8 <= 80)
            {
                fin_p = (_a + _a) + 8;
            }
            else if ((_a + _a) + 9 <= 90)
            {
                fin_p = (_a + _a) + 9;
            }
            else if ((_a + _a) + 10 <= 100)
            {
                fin_p = (_a + _a) + 10 + 11;
            }
            else if ((_a + _a) + 20 <= 200)
            {
                fin_p = (_a + _a) + 20;
            }
            else if ((_a + _a) + 30 <= 300)
            {
                fin_p = (_a + _a) + 30;
            }
            else
            {
                fin_p = (_a + _a) + 40;
            }

            LogConsole.Show("a: {1} Fin_p: {0}", fin_p, _a);

            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            using (JsonWriter writer = new JsonTextWriter(sw))
            {
                //gp(x,             y,       a, b, c, d,           e,                f)
                //gp(f.pos.x, f.pos.y, f.angle, 1, 0, 0, d.oponent.x - 15, d.oponent.y - 15);
                writer.Formatting = Formatting.None;
                writer.WriteStartArray();
                writer.WriteValue((int)ServerOpcode.play);
                writer.WriteStartArray();
                writer.WriteValue(0);
                writer.WriteValue(_user.Position);
                writer.WriteValue(x);
                writer.WriteValue(y);
                writer.WriteValue(look);
                writer.WriteValue(delay);
                writer.WriteValue(next_turn_of_player);
                writer.WriteStartArray();
                writer.WriteEndArray();
                writer.WriteValue(899);
                writer.WriteValue(-342);
                writer.WriteValue(249);
                writer.WriteValue(0);
                writer.WriteValue(1);
                writer.WriteValue(0);
                writer.WriteValue(213);

                writer.WriteStartArray();

                writer.WriteStartObject();
                writer.WritePropertyName("start");

                writer.WriteStartObject();
                writer.WritePropertyName("x");
                writer.WriteValue(x); //x
                writer.WritePropertyName("y");
                writer.WriteValue(y); //y
                writer.WritePropertyName("ang");
                writer.WriteValue(a);
                writer.WritePropertyName("power");
                writer.WriteValue(fin_p);//575
                writer.WritePropertyName("ax");
                writer.WriteValue(x_o);
                writer.WritePropertyName("ay");
                writer.WriteValue(y_o);
                writer.WriteEndObject();

                writer.WritePropertyName("exp");
                writer.WriteValue(3);
                writer.WritePropertyName("img");
                writer.WriteValue(4);
                writer.WritePropertyName("time");
                writer.WriteValue(2880);
                writer.WritePropertyName("hole");

                writer.WriteStartArray();
                writer.WriteValue(360);
                writer.WriteValue(40);
                writer.WriteValue(55);
                writer.WriteValue(42);
                writer.WriteEndArray();

                writer.WritePropertyName("damages");
                writer.WriteStartArray();
                writer.WriteEndArray();
                writer.WriteEndObject();

                writer.WriteEndArray();
                writer.WriteValue(0);
                writer.WriteEndArray();
                writer.WriteEndArray();
            }
            SendAll(sb.ToString());
        }
예제 #20
0
        public void RemoveUser(UserManager.UserClass _user)
        {
            /*if (_user.Is_Master == 1)
             * {
             *  Program.Chanels.Remove(this);
             * }*/
            UserInSala.Remove(_user);
            if (UserInSala.Count() > 0)
            {
                StringBuilder sb = new StringBuilder();
                StringWriter  sw = new StringWriter(sb);
                using (JsonWriter writer = new JsonTextWriter(sw))
                {
                    writer.Formatting = Formatting.None;
                    writer.WriteStartArray();
                    writer.WriteValue((int)ServerOpcode.player_left);
                    writer.WriteValue(5);
                    writer.WriteValue(0);
                    writer.WriteValue(_user.user_id);
                    writer.WriteEndArray();
                }
                foreach (UserManager.UserClass usp in UserInSala)
                {
                    usp.sep.Send(sb.ToString());
                }
                switch (_user.Position)
                {
                case 1:
                {
                    UserManager.UserClass _usr = UserInSala.Single(a => a.Position == 3);
                    if (_usr != null)
                    {
                        user_slot[1]  = true;
                        user_slot[3]  = false;
                        _usr.Position = 1;
                    }
                    break;
                }

                case 2:
                {
                    UserManager.UserClass _usr = UserInSala.Single(a => a.Position == 4);
                    if (_usr != null)
                    {
                        user_slot[2]  = true;
                        user_slot[4]  = false;
                        _usr.Position = 2;
                    }
                    break;
                }

                case 3:
                {
                    UserManager.UserClass _usr = UserInSala.Single(a => a.Position == 5);
                    if (_usr != null)
                    {
                        user_slot[3]  = true;
                        user_slot[5]  = false;
                        _usr.Position = 3;
                    }
                    break;
                }

                case 4:
                {
                    UserManager.UserClass _usr = UserInSala.Single(a => a.Position == 6);
                    if (_usr != null)
                    {
                        user_slot[4]  = true;
                        user_slot[6]  = false;
                        _usr.Position = 4;
                    }
                    break;
                }

                case 5:
                {
                    UserManager.UserClass _usr = UserInSala.Single(a => a.Position == 7);
                    if (_usr != null)
                    {
                        user_slot[5]  = true;
                        user_slot[7]  = false;
                        _usr.Position = 5;
                    }
                    break;
                }

                case 6:
                {
                    user_slot[6] = false;
                    break;
                }

                case 7:
                {
                    user_slot[7] = false;
                    break;
                }
                }
            }
        }