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-