Handy finden
webdesigner

NAVIGATION

Startseite
Themen-Suche
IRCFAQ Chat
Kontakt
Impressum

SCHNELLSUCHE

Suchbegriffe

IRC VERSTEHEN

Was ist IRC?
Wie funktioniert IRC?
Erste Schritte
Häufig gestellte Fragen
IRC-Begriffe

BEFEHLE

Befehle für User
Befehle für Operators
Nickserv Befehle
Chanserv Befehle

Linktipps


SCRIPTING

mIRC Scripting

IRC FUN

IRC Fun-logs

DOWNLOADS

mIRC & Co
mIRC Scripte

SURFTIPPS

Top IRC Links
Link auf IRCFAQ

Get Firefox!




mIRC Scripting

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 aber ich 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 retry
Mit 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 v2
isvo 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,$snicks)
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 befindet

--------------------------------------------------------------------------------


RandNopkick { :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ß!


Hier findest du die wichtigsten IRC Befehle

Tutorial Übersicht

[1.0] Die Aliases-Sektion
[1.1] Aliases erstellen
[1.2] String Definitionen
[1.3] Identifiers

[2.0] Die PopUps-Sektion (Kontextmenüs)

[3.0] Die Remote Sektion
[3.1] Die Remote User-Liste
[3.2] Remote Scripts - CTCP Befehle
[3.3] Remote Scripts - Ereignisse (Events)
[3.4] Verschiedene Attribute vor CTCP Befehlen und Events
[3.5] Variablen
[3.6] Remote Scripts - numerische Server-Mitteilungen (Raw Processing)

[4.0] Fortgeschrittener Umgang mit Befehlen; Mehrzeilen-Befehle
[5.0] Copyright - rechtliche Hinweise





PARTNER

 

Computerlexikon

Irc Mania

Handy finden



Pagerank ohne Toolbar
Pagerank Echtheitsüberprüfung

Community | Webdesign | kostenlos flirten | EDV Lexikon | Sex Lexikon | handy | Grusskarten