Anzeige:
test
Anzeige:

IRC-Coding

Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

Spezial Remote Raw & CTCP

Diese beiden Remote sind nicht ganz so Leicht zu handhaben wie die "normalen" Remote. Gerade die für die Raw braucht man einige Erfahrung. Dafür lässt sich damit das komplette mIRC umgestalten. Mit den CTCP liessen sich spezielle Funktionen in ein eigenes Script einbauen, ähnlich wie mit dem Befehl /signal. Nur das die CTCP zwischen zwei Usern ablaufen während /signal Server weit triggert. Schauen wir uns jetzt mal diese beiden Remote genauer an.

 

Spezial Remote CTCP

Die CTCP-Remote arbeiten ähnlich wie die alle anderen Remote auch, nur das sie mit "ctcp" statt mit "on" beginnen. Ausserdem werden diese Remote grundsätzlich von einem anderen User ausgelöst und nicht vom Server. Die bekanntesten CTCP sind wohl PING, VERSION und FINGER. Wir werden hier zu Übungszwecken ein Script zu dem CTCP FINGER schreiben. Wenn also ein User folgendes eingibt: /ctcp DEIN_NICK finger erhält er als Antwort dein Namen, deine Emailadresse und deine Idlezeit. Mit dem folgenden Script werden wir diese ausgabe für alle User mit Level 1 ändern.

Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

Timer im mIRC
Timer sind eine Art Eieruhr, nur wesentlich flexibler. Mit einem Timer kann man einen Befehl oder Alias zu oder nach einer bestimmten Zeit ausführen lassen. Ebenso ist es möglich den Timer mehrere durchläufe vorzugeben, wodurch der Befehl mehrfach ausgeführt wird. Identifer werden nur bei der ersten Ausführung des Timers umgesetzt. Das heisst das bei jedem weiteren Durchlauf des Timers mit diesen Werten gearbeitet wird. Doch schauen wir uns erstmal ein Script mit einen einfachen Timer an.

Alias goaway {
if ($chan) {
msg $chan Bye @ All
timerleftchan 1 7 part $chan
}
else { echo -a Der Befehl geht nur in Raumfenstern! }
}

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

Schleifen im mIRC

Es gibt zwei Möglichkeiten im mIRC eine Schleife zu scripten. 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

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.