Jump to content

Archived

This topic is now archived and is closed to further replies.

chain

/splitmsg

Recommended Posts

  • Administrators
Ich war überrascht zu sehen das es scheinbar nirgends einen brauchbaren msg splitter gibt, der zu lange /msg's auf mehrere aufteilt.

Deswegen hab ich mich mal daran probiert einen zu basteln, der sofern möglich, auch die wörter nicht zerreisst und auch mit colorcodes wie farben, fettschrift und underline klar kommt. Maximallänge die verarbeitet werden kann ist das was in eine %variable passt. Also ~4140 Zeichen (bei mIRC 6.35).

 

Das ist jetzt erstmal eine Vorab-Version. Fehlerbehandlung kommt noch dazu.

Das teil möchte ich auf MS.org uppen allerdings wäre es schön wenn den erstmal jemand testen könnte.

 

Syntax: /splitmsg [-lNtN]

 

Parameter -l = limit. Also wie viel Zeichen eine Zeile maximal haben darf inklusive colorcodes. Limit 0 bedeuted nicht splitten.

Parameter -t = token. Also bei welchen tokens umgebrochen werden soll. ( Als Asciiwert angeben. z.B. -t35 für # )

bedeutet das man entweder ein Ziel angeben kann wie ein Channelname oder ein Nick, an den es dann per /msg gesendet wird. Oder man gibt ein eigenen Command an. Dieser muss dann in Anführungszeichen stehen bzw. in $qt(). (siehe Beispiele weiter unten)

ist klar, was er halt posten soll. Ist der text kleiner als das limit, wird er in einem satz gesendet.

 

 

Im alias selbst kann man in den ersten variablen die standardeinstellungen ändern die er nehmen soll, wenn kein limit, token oder type angegeben wird.

 

 

>splitmsg { ;/splitmsg [-lNtN]    var %standardlength 473, %standardtoken 32, %standardcommand msg  if (!$regex(split,$1-,/^(-[lt\d]+ )?((?:".+?")|(?:\S+)) (.+)/i)) { echo -sc info2 * /splitmsg: insufficient parameters. | return }  var %length %standardlength, %token %standardtoken  if ($asc($regml(split,1)) == 45) && ($regex(split2,$regml(split,1),/([lt])(\d+)/g)) {    var %length $iif($regml(split2,1) == l && $regml(split2,2) isnum 0-,$v1,$iif($regml(split2,3) == l && $regml(split2,4) isnum 0-,$v1,%standardlength))    var %token $iif($regml(split2,1) == t && $regml(split2,2) isnum 1-255,$v1,$iif($regml(split2,3) == t && $regml(split2,4) isnum 1-255,$v1,%standardtoken))  }   var %regml $iif($asc($regml(split,1)) == 45,2,1)  var %cmd $iif(" isin $regml(split,%regml),$noqt($v2),%standardcommand $v2) | inc %regml  var %text $regsubex(colrep,$regml(split,%regml),/(\d)(\D)/g,0\1\2)  if (%length == 0) { var %length $len(%text) }  var %x 1, %r, %tokens $numtok(%text,%token), %ol  while (%text != $null) {    var %r $iif(%r != $null,%r $+ $chr(%token)) $+ $gettok(%text,%x,%token), %ol $len(%text)    if (%x > 1) && ($len(%r) > %length) {      dec %x      %cmd $gettok(%text,1- $+ %x,%token)      var %color $gettok($gettok(%text,1- $+ %x,%token),$numtok($gettok(%text,1- $+ %x,%token),15),15)      var %color $iif($regex(%color,/(\d\d?)/g), $+ $regml($v1)) $+ $iif(2 \\ $count(%color,$chr(31)),$chr(31)) $+ $iif(2 \\ $count(%color,$chr(2)),$chr(2))      var %text $iif($gettok(%text,$calc(%x +1) $+ -,%token) != $null,%color $+ $v1), %x, %r, %tokens $numtok(%text,%token)      if (%ol == $len(%text)) { echo -sc info2 * /splitmsg: Error occured. Increase the messagelength. | return }    }    elseif ($len(%r) > %length) || (%x >= %tokens) {      %cmd $left(%text,%length)      var %color $gettok($left(%text,%length),$numtok($left(%text,%length),15),15)      var %color $iif($regex(%color,/(\d\d?)/g), $+ $regml($v1)) $+ $iif(2 \\ $count(%color,$chr(31)),$chr(31)) $+ $iif(2 \\ $count(%color,$chr(2)),$chr(2))      var %text $iif($right(%text,- $+ %length) != $null,%color $+ $v1), %x, %r, %tokens $numtok(%text,%token)      if (%ol == $len(%text)) { echo -sc info2 * /splitmsg: Error occured. Increase the messagelength. | return }    }    inc %x  }}

Link to comment
Share on other sites



×
×
  • Create New...