Irssi_BIG

harja 11.10.04 11:14

Käyttäydy eliitisti IRC:ssä ja anna mielipiteesi kuulua!

 Tekstiversio  Arvo: 3 (9 ääntä)  Äänestä: +  -
#!/usr/bin/perl

##
# KÄYTTÖ
# hae tämä skripti kahdella fonttitiedostolla varustettuna osoitteesta
# http://users.utu.fi/maharj/big.tar.bz2
# Kopioi hakemistoon ~/.irssi/scripts ja komenna irssissä /SCRIPT LOAD big
# Tämän jälkeen komennolla /big [tekstiä] saat aikaan vaikuttavaa jälkeä!
# toisen fontin käyttöönotto
# /big load [fontin_nimi]

##
# Muutokset:
# + tukee joitakin erikoismerkkejä
# + uusi fonttitiedostoformaatti
# + muuttaa syötteen lowercaseksi automaattisesti

use strict;
use vars qw($VERSION %IRSSI);

use Irssi;

$VERSION='1.00';
%IRSSI = (
  authors => 'Mikko Harju',
  contact => 'maharj@DSutu.fi',
  name => 'BIG LETTERS',
  description => 'Be elite and write big letters',
  license => 'GPL'
);

our %letters;

# ASETA TÄHÄN OMA SKRIPTIHAKEMISTOSI
our $SCRIPT_DIR="/home/harja/.irssi/scripts";
our $DEFAULT_FONT="font_big";

# Hae korkein fontti ja palauta sen korkeus
sub get_max_height {
  my $max_rows=0;
  for my $c (split //, shift @_) {
    if($letters{$c}{"rows"} > $max_rows) {
      $max_rows=$letters{$c}{"rows"};
    }
  }

  return $max_rows;
}

# Tulostaa kirjaimet
sub print_big_letters {
  my ($data, $server, $witem) = @_;
  my $max_height=get_max_height($data);

  # komennolla "load" ladataan uusi fontti sis<E4><E4>n
  if($data=~/^load (.+)/) {
    load_big_letters($SCRIPT_DIR.'/'.$1);
    return;
  } elsif($data=~/^version (.+)/) {
    $witem->command("/SAY BIG version $VERSION");
    return;
  }

  $data=lc $data;

  # Tulostetaan stringi<E4> yksi rivi kerrallaan
  for my $i (0..$max_height-1) {
    my $row="/SAY ";
    for my $c (split //, $data) {
      my $rows=$letters{$c}{"rows"};
      #  aloitetaan tulostamaan t<E4>t<E4> kirjainta vasta oikealla rivill<E4>
      if($i + $rows >= $max_height) {
        $row.=$letters{$c}{"letter"}[$i-($max_height-$rows)];
      } else {
        for my $j (0..$letters{$c}{"cols"}-1) { $row.=' '; }
      }
    }
    # tulostetaan kanavalle komennot
    $witem->command($row);
  }
}

# Ladataan kirjaimet tiedostosta
sub load_big_letters {
  my ($filename) = @_;
  open F, $filename || die("Eip<E4> onnistu!");
  my $num_letters=<F> and chop;
  %letters=();
  # aakkosten m<E4><E4>r<E4>
  for my $j (0..$num_letters) {
    $_=<F> and chop;
    my ($letter, $cols, $rows) = split /,/;
    $letters{$letter}{"rows"}=$rows;
    $letters{$letter}{"cols"}=$cols;
    for my $i (0..$rows-1) {
      $_=<F> and chop;
      $letters{$letter}{"letter"}[$i]=$_;
    }
  }
  close F;
}

# ladataan vakiofontti
load_big_letters($SCRIPT_DIR.'/'.$DEFAULT_FONT);

# bindataan komento
Irssi::command_bind big => \&print_big_letters;

Kryil 22:54 12.10.04 
Vaikka onkin aika peelo niin ihan hyvää jälkeä tekee.
BlueByte 23:32 14.10.04 
mirc show down 7.0 o parempi
Jake-san 21:41 10.7.05 
Mirc on silti vain windows ohjelma..
ptman 18:02 5.10.05 
IRC:n väärinkäyttöä! Joku fiksu irssi-helpperi olisi aiheellinen, mutta tämä on turhaakin turhempi.