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(); }
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); }
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(); }
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); }
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(); }
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; } }
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(); }
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; } } }
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; } }
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(); }
public static void alConectar(Socket botSocket) { Consola.Escribir($"\t( Conexión ) # {botSocket.RemoteEndPoint}", ConsoleColor.Green); }
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); } }