Neuigkeiten


mIRC Tutorial: Input Manipulation

06. Oct 2005 / Kommentare

Original verfasst am: 03.05.2003

Input Manipulation

Gerade unter Anfängern ist es beliebt den Input zu modifizieren. Meist werden Abkürzungen in Farbe gefasst und ausgeschreiben. Da ich kein grosser Fan dieser Scripte bin erläuter ich es hier an einem anderem Beispiel. Ziel ist es im Input Event zu checken ob der Mode +c im Zielchannel gesetzt ist und in diesem Falle dann sämtliche Farbcodes aus unserem Text zu entfernen.

Format:

on <level>:INPUT:<:*#?=!@>:<commands>

Als Level verwenden wir * da es hier weder nötig noch sinnvoll ist welche zu verteilen. Da der Mode nur im Channel gesetzt werden kann setzen wir selbstverständlich als Ausführungsort das # fest.

on *:INPUT:#: { if ($1 == $null) { return } if (($left($1,1) == $readini($mircini,text,commandchar)) && (!$ctrlenter)) { return } if (c isincs $gettok($chan($target).mode,1,32)) { var %\text $strip($1-,c) } else { var %\text $1- } !msg $target %\text haltdef }

Erläuterung

Dies ist nun das Script welches ich erläutern möchte um die Vorgehnsweise zu erklären, Zeile für Zeile:

on *:INPUT:#: {

Hier können wir das Input Event sehen welches ich wie oben beschrieben aufgebaut habe. Mit Absicht habe ich auf das ^ am Anfang verzichtet wie es normal üblich ist wenn man das normale Event unterbinden will. Ganz einfach aus dem Grund das on Input hierfür nicht vorgesehen ist.

if ($1 == $null) { return }

Zeile 2 überprüft ob wir überhaupt was eingegeben haben. Dies wäre zum Beispiel bei einem Leerzeichen nicht der Fall.

if (($left($1,1) == $readini($mircini,text,commandchar)) && (!$ctrlenter)) { return }

Dann checken wir ob dem Satz ein / voran gestellt ist. Besser gesagt wir lesen mithilfe von $readini den sogenannten commandchar aus der mirc.ini aus. Dieser ist aber wie gesagt im Normalfall /. Dies ist nötig damit wir weiterhin Befehle eingeben können und diese nicht in Channel senden. Da aber STRG in Kombination mit der Eingabetaste eben dies macht, also den Befehl in den Channel sendet, überprüfen wir zudem noch ob diese gedrückt ist.

if (c isincs $gettok($chan($target).mode,1,32)) { var %\text $strip($1-,c) } else { var %\text $1- }

Nun kommt in Zeile 4 und 5 der eigentliche Teil. Wir überprüfen ob in $chan($target).mode, also dem aktuellen Mode das Channels, +c gesetzt ist und setzen dann die Variable %\text auf $strip($1-,c). Ansonsten nutzen wir weiterhin $1- weiter und setzen die Variable auf diesen Wert. $1- enthält den String welchen wir eingegeben haben und $strip mit dem Parameter c entfernt uns alle Color Codes aus diesem. Das $gettok beim Mode liest jediglich nur den ersten Teil des Modes aus. Das heisst wenn zB der Mode "+cntk kacke" dann stände auch im eigentlichem Key, dem "kacke" ein c, somit dürfen wir nur das erste Wort das Modes berücksichtigen. $gettok($chan($target).mode,1,32) macht eben dies, es teilt den String nach dem Ascii Code 32 (Leerzeichen) und nimmt dann das erste Teilstück (+cntk).

!msg $target %\text haltdef

Nun senden wir unsere %\text Variable ab und nutzen den Befehl /haltdef damit das Event diesen Vorgang nicht eigenständig durchführt und wir alles doppelt sagen.

~ Kommentare ~

Kommentar hinterlassen

Counter Service | Service von ranking-links.de