|
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
aufgerufen wird. 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 auf Eurem PC
$away Sagt euch, ob Ihr gerade als abwesend
registriert seid, oder nicht
$ticks Die Anzahl der Ticks seit dem Start
des Betriebssystems.
$idle Erwidert die Zeitspanne, die Ihr schon
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 gegenwärtige Tag
$date 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.
$duration (Sekunden)Übersetzt Zahlen
wie 123456 in 1Day 10hrs 17mins 36 secs.
$logdir, $getdir, $wavedir, $script, $mircdir,
$mididir und $scriptdir Erwidert die entsprechenden 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)
$findfile(Verzeichn.,Dateiname,N) Durchsucht
das angegebene Verzeichnis nach der Nten spezifizierten Datei
$ddename Der DDE-Servicename, den mIRC verwendet
$abs(N) Erwidert den absoluten Wert der Zahl
N
$chr(N) Erwidert des Zeichen mit dem ASCII-Wert
N
$asc(C) Erwidert den ASCII-Wert 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 die Position
von Unterstring in String:
/pos /say $pos(Cenobit,bit)
"/pos" würde in diesem Falle 5 ergeben da "bit"
ab fünfter Position beginnt
$replace(String, Unterstring, Austauschtext)
Ersetzt einen Unterstring in einem String:
/ersetz /say $replace(Cenobit,bit,byte)
"/ersetz" ergibt hier Cenobyte, da bit durch byte
ersetzt wird.
(Nur zur 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 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.
$query(N|Nick) Erwidert den Namen des Nten
offenen Privatchat-Fensters
$chat(N) Erwidert den Namen des Nten offenen
DCC-Chat-Fensters
$notify(N) Erwidert den Namen des Nten Nick
aus der Notify-Liste, der gerade online ist
$token(N,C,text) Erwidert das Nte Zeichen
in text getrennt durch C (C ist die Ascii-Nummer eines Zeichens)
$addtok(text,Zeichen,C) 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.
$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.
$maddress(address) Erwidert eine passende
Adresse aus der Remote Userliste.
$level(Adresse) Sucht die passende Adresse
in der Remote Users Liste und erwidert deren Level
$ulevel Erwidert das passende Remote-Userlevel
des 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, .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 .ip, .status (enthält active,
waiting oder inactive)
$fserv(N|Nick).ip, .status, .cd (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.
$group(Name)
Benutzerdefinierte Identifiers. (Abschnitt wurde ursprünglich
von LiOnheart geschrieben)
Wie gerade gesehen gibt es in mIRC eine Vielzahl von eingebauten
Identifiers, die man in den Remotes- und Alias-Sektionen verwenden
kann. Man kann allerdings auch eigene Identifiers erstellen,
und sie so konfigurieren, daß sie im Prinzip alles tun,
was man will. Diese benutzerdefinierten Identifiers werden
in den Aliases erstellt, und sehen fast gleich aus, mit dem
einzigen Unterschied, daß das Ende aus einem /return
X besteht. (Anm. d. Übersetzers: In diesem Text übersetze
ich "returns" mit erwidert.) Der Identifier erwidert
also, was man 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 }
:return
return %perc
}
Die erste Zeile stellt sicher, daß aller erforderlichen
Parameter vorhanden sind. Der Rest ist die Berechnung der
Prozentzahl, wobei ein Teil sicherstellt, daß das ganze
auf 100% aufgeht. Man 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.
|