2009-09-08 56 views
11

Tôi đang làm việc trên một bot irc đơn giản trong C#, và tôi không thể tìm ra cách để nhúng mã điều khiển mirc điển hình cho in đậm/màu vv vào chuỗi ký tự.Nhúng mIRC Mã màu vào chữ C#?

Ai đó có thể chỉ cho tôi cách thực hiện việc này không?

+1

Làm gì? Mã màu mIRC là gì? Bạn đang cố làm gì vậy? –

+2

Mã mirc màu chỉ đơn giản là một ký tự đặc biệt chèn vào một chuỗi mà hầu hết các khách hàng irc phân tích cú pháp và sau đó mã màu một cách thích hợp. – FlySwat

Trả lời

19

Định dạng mã màu mIRC được mô tả here. Tôi đoán bạn đang hỏi cách nhúng một số ^C vào một chuỗi.

Điều này được gọi là Caret notation. Theo C0 and C1 control codes, ^C là:

'\x03' 

nhúng trong một chuỗi:

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

Hoặc bạn thậm chí có thể viết '" ♥ 5,12để được màu ♥ "', trình biên dịch không nên nghẹt thở về điều này. –

+0

@Anton: Đừng bận tâm, đọc lại câu trả lời. Tôi nhầm lẫn họ. –

+3

Đây không phải là mã màu ANSI. Mã màu ANSI là: "\ x1B [32,42m", v.v. –

8

Trong Python IRC bot của tôi, tôi có thể nhận được đậm để hiển thị trong irssi sử dụng \ x02sometext \ x02, trong đó cho thấy lên như:

this is \x02some text\x02 

đây là một số văn bản

Đối với màu sắc , Tôi tin rằng bạn đang tìm kiếm \ x03AA, BB trong đó A là màu nền trước và B là màu nền (những gì bạn nhập sau Ctrl + K). Tuy nhiên, không chắc chắn 100%. Hãy thử kết nối một máy khách IRC bằng telnet và kiểm tra những gì mIRC thực hiện khi bạn sử dụng Ctrl + K.

Bạn không có khả năng nhận được hành vi cố kết tiêu chuẩn trên các máy khách IRC ... Các mã thoát ANSI được xử lý bởi các máy khách Unix cũ như irssi và mIRC đôi khi thực hiện điều riêng.

+0

+1 để đề cập đến mã thoát ANSI! –

+2

mIRC có mã màu riêng (được biểu thị bằng \ x03) và tôi tin rằng điều này được hỗ trợ tốt trên các trình khách GUI tối thiểu trong những ngày này. Tôi có thể đi tuyến đường này cho một khách hàng IRC. Ngoài ra, tôi nghi ngờ irssi và khách hàng dòng lệnh tương tự phân tích các mã ANSI, họ chỉ phân tích chúng thông qua giao diện điều khiển và để cho nó lo lắng về chúng. –

+1

mIRC màu sắc là khá chuẩn, và trong khi một số khách hàng có thể có bảng màu riêng của họ, hầu hết khách hàng nên sử dụng cùng một bảng màu, ngay cả khi không chính xác như nhau. Các mã thoát ANSI không được hỗ trợ bởi tất cả các máy khách, những thứ duy nhất tôi biết là Irssi và (đáng ngạc nhiên) HexChat. – nyuszika7h

11

tôi tạo một enum và gán các giá trị hex cho các mã kiểm soát đối với họ.

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

Cảm ơn rất nhiều về các enums – MOnsDaR

0

Điều này có thể là thư viện trò chuyện cụ thể mà tôi đang sử dụng (ChatSharp), nhưng tôi không thể nhận câu trả lời được chấp nhận hiện tại để hoạt động. Những gì tôi đã kết thúc là:

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