示例#1
0
        static void Main(string[] args)
        {
            Consola.Inicializar();

            Configuracion = Json.Deserialize <Configuracion>(File.ReadAllText("server.json"));
            Consola.Escribir($"\tSe ha cargado la configuración", ConsoleColor.Green);

            Cuentas.Inicializar();
            Campeones.Inicializar();

            tcpListener = new TcpListener(IPAddress.Parse(Configuracion.Ip), Configuracion.Puerto);

            tcpListener.Start();

            Consola.Escribir($"\tServidor iniciado con un límite de {Program.Configuracion.LimiteBots} bot(s)", ConsoleColor.Cyan);
            Consola.Escribir($"\tIp: {Configuracion.Ip}, Puerto: {Configuracion.Puerto}", ConsoleColor.Cyan);

            for (int i = 0; i < Configuracion.LimiteBots; i++)
            {
                Console.ForegroundColor = ConsoleColor.Black;
                Thread newThread = new Thread(new ThreadStart(ServerService.BotListener));
                newThread.Start();
            }

            Consola.LeerInput();
        }
示例#2
0
        public void Inicializar()
        {
            Lista = new List <Cuenta>();
            Lista = Json.Deserialize <List <Cuenta> >(File.ReadAllText("datos/cuentas.json"));

            Consola.Escribir($"\tHay un total de {Lista.Count} cuentas disponibles", ConsoleColor.Cyan);
        }
示例#3
0
        public static void BotClientListener(TcpClient tcpListener)
        {
            NetworkStream redStream      = tcpListener.GetStream();
            StreamReader  lectorStream   = new StreamReader(redStream);
            StreamWriter  escritorStream = new StreamWriter(redStream);

            escritorStream.BaseStream.ReadTimeout = 200;
            lectorStream.BaseStream.ReadTimeout   = 200;

            try
            {
                string mensajeRecibido = String.Empty;
                string mensajeEnviado  = String.Empty;
                {
                    while (recibiendo)
                    {
                        mensajeRecibido = lectorStream.ReadLine();

                        Recibidos.Interpretar(mensajeRecibido, lectorStream);
                        Enviados.Nuevo(mensajeEnviado, escritorStream);
                    }

                    Enviados.Interpretar(mensajeEnviado, escritorStream);
                }
            }
            catch (Exception e)
            {
                Consola.Escribir($"\t( Error ) Excepción leyendo del servidor: {e.Message}", ConsoleColor.Red);
            }

            redStream.Close();
        }
示例#4
0
        public static void Nuevo(string mensajeEnviado, StreamWriter escritorStream)
        {
            Consola.TabLinea(ConsoleColor.Yellow);
            mensajeEnviado = Console.ReadLine();

            escritorStream.WriteLine(mensajeEnviado);
            escritorStream.Flush();

            Consola.Escribir($"\t( Enviado ) # {mensajeEnviado}", ConsoleColor.Yellow);
        }
示例#5
0
 public static void Nuevo(string mensaje, StreamWriter escritorStream, Socket botSocket)
 {
     escritorStream.WriteLine(mensaje);
     if (!mensaje.Contains("bienvenido()"))
     {
         Consola.Escribir($"\t( Envíado ) # {botSocket.RemoteEndPoint}: {mensaje}", ConsoleColor.Yellow);
     }
     else
     {
         Consola.Escribir($"\t( Envíado ) # {botSocket.RemoteEndPoint}: bienvenido()", ConsoleColor.Yellow);
     }
     escritorStream.Flush();
 }
示例#6
0
        public static void Interpretar(string mensajeRecibido, StreamReader lectorStream)
        {
            if (mensajeRecibido != "nada()")
            {
                if (!mensajeRecibido.Contains("bienvenido()"))
                {
                    Consola.Escribir($"\t( Recibido ) # {mensajeRecibido}", ConsoleColor.DarkCyan);
                }
            }

            switch (mensajeRecibido)
            {
            case string bienvenido when bienvenido.Contains("bienvenido()"):
                Consola.Escribir($"\tCuenta otorgada por el servidor: {mensajeRecibido.Split('|')[1]}", ConsoleColor.Green);

                Cuenta.Nombre     = mensajeRecibido.Split('|')[1];
                Cuenta.Contraseña = mensajeRecibido.Split('|')[2];

                /* Una vez la cuenta es otorgada, intentar conectar: */
                AccionesCuenta.Conectar();

                /* Una vez conectamos, obtenemos los datos de la cuenta, es decir, apodo, esencias azules, nivel... */


                /* Ahora la cuenta ya puede estar marcada como 'conectada' */
                InformacionCuenta.Conectada = true;

                lectorStream.BaseStream.Flush();
                break;

            case string sinCuentas when sinCuentas.Contains("sinCuentasDisponibles()"):
                Consola.Escribir($"\tEl servidor no te ha podido otorgar cuenta por que no quedan cuentas disponibles", ConsoleColor.Red);

                lectorStream.BaseStream.Flush();
                break;

            case string pong when pong.Contains("pong()"):
                Consola.Escribir($"\tPing: {mensajeRecibido.Split('|')[1]} ms", ConsoleColor.Green);

                lectorStream.BaseStream.Flush();
                break;

            default:
                lectorStream.BaseStream.Flush();
                break;
            }
        }
示例#7
0
        static void Main(string[] args)
        {
            int       i, numero;
            factorial largo = 1;

            Consola.Escribir(" Ingrese un número:");
            numero = int.Analizar(Consola.ReadLine());
            Consola.WriteLine("\ n" + numero + "!=1");
            para(i = 2; i <= numero; i++);
            {
                factorial *= i;
                Consola.WriteLine("\u00D7" + i);
            }
            Consola.WriteLine("=" + factorial);
            Consola.WriteLine("Presione cualquier tecla para terminar...");
            Consola.ReadKey();
        }
示例#8
0
        internal static void Interpretar(string mensajeRecibido, StreamReader lectorStream, StreamWriter escritorStream, Socket BotSocket)
        {
            if (mensajeRecibido != null)
            {
                Consola.Escribir($"\t( Recibido ) # {BotSocket.RemoteEndPoint}: {mensajeRecibido}", ConsoleColor.DarkCyan);

                switch (mensajeRecibido)
                {
                case "desconectar()":
                    ServerService.MantenerConexion = false;
                    break;

                case "ping()":
                    Ping      pinger = new Ping();
                    PingReply reply  = pinger.Send(Program.Configuracion.Ip);
                    Enviados.Nuevo($"pong()|{reply.RoundtripTime}", escritorStream, BotSocket);
                    break;

                case string formarGrupo when formarGrupo.Contains("formarGrupo()"):
                    List <string> grupoCuentas = new List <string>();

                    foreach (Cuenta Cuenta in Program.Cuentas.Lista)
                    {
                        if (Cuenta.Conectada && !Cuenta.EnGrupo && grupoCuentas.Count < 4)
                        {
                            grupoCuentas.Add(Cuenta.Apodo);
                        }
                    }
                    if (grupoCuentas.Count >= 1)
                    {
                        Enviados.Nuevo($"grupoFormado()|{string.Join(",", grupoCuentas.ToArray())}", escritorStream, BotSocket);
                    }
                    break;

                case string iniciarPartidas when iniciarPartidas.Contains("iniciarPartidas()"):
                    //Enviados.Nuevo($"()", escritorStream, BotSocket);
                    break;

                default:
                    Enviados.Nuevo($"nada()", escritorStream, BotSocket);
                    break;
                }
            }
        }
示例#9
0
        static void Main(string[] args)
        {
            Consola.Inicializar();

            Configuracion = Json.Deserialize <Configuracion>(File.ReadAllText("client.json"));
            Consola.Escribir($"\tSe ha cargado la configuración", ConsoleColor.Green);

            try
            {
                tcpListener = new TcpClient(Configuracion.Ip, Configuracion.Puerto);
                Consola.Escribir($"\tIp: {Configuracion.Ip}, Puerto: {Configuracion.Puerto}", ConsoleColor.Cyan);

                ClientService.BotClientListener(tcpListener);
            }
            catch
            {
                Consola.Escribir($"\tHa fallado la conexión con el servidor", ConsoleColor.Red);
                return;
            }
        }
示例#10
0
        public static void alDesconectar(Socket botSocket)
        {
            Consola.Escribir($"\t( Desconexión ) # {botSocket.RemoteEndPoint}", ConsoleColor.Red);

            foreach (KeyValuePair <Socket, string> Client in ServerService.clientesConectados)
            {
                if (Client.Key.RemoteEndPoint.Equals(botSocket.RemoteEndPoint))
                {
                    Program.Cuentas.DesconectarCuenta(Client.Value);
                }
            }

            ServerService.clientesConectados.Remove(botSocket);

            botSocket.Close();
            ServerService.MantenerConexion = true;

            Thread newThread = new Thread(new ThreadStart(ServerService.BotListener));

            newThread.Start();
        }
示例#11
0
 public static void alConectar(Socket botSocket)
 {
     Consola.Escribir($"\t( Conexión ) # {botSocket.RemoteEndPoint}", ConsoleColor.Green);
 }
示例#12
0
        public static void Conectar()
        {
            if (Cuenta.Nombre == string.Empty || Cuenta.Contraseña == string.Empty || InformacionCuenta.Conectada)
            {
                return;
            }

            while (!Interop.IsProcessOpen("RiotClientUx"))
            {
                if (!ClienteEjecutado)
                {
                    Process.Start(@Program.Configuracion.CarpetaLeague + "LeagueClient.exe");
                    ClienteEjecutado = true;
                }

                BotHelper.Wait(5000);
            }

            Interop.BringWindowToFront("RiotClientUx");

            Consola.Debug($"\t[DEBUG] Atención: si no puedes conectar, debes editar 'client.json' y campiar los valores CampoCuenta y CampoContraseña por uno de los valores dados a continuación.", ConsoleColor.Red);
            Consola.Debug($"\t[DEBUG] Si no encuentras estos valores, debes editar en 'client.json' el valor, colorCampos por el color correspondiente (usar Color Viewer) debes convertir el color hex a color rgb (online).", ConsoleColor.Red);
            Consola.Debug($"\t[DEBUG] Los valores son X (izquierda) e Y (derecha), si el de la derecha es mayor entonces el campo es de contraseña, de lo contrario es el campo de la cuenta.", ConsoleColor.Red);
            Consola.Debug($"\t[DEBUG] --------------------------------------------------------------------------------- ", ConsoleColor.Red);

            try
            {
                while (!InformacionCuenta.listaParaConectar)
                {
                    foreach (Point CampoConexion in ImageHelper.getAllExistingColorPositions(Color.FromArgb(Convert.ToInt32(Program.Configuracion.ColorCampos.Split(',')[0]), Convert.ToInt32(Program.Configuracion.ColorCampos.Split(',')[1]), Convert.ToInt32(Program.Configuracion.ColorCampos.Split(',')[2]))))
                    {
                        if (CampoConexion.X == Convert.ToInt32(Program.Configuracion.CampoCuenta.Split(',')[0]) && CampoConexion.Y == Convert.ToInt32(Program.Configuracion.CampoCuenta.Split(',')[1]))
                        {
                            Consola.Escribir($"\tIntroduciendo nombre de la cuenta", ConsoleColor.Green);
                            InputHelper.LeftClick(Convert.ToInt32(Program.Configuracion.CampoCuenta.Split(',')[0]) + 80, Convert.ToInt32(Program.Configuracion.CampoCuenta.Split(',')[1]));
                            InputHelper.InputWords(Cuenta.Nombre, 200, 200);

                            BotHelper.Wait(1000);

                            InformacionCuenta.nombreCuentaEscrito = true;
                        }
                        if (CampoConexion.X == Convert.ToInt32(Program.Configuracion.CampoContraseña.Split(',')[0]) && CampoConexion.Y == Convert.ToInt32(Program.Configuracion.CampoContraseña.Split(',')[1]))
                        {
                            Consola.Escribir($"\tIntroduciendo contraseña de la cuenta", ConsoleColor.Green);
                            InputHelper.LeftClick(Convert.ToInt32(Program.Configuracion.CampoContraseña.Split(',')[0]) + 80, Convert.ToInt32(Program.Configuracion.CampoContraseña.Split(',')[1]));
                            InputHelper.InputWords(Cuenta.Contraseña, 200, 200);

                            BotHelper.Wait(1000);

                            InformacionCuenta.contraseñaCuentaEscrita = true;
                        }


                        Consola.Debug($"\t[DEBUG] Campos credenciales encontrados en: {CampoConexion.X},{CampoConexion.Y}", ConsoleColor.Red);

                        if (InformacionCuenta.nombreCuentaEscrito && InformacionCuenta.contraseñaCuentaEscrita)
                        {
                            InformacionCuenta.listaParaConectar = true;

                            break;
                        }
                    }
                }

                Consola.Debug($"\t[DEBUG] --------------------------------------------------------------------------------- ", ConsoleColor.Red);

                InputHelper.PressKey("Enter");

                InformacionCuenta.Conectada = true;

                Consola.Escribir($"\tCuenta conectada; esperando confirmación", ConsoleColor.Green);
            }
            catch (Exception e)
            {
                Consola.Escribir($"\tError: {e.Message}", ConsoleColor.Red);
            }
        }