2009-09-08 5 views
11

Ich arbeite an einem einfachen IRC-Bot in C#, und ich kann nicht herausfinden, wie die typischen Mirc-Steuercodes für Fett/Farbe usw. in String-Literale eingebettet werden.Embed mIRC Farbcodes in ein C# Literal?

Kann mir jemand zeigen, wie das geht?

+1

Was tun? Was ist ein mIRC-Farbcode? Was versuchst du zu machen? –

+2

Ein Mirc-Farbcode ist einfach ein Sonderzeichen, das in eine Zeichenfolge eingefügt wird, die von den meisten irc-Clients analysiert und dann entsprechend codiert wird. – FlySwat

Antwort

19

Das mIRC-Farbcodeformat ist beschrieben here. Ich vermute, Sie fragen, wie man eine ^C in eine Zeichenfolge einbetten kann.

Dies ist bekannt als Caret notation. Nach C0 and C1 control codes, ^C ist:

'\x03' 

in einem String Embedded:

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

Oder du schreibst vielleicht "" ♥ 5,12, um farbig zu sein ♥ "', der Compiler sollte daran nicht ersticken. –

+0

@Anton: Macht nichts, lesen Sie die Antwort erneut. Ich verwirre sie. –

+3

Dies ist kein ANSI-Farbcode. ANSI Farbcodes sind: "\ x1B [32,42m" usw. –

8

In meinem Python IRC-Bot, kann ich fett erhalten in irssi, zeigen sich mit \ x02sometext \ x02, die wie zeigt sich:

this is \x02some text\x02 

dies some text

Wie für Farben Ich glaube, du suchst nach \ x03AA, BB, wobei A die Vordergrundfarbe und B die Hintergrundfarbe ist (was du nach Strg + K eingeben würdest). Nicht zu 100% sicher. Versuchen Sie, einen IRC-Client mit telnet zu verbinden, und prüfen Sie, was mIRC tut, wenn Sie Strg + K verwenden.

Es ist nicht wahrscheinlich, dass Sie ein einheitliches kohäsives Verhalten über IRC-Clients erhalten ... ANSI-Escape-Codes werden von älteren Unix-Clients wie irssi verarbeitet, und mIRC erledigt manchmal sein eigenes Ding.

+0

+1 für die Angabe von ANSI-Escape-Codes! –

+2

mIRC hat seine eigenen Farbcodes (bezeichnet mit \ x03), und ich glaube, dass dies heutzutage bei atleast GUI-Clients gut unterstützt wird. Ich würde diese Route wahrscheinlich für einen IRC-Client nehmen. Außerdem bezweifle ich, dass irdisi und ähnliche Kommandozeilen-Clients die ANSI-Codes analysieren, sie analysieren sie einfach zur Konsole und lassen sich Sorgen um sie machen. –

+1

mIRC-Farben sind ziemlich Standard, und während einige Clients ihre eigenen Paletten haben, sollten die meisten Clients die gleiche Palette verwenden, auch wenn sie nicht genau gleich sind. ANSI-Escape-Codes werden nicht von allen Clients unterstützt, die einzigen, die ich kenne, sind Irsi und (überraschenderweise) HexChat. – nyuszika7h

11

I eine ENUM erstellen und die Hex-Werte für die Steuercodes zuweisen.

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

Vielen Dank für die Enums – MOnsDaR

0

Dies könnte auf die spezifische Chat-Bibliothek, die ich verwendete (ChatSharp), aber ich konnte nicht erhalten die aktuelle akzeptierte Antwort zu arbeiten. Was ich damit endete war:

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