2009-09-08 14 views
11

Sto lavorando su un semplice bot irc in C# e non riesco a capire come incorporare i tipici codici di controllo mirc per bold/color etc in string letterali.Incorpora codici colore mIRC in un letterale C#?

Qualcuno può indicarmi come farlo?

+1

Cosa fare? Cos'è un codice colore mIRC? Cosa stai cercando di fare? –

+2

Un codice colore mirc è semplicemente un carattere speciale che si inserisce in una stringa che la maggior parte dei client irc analizza e quindi codifica in modo appropriato. – FlySwat

risposta

19

Il formato del codice colore mIRC è descritto here. Immagino tu stia chiedendo come incorporare uno ^C in una stringa.

Questo è noto come Caret notation. Secondo C0 and C1 control codes, ^C è:

'\x03' 

all'interno di una stringa:

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

Oppure potresti anche scrivere '" ♥ 5,12 per essere colorato ♥ "', il compilatore non dovrebbe soffocare su questo. –

+0

@Anton: Non importa, rileggi la risposta. Li confondo –

+3

Questo non è un codice colore ANSI. I codici colore ANSI sono: "\ x1B [32,42m" ecc. –

8

Nel mio Python IRC bot, posso avere il coraggio di presentarsi in irssi usando \ x02sometext \ X02, che si presenta come:

this is \x02some text\x02 

questo è un testo

quanto riguarda i colori , Credo che tu stia cercando \ x03AA, BB dove A è il colore di primo piano e B il colore di sfondo (cosa dovresti digitare dopo Ctrl + K). Non certo al 100%, comunque. Prova a connettere un client IRC usando telnet e controlla cosa fa mIRC quando usi Ctrl + K.

Non è probabile che si ottenga un comportamento coeso standard tra i client IRC ... I codici di escape ANSI vengono elaborati da altri client Unix di punti obsoleti come irssi e talvolta il mIRC fa le sue cose.

+0

+1 per aver menzionato i codici di escape ANSI! –

+2

mIRC ha i propri codici colore (indicati con \ x03) e credo che questo sia ben supportato da tutti i client GUI di atleast in questi giorni. Probabilmente prenderei questa strada per un client IRC. Inoltre, dubito che irssi e simili client di comando analizzino i codici ANSI, li analizzano semplicemente attraverso la console e lasciano che si preoccupi di loro. –

+1

I colori mIRC sono piuttosto standard e, mentre alcuni client potrebbero avere le proprie palette, la maggior parte dei client dovrebbe utilizzare la stessa tavolozza, anche se non esattamente la stessa. I codici di escape ANSI non sono supportati da tutti i client, gli unici che conosco sono Irssi e (sorprendentemente) HexChat. – nyuszika7h

11

Creo un enum e assegnare i valori esadecimali per i codici di controllo a loro.

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

Grazie mille per l'enumerazione – MOnsDaR

0

Questo potrebbe essere giù per la specifica libreria di chat che stavo usando (ChatSharp), ma non ho potuto far funzionare la risposta corrente accettata. Quello che ho finito è stato:

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