public void ProcessBytes(Session _Session, ref JArray _Data)
        {
            try
            {
                IncomingPacket IncomingPacket = new IncomingPacket(_Data);

                if (IncomingEvents.ContainsKey(IncomingPacket.opcode))
                {
                    IIncomingPacketEvent Event = IncomingEvents[IncomingPacket.opcode];

                    if (_Session != null)
                    {
                        Event.Invoke(_Session, IncomingPacket);
                    }
                }
                else
                {
                    LogConsole.Show(LogType.ERROR, "[Opcode]: {0}", (ClientOpcode)IncomingPacket.opcode);
                }
            }
            catch (Exception e)
            {
                LogConsole.Show(LogType.DEBUG, "[ProcessByte]: {0}", e.Message);
            }
        }
Пример #2
0
        public bool IsPixel(int a, int b)
        {
            bool t = false;

            try
            {
                if (0 > a || a >= w || 0 > b || b >= h)
                {
                    t = false;
                }
                else
                {
                    int count = 4 * (b * w + a) + 3;
                    if (count <= this.data_array.Length)
                    {
                        int ddd = this.data_array[count];
                        if (0 < ddd)
                        {
                            t = true;
                        }
                    }
                }
            }
            catch (Exception ep)
            {
                LogConsole.Show(LogType.ERROR, ep.ToString());
            }

            return(t);
        }
Пример #3
0
        public void Update()
        {
            try
            {
                double[] dp;
                bool     found = false;
                e = new ShotEventArgs();
                int tim = 0;
                for (int i = 0; i < 3000; i += 30)
                {
                    dp = GetPosAtTime(i);

                    if (ground.IsPixel((int)dp[0], (int)dp[1]) == true)
                    {
                        //e.User = user;
                        e.angle = (int)ang;
                        e.cx    = (int)dp[0];
                        e.cy    = (int)dp[1];
                        e.look  = look;
                        e.power = (int)power;
                        e.xb    = (int)xb;
                        e.yb    = (int)yb;
                        e.xf    = (int)x;
                        e.yf    = (int)y;
                        e.ax    = (int)ax;
                        e.ay    = (int)ay;
                        e.col   = true;
                        e.time  = i;
                        found   = true;
                        Shot(this, e);
                        ground.AddGroundHole((int)dp[0], (int)dp[1], 36, 40);
                        break;
                    }
                    tim = i;
                }
                if (!found)
                {
                    //e.User = user;
                    e.angle = (int)ang;
                    e.cx    = 0;
                    e.cy    = 0;
                    e.look  = look;
                    e.power = (int)power;
                    e.xb    = (int)xb;
                    e.yb    = (int)yb;
                    e.xf    = (int)x;
                    e.yf    = (int)y;
                    e.ax    = (int)ax;
                    e.ay    = (int)ay;
                    e.col   = false;
                    e.time  = tim;
                    Shot(this, e);
                }
            }
            catch (Exception ex)
            {
                LogConsole.Show(LogType.ERROR, ex.ToString());
            }
        }
Пример #4
0
 public void ShowLogConsole()
 {
     // show or hide log console ?
     if (AssemblyConf == "debug" || Settings.Default.ShowLogConsole)
     {
         LogConsole.Show(dockPanel, DockState.DockBottom);
     }
     else
     {
         LogConsole.Hide();
     }
 }
        //-----------------------------------------------------------------------------------------------------
        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());
        }
Пример #6
0
        public void Invoke(Session _Session, IncomingPacket _Packet)
        {
            int    version  = _Packet.GetInt();
            int    user_id  = _Packet.GetInt();
            string user_key = _Packet.GetString();

            _Session.Send("[" + (int)ServerOpcode.login_profile + "]");
            _Session.User.LoadUser(version, user_id, user_key);
            _Session.Send("[" + (int)ServerOpcode.login_avatars + "]");
            _Session.User.LoadinfoAvatars();
            _Session.Send(_Session.User.PlayerInfo());

            _Session.Send(_Session.User.UpdateBoddy());

            LogConsole.Show(LogType.INFO, "Version: {0} User_id: {1} User_key: {2}", version, user_id, user_key);
        }
        //-----------------------------------------------------------------------------------------------------
        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());
            }
        }
        public PacketsManager()
        {
            IncomingEventsInfo = new Dictionary <string, int>();
            foreach (var Packet in typeof(IncomingPackets).GetFields())
            {
                var PacketId   = (int)Packet.GetValue(0);
                var PacketName = Packet.Name;

                if (!IncomingEventsInfo.ContainsValue(PacketId))
                {
                    IncomingEventsInfo.Add(PacketName, PacketId);
                }
            }

            IncomingEvents = new Dictionary <int, IIncomingPacketEvent>();
            foreach (Type Type in Assembly.GetCallingAssembly().GetTypes())
            {
                if (Type == null)
                {
                    continue;
                }

                if (Type.GetInterfaces().Contains(typeof(IIncomingPacketEvent)))
                {
                    var ConstructorInfo = Type.GetConstructor(new Type[] { });
                    if (ConstructorInfo != null)
                    {
                        var Constructed = ConstructorInfo.Invoke(new object[] { }) as IIncomingPacketEvent;
                        int Header      = GetHeader(Constructed);

                        if (!IncomingEvents.ContainsKey(Header) && Header >= 0)
                        {
                            IncomingEvents.Add(Header, Constructed);
                        }
                    }
                }
            }

            int Outgoings = typeof(OutgoingPackets).GetFields().Count();

            LogConsole.Show(LogType.INFO, "Loaded: {0} IncomingPackets", IncomingEvents.Count);
            LogConsole.Show(LogType.INFO, "Loaded: {0} OutgoingPackets", Outgoings);
        }
 //-----------------------------------------------------------------------------------------------------
 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 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());
                }
            }
        }
        //-----------------------------------------------------------------------------------------------------
        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();
            }
        }
Пример #12
0
        public static void Load()
        {
            LogConsole.Show(LogType.INFO, "Start LoadMaps!");
            string pathd = Program.PATH + "\\Data\\Maps\\";

            string[] filePaths = Directory.GetFiles(pathd, "*.png");
            foreach (string dd in filePaths)
            {
                Bitmap map_tmp = (Bitmap)Image.FromFile(dd);
                string ids     = Path.GetFileName(dd).Replace("mapa", "").Replace(".png", "");
                maprw  mapatm  = new maprw();
                mapatm.id     = int.Parse(ids);
                mapatm.w      = map_tmp.Width;
                mapatm.h      = map_tmp.Height;
                mapatm.ground = new BitMapx(map_tmp);
                Dictionary <int, Point> points = new Dictionary <int, Point> {
                };
                string[] lines = File.ReadAllLines(@pathd + "mapa" + ids + ".txt");
                foreach (string line in lines)
                {
                    string[] sp1 = line.Split('=');
                    if (sp1[0] != "")
                    {
                        string   idx   = sp1[0].Replace(" ", "").Replace("loc", "");
                        string[] poins = sp1[1].Replace(" ", "").Split(',');
                        points.Add(int.Parse(idx), new Point(int.Parse(poins[0]), int.Parse(poins[1])));
                    }
                }
                mapatm.pos = points;
                mapatm.ground.Unlock();
                Program.RMaps.Add(mapatm);
                //map_tmp.Dispose();
                //points.Clear();
            }
            LogConsole.Show(LogType.INFO, "LoadMaps Complete!");
        }
Пример #13
0
	    	void StartLog() 
	    	{
	    		logConsole = new LogConsole();
	    		logConsole.Show();
	    		//Console.WriteLine("file: "+logFilePath+Path.DirectorySeparatorChar+logFileName);
	    		logFile = File.AppendText(logFilePath+Path.DirectorySeparatorChar+logFileName);
	    		logFile.WriteLine();
	    		string logStartLine = "* "
	              +System.DateTime.Now.ToShortDateString()
	              +" - "
	              +System.DateTime.Now.ToShortTimeString()
	              +" * Log started for "
	              +Assembly.GetExecutingAssembly().GetName().Name.ToString()
	              +" v."
	              +Assembly.GetExecutingAssembly().GetName().Version.ToString();
				
	    		#if DEBUG
					logStartLine += " (debug build)";
				#else 
					logStartLine += " (release build)";
				#endif
				
				WriteLogLine(logStartLine);
	    	}
Пример #14
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());
        }
 //-----------------------------------------------------------------------------------------------------
 public void cshot_Shot(object o, ShotEventArgs e)
 {
     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.play); //8
             writer.WriteStartArray();
             if (e.User.Position == 0)
             {
                 writer.WriteValue(1); //2 - next_turn_number
             }
             else
             {
                 writer.WriteValue(0);           //2 - next_turn_number
             }
             writer.WriteValue(e.User.Position); //0 - player_number
             writer.WriteValue(e.xb);            //1022 - x
             writer.WriteValue(e.yb);            //121 - y
             writer.WriteValue(e.look);          //1 - look
             writer.WriteValue(1);               //845 - delay
             //writer.WriteValue(0); //1 - next_turn_of_player
             if (e.User.Position == 0)
             {
                 writer.WriteValue(1); //2 - next_turn_of_player
             }
             else
             {
                 writer.WriteValue(0); //2 - next_turn_of_player
             }
             writer.WriteStartArray();
             writer.WriteEndArray();
             writer.WriteValue(799);  //799 - thor_x
             writer.WriteValue(-420); //-420 - thor_y
             writer.WriteValue(0);    //24 - thor_angle
             writer.WriteValue(40);   //0 - thor_damage
             writer.WriteValue(1);    //33
             writer.WriteValue(0);    //0
             writer.WriteValue(234);  //326
             writer.WriteStartArray();
             writer.WriteStartObject();
             writer.WritePropertyName("start");
             writer.WriteStartObject();
             writer.WritePropertyName("x");
             writer.WriteValue(e.xf);    //1042
             writer.WritePropertyName("y");
             writer.WriteValue(e.yf);    //95
             writer.WritePropertyName("ang");
             writer.WriteValue(e.angle); //24
             writer.WritePropertyName("power");
             writer.WriteValue(e.power); //101
             writer.WritePropertyName("ax");
             writer.WriteValue(e.ax);    //0
             writer.WritePropertyName("ay");
             writer.WriteValue(e.ay);    //398
             writer.WriteEndObject();
             writer.WritePropertyName("exp");
             writer.WriteValue(0);      //0
             writer.WritePropertyName("img");
             writer.WriteValue(0);      //0
             writer.WritePropertyName("time");
             writer.WriteValue(e.time); //1340
             //"hole":[887,95,60,40],"damages":[]}],150]
             if (e.col == true)
             {
                 writer.WritePropertyName("hole");
                 writer.WriteStartArray();
                 writer.WriteValue(e.cx);  //x hole
                 writer.WriteValue(e.cy);  //y hole
                 writer.WriteValue(36);    //w
                 writer.WriteValue(40);    //h
                 writer.WriteEndArray();
                 writer.WritePropertyName("damages");
                 writer.WriteStartArray();
                 writer.WriteEndArray();
             }
             writer.WriteEndObject();
             writer.WriteEndArray();
             writer.WriteValue(150);
             writer.WriteEndArray();
             writer.WriteEndArray();
         }
         SendAll(sb.ToString());
     }
     catch (Exception ex)
     {
         LogConsole.Show(LogType.ERROR, ex.ToString());
     }
 }
        //-----------------------------------------------------------------------------------------------------
        public void GameStart()
        {
            try
            {
                if (this._channel_map < 0)
                {
                    Random rand = new Random();
                    this._channel_map = 0;//rand.Next(0, 11);
                }
                _map_data   = Program.RMaps.Single(a => a.id == this._channel_map);
                cshot       = new CShot(_map_data.ground);
                cshot.Shot += cshot_Shot;
            }
            catch
            {
                LogConsole.Show(LogType.ERROR, "Map: {0} no Found", this._channel_map);
            }
            //[4,[[
            //[0,146634,"Carlos 22",null,0,377,134,1000,0,0,10,55,-8,0,[1,2,0,0,0,0],52,33,52,33,52,33],
            //[1,151426,"Bil Board",null,13,20,35,1800,250,30,15,65,-7,5,[12,30],    68,45,68,45,68,45]
            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.game_start);
                writer.WriteStartArray();
                writer.WriteStartArray();
                int c = 0;
                foreach (UserManager.UserClass usp in UserInSala)
                {
                    Point pt = _map_data.pos[c];
                    usp.x = pt.X;
                    usp.y = pt.Y;
                    writer.WriteStartArray();
                    writer.WriteValue(usp.Position);
                    writer.WriteValue(usp.user_id);
                    writer.WriteValue(usp.Name);
                    string dsd = null;
                    writer.WriteValue(dsd);
                    writer.WriteValue(usp.rank);
                    writer.WriteValue(usp.x);
                    writer.WriteValue(usp.y);
                    writer.WriteValue(1000);
                    writer.WriteValue(0);
                    writer.WriteValue(0);
                    writer.WriteValue(10);
                    writer.WriteValue(55);
                    writer.WriteValue(-8);
                    writer.WriteValue(usp.mobil);
                    writer.WriteStartArray();
                    writer.WriteValue(usp.head);
                    writer.WriteValue(usp.body);
                    if (usp.Is_Bot != 1)
                    {
                        writer.WriteValue(usp.eyes);
                        writer.WriteValue(usp.flag);
                        writer.WriteValue(usp.foreground);
                        writer.WriteValue(usp.background);
                    }
                    writer.WriteEndArray();
                    writer.WriteValue(52);
                    writer.WriteValue(33);
                    writer.WriteValue(52);
                    writer.WriteValue(33);
                    writer.WriteValue(52);
                    writer.WriteValue(33);
                    writer.WriteEndArray();
                    c++;
                }
                //],0,562,-452,0,0,[2,2,0,0,3],0,257,7,null]]
                writer.WriteEndArray();
                writer.WriteValue(0);
                writer.WriteValue(562);
                writer.WriteValue(-452);
                writer.WriteValue(0);
                writer.WriteValue(0);
                writer.WriteStartArray();
                writer.WriteValue(2);
                writer.WriteValue(2);
                writer.WriteValue(0);
                writer.WriteValue(0);
                writer.WriteValue(3);
                writer.WriteEndArray();
                writer.WriteValue(0);
                writer.WriteValue(257);
                writer.WriteValue(_channel_map);
                string xdd = null;
                writer.WriteValue(xdd);
                writer.WriteEndArray();
                writer.WriteEndArray();
                SendAll(sb.ToString());
            }
        }