2009-09-08 18 views
11

私はC#の単純なircボットで作業していますが、ボールド/カラーなどの一般的なmircコントロールコードを文字列リテラルに埋め込む方法がわかりません。mIRCカラーコードをC#リテラルに埋め込む?

誰かがこれを行う方法に向けて私を指摘できますか?

私のPythonのIRCボットで
+1

何をしますか? mIRCのカラーコードとは何ですか?あなたは何をしようとしているのですか? –

+2

mircカラーコードは、文字列に挿入する単なる特殊文字です。ほとんどのircクライアントが解析し、適切にカラーコードを記述します。 – FlySwat

答えて

19

mIRCカラーコードフォーマットは、hereと記載されています。私は文字列に^Cを埋め込む方法を尋ねていると思います。

これはCaret notationとして知られています。 C0 and C1 control codesによれば、^Cである:

文字列に埋め込まれ
'\x03' 

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

また、「♥5,12」という色をつけて♥ "'と書くこともできますが、コンパイラーはこれを嫌うべきではありません。 –

+0

@Anton:心配しないで、返信してください。私はそれらを混乱させる。 –

+3

これはANSIカラーコードではありません。 ANSIのカラーコードは次のとおりです: "\ x1B [32,42m"など –

8

、私が使用してのirssiに表示する大胆な得ることができます\ x02sometext \ X02、のように現れた:

this is \x02some text\x02 

これは、色に関してはいくつかのテキスト

です\ x03AA、BBはAを前景色、Bは背景色(Ctrl + Kの後に入力するもの)を探していると思います。しかし、確かに100%ではありません。 Telnetを使ってIRCクライアントに接続し、Ctrl + Kキーを押したときにmIRCの機能を確認してください。

IRCクライアント間で標準的な結束行動を取る可能性は低いです... ANSIエスケープコードはirssiのような旧式の旧式のUnixクライアントの多くで処理されますが、mIRCは時には独自のことをします。

+0

+1はANSIエスケープコードに言及しています! –

+2

mIRCには独自のカラーコード(\ x03と表示されています)があります。これは、最近のGUIクライアントでよくサポートされていると思います。私はおそらく、このルートをIRCクライアントに持っていきます。また、irssiや類似のコマンドラインクライアントがANSIコードを解析するのを疑って、コンソールに解析して心配させます。 –

+1

mIRCの色はかなり標準的ですが、一部のクライアントで独自のパレットを使用することがありますが、ほとんどのクライアントでは同じではないにしても同じパレットを使用する必要があります。 ANSIエスケープコードはすべてのクライアントでサポートされているわけではありませんが、私が知っているのはIrssiと(驚くほど)HexChatだけです。 – nyuszika7h

11

Iが列挙を作成し、それらへの制御コードの進値を割り当てます。

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

enums – MOnsDaR

0

これは私が使用していた特定のチャットライブラリ(ChatSharp)にあるかもしれませんが、私は現在受け入れられている回答を得ることができませんでした。私が結局何をしたのですか:

channel.SendMessage((char)3 + "5,12hello"); 
関連する問題