Anzeige:
Anzeige:

IRC-Coding

Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

Schleifen im mIRC

Es gibt zwei Möglichkeiten im mIRC eine Schleife zu scipten. Die Erste ist mit einem Sprungbefehle "/goto", den Einige vielleicht noch aus Basic Zeiten kennen. Diese Möglichkeit wird hier jedoch nicht näher erläutert. Der Grund dafür ist das ich die Scripte damit für unübersichtlich halte. Wenden wir uns also der zweiten Möglichkeit zu eine Schleife zu implementieren. Dazu benutzen wir den Befehl "/while", wozu ich auch gleich mal ein Beispiel anführe.

Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

Abfragen im mIRC

Einige Abfragen haben wir hier schon gesehen im Tutorial, diese wollen wir uns jetzt mal genauer anschauen. Abfragen dienen dazu 1 zu überprüfen oder 2 Werte miteinander zu vergleichen. Dazu benutzt man die verschiedenen Operatoren die mIRC bietet. Doch schauen wir uns erstmal eine einfache Abfrage an.

... if ($chan == #Testraum) {...

Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

Die mIRC Popupmenüs
Die Popupmenüs im mIRC werden in erster Linie zur Bedienung des mIRC oder der aufgesetzten Scripte benutzt. Eigentlich werden sie im Popupsbereich des Editors erstellt. Dabei gibt es aber auch Ausnahmen zum Beispiel wenn ein Add-On sein eigenes Popupmenü mitbringt, oder wenn das Menü dynamisch sein soll. Wobei dynamisch heisst, dass je nach einem bestimmten Wert Menüpunkte vorhanden sind oder nicht, dazu aber später mehr. Popupmenüs für Userwindows oder Dialoge werden hier nicht mit abgehandelt, dass geschiet an anderer Stelle. Doch schauen wir uns nun erstmal an wo es überall Popupmenüs gibt und was man damit macht.


Die fünf Popupmenüs
Es können im Editor unter dem Menüpunkt View fünf verschiedene Popupmenüs gewählt werden. Diese sind: Status, Channel, Query, Nick List und Menu Bar. Alle Popups ausser das in der Menüleiste (Menu Bar) des mIRC werden mit einem Rechtsklick im entsprechenden Bereich aufgerufen. Das Statuspopupmenü erscheint im Statusfenster hier sollte man also Funktionen einbauen die im gesamten Chat gültig sind. Das Channelpopup erscheint wenn man im Textbereich eines Raumfensters klickt, dort passen also gut raumweite Funktionen rein. Das Querypopup ist für sogenannte Flüsterfenster (Querys) oder auch für DCC-Chatfenster. Hier sollten also in erster Linie Funktionen stehen dir nur für einen User gedacht sind. Dann kommt das Nicklistpopup welches nur in der Nickliste eines Raumfensters erscheint. Dort passen auch gut Funktionen hin die für ein oder mehrer User direkt gedacht sind. Bleibt als Letztes noch das Menubarpopup, welches prädestiniert ist für Bedienungsfunktionen. Damit sind alle fünf Standardpopupmenüs des mIRC abgehandelt und wir können uns jetzt um die Syntax kümmern.


Die Syntax von Popupmenüs
Es folgt als erstes ein Codebeispiel das ihr in euer mIRC eingeben solltet. Das ist wichtig damit ihr den Aufbau dieses Popupmenüs seht, denn Dieser wird hier nicht gezeigt. Ich habe als Beispiel ein Channelpopup gewählt, also wählt den richtigen Bereich im Editor bevor ihr den Code hineinkopiert.

Begrüssungen
.Guten Morgen:{ msg $chan Guten Morgen ihr lieben User im $chan }
.Zu Früh:{ msg $chan Moin moin, ich glaub für mich ist es noch zu früh. *gg }
.-
.Mahlzeit:{ msg $chan Mahlzeit alle im $chan $+ , ich hoffe ihr habt zu Essen. :o) }
Verabschiedungen
.Schönen Tag: { describe $chan wünscht allen noch einen schönen Tag. }
.Bin Müde: { msg $chan Ich bin müde und gehe zu Bett! *winkers }
-
Raumeinstellungen:{ channel $chan }
Wenn ihr den Code eingegeben habt und dann einen Rechtsklick in einem Raumfenster macht solltet ihr das Popupmenü sehen. Und zwar mit folgenden Punkten: Begrüssungen, Verabschiedungen und durch eine Linie getrennt Raumeinstellungen. Wobei hinter Begrüssungen und Verabschiedungen ein Pfeil ist der anzeigt das es dort Unterpunkte gibt. Diese werden gezeigt sobald ihr mit dem Cursor über einen dieser Einträge fahrt. Vergleichen wir nun den Aufbau mit dem Code. Wir stellen fest das einfache Worte einen Menüeintrag und Bindestriche eine Trennlinie erzeugen. Des weiteren sehen wird das Menüeinträge und Code durch einen Doppelpunkt getrennt sind. Und als letztes das durch einen Punkt vor einem Eintrag (oder Trennline) dieser eine Ebene tiefer im Menü erscheint. Hätte ich zwei oder drei Punkte davor gemacht wären es auch zwei oder drei Ebenen tiefer gewesen, wobei in jeder Ebene ein Begriff stehen sollte. Natürlich könnte bei den ausführbaren Einträgen auch ein mehrzeiliger Code hinterstehen. Wer diesen Aufbau jetzt begriffen hat kann im Prinzip jedes Popupmenü gestalten.


Popupeintrag deaktiviert oder abgehagt
Nun bietet mIRC noch die Möglichkeit Menüeinträge zu deaktivieren oder mit einem Häkchen zu versehen. Dazu braucht man einen speziellen Identifer den ich hier kurz zeigen möchte. Der Identifer heisst $style und kann vier Zustände erzeugen. Diese sind:
- $style(0) = Aktiv (Standardwert)
- $style(1) = Abgehakt (Haken vor Eintrag)
- $style(2) = Deaktiv (Auswahl nicht möglich)
- $style(3) = Abgehakt und Deaktiv (siehe 1 und 2)
Um Styles immer an einen aktuellen Zustand anzupassen brauchen wir eine Abfrage. Diese Abfrage machen wir mit einem weiteren Identifer mit Namen $iif. Zur Erklärung dieses Identifer schreiben wir uns das folgende kleine Popupmenü.

$iif(%teststatus == EIN,$style(1),$style(0)) Test:{
if (%teststatus == EIN) {
set %teststatus AUS
echo -s Der Teststatus ist %teststatus
}
else {
set %teststatus EIN
echo -s Der Teststatus ist %teststatus
}
}
Gebt diesen Code am besten in das Statuspopupmenü ein. Dieses Popupmenü kann als Schalter für eine bestimmte Funktion genommen werden, in der je nach Wert der Variablen %teststatus das Script ausgeführt wird oder nicht. Wenn der Wert der Variablen "EIN" ist, wird der Menüpunkt mit einem Haken angezeigt. Das heisst also für den Identifer $iif, ist die Bedingung Wahr (TRUE) wirde der erste Wert ($style(1)) zurückgegeben und wenn nicht dann der zweite Wert. Zusätzlich wäre es möglich den Identifer $iif zu Verschachteln, aber auf ein Beispiel dazu verzichte ich hier. So nun wisst ihr im Prinzip alles was man speziell zu Popups wissen muss, mal abgesehen davon welchen Identifer man in welchem Popup einsetzen kann. Dieses Wissen kann man aber erst mit der Zeit lernen und durch das scripten selber.

Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

Fehlersuche in Scripten

Nachdem wir nun die ersten kleinen Scripte geschrieben haben, sollte wir uns darum kümmern wie man Fehler in den Scripten findet. Es gibt zwei Arten von Fehlern, das sind Syntaxfehler und Logigfehler. Syntaxfehler können sein: Eine vergessene Klammer, ein falsch geschriebener Befehl oder ein falscher Parameter. Solche Fehler sind meist sehr leicht zu finden weil mIRC bei den meisten eine Fehlermeldung erzeugt. Diese Fehlermeldung sieht in etwa wie folgt aus: 
/if: invalid format (line 2, boardtest.ini) 
Diese Fehlermeldung hält reichlich Informationen für uns bereit. In der Klammer steht die Zeile (line 2) in der ein Fehler auftrat und die Datei (boardtest.ini) in der das Script ist. Desweiteren erfahren wir das es in der Zeile eine /if Abfrage gibt welche ein falsches Format hat. Damit lässt sich der Fehler also ziemlich leicht finden. Eine Möglichkeit fehlende geschweifte Klammern zu finden ist der Button rechts oben im Editor mit den zwei gescheiften Klammern. Ausserdem erzeugt eine Klammernpaar im Code immer einen Einzug, so wie er auch hier im Tutorial gezeigt wird. Somit lassen sich fehlende Klammern auch leicht durch die fehlenden Einzüge im Scriptcode entdecken. Das wäre eigentlich alles zu Syntaxfehlern.

 

Logigfehler finden

Bei Logigfehler ist die Suche schon etwas aufwendiger. Dazu nehmen wir als erstes mal ein Bespielscript welches wir später mit /echo Befehlen ausstatten um den Ablauf in allen Einzelheiten zu prüfen.

on 1:TEXT:!tipp:#Testraum:{ if ($read(Mitglieder.txt,s,$nick)) { var %tipp $read(Tipps.txt) msg $chan Dein Tipp lautet: %tipp } }

Dies ist eine simple Funktion die im Channel #Testraum Tipps an Mitglieder ausgibt. Wie die Textdateien genau aussehen oder die Ausgabe dieser Funktion muss uns dabei nicht interessieren. Wir wollen aber nun wissen ob die Funktion richtig läuft oder warum nicht. Dazu bauen wir in die Funktion diverse /echo Befehle ein, um die Zustände und Abläufe genau zu prüfen. Hier jetzt also das gleiche Script mit den /echo Befehlen.

on 1:TEXT:!tipp:#Testraum:{ echo -s Tipps triggert! echo -s Mitgliedstatus ist: $read(Mitglieter.txt,s,$nick) if ($read(Mitglieder.txt,s,$nick)) { echo -s Mitgliedtest bestanden! var %tipp $read(Tipps.txt) echo -s Variable tipp ist: %tipp msg $chan Dein Tipp lautet: %tipp } }

Nun können wir genau sehen wie das Script abläuft und welche Zustände die Identifer und Variablen haben. Ich erkläre nun die /echo Befehle im einzelnen. Alle /echo Meldungen werden im Statusfenster ausgegeben. Liest man die erste Meldung (Tipps triggert!) weiss man das der Remote ausgelöst wurde. Die zweite und die dritte Meldung (Mitgliedstatus ist:...; Mitgliedtest bestanden!) könnte man auch abwechselnd einsetzen. Bei der letzten Meldung (Variable tipp ist:...) wird der Wert der Variablen ausgegeben also der Tipp der auch im Raum erscheinen sollte. Ich hoffe es ist euch klar geworden warum ich die einzelnen Echos eingebaut habe. Ihr müsst in der Praxis wissen wo es Sinn macht diese /echo Befehle einzubauen um die Zustände und Werte zu prüfen. Ansonsten ist es wichtig das Script nicht nur auf richtigen Ablauf zu prüfen, sondern auch auf falschen. Das heisst das auch mal ein Nichtmitglied !tipp eingeben sollte um zu sehen ob das Script nicht ausgeführt wird. Dieser Test ist mindestens genau so wichtig wie die richtige Ausführung zu prüfen.

So viel zur Fehlerprüfung. Und verlasst euch darauf ihr werdet Fehler machen, wie jeder Andere auch einschliesslich mir. Deshalb ist die Fehlersuche so wichtig und auch das lernen wie man Scripte richtig testet.

Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

Die mIRC Aliases
Die Aliases im mIRC bilden so zu sagen den Einstieg. Sie sind die einfachste Möglichkeit Scripte zu erstellen. Hauptsächlich werden mit Aliases Hilfsfunktionen geschrieben zum Beispiel als neuer Befehl oder Identifer. Ebenfalls lassen sich die F-Tasten mit Funktionen belegen, jede sogar mit drei Verschiedenen. Doch schauen wir uns einfach mal ein erstes kleines Script an.

Ein erstes Script /joinall { join #RAUM1 join #RAUM2 join #RAUM3 }
Dieses kleine Script bewirkt das wenn ihr den Befehl /joinall eingebt, die Räume 1 - 3 betreten werden. Dazu muss man natürlich mit einem Server verbunden sein und man sollte sich in keinem der drei Räume aufhalten. Normalerweise würde man solche Dinge in Abfragen überprüfen und das Script entsprechend reagieren lassen, doch dieses Beispiel dient erstmal zur Einführung in die Syntax. Schauen wir uns den Code also einmal genauer an. Der Alias beginnt mit einem Schrägstrich gefolgt von seinem Namen. Dieser Name kann frei gewählt werden, darf aber kein im mIRC vohandener Name sein. Sonst würde der vorhandene Befehl überlagert und das mIRC würde diesen Befehl nicht mehr ausführen können. Nach dem Namen folgt eine öffnende geschweifte Klammer, sie leitet den eigentlichen Code ein. Dann folgen drei Befehle mit entsprechenden Parametern. Hier fällt uns auf das Befehle zwischen geschweiften Klammern ohne einen Schrägstrich davor geschrieben werden können. Zum Schluss folt die schliessende geschweifte Klammer die das Code und Scriptende anzeigt. Wenn ihr das Script jetzt in den Aliasbereich des Editors eintragt, mit drei Räumen in den ihr euch gewöhnlich aufhaltet, könnt ihr das Script mal testen. Gebt nach dem connecten einfach im Statusfenster /joinall ein.


Eine andere Syntax
Hier seht ihr noch einmal das gleiche Script wie oben, diesmal jedoch in einer anderen Form geschrieben. Es funktioniert genau so wie das Obere, allerdings halte ich diese Form für unübersichtlicher. Ich denke nur der Vollständigkeit halber sollte ich das Beispiel mit anführen.

/joinall /join #RAUM1 | /join #RAUM2 | /join #RAUM3
Wie ihr seht müssen die einzelnen Befehle mit einem gerade Strich getrennt werden. Diesen erhaltet ihr wenn die die Tastenkombination "Alt Gr+<>" drückt. Mehr möchte ich dazu auch nicht erklären, weil ihr diese Form von Script hier im Tutorial nicht mehr finden werdet.