2009-09-08 34 views
11

Estoy trabajando en un irc bot simple en C#, y no puedo encontrar la manera de insertar los códigos de control mirc típicos para negrita/color, etc. en literales de cadena.¿Incrustar los códigos de color mIRC en un C# literal?

¿Alguien me puede indicar cómo hacerlo?

+1

¿Qué? ¿Qué es un código de color mIRC? ¿Que estás tratando de hacer? –

+2

Un código de color mirc es simplemente un carácter especial que se inserta en una cadena que la mayoría de los clientes de IRC analizan y luego colorean apropiadamente. – FlySwat

Respuesta

19

El formato de código de color mIRC se describe here. Supongo que estás preguntando cómo insertar un ^C en una cadena.

Esto se conoce como Caret notation. De acuerdo con C0 and C1 control codes, ^C es:

'\x03' 

incrustado en una cadena:

"blabla \x035,12to be colored text and background\x03 blabla" 
+0

O incluso podría escribir '" ♥ 5,12 para ser coloreado ♥ "', el compilador no debería ahogarse con esto. –

+0

@ Anton: No importa, vuelva a leer la respuesta. Los confundo –

+3

Este no es el código de color ANSI. Los códigos de color ANSI son: "\ x1B [32,42m" etc. –

8

En mi Python bot de IRC, puedo conseguir negrita a aparecer en irssi usando \ x02sometext \ x02, que se muestra como:

this is \x02some text\x02 

esto es un texto

cuanto a los colores , Creo que estás buscando \ x03AA, BB donde A es el color de primer plano y B el color de fondo (lo que escribirías después de Ctrl + K). Sin embargo, no es 100% seguro. Intente conectar un cliente de IRC con telnet y compruebe qué hace mIRC cuando usa Ctrl + K.

No es probable que obtenga un comportamiento cohesivo estándar entre los clientes de IRC ... Los códigos de escape de ANSI son procesados ​​por más de los clientes clásicos de Unix de tarifa antigua como irssi, y mIRC a veces hace lo suyo.

+0

+1 por mencionar códigos de escape ANSI! –

+2

mIRC tiene sus propios códigos de color (denotados por \ x03), y creo que esto está bien soportado en clientes GUI al menos en estos días. Probablemente tomaría esta ruta para un cliente de IRC. Además, dudo que irssi y clientes de línea de comandos similares analicen los códigos ANSI, simplemente los analizan en la consola y dejan que se preocupe por ellos. –

+1

Los colores mIRC son bastante estándar, y aunque algunos clientes pueden tener sus propias paletas, la mayoría de los clientes deben usar la misma paleta, aunque no sea exactamente la misma. Los códigos de escape ANSI no son compatibles con todos los clientes, los únicos que conozco son Irssi y (sorprendentemente) HexChat. – nyuszika7h

11

creo una enumeración y asigne los valores hexadecimales de los códigos de control a ellos.

enum ColorCode { 
    White   = 0, /**< White */ 
    Black   = 1, /**< Black */ 
    DarkBlue  = 2, /**< Dark blue */ 
    DarkGreen  = 3, /**< Dark green */ 
    Red   = 4, /**< Red */ 
    DarkRed   = 5, /**< Dark red */ 
    DarkViolet  = 6, /**< Dark violet */ 
    Orange   = 7, /**< Orange */ 
    Yellow   = 8, /**< Yellow */ 
    LightGreen  = 9, /**< Light green */ 
    Cyan   = 10, /**< Cornflower blue */ 
    LightCyan  = 11, /**< Light blue */ 
    Blue   = 12, /**< Blue */ 
    Violet   = 13, /**< Violet */ 
    DarkGray   = 14, /**< Dark gray */ 
    LightGray  = 15 /**< Light gray */ 
}; 

enum ControlCode { 
    Bold   = 0x02,  /**< Bold */ 
    Color   = 0x03,  /**< Color */ 
    Italic   = 0x09,  /**< Italic */ 
    StrikeThrough   = 0x13,  /**< Strike-Through */ 
    Reset   = 0x0f,  /**< Reset */ 
    Underline  = 0x15,  /**< Underline */ 
    Underline2  = 0x1f,  /**< Underline */ 
    Reverse   = 0x16  /**< Reverse */ 
}; 
+2

Muchas gracias por las enumeraciones – MOnsDaR

0

Esto podría deberse a la biblioteca de chat específica que estaba usando (ChatSharp), pero no pude obtener la respuesta aceptada actual para trabajar. Lo que terminé fue:

channel.SendMessage((char)3 + "5,12hello"); 
Cuestiones relacionadas