# coding: utf-8 # Big Text v2.1.2 # Generates text five lines tall. # By William W. <wildbill AT purezc DOT com> # License: GPL # Options # These are your starting options, and can be temporarily # remembered by passing :! to the command options = { # Font: normal, bold 'font': 'normal', # Output command 'command': 'say', # Inversion: False -> off, True -> on 'invert': False, # Colors: False -> off, [['1','2','3'],['1','2','3']] -> chosen colors 'colors': False, # Go back through colors instead of just looping: False -> off, True -> on 'rewind': False, # Cycle multiple colors by 0 -> line, 1 -> letter, 2 -> line 'cycle': 0, # Keep the cycle open across lines, even if coloring by letter/word: False -> off, True -> on 'keepcycle': False, # Don't skip spaces in alternation: False -> off, True -> on 'spaces': False, # Flipped vert: False -> off, True -> on 'flip': False, # Flipped horiz: False -> off, 1 -> string, 2 -> letters 'reverse': False } # #/b Cheese! # Simply a big "Cheese!" #/b :m moos. # An action whereby you "moo" in big text #/b :c4 Burn! # "Burn!" in red text (where 4 is red by standard mIRC colors) #/b :c4,8 :c8,4 Ew! # Alternative colors by line; red on yellow, then yellow on red #/b :l :c4,,5 :c8,,7 :c9,,3 :c12,,2 :c13,,6 Rainbow! # "Rainbow" text colorized by letter (see sample image) # Python seems to be incapable of getting control codes right # by ASCII value, so here they are: # Bold: \2 # Underline: \31 # Reverse: \22 # Color: \3 # Normal: \15 # Space: || \xa0 import xchat, re, random __module_name__ = "Big Text" __module_version__ = "2.1.2" __module_description__ = "Generates text five lines tall." characters = { 'A': ['2112', '101', '111', '101', '101'], 'a': ['2112', '001', '2113', '101', '2311'], 'B': ['1132', '101', '1132', '101', '1132'], 'b': ['100', '100', '1132', '101', '1132'], 'C': ['23132', '101', '100', '101', '2112'], 'c': ['002', '2313', '102', '102', '2313'], 'D': ['110', '12332', '101', '101', '1132'], 'd': ['001', '001', '2311', '101', '2311'], 'E': ['111', '100', '1132', '100', '111'], 'e': ['2112', '101', '111', '100', '2112'], 'F': ['111', '100', '1132', '100', '100'], 'f': ['011', '2120', '3112', '2120', '2120'], 'G': ['2112', '100', '1231', '101', '2112'], 'g': ['2311', '101', '2113', '001', '2112'], 'H': ['101', '101', '111', '101', '101'], 'h': ['100', '100', '1132', '101', '101'], 'I': ['111', '010', '010', '010', '111'], 'i': ['1', '0', '1', '1', '1'], 'J': ['001', '001', '001', '101', '2112'], 'j': ['001', '000', '001', '101', '2112'], 'K': ['121', '112', '1322', '112', '121'], 'k': ['102', '102', '121', '112', '121'], 'L': ['100', '100', '100', '100', '111'], 'l': ['1', '1', '1', '1', '1'], 'M': ['21212', '1113', '12321', '1021', '1021'], 'm': ['0002', '21212', '1113', '12321', '12321'], 'N': ['101', '1321', '111', '1231', '101'], 'n': ['000', '1132', '101', '101', '101'], 'O': ['2112', '101', '101', '101', '2112'], 'o': ['000', '23132', '101', '101', '23132'], 'P': ['1132', '101', '1132', '100', '100'], 'p': ['000', '1132', '101', '1132', '100'], 'Q': ['2110', '1012', '1012', '1012', '21123'], 'q': ['000', '2311', '101', '2311', '001'], 'R': ['1132', '101', '1132', '101', '101'], 'r': ['000', '23132', '101', '100', '100'], 'S': ['2311', '100', '2112', '001', '1132'], 's': ['002', '031', '210', '012', '130'], 'T': ['111', '010', '010', '010', '010'], 't': ['010', '111', '010', '010', '010'], 'U': ['101', '101', '101', '101', '2112'], 'u': ['000', '101', '101', '101', '2311'], 'V': ['1021', '1021', '1021', '21212', '0130'], 'v': ['2000', '1021', '1021', '21212', '0130'], 'W': ['1021', '1021', '12321', '1113', '21212'], 'w': ['0002', '1021', '12321', '1113', '21212'], 'X': ['101', '101', '2112', '101', '101'], 'x': ['000', '101', '2112', '2112', '101'], 'Y': ['101', '101', '2112', '010', '010'], 'y': ['000', '1221', '2112', '2210', '3102'], 'Z': ['111', '0212', '010', '2120', '111'], 'z': ['200', '311', '012', '210', '311'], '0': ['2112', '101', '1231', '1321', '2112'], '1': ['010', '2310', '010', '010', '111'], '2': ['2310', '0212', '2112', '100', '111'], '3': ['1132', '001', '2112', '001', '1132'], '4': ['101', '101', '111', '001', '001'], '5': ['111', '100', '1132', '001', '1132'], '6': ['2112', '100', '1132', '101', '2112'], '7': ['111', '001', '0212', '010', '010'], '8': ['2112', '101', '2112', '101', '2112'], '9': ['2112', '101', '2311', '001', '2112'], '/': ['001', '0212', '010', '2120', '100'], '\\': ['100', '2120', '010', '0212', '001'], '|': ['1', '1', '0', '1', '1'], '-': ['000', '000', '111', '000', '000'], '=': ['000', '111', '000', '111', '000'], '+': ['000', '010', '111', '010', '000'], '?': ['2112', '101', '0212', '000', '0212'], '!': ['1', '1', '1', '0', '1'], '(': ['011', '2120', '100', '2120', '011'], ')': ['110', '0212', '001', '0212', '110'], '`': ['212', '01', '00', '00', '00'], '*': ['000', '010', '111', '23032', '000'], '^': ['010', '23032', '000', '000', '000'], '%': ['101', '0212', '010', '2120', '101'], '#': ['23032', '111', '23032', '111', '23032'], '~': ['0000', '21301', '12112', '0000', '0000'], '$': ['2110', '12302', '21132', '02321', '1112'], '@': ['2112', '101', '1231', '100', '2112'], '&': ['21102', '1010', '21121', '10132', '21121'], '[': ['11', '10', '10', '10', '11'], ']': ['11', '01', '01', '01', '11'], '{': ['2311', '2120', '100', '2120', '2311'], '}': ['1132', '0212', '001', '0212', '1132'], '<': ['0031', '0130', '3100', '0130', '0031'], '>': ['1300', '0310', '0013', '0310', '1300'], '_': ['000', '000', '000', '000', '111'], "'": ['212', '10', '00', '00', '00'], '"': ['101', '23032', '000', '000', '000'], ':': ['0', '1', '0', '1', '0'], ';': ['212', '00', '00', '212', '10'], '.': ['0', '0', '0', '0', '1'], ',': ['00', '00', '00', '212', '10'], ' ': ['02', '02', '02', '02', '02'] } fonts = { 'normal': ['EE', 'SFF', 'E', 'SF', 'E'], # Whole empty, whole full, half empty, half full, between characters 'bold': ['EEEE', 'SFFFF', 'EE', 'SFF', 'EE'] } options_def = {'font': 'normal', 'command': 'say', 'invert': False, 'colors': False, 'rewind': False, 'cycle': 0, 'keepcycle': False, 'spaces': False, 'flip': False, 'reverse': False} options_local = {'font': 'normal', 'reverse': random.choice([False, 1, 2]), 'invert': False, 'flip': random.choice([True, False]), 'colors': [['4', '', '5'], ['8', '', '7'], ['9', '', '3'], ['12', '', '2'], ['13', '', '6']], 'spaces': False, 'command': 'echo', 'cycle': 1, 'keepcycle': random.choice([True, False]), 'rewind': False} usage = 'Usage: B [:!] [:m/:e/:<command>:] [:b] [:i/:c<fg>[,[<bg>][,<shadow>]] [:l/:w [:s] [:k]] [:rw]] [:f] [:r/:rl] <text>' def generate(text): global characters bigged = '' big = [[],[],[],[],[]] end = '4' for i, l in enumerate(list(text)): if i + 1 == len(text): end = '' if characters.has_key(l): bigged += l set = characters[l] for line in range(0, 5): big[line] += [set[line] + end] return [bigged, big] def draw(text, config): if len(text) < 1: return 0 global xchat, fonts opts = config chars = fonts[config['font']] # Tweaks for reversal if opts['reverse'] == 2: text = text[::-1] # Generate the text bigged, big = generate(text) # More reversal tweaks if opts['reverse']: bigged = bigged[::-1] # Flipped if opts['flip']: big.reverse() # Rewind colors if opts['rewind'] and type(opts['colors']) is list and len(opts['colors']) > 2: opts['colors'] += opts['colors'][::-1][1:-1] c = 0 # Starting color for line in big: # Interpret our drawing drawn = [] for part in line: draw = '' for p in part: if int(p) in range(0, 5): draw += chars[int(p)] else: print "Invalid character found in character mapping: " + p return 0 drawn += [draw] # Output it if drawn: prefix = '' # Used for inversion # Reversed if opts['reverse']: drawn = '!'.join(drawn)[::-1].split('!') # Color... this stuff makes my brain hurt if opts['colors']: # Determine what we join by based upon shadow joiner = '' if len(opts['colors'][0]) == 3: joiner = chars[4] # Don't shift colors over spaces spaces = [] if not opts['spaces']: for i, l in enumerate(list(bigged)): if l == ' ': spaces += [i] # Not cycling colors by character or word if not opts['cycle'] or len(opts['colors']) <= 1: drawn = [joiner.join(drawn)] # Color by word; lots of crap to rechunk elif opts['cycle'] == 2: newdrawn = [] letters = [] spaces = [] for i, l in enumerate(list(bigged)): # My head asplode if l == ' ': if opts['spaces'] != 1: spaces += [len(newdrawn)] if letters != []: newdrawn += [joiner.join(letters)] newdrawn += [drawn[i]] letters = [] else: letters += [drawn[i]] if letters != []: newdrawn += [joiner.join(letters)] drawn = newdrawn[:] # Add some padding if we have a background color if opts['colors'][0][1] != '': drawn[0] = chars[4]+drawn[0] drawn[len(drawn)-1] += chars[4] for i, part in enumerate(drawn): # Shadowed if len(opts['colors'][c]) == 3: # Reversed text; pad accordingly if opts['reverse']: part += chars[4] else: part = chars[4]+part part = re.sub('ES|SE', ' 0,'+opts['colors'][c][2]+'D'+' ', part) # Get the colors to use and apply space = opts['colors'][c][:2] font = space[::-1] if space[1] == '': font = ['0', space[0]] space = 0 if space != 0: part = re.sub('(E+)', ' '+','.join(space)+r'\1 ', part) part = re.sub('(F+)', ' '+','.join(font)+r'\1 ', part) # FINALLY drawn[i] = part # Change the color if we're not on space if not opts['cycle'] or i not in spaces: if c + 1 < len(opts['colors']): c += 1 else: c = 0 # If we're chunking colors, reset if not opts['keepcycle'] and opts['cycle']: c = 0 # WHOO!!! drawn = ''.join(drawn) # Do not use color, thereby making life much easier else: drawn = re.sub('(F+)', r' \1 ', ''.join(drawn)) # Inversion if opts['invert']: drawn = 'E'+drawn+'E' prefix = ' ' # Remove shadow codes and convert our output drawn = drawn.replace('S', '') drawn = re.sub('[EDF]', '', drawn) xchat.command(opts['command']+' '+prefix+drawn) return 1 def bigtext(word, word_eol, userdata): global usage, options, options_default if len(word) == 1: print usage return xchat.EAT_XCHAT word = word_eol[0].split(' ') offset = 0 flag = True remember = False opts = options.copy() for w in word[1:]: offset += 1 if w == ':!' and offset == 1: remember = True opts = options_def.copy() elif w == ':b': opts['font'] = 'bold' elif w == ':m': opts['command'] = 'me' elif w == ':e': opts['command'] = 'echo' elif re.match('^:.+:$', w): command = {} for i, p in enumerate(w[1:-1].split('\\\\')): command[i] = [] for q in p.split('\\_'): command[i] += [q.replace('_', ' ')] command[i] = '_'.join(command[i]) opts['command'] = '\\'.join(command.values()) elif w == ':i': opts['invert'] = True elif re.match('^:c[0-9]+(,([0-9]+)?(,[0-9]+)?)?$', w): if opts['colors'] == 0: opts['colors'] = [] colors = w[2:].split(',') if len(colors) == 1: colors += [''] if opts['colors'] == [] or len(colors) == len(opts['colors'][0]): opts['colors'] += [colors] elif w == ':rw': opts['rewind'] = True elif w == ':l': opts['cycle'] = 1 elif w == ':w': opts['cycle'] = 2 elif w == ':k': opts['keepcycle'] = True elif w == ':s': opts['spaces'] = True elif w == ':f': opts['flip'] = True elif w == ':r': opts['reverse'] = 1 elif w == ':rl': opts['reverse'] = 2 elif w == ':': offset += 1 flag = False break else: flag = False break if flag or offset >= len(word): if remember: options = opts.copy() result = [] for opt in opts.keys(): result += [' 5'+opt+' : 7 '+str(opts[opt])] print ' Big Text options set: '+' ; '.join(result) else: print usage return xchat.EAT_XCHAT elif remember: options = opts.copy() draw(word_eol[offset], opts.copy()) return xchat.EAT_XCHAT xchat.hook_command("B", bigtext, help=usage) draw('BIG TEXT', options_local.copy()) print "Script loaded. Use /B for help."
Showing posts with label xchat irc scripts. Show all posts
Showing posts with label xchat irc scripts. Show all posts
xchat big text irc rainbow script
here is a fun big text x-chat irc script. this xchat plugin will make your text big and colorful.
xchat irc scripts and plugins
Are you looking for xchat irc scripts? This site was created to provide you the best xchat plugins and x chat scripts. The chat program X-Chat was created for irc chat. Users can download it and connect to irc rooms and chat and also use x-chat scripts.
Subscribe to:
Posts (Atom)