mIRC Scripting FAQ
mIRC Scripting lernen mit der mIRC-FAQ
Anmerkung: Unsere ursprüngliche Seite hat die Übertragung auf unser neues System nicht vertragen.Wir haben daher eine andere Fassung bezogen.
Die Formatierung ist teilweise nicht sehr schön. Wir haben veraltete Links entfernt. Viel Erfolg!
Parallel bieten wir ein deutsches mIRC Scripting Tutorial von mIRC-Coding.de an!
7.1 Die Aliases-Sektion
7.1.1 Aliases erstellen
7.3.1 Die Remote User-Liste
7.3.2 Remote Scripts – CTCP Befehle
7.3.3 Remote Scripts – Ereignisse (Events)
7.3.4 Verschiedene Attribute (Flags) vor CTCP
7.3.5 Variablen
7.3.6 Remote Scripts – numerische Server-Mitteilungen
7.4 Fortgeschrittener Umgang mit Befehlen;
Ein Kurs über „Programmieren“ in mIRC
mIRC bietet unter Tools drei Oberflächen, die auf bestimmte Weise „programmiert“ werden können.
Die Aliases, die PopUps und die Remotes.
In den Remotes können User, Variablen und Scripts
definiert werden. Scripts steuern mIRCs
Reaktionen auf IRC-spezifische Ereignisse oder CTCP-Befehle.
Wichtig
Am besten lernt man die Funktionalität dieser Programmieroberflächen, 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.
(Für die, die schon mit ircii gearbeitet haben: Die Syntax der Aliases in mIRC ist der von ircii
ähnlich allerdings nicht völlig gleich. Auch die Command- und Remote-Sektion erlauben
ungefähr die selben Features, aber auch hier ist die Syntax ein bißchen anders.)
7.1 Die Aliases-Sektion
Wählt den Menüpunkt Tools/Aliases.
Der mIRC Editor wird dann mit der geöffneten Alias-Sektion starten.
Bitte ignoriert erst mal die PopUps, User und Variablen.
Der mIRC Editor ist eine kompakte, einheitliche Schnittstelle zu fast allen programmierbaren
Oberflächen. Mit dem eingebauten File-
Menüpunkt können Alias-Dateien geladen undgespeichert werden.
Das Edit-Menü bietet
copy/paste- (Kopieren und Einfüge-) Funktionen
sowie Suchroutinen. ‚View‘ bietet einen Überblick
über alle vorhandenen Alias-Dateien und ‚Alias‘
zeigt ein Inhaltsverzeichnis der geöffneten Alias- Datei.
In der Alias-Sektion können unter anderem
Abkürzungen für häufig verwendete Befehle wie
JOIN, PART, QUIT, Ops geben und Ops
entziehen definiert werden. Standartsätze müssen nicht mehr getippt werden, sondern können
ebenfalls als Alias abgelegt werden. Im allgemeinen können sämtliche Befehle, die aus
der Editbox heraus funktionieren auch in den Aliases verwendet werden.
Aliase können auch dazu dienen, mehrere Befehle hintereinander auszuführen. Ihr könnt mit Hilfe
der Aliases sogar Befehle auf die Funktionstasten
F1-F12
legen…(endlich
bekommen
diese
nutzlosen Tasten einen Sinn).
Aliase können
ebenfalls von innerhalb der PopUps, der Remotes
und sogar in anderen Aliases aufgerufen werden.
In der neuen mIRC-Version können 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 häufig verwendet wird, wäre es
schön, wenn man so wenig tippen muß wie
möglich, oder? Also machen wir das ganze etwas
kürzer und machen ein Alias.
Anstatt ‚/join #{name}‚ zu tippen, richten wir es
so ein, daß /j #{name} den selben Effekt erzielt.
In diesem Fall würde der entsprechende Eintrag
so aussehen:
/j /join $1
(Was dies exakt für mIRC bedeutet, braucht Ihr
an dieser Stelle noch nicht zu verstehen. Zu dergenauen Definition der Syntax kommen wir in Kürze.)
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 Abkürzung ist nun ein Alias.
Die Syntax von Aliasen.
Aliases verwenden das folgernde Format:
„/{Aliasname} /{Befehl}“
Es wird also zuerst der Name der Abkürzung
festgelegt (wie z.B. ‚/j‘ im obenstehenden
Beispiel), dann ein Freizeichen und dann der
eigentliche Befehl, auf den die Abkürzung
verweisen soll (im oberen Beispiel ‚/join $1‘).
Aliases verwenden eine Reihe von speziellen
Strings (Strings sind Standartvariablen, die
veränderbare Werte enthalten können – 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. Später mehr dazu).
Es gibt mehrere Strings wie z.B. $1, $1-3, $$1, $?, $!,
#$1, #$$1 und #$?.
Strings können 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 später auf dieses Thema noch sehr viel
genauer ein.
Laßt 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 Abkürzung für „/join #test“ ist.Mehrere Befehle in einem Alias
Nehmen wir nun an, man möchte mehrere
Channels gleichzeitig betreten. Auch hierfür kann
man ein Alias erstellen. Trennt nur die
verschiedenen Befehle mit dem | Zeichen (auf den
meisten deutschen Tastaturen ist das die
AltGr+Größer 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 würde sie zugleich betreten.
Das entsprechende Alias würde 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 einzugebenund 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 würde also
passieren, wenn man nur „/j3 #test“ eingibt?
mIRC würde über die fehlenden Parameter
stolpern, da es drei Eingaben erwartet. Für dieses
Problem gibt es eine Lösung: den $$1 String (den
behandeln wir etwas später).
Beispiel: /say
Angenommen, es gibt einen Satz oder einen
Kommentar, den Ihr in Channels immer wieder
gebraucht, wie z.B. Eure Homepage-Adresse,
eine Begrüßung oder was auch immer. Schaut
Euch mal diese Beispiele für 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
https://IRC-Mania.de
/Zeilen /say Erste Zeile | /say Zweite Zeile | /say
Dritte und letzte ZeileDas letzte Beispiel zeigt, wie man mehrere
Textzeilen in einem Alias zusammenfaßt. Die
Befehle müssen lediglich mit | voneinander
abgegrenzt werden. Man sieht hier, daß nicht
zwangsläufig in jedem Alias ein String
vorkommen muß.
Beispiel: /me
Tätigkeiten 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 können 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“ würde
darin resultieren, daß mIRC erst #test betritt und
dann das Topic in „Nur zum testen“ ändert.
Ein ähnlicher Fall wäre:
/mag /say Ich mag $1 ! | Ich mag $1 wirklich
gerne!!
Bei „/mag alle“ wäre das Ergebnis „/say Ich mag
alle !“ und dann „/say Ich mag alle wirklich
gerne!!“
Channel-Modus-Änderungen
etc.):
(Ops
geben,
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 können aufgeführt werden. Das
entsprechende Alias sieht folgendermaßen 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 bezeichnet
den
#Channelnamen des Channels, auf dem das Alias
ausgelöst 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:
Freizeichen!
Das korrekte Setzen
von 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 Sätze
aufbaut)
/mag /say ich mag $1 !!!
…wird funktionieren.
Dies gilt für alle Strings. Um eine Funktion zu
vereinfachen wurden ein paar Strings erstellt, die
den erfaßten Parametern automatisch ein #
voranstellen. Dies gilt für #$1, #$$1, und #$?.
Details hierzu werden später behandelt.
In einigen Fällen funktioniert: /gut /say Mir
gefällt $1’s Topic
Aber wie gesagt – nur in einigen. Ihr müßt das für
jeden Fall testen.Wo kann man Aliase benutzen?
Aliase können 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 können
auch auf in der Nicknamenliste ausgewählte
Nicks bzw. den Namen des Privatfensters (Query-
Fensters) bezogen werden… abhängig von der
Aliasdefinition. Es ist sogar möglich, ein Alias
durch ein anderes aufzurufen – mit einer
Ausname: Aliase dürfen sich nicht selbst
aufrufen! Ein Alias, daß ein anderes aufruft
braucht allerdings eine Menge Speicher.
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:
Funktionstasten.
DieSpezielle Alias-Bezeichnungen machen es
möglich, 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 drücken. 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 ausgewählten Person senden.
Nicht vergessen, vorher einen Nick auszuwählen,
oder es werden merkwürdige aber logische Dinge
passieren. Die F9-Taste kann auch in einem
Privat- oder DCC Chat-Fenster verwendet werden. Bei Betätigung der F11-Taste wird zuerstnach einem Nick gefragt, dem die Datei gesendet
werden soll.
Es gibt viele Möglichkeiten, die eigenen F-Tasten
so zu gestalten wie man möchte – viel Spaß dabei!
Ebenfalls ist es möglich, die
Umschalttaste mit einzubeziehen:
Strg- und
/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 hinzufügen indem
man im Alias-Editor (Tools/Aliases) File/Load
wählt. Man kann nun auf einfache Art und Weise
eine Datei auswählen. Mit View kann man sich
alle geladenen Dateien anschauen. So kann man
auf einfache Weise Aliase von Freunden
ausprobieren oder die eigenen zur Verfügung
stellen. Aliases können sogar mit Remote
Commands und Events in eine Datei
zusammengefaßt werden und als komplette
Script-Datei in Umlauf gebracht werden. Wir
gehen später 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 später auch in den PopUps und
Remotes – verwenden könnt. Die nächsten zwei
Abschnitte erläutern sie alle. Von dieser Stelle
aus probiert die Beispiele bitte aus, bis Ihr sie
verstanden habt.
$N
Der einfachste String. Er enthält ein
Wort. $1 z.B. enthält das erste Wort
nach dem Aliasnamen. $2 enthält 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
Rübe
Gebt „/slap Doofmann Sardellen“ ein,
um Doofmann ein bißchen nach Fisch
stinken zu lassen ;o)
$N-M
Dieser String enthält 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.ersetzt die alte Form *N-M.
$N-
Dieser String kann eine Menge Worte
enthalten. $1- enthält das erst Wort
und alle nachfolgenden. Beispiel:
/allen /say Ich möchte Euch allen
etwas sagen – $1- „/allen mIRC ist
echt ein gutes Programm“ ergibt dann
„Ich möchte Euch allen etwas sagen –
mIRC ist echt ein gutes Programm“.
$2- enthält 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:
$?=“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 kräftig
$!
Dieser
String
wird
nur
in
Zusammenhang mit $? verwendet.
Wenn Ihr vorher in einem Alias den
$?-String gesetzt habt, dann könnt Ihr
$! dazu benutzen, um das bei $?
eingegebene Parameter später noch
mal zu verwenden:
/j /join $?=“Welchen Channel
betreten?“ | /say $! ist wirklich ein
schöner Channel.betreten?“ | /say $! ist wirklich ein
schöner Channel.
Versucht auch:
/freund /say $? ist mein Freund | /say ich mag $!
wirklich sehr!
#$$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 gewöhnlichen Strings
ergibt sich immer daraus, auf welche Weise er in
den Aliases, PopUps oder Remotes aufgerufenwird. Ein Identifier hingegen enthält immer fest
definierte Werte.
# Dieser enorm wichtige Identifier enthält immer
den Namen des Channels, in dem das Alias
ausgeführt 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.
Dieser Identifier enthält immer Euren aktuellen
Nicknamen. Man kann ihn in den verschiedensten
Situationen verwenden. Beispiele:
/schön /me findet, $me ist ein schöner Nickname
/mirc /me bietet allen die neue mIRC Version
5.02 an. Tippt „/CTCP $me xdcc send #1“ um sie
zu bekommen.
/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
<neuer Nickname>
$readini [-n|#]<Dateiname.txt> Das hier ist ein
praktischer Identifier. Es nimmt nach dem
Zufallsprinzip eine Zeile aus einer spezifizierten
Datei heraus, und setzt sie in das Alias. Diese
Zeile kann normalen Text enthalten, aber auch
Befehle! $!read funktioniert im Prinzip genauso,
wie $read, außer daß es beim ersten Durchlauf der
Alias-Routine nicht bearbeitet wird. Dies
ermöglicht seine Verwendung in Zusammenhang
mit /timer-Befehlen, in denen $read jedes mal neu
bearbeitet werden soll. Das -n Parameter
verhindert die Bewertung einer Zeile komplett.
Sie wird dann als normaler Text behandelt.
Beispiele:
/spaß /say $read c:\mirc:\spass.txt
/kick /kick # $1 $read c:\mirc\spasskicks.txt
/dumm /say $read -|5 dumm.txt$readini [-n]<ini-Datei><Abschnitt><Eintrag>
Genau wie $read liest $readini Zeilen aus einer
.ini-Datei. Es wurde im Zusammenhang mit dem
/writeini-Befehl erstellt. Beide verwenden die
Standartroutinen von Windows, um aus einer .ini-
Datei zu lesen, bzw. in ihr zu schreiben. Wir
denken, $readini und writeini vereinfachen die
Möglichkeit, automatische Abläufe in mIRC zu
programmieren. Das -n Parameter verhindert, daß
eine Zeile bearbeitet wird.
Dieser Identifier enthält immer die www-Seite,
die Euer Webbrowser (z.B. Netscape) gerade
zeigt. Beispiel:
/page /say Hey Leute, ich habe eine tolle
Webseite gefunden! Seht euch mal $url an!
$ip Eure IP-Adresse
$server Der Server, den Ihr
gerade verwendet
$active Der
Name des aktiven Fensters in mIRC
$time Die Uhrzeit Eurem PC
$away auf Sagt euch, ob Ihr
gerade als abwesend registriert seid, oder
nichtregistriert seid, oder nicht
$ticks Die Anzahl der Ticks seit dem Start
des Betriebssystems.
$idle Erwidert die
Zeitspanne, die Ihr
schon untätig (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 Tag
$date gegenwärtige
Das gegenwärtige Datum
in europäischer
Reihenfolge (JA!!
mIRC ist kein
amerikanisches Programm!! :o) Man
kann alternativ auch
$adate
(amerikanisch),
$fulldate oder $day
verwenden.kann alternativ auch
$adate
(amerikanisch),
$fulldate oder $day
verwenden.
$duration
(Sekunden)Übersetzt
Zahlen wie 123456
in
1Day
10hrs
17mins 36 secs.
Erwidert
die
$logdir, $getdir, $wavedir, $script,
entsprechenden
$mircdir, $mididir und $scriptdir
Verzeichnisnamen
$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) Überprüft, ob die
entsprechende Datei
existiert (Erwidert
$true oder $false)
Durchsucht
das
angegebene
$findfile(Verzeichn.,Dateiname,N)
Verzeichnis nach der
Nten spezifizierten
DateiDatei
$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
für
das
Zeichen C
$len(text) Erwidert die Länge
von „text“
$upper(text) Erwidert „text“ in
Großbuchstaben
$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
Position
Unterstring
String:
die
von
inPosition
Unterstring
String:
von
in
/pos /say $pos(Cenobit,bit)
„/pos“ würde in diesem Falle 5 ergeben da „bit“ ab
fünfter Position beginnt
$replace(String,
Austauschtext)
Unterstring,
Ersetzt
einen
Unterstring in einem
String:
/ersetz /say $replace(Cenobit,bit,byte)
„/ersetz“ ergibt hier Cenobyte, da bit durch byte ersetzt
wird.
(Nur zur Erklärung der Begriffe String und Unterstring
in diesem Abschnitt)
$remove(String, Unterstring) Entfernt Unterstring
aus String
$strip(text) Entfernt
alle
Kontrollzeichen für
Fett, Unterstrichen
und Farbe aus Text
$count(String1,String2) Zählt,
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 Dateider Zeilen in Datei
$usermode Erwidert
Euren
gegenwärtigen
Usermodus
$nick(#,N) Erwidert den Nten
Nicknamen
auf
Channel #
$snick(#,N) Erwidert den Nten
ausgewählten
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.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 einesZeichens
$addtok(text,Zeichen,C) Fügt 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)
Fügt ein Zeichen in
Nte Position im Text
ein, wenn diesen im
Text nicht schon
vorhanden ist.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
die obenstehenden Identifiers kann man N gleich Null
setzen,
um die gesamte
Anzahl an
Nicknamen/Channels/Zeichen zu bekommen.
$snotify Erwidert
den
Nicknamen,
der
gegenwärtig in der
Notify-Liste
ausgewählt ist
$address Erwidert die volle
Adresse des Users,
der einen Remote-
Eintrag auslöst
$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 ausgelöst
hat.aus der Userliste, die
das Event ausgelöst
hat.
$maddress(address) Erwidert
passende
aus der
Userliste.
eine
Adresse
Remote
$level(Adresse) Sucht die passende
Adresse
in
der
Remote Users Liste
und erwidert deren
Level
$ulevel Erwidert
das
passende Remote-
Userlevel
des
ausgelösten Events
$clevel Erwidert
das
passende Remote-
Commandlevel für
ein
bestimmtes
Event
$dlevel Erwidert
das
Standart-Userlevel
(Default-Userlevel)
$mask(Adresse,Typ) Erwidert die Adresse
anhand
eines
bestimmten „mask-
Typs“Identifiers und Variablen können auch innerhalb
von Klammern plaziert werden. Beispiel:
/echo
$right(3,$left($len(goats),
ToMooOrNotToMoo)) ergibt Moo.
Identifiers mit anhängenden Parametern
Einige Identifiers können mit bestimmten
anhängenden 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) für die Adresse,
.desc für die Beschreibung,
.port für den Port, .group
für die Gruppe (z.B.
DALNet, EFNet, oder
Undernet)
$ial(mask,N,N|Nick) Erlaubt den Zugriff auf die
interne
Adressenliste.
$ial(mask,N) für die volle
Adresse, .nick für den
Nicknamen, .user für den
User, .host für den Host,$ial(mask,N) für die volle
Adresse, .nick für den
Nicknamen, .user für den
User, .host für den Host,
.addr für die Adresse.
$url Erlaubt den Zugriff auf die
URL-Liste. $url(N) für die
Adresse, .desc für die
Beschreibung und .group
für 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
.status
$fserv(N|Nick).ip,
.status, .cd
.ip, (enthält active,
oder inactive)
waiting
(aktuelles Verzeichnis)
$get(N|Nick).ip, .status, .file (Dateiname), .size
(Größe),
.rcvd
(empfangen),
.cps
(Übertragungsrate), .pc
$send(N|Nick).ip, .status, .file (Dateiname), .size
(Größe),
.sent
(gesendet),
.Ira,
.cps
(Übertragungsrate), .pc
$timer(N) Erwidert die Timer die
aktiv sind. $timer(N) für
die id, .com, .time, .reps,
.delay, .type
$group(N).status Erwidern, ob die Gruppe
aktiv oder inaktiv ist.aktiv oder inaktiv ist.
$group(Name)
Benutzerdefinierte Identifiers.
wurde
ursprünglich
von
geschrieben)
(Abschnitt
LiOnheart
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 möchte.
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 Menüpunkt 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 für einen Identifier werden durch
Kommata getrennt. Man kann ebenfalls sämtliche
gängigen If-Then-Else Strukturen in der
Definition von Identifiers verwenden.
Man kann zum Beispiel erst überprüfen, ob alle
für den Identifier erforderlichen Parameter
vorhanden sind, und sonst eine Fehlermeldung
ausgeben lassen:
/prozent {
if ($1 == $null) || ($2 == $null) { return Fehler:
Nicht genügend 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 }
:returnreturn %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 könnte diesen Identifier jetzt z.B.
mit $prozent(56,100) aufrufen. Daraus würden
sich dann 56% ergeben. Zahlen sind allerdings
nicht das einzige, was Identifiers enthalten
können. 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 bißchen Kreativität könnt Ihr Praktisch
für alles Identifiers entwickeln, wie z.B.
rückwärts Sprechen oder jeden zweiten
Buchstaben aufleuchten lassen.
7.2 Die PopUps-Sektion (Kontextmenüs)
Popups sind Kontextmenüs, 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 völlig verändern und den
persönlichen Bedürfnissen anpassen.Der mIRC Editor wird mit geöffneten 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 Menüpunkt ‚File‘ in der Popups-
Sektion könnt Ihr Popups laden (load), entladen
(unload) und speichern (Save). Das Menü ‚Edit*
beinhaltet ausschneiden, kopieren und einfügen
(cut, copy, paste) und eine Suchfunktion. ‚Popup‘
zeigt eine Übersicht über die gerade geöffnete
Popup-Datei.
Im Menü ‚View‘ kann man auswählen, welche
Popups man gerade bearbeiten will. Es gibt
verschiedene Kontextmenüs je nach Art des
Fensters. In einem Channelfenster stehen einem
andere Popus zur Verfügung als in einem
Privatfenster (Query). Man kann individuelle
Kontextmenüs für das Status-, die Channel- und
Privat/DCC-Fenster sowie für die Nicknamenliste
und ein speziellen Punkt in der Menüleiste
erstellen. (Alles das wird später noch erklärt)
Wenn Euer mIRC über keine vorgegebenen
Popups zu verfügen scheint (die Popups-Sektion
ist dann leer) , dann liegt das vielleicht daran, daß
die mitgelieferten .ini-Dateien von derInstallationsdatei 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 läßt sich
aber leicht durch den Menüpunkt 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, können 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 könnt.
Lest auch unbedingt die Erklärung der Popups in
der Hilfedatei und seht Euch die vorgegebenen
Popups an. Je mehr Ihr herumprobiert, desto
besser werdet Ihr es begreifen.
Beispiel: /joinNehmen wir an, es gibt einen Channel, den Ihr
häufig betretet – #test.
Anstatt nun immer /join #test zu tippen, wäre 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‘
ausgewählt 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:/awayDies ist ein Beispiel von Popups für „away“ und
„back“. Man gibt den Grund für die Abwesenheit
in eine Parameterabfragebox ein, und sendet Ihn
an alle Channels, in denen Ihr gerade seit. (/ame
führt ein /me in allen Channels aus, in denen man
sich gerade befindet.)
Abwesend….:/ame
ist
mal gerade weg
($?=“Grund eingeben“) | /away Bitte später
versuchen ($1) !!
Zurück:/ame ist zurück | /away
Untermenüs
Wenn man ein paar solcher Popups einfügen
würde, dann wäre der Schirm allerdings bei
jedem Klick auf die rechte Maustaste völlig
überfüllt. Man kann die Popups also in
Untermenü-Hierarchien organisieren. Fügt mal
alle nachstehenden Popups ein:
Kommentare
.Hallo:/say Hallo Leute.Tschüs:/say Tschüs 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
gewünschten Reihenfolge einfügt, und 2) ein „.“
(Punkt) voranstellt.
Wenn Ihr jetzt rechts klickt, dann sehr Ihr den
Menüpunkt „Kommentare“. Wenn Ihr diesen
anwählt, dann tauchen „Hallo“, „Tschüs“ und
„Umarmen“ auf. Klickt nun auf einen der
Unterpunkte, um die oben festgelegte Aktion
auszuführen.
Wenn man es richtig kompliziert machen will,
dann kann man diese die Untermenüs 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 für 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 zählen!!
…und so weiter! Man muß sie nur mit Hilfe der
Punkte vernünftig sortieren. (Wenn durch die
Darstellung oben der Groschen noch nicht so
recht fällt, dann probiert es unbedingt aus. Fügt
den oberen Abschnitt unter Tools/Popups. Es
wird sofort klar, wenn man sieht, wie es arbeitet).
Alle Menüpunkte der Popups können übrigens
auch auf eine Funktionstaste gelegt werden. Das
ist ein handlicher Ersatz für häufig verwendete
Popus… (überprüft die Korrektheit der Syntax und
setzt die Belegung der Funktionstasten in dieAlias-Sektion. Lest mehr zu diesem Thema in
Abschnitt 7.1)
In der Tools/Popups-Sektion findet Ihr unter
„View“ auch den Punkt Menubar, mit dem man
einen Punkt in der Menüleiste frei gestalten kann.
Probiert es auch und fügt die folgenden Zeilen
hinzu:
Abwesend
.Abwesend…:/ame ist abwesend ($?=“Grund
eingeben“) | /away abwesend seit $time ($+ $!
$+) | /timer22 5 600 /describe # ist abwesend ($!)
.Zurück:/ame ist zurück…. jetzt geht des Spaß los!
| /away | /timer22 off
Schläge
.klatsch:/describe # klatsch $1 eine gefrorene
Forelle durchs Gesicht
.Baseball:/describe
#
zieht
$1
Baseballschläger über den Schädel!
seinen7.3 Die Remote Sektion
Die Remote-Sektion befindet sich unter
Tools/Remote… und ist zweifelsohne der am
weitesten entwickelte Teil von mIRC. Mit den
Fähigkeiten 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 Gesprächen, benutzerdefinierte
Antwortenauf
CTCP-Anfragen,
bequem zu konfigurierende Benutzer-Level für Freunde und
programmierbare Reaktionen auf fast alle Ereignisse die
auf dem IRC auftreten können… ferner können für 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 erklärt worden sind. Wenn diese Abschnitte –
und ganz wichtig, die Erläuterung 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 zurück. 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. Natürlich nur
entsprechend der Parameter, die Ihr einbaut! Viele hierbeschriebene Funktionen kann man nicht einfach selber
testen, indem man den erforderlichen Text einfach selber
eingibt. Man braucht die Unterstützung 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.
Programmabläufe für bestimmte User erstellt. Jedem
User in der Users List können 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
können
die
Programmabläufe 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
Wählt den Punkt Tools/Remote um den mIRC-
Editor zu öffnen. Überprüft, ob „Users“ als Box
aktiv ist. Hier können nun unterschiedliche
Userlevels festgelegt werden. Ihr könnt Levels für
Eure Freunde und auch für Eure Feinde einstellen
und eine sogenannte „Shitlist“ erstellen (User, die
in einer Shitlist erfaßt sind, werden gekickt,
sobald sie einen Channel betreten).
Wozu ist das alles notwendig? Nehmen wir an, Ihr habt
ein Remotescript verfasst, daß jemanden für die
Benutzung des Wortes „Nonsens“ aus dem Channel kickt
(denkt Euch einfach irgendein Schimpfwort stattdessen=) Wir erklären später 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 für
die Benutzung von „Nonsens“ kicken. Häufiger gesehene
Leute sollen nur gewarnt werden und von den engen
Freunden wird es ignoriert. Und völlig unbekannte User
sollen direkt gekickt und gebant (ausgeschlossen)
werden.
Um unterschiedliche Antworten für verschiedene User zu
ermöglichen, muß eine User List aufgesetzt werden.
Jedem User wird ein Nickname und/oder eine Adresse,
so wie das Userlevel zugeordnet, daß Ihr ihm geben
möchtet.
Hier ist ein Beispiel für eine gültige 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 für das Userlevel sind völlig Euch überlassen.
Wie Ihr in den nächsten zwei Abschnitten seht, könnt Ihr
entscheiden, was ein bestimmter User mit einem
speziellen Level tun kann oder nicht. Standardmäßig
ordnet mIRC jedem, der in der User List noch nicht
erfaßt ist, das Level 1 zu, Ihr könnt aber auch dieses unter
Tools/Remote/Options/“Default User Level“ ändern.
Wenn Ihr verschiedenen User unterschiedliche Levels
zugeordnet habt, dann sind natürlich auch darauf
zugeschnittene Reaktionen erforderlich, die denentsprechenden User erlauben, auf sein Level
zuzugreifen. Das wird aber später noch erläutert.
Wie Ihr sehen könnt, sind sowohl Nicknamen als auch
Adressen in der User List zugelassen. Auch Wildcards (*
Sternchen) sind erlaubt. In einigen Fällen möchtet Ihr
User vielleicht per Nickname und Adresse spezifizieren.
Diese Fälle (mit den OP, DEOP, SERVEROP,… und
NOTIFY Events) werden in Abschnitt 7.3.3 erklärt.
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) fügt den spezifizierten
Nicknamen oder Adresse in die User List
ein, und zwar mit dem festgelegten Level.
Die Gültigkeit der Adresse wird nicht
überprüft, d.h. so exakt aus den
Befehlsparametern übernommen.
/guser /guser {Level} {Nick} {Typ}
„Guser“ (Get User) fügt den spezifizierten Nicknamen
mit Adresse in die User List ein. Um das zu
bewerkstelligen, führt mIRC einen /whois auf den
angegebenen Nicknamen aus und setzt die empfangene
Adresse in die User List. Das bedeutet natürlich auch,
daß der hinzuzufügende 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 für
User notwendig, deren Adresse sich jedesmal durch die
zufällige IP-Adressenvergabe bei der Modemeinwahlergibt). Diese Typen sind dieselben, die auch beim /ban-
Befehl verwendet werden. Die möglichen 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 müßt 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
gelöscht wird. Für 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 gelöscht.
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 standartmäßig
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.nlTyp 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
verknüpfen:
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
führen einen /whois auf die entsprechende Person aus.
Die Interne Adressenliste (IAL) speichert diese Information im Format
nick!User@Adresse.ToplevelDomain für alle User, die
mit Euch auf den selben Channels sind. Wenn nun ein
/ban, /guser, /ruser, /ignore, /dns oder /finger ausgeführt
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
Wählt in mIRC den Menüpunkt Tools/Remote um
den mIRC-Editor zu öffnen. Hier kann mandefinieren, wie mIRC auf die „Umwelt“ des IRC
reagiert. Zwei getrennte Gruppen von Reaktionen
sind möglich: Reaktionen auf CTCP-Befehle und
auf Ereignisses (Events). In diesem Abschnitt
besprechen wir die CTCP-Befehle.
Einführung – Remote Commands reagieren auf eine sehr
speziefische Befehlsform, den CTCP-Befehl. CTCP ist
eine Abkürzung und steht für „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 wünscht.
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
würde 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 Umständen sendet mIRC einen Standart
Ping Reply (Antwort) [ctcp seinnick pong]. Aber mit den
Remote-CTCPs könnt Ihr die Standartantwort des
Programms auf einen Ping verändern. Es kann fast alles
tun, was Ihr wollt, wenn es einen Ping erhält. Es kann
standartmäßig reagieren, oder auch nicht. Es liegt an
euch. Es gibt EINE aus Ausnahme: Ihr könnt NICHT
euren mIRC-Version-Reply unterbinden… Wir lieben
Werbung, wißt ihr…Ihr könnt auch neue CTCP-Befehle und Antworten
darauf entwerfen. So funktionieren zum Beispiel Features
wie Dateien-Angebot (XDCC, LIST und SEND).
Zunächst aber zurück 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, wählt die Datei aus, und fügt die
Zeilen hinzu und ändert sie. Wenn nicht, dann geht unter
den Menüpunkt ‚File‘ und wählt ‚New‘ um eine neue
Datei zu erstellen. Versichert Euch, daß unter ‚Listening‘
der Punkt ctcp ausgewählt 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 könnt das durch
/ctcp {euernick} ping testen. Wenn es nicht funktioniert,
dann überprüft, ob mIRC gerade auf CTCP-Befehle
reagiert. Aktiviert die Funktion mit /remote on und/oder
/ctcps on.
Wenn Ihr wollt, daß mIRC die Standardantwort
unterdrückt, dann könnt Ihr die weitere Bearbeitung mit
dem Befehl /halt unterdrücken. 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
Fällen immer aus drei Abschnitten, die von einander mit
Doppelpunkten abgegrenzt sind. Die generelle Syntax
sieht so aus:
ctcp
{Befehls-Level}:{CTCP-Befehl}:{Ausgelöste(r)
Befehl(e) mit Parameter(n)}
Wir schauen uns die Anschnitte einmal einzeln an:
ctcp Dies sagt mIRC, daß die
Definition für eine Reaktion auf
einen CTCP-Befehl folgt.
{Befehls-
Level} Dieser Befehl wird Usern
antworten,
deren
Userlevel
gleich hoch ist, wie das
Befehlslevel oder größer, es sei
denn für Ihr (größeres) Level ist
ein anderer Befehl definiert.
{CTCP-
Befehl} Der CTCP-Befehl kann heißen
wie Ihr wollt. Es kann ein
Standart-CTCP-Befehl wie Ping
oder Version sein, aber auch eine
Eigenkreation.
{Ausgelöste(r) Hier werden die auszulösenden
Befehl(e) mit Befehle definiert. Das Format
Parameter(n)} und die Verwendung von
Mehrzeilenbefehlen funktioniert
genauso wie in den Aliases und
Popups. Die Strings werden in
dieser Sektion automatisch von
mIRC belegt. Ihr müßt 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 NICHTeingesetzten 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
können auch noch Aliases, Events und Antworten auf
numerische Server-Ereignisse (Raw Definitions)
festgelegt werden. Aber dazu später.
1 ist das Befehlslevel. Alle User mit dem Userlevel 1
oder höher können diesen Befehl auslösen.
Ping ist der CTCP-Befehl, auf den der Remote-Befehl
reagieren wird.
Der ausgelöste Befehl ist eine /notice, die an $nick
übermittelt wird und die gesamte Zeile „Hmmmm….
PANG PANG PANG!!“ enthält. $nick ist der Identifier,
der den Nicknamen der Person enthält, 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 ausgeführt, sobald ein
CTCP Ping empfangen wird.
Unterschiedliche Reaktionen auf Leute mit
verschiedenen Userlevels
Ihr könnt die Reaktionen auf CTCP-Befehle sehr fein
abstufen, indem Ihr ihnen verschiedene Levels zuordnet.
mIRC antwortet immer mit dem passenden Befehl, deram dichtesten an die Höhe 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,
dafür 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 höchsten 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 höherem Level bekommen
alle die Level 6-Antwort.
Diese Einstufung funktioniert bei allen Remote
Commands und Events (Befehlen und Ereignissen)…
Überprüft, ob Ihr diesen Abschnitt verstanden habt. Sonst
lest Ihn nocheinmal durch??
Spezielle Identifiers für Remote/Commands
$nick, $address, $site, $level, etc. sind alles Identifiers,
die speziell für die Verwendung in der Remote-Sektionerstellt wurden. Alle üblichen Strings (Abs. 7.1.2)
können aber auch verwendet werden. Ihr könnt sie
überall in den Befehlszeilen einsetzen, die durch CTCP-
Befehle ausgelöst werden.
$nick
Der Nickname der Person, die den
CTCP-Befehl gesendet, oder ein
spezielles Ereignis (Event) ausgelöst
hat.
Die volle Adresse der Person, die den
CTCP-Befehl gesendet, oder ein
$address
spezielles Ereignis (Event) ausgelöst
hat.
$site Erwidert die Adresse des Users, der das
Event ausgelöst hat im Format
adresse.de
$wildsite Erwidert die Adresse des Auslösers im
Format *!*@host.domain
$level Das Userlevel der Person, die den
CTCP-Befehl gesendet, oder ein
spezielles Ereignis (Event) ausgelöst
hat.
$chan Der Channel, in
ausgelöst wurde
dem
ein Event
$target Das Ziel des Events
Anmerkung: Der Identifier $chan ist normalerweise in
den Remote Commands nicht definiert… $chan enthält
den Namen des Channels, auf dem ein bestimmtes
Ereignis ausgelöst 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 enthält:
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}“ enthält.
(Anmerkung d. Übersetzers: Vergeßt 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 Flüchtigkeit
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 fällt. Wenn
nötig, lest die vorhergehenden Passagen noch einmal.
Versucht aber noch nicht, Eure eigenen Remote
Commands zu schreiben oder zur nächsten Passage
weiterzublättern, 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
wäre 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 zurückübermitteln. Die gesamte Zeile nach
dem CTCP-Befehlsnamen befindet sich in dem String
$2-.
Ein an Euch gerichteter Befehl ‚/ctcp {euernick} Bla
Fasel Schwätz Sabbel‘ läßt mIRC den folgenden Befehl
ausführen: ‚/notice Freund Bla Fasel Schwätz Sabbel‘.
Mehrzeilenbefehle
Ein empfangener CTCP-Befehl kann durchaus auch
mehrere Befehle auslösen…
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?
In der Tat werden zwei Aktionen durch den CTCP-
OPMICH-Befehl ausgelöst.
erstens: /mode #Channelname +o Freund
zweitens: /notice Freund Du hast jetzt Operator Status
auf Channel #Channelname
Noch ein CTCP-Befehl, der einen Mehrzeilenbefehl
auslöst:
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 mIRCerst den Channel verlassen, und dem Sender des Befehls
dann eine Bestätigung senden.
$2
enthält den zu verlassenden Channel
ist der Nickname der Person, die angefragt
hat
Andere Beispiele
ctcp 1:ping:/notice $nick Bitte sende mir keine Pings!
…würde mit ‚/notice {nick} Bitte sende mir keine Pings!‘
antworten.
ctcp 5:time:/notice $nick Zeit sich eine Uhr zu kaufen!
…würde 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!!
…würde antworten: 1) „/notice $nick Ich bin der, der ich
sage“, 2) „/notice $nick Und ich sage, ich bin DU!!“
$nick
7.3.3 Remote Scripts – Ereignisse (Events)
Wählt den Punkt Tools/Remote um den mIRC-
Editor zu öffnen, dann aktiviert unter ‚View‘ die
Datei events.ini. Wenn kein Event-Script
verfügbar ist, dann ladet die mitgelieferte Script-
Datei oder erstellt eine neue mit File/New. Eine
neu angelegte Datei wird standardmäßig
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 können. Das
klingt vielleicht gewaltig, aber keine Sorge. Wie schon
erklärt, bauen die Lektionen auf einander auf. Wenn Ihr
die Remote Commands begriffen habt, dann werden dieRemote 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 Abkürzung für General
Protection Fault. In der deutschen Windows-Version
wohl bekannt als Adressenschutzverletzung). Wenn also
plötzlich Stabilitätsprobleme auftreten wo vorher keine
waren, dann schaut mal zuerst hier nach.
Die Syntax für 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 verfügbar. 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 Kürze. 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 für 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 ausgelöst, 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
{Event-Level}:{Event}:{wo
ausgelöst}:{Ausgelöste(r) Befehl(e) mit Parameter(n)}
on
{Event-
Level}
Dieses Präfix signalisiert mIRC, daß ein
Event folgen wird
Dieses Event reagiert nur auf Ereignisse der
User mit diesem Level oder höherem, wenn
für Ihr Level nicht ein eigenes Event definiert
wurde.wurde.
{Event}
Der Name des Events, auf das reagiert
werden soll, wie z.B. JOIN, OP, etc…
{Wo
#, #Name. Wo soll auf das Erscheinen dieses
ausgelöst} Events geachtet werden? Entweder # für
jeden Channel, oder #Name für einen
bestimmten Channel (wie #test). Man kann
das Event auch so definieren, daß es auf
mehreren bestimmten Channels ausgelöst
wird:
on
1:TEXT:hallo*:#chat,#help,#mirc:/msg
$nick Hallo auch!
Ausnahme: Dies gilt nicht für NICK und QUIT!
…und die großen Ausnahmen sind die Events TEXT,
ACTION, NOTICE, SNOTICE, CHAT und SERV,
welche so funktionieren:
on Dieses Präfix signalisiert mIRC, daß ein Event folgen
wird
{Event-Level}:{Event}:{Welcher
Text}:{wo
ausgelöst}:{Ausgelöste(r) Befehl(e) mit Parameter(n)}
{Event-Level}siehe oben
{Event-Level} siehe oben
{Event} eine der oben aufgeführten Ausnahmen
Welches Wort, oder welcher Text soll
{Welcher Text} das Event auslösen? Wie z.B. „hallo“
im Beispiel oben
{wo ausgelöst}
#, #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 TEXTsoll. 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.
{Ausgelöste(r)
Befehl(e)
mit siehe oben
Parameter(n)}
Die verfügbaren 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
(natürlich nur, wenn man auf #test auch Op ist)
und er erhält 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 wünschte, ich könnte 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 länger unterstützt (weil nicht
mehr benötigt)!
Wenn ein User einen Satz mit diesem
wort* Wort startet, dann wird das Event
ausgelöst.
Wenn ein User einen Satz mit diesem
*wort Wort beendet, dann wird das Event
ausgelöst.
*wort* Wenn ein User dieses Wort irgendwo im
Satz benutzt, dann wird das Event
ausgelöst.Satz benutzt, dann wird das Event
ausgelöst.
Eine exakte Übereinstimmung wird
benötigt, um das Event auszulösen.
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
Gesprächen 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
wortReagiert, wenn ein definierter Text in einem DCC
Server-Fenster gefunden wird.
Die beiden letzten Events können verwendet werden, um
auf bestimmten Text in DCC Chat- und Fileserver-
Fenstern zu achten. Sie arbeiten fast wie TEXT.
Natürlich fehlt der Teil {Wo ausgelöst}. Hier muß eine
wichtige Anmerkung gemacht werden: für CHAT und
SERV können keine verschiedenen Event-Levels
festgelegt werden! Sie können 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 für CHATs und SERVs einfach Level
1.
Beispiele:
on 1:CHAT:blabla:/msg $me $nick hat zu dir “ $1- „in
einem DCC Chat gesagt
on 1:SERV:get mirc:/echo server 6 $nick wird jetzt
mIRC gesendet
In einem SERV Event kann man auch den speziellen
Identifier $cd verwenden. CD steht für 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
verläßt.
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 verläßt.
Beispiel:
on 90:PART:#:/msg $chan Yuppieeehh!!! $nick ist
weg!!
Sendet eine Nachricht an den Channel, wenn ihn ein
Level 90 User verläßt.
CONNECT Event
Das CONNECT Event tut im Prinzip das selbe, wie die
Sektion „Perform“ unter File/Options. Es wird immer
dann ausgelöst, wenn sich mIRC mit einem IRC-Server
verbunden hat, und die MOTD fertig gescrollt ist.
on 1:CONNECT:/echo Erfolgreich mit $server
verbunden!
DISCONNECT EventWird ausgelöst, wenn mIRC die Verbindung zum IRC-
Server verliert.
on 1:DISCONNECT:/echo Huch! Verbindung verloren!
KICK Event
Wird ausgelöst, 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 getätigt hat.
Anschließend 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 für 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 ausgelöst, 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 ihngeopt hat} Operator Status bekommen.“
geschickt.
Anmerkung: $opnick ist in diesem Event der
Nickname desjenigen, der Operator Status
bekommen hat.
DEOP Event
Wird ausgelöst, wenn ein User Operator Status entzogen
wird (deopt wird).
Anmerkung: Dieses Event erfordert die Aufführung 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 Erklärung 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), müssen 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 natürlich, wenn
das Zugangslevel für dieses Event auf 1 gesetztwird, d.h. alle potentiellen User betroffen sind. In
diesem Fall müssen die User nicht aufgeführt
sein. Wenn Ihr Leuten ein Userlevel zuordnen
wollt, mit dem Ihr auch die Events OP, DEOP,
SERVEROP und NOTIFY ansprechen könnt,
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 Aufführung eines Users in der
Liste sinnvoll machen und zwar einmal nur per
Nickname und einmal per voller Adresse. Dies
verhindert, daß jeder User der zufällig (oder auch
absichtlich) den Nick freundB verwendet, vollen
Zugriff auf die höheren Event- und Command-
Level erhält 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 enthält die gesamte Adresse, die
auf die Ban-Liste des Channels gesetzt wird. Toll nicht?
Der $bnick-Identifier enthält den Nicknamen der Person,
die gebant wird – er ist allerdings nicht immer definiert,
da für einen Channel-Ban nicht notwendigerweise ein
Nick erforderlich ist (z.B. bei einem Siteban:
*!*@modem*.adresse.de).
UNBAN
funktioniert
genauso.
INVITE Event
Wird ausgelöst, wenn man in einen Channel eingeladen
wird.
Beispiel:on 5:INVITE:#test:/join $chan | /describe $chan dankt
Euch für die Einladung!
Wenn Ihr nach #test eingeladen werdet,
dann betritt mIRC den Channel und sendet
eine Aktion mit dem Inhalt „{euernick}
dankt Euch für die Einladung!“.
NICK Event
Wird ausgelöst, 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 enthält den alten Nicknamen,
$newnick (na was wohl) den neuen.
Anmerkung: Der Abschnitt {wo ausgelöst} fehlt im
Event NICK.
QUIT Event
Wird ausgelöst, wenn ein User den IRC verläßt.
Beispiel:
on 2:QUIT:/notice $me Partytime!!! $nick hat sich
gerade verpieselt!
Wann immer ein Level 2 User den IRC
verläßt, schickt mIRC eine Notiz mit
Inhalt „Partytime!!! {Nickname} hat sich
gerade verpieselt!“ an sich selbst.
Anmerkung: Der Abschnitt {wo ausgelöst} fehlt
im Event QUIT.
TOPIC Event
Wird ausgelöst, wenn das Topic in einem Channel
geändert wird.Beispiel:
on 1:TOPIC:#:/msg $chan Toll! Ich liebe das neue
Topic!
Wann immer das Topic in einem Channel
geändert wird, wird die Nachricht “ Toll!
Ich liebe das neue Topic!“ in den Channel
geschickt.
SERVEROP Event
Wird ausgelöst, wenn der IRC-Server einem User
Operator Status zurückgibt.
Anmerkung: Für das SERVEROP-Event muß der User
per Nickname in der Remote-Userliste aufgeführt 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 sämtliche
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
bösen 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 zurückgeben. Alles eine Frage der
Sicherheit =)
NOTIFY Event
UNOTIFY Event
Wird ausgelöst, wenn ein in der Notify-List aufgeführter
Nickname den IRC betritt.
Man kann dieses Event z.B. dazu verwenden, einen
/whois auszuführen, sobald ein Nick gesichtet wird, um
zu überprüfen, ob es auch tatsächlich der korrekte User
ist. Denkt aber daran, daß der User per Nickname in der
Remote-Userlist aufgeführt 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 müßt den Nicknamen in
die Liste unter File/Options/Notify List einfügen und
sobald mIRC die Person auf dem IRC sichtet, wird das
Event ausgelöst. Das UNOTIFY Event wird ausgelöst,
sobald mIRC registriert, daß der User den IRC verlassen
hat, oder seinen Nicknamen geändert hat.
Beispiele:
on 1:NOTIFY:/notice $nick Wenn du tatsächlich $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 geändert! Es werden keine
Channelmodi mehr vorgeschrieben. $1- wird nun mit den
Änderungen an den Modi belegt.
Syntax und Beispiel:
on1!:MODE:#name:/echo 6 Modusänderung von $nick
auf Channel $chan!
(Schützt Euch aber vor Endlosschleifen, wenn User
unzulässige Modi erzwingen (Status-Flood))
USERMODE Event
Dieses Event wird ausgelöst, 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 Modusänderung +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 zurück!!
SNOTICE Event
Dieses Event ist dazu gedacht, um auf Notizen des
Servers zu reagieren. Server informieren einen über alles
mögliche, 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 für
IRCOps und Serverbetreuer gedacht. Mit diesem Event
kann man die Notizen des Server aus den anderen
herausfiltern und eine Reaktion oder das Anzeigen desTextes 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 Dateiempfänger 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 ausgelöst, sobald
die Datei erfolgreich auf die Festplatte geschrieben
wurde. Es kann einerseits dazu verwendet werden, um
sich selbst oder dem Dateiempfänger 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 $filenameon
1:FILERCVD:*.mid,*.voc:/run
wplany.exe $filename
on 1:FILERCVD:*.*:/notice $nick Danke
für die Datei!
SENDFAIL Event
GETFAIL Event
Dieses Event reagiert wenn ein DCC-Transfer aufgrund
einer verlorenen Verbindung oder einem Zeitüberlauf
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 ausgelöst, 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“ gedrückt 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 ausgelöst, wenn mIRC startet
und Scripts geladen werden.
START Event wird ausgelöst, sobald die Scripts
geladen wurden und betriebsbereit sind
on 1:LOAD:/echo Script erfolgreich
geladen!
on 1:START:/echo Script erfolgreich
gestartet!
dem LOAD Event kann man mIRC
Befehle erteilen, wenn es die Scripts lädt.
Um Initialisierungskommandos zu geben,
die aktiv werden, wenn mIRC das erste
mal gestartet wird (und die Scripts
automatisch lädt) benutzt man das START
Event. Wenn ein Script im Remote-
Dialogfeld geladen wird, dann werden die
Auto-Run-Befehle
allerdings
erst
ausgeführt, sobald das Feld geschlossen
wird.
Spezielle Identifiers für Remote-Events
$nick $address, $site etc. sind alles Identifiers, die
speziell für die Verwendung in den Remotes erstellt
wurden. Man kann sie überall da verwenden, wo
bestimmte Reaktionen auf Remote-Ereignisse erwünscht
sind.
$nick
Der Nickname des Users, der ein
Remote-Event ausgelöst oder einen
Remote-Befehl gesendet hat
$address Die volle Adresse des Users, der den
Befehl
gesendet
hat
(nick!account@adresse.de)Befehl
gesendet
(nick!account@adresse.de)
$site
hat
Die Adresse des Users, der das Event
ausgelöst hat im Format adresse.de
Die Adresse des Users, der das Event
$wildsite ausgelöst
hat
im
Format
*!*@adresse.de
$level Das Remote-Level des Users
$chan Der Channel, in
ausgelöst wurde
$target Das Ziel des Events
dem ein Event
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 für die Events)
Dieses Flag bewirkt, daß ein Event nicht reagiert, wenn
Ihr selber der Auslöser dafür seid. mIRC reagiert dann
auf kein Event, daß durch einen Client mit Eurer Adresse
verursacht wird. (Ein ähnlicher Flag heißt „me“. Er
verhindert ebenfalls die Ausführung von bestimmten
Events, die Ihr selber auslöst, allerdings wird die Adresse
nicht berücksichtigt. Wenn Ihr also noch einen zweitenClient mit der selben Adresse verwendet, so kann dieser
das ‚geflaggte‘ Event trotzdem auslösen.)
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 für die Events)
Dieses Flag verhindert, daß irgend etwas passiert. Es ist
dazu gedacht, um User mit höheren Levels davor zu
bewahren, von Aktionen genervt zu werden, die für
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 höher 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 gegrüßt, Level 1 und 2
User nur auf den Channels #test1 und #test2.
Das Flag +
Dieses Flag macht ein Event nur für die User verfügbar,
die das exakt übereinstimmende Userlevel haben. Höhere
(und natürlich niedrigere) Userlevel haben dann keinen
Zugriff.
Beispiel:
on 1:JOIN:#test:/ctcp $nick VERSIONon
+3:JOIN:#test:/notice
$nick
Willkommen im Channel $chan !
Alle User außer 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 können 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 ausgeführt wird, wenn
man Operator Status in dem Channel hat, in dem das
Event ausgelöst 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 eingeführt um sicherzustellen, daß nur
eine Person mit exakt der selben Adresse ein Event
auslösen kann. Damit ist hauptsächlich eine zweite
Version von mIRC auf dem selben PC gemeint. Denkt
aber daran, daß dieses Flag eigentlich unnötig ist, wenn
man sie Userlevel in der Remote-Userliste sorgfältig
zugeordnet hat.
Vergleichende FlagsIn mIRC Version 3.7 wurde eine neue Sorte Flags für die
Events vorgestellt. Mit diesen Flags kann man mIRC
berücksichtigen lassen, welches Userlevel ein Event
auslöst und auf welches Userlevel es einen Effekt hat.
Diese Flags können 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 verfügbaren Flags sind >, < und =. Aber man
kann sie auch zu mathematischen Kombinationen
zusammenfügen. Das ergibt dann 6 verschiedene
Möglichkeiten: <, >, <=, >=, <> und =.
Diese Flags bewirken, daß das Event nur ausgelöst wird,
wenn erstens das Level auf das des geopten, deopten
oder gekickten Users paßt, und zweitens das Level des
Auslösers
die
definierte
Bedingung
{Level-
Aktivator}[Flag](Mathematischer Ausdruck)]{Level des
Events] erfüllt.
Hmm… Ihr seht aus, als bräuchtet 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
ausgelöst
on >=2:DEOP:#test:/msg $chan Das Event >= wurde
ausgelöst
Der Aktivator hat Userlevel 1:
***Aktivator sets mode: -o Freund
<WACHE>Das Event < wurde ausgelöst.
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 ausgelöst.Der Aktivator hat Userlevel 2
***Aktivator sets mode: -o Freund
<WACHE>Das Event >= wurde ausgelöst
Euer Freund hat Userlevel 2, der Aktivator auch Level 2,
2<2 trifft nicht zu, 2>=2 ist trifft zu (zwei ist größer oder
gleich zwei), also wird das zweite Level 2-DEOP-Event
ausgelöst.
Der Aktivator hat Userlevel 3
***Aktivator sets mode: -o Freund
<WACHE>Das Event >= wurde ausgelöst
Euer Freund hat Userlevel 2, der Aktivator Level 3, 3<2
trifft nicht zu, 3>=2 ist trifft zu (drei ist größer oder
gleich zwei), also wird das zweite Level 2-DEOP-Event
ausgelöst.
Wie Ihr seht ist es völlig logisch, wenn man es einmal die
Systematik begriffen hat. Lest einfach weiter, bis der
Groschen fällt…
Mehr Beispiele:
on <2:DEOP:#test:/msg $chan Das Event
< wurde ausgelöst
on >2:DEOP:#test:/msg $chan Das Event
> wurde ausgelöst
Der Aktivator hat Level 1
***Aktivator sets mode: -o Freund
<WACHE> Das Event < wurde ausgelöst
Der Aktivator hat Level 2
***Aktivator sets mode: -o Freund
Der Aktivator hat Level 3
***Aktivator sets mode: -o Freund
<WACHE> Das Event > wurde ausgelöst
on =2:DEOP:#test:/msg $chan Das Event
= wurde ausgelöst
Der Aktivator hat Level 1***Aktivator sets mode: -o Freund
Der Aktivator hat Level 2
***Aktivator sets mode: -o Freund
<WACHE> Das Event = wurde ausgelöst
Der Aktivator hat Level 3
***Aktivator sets mode: -o Freund
7.3.5 Variablen
Wählt den Menüpunkt Tools/Remote und schaut
in die Sektion „Variables„…
In diesem Teil der Remotes könnt Ihr Eure
eigenen Variablen definieren. Variablen können
Zahlen, Worte, aber auch ganze Textzeilen
enthalten. Wenn Variablen Zahlen enthalten, dann
können sie mathematisch manipuliert werden, um
ihren Wert zu erhöhen oder zu vermindern. Man
kann sie untereinander aber auch mit gegebenen
Zahlen addieren bzw. subtrahieren. Variablen
beginnen immer mit einem % und können
beliebig lange Namen haben. Die Werte der
Variablen werden nach jeder Sitzung in einer
Datei im mIRC-Verzeichnis gespeichert.
Es stehen einige Befehle zur Verfügung, um Variablen zu
erstellen, bzw. zu warten: (s=show, Anzeige eines
Berichts der Operation im Status-Fenster)
[-s] <%var> [Wert]Erstellt eine Variable
/unset
[-s]
<%var>
[%var2]
…
[%varN]Löscht eine Variable
/unsetall Löscht alle Variablen
[-s] <%var> [Wert]Erhöht den Wert einer
Variable um [Wert] – eine Zahle oder eine
andere Variable[-s] <%var> [Wert]Vermindert den Wert
einer Variable um [Wert] – eine Zahle
oder eine andere Variable
Die Befehle /set, /unset, /inc und /dec sind
standardmäßig so eingestellt, daß sie keine
Bestätigung anzeigen, wenn man sie ausführt.
Wenn man ein Info angezeigt haben möchten,
dann kann man das Parameter -s anhängen: /set -s
%x 1
Mit Hilfe dieser Befehle kann man jede Menge
praktischer Remotes und Aliases erstellen.
Hier eine Reihe von Beispielen:
Remote Commands (siehe unten):
ctcp
2:xdcc
send
#1:/dcc
send
$nick
c:\temp\serve\mirc50s.exe | /inc %mirc16 1
ctcp
2:xdcc
send
#2:/dcc
send
$nick
c:\temp\serve\mirc50t.exe | /inc %mirc32 1
ctcp
2:xdcc
send
#3:/dcc
send
$nick
c:\temp\serve\mircfq31.zip | /inc %faq 1
ctcp 1:stats:/notice $nick Sending stats: mIRC= %mirc
and FAQ= %faq
Remote Events (siehe unten):
on 2:TEXT:xdcc send #1*:?:/dcc send $nick
c:\temp\serve\mirc50s.exe | /inc %mirc16 1
on 2:TEXT:xdcc send #1*:?:/dcc send $nick
c:\temp\serve\mirc50t.exe | /inc %mirc32 1
on 2:TEXT:xdcc send #2*:?:/dcc send $nick
c:\temp\serve\mircfq31.zip | /inc %faq 1
Alias :
/stats /echo 6 mIRC16: %mirc16 mIRC32: %mirc32 und
FAQ: %faq
Mit diesen paar Zeilen habe ich einen kleinen Download-
Counter erstellt. Nicht perfekt, aber er funktioniert.Man kann sogar Aliases wie die nächsten erstellen um
Statistiken anzulegen:
/reset /set %datum $day $datum | /inc %mirc16tot
%mirc16 | /inc %mirc32tot %mirc32 | /inc %faqtot %faq
| /set %mirc16 0 |set %mirc32 0 | /set %faq 0
/stats /echo 6 Stats mIRC16: %mirc16 ( %mirc16tot )
mIRC32: %mirc32 ( %mirc32tot ) und FAQ: %faq (
%faqtot ) (Gestartet am %datum )
Wenn man versucht, den Wert einer nicht existierenden
Variable zu erhöhen oder zu vermindern, dann wird diese
automatisch angelegt, und mit dem Wert versehen, den
Ihr festgelegt habt:
/inc %test1 6 wird %test1 den Wert 6 zuweisen, wenn sie
noch nicht existiert hat
/dec %test2 7 wird %test2 den Wert -7 zuweisen, wenn
sie noch nicht existiert hat
Anmerkung: Versichert Euch, daß jede Variable mit %
beginnt! Es ist eine Maßnahme, um vielen kleinen
Problemen in mIRCs Befehlsbearbeitung vorzubeugen!
Das schränkt allerdings die Benutzung von Variablen ein,
da man immer noch mit solchen Konstruktionen arbeiten
kann:
ctcp 1:upme:/inc % $+ $site 1
ctcp
2:xdcc
send
#1:/dcc
send
$nick
c:\temp\serve\mirc50s.exe | /inc % $+ $nick 1
ctcp
2:xdcc
send
#2:/dcc
send
$nick
c:\temp\serve\mirc50t.exe | /inc % $+ $nick 1
ctcp
2:xdcc
send
#3:/dcc
send
$nick
c:\temp\serve\mircfq31.exe | /inc % $+ $nick 1
ctcp 2:xdcc stats:/notice $nick Du hast seit $datum %nick
Dateien downgeloadet
Man kann auch Gleichheitszeichen verwendet, um
Variablen bestimmte Werte zuzuweisen:
%x = 5 + 1
%x = 5 – %y
%x = %x * 2
%x = %z / $2
%x = %x % 3
7.3.6 Remote Scripts – numerische Server-Mitteilungen
(Raw Processing)
In der Sektion Tools/Remote eröffnet mIRC unter
anderem auch
die Möglichkeit, alle
Server>Client-Vorgänge direkt zu und in jeder
gewünschten Weise zu bearbeiten. Das
funktioniert exakt wie die Remote-Events außer,
daß mIRC auf numerische Ereignisse achtet. Die
numerischen Servermitteilungen findet Ihr in der
IRC
RFC
1459
Raw Scripts verwendet man allerdings am besten
nur, wenn man genau weiß, was man tut, und
wenn es sich überhaupt nicht verhindern läßt!
Falscher Gebrauch von Raw-Scripts kann mIRCs
Funktionen stark beschädigen. Er kann alle in
mIRC festgelegten Standards überbrücken.
Beispiel:
raw 322:*mirc*:/echo 2 $1-
Dies würde alle Zeilen mit dem
enthaltenen Wort mIRC bei einem
Channel-List-Befehl
ausgeben.
(Ein ziemlich ruppiger Test)Um einen kurzes zweizeiliges /whois-Info im
aktiven Fenster anzuzeigen, setzt die folgenden
Zeilen in die Raw-Sektion („Listening“
aktivieren):
raw 311:*:echo 5 $active *** $2-
raw 319:*:echo 5 $active *** $2-
Dies wird die User- und Channel-Zeile anzeigen.
Die Nummern für die anderen Informationen
sind: 312:
Server
313: IRCOp
301: away
317: Idle 318:
Ende
Um ein volles /whois-info zu bekommen,
verwendet das obige Beispiel und setzt die
genannten Zahlen ein.
Um die Numerics der Server herauszufinden, benutzt den
neuen Identifier $numeric, der die Nummer des (Raw)-
Events enthält, daß gerade ausgelöst wurde. In der IRC
RFC1459, Abschnitt 6; Numeric Replies könnt Ihr alle
verwendeten Numerischen Ereignisse, deren Nummer
und Antwortstring nachschauen.
7.4 Fortgeschrittener Umgang mit Befehlen;
Mehrzeilen-Befehle
In mIRC könnt Ihr Befehle verwenden, Aliase,
Popups und Remote-Scripts mit bewertenden
Optionen, Schleifen und anderen trickigen
Dingen erstellen. ich fürchte, dies alles zu
erklären, würde eine zweite FAQ erfordern aberich werde versuchen, eine kleine Einleitung mit
ein paar Beispielen zu geben.
Am besten, man versucht es einfach!
(Anmerkung des Übersetzers: ab dieser Stelle
werde ich die Textinhalte der Beispiele nicht
mehr mitübersetzen. Sie sind so knapp gehalten,
daß Ihr eigentlich auch so drauf kommen könnt.)
mIRC erlaubt Mehrzeilen-Aliase, -Popups und Script-
Definitionen. Dies erlaubt eine schön übersichtliche
Darstellungsweise:
<Definition>{
/Befehl1…
/Befehl2…
/Befehl3…
}
Beispiel:
/away /ame is AWAY ( $+
$?=“Reason“ $+ ) | /away Set away
at $time { $+ $! $+ }
/back /ame is back,.. what did I
miss ? | /away
Diese Aliase könnten allerdings auch so dargestellt
werden:
/away {
/ame is AWAY ( $+ $?=“Reason“ $+ )
/away Set away at $time { $+ $! $+ }
}
/back {
/ame is back,.. what did I miss ?
/away}
Ich geben zu, das ist in diesem Fall nicht besonders
nützlich, aber wenn Ihr anfangt, mit den neuen
Möglichkeiten der vergleichenden und bewertenden
Befehle von mIRC zu arbeiten, dann findet Ihr diese
Darstellungsweise bestimmt besser, oder? Die
geschwungenen Klammern {} um alle Befehle, die die
neuen Möglichkeiten von Konditionalschleifen nutzen,
sind notwendig. Jetzt sind wir auch an dem Punkt, an
dem Ihr das Befehlspräfix / weglassen könnt, wenn ihr
wollt. Es wird nicht mehr benötigt.
Ein /goto Befehl wurde hinzugefügt, der in {}-
Definitionen verwendet werden kann.
Beispiel:
/greet {
/set %x 0
:retry
/inc %x
/goto %x
:2
/echo line2
/halt
:1/echo line1
/goto retry
}
Dieses Alias wird die Zeilen „line1“ und „line2“ auf
eurem Schirm ausgeben.
Testet es, indem Ihr diesen völlig gleichwertigen Befehl
in irgendeine Editbox eingebt:
/set %x 0 | :retry | inc %x | goto %x | :2 | echo line2 | halt
| :1 | echo line1 | goto retry
Das zeigt euch exakt, was passiert 😉 Ihr könnt auch eine
Variable als goto-Name verwenden:
:%jumppoint
Wenn Ihr %jumppoint den Wert 5 zuweist (/set
%jumppoint 5), dann kann diese mit /goto 5 angesteuert
werden. Im oberen Beispiel waren die Jumppoints, also
die Abschnittskennzeichnungen die vom /goto-Befehl
angesteuert wurden mit „1“ und „2“ festgelegt. Probiert
mal die nächsten drei Befehle aus, und schaut, was
passiert:
/set %jump1 1
/set %jump2 2
/set %x 0 | :retry | inc %x | goto
%x | :%jump2 | echo line2 | halt |
:%jump1 | echo line1 | goto retryMit dem /return-Befehl kann man die Bearbeitung eines
Befehls
beenden,
und
zu
einer
etwaigen
Standardprozedur zurückkehren:
on 1:JOIN:#mIRC {
/echo 3 #mirc [Joins $nick]
/return
/echo 3 #mirc Diese Zeile wird
nicht mehr ausgegeben!
}
Daraus ergibt sich dann folgendes:
[Joins henk]
*** henk (monster@ppp.dial.tip.nl) has joined #mIRC
Vorsicht
Achtet darauf, daß Ihr euch nicht in unvollständigen
Klammerdefinitionen verliert (z.B. eine geöffnete
Klammer nicht zu schließen ). mIRC kann sich dann sehr
merkwürdig verhalten!! Arbeitet sorgfältig! Ein
spezieller Check-Button ist in den Editor für die Aliase,
Popups ind Remotes eingebaut worden, der die Anzahl
der geöffneten und geschlossenen Klammern überprüft.
Es ist der Knopf mit dem Bild „{}“ darauf.
/if /elseif /else
Ich denke, Ihr seid jetzt bereit für den richtig
interessanten Stoff! mIRC bietet eine einfache If-Then-
Else-Schleife:
/if v1 Operator v2 { … } | /elseif v1 Operator v2 { … } |
/else { … }Beispiel:
Erstellt dieses Alias und startet es z.B. mit /test 4
/test { set %i 0 | :start | inc %i | if %i > $1 halt | echo
$active %i | goto start }
If-Then-Else-Schleifen
können
auch
ineinandergeschachtelt werden. Ihr solltet entweder {}
oder () Klammern verwenden, um ganz sicherzugehen,
daß die Bedingungen in der richtigen Reihenfolge
bearbeitet werden, obwohl man es eigentlich nicht
*muß*. Die Verwendung von Klammern beschleunigt
auch die Bearbeitung ein bißchen, da mIRC dann genau
weiß, was es bewerten muß.
Hier sind die verfügbaren Vergleiche und Operatoren:
== gleich
!= ungleich
< kleiner als
> größer als
>= größer oder gleich
<= kleiner oder gleich
// ist ein Vielfaches von
\\ ist kein Vielfaches von
isin String v1 ist in String v2 enthalten
iswm String 1 mit Sternchen v1 paßt auf
String v2
ison Nickname v1 ist auf Channel v2
isop Nickname v1 ist Ops auf Channel v2isvo User v1 hat Srecherlaubnis auf Channel
v2
isnum Zahl v1 ist eine Zahl im Bereich von v2
mit dem Format n1-n2 (v2 ist optional)
ischan ob v1 mit Euch auf demselben Channel
ist
isauto ob v1 ein User in Eurer AutoOp-Liste
für Channel v2 ist
isignore ob v1 ein User in Eurer Ignore-liste mit
den Parametern v2 ist (v2 ist optional)
isprotect ob v1 ein User in Eurer Protect-liste für
den Channel v2 ist (v2 ist optional)
isnotify ob v1 ein User in Eurer Notify-Liste ist
Um die oberen Operatoren umzukehren, kann man ein !
Ausrufezeichen voranstellen.
/if $nick !ison #mIRC { /echo
$nick is NOT on #mIRC }
Beispiel:
/massinvite { echo 4 * Mass-
inviting # | set %i $nick(#,0) | :next
| if $nick(#,%i) != $me invite
$nick(#,%i) $1 | dec %i | if %i > 1
goto next | echo 4 * Mass-invite #
done }Verwendet dieses Alias so: „/massinvite #euerchannel“.
Massinvites sind allerdings sehr unhöflich
Beispiel:
/randnopkick { :begin | set
%kicknick
$nick(#,$r(1,$nick(#,0)))
|
if
%kicknick isop # goto begin |
/echo 6 %kicknick }
Wenn Ihr ein Op auf einem Channel seid, dann mögt Ihr
vielleicht diesen Nicht-Ops-Zufallskick. Es kickt eine
Zufallsperson aus Eurem Channel, jedoch nie einen Ops.
(Anmerkung des Übersetzers: Was ich jedoch enorm
unhöflich finde!!). Wenn allerdings nur Opse anwesend
sind, dann habt Ihr ein Problem 😉
Beispiel:
/line { %line = „“ | if $asc($1) <
$asc($2) { set %i $asc($1) | :add |
%line = %line $chr(%i) | inc %i | if
%i <= $asc($2) { goto add } | if
(%line == „“) { halt } | else { echo
# %line | halt } } else echo # sorry
not valid }
Startet dieses Alias z.B. mit „/line d k“ und
schaut, was es tut. Es wird dann folgende Zeile
ausgeben: „d e f g h i j k“. Das ist nicht viel und
obendrein ziemlich nutzlos, aber es demonstriert
doch sehr gut, was man mit If-Then-Else-
Schleifen alles machen kann.
Beispiel:/printnum1 { if $len($1) = 1 { if
$1 !isin 1234567890 { echo 6 $1 is
not a number | goto end } } | elseif
$len($1) = 2 { if $mid(1,1,$1) !isin
1234567890 { echo 6 $mid(1,1,$1)
is not a number | goto end } | elseif
$mid(2,1,$1) !isin 1234567890 {
echo 6 $mid(2,1,$1) is not a
number | goto end } } | elseif
$len($1) > 2 { echo 6 $1 has too
many chars | goto end } | { set %x
1 | :begin | echo 6 %x | if %x >= $1
{ goto end } | else { inc %x | goto
begin } | :end } }
/printnum2 { if $1 !isnum { echo 6 $1 is not a number |
goto end } | elseif $1 !isnum 0-99 { echo 6 $1 is a too
large number | goto end } | { set %x 1 | :begin | echo 6
%x | if %x >= $1 { goto end } | else { inc %x | goto begin
} | :end } }
Diese Aliases tun exakt das selbe. Sie listen beide
die Zahlen bis zu einem bestimmten vom
Benutzer definierten Wert auf. Versucht es mit
„/printnum1 14“. Das zweite Alias zeigt, wie man
mit korrektem Gebrauchvon Identifiers die Länge
eines Alias anorm verkürzen kann.
Leere oder ungültige Identifiers
Variablen oder Identifiers, die keinen Wert enthalten,
erwidern $null, können also auch zu vergleichenden
Definitionen herangezogen werden.
Beispiel:/listops { echo 4 * Listing Ops on
# | set %i 1 | :next | set %nick
$nick(%i,#) | if %nick == $null {
goto done } | if %nick isop # {
echo 3 %nick is an Op on # } | inc
%i | goto next | :done | echo 4 *
End of Ops list }
Dieses Alias wird alle Opse des
Channels aufzählen, in dem es
ausgelöst wurde.
Oder in einem Remote-Event:
on 1:CTCPREPLY:PING* {
if ($2 == $null) echo [ $+ $nick
PING reply]
else {
%pt = $ctime – $2
if (%pt < 0) set %pt 0
echo [ $+ $nick PING reply] %pt
seconds
}
halt
}Andere PopUp-Beispiele
GiveOps { %i = 0 | %nicks = „“ |
:nextnick | inc %i | if ($snick(#,%i)
== $null) { if ($len(%nicks) > 0)
mode # +oooo %nicks | halt } |
%nicks = %nicks $snick(#,%i) | if
(4 // %i) { mode # +oooo %nicks |
%nicks = „“ } | goto nextnick }
Dieses Popup in der Menüleiste wird alle
ausgewählten Nicknamen auf einem Channel
open, in dem Ihr selber Ops seid.
Selkick:/kick
#
$token($r(1,$snick(#,0)),44,$snick
s)
Dieses Popup wird nach dem Zufallsprinzip einen
von mehreren ausgewählten Usern kicken.
RandNopkick:/kick
#
$nopnick(#,$r(1,$nopnick(#,0)))
Kickt zufällig einen Nicht-Ops aus dem Channel,
in dem Ihr Euch befindetRandNopkick { :begin | /set
%kicknick
$nick(#,$r(1,$nick(#,0)))
|
if
%kicknick isop # goto begin | /kick
# %kicknick }
Kickt ebenfalls zufällig einen Nicht-Ops aus dem
Channel, in dem Ihr Euch befindet
Randkick:/kick
$nick(#,$r(1,$nick(#,0)))
#
Machen Kicks nicht Spaß??? Hier noch einer…
Dieser kickt völlig zufällig irgendeinen User –
unter Umständen auch sich selbst!
RandOpkick:/kick
$opnick(#,$r(1,$opnick(#,0)))
#
Kickt zufällig irgendeinen Ops… die können sich
wenigstens wehren!! >=)
Endlosschleifen
Ich sehe es schon kommen. Irgendwann werdet Ihr Euch
mal in einer Endlosschleife verlieren. Ein einfaches
Beispiel dafür ist:
/loop { :start | echo 6 # test loop | goto start }Wenn Euch so etwas passiert, dann rettet Euch die
Tastenkombination Strg+Pause. Sie stoppt die
Bearbeitung.
Benutzerdefinierte Fenster
In mIRC 5.0 wurde ein neues Tool hinzugefügt, mit dem
man selbst Fenster nach eigenem Belieben erstellen kann.
Mit diesem Fenster-Erstellungs/Manipulations-Tool kann
man zum Beispiel ein Fenster schaffen, in dem man
nachschauen kann, was das eigene Script gerade tut. Ein
benutzerdefiniertes Fenster wird mit dem /window-
Befehl erstellt. Es kann mit vielen Parametern festgelegt
werden, was für eine Art Fenster mIRC schafft, wo es
sich befindet und was es enthalten soll.
/window [-abcdelnorsx] @name [x y [w h]] [/Befehl]
[popup.txt] [Schriftart [Größe]]
Einstellungen:
a Fenster aktivieren
b Breite der horizontalen Bildaufleiste für die Listenbox
auf den neuesten Stand bringen
c Fenster schließen (close)
d als Desktop-Fenster öffnen
e Editbox
l Listenbox
n Fenster minimieren
o wenn das Fenster sich auf dem Desktop befindet, dann
immer im Vordergrund behalten
r Fenster wiederherstellen (restore)
s eine sortierte Liste verwenden
x Fenster maximieren@name Name des Fensters (ein @ muß vorangestellt
werden)
x,y,w,h obere Linke Position, Breite und Höhe des
Fensters
popup.txt Datei für die fensterspezifischen Kontextmenüs
/Befehl Standartbefehl
Schriftart/ Schriftart und Größe für das Fenster festlegen.
Standardmäßig
werden
die
Einstellungen
des
Statusfensters genommen.
Größe
Man kann den /window-Befehl auch verwenden, um die
obenstehenden Einstellugen für ein existierendes Fenster
zu manipulieren. Die folgenden Befehle stehen für die
Veränderung von Zeilen zur Verfügung:
/aline [-cN] @name Text Zeile zur Liste hinzufügen
/dline @name N Nte Zeile löschen
/iline [-cN] @name Text Zeile nach der Nten Zeile
einfügen
/rline [-cN] @name Text Nte Zeile ersetzen
/sline @name N Nte Zeile auswählen
-cN definiert die Farbe der Zeile
Man
kann
den
$window(N/@name)-Identifier
verwenden, um auf die folgenden Fenster-Informationen
zuzugreifen:
$window(N).x links
$window(N).y oben
$window(N).w Breite
$window(N).h Höhe
$window(N).state minimiert/maximiert/normal
Um direkt auf Zeilen in benutzerdefinierten Fenstern
zuzugreifen können folgende verwendet werden:
$line(@name,N) Erwidert die Nte Zeilge$sline(@name,N) Erwidert die Nte ausgewählte Zeile
(nur für Listenboxen)
$sline(@name,N).ln Erwidert die Zeilennummer des
ausgewählten Listengegestandes
Dieses neue Tool bietet eine Menge Spielraum für
kreative Zwecke, man muß aber ein bißchen
herumtüfteln, um genau zu verstehen, wie es funktoniert.
Viel Spaß!
Copyrights – Diese FAQ dürfen veröffentlicht und
verteilt werden, solange es kostenlos geschieht. Es ist
nicht erlaubt, in der Datei etwas zu verändern, oder
jegliches Entgeld für die Dienstleistung zu verlangen.
Wenn nur Passagen verwendet werden, muss
jedesmal mein Name und die Quelle der
Informationen ersichtlich sein. Copyright © 1995 –
1997 Tjerk Vonck mirc@dds.nl
Übersetzung aus dem Englischen von Sebastian
Morawietz
cenobyte@gmx.de
http://privat.schlund.de/cenobyte/