IRCBT

IRCBT ist ein (Open Source) IRC Client von mir, welchen ich 2010 dafür entwickelt hatte, um ihn in GameMaker Spiele oder Programme einbauen zu können. Zu dieser Zeit war er nur ein simples Grundgerüst mit nur wenigen Funktionen.

2013 habe ich begonnen ihn weiter zu entwickeln - genauere Infos zum Fortschritt gibt es unten.

 

Thread im deutschen GameMaker Community-Forum:

IRCBT auf gm-d.de

Was ist IRC?

"Internet Relay Chat, kurz IRC, bezeichnet ein rein textbasiertes Chat-System. Es ermöglicht Gesprächsrunden mit einer beliebigen Anzahl von Teilnehmern in so genannten Channels (Gesprächskanälen), aber auch Gespräche zwischen zwei Teilnehmern (Query).
Neue Channels können üblicherweise jederzeit von jedem Teilnehmer frei
eröffnet werden, ebenso kann man gleichzeitig an mehreren Channels
teilnehmen. (...)"

-> Internet relay Chat auf Wikipedia

Unterstützte IRC Befehle

 

Beschreibung                     IRC-Code           Ergebnis
Farbiger Text 2Farbe Farbe
Farbiger Hintergrund   1,7Farbe Farbe

 

Umfangreichere Beispiele

 

IRC-Code Ergebnis
 
8,0|0,8|7,8|8,7|4,7|7,4|5,4|
4,5|1,5|5,1|9,1 BadToxic 5,1|
1,5|4,5|5,4|7,4|4,7|8,7|7,8|
|||||||||BadToxic ||||||||

 
0,0 | 1,1 | 2,2 | 3,3 | 4,4 | 5,5 | 6,6 |
7,7 | 8,8 | 9,9 | 10,10 | 11,11 |
12,12 | 13,13 | 14,14 | 15,15 |
 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 

History

=== 25.08.2013 ===
- Es werden nun .ini Dateien verwendet. Per F5 kann man die aktuellen Verbindungsdaten speichern. Diese werden dann beim nächsten Start verwendet.


=== 15.08.2013 ===
- Wenn der letzte Empfang mehr als vier Minuten zurück liegt, wird die TCP-Verbindung getrennt (TimeOut).


=== 14.08.2013 ===
- Markierter Text kann nun direkt überschrieben oder per Backspace entfernt werden.


=== 13.08.2013 ===
- Verbindungszustand bzw. Server- und Channelname stehen nun im Fenster- und Anwendungstitel (Tastkbar). Dahinter steht in Klammern die Anzahl der neuen Nachrichten, seitdem das letzte mal etwas im Fenster getan wurde (Klick, Scrollen, Schreiben).
- Cursor wird im Textfeld angezeigt.
- Cursor kann mit den Pfeiltasten verschoben werden. (Beginnt langsam - wird schneller.)
- Neuer Text wird an der Stelle des Cursors eingefügt/entfernt.
- Text im Textfeld kann mit Maus oder Pfeiltasten+Shift markiert werden.
- Markierter Text kann mit STRG+C kopiert, mit STRG+X ausgeschnitten oder mir STRG+V (durch die Zwischenablage) ersetzt werden.


=== 12.08.2013 ===
- Wird versucht ein Text mit Umbrüchen in das Textfeld zu kopieren, so wird nur die erste Zeile davon eingefügt.
- 473 ERR_INVITEONLYCHAN wird erkannt. Es wird eine Meldung gezeigt.
- Blinkendes Cursor am Textende im Textfeld implementiert.
- INVITE <nickname> <channel> implementiert. Wurde man in den Raum eingeladen, in den man eh wollte, wird man automatisch verbunden.
- Einloggen, Ausloggen/Kicken und Benachrichtigungen haben nun extra Sounds.
- Ist der eigene Name in einer normalen Nachricht enthalten, klingt der Ton nun auch etwas anders (höher).


=== 11.08.2013 ===
 - Links werden jetzt erkannt und blau unterlegt. Klickt man sie an, öffnet sich der Standard Browser.


=== 10.08.2013 ===
 - Namen werden jetzt abgekürzt, wenn sie nicht in die Benutzerliste passen. (Hinten Buchstaben weglassen.)
 - Farben können nicht mehr während dem Skalieren verändert werden (Bug).
 - Das Chat-Textfeld kann nun Zeilenumbrüche in einzelnen Nachrichten haben. Diese werden auch bei Veränderung der Fenstergröße automatisch angepasst.
 - Es werden jetzt Smileys unterstützt.

 

=== 08.08.2013 ===
 - 433 ERR_NICKNAMEINUSE wird bemerkt, der Name um ein '_' ergänzt und ein Reconnect versucht. Nachricht teilt dies mit.
 - Wenn die Verbindung verloren wurde (TCP), wird nach gewisser Zeit ein Reconnect probiert.
 - Zeiten werden nun vor die Logs geschrieben (optional-flag in "global.irc_use_log_time")
 - Es wird nun auch als Nachricht angezeigt, wenn ein Modus eines Benutzers geändert wird.
 - Schreibgeräusche, momentan aus vier Tönen (man könnte mehrere Sets erstellen)
 - NICK wird nun abgefangen und der entsprechende Benutzer umbenannt (@ stört nicht) und es wird gemeldet.
 - '/'-Befehle sind nun möglich.
 - "clearbuffer","writechars" und "sendmessage" zu "irc_send" zusammengefasst, zum leichten Austauschen im GM:S.
 - KICK implementiert. Es können mehrere Räume und Nicks angegeben werden. Wird mit Grund ausgegeben.
 - Eigenes Quit beendet die komplette Verbindung.

 

=== 07.08.2013 ===
 - Schrift- und Hintergrundfarbe können nun auch wieder abgewählt werden
 - Im JOIN Befehl das ':' entfernt oO ...
 - PART wird nun auch unterstützt (= QUIT)
 - 004 RPL_MYINFO wird nun abgefangen: Verfügbare Benutzer- und Channel-Modi aufgezeichnet. (Noch nicht verwendet)
 - 221 RPL_UMODEIS wird abgefangen um eigenen Modus direkt zu ersetzen.
 - Modes, die den eigenen Benutzer betreffen, werden nun in der Titelleiste des Chatfensters angezeigt.
 - MODE wird abgefangen:
 - Änderungen an den Modes, die den eigenen Benutzer betreffen, werden aktuallisiert.
 - eine Modeanderung welche +o oder -o enthält, setzt nun ein @ vor den jeweiligen Namen, oder entzieht es ihm.

 

=== 06.08.2013 ===
 - Log Funktion eingebaut
 - (Theoretisch mehrere Chats möglich - aus fast allen Variablen Arrays gemacht)
 - Doppelklick auf Titelleiste wechselt zwischen Vollbild/Fenstermodus.

 

=== 03.09.2010 ===

Grafik
Ich habe komplett auf die Nutzung von Sprites und Hintergründen verzichtet, um das Einbetten in andere Programme für jeden zu erleichtern und das Design simple zu halten. Der Client besteht lediglich aus ein paar transparenten, weiß-grauen, abgerundeten Rechtecken. Eine Besonderheit ist das Textfeld, in welches man schreibt, dieses schwingt durch Drücken auf die Tasten, beim Schreiben mit. Der Rest ist relativ schlicht gehalten.

Fortschritt
Es gibt noch einiges zu tun. Bisher wird man automatisch in angegebenen Server und Channel eingeloggt. Es wird davon  ausgegangen, dass keine Fehler dabei auftreten. Man kann schreiben, und andere User im Channel sehen. Es wird farbiger Text und farbiger Hintergrund unterstützt. Bisher gibt es keine automatischen Zeilenumbrüche, da ich noch nicht weiß, wie genau ich das umsetzen soll (siehe komplizierte Datenstruktur, um die Farbcodes zu verwirklichen). Das Fenster kann verschoben und scaliert werden. Es fehlen und Unterstützungen für fetten und unterstrichenen Text. Zudem werden Fehlerfälle nicht behandelt und vieles mehr...

Profil von Michael Grönert auf LinkedIn anzeigen

 

Michael Grönert

 

Michael Grönerts DevBlog anzeigen

 

Michael Grönert auf GitHub anzeigen

 

Profil von Michael Grönert auf DeviantArt anzeigen