Colored Megatext Script

By Kingtrunks on Apr 05, 2009

This script is just an add-on to the old Mega Text script. Since the old MegaText script appears to have been taken down, a link to the original has not been included.

Produces 5 lines of text in rainbow colors. This script has multiple colors per letter, not just one.

Use with /cmt

Please note that I, in no way, take credit for the base construction of this script, only for the base color coding. Posted here due to it being leaked.

Thank you.

This is what the text will look like:

Image

Update: 05/02/2009 - Changed say $bigtext.format syntax to msg # instead. This will allow people to load it to new On *:TEXT: scripts for their bots. Users that wish to impliment a remote !cmt command should note that an if or user level statement is recommended. if ($address($2,3) == *!identd@.base.hostmask.com) { cmt $2- } should work fine.

Credit goes to Scaper and tsc for the help.

Update: 05/12/2009 - Problems with "msg #" and queries have been brought to my attention. Since msg # will not work with queries (and is targeted to other potential scrips), you will not be able to use /cmt in a query. Those of you that wish to incorporate its use in queries are recommended to change the current "msg #" to "say." Those of you that wish to have both, you will need a new alias, such that:

alias qcmt {
if ($bigtext.unsupp($1-)) {
echo -ac info * Characters not supported by Big Text present in your message: $bigtext.unsupp($1-)
return
}
var %lia, %lib, %lic, %lid, %lie, %i 1, %text $strip($1-, bur), %colregex /^(\d\d?(?:,\d\d?)?)/

var %regex = /(?<= $+ $chr(3) $+ [0-9]| $+ $chr(3) $+ [0-9][0-9]) $+ $chr(44) $+ \d\d?/g, %res, %dummy = $regsub(%text, %regex, $null, %text)

while (%i <= $len(%text)) {
if ($mid(%text, %i, 1) == $chr(3)) {
var %lia $+(%lia, $chr(3)), %lib $+(%lib, $chr(3)), %lic $+(%lic, $chr(3)), %lid $+(%lid, $chr(3)), %lie $+(%lie, $chr(3))
if ($mid(%text, $calc(%i + 1), 1) != $chr(32)) && ($regex(mtcol, $mid(%text, $calc(%i + 1), $mid(%text, $calc(%i + 1), 0)), %colregex)) {
var %m $regml(mtcol, 1)
var %lia %lia $+ %m, %lib %lib $+ %m, %lic %lic $+ %m, %lid %lid $+ %m, %lie %lie $+ %m
inc %i $len(%m)
}
}
else {
tokenize 32 $bigtext.char($mid(%text, %i, 1))
var %lia $+(%lia, $1), %lib $+(%lib, $2), %lic $+(%lic, $3), %lid $+(%lid, $4), %lie $+(%lie, $5)
; if ($bigtext.kern($mid(%text, %i, 2))) {
var %lia $+(%lia, .), %lib $+(%lib, .), %lic $+(%lic, .), %lid $+(%lid, .), %lie $+(%lie, .)
; }
}
inc %i
}
say $bigtext.format(%lia)
say $bigtext.format(%lib)
say $bigtext.format(%lic)
say $bigtext.format(%lid)
say $biggtext.format(%lie)
}

This should let you use cmt in queries - trigger would be /qcmt $1-

alias cmt {
  if ($bigtext.unsupp($1-)) {
    echo -ac info * Characters not supported by Big Text present in your message: $bigtext.unsupp($1-)
    return
  }
  var %lia, %lib, %lic, %lid, %lie, %i 1, %text $strip($1-, bur), %colregex /^(\d\d?(?:,\d\d?)?)/

  var %regex = /(?<= $+ $chr(3) $+ [0-9]| $+ $chr(3) $+ [0-9][0-9]) $+ $chr(44) $+ \d\d?/g, %res, %dummy = $regsub(%text, %regex, $null, %text)

  while (%i <= $len(%text)) {
    if ($mid(%text, %i, 1) == $chr(3)) {
      var %lia $+(%lia, $chr(3)), %lib $+(%lib, $chr(3)), %lic $+(%lic, $chr(3)), %lid $+(%lid, $chr(3)), %lie $+(%lie, $chr(3))
      if ($mid(%text, $calc(%i + 1), 1) != $chr(32)) && ($regex(mtcol, $mid(%text, $calc(%i + 1), $mid(%text, $calc(%i + 1), 0)), %colregex)) {
        var %m $regml(mtcol, 1)
        var %lia %lia $+ %m, %lib %lib $+ %m, %lic %lic $+ %m, %lid %lid $+ %m, %lie %lie $+ %m
        inc %i $len(%m)
      }
    }
    else { 
      tokenize 32 $bigtext.char($mid(%text, %i, 1))
      var %lia $+(%lia, $1), %lib $+(%lib, $2), %lic $+(%lic, $3), %lid $+(%lid, $4), %lie $+(%lie, $5)
      ; if ($bigtext.kern($mid(%text, %i, 2))) {
      var %lia $+(%lia, .), %lib $+(%lib, .), %lic $+(%lic, .), %lid $+(%lid, .), %lie $+(%lie, .)
      ; }
    }
    inc %i
  }
  msg # $bigtext.format(%lia)
  msg # $bigtext.format(%lib)
  msg # $bigtext.format(%lic)
  msg # $bigtext.format(%lid)
  msg # $bigtext.format(%lie)
}

; You may customize this alias however you want to.
; It is Big Text's font, used above.
; The return value consists of dots and X's, to denote
;   unlit and lit points in the font, respectively;
;   there are 5 tokens of the same length, each
;   corresponding to a line in the 5-line output.
; Note how the . and X's look like the characters;
;   you can use this to your advantage!
alias -l bigtext.char {
  if ($1 === $chr(32)) || ($1 === $null) return $&
    ... $&
    ... $&
    ... $&
    ... $&
    ...
  if ($1 === $chr(160)) return $&
    ..... $&
    ..... $&
    ..... $&
    ..... $&
    .....
  elseif ($1 == 0) return $&
    4.XXXX.$&
    8XX..XX$&
    9XX.XXX$&
    12XXX.XX$&
    13.XXXX.
  elseif ($1 == 1) return $&
    4.XXXX $&
    8XX.XX $&
    9...XX $&
    12...XX $&
    13...XX
  elseif ($1 == 2) return $&
    4XXXXX. $&
    8....XX $&
    9..XX.. $&
    12XX.... $&
    13XXXXXX
  elseif ($1 == 3) return $&
    4XXXXX. $&
    8....XX $&
    9.XXXX. $&
    12....XX $&
    13XXXXX.
  elseif ($1 == 4) return $&
    4.....XXX. $&
    8...XX.XX. $&
    9.XX...XX. $&
    12XXXXXXXXX $&
    13......XX.
  elseif ($1 == 5) return $&
    4XXXXX $&
    8XX... $&
    9XXXX. $&
    12...XX $&
    13XXXX.
  elseif ($1 == 6) return $&
    4.XXXX. $&
    8XX.... $&
    9XXXXX. $&
    12XX..XX $&
    13.XXXX.
  elseif ($1 == 7) return $&
    4XXXXXX $&
    8...XX. $&
    9..XX.. $&
    12.XX... $&
    13XX....
  elseif ($1 == 8) return $&
    4.XXXX. $&
    8XX..XX $&
    9.XXXX. $&
    12XX..XX $&
    13.XXXX.
  elseif ($1 == 9) return $&
    4.XXXX. $&
    8XX..XX $&
    9.XXXXX $&
    12....XX $&
    13.XXXX.
  elseif ($1 == A) return $&
    4.XXXX. $&
    8XX..XX $&
    9XXXXXX $&
    12XX..XX $&
    13XX..XX
  elseif ($1 == B) return $&
    4XXXXX. $&
    8XX..XX $&
    9XXXXX. $&
    12XX..XX $&
    13XXXXX.
  elseif ($1 == C) return $&
    4.XXXX. $&
    8XX..XX $&
    9XX.... $&
    12XX..XX $&
    13.XXXX.
  elseif ($1 == D) return $&
    4XXXX.. $&
    8XX.XX. $&
    9XX..XX $&
    12XX..XX $&
    13XXXXX.
  elseif ($1 == E) return $&
    4XXXXX $&
    8XX... $&
    9XXXX. $&
    12XX... $&
    13XXXXX
  elseif ($1 == F) return $&
    4XXXXX $&
    8XX... $&
    9XXXX. $&
    12XX... $&
    13XX...
  elseif ($1 == G) return $&
    4.XXXX. $&
    8XX.... $&
    9XX.XXX $&
    12XX..XX $&
    13.XXXXX
  elseif ($1 == H) return $&
    4XX...XX $&
    8XX...XX $&
    9XXXXXXX $&
    12XX...XX $&
    13XX...XX
  elseif ($1 == I) return $&
    4XXXX $&
    8.XX. $&
    9.XX. $&
    12.XX. $&
    13XXXX
  elseif ($1 == J) return $&
    4....XX $&
    8....XX $&
    9....XX $&
    12XX..XX $&
    13.XXXX.
  elseif ($1 == K) return $&
    4XX..XX $&
    8XX.XX. $&
    9XXXX.. $&
    12XX.XX. $&
    13XX..XX
  elseif ($1 == L) return $&
    4XX... $&
    8XX... $&
    9XX... $&
    12XX... $&
    13XXXXX
  elseif ($1 == M) return $&
    4XX....XX $&
    8XXX..XXX $&
    9XXXXXXXX $&
    12XX.XX.XX $&
    13XX....XX
  elseif ($1 == N) return $&
    4XX..XX $&
    8XXX.XX $&
    9XXXXXX $&
    12XX.XXX $&
    13XX..XX
  elseif ($1 == O) return $&
    4.XXXX. $&
    8XX..XX $&
    9XX..XX $&
    12XX..XX $&
    13.XXXX.
  elseif ($1 == P) return $&
    4XXXXX. $&
    8XX..XX $&
    9XXXXX. $&
    12XX.... $&
    13XX....
  elseif ($1 == Q) return $&
    4.XXXX.. $&
    8XX..XX. $&
    9XX..XX. $&
    12XX..XX. $&
    13.XXXXXX
  elseif ($1 == R) return $&
    4XXXXX. $&
    8XX..XX $&
    9XXXXX. $&
    12XX..XX $&
    13XX..XX
  elseif ($1 == S) return $&
    4.XXXX. $&
    8XX.... $&
    9.XXXX. $&
    12....XX $&
    13XXXXX.
  elseif ($1 == T) return $&
    4XXXXXX $&
    8..XX.. $&
    9..XX.. $&
    12..XX.. $&
    13..XX..
  elseif ($1 == U) return $&
    4XX..XX $&
    8XX..XX $&
    9XX..XX $&
    12XX..XX $&
    13.XXXX.
  elseif ($1 == V) return $&
    4XX....XX $&
    8XX....XX $&
    9.XX..XX. $&
    12..XXXX.. $&
    13...XX...
  elseif ($1 == W) return $&
    4XX...XX $&
    8XX...XX $&
    9XX.X.XX $&
    12XXXXXXX $&
    13.XX.XX.
  elseif ($1 == X) return $&
    4XX...XX $&
    8.XX.XX. $&
    9..XXX.. $&
    12.XX.XX. $&
    13XX...XX
  elseif ($1 == Y) return $&
    4XX..XX $&
    8XX..XX $&
    9.XXXX. $&
    12..XX.. $&
    13..XX..
  elseif ($1 == Z) return $&
    4XXXXXX $&
    8...XX. $&
    9..XX.. $&
    12.XX... $&
    13XXXXXX
  elseif ($1 == $chr(35)) return $&
    4.XX..XX. $&
    8XXXXXXXX $&
    9.XX..XX. $&
    12XXXXXXXX $&
    13.XX..XX.
  elseif ($1 == ') return $&
    4.XX $&
    11XX. $&
    ... $&
    ... $&
    ...
  elseif ($1 == ") return $&
    4XX..XX $&
    11XX..XX $&
    ...... $&
    ...... $&
    ......
  elseif ($1 == +) return $&
    ...... $&
    4..XX.. $&
    9XXXXXX $&
    11..XX.. $&
    ......
  elseif ($1 == =) return $&
    ...... $&
    11XXXXXX $&
    ...... $&
    4XXXXXX $&
    ......
  elseif ($1 == -) return $&
    ...... $&
    ...... $&
    9XXXXXX $&
    ...... $&
    ......
  elseif ($1 == _) return $&
    ...... $&
    ...... $&
    ...... $&
    ...... $&
    9XXXXXX
  elseif ($1 == ¯) return $&
    9XXXXXX $&
    ...... $&
    ...... $&
    ...... $&
    ......
  elseif ($1 == °) return $&
    4.XXX. $&
    9XX.XX $&
    11.XXX. $&
    ..... $&
    .....
  elseif ($1 == :) return $&
    .. $&
    4XX $&
    .. $&
    11XX $&
    ..
  elseif ($1 == !) return $&
    4XX $&
    9XX $&
    11XX $&
    .. $&
    13XX
  elseif ($1 == ?) return $&
    4XXX. $&
    9..XX $&
    11.XX. $&
    .... $&
    13.XX.
  elseif ($1 == .) return $&
    .. $&
    .. $&
    .. $&
    .. $&
    9XX
  elseif ($1 == /) return $&
    4....XX $&
    8...XX. $&
    9..XX.. $&
    12.XX... $&
    13XX....
  elseif ($1 == \) return $&
    4XX.... $&
    8.XX... $&
    9..XX.. $&
    12...XX. $&
    13....XX
  elseif ($1 == $chr(40)) return $&
    4....X $&
    8..X.. $&
    9X.... $&
    12..X.. $&
    13....X
  elseif ($1 == $chr(41)) return $&
    4X.... $&
    8..X.. $&
    9....X $&
    12..X.. $&
    13X....
  elseif ($1 == $chr(37)) return $&
    4XX..XX $&
    8...XX. $&
    9..XX.. $&
    12.XX... $&
    13XX..XX
  elseif ($1 == [) return $&
    4XXXXX $&
    8XX... $&
    9XX... $&
    12XX... $&
    13XXXXX
  elseif ($1 == ]) return $&
    4XXXXX $&
    8...XX $&
    9...XX $&
    12...XX $&
    13XXXXX
  elseif ($1 == |) return $&
    4.XX. $&
    8.XX. $&
    9.XX. $&
    12.XX. $&
    13.XX.
  elseif ($1 == <) return $&
    4....XX $&
    8..XX.. $&
    9XX.... $&
    12..XX.. $&
    13....XX
  elseif ($1 == >) return $&
    4XX.... $&
    8..XX.. $&
    9....XX $&
    12..XX.. $&
    13XX....
  elseif ($1 == ¸) return $&
    4.... $&
    .... $&
    9.XX. $&
    11..XX $&
    13XXX.
  elseif ($1 == ,) return $&
    4... $&
    ... $&
    9XXX $&
    11.XX $&
    13XX. 
}

; Returns all unsupported characters within a Big Text message
; Supported characters are a-z, space, digits, #'"+=?:!?./\()%-[]<>|?,
alias bigtext.unsupp {
  var %res, %dummy = $regsub($1-, /[]a-z  0-9# $+ $chr(44) $+ '+=?:!?./\\()%[|<>_?"?-]/igS, $null, %res)
  return %res
}

; Returns $true if a space should be added between two characters,
;   or $false if not.
; Note: This is here only for aesthetic purposes. :)
alias bigtext.kern {
  var %res $true
  if ($regex($1-, /^(.|[_GDSQL-]T|[TPFVY7/"]J|T\.|L[1Y\\"]|[LTK<[]-|-[]>%\\]|S1|T4|\?\.|\.\?|[467L\\]?|?[J/]|L'|\/\/|\\\\|?J|[_?]?|[?T_]_|>\.|\.<)$/i)) %res = $false
  return %res
}

; Takes an input string of the form:
; .XX..XX....XX.XX.XXXXX
; And formats it for display.
alias bigtext.format {
  var %res, %i 1, %previous 0, %current, %curcolor, %colregex /^(\d\d?(?:,\d\d?)?)/
  while (%i <= $len($1-)) {
    if ($mid($1-, %i, 1) == $chr(3)) {
      if ($regex(mtcol, $mid($1-, $calc(%i + 1), $mid($1-, $calc(%i + 1), 0)), %colregex)) {
        if ($gettok($regml(mtcol, 1), 1, 44) != %curcolor) {
          %curcolor = $gettok($regml(mtcol, 1), 1, 44)
          if (%i != 1) && ($mid($1-, $calc(%i - 1), 1) == X) %res = %res $+ $chr(15)
        }
        inc %i $len($regml(mtcol, 1))
      }
      elseif (%curcolor) {
        %curcolor =
        if (%i != 1) && ($mid($1-, $calc(%i - 1), 1) == X) %res = %res $+ $chr(15)
      }
    }
    else {
      %current = $iif($mid($1-, %i, 1) == ., 0, 1)
      if (%previous != %current) {
        %previous = %current
        if (%curcolor) {
          if (%current) %res = %res $+ $chr(3) $+ %curcolor $+ , $+ %curcolor
          else %res = %res $+ $chr(3)
        }
        else %res = %res $+ $chr(22)
      }
      %res = %res $+ $chr(160)
    }
    inc %i
  }
  return %res
}

Comments

Sign in to comment.
raccoon   -  Aug 16, 2016

Oldest found source. http://pastebin.ca/824605

 Respond  
MartyniP   -  Jul 23, 2010

i added

menu channel {
  .Big Text:cmt $$?="Enter Big Text"
}
menu nicklist {
  .Big Text
  ..Text:cmt $$?="Enter Big Text"
  ..Nick:cmt $$1
}

to the script so i had quick actions for them

 Respond  
ScorpionRAP   -  Jun 30, 2009

Works great, finally
Thanks ;)

 Respond  
gatosinbotas   -  Apr 29, 2009

Nice work, work good for me, from a-z. and work good in my old version mIRC 6.12 & the new one, I'll give you a 9.0, Thank you.

 Respond  
Kingtrunks   -  Apr 14, 2009

I have details about creation right in the description. The original maker of the actual MegaText script used to have it on this site. I assume they've either updated it or taken it down by now. Since the script is over 2 years old, there is no way for me to link to it/provide exact ownership details.

If the person that did make it messages me with proof I'd be more than willing to update it.

The colours were added by me - therefore the original makers of the "base" script wouldn't be able to post this script.

 Respond  
Prelude   -  Apr 10, 2009

Please don't get me wrong, I did not construct this script in any way. Equally, I plan on making no revisions to it. I thank all of you for the scores as well as the suggestions, but again, this script is here because it was leaked and I refuse to allow someone else to post it as if they made it themself. Thank you for the suggestions, however. Hope you guys enjoy the script.

Uhh what?, so who made this and why couldn't they post it themselves...

 Respond  
Kingtrunks   -  Apr 10, 2009

Yeah I understand what you mean. Server connection seems to begin to run slowly once the user hits the 4th or 5th line, so multiple uses in a short period of time can definitely cause issues.

Glad you enjoy it, though =]

 Respond  
Cheiron   -  Apr 07, 2009

my suggestion was that only of self protection lol to stop yourself getting carried away heh. i know i have done it many a time and others have done so too with these types of snippets heh.. it was no biggie. script works fine andi not found no issues with it and enjoy it

 Respond  
Kingtrunks   -  Apr 06, 2009

Please don't get me wrong, I did not construct the base MegaText script in any way. Equally, I plan on making no revisions to it. I thank all of you for the scores as well as the suggestions, but again, this script is here because it was leaked and I refuse to allow someone else to post it as if they made it themself. Thank you for the suggestions, however. Hope you guys enjoy the script.

 Respond  
undertaker28   -  Apr 06, 2009

works ok here i give you a 7 well done

 Respond  
DJ_CJ   -  Apr 06, 2009

1 thing the y dont work

 Respond  
NIGathan   -  Apr 05, 2009

No reason to flood protect yourself on an alias...

What if they're an oper, and feel like spamming?

Only reason the flood protection would be useful, is if you added an external trigger of sorts, that others could use.

 Respond  
Aucun50   -  Apr 05, 2009

When i first saw this I was like going to a small little script but this is pretty big, any case looks nice works nice besides what kirby pointed out Good job.

 Respond  
Kirby   -  Apr 05, 2009

just word advice... might want to impliment a timer into this script to stop it being used more than x amount of times in any one time frame. something of that size is gonna either get you booted off the server or from the channels if used too often.I agree...perhaps have a timered lag check and if x milliseconds is large or pong time is delayed at x amount of time, halt the script?

 Respond  
Cheiron   -  Apr 05, 2009

just word advice... might want to impliment a timer into this script to stop it being used more than x amount of times in any one time frame. something of that size is gonna either get you booted off the server or from the channels if used too often. that said however.. nice script and i pretty much agree with Kirby.

 Respond  
Kirby   -  Apr 05, 2009

Implementing of colors into giant text? That's new.
The only problem is if the inputted text does not fit into the whole "line", therefore the outcome would be distorted. But in all other cases, works fine, haven't found a problem with it.
Because "large-text" isn't very original and although I wouldn't use this "everywhere", I'll give you a 7.0 for the add-on color idea.

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.