Scripting mIRC

mIRC Scripting mit der mIRC-FAQ


Der originale Text stammt aus der jeweiligen mIRC-FAQ, welche auch in unserem FAQ-Bereich erhältlish ist und zwar auf deutsch
Wer also offline das Scripten lernen moechte ist mit der Txt-Datei sicher besser bedient.
In laufe der Zeit wird der Text hier teilweise farbig markiert, damit er übersichtlicher wird.

7 Ein Kurs ber "Programmieren" in mIRC
mIRC bietet unter Tools drei Oberflchen, die auf bestimmte Weise "programmiert" werden knnen. Die Aliases, die PopUps und die Remotes. In den Remotes knnen User, Variablen und Scripts definiert werden. Scripts steuern mIRCs Reaktionen auf IRC-spezifische Ereignisse oder CTCP-Befehle.
Wichtig - Am besten lernt man die Funktionalitt dieser Programmieroberflchen, wenn man die Kapitel in Reihenfolge durcharbeitet. Wirklich! Versucht nicht, einen Sprung zu den Remotes zu machen, wenn Ihr die PopUps und Aliases nicht wirklich verstanden habt. Die Lektionen bauen aufeinander auf.
(Fr die, die schon mit ircii gearbeitet haben: Die Syntax der Aliases in mIRC ist der von ircii hnlich allerdings nicht vllig gleich. Auch die Command- und Remote-Sektion erlauben ungefhr die selben Features, aber auch hier ist die Syntax ein bichen anders.)


7.1 Die Aliases-Sektion
Whlt den Menpunkt Tools/Aliases. Der mIRC Editor wird dann mit der geffneten Alias-Sektion starten. Bitte ignoriert erst mal die PopUps, User und Variablen.
Der mIRC Editor ist eine kompakte, einheitliche Schnittstelle zu fast allen programmierbaren Oberflchen. Mit dem eingebauten File-Menpunkt knnen Alias-Dateien geladen und gespeichert werden. Das Edit-Men bietet copy/paste- (Kopieren und Einfge-) Funktionen sowie Suchroutinen. 'View' bietet einen berblick ber alle vorhandenen Alias-Dateien und 'Alias' zeigt ein Inhaltsverzeichnis der geffneten Alias-Datei.
In der Alias-Sektion knnen unter anderem Abkrzungen fr hufig verwendete Befehle wie JOIN, PART, QUIT, Ops geben und Ops entziehen definiert werden. Standartstze mssen nicht mehr getippt werden, sondern knnen ebenfalls als Alias abgelegt werden. Im allgemeinen knnen smtliche Befehle, die aus der Editbox heraus funktionieren auch in den Aliases verwendet werden. Aliase knnen auch dazu dienen, mehrere Befehle hintereinander auszufhren. Ihr knnt mit Hilfe der Aliases sogar Befehle auf die Funktionstasten F1-F12 legen...(endlich bekommen diese nutzlosen Tasten einen Sinn). Aliase knnen ebenfalls von innerhalb der PopUps, der Remotes und sogar in anderen Aliases aufgerufen werden. In der neuen mIRC-Version knnen mehrere Alias-Dateien verwendet werden. Eine ist im Lieferumfang (alias.ini) enthalten - man kann sie beliebig erweitern oder eine eigene einsetzen. Es ist alles sehr einfach!


7.1.1 Aliases erstellen
Okay, wir beginnen einfach mit einem simplen Beispiel. Um einen Channel zu betreten, mu man normalerweise
/join #name
tippen... wobei #name der Channelname ist. Da dieser Befehl sehr hufig verwendet wird, wre es schn, wenn man so wenig tippen mu wie mglich, oder? Also machen wir das ganze etwas krzer und machen ein Alias.
Anstatt '/join #{name}' zu tippen, richten wir es so ein, da /j #{name} den selben Effekt erzielt. In diesem Fall wrde der entsprechende Eintrag so aussehen:
/j /join $1
(Was dies exakt fr mIRC bedeutet, braucht Ihr an dieser Stelle noch nicht zu verstehen. Zu der genauen Definition der Syntax kommen wir in Krze.)
Versucht es einfach, in dem Ihr diese Zeile in die Liste in die Liste unter Tools/Aliases/ setzt (wenn sie nicht sogar schon vorhanden ist). Dann versucht es aus der Editbox heraus (die Eingabezeile, in der Ihr normalerweise tippt) mit einem einfachen Befehl wie
/j #test
Ihr werdet feststellen, da dies das selbe bewirkt wie '/join #test' - es bringt Euch in den Channel #test. Diese Konstruktion einer Abkrzung ist nun ein Alias.
Die Syntax von Aliasen.
Aliases verwenden das folgende Format:"/{Aliasname} /{Befehl}"
Es wird also zuerst der Name der Abkrzung festgelegt (wie z.B. '/j' im obenstehenden Beispiel), dann ein Freizeichen und dann der eigentliche Befehl, auf den die Abkrzung verweisen soll (im oberen Beispiel '/join $1').
Aliases verwenden eine Reihe von speziellen Strings (Strings sind Standartvariablen, die vernderbare Werte enthalten knnen - hier aber nicht mit den mIRC-internen Variablen zu verwechseln) und Identifiers (ebenfalls Variablen, die aber mIRC-intern bestimmte Werte enthalten - wie z.B. IP-Adressen, die aktuelle Seite des Webbrowsers, usw. Spter mehr dazu). Es gibt mehrere Strings wie z.B. $1, $1-3, $$1, $?, $!, #$1, #$$1 und #$?. Strings knnen jeglichen denkbaren Wert enthalten, der angegeben wird, wenn das Alias aufgerufen wird. Sie sind sehr flexibel einzusetzen. Identifiers funktionieren hnlich, enthalten aber immer einen bestimmten Wert. Die wichtigsten Identifiers sind #, $me, $url, $fulldate, $time und $day. Keine Sorge, wir gehen spter auf dieses Thema noch sehr viel genauer ein.
Lat uns jetzt erst mal auf $1, den oben verwendeten String konzentrieren.
/j /join $1
$1 bezeichnet das erste Wort, da nach dem Alias - wie immer es auch aussieht - eingegeben wurde. Wenn ihr also /j #test eingebt, dann erkennt mIRC, da es eine Abkrzung fr "/join #test" ist.
Mehrere Befehle in einem Alias
Nehmen wir nun an, man mchte mehrere Channels gleichzeitig betreten. Auch hierfr kann man ein Alias erstellen. Trennt nur die verschiedenen Befehle mit dem | Zeichen (auf den meisten deutschen Tastaturen ist das die AltGr+Grer als/Kleiner als-Taste neben dem Y) Das | Zeichen wird Pipe genannt.
Gehen wir von einem Alias aus, bei dem man nur "/j3" tippen mu, danach die Namen von drei Channels und man wrde sie zugleich betreten. Das entsprechende Alias wrde so aussehen:
/j3 /join $1 | /join $2 | /join $3
Nachdem man diese Zeile in die Liste unter Tools/Aliases eingegeben hat, braucht man nur noch
/j3 #test1 #test2 #test3 einzugeben

und mIRC betritt einen Channel nach dem anderen. $2 und $3 sind das zweite und dritte Worte nach dem Aliasnamen.
Nun erwartet mIRC allerdings logischerweise drei Worte - die Channelnamen. Was wrde also passieren, wenn man nur "/j3 #test" eingibt? mIRC wrde ber die fehlenden Parameter stolpern, da es drei Eingaben erwartet. Fr dieses Problem gibt es eine Lsung: den $$1 String (den behandeln wir etwas spter).
Beispiel: /say
Angenommen, es gibt einen Satz oder einen Kommentar, den Ihr in Channels immer wieder gebraucht, wie z.B. Eure Homepage-Adresse, eine Begrung oder was auch immer. Schaut Euch mal diese Beispiele fr Aliase an, die den /say-Befehl verwenden. /say schreibt einfach nur Text in das aktuelle Channel- oder Privatfenster.
/hallo /say Hallo Ihr!
/www /say Die mIRC-Page befindet sich auf http://metro.turnpike.net/mookies/mirc.html
/Zeilen /say Erste Zeile | /say Zweite Zeile | /say Dritte und letzte Zeile

Das letzte Beispiel zeigt, wie man mehrere Textzeilen in einem Alias zusammenfat. Die Befehle mssen lediglich mit | voneinander abgegrenzt werden. Man sieht hier, da nicht zwangslufig in jedem Alias ein String vorkommen mu.

Beispiel: /me

Ttigkeiten beschrieben in einem Alias:
/lustig /me findet das lustig
/umarm /me umarmt $1 feste!!


Das zweite Beispiel verwendet einen String - $1. Wenn man nun "/umarm alle" eingibt, ist das Ergebnis das selbe wie bei "/me umarmt alle feste!!".

Von mehreren Befehlen verwendete Strings:

Verschiedene Befehle knnen innerhalb eines Alias ein und den selben String verwenden.
/jtest /join $1 | /topic $1 Nur zum testen

In diesem Alias wird das Parameter $1 zweimal verwendet. Die Eingabe von "/jtest #test" wrde darin resultieren, da mIRC erst #test betritt und dann das Topic in "Nur zum testen" ndert.
Ein hnlicher Fall wre:
/mag /say Ich mag $1 ! | Ich mag $1 wirklich gerne!!

Bei "/mag alle" wre das Ergebnis "/say Ich mag alle !" und dann "/say Ich mag alle wirklich gerne!!"
Channel-Modus-nderungen (Ops geben, etc.):

Um oft gebrauchte Channel-Modus-nderungen in die Aliases zu setzen, mu man zuerst die bliche Struktur der Modus-Befehle kennen. Jemanden auf dem IRC Ops zu geben funktioniert normalerweise so:
/mode {Channelname} +ooo {Nick1} {Nick2} {Nick3}

Bis zu 3 Nicks knnen aufgefhrt werden. Das entsprechende Alias sieht folgendermaen aus:
/op /mode # +ooo $1 $2 $3

Um nun Hinz, Kunz und Otto Ops zu geben gibt man einfach "/op Hinz Kunz Otto" ein. # ist ein Identifier und und bezeichnet den #Channelnamen des Channels, auf dem das Alias ausgelst wurde. Auf die selbe Art und Weise kann man andere Aliase zur nderungen der Channel-Modi entwickeln:
/deop /mode # -ooo $1 $2 $3
/ban /mode # +b $1
/kick /kick # $1
/dbk /mode # -ooo $1 | /kick # $1 | /mode # +b $1

WICHTIG: Das korrekte Setzen von Freizeichen!

Dies ist sehr wichtig! Man mu zwischen Strings und dem restlichen Text Freizeichen lassen!
Zum Beispiel:
/mag /say Ich mag $1!!!
...wird nicht funktionieren! Es mu zwischen "$1" und "!!!" ein Freizeichen gelassen werden. (Das kann den Text manchmal komisch aussehen lassen, also achtet darauf, wie Ihr die Stze aufbaut)
/mag /say ich mag $1 !!!

...wird funktionieren.
Dies gilt fr alle Strings. Um eine Funktion zu vereinfachen wurden ein paar Strings erstellt, die den erfaten Parametern automatisch ein # voranstellen. Dies gilt fr #$1, #$$1, und #$?. Details hierzu werden spter behandelt.
In einigen Fllen funktioniert: /gut /say Mir gefllt $1's Topic
Aber wie gesagt - nur in einigen. Ihr mt das fr jeden Fall testen.

Wo kann man Aliase benutzen?

Aliase knnen von der Editbox (die Zeile in die man normalerweise Text und Befehle eingibt) aus, aber auch aus den PopUps und Remotes aus aufgerufen werden. Darauf wird in den folgenden Abschnitten noch eingegangen. Die von der durch die Funktionstasten aufgerufenen Aliase knnen auch auf in der Nicknamenliste ausgewhlte Nicks bzw. den Namen des Privatfensters (Query-Fensters) bezogen werden... abhngig von der Aliasdefinition. Es ist sogar mglich, ein Alias durch ein anderes aufzurufen - mit einer Ausname: Aliase drfen sich nicht selbst aufrufen! Ein Alias, da ein anderes aufruft braucht allerdings eine Menge Speicher. Es kann also Probleme geben, wenn wenig Arbeitsspeicher zur Verfgung steht. Wenn eine solche Operation in einer Endlosschleife endet, kann man jedoch immer noch die Tastenkombination Strg+Pause verwenden, um den Proze abzubrechen.

Spezielle Alias-Definitionen: Die Funktionstasten.

Spezielle Alias-Bezeichnungen machen es mglich, Aliase ber die Funktionstasten aufzurufen.
Nennt die sie einfach wie folgt:
/f1 /say Hallihallo!!
/f2 /topic # Dies ist ein neues Topic


Man kann nun "/f1" eingeben, um auf einem Channel "Hallihallo" zu sagen, aber es reicht auch, die F1-Taste zu drcken. Andere Beispiele:
/f5 /me sendet Dir gerne das neue mIRC
/f6 /join #mIRC
/f9 /dcc send $1 c:\serve\mircfq31.zip
/f10 /dcc send $1 c:\serve\mirc50s.exe
/f11 /dcc send $1

Die F9-Taste wird die mIRC-Datei der in der Nicknamen-List ausgewhlten Person senden. Nicht vergessen, vorher einen Nick auszuwhlen, oder es werden merkwrdige aber logische Dinge passieren. Die F9-Taste kann auch in einem Privat- oder DCC Chat-Fenster verwendet werden. Bei Bettigung der F11-Taste wird zuerst nach einem Nick gefragt, dem die Datei gesendet werden soll.

Es gibt viele Mglichkeiten, die eigenen F-Tasten so zu gestalten wie man mchte - viel Spa dabei!
Ebenfalls ist es mglich, die Strg- und Umschalttaste mit einzubeziehen:
/f1 /say Dies ist die F1-Taste
/sf1 /say Dies ist Umschalttaste-F1
/cf1 /say Dies ist Strg-F1

Die Verwendung von Klammern:

Man kann in Aliases auch [ und ] Klammern verwenden um die Reihenfolge der Bearbeitung von Identifiers festzulegen - wie auch in PopUps und Remotes. Identifiers, die in Klammern stehen werden zuerst bearbeitet, und zwar von links nach rechts. Man kann Klammern auch einbetten um bestimmte Bearbeitungsreihenfolgen festzulegen. Die Klammern erscheinen nicht im resultierenden Text. Beispiele:
/note /notice $1 " $+ [ $read [ -s + [ $2 ] ] c:\text\note.txt ] $+ "
/sayvar /say % [ $+ [ $1 ] ]

Definitionen ohne Klammern werden wie blich behandelt.

Aliase in Scripts

Man kann zu den existierenden Alias-Dateien ohne Probleme erweiternde hinzufgen indem man im Alias-Editor (Tools/Aliases) File/Load whlt. Man kann nun auf einfache Art und Weise eine Datei auswhlen. Mit View kann man sich alle geladenen Dateien anschauen. So kann man auf einfache Weise Aliase von Freunden ausprobieren oder die eigenen zur Verfgung stellen. Aliases knnen sogar mit Remote Commands und Events in eine Datei zusammengefat werden und als komplette Script-Datei in Umlauf gebracht werden. Wir gehen spter darauf ein.



7.1.2 String Definitionen

Mittlerweile solltet Ihr einen Eindruck gewonnen haben, wie Aliase funktionieren. Hier kommt nun eine Liste aller Strings und Identifiers, die Ihr in den Aliases - und spter auch in den PopUps und Remotes - verwenden knnt. Die nchsten zwei Abschnitte erlutern sie alle. Von dieser Stelle aus probiert die Beispiele bitte aus, bis Ihr sie verstanden habt.

$N Der einfachste String. Er enthlt ein Wort. $1 z.B. enthlt das erste Wort nach dem Aliasnamen. $2 enthlt also das zweite, $3 das dritte u.s.w.
/op /mode $1 +o $2 $3

Wenn man hier "/op #mirc Hinz Kunz" eingibt, dann wird Hinz und Kunz auf #mIRC Ops gegeben.
/slap /me haut $1 eins mit $2- ber die Rbe

Gebt "/slap Doofmann Sardellen" ein, um Doofmann ein bichen nach Fisch stinken zu lassen ;o)

$N-M Dieser String enthlt eine Wortauswahl. Versucht mal dies:
/drei /say Die ersten drei Worte waren $1-3
"/drei eins zwei drei vier" ergibt "Die ersten drei Worte waren eins zwei drei". "vier" wird ignoriert. $N-M ersetzt die alte Form *N-M.

$N- Dieser String kann eine Menge Worte enthalten. $1- enthlt das erst Wort und alle nachfolgenden. Beispiel:
/allen /say Ich mchte Euch allen etwas sagen - $1-
"/allen mIRC ist echt ein gutes Programm" ergibt dann "Ich mchte Euch allen etwas sagen - mIRC ist echt ein gutes Programm". $2- enthlt das zweite Wort und alles nachfolgende, $3- das dritte und... etc. Versucht auch mal:
/note /notice $1 $2-
und gebt /note {Nickname} {Nachrichtentext} ein. Oder:

/mess /msg $1 $2-
und nehmt /mess {Nickname} {Nachrichtentext}.

Diese Beispiel-Aliase htten natrlich in der Form"/note /notice $1-" und "/mess /message $1-" auch funktioniert. $N- ersetzt das alte *N.
$$1 Ein Alias, da diesen String enthlt, wird nur ausgefhrt, wenn ein Parameter gegeben ist, andernfalls wird dessen Aufruf ignoriert. Wenn Ihr zum Beispiel mal folgendes Alias festlegt:
/j /join $$1

und dann "/j" (anstatt /j #Channelname) eingebt, wird mIRC dies ignorieren, weil kein Channelname angegeben wurde. Ansonsten funktioniert es genauso wie $1 - es enthlt das erste Wort, $$2 das zweite, $$3 das dritte usw.

$? Das hier ist ein praktischer String!

Wenn ein Alias diesen String enthlt, dann kann es gestartet werden, ohne da ein Parameter angegeben wird. mIRC ffnet dann eine Parameterabfragebox, in die dann Text, ein Nickname oder was auch immer eingegeben werden kann. Probiert mal diese Beispiele aus:
/j /join $?
/umarm /me umarmt $? mal krftig

$?="Text" Dies ist eine spezielle Version des $?-Strings. mIRC ffnet wieder die Parameterabfragebox, fragt aber diesmal nach einer speziellen Eingabe, wie z.B. hier:
/j /join $?="Welchen Channel betreten?"
/umarm /me umarmt $?="Wen umarmen?" mal krftig

$! Dieser String wird nur in Zusammenhang mit $? verwendet. Wenn Ihr vorher in einem Alias den $?-String gesetzt habt, dann knnt Ihr $! dazu benutzen, um das bei $? eingegebene Parameter spter noch mal zu verwenden:
/j /join $?="Welchen Channel betreten?" | /say $! ist wirklich ein schner Channel.

Bei der Eingabe von "/j" wird mIRC erst die Parameterabfragebox ffnen, in die man dann einen Channelnamen - z.B. #test eingibt. mIRC wird dann zuerst #test betreten, und dann im Channel "#test ist wirklich ein schner Channel" sagen.

Versucht auch:
/freund /say $? ist mein Freund | /say ich mag $! wirklich sehr!

#$1, #$$1, #$? Dies sind spezielle Versionen der Strings $1, $$1 und $?. Sie werden nur in Verbindung mit Channelnamen verwendet. Sie stellen jedem eingegebenen
Parameter das #-Zeichen voran:
/j /join #$1
Hiermit kann man /j test anstatt /j #test eingeben.
Versucht auch:
/j /join #$?="Channelnamen eingeben (Ohne #)"



7.1.3 Identifiers

Eine spezielle Form des Strings ist der sogenannte Identifier. Der Inhalt eines gewhnlichen Strings ergibt sich immer daraus, auf welche Weise er in den Aliases, PopUps oder Remotes aufgerufen wird. Ein Identifier hingegen enthlt immer fest definierte Werte.

# Dieser enorm wichtige Identifier enthlt immer den Namen des Channels, in dem das Alias ausgefhrt wird. Das ist daher wesentlich, da viele Befehle, wie z.B. der /mode-Befehl immer den Channelnamen erfordern. Beispiel:
/op /mode # +o $1

Bei der Eingabe von "/op Cindy" wird die Person mit dem Nicknamen Cindy in dem Channel geopt, in dem Ihr das Alias aufruft.

$me Dieser Identifier enthlt immer Euren aktuellen Nicknamen. Man kann ihn in den verschiedensten Situationen verwenden. Beispiele:
/schn /me findet, $me ist ein schner Nickname

oder /mirc /me bietet allen die neue mIRC Version 5.02 an. Tippt "/CTCP $me xdcc send #1" um sie zu bekommen.
oder /away /me ist jetzt mal eben weg ( $1-) | /away $1- | /say Nachrichten an $me werden gespeichert.


Probiert auch mal folgendes aus:
/nick /Ich finde $1 besser als $me | /nick $1


und dann ndert ihr Euren Nickname mit /nick




Beispiele:

/kick /kick # $1 $read c:\mirc\spasskicks.txt




/page /say Hey Leute, ich habe eine tolle Webseite gefunden! Seht euch mal $url an!



$ip Eure IP-Adresse
$active Der Name des aktiven Fensters in mIRC
$time Die Uhrzeit auf Eurem PC
$away Sagt euch, ob Ihr gerade als abwesend registriert seid, oder nicht
$ticks Die Anzahl der Ticks seit dem Start des Betriebssystems.
$idle Erwidert die Zeitspanne, die Ihr schon unttig (idle) seid.
$online Erwidert die Anzahl der Sekunden auf Eurem Online-Timer
$version Erwiedert mIRCs Versionsnummer
$ctime Die Anzahl der Sekunden seit 00:00:00 GMT, 1.1.1970
$asctime(N) Erwidert den ctime-Wert im Text-Datumsformat
$day Der gegenwrtige Tag
$date Das gegenwrtige Datum in europischer Reihenfolge (JA!! mIRC ist kein amerikanisches Programm!! :o) Man kann alternativ auch $adate (amerikanisch), $fulldate oder $day verwenden.






$duration(Sekunden) bersetzt Zahlen wie 123456 in 1Day 10hrs 17mins 36 secs.

$logdir, $getdir, $wavedir, Erwidert die entsprechenden Verzeichnisnamen
$mircdir, $mididir,
$script und $scriptdir
$mircini Erwidert den Verzeichnis- und Dateinamen der ini-Datei, die verwendet wird $nopath(Dateiname) Erwidert nur den Dateinamen ohne Pfad $nofile(Dateiname) Erwidert nur den Pfadnamen ohne Datei
$exists(Dateiname) berprft, ob die entsprechende Datei existiert (Erwidert $true oder $false)
$findfile(Verzeichn.,Dateiname,N) Durchsucht das angegebene Verzeichnis nach der Nten spezifizierten Datei
$ddename Der DDE-Servicename, den mIRC verwendet
$abs(N) Erwidert den absoluten Wert der Zahl N
$chr(N) Erwidert des Zeichen mit dem ASCII-Wert N
$asc(C) Erwidert den ASCII-Wert fr das Zeichen C
$len(text) Erwidert die Lnge von "text"
$upper(text) Erwidert "text" in Grobuchstaben
$lower(text) Erwidert "text" in Kleinbuchstaben
$left(text,N) Erwidert das Nte Zeichen von links aus "text"

$right(text,N) Erwidert das Nte Zeichen von rechts aus "text"

$mid(text,S,N) Erwidert N Zeichen aus "text" beginnend ab S
$pos(String, Unterstring) Erwidert die Position von Unterstring in String:

/pos /say $pos(Cenobit,bit)
"/pos" wrde in diesem Falle 5 ergeben da "bit" ab fnfter Position beginnt

$replace(String, Unterstring, Austauschtext) Ersetzt einen Unterstring in einem String:
/ersetz /say $replace(Cenobit,bit,byte)
"/ersetz" ergibt hier Cenobyte, da bit durch byte ersetzt wird.
(Nur zur Erklrung der Begriffe String und Unterstring in diesem Abschnitt)

$remove(String, Unterstring) Entfernt Unterstring aus String
$strip(text) Entfernt alle Kontrollzeichen fr Fett, Unterstrichen und Farbe aus Text
$count(String1,String2) Zhlt, wie oft String2 in String1 vorkommt
$str(Text,N) Erwidert Text N mal wiederholt
$rand(X,Y) Erwidert eine Zufallszahl zwischen X und Y
$lines(Datei) Erwidert die Anzahl der Zeilen in Datei

$usermode Erwidert Euren gegenwrtigen Usermodus
$nick(#,N) Erwidert den Nten Nicknamen auf Channel #
$snick(#,N) Erwidert den Nten ausgewhlten Nicknamen auf Channel #
$opnick(#,N) Erwidert den Nten Op Nickname auf Channel #
$nopnick(#,N) Erwidert den Nten nicht geopten Nickname auf Channel #
$vnick(#,N) Erwidert den Nten Nickname mit Sprecherlaubnis (voiced) auf Channel #
$nvnick(#,N) Erwidert den Nten nicht geopten Nickname ohne Sprecherlaubnis (non voiced) auf Channel #
$comchan(Nick,N) Zeigt die Channels, auf denen Ihr und "Nick" gleichzeitig seid.
$query(N|Nick) Erwidert den Namen des Nten offenen Privatchat-Fensters
$chat(N) Erwidert den Namen des Nten offenen DCC-Chat-Fensters
$notify(N) Erwidert den Namen des Nten Nick aus der Notify-Liste, der gerade online ist
$token(N,C,text) Erwidert das Nte Zeichen in text getrennt durch C (C ist die Ascii-Nummer eines Zeichens)
$addtok(text,Zeichen,C) Fgt ein Zeichen an das Ende des Textes an, sofern dieses im Text noch nicht vorhanden ist.
$findtok(text,Zeichen,C) Erwidert die Nte Position eines Zeichens im Text
$gettok(textN,C) Erwidert die Nte Zeichen im Text
$instok(text,Zeichen,N,C) Fgt ein Zeichen in Nte Position im Text ein, wenn diesen im Text nicht schon vorhanden ist.
$remtok(text,Zeichen,C) Entfernt ein bereinstimmendes Zeichen im Text
$reptok(text,Zeichen,Neu,C) Ersetzt ein bereinstimmendes Zeichen im Text

Fr die obenstehenden Identifiers kann man N gleich Null setzen, um die gesamte Anzahl an Nicknamen/Channels/Zeichen zu bekommen.

$snotify Erwidert den Nicknamen, der gegenwrtig in der Notify-Liste ausgewhlt ist
$address Erwidert die volle Adresse des Users, der einen Remote-Eintrag auslst
$address(Nickname,Typ) Durchsucht die Interne Adressenliste und erwidert die volle Adresse eines Usern, sofern dieser gefunden wird.
$maddress Erwidert die passende Adresse aus der Userliste, die das Event ausgelst hat.
$maddress(address) Erwidert eine passende Adresse aus der Remote Userliste.
$level(Adresse) Sucht die passende Adresse in der Remote Users Liste und erwidert deren Level
$ulevel Erwidert das passende Remote-Userlevel des ausgelsten Events
$clevel Erwidert das passende Remote-Commandlevel fr ein bestimmtes Event
$dlevel Erwidert das Standart-Userlevel (Default-Userlevel)
$mask(Adresse,Typ) Erwidert die Adresse anhand eines bestimmten "mask-Typs"

Identifiers und Variablen knnen auch innerhalb von Klammern plaziert werden. Beispiel:

/echo $right(3,$left($len(goats), ToMooOrNotToMoo)) ergibt Moo.


Identifiers mit anhngenden Parametern

Einige Identifiers knnen mit bestimmten anhngenden Parametern verwendet werden. Dies vereinfacht die Syntax und hilft bei der Erstellung von Scripts. Die Syntax lautet:
$identifier(N|#|nick).parameter

$server(N|Nick) Erlaubt den Zugriff auf die Server Liste unter File/Setup/IRC-Servers. $server(N) fr die Adresse, .desc fr die Beschreibung, .port fr den Port, .group fr die Gruppe (z.B. DALNet, EFNet, oder Undernet)

$ial(mask,N,N|Nick) Erlaubt den Zugriff auf die interne Adressenliste. $ial(mask,N) fr die volle Adresse, .nick fr den Nicknamen, .user fr den User, .host fr den Host, .addr fr die Adresse.
$url Erlaubt den Zugriff auf die URL-Liste. $url(N) fr die Adresse, .desc fr die Beschreibung und .group fr das Protokoll (z.B. http://).
$chan(N,#) Erwidert einige Channel-Modi. $chan(N,#) erwidert den Namen, ferner gibt es .topic, .mode, .key, .limit

$chat(N|Nick) Nickname, .ip, .status (enthlt active, waiting oder inactive)
$fserv(N|Nick) Nickname, .ip, .status, .cd (aktuelles Verzeichnis)
$get(N|Nick) Nickname, .ip, .status, .file (Dateiname), .size (Gre), .rcvd (empfangen), .cps (bertragungsrate), .pc
$send(N|Nick) Nickname, .ip, .status, .file (Dateiname), .size (Gre), .sent (gesendet), .Ira, .cps (bertragungsrate), .pc
$timer(N) Erwidert die Timer die aktiv sind. $timer(N) fr die id, .com, .time, .reps, .delay, .type
$group(N).status Erwidern, ob die Gruppe aktiv oder inaktiv ist.
oder $group(Name)


Benutzerdefinierte Identifiers. (Abschnitt wurde ursprnglich von LiOnheart geschrieben)

Wie gerade gesehen gibt es in mIRC eine Vielzahl von eingebauten Identifiers, die man in den Remotes- und Alias-Sektionen verwenden kann. Man kann allerdings auch eigene Identifiers erstellen, und sie so konfigurieren, da sie im Prinzip alles tun, was man will. Diese benutzerdefinierten Identifiers werden in den Aliases erstellt, und sehen fast gleich aus, mit dem einzigen Unterschied, da das Ende aus einem /return X besteht. (Anm. d. bersetzers: In diesem Text bersetze ich "returns" mit erwidert.) Der Identifier erwidert also, was man mchte. Zum Beispiel die Summe zweier Zahlen:

/summe {
%temp = $1 +$2
return %temp
}

Jetzt kann der Identifier $sum berall in den Aliases, PopUps und Remotes verwendet werden. Beispiele:
Als Menpunkt in den PopUps:
Summe:/say Die Summe von 45 und und 78 ist $sum(45,78)
Oder in den Aliases:
/summe /say Die Summe von $1 und $2 ist $sum($1,$2)

(eine Befehlseingabe wie /sum ... macht keinen Sinn. Es funktioniert nicht.)

Alle Parameter fr einen Identifier werden durch Kommata getrennt. Man kann ebenfalls smtliche gngigen If-Then-Else Strukturen in der Definition von Identifiers verwenden.
Man kann zum Beispiel erst berprfen, ob alle fr den Identifier erforderlichen Parameter vorhanden sind, und sonst eine Fehlermeldung ausgeben lassen:

/prozent {
if ($1 == $null) || ($2 == $null) { return Fehler: Nicht gengend Parameter }
if ($2 != 1) { %half = $2 / 2 } | else { %half = 1 }
%dummy = $1 * 100
%perc = %dummy / $2
%remainder = %dummy % $2

if (%perc == 0) { goto return }
elseif (%remainder >= %half) { inc %perc }
:return
return %perc
}

Die erste Zeile stellt sicher, da aller erforderlichen Parameter vorhanden sind. Der Rest ist die Berechnung der Prozentzahl, wobei ein Teil sicherstellt, da das ganze auf 100% aufgeht. Man knnte diesen Identifier jetzt z.B. mit $prozent(56,100) aufrufen. Daraus wrden sich dann 56% ergeben. Zahlen sind allerdings nicht das einzige, was Identifiers enthalten knnen. Man kann sie auch Text oder Kombinationen aus Text und Zahlen wiedergeben lassen, wie z.B. das amerikanische Zeitformat (7:52pm):

/atime {
set %hr $token(1,58,$time)

set %min $token(2,58,$time)
if (%hr == 0) { set %hr 12 | set %sub am }
elseif (%hr < 12) { set %sub am }
elseif (%hr == 12) { set %sub pm }
else { %hr = %hr - 12 | set %sub pm }
return %hr $+ : $+ %min $+ %sub
}

Mit ein bichen Kreativitt knnt Ihr Praktisch fr alles Identifiers entwickeln, wie z.B. rckwrts Sprechen oder jeden zweiten Buchstaben aufleuchten lassen.





7.2 Die PopUps-Sektion (Kontextmens)

Popups sind Kontextmens, die aufspringen, wenn man die rechte Maustaste klickt. Solltet Ihr diese praktische Funktion noch nicht gefunden habt, dann probiert sie jetzt mal aus. Einige Popups sind in der mitgelieferten Datei vorgegeben, aber man kann sie unter Tools/Popups vllig verndern und den persnlichen Bedrfnissen anpassen.


Der mIRC Editor wird mit geffneten Popups starten. Bitte ignoriert im Moment noch die Remotes- und Variablensektion. Der mIRC Editor ist eine einfache und kompakte Schnittstelle zu fast allen programmierbaren Sektionen von mIRC. Der Menpunkt 'File' in der Popups-Sektion knnt Ihr Popups laden (load), entladen (unload) und speichern (Save). Das Men 'Edit* beinhaltet ausschneiden, kopieren und einfgen (cut, copy, paste) und eine Suchfunktion. 'Popup' zeigt eine bersicht ber die gerade geffnete Popup-Datei.

Im Men 'View' kann man auswhlen, welche Popups man gerade bearbeiten will. Es gibt verschiedene Kontextmens je nach Art des Fensters. In einem Channelfenster stehen einem andere Popus zur Verfgung als in einem Privatfenster (Query). Man kann individuelle Kontextmens fr das Status-, die Channel- und Privat/DCC-Fenster sowie fr die Nicknamenliste und ein speziellen Punkt in der Menleiste erstellen. (Alles das wird spter noch erklrt)

Wenn Euer mIRC ber keine vorgegebenen Popups zu verfgen scheint (die Popups-Sektion ist dann leer) , dann liegt das vielleicht daran, da die mitgelieferten .ini-Dateien von der Installationsdatei nicht korrekt in das mIRC-Verzeichnis kopiert worden sind oder der Verzeichnis, wo die Datei popups.ini ist in mIRC nicht korrekt angegeben. Dieses Problem lt sich aber leicht durch den Menpunkt File/Load im Popupseditor beheben.

Die Popups-Befehle arbeiten fast genauso wie die der Aliases. Alle Strings, die in Sektion 7.1 behandelt worden sind, knnen auch hier verwendet werden. Wenn Ihr die Sektion 7.1 noch nicht gelesen habt, dann tut das bitte jetzt. Ihr braucht die dort behandelten Informationen, bevor Ihr fortfahren knnt.

Lest auch unbedingt die Erklrung der Popups in der Hilfedatei und seht Euch die vorgegebenen Popups an. Je mehr Ihr herumprobiert, desto besser werdet Ihr es begreifen.

Beispiel: /join

Nehmen wir an, es gibt einen Channel, den Ihr hufig betretet - #test.

Anstatt nun immer /join #test zu tippen, wre es doch besser, einfach auf die rechte Maustaste zu klicken, und dort mit Hilfe einer automatischen Funktion den Channel zu betreten.

Das folgende Popup wird genau das tun. Tragt es einfach in Tools/Popups ein. Achtet darauf, da im Men 'View' der Punkt 'Status Window' ausgewhlt ist (nicht Query/Chat, Nicknames List oder Menubar!)
Den Testchannel betreten:/join #test

Klickt jetzt einfach im Statusfenster auf die rechte Maustaste, und mIRC wird den Channel #test betreten.

Beispiel:/away

Dies ist ein Beispiel von Popups fr "away" und "back". Man gibt den Grund fr die Abwesenheit in eine Parameterabfragebox ein, und sendet Ihn an alle Channels, in denen Ihr gerade seit. (/ame fhrt ein /me in allen Channels aus, in denen man sich gerade befindet.)
Abwesend....:/ame ist mal gerade weg ($?="Grund eingeben") | /away Bitte spter versuchen ($1) !!
Zurck:/ame ist zurck | /away

Untermens

Wenn man ein paar solcher Popups einfgen wrde, dann wre der Schirm allerdings bei jedem Klick auf die rechte Maustaste vllig berfllt. Man kann die Popups also in Untermen-Hierarchien organisieren. Fgt mal alle nachstehenden Popups ein:
Kommentare
.Hallo:/say Hallo Leute
.Tschs:/say Tschs Leute
.Umarmen:/me umarmt $? feste!

Hier wird festgelegt, da sich die letzten drei Befehle unter "Kommentare" befinden, in dem man sie 1) nach "Kommentare" in der gewnschten Reihenfolge einfgt, und 2) ein "." (Punkt) voranstellt.
Wenn Ihr jetzt rechts klickt, dann sehr Ihr den Menpunkt "Kommentare". Wenn Ihr diesen anwhlt, dann tauchen "Hallo", "Tschs" und "Umarmen" auf. Klickt nun auf einen der Unterpunkte, um die oben festgelegte Aktion auszufhren.


Wenn man es richtig kompliziert machen will, dann kann man diese die Untermens in sich auch nocheinmal abstufen. Versucht zum Beispiel mal:
Kommentare ber Leute
.Komplimente
..Nett heute:/say Wow, $? -- du bist ja heute richtig nett!

..Hilfreich:/say Danke fr deine Hilfe, $?
..Freund:/say Ich bin froh, da $? mein Freund ist!
.Beleidigungen
..Flasche:/say Hau ab, du Flasche!
..Idiot:/me fragt sich, warum sich $? manchmal wie ein Idiot benimmt!
..Feind:/say Ich bin froh, $? zu meinen Feinden zu zhlen!!
.
..und so weiter! Man mu sie nur mit Hilfe der Punkte vernnftig sortieren. (Wenn durch die Darstellung oben der Groschen noch nicht so recht fllt, dann probiert es unbedingt aus. Fgt den oberen Abschnitt unter Tools/Popups. Es wird sofort klar, wenn man sieht, wie es arbeitet).

Alle Menpunkte der Popups knnen brigens auch auf eine Funktionstaste gelegt werden. Das ist ein handlicher Ersatz fr hufig verwendete Popus... (berprft die Korrektheit der Syntax und setzt die Belegung der Funktionstasten in die Alias-Sektion. Lest mehr zu diesem Thema in Abschnitt 7.1)
I
n der Tools/Popups-Sektion findet Ihr unter "View" auch den Punkt Menubar, mit dem man einen Punkt in der Menleiste frei gestalten kann. Probiert es auch und fgt die folgenden Zeilen hinzu:
Abwesend .
Abwesend...:/ame ist abwesend ($?="Grund eingeben") | /away abwesend seit $time ($+ $! $+) | /timer22 5 600 /describe # ist abwesend ($!) .
Zurck:/ame ist zurck.... jetzt geht des Spa los! | /away | /timer22 off S

chlge .
klatsch:/describe # klatsch $1 eine gefrorene Forelle durchs Gesicht .
Baseball:/describe # zieht $1 seinen Baseballschlger ber den Schdel!


7.3 Die Remote Sektion

Die Remote-Sektion befindet sich unter Tools/Remote... und ist zweifelsohne der am weitesten entwickelte Teil von mIRC. Mit den Fhigkeiten dieses Features, kann man mIRC auf eine Weise reagieren lassen, wie es sonst nur fortgeschrittenes Scripting oder spezielle Bot-Software fertig bringt.

Dinge wie: Dateien zum Download anbieten (eine XDCC-Liste), reagieren auf bestimmten Text im Channel oder in privaten Gesprchen, benutzerdefinierte Antworten auf CTCP-Anfragen, bequem zu konfigurierende Benutzer-Level fr Freunde und programmierbare Reaktionen auf fast alle Ereignisse die auf dem IRC auftreten knnen... ferner knnen fr die Reaktionen fast alle mIRC-Befehle verwendet werden.

Die Syntax der Remotes kann zum Teil etwas kompliziert aussehen, ist im Prinzip aber einfach eine Erweiterung der Befehle, die schon im Zuge der Aliases und Popups erklrt worden sind. Wenn diese Abschnitte - und ganz wichtig, die Erluterung der Strings und Identifiers - verstanden worden sind, dann ist auch dieses Kapitel leicht zu verstehen. Wenn nicht, dann kehrt noch einmal zu den Abschnitten 7.1 und 7.2 zurck. Die dort enthaltenden Informationen sind absolut wichtig, um Reaktionen auf IRC-Ereignisse zu programmieren.

Ebenfalls ist es wichtig, was der Begriff "Remote" bedeutet (deutsch: Fernbedienung). Die Remote-Sektion wurde erstellt, um mIRC auf Aktionen von anderen Usern reagieren zu lassen - es reagiert auf bestimmte Ereignisse auf dem IRC und kann von anderen Usern praktisch ferngesteuert werden. Natrlich nur entsprechend der Parameter, die Ihr einbaut! Viele hier beschriebene Funktionen kann man nicht einfach selber testen, indem man den erforderlichen Text einfach selber eingibt. Man braucht die Untersttzung von anderen Usern oder mu schlicht und ergreifend abwarten, bis gewisse IRC-Ereignisse eintreten.


Die Remotes arbeiten Hand in Hand mit der Users-Sektion. In der Remotes-Sektion werden Scripts, d.h. Programmablufe fr bestimmte User erstellt. Jedem User in der Users List knnen ein oder mehrere Levels zugeordnet werden. Diese Levels bestimmen, wie mIRC auf ein Ereignis eines bestimmten Users reagiert, bzw. auf welche Ereignisse ein User Zugriff nehmen kann. In der Remote (Scripts)-Sektion knnen die Programmablufe programmiert werden, in denen festgelegt wird, wie mIRC auf bestimmte Ereignisse und CTCP-Befehle auf dem IRC reagiert. Der mIRC-Standarteinstellung nach werden User List, Variablen und Remotes in der Datei remote.ini gespeichert.



7.3.1 Die Remote User-Liste

Whlt den Punkt Tools/Remote um den mIRC-Editor zu ffnen. berprft, ob "Users" als Box aktiv ist. Hier knnen nun unterschiedliche Userlevels festgelegt werden. Ihr knnt Levels fr Eure Freunde und auch fr Eure Feinde einstellen und eine sogenannte "Shitlist" erstellen (User, die in einer Shitlist erfat sind, werden gekickt, sobald sie einen Channel betreten).


Wozu ist das alles notwendig? Nehmen wir an, Ihr habt ein Remotescript verfasst, da jemanden fr die Benutzung des Wortes "Nonsens" aus dem Channel kickt (denkt Euch einfach irgendein Schimpfwort stattdessen =) Wir erklren spter in Abschnitt 7.3.3 noch genauer, wie das funktioniert. Jetzt ist erst mal nur die Idee wichtig.


Okay, vielleicht will man aber nur die blichen User fr die Benutzung von "Nonsens" kicken. Hufiger gesehene Leute sollen nur gewarnt werden und von den engen Freunden wird es ignoriert. Und vllig unbekannte User sollen direkt gekickt und gebant (ausgeschlossen) werden.

Um unterschiedliche Antworten fr verschiedene User zu ermglichen, mu eine User List aufgesetzt werden. Jedem User wird ein Nickname und/oder eine Adresse, so wie das Userlevel zugeordnet, da Ihr ihm geben mchtet.
Hier ist ein Beispiel fr eine gltige User List:

1:nick1
1:nick2
2:nick3!account3@machine.subnet.net
2:*!account4@machine.subnet.com
3:*!*@machine.subnet.edu
4:*!*@*subnet.edu
5:*!account@*.subnet.edu
10:euernick!eueraccount@yourmachine.net

Die Zahlen fr das Userlevel sind vllig Euch berlassen. Wie Ihr in den nchsten zwei Abschnitten seht, knnt Ihr entscheiden, was ein bestimmter User mit einem speziellen Level tun kann oder nicht. Standardmig ordnet mIRC jedem, der in der User List noch nicht erfat ist, das Level 1 zu, Ihr knnt aber auch dieses unter Tools/Remote/Options/"Default User Level" ndern.

Wenn Ihr verschiedenen User unterschiedliche Levels zugeordnet habt, dann sind natrlich auch darauf zugeschnittene Reaktionen erforderlich, die den entsprechenden User erlauben, auf sein Level zuzugreifen. Das wird aber spter noch erlutert. Wie Ihr sehen knnt, sind sowohl Nicknamen als auch Adressen in der User List zugelassen. Auch Wildcards (* Sternchen) sind erlaubt. In einigen Fllen mchtet Ihr User vielleicht per Nickname und Adresse spezifizieren. Diese Flle (mit den OP, DEOP, SERVEROP,... und NOTIFY Events) werden in Abschnitt 7.3.3 erklrt.

Man mu die User List nicht komplett per Hand erstellen... man kann auch mIRCs Editbox oder die Befehle /auser, /guser und /ruser verwenden.

/auser /auser {Level} {Nickname oder Adresse}
"Auser" (Add user) fgt den spezifizierten Nicknamen oder Adresse in die User List ein, und zwar mit dem festgelegten Level. Die Gltigkeit der Adresse wird nicht berprft, d.h. so exakt aus den Befehlsparametern bernommen.

/guser /guser {Level} {Nick} {Typ}
"Guser" (Get User) fgt den spezifizierten Nicknamen mit Adresse in die User List ein. Um das zu bewerkstelligen, fhrt mIRC einen /whois auf den angegebenen Nicknamen aus und setzt die empfangene Adresse in die User List. Das bedeutet natrlich auch, da der hinzuzufgende Nickname gerade auf dem IRC sein mu, damit der /guser-Befehl funktioniert. Wenn man einen speziellen Typ festlegt, dann verwendet mIRC besondere Wildcards (* Sternchen) in der Adresse (Anmerkung d. bersetzers: Wilcards sparen bestimmte Abschnitte der Adresse aus. Dies ist zum Beispiel fr User notwendig, deren Adresse sich jedesmal durch die zufllige IP-Adressenvergabe bei der Modemeinwahl ergibt). Diese Typen sind dieselben, die auch beim /ban-Befehl verwendet werden. Die mglichen Parameter reichen von 0 bis 9 (siehe unten).

/ruser /ruser {Nick oder Nick! oder Adresse oder Nick [Typ]}
"Ruser" (Remove User) entfernt einen Nicknamen oder eine Adresse von der User List. Ihr mt genau wissen, wie der Nick oder die Adresse in der User List verzeichnet sind, damit der Befehl arbeitet. Wenn jemand z.B. so eingetragen ist: nick!blabla@wasauchimmer.de dann kann man ihn auch mit '/ruser nick!' entfernen. Denkt an das Ausrufezeichen, damit die gesamte Zeile gelscht wird. Fr mIRC wurde ein verbesserter /ruser-Befehl erstellt, der so arbeiten kann, wie /ban oder /guser. '/ruser {nick} [Typ]': Wenn kein Typ festgelegt wird, dann entfernt mIRC ganz normal den Nicknamen von der User List. Wenn aber ein Typ angegeben wird, dann wird die Adresse des Nicks festgestellt, und diese dann von der User List gelscht.


Anmerkung: Die Verwendung von verschiedenen Adresstypen erlaubt die Spezifizierung eines Users, oder gleich einer gesamten Gruppe von Leuten, je nach Verwendung von mehr oder weniger Wildcards. Hier sind einige Resultate:

Wenn kein Typ festgelegt wird, dann wird standartmig Typ 6 verwendet:

Typ 0; *!vonck@Wit399402.student.utwente.nl
Typ 1; *!*vonck@Wit399402.student.utwente.nl
Typ 2; *!*@Wit399402.student.utwente.nl
Typ 3; *!*vonck@*.student.utwente.nl
Typ 4; *!*@*.student.utwente.nl
Typ 5; Kreet!vonck@Wit399402.student.utwente.nl

Typ 6; Kreet!*vonck@Wit399402.student.utwente.nl
Typ 7; Kreet!*@Wit399402.student.utwente.nl
Typ 8; Kreet!*vonck@*.student.utwente.nl
Typ 9; Kreet!*@*.student.utwente.nl

!Eine letzte Anmerkung: Als Userlevel kann jetzt sogar ein Wort festgelegt werden, z.B. so:
mircop:*!*@mardam.demon.co.uk
Das kann man nun zum Beispiel so mit einem Event verknpfen:
on mircop:JOIN:#mirc:/mode $chan +o $nick

mIRC besitzt eine interne Datenbank der Leute, die gerade mit Euch auf den selben Channels sind. Diese Datenbank wird verwendet, um die Befehle /ban, /guser und /ruser erheblich zu beschleunigen. Diese Befehle fhren einen /whois auf die entsprechende Person aus. Die Interne Adressenliste (IAL) speichert diese Information im Format nick!User@Adresse.ToplevelDomain fr alle User, die mit Euch auf den selben Channels sind. Wenn nun ein /ban, /guser, /ruser, /ignore, /dns oder /finger ausgefhrt wird, dann wird zuerst diese Liste durchsucht. Erst wenn hier keine bereinstimmung gefunden wird, startet mIRC das bliche /whois-Zeug. Das wird Eure Bans erheblich beschleunigen, besonders, wenn Eure Verbindung gerade etwas schleppt (Im IRC-Slang: to be lagged). Die interne Adressenliste aktiviert Ihr unter Tools/Remote/Options. Schaltet sie EIN.


7.3.2 Remote Scripts - CTCP Befehle

Whlt in mIRC den Menpunkt Tools/Remote um den mIRC-Editor zu ffnen. Hier kann man definieren, wie mIRC auf die "Umwelt" des IRC reagiert. Zwei getrennte Gruppen von Reaktionen sind mglich: Reaktionen auf CTCP-Befehle und auf Ereignisses (Events). In diesem Abschnitt besprechen wir die CTCP-Befehle.

Einfhrung - Remote Commands reagieren auf eine sehr speziefische Befehlsform, den CTCP-Befehl. CTCP ist eine Abkrzung und steht fr "Client To Client Protokoll". Die Remote-CTCP-Befehls-Sektion kann eine Sache - und nur eine. Sie kann auf CTCP-Befehle reagieren - in der Weise, wie Ihr es wnscht.

Es gibt einige schon anhand der IRC RFC vordefinierte CTCPs. Die blichen sind version, ping, time, userinfo, clientinfo und finger. Jeder IRC-Client wird einer standardisierten Art und Weise auf diese Befehle reagieren. Diese CTCP-Befehle werden einem in diesem Format gesendet:
/ctcp {euernick} {Befehle mit Parametern, wenn welche existieren}
Nehmen wir das Beispiel des Pings. Der andere User wrde in diesem Fall folgendes tippen: /ctcp {euernick} ping

Man kann sich auch selber einen Ping-Befehl schicken. Versucht es mal: /ctcp {euernick} ping

Unter normalen Umstnden sendet mIRC einen Standart Ping Reply (Antwort) [ctcp seinnick pong]. Aber mit den Remote-CTCPs knnt Ihr die Standartantwort des Programms auf einen Ping verndern. Es kann fast alles tun, was Ihr wollt, wenn es einen Ping erhlt. Es kann standartmig reagieren, oder auch nicht. Es liegt an euch. Es gibt EINE aus Ausnahme: Ihr knnt NICHT euren mIRC-Version-Reply unterbinden... Wir lieben Werbung, wit ihr...

Ihr knnt auch neue CTCP-Befehle und Antworten darauf entwerfen. So funktionieren zum Beispiel Features wie Dateien-Angebot (XDCC, LIST und SEND).

Zunchst aber zurck zu unserem PING Bespiel.

Beispiel: Benutzerdefinierte Ping-Antwort
ffnet Tools/Remote und schaut unter 'View', ob schon ein Script namens commands.ini oder ctcp.ini schon existiert. Wenn ja, whlt die Datei aus, und fgt die Zeilen hinzu und ndert sie. Wenn nicht, dann geht unter den Menpunkt 'File' und whlt 'New' um eine neue Datei zu erstellen. Versichert Euch, da unter 'Listening' der Punkt ctcp ausgewhlt ist! (Wenn nicht, dann werden CTCP-Befehle ignoriert).

Jetzt setzt die folgende Zeile in die existierende oder neue Script-Datei.
ctcp 1:ping:/notice $nick ping? Hmmmm.... PANG PANG PANG!!

Wenn Euch nun jemand pingt, dann bekommt er als Antwort " ping? Hmmmm.... PANG PANG PANG!!" in Form einer Notice (Benachrichtigung). Hinzu kommt noch die Standardantwort 'pong'. Ihr knnt das durch /ctcp {euernick} ping testen. Wenn es nicht funktioniert, dann berprft, ob mIRC gerade auf CTCP-Befehle reagiert. Aktiviert die Funktion mit /remote on und/oder /ctcps on.

Wenn Ihr wollt, da mIRC die Standardantwort unterdrckt, dann knnt Ihr die weitere Bearbeitung mit dem Befehl /halt unterdrcken. Verwendet ihr wie folgt:
ctcp 1:ping: /notice $nick ping? Hmmmm.... PANG PANG PANG!! | /halt

Dies wird das selbe tun, wie vorher, nur da es die Standardantwort nicht absetzt.
Wie schon gesagt, testet es und seht den Unterschied.

Die Syntax der Remote CTCP-Befehle

Remote-Befehle bestehen bis auf ein paar speziellen Fllen immer aus drei Abschnitten, die von einander mit Doppelpunkten abgegrenzt sind. Die generelle Syntax sieht so aus:

ctcp {Befehls-Level}:{CTCP-Befehl}:{Ausgelste(r) Befehl(e) mit Parameter(n)}

Wir schauen uns die Anschnitte einmal einzeln an:

ctcp Dies sagt mIRC, da die Definition fr eine Reaktion auf einen CTCP-Befehl folgt.
{Befehls-Level} Dieser Befehl wird Usern antworten, deren Userlevel gleich hoch ist, wie das Befehlslevel oder grer, es sei denn fr Ihr (greres) Level ist ein anderer Befehl definiert.
{CTCP-Befehl} Der CTCP-Befehl kann heien wie Ihr wollt. Es kann ein Standart-CTCP-Befehl wie Ping oder Version sein, aber auch eine Eigenkreation.
{Ausgelste(r) Befehl(e)
mit Parameter(n)} Hier werden die auszulsenden Befehle definiert. Das Format und die Verwendung von Mehrzeilenbefehlen funktioniert genauso wie in den Aliases und Popups. Die Strings werden in dieser Sektion automatisch von mIRC belegt. Ihr mt nur sichergehen, da die von Euch eingesetzten Strings auch alle definiert werden, d.h. in den Remote Commands Sinn machen. (z.B. $chan wird in den Remote Commands NICHT definiert!!!)

Schauen wir noch mal nach unserem Ping-Beispiel und nehmen wir es auseinander:
ctcp 1:ping:/notice $nick Hmmmm.... PANG PANG PANG!!

Die Voranstellung von ctcp teilt mIRC mit, da die Definition eines Remote Befehls folgt. Im selben Script knnen auch noch Aliases, Events und Antworten auf numerische Server-Ereignisse (Raw Definitions) festgelegt werden. Aber dazu spter.

1 ist das Befehlslevel. Alle User mit dem Userlevel 1 oder hher knnen diesen Befehl auslsen.

Ping ist der CTCP-Befehl, auf den der Remote-Befehl reagieren wird.

Der ausgelste Befehl ist eine /notice, die an $nick bermittelt wird und die gesamte Zeile "Hmmmm.... PANG PANG PANG!!" enthlt. $nick ist der Identifier, der den Nicknamen der Person enthlt, die Euch den CTCP-Befehl bermittelt hat.

Fassen wir zusammen: der Effekt des Befehls "/ctcp {euernick} {ping}" ist "/notice {nick} Hmmmm.... PANG PANG PANG!!. Er wird ausgefhrt, sobald ein CTCP Ping empfangen wird.
Unterschiedliche Reaktionen auf Leute mit verschiedenen Userlevels
Ihr knnt die Reaktionen auf CTCP-Befehle sehr fein abstufen, indem Ihr ihnen verschiedene Levels zuordnet. mIRC antwortet immer mit dem passenden Befehl, der am dichtesten an die Hhe des Userlevels der Person heranreicht, die den Befehl gegeben hat. Analysieren wir mal die folgenden Zeilen...

ctcp 1:ping:/notice $nick ping? Hmmmm Dein Level ist zuuu niedrig!!... | /halt
ctcp 2:ping:/notice $nick ping? Hmmm! ...pang pang .... Fast tot !!
ctcp 3:ping:/notice $nick ping? ...pang !! Hmmm... daneben...
ctcp 6:ping:/notice $nick ping? Hmmm! ...Na gut.. ich mag dich, du darfst mir einen Ping senden...

Ein Level 1-User wird keinen Ping-Reply bekommen, dafr aber ein nettes " Hmmmm Dein Level ist zuuu niedrig!!..."
Ein Level 2-User (2:nick3!account3@machine.subnet.net) wird es kaum berleben, wenn er Euch pingt :o) Er wird folgendes sehen:" Hmmm! ...pang pang .... Fast tot !!"
Ein Level 3-User (3:*!*@machine.subnet.edu) bekommt:" ...pang !! Hmmm... daneben...".
Level 4 und 5 ist keine spezifische Reaktion zugeordnet, sie bekommen also die Reaktion, die am hchsten an Ihr Userlevel heranreicht. Das ist in diesem Falle Level 3 also bekommen sie auch alle die Level 3-Antwort.
Level 6-User und User mit hherem Level bekommen alle die Level 6-Antwort.

Diese Einstufung funktioniert bei allen Remote Commands und Events (Befehlen und Ereignissen)...
berprft, ob Ihr diesen Abschnitt verstanden habt. Sonst lest Ihn nocheinmal durch??
Spezielle Identifiers fr Remote/Commands

$nick, $address, $site, $level, etc. sind alles Identifiers, die speziell fr die Verwendung in der Remote-Sektion erstellt wurden. Alle blichen Strings (Abs. 7.1.2) knnen aber auch verwendet werden. Ihr knnt sie berall in den Befehlszeilen einsetzen, die durch CTCP-Befehle ausgelst werden.

$nick Der Nickname der Person, die den CTCP-Befehl gesendet, oder ein spezielles Ereignis (Event) ausgelst hat.
$address Die volle Adresse der Person, die den CTCP-Befehl gesendet, oder ein spezielles Ereignis (Event) ausgelst hat.
$site Erwidert die Adresse des Users, der das Event ausgelst hat im Format adresse.de
$wildsite Erwidert die Adresse des Auslsers im Format *!*@host.domain
$level Das Userlevel der Person, die den CTCP-Befehl gesendet, oder ein spezielles Ereignis (Event) ausgelst hat.

Anmerkung: Der Identifier $chan ist normalerweise in den Remote Commands nicht definiert... $chan enthlt den Namen des Channels, auf dem ein bestimmtes Ereignis ausgelst wurde. CTCP-Befehle werden nicht immer ber Channels an euch gesendet, oder die Person, die den Befehl sendet, kann auf mehreren Channels sein. Seht Ihr den Sinn?? Vielleicht hilft euch $active weiter? Oder $target?

Beispiel: Hier ist ein Beispiel, da den vordefinierten Identifier $address enthlt:
ctcp 1:adresse:/notice $nick Deine Adresse lautet: $address

Wenn Euch ein User nun den Befehl '/ctcp {euernick} adresse' bermittelt, dann antwortet Ihr mit einer Notice welche "Deine Adresse lautet: {was immer seine oder ihre Adresse ist}" enthlt.
(
Anmerkung d. bersetzers: Verget nicht, da "address" im englischen mit zwei "d" geschrieben wird, im Deutschen aber mit einem! Das hat mir zu Anfang viel Kopfzerbrechen bereitet, da man es durch Flchtigkeit leicht bersehen kann)

Beispiel: Freunden auf Anfrage Operator Status geben

Wenn Euch noch nicht klar ist, wie all dies prinzipiell funktioniert, dann macht Euch keine Gedanken. Folgt einfach den Beispielen bis der Groschen fllt. Wenn ntig, lest die vorhergehenden Passagen noch einmal. Versucht aber noch nicht, Eure eigenen Remote Commands zu schreiben oder zur nchsten Passage weiterzublttern, bis der Groschen gefallen ist.

ctcp 1:opmich:/notice $nick Sorry, du wirst auf $2 kein Ops bekommen. Dein Level reicht nicht aus...
ctcp 5:opmich:/mode $2 +o $nick

Wenn ein Freund mit Userlevel 5 Euch nun einen '/ctcp opmich {#channelname} sendet, dann wird ihnen der Remote-Befehl Ops auf dem angegebenen Channel geben. Level 1 User werden keinen Ops bekommen, was immer sie auch versuchen.

Das Parameter $2 bezieht sich auf das zweite Wort im CTCP-Befehl. In diesem Fall ist es der Channelname. ($1 wre das Wort 'opmich')

Der String $2- kann verwendet werden, um lange Zeilen zu verarbeiten, die ein Remote-User in einem CTCP-Befehl bermittelt.
ctcp 5:return:/notice $nick $2-
Dieser Befehl wird jeden Satz, den ein Remote-User sendet, an Ihn zurckbermitteln. Die gesamte Zeile nach dem CTCP-Befehlsnamen befindet sich in dem String $2-.
Ein an Euch gerichteter Befehl '/ctcp {euernick} Bla Fasel Schwtz Sabbel' lt mIRC den folgenden Befehl ausfhren: '/notice Freund Bla Fasel Schwtz Sabbel'.

Mehrzeilenbefehle

Ein empfangener CTCP-Befehl kann durchaus auch mehrere Befehle auslsen...
ctcp 5:opmich:/mode $2 +o $nick | /notice Du hast jetzt Operator Status auf Channel $2

Wenn Euer Level 5-Freund den Befehl '/ctcp {euernick} opmich #Channelname' sendet.


Was also passiert? I
n der Tat werden zwei Aktionen durch den CTCP-OPMICH-Befehl ausgelst.

erstens: /mode #Channelname +o Freund z
weitens: /notice Freund Du hast jetzt Operator Status auf Channel #Channelname

Noch ein CTCP-Befehl, der einen Mehrzeilenbefehl auslst:
ctcp 10:part:/part $2 | /notice $nick Ich habe den Channel $2 verlassen

Wenn nun von einem Level 10-User der Befehl '/ctcp {euernick} part #Channelname' eingeht, dann wird mIRC erst den Channel verlassen, und dem Sender des Befehls dann eine Besttigung senden.
$2 enthlt den zu verlassenden Channel
$nick ist der Nickname der Person, die angefragt hat

Andere Beispiele


ctcp 1:ping:/notice $nick Bitte sende mir keine Pings! .
..wrde mit '/notice {nick} Bitte sende mir keine Pings!' antworten.

ctcp 5:time:/notice $nick Zeit sich eine Uhr zu kaufen! .
..wrde mit '/notice $nick Zeit sich eine Uhr zu kaufen!' antworten.
ctcp 10:/notice $nick Ich bin der, der ich sage | /notice $nick Und ich sage, ich bin DU!!
...wrde antworten: 1) "/notice $nick Ich bin der, der ich sage", 2) "/notice $nick Und ich sage, ich bin DU!!"



7.3.3 Remote Scripts - Ereignisse (Events)

Whlt den Punkt Tools/Remote um den mIRC-Editor zu ffnen, dann aktiviert unter 'View' die Datei events.ini. Wenn kein Event-Script verfgbar ist, dann ladet die mitgelieferte Script-Datei oder erstellt eine neue mit File/New. Eine neu angelegte Datei wird standardmig script1.ini genannt.

Wie Ihr gesehen habt, befassen sich Remote-CTCP-Scripts nur mit CTCP-Befehlen. Die Remote Ereignisse (mIRC-intern Events genannt) befassen sich mit den anderen Dingen, die auf dem IRC passieren knnen. Das klingt vielleicht gewaltig, aber keine Sorge. Wie schon erklrt, bauen die Lektionen auf einander auf. Wenn Ihr die Remote Commands begriffen habt, dann werden die Remote Events ein Kinderspiel. Die Schwierigen Dinge habt Ihr im letzten Teil schon gelernt.

Warnung: blicherweise reagiert mIRC ziemlich sensibel auf fehlerhafte Remote-Events-Syntax. Wenn in den Scripts Fehler gemacht werden, dann kann das durchaus in einem GPF enden. (GPF ist die Abkrzung fr General Protection Fault. In der deutschen Windows-Version wohl bekannt als Adressenschutzverletzung). Wenn also pltzlich Stabilittsprobleme auftreten wo vorher keine waren, dann schaut mal zuerst hier nach.

Die Syntax fr Remote Events

Folgende Remote Events gibt es: TEXT, INPUT, JOIN, PART, KICK, OP, DEOP, BAN, UNBAN, INVITE, NICK, QUIT, TOPIC, SERVEROP, NOTIFY, UNOTIFY, MODE, USERMODE, SERVERMODE und SMODE. Neben dem TEXT Event sind die hnlich arbeitenden ACTION, NOTICE, NOTICE, CHAT, SERV und WALLOPS verfgbar. Neu hinzugekommen sind FILESENT, FILERCVD und NOSOUND sowie CHATOPEN, CHATCLOSE, SERVOPEN und das SERVCLOSE Event. (ich hoffe, ich habe keine vergessen!) CONNECT, DISCONNECT, MIDIEND,....

Was genau sie tun und wie man sie benutzt, besprechen wir in Krze. Erstmal schauen wir uns ein paar kurze Beispiele an, um die Syntax zu verstehen. Sie sieht im Prinzip genau wie die der Remote Commands aus. Hier ein Beispiel fr ein Remote Event, da auf Text reagiert:
on 1:TEXT:hallo:#:/msg $nick Hallo auch!

Schaut mal in Tools/Remote nach, ob da schon ein Script namens events.ini vorhanden ist. Wenn nicht, dann erstellt unter FileNew eine neue Datei. Schaut unter "Listening" nach, ob der Punkt "Events" aktiviert ist. (Wenn diese Funktion nicht aktiviert ist, wird mIRC auf die definierten Ereignisse nicht reagieren).
bertragt nun die obenstehende Zeile in eine neue oder vorhandene Datei ein.


Dieses Remote-Ereignis wird ausgelst, wenn in einem aktiven Channel das Wort "hallo" gefunden wird. mIRCs Antwort besteht in einer privaten Nachricht mit dem Inhalt "Hallo auch!".
Hier ist noch ein anderes Beispiel, diesmal mit JOIN:
on 1:JOIN:#:/notice $nick Herzlich Willkommen auf Channel $chan

Dieses Remote-Ereignis reagiert immer dann, wenn ein User einen Channel betritt, auf dem Ihr auch gerade seid. Es wird eine private Nachricht mit dem Inhalt "Herzlich Willkommen auf Channel {Channelname}" gesendet.

Wenn Ihr es bis hier geschafft habt und die Remote Commands verstanden habt, dann sollte Euch der Rest sehr leicht fallen. Remote-Ereignisse bestehen normalerweise aus 4 Teilen, getrennt durch Doppelpunkte. Ausnahmen sind die Events TEXT, welches sich aus 6 Teilen zusammensetzt und NICK, welches aus 3 Teilen besteht.

Alle Events bis auf TEXT, NOTICE, SNOTICE, ACTION, QUIT und NICK sehen von Ihrer Struktur so aus:


on Dieses Prfix signalisiert mIRC, da ein Event folgen wird
{Event-Level}:{Event}:{wo ausgelst}:{Ausgelste(r) Befehl(e) mit Parameter(n)}

{Event-Level} Dieses Event reagiert nur auf Ereignisse der User mit diesem Level oder hherem, wenn fr Ihr Level nicht ein eigenes Event definiert wurde.
{Event} Der Name des Events, auf das reagiert werden soll, wie z.B. JOIN, OP, etc...
{Wo ausgelst} #, #Name. Wo soll auf das Erscheinen dieses Events geachtet werden? Entweder # fr jeden Channel, oder #Name fr einen bestimmten Channel (wie #test). Man kann das Event auch so definieren, da es auf mehreren bestimmten Channels ausgelst wird:

on 1:TEXT:hallo*:#chat,#help,#mirc:/msg $nick Hallo auch!

Ausnahme: Dies gilt nicht fr NICK und QUIT!
{Ausgelste(r) Befehl(e) mit Parameter(n)} Die auszulsenden Befehle. Es funktioniert genauso wie in den Remote-Commands, nur halt mir anderen vorangestellten Parametern.

...und die groen Ausnahmen sind die Events TEXT, ACTION, NOTICE, SNOTICE, CHAT und SERV, welche so funktionieren:

on Dieses Prfix signalisiert mIRC, da ein Event folgen wird
{Event-Level}:{Event}:{Welcher Text}:{wo ausgelst}:{Ausgelste(r) Befehl(e) mit Parameter(n)}

{Event-Level} siehe oben
{Event} eine der oben aufgefhrten Ausnahmen
{Welcher Text} Welches Wort, oder welcher Text soll das Event auslsen? Wie z.B. "hallo" im Beispiel oben
{wo ausgelst} #, #name, ?, * Genau wie oben kann man dem TEXT Event vorschreiben, wo es nach bestimmtem Text suchen soll. Auf allen Channels (#), auf einem oder mehreren bestimmten Channels (#Name), in privaten Unterhaltungen (?), oder berall (*). Die Events TEXT und ACTION reagieren allerdings nicht auf Text in DCC Chats oder DCC Server-Fenstern. NOTICE reagiert auf Text in Notices, CHAT auf Text in DCC Chats und SERV auf Text in einem DCC Server-Fenster.
{Ausgelste(r) siehe oben
Befehl(e) mit
Parameter(n)}

Die verfgbaren Events

Nun folgt die Beschreibung der verschiedenen Events, auf die mIRC reagieren kann...

TEXT Event

Reagiert, wenn ein definierter Text im Channel oder in einer privaten Unterhaltung auftaucht. ACTION und NOTICE funktionieren genauso.


Beispiel:
on 1:TEXT:nonsens:#:/kick $chan $nick Kein Nonsens!!
Dieses Event achtet in allen Channels auf das Wort "Nonsens", und kickt den User, der es gesagt hat.

Beispiel:
on 1:TEXT:nonsens:#test:/kick $chan $nick | /notice $nick Hallo $nick ! Du hast Nonsens gesagt, das ist auf Channel #test nicht erlaubt...

Wenn das Wort "Nonsens" in #test gesagt wird, dann wird der entsprechende User gekickt (natrlich nur, wenn man auf #test auch Op ist) und er erhlt eine Notice mit dem Inhalt "Hallo {Nickname} Du hast Nonsens gesagt, das ist auf Channel #test nicht erlaubt..."


Beispiel:
on 5:TEXT:hilfe:?:/notice $nick Ich wnschte, ich knnte Dir helfen. Aber ich kann nicht.

Dieses Event reagiert, wenn das Wort Hilfe alleinstehend in einer privaten Unterhaltung gefunden wird. Man kann Wildcards (* Sternchen) in den Text einbauen, auf den mIRC reagieren soll:

* Reagiert auf jeden Text

=wort Nicht lnger untersttzt (weil nicht mehr bentigt)!
wort* Wenn ein User einen Satz mit diesem Wort startet, dann wird das Event ausgelst.
*wort Wenn ein User einen Satz mit diesem Wort beendet, dann wird das Event ausgelst.
*wort* Wenn ein User dieses Wort irgendwo im Satz benutzt, dann wird das Event ausgelst.
wort Eine exakte bereinstimmung wird bentigt, um das Event auszulsen.

Wie schon gesagt, reagiert das letzte Beispiel nur, wenn eine exakte bereinstimmung vorliegt, d.h. ein User einzig das Wort "Hilfe" sendet und nicht, wenn es nur irgendwo in einem Satz auftaucht.
Beispiel:
on 5:TEXT:hallo*:?:/notice $nick Hallo auch!

Dieses Beispiel reagiert nur, wenn ein anderer User eine private Nachricht schickt, die mit "Hallo" beginnt. (Anmerkung des bersetzers: Die korrekte Gro- und Kleinschreibung ist in der Definition des Textes nicht wichtig)

Andere Beispiele:
on 1:TEXT:werbinich:*:/notice $nick Dein Userlevel ist $level
on 1:TEXT:*ok:/msg $nick Dein Satz endete mit "ok"

ACTION Event

Siehe TEXT Event. Es funktioniert genauso. ACTION reagiert auf Aktionen (/me), die an Euch in privaten Gesprchen oder an die Channels gesendet werden, auf denen Ihr Euch gerade befindet.

NOTICE Event

Siehe TEXT Event. Es funktioniert genauso. NOTICE reagiert auf Notizen, die an Euch oder die Channels gesendet werden, auf denen Ihr Euch gerade befindet.

CHAT Event

Reagiert, wenn ein definierter Text in einem DCC Chat-Fenster gefunden wird.

SERV Event

Reagiert, wenn ein definierter Text in einem DCC Server-Fenster gefunden wird.

Die beiden letzten Events knnen verwendet werden, um auf bestimmten Text in DCC Chat- und Fileserver-Fenstern zu achten. Sie arbeiten fast wie TEXT. Natrlich fehlt der Teil {Wo ausgelst}. Hier mu eine wichtige Anmerkung gemacht werden: fr CHAT und SERV knnen keine verschiedenen Event-Levels festgelegt werden! Sie knnen also nicht auf verschiedene User mit unterschiedlichen Levels individuell reagieren. Ich wei, dieses Problem ist verwirrend, kann aber leider nicht behoben werden. Aufgrund der direkten Client-zu-Client-Verbindung bei DCCs, kann mIRC den Nicknamen und die Adresse nicht mehr feststellen, sobald eine Verbindung steht. Sorry, Leute! Verwendet fr CHATs und SERVs einfach Level 1.

Beispiele:

on 1:CHAT:blabla:/msg $me $nick hat zu dir " $1- "in einem DCC Chat gesagt
In einem SERV Event kann man auch den speziellen Identifier $cd verwenden. CD steht fr Current Directory (Aktuelles Verzeichnis).
on 1:SERV:dir:/msg = $+ $nick Aktuelles Verzeichnis ist $cd (
Das dem Nicknamen vorangestellte "=" signalisiert mIRC, da die Nachricht ber die DCC-Verbindung gesendet werden soll)
JOIN Event

Dieses Event spricht an, wenn ein User einen Channel betritt.

Beispiel:
on 1:JOIN:#test:/notice $nick Willkommen im Test-Channel!
Sendet eine Notiz mit dem Inhalt " Willkommen im Test-Channel!" an jeden, der den Channel #test betritt.

Beispiel:
on 25:JOIN:#cool:/kick $chan $nick Du bist hier nicht willkommen!!
Kickt jeden Level 25 User bei betreten des Channels mit der Nachricht " Du bist hier nicht willkommen!!"

PART Event

Dieses Event reagiert, wenn ein User einen Channel verlt.

Beispiel:
on 10:PART:#:/notice $nick Hey, danke, da du im Channel $chan vorbeigeschaut hast!
Sendet eine Notiz mit dem Inhalt " Hey, danke, da du im Channel $chan vorbeigeschaut hast!" an jeden Level 10 User, der den Channel verlt.

Beispiel:
on 90:PART:#:/msg $chan Yuppieeehh!!! $nick ist weg!!
Sendet eine Nachricht an den Channel, wenn ihn ein Level 90 User verlt.

CONNECT Event

Das CONNECT Event tut im Prinzip das selbe, wie die Sektion "Perform" unter File/Options. Es wird immer dann ausgelst, wenn sich mIRC mit einem IRC-Server verbunden hat, und die MOTD fertig gescrollt ist.
on 1:CONNECT:/echo Erfolgreich mit $server verbunden!
DISCONNECT Event

Wird ausgelst, wenn mIRC die Verbindung zum IRC-Server verliert.
on 1:DISCONNECT:/echo Huch! Verbindung verloren!

KICK Event

Wird ausgelst, wenn ein User von einem Channel gekickt wird

Beispiel:
on 100:KICK:#:/kick $chan $nick | /invite $knick $chan | /notice $nick Diese Person ist mein Freund!
Wenn ein Level 100 User aus einem Channel gekickt wird, dann kickt mIRC denjenigen, der den Kick gettigt hat. Anschlieend wird der gekickte Freund eingeladen, den Channel wieder zu betreten (invite) und der "Kicker" bekommt eine Notiz mit dem Inhalt "Diese Person ist mein Freund".

Anmerkung: $knick ist der Identifier fr den Nicknamen des Users, der gekickt worden ist. Beachtet auch, da es sich hier um einen Mehrzeilenbefehl handelt. Es funktioniert wie in den Remote Commands.

OP Event

Wird ausgelst, wenn ein User Operator Status bekommt (geopt wird).

Beispiel:
on 1:OP:#test:/notice $opnick Du hast von $nick Operator Status bekommen.
Wenn jemand auf #test geopt wird, dann wird diesem User eine Notiz mit dem Inhalt "Du hast von {dem User, der ihn geopt hat} Operator Status bekommen." geschickt.

Anmerkung: $opnick ist in diesem Event der Nickname desjenigen, der Operator Status bekommen hat.

DEOP Event

Wird ausgelst, wenn ein User Operator Status entzogen wird (deopt wird).

Anmerkung: Dieses Event erfordert die Auffhrung des Nicks in der Remote-Userliste!

Beispiel:
on 1:DEOP:#:/msg $opnick Pech gehabt! Du wurdest von $nick deopt!
Wenn jemand deopt wird, dann wird ihm eine Nachricht mit dem Inhalt " Pech gehabt! Du wurdest von {der Person, die ihn deopt hat} deopt!
Anmerkung: $opnick ist der Nickname des deopten Users in diesem Fall.

Wichtig: Bei der Erklrung der Events OP, DEOP, SERVEROP und NOTIFY mu eine wichtige Anmerkung gemacht werden. Aufgrund der Tatsache, da der Server beim Open, Deopen oder Sichten auf einem Channel oder dem IRC nur die Nicknamen der User bermittelt (nicht die vollen Adressen), mssen die User, auf die sich diese Events auswirken sollen auch per Nickname in der Remote-Userliste verzeichnet sein. Die volle Adresse (nick!account@rechner.adresse.de) reicht nicht. mIRC kann aus so einem Eintrag den Nick nicht herausfiltern. Die Ausnahme ist natrlich, wenn das Zugangslevel fr dieses Event auf 1 gesetzt wird, d.h. alle potentiellen User betroffen sind. In diesem Fall mssen die User nicht aufgefhrt sein. Wenn Ihr Leuten ein Userlevel zuordnen wollt, mit dem Ihr auch die Events OP, DEOP, SERVEROP und NOTIFY ansprechen knnt, dann tut das am besten so: 3:freundA 5:freundB 5:freundC 10:freundB!account@rechner.adresse.de Die Notwendigkeit dieser Art von Spezifizierung kann die doppelte Auffhrung eines Users in der Liste sinnvoll machen und zwar einmal nur per Nickname und einmal per voller Adresse. Dies verhindert, da jeder User der zufllig (oder auch absichtlich) den Nick freundB verwendet, vollen Zugriff auf die hheren Event- und Command-Level erhlt und sie nutzen kann.

BAN Event / UNBAN Event

Mit diesem Event kann man auf einfache Art und Weise Freunde vom Channel-Ban befreien (unbannen).

Beispiel:
on 5:BAN:#tree:/mode $chan -b $banmask

Der Identifier $banmask enthlt die gesamte Adresse, die auf die Ban-Liste des Channels gesetzt wird. Toll nicht? Der $bnick-Identifier enthlt den Nicknamen der Person, die gebant wird - er ist allerdings nicht immer definiert, da fr einen Channel-Ban nicht notwendigerweise ein Nick erforderlich ist (z.B. bei einem Siteban: *!*@modem*.adresse.de). UNBAN funktioniert genauso.

INVITE Event

Wird ausgelst, wenn man in einen Channel eingeladen wird.

Beispiel:
on 5:INVITE:#test:/join $chan | /describe $chan dankt Euch fr die Einladung!
Wenn Ihr nach #test eingeladen werdet, dann betritt mIRC den Channel und sendet eine Aktion mit dem Inhalt "{euernick} dankt Euch fr die Einladung!".

NICK Event

Wird ausgelst, wenn ein User seinen Nicknamen ndert.
Beispiel:
on 1:NICK:/notice $newnick Mir hat $nick besser gefallen als $newnick !
Immer wenn ein User seinen Nicknamen ndert, bekommt er die Notiz "Mit hat {alternick} besser gefallen als {neuernick} !"
$nick enthlt den alten Nicknamen, $newnick (na was wohl) den neuen.

Anmerkung: Der Abschnitt {wo ausgelst} fehlt im Event NICK.

QUIT Event

Wird ausgelst, wenn ein User den IRC verlt.

Beispiel:
on 2:QUIT:/notice $me Partytime!!! $nick hat sich gerade verpieselt!
Wann immer ein Level 2 User den IRC verlt, schickt mIRC eine Notiz mit Inhalt "Partytime!!! {Nickname} hat sich gerade verpieselt!" an sich selbst.

Anmerkung: Der Abschnitt {wo ausgelst} fehlt im Event QUIT.

TOPIC Event
Wird ausgelst, wenn das Topic in einem Channel gendert wird.

Beispiel:
on 1:TOPIC:#:/msg $chan Toll! Ich liebe das neue Topic!
Wann immer das Topic in einem Channel gendert wird, wird die Nachricht " Toll! Ich liebe das neue Topic!" in den Channel geschickt.

SERVEROP Event
Wird ausgelst, wenn der IRC-Server einem User Operator Status zurckgibt.

Anmerkung: Fr das SERVEROP-Event mu der User per Nickname in der Remote-Userliste aufgefhrt werden

Beispiel:
on 1:SERVEROP:#mirc:/mode $chan -o $nick | /notice $opnick Tut mir leid, aber auf Channel $chan sind keine Serverops erlaubt!

Wenn ein User auf Channel #mIRC von einem Server geopt wird, dann wird Ihm der Ops sofort wieder entzogen und er bekommt die Notiz " Tut mir leid, aber auf Channel #mIRC sind keine Serverops erlaubt!". Wenn ein Server vom IRC-Netzwerk abgespalten wird (Netsplit) und sich dann wieder mit Ihm verbindet (Netjoin), tauscht dieser mit dem Netzwerk smtliche Channelmodi - unter anderem die Operators - aus und gleicht sie an. In diesem speziellen Fall kann es zu Serverops kommen. (Anmerkung des bersetzers: Das obenstehende Beispiel macht Sinn, da Netsplits von den bsen Jungs auf dem IRC gerne dazu benutzt werden, um illegal Ops auf einem Channel zu erlangen und diesen dann zu bernehmen. Dieses Verfahren nennt sich im IRC-Slang "Channeltakeover". Also ist es sinnvoll, Serverops von vornherein zu unterbinden. Wenn der Deop einen Freund trifft, kann man ihm immer noch "von Hand" den Ops zurckgeben. Alles eine Frage der Sicherheit =)


NOTIFY Event UNOTIFY Event

Wird ausgelst, wenn ein in der Notify-List aufgefhrter Nickname den IRC betritt.

Man kann dieses Event z.B. dazu verwenden, einen /whois auszufhren, sobald ein Nick gesichtet wird, um zu berprfen, ob es auch tatschlich der korrekte User ist. Denkt aber daran, da der User per Nickname in der Remote-Userlist aufgefhrt sein mu (wie bei OP, DEOP und SERVEROP). Das liegt an den IRC-Protokollen, die nicht die Adresse der gesichteten Person bermittelt, sondern nur den Nicknamen. Ihr mt den Nicknamen in die Liste unter File/Options/Notify List einfgen und sobald mIRC die Person auf dem IRC sichtet, wird das Event ausgelst. Das UNOTIFY Event wird ausgelst, sobald mIRC registriert, da der User den IRC verlassen hat, oder seinen Nicknamen gendert hat.

Beispiele:
on 1:NOTIFY:/notice $nick Wenn du tatschlich $nick bist, dann komm nach #test!
on 1:UNOTIFY:/echo $active $nick hat den IRC verlassen
on 3:NOTIFY:/whois $nick
on 5:NOTIFY:/beep 10 50 | /whois $nick

MODE Event
SERVERMODE Event

Dieses Event reagiert auf nderungen an den gegebenen Channelmodi.
Die MODE-Syntax hat sich gendert! Es werden keine Channelmodi mehr vorgeschrieben. $1- wird nun mit den nderungen an den Modi belegt.

Syntax und Beispiel:
on1!:MODE:#name:/echo 6 Modusnderung von $nick auf Channel $chan!
(Schtzt Euch aber vor Endlosschleifen, wenn User unzulssige Modi erzwingen (Status-Flood))

USERMODE Event

Dieses Event wird ausgelst, wenn man den eigenen Usermodus ndert.

Wenn man den eigenen Usermodus ndert, z.B. +i, dann wird es von diesem Event registriert und man kann automatisch darauf reagieren.

VOICE Event
DEVOICE Event

Dieses Event reagiert auf die Modusnderung +v und -v (Erhalten und Entziehen der Sprecherlaubnis in einem Channel).

Beispiele:
on 1:VOICE:/notice $nick Du hast Sprecherlaubnis!
on 1:DEVOICE:/notice $vnick Heyyy! Gib bitte $nick die Sprecherlaubnis zurck!!

SNOTICE Event

Dieses Event ist dazu gedacht, um auf Notizen des Servers zu reagieren. Server informieren einen ber alles mgliche, was gerade auf dem IRC vor sich geht. Um sie zu empfangen, mu man sich selbst den Usermodus +s geben. (/mode #Nickname +s) Die meisten Leute werden diese Einstellung nicht brauchen. Sie ist eigentlich fr IRCOps und Serverbetreuer gedacht. Mit diesem Event kann man die Notizen des Server aus den anderen herausfiltern und eine Reaktion oder das Anzeigen des Textes verhindern. Die Syntax sieht so ziemlich wie die des Events TEXT aus:
1:SNOTICE:Text_des_Servers:/echo 6 status Der Server informierte gerade ber $1-

FILESENT Event

Wird angesprochen, wenn ein DCC-Datei-Transfer erfolgreich beendet wurde. Man kann es dazu verwenden, um sich selbst oder dem Dateiempfnger eine kleine Benachrichtigung zu senden.
on 1:FILESENT:*.txt,*.ini:/echo $filename wurde soeben erfolgreich an $nick ( $+ $address $+ ) bermittelt
on 1:FILESENT:mirc50s.exe:/notice $nick Viel Spa mit mIRC 16bit!
on 1:FILESENT:mirc50t.exe:/notice $nick Viel Spa mit mIRC 32bit!

FILERCVD Event


Wird angesprochen, wenn eine Datei ber DCC erfolgreich empfangen wurde. Es wird ausgelst, sobald die Datei erfolgreich auf die Festplatte geschrieben wurde. Es kann einerseits dazu verwendet werden, um sich selbst oder dem Dateiempfnger eine kleine Benachrichtigung zu senden, oder aber auch, um eine Hilfsanwendung zu starten, die die entsprechende Datei anzeigt bzw. wiedergibt:
on 1:FILERCVD:*.txt,*.ini:/run notepad.exe $filename
on 1:FILERCVD:*.wav:/wavplay $filename
on 1:FILERCVD:*.gif:/run c:\windows\wingif\wingif.exe $filename
on 1:FILERCVD:*.jpg:/run c:\windows\lview\lviewp19.exe $filename
on 1:FILERCVD:*.mid,*.voc:/run wplany.exe $filename
on 1:FILERCVD:*.*:/notice $nick Danke fr die Datei!


SENDFAIL Event
GETFAIL Event

Dieses Event reagiert wenn ein DCC-Transfer aufgrund einer verlorenen Verbindung oder einem Zeitberlauf vorzeitig beendet wird. Beispiele:
on 1:SENDFAIL:*.txt:/echo bertragung von $filename an $nick gescheitert
on 1:GETFAIL:*.txt:/echo Empfang der Datei $filename von $nick gescheitert

CTCPREPLY Event

Dieses Event achtet auf Antworten von CTCP-Befehlen:
on 1:CTCPREPLY:PING*:/echo $active Antwort auf PING von $nick erhalten!
on 1:CTCPREPLY:*mirc*:/echo $active Sieh mal an! $nick benutzt auch mIRC!

MIDIEND Event
Dieses Event wird ausgelst, wenn die Wiedergabe einer MIDI-Datei beendet wurde (allerdings nicht, wenn sie durch einen anderen Request oder den Befehl /splay stop unterbrochen wurde)

Beispiel:
on 1:MIDIEND:/echo mIRC hat die Wiedergabe der MIDI-Datei beendet.

INPUT Event

Dieses Event reagiert, wenn in die Editbox Text eingegeben wird, und dann "Eingabe" gedrckt wird. Die Zeile kann dann in einem Script oder sonst wie bearbeitet werden.
on 1:INPUT:/echo Du hast die Zeile $1- eingegeben!

LOAD Event wird ausgelst, wenn mIRC startet und Scripts geladen werden.
START Event wird ausgelst, sobald die Scripts geladen wurden und betriebsbereit sind
on 1:LOAD:/echo Script erfolgreich geladen!
on 1:START:/echo Script erfolgreich gestartet!

Mit dem LOAD Event kann man mIRC Befehle erteilen, wenn es die Scripts ldt. Um Initialisierungskommandos zu geben, die aktiv werden, wenn mIRC das erste mal gestartet wird (und die Scripts automatisch ldt) benutzt man das START Event. Wenn ein Script im Remote-Dialogfeld geladen wird, dann werden die Auto-Run-Befehle allerdings erst ausgefhrt, sobald das Feld geschlossen wird.

Spezielle Identifiers fr Remote-Events

$nick $address, $site etc. sind alles Identifiers, die speziell fr die Verwendung in den Remotes erstellt wurden. Man kann sie berall da verwenden, wo bestimmte Reaktionen auf Remote-Ereignisse erwnscht sind.

$nick Der Nickname des Users, der ein Remote-Event ausgelst oder einen Remote-Befehl gesendet hat
$address Die volle Adresse des Users, der den Befehl gesendet hat (nick!account@adresse.de)
$site Die Adresse des Users, der das Event ausgelst hat im Format adresse.de
$wildsite Die Adresse des Users, der das Event ausgelst hat im Format *!*@adresse.de
$level Das Remote-Level des Users
$chan Der Channel, in dem ein Event ausgelst wurde
$target Das Ziel des Events


7.3.4 Verschiedene Attribute (Flags) vor CTCP Befehlen und Events in Remote Scripts

Wir kommen nun zu den verschiedenen Attributen (Flags) die man in der Remote-Sektion verwenden kann (vor Commands und Events). Der Umgang mit diesen Flags erfordert eine Menge Experimentierfreudigkeit; probiert aus, was sie tun und wann sie es tun. Schaut, ob sie tun was Ihr erwartet habt und bastelt viel herum!

Das Flag ! (nur fr die Events)

Dieses Flag bewirkt, da ein Event nicht reagiert, wenn Ihr selber der Auslser dafr seid. mIRC reagiert dann auf kein Event, da durch einen Client mit Eurer Adresse verursacht wird. (Ein hnlicher Flag heit "me". Er verhindert ebenfalls die Ausfhrung von bestimmten Events, die Ihr selber auslst, allerdings wird die Adresse nicht bercksichtigt. Wenn Ihr also noch einen zweiten Client mit der selben Adresse verwendet, so kann dieser das 'geflaggte' Event trotzdem auslsen.)

Beispiel:
on 1!:JOIN:#test:/notice $nick Willkommen im Channel $chan !
Dieser Eintrag wird nicht reagieren, wenn Ihr selber den Channel betretet, aber jeder andere User wird die Notiz bekommen.

Das Flag = (nur fr die Events)

Dieses Flag verhindert, da irgend etwas passiert. Es ist dazu gedacht, um User mit hheren Levels davor zu bewahren, von Aktionen genervt zu werden, die fr Leute mit niedrigerem Level bestimmt sind.

Beispiel:
on 1:JOIN:#test:/ctcp $nick VERSION
on 3:JOIN:#test:=
User mit Level 1 oder 2 bekommen einen Version Request, User mit den Levels 3 oder hher nicht.

Beispiel:
on 1:JOIN:#test1:/notice $nick Willkommen im Channel #test1!
on 1:JOIN:#test2:/notice $nick Willkommen im Channel #test2!

on 3:JOIN:=
Level 3 User werden nicht gegrt, Level 1 und 2 User nur auf den Channels #test1 und #test2.

Das Flag +

Dieses Flag macht ein Event nur fr die User verfgbar, die das exakt bereinstimmende Userlevel haben. Hhere (und natrlich niedrigere) Userlevel haben dann keinen Zugriff.

Beispiel:
on 1:JOIN:#test:/ctcp $nick VERSION
on +3:JOIN:#test:/notice $nick Willkommen im Channel $chan !
Alle User auer Level 3 bekommen einen Version Request, wenn sie den Channel #test betreten. Level 3 User bekommen eine Willkommens-Notiz.

Die Flags ; und REM

Diese Flags knnen dazu verwendet werden, um Remote-Befehle und -Events zeitweilig abzuschalten, indem man sie als Kommentare kennzeichnet:

Beispiel:
;on 1:JOIN:#test:/notice $nick Willkommen!
REM on 1:JOIN:#test:/notice $nick Willkommen!
Die Flags * und @

Diese beiden Flags sind absolut gleich und bewirken, da ein nachgestelltes Event nur dann ausgefhrt wird, wenn man Operator Status in dem Channel hat, in dem das Event ausgelst wurde.
on *1:JOIN:#test:/notice $nick Willkommen in Channel #test
on @10:JOIN:#test:/mode $chan +o $nick

Das Flag me
Dieses Flag wurde eingefhrt um sicherzustellen, da nur eine Person mit exakt der selben Adresse ein Event auslsen kann. Damit ist hauptschlich eine zweite Version von mIRC auf dem selben PC gemeint. Denkt aber daran, da dieses Flag eigentlich unntig ist, wenn man sie Userlevel in der Remote-Userliste sorgfltig zugeordnet hat.

Vergleichende Flags

In mIRC Version 3.7 wurde eine neue Sorte Flags fr die Events vorgestellt. Mit diesen Flags kann man mIRC bercksichtigen lassen, welches Userlevel ein Event auslst und auf welches Userlevel es einen Effekt hat. Diese Flags knnen nur mit den Events OP, DEOP und KICK verwendet werden, da dieses die einzigen sind, bei denen irgend jemand etwas mit einem anderen User tut.
Die drei verfgbaren Flags sind >, < und =. Aber man kann sie auch zu mathematischen Kombinationen zusammenfgen. Das ergibt dann 6 verschiedene Mglichkeiten: <, >, <=, >=, <> und =.

Diese Flags bewirken, da das Event nur ausgelst wird, wenn erstens das Level auf das des geopten, deopten oder gekickten Users pat, und zweitens das Level des Auslsers die definierte Bedingung {Level-Aktivator}[Flag](Mathematischer Ausdruck)]{Level des Events] erfllt.

Hmm... Ihr seht aus, als bruchtet Ihr ein paar Beispiele!!!
Nehmen wir mal an, Ihr seid die WACHE auf einem Channel mit einen Freund, der das Userlevel 2 hat und ein Aktivator mit verschiedenen Levels. Und dann seht Euch diese einfachen Beispiele an:

on <2:DEOP:#test:/msg $chan Das Event < wurde ausgelst
on >=2:DEOP:#test:/msg $chan Das Event >= wurde ausgelst

Der Aktivator hat Userlevel 1:
***Aktivator sets mode: -o Freund
Das Event < wurde ausgelst.
Euer Freund hat Level 2, der Aktivator Level 1, 1<2 trifft zu (eins ist kleiner als zwei), also wurde das erste Level 2-DEOP-Event ausgelst.

Der Aktivator hat Userlevel 2
***Aktivator sets mode: -o Freund
Das Event >= wurde ausgelst
Euer Freund hat Userlevel 2, der Aktivator auch Level 2, 2<2 trifft nicht zu, 2>=2 ist trifft zu (zwei ist grer oder gleich zwei), also wird das zweite Level 2-DEOP-Event ausgelst.

Der Aktivator hat Userlevel 3
***Aktivator sets mode: -o Freund

Das Event >= wurde ausgelst
Euer Freund hat Userlevel 2, der Aktivator Level 3, 3<2 trifft nicht zu, 3>=2 ist trifft zu (drei ist grer oder gleich zwei), also wird das zweite Level 2-DEOP-Event ausgelst.

Wie Ihr seht ist es vllig logisch, wenn man es einmal die Systematik begriffen hat. Lest einfach weiter, bis der Groschen fllt...
Mehr Beispiele:

on <2:DEOP:#test:/msg $chan Das Event < wurde ausgelst
on >2:DEOP:#test:/msg $chan Das Event > wurde ausgelst

Der Aktivator hat Level 1

***Aktivator sets mode: -o Freund
Das Event < wurde ausgelst
Der Aktivator hat Level 2
***Aktivator sets mode: -o Freund

Der Aktivator hat Level 3
***Aktivator sets mode: -o Freund
Das Event > wurde ausgelst
on =2:DEOP:#test:/msg $chan Das Event = wurde ausgelst

Der Aktivator hat Level 1
***Aktivator sets mode: -o Freund

Der Aktivator hat Level 2
***Aktivator sets mode: -o Freund
Das Event = wurde ausgelst

Der Aktivator hat Level 3
***Aktivator sets mode: -o Freund



7.3.5 Variablen

Whlt den Menpunkt Tools/Remote und schaut in die Sektion "Variables"...
In diesem Teil der Remotes knnt Ihr Eure eigenen Variablen definieren. Variablen knnen Zahlen, Worte, aber auch ganze Textzeilen enthalten. Wenn Variablen Zahlen enthalten, dann knnen sie mathematisch manipuliert werden, um ihren Wert zu erhhen oder zu vermindern. Man kann sie untereinander aber auch mit gegebenen Zahlen addieren bzw. subtrahieren. Variablen beginnen immer mit einem % und knnen beliebig lange Namen haben. Die Werte der Variablen werden nach jeder Sitzung in einer Datei im mIRC-Verzeichnis gespeichert.

Es stehen einige Befehle zur Verfgung, um Variablen zu erstellen, bzw. zu warten: (s=show, Anzeige eines Berichts der Operation im Status-Fenster)

/set [-s]


 

 

Internet Relay Chat IRC

Diese Seite wurde in 0.0066 Sekunden erstellt.



 

Deine Seite hier ?



Werbung

Sie kommen von der Seite: Optimalgewicht schnell abnehmen zunehmen