mIRC Scripting Language (MSL)

Transcrição

mIRC Scripting Language (MSL)
mIRC Scripting Language (MSL)
Markus Henn
mIRC Scripting Language (MSL)
von: Markus Henn
Klasse: IT04b der BBS 1 - Technik - Kaiserslautern
Stand: 2007-03-21
Inhaltsverzeichnis
1
2
3
4
5
6
7
Internet Relay Chat (IRC).............................................................................................................
mIRC............................................................................................................................................
mIRC Scripting Language (MSL)..................................................................................................
Allgemeines..................................................................................................................................
Variablen......................................................................................................................................
Kontrollstrukturen.........................................................................................................................
Aliases (Befehle / Identifier)..........................................................................................................
1
1
2
2
2
3
3
1 Internet Relay Chat (IRC)
Internet Relay Chat, kurz IRC, bezeichnet ein etabliertes, rein textbasiertes Chat-System. Es
ermöglicht Gesprächsrunden mit einer beliebigen Anzahl von Teilnehmern in so genannten
Channels (Gesprächskanäle), aber auch Gespräche zwischen zwei Teilnehmern (Query). Neue
Channel können üblicherweise jederzeit von jedem Teilnehmer frei eröffnet werden, ebenso kann
man gleichzeitig an mehreren Channels teilnehmen.
[...]
IRC ist verglichen mit anderen Chat-Systemen äußerst leistungsfähig und robust. Zur Vermittlung
der Gespräche wird ein Netzwerk aus miteinander verbundenen Servern eingesetzt, so dass die
Belastung auf viele Rechner verteilt und so eine nahezu beliebig große „Chatlandschaft“
ermöglicht wird. 1
Dieses System wurde 1988 von einem finnischen Studenten erstmals im Internet umgesetzt.
2 mIRC
mIRC ist zur Zeit der meist genutzte IRC-Client für Windows-Betriebssysteme. Ein Highlight dieses
Clients ist die integrierte Scripting-Engine, die nicht nur zum Erweitern der Funktionalität des
Programms selbst benutzt werden kann, sondern z. B. auch Funktionen für Sockets, Dateien,
DDE- und DLL-Schnittstellen bereit stellt.
1 http://de.wikipedia.org/wiki/Internet_Relay_Chat
-1/5-
mIRC Scripting Language (MSL)
Markus Henn
3 mIRC Scripting Language (MSL)
Der mIRC Scripts Editor ist die Scripting-Zentrale in mIRC. Er kann z. B. mit der
Tastenkombination alt+r geöffnet werden. Es gibt fünf verschiedene Script-Sorten. Aliases sind
Funktionen, hier geladene Dateien können nur Funktionen enthalten. In den Popups-Dateien sind
nur Menüs von mIRC erweitert. Im Users-Bereich kann eine kleine Benutzerdatenbank angelegt
werden.
Uns interessieren aber hauptsächlich Remote-Scripte, denn in Remote-Scripten können wir alle
Elemente der Scriptsprache verwenden, auch Aliases und Popups kann man hier definieren.
4 Allgemeines
Kommentare können am Zeilenanfang mit einem Semikolon „;“ beginnend angegeben werden.
Für mehrzeilige Kommentare kann das aus C bekannte „/* */“ genutzt werden. Befehle enden mit
dem Zeilenende, ein abschließendes Zeichen, wie z. B. bei C das Semikolon, wird deshalb nicht
benutzt.
; ein einzeiliges Kommentar
/*
ein mehrzeiliges Kommentar
*/
5 Variablen
Variablen beginnen immer mit dem Prozentzeichen „%“. Eine Unterscheidung des Datentyps gibt
es nicht. Der letzte Abschnitt im Scripts Editor dient zur Anzeige von globalen Variablen. Diese
werden beim Beenden von mIRC in einer Datei gespeichert und beim nächsten Start wieder von
dort geladen, sind also über die Laufzeit hinaus gültig. Zum Setzen einer solchen Variablen wird
der Befehl „set“ verwendet, der Wert hinter dem Variablennamen mit einem Leerzeichen getrennt
angegeben. Zum Löschen steht der Befehl „unset“ zur Verfügung.
Temporäre Variablen werden mit dem Befehl „var“ erzeugt. Mit dem „=“-Operator kann man ihnen
einen Wert zuweisen. Felder (Arrays) gibt es nicht.
set %foo bar
unset %foo
var %temp = wert
%temp = neuer wert
-2/5-
mIRC Scripting Language (MSL)
Markus Henn
6 Kontrollstrukturen
Natürlich darf auch in mIRCs Script-Sprache kein „if – elseif – else“ fehlen. Hier müssen
allerdings zweierlei Dinge besonders beachtet werden: nach if, elseif, else muss immer ein
Leerzeichen folgen und bei der Nutzung von Blöcken muss die öffnende geschweifte Klammer „{“
noch in der ersten Zeile stehen.
if ($version == 6.21) {
echo -s Ihre mIRC-Version ist auf dem aktuellen Stand
}
Eine zu Switch-Case vergleichbare Struktur steht nicht zur Verfügung. Wer will kann kann sie mit
„goto“ nachbauen.
Eine fußgesteuerte Schleife gibt es in MSL ebenfalls nicht. Die einzige zur Verfügung stehende
(kopfgesteuerte) Schleife ist die while-Schleife. Auch hier gehört die öffnende geschweifte
Klammer „{“ wieder in die erste Zeile.
while (%i < 10) {
var %i = 1
echo -s %i
inc %i
}
7 Aliases (Befehle / Identifier)
7.1 Nutzung
Aliases können nicht nur in Scripten selbst, sondern auch in mIRC direkt aufgerufen
werden. Dazu muss man dem Alias ein bestimmtes Zeichen, standardmäßig den Slash „/“
voranstellen. Sollen Variablen oder Identifier interpretiert werden, muss das Zeichen
doppelt vorangestellt werden, also z. B. „//“.
Parameter werden ganz einfach, mit Leerzeichen voneinander getrennt, hinter dem Alias
angegeben.
Aliases mit einem Rückgabewert heißen Identifier und müssen mit dem vorangestellten
Dollarzeichen „$“ aufgerufen werden. Parameter werden hier durch Kommata getrennt
übergeben.
$replace erhält hier die drei Parameter „Orangensaft“, „Orangen“ und „Apfel“ und gibt
„Apfelsaft“ als Ergebnis an den echo-Alias zurück, welcher diesen als zweiten Parameter
erhält. („-s“ ist der erste Parameter.)
-3/5-
mIRC Scripting Language (MSL)
Markus Henn
7.2 Eigene Aliases definieren
Zur Deklaration wird in einem Remote-Script der Befehl „alias“ verwendet. Dann muss
man nur noch den gewünschten Namen des Alias angeben und natürlich den
Funktionskörper, den Programmcode. Die eventuell möglichen Parameter werden nicht
definiert. Soll ein Alias also eine andere Funktion erfüllen, wenn andere Parameter
übergeben werden, muss diese Unterscheidung im Alias selbst erfolgen.
Auf die übergebenen Parameter kann mit speziellen Identifiern zugegriffen werden: $1
steht für den ersten Parameter, $2 entsprechend für den zweiten, u. s. w. Will man nicht
nur auf einen Parameter zugreifen, kann man das Minuszeichen „-“ benutzen, entweder
um einen bestimmten Bereich zuzugreifen z. B. $2-5 für die Parameter zwei bis fünf oder
$3- für den Parameter drei und alle folgenden.
alias summe {
;$0 sagt uns wie viele Parameter übergeben wurden
if ($0 != 2) { return Fehler: nur zwei Zahlen bitte }
else { return $calc($1 + $2) }
}
echo -s Die Summe von 15 und 3 ist: $summe(15,3)
7.3 Liste einiger verfügbarer Commands und Identifier
echo -s <text>
inc <%var>
dec <%var>
write <dateiname> [text]
if (<bed1>) { <code1> }
elseif (<bed2>) { <code2> }
else { <code3> }
while (<bed>) { <code> }
Textausgabe im Statusfenster
Zählt eine Variable hoch (increase)
Zählt eine Variable runter (decrease)
Hängt „text“ in „dateiname“ als neue Zeile an, falls die Datei noch
nicht besteht, wird sie automatisch erstellt
if-elseif-else sollte man kennen :-)
Solange die Bedingung „bed“ erfüllt ist, wird „code“ ausgeführt
$asc(<zeichen>)
$chr(<asciiNr>)
$replace(<text>,<alt>,<neu>)
$1, $2-5, $3-
Gibt den Ascii-Code für „zeichen“ zurück
Gibt das Zeichen mit dem Ascii-Code „asciiNr“ zurück
Ersetzt in „text“ „alt“ durch „neu“ und gibt das Ergebnis zurück
1. Parameter, 2.-5. Parameter, 3. und restliche Parameter einer
Funktion
$calc(<rechnung>)
Gibt das Resultat der angegebenen „rechnung“ zurück
$read(<dateiname>,<zeilennr>) Liest die Zeile mit der „zeilennr“ aus „dateiname“ aus und gibt sie
zurück
$lines(<dateiname>)
Gibt die Anzahl der Zeilen in „dateiname“ zurück
$sfile(<dateimaske>)
Öffnet den Datei-Dialog und gibt den Dateinamen zurück
$isfile(<dateiname>)
Überprüft, ob eine Datei existiert, gibt $true bzw. $false zurück
-4/5-
mIRC Scripting Language (MSL)
Markus Henn
Aufgaben
1. Eine Liste von Ascii-Zeichen ist immer nützlich. Also erstellen wir uns doch einfach eine.
a) Zum Testen lassen wir uns die 255 Ascii-Zeichen erst einmal durch einen eigenen Alias
„listascii“ im Statusfenster von mIRC ausgeben.
b) Um diese Ascii-Tabelle auch in Zukunft nutzen zu können, wollen wir sie in einer Datei
speichern. Erweitere den Alias „listascii“ um diese Funktion, die Ausgabe im Fenster
wird nicht mehr benötigt. Die Zieldatei soll „ascii.txt“ heißen. Wenn die Datei bereits
besteht, soll die Tabelle nicht erneut erstellt werden.
c) Damit wir wissen, ob die Datei neu erstellt wurde oder nicht, soll der Alias in einen
Identifier umgewandelt werden. Benutze $true bzw. $false als Rückgabewerte. Teste
die Rückgabe, in dem du sie den Alias im Statusfenster ausführst und den
Rückgabewert ausgibst.
2. In der Datei „alt.txt“ stehen ein paar Sätze, in denen noch das alte „daß“ statt des nach
neuer Rechtschreibung richtigen „dass“ verwendet wird.
a) Erstelle einen Alias „nrs“.
b) Die Eingabedatei soll durch den Datei-Dialog ausgewählt werden können aber auch als
Parameter an den Alias übergeben werden können. Überlege, ob der per Parameter
übergebene Dateiname evtl. „Komplikationen“ verursachen könnte. (siehe TIPP)
c) Ändere die veraltete Rechtschreibung aus der betroffenen Datei, indem du die Zeilen
der Datei einliest und die verbesserten Zeilen direkt in der Datei „neu.txt“ speicherst.
(Die alte Datei soll unverändert bleiben.)
d) Wird dem Alias ein weiterer Parameter „1“ übergeben, soll auch für die Zieldatei ein
Datei-Dialog den Dateinamen bestimmen.
e) Falls das Ergebnis in der neuen Textdatei nicht stimmt, lösche sie manuell durch die
Benutzung des Befehls „remove“.
3. Überlege was bei den Aliases „write“ bzw. „read“ nicht optimal gelöst ist.
TIPP: Denke daran, das bei einem als Befehl ausgeführten Alias Parameter durch Leerzeichen
getrennt werden!
Quellen
●
mIRC 6.21 Hilfedatei [/help]
Links zum Thema
●
http://mirc.com/ – offizielle Homepage des IRC-Clients mIRC
●
http://mircscripts.org/ – viele mIRC-Scripte und Tutorials
●
http://mirc.net/ – ebenfalls eine Sammelseite von mIRC-Scripten
●
http://nnscript.de/ – Website des meistbenutzten mIRC-Scripts
-5/5-