All pastes #837498 Raw Edit

Anonymous

public text v1 · immutable
#837498 ·published 2007-12-29 19:02 UTC
rendered paste body
; #################################################################
; ## Morse/Binary/Octal and Hex translations                     ##
; ## Written by Urza (Urza23@hotmail.com)                        ##
; ## Written and tested in mIRC 6.16/6.17                        ##
; #################################################################


; *******************************************************************
; * Setup on load                                                   *
; *******************************************************************
on *:load: {
  echo -a 4*** Successfuly loaded Morse/Binary/Hex translation script by Urza
  echo -a 4*** Usage:
  echo -a 4*** /Morse, /Hex, /Oct and /Bin to send text publicly to the channel
  echo -a 4*** /DeMorse, /DeHex, /DeOct and /DeBin To Decode privately
  echo -a 4*** /ToMorse, /ToHex, /ToOct and /ToBin To Encode privately 
}
; *******************************************************************
; * Switch between display styles                                   *
; *******************************************************************
menu channel {
  Morse/Binary/Hex 
  .Talk In
  ..Morse: Morse $$?="What do you want to say?"
  ..Binary: Bin $$?="What do you want to say?"
  ..Octal: Oct $$?="What do you want to say?"
  ..Hex: Hex $$?="What do you want to say?"
  .Private Translation
  ..To Morse: Tomorse $$?="What do you want to translate?"
  ..From Morse: Demorse $$?="What do you want to translate?"
  ..-
  ..To Binary: Tobin $$?="What do you want to translate?"
  ..From Binary: Debin $$?="What do you want to translate?"
  ..-
  ..To Octal: Tooct $$?="What do you want to translate?"
  ..From Octal: Deoct $$?="What do you want to translate?"
  ..-
  ..To Hex: Tohex $$?="What do you want to translate?"
  ..From Hex: Dehex $$?="What do you want to translate?"
  .Use Prefix when sending..
  .. $iif($readini(settings.ini,Decodes,PrefixMsg) == on,$style(1)) Messages: {
    writeini settings.ini Decodes PrefixMsg $iif($readini(settings.ini,Decodes,PrefixMsg) == on,off,on)
    if ($readini(settings.ini,Decodes,PrefixMsg) == on) echo -a 4*** Encoded messages will now be prefixed with MORSE-, HEX-, OCT- and BIN-  
    else echo -a 4*** Encoded messages will no longer be prefixed  
  }
  .. $iif($readini(settings.ini,Decodes,PrefixAct) == on,$style(1)) Actions: {
    writeini settings.ini Decodes PrefixAct $iif($readini(settings.ini,Decodes,PrefixAct) == on,off,on) 
    if ($readini(settings.ini,Decodes,PrefixAct) == on) echo -a 4*** Encoded Actions will now be prefixed with MORSE-, HEX-, OCT- and BIN-  
    else echo -a 4*** Encoded Actions will no longer be prefixed.
  }
}
alias formatnick return $iif($left($nick($chan,$nick).pnick,1) isin ~&@%+,$left($nick($chan,$nick).pnick,1) $+ $nick,$nick)
alias formatme return $iif($left($nick($chan,$me).pnick,1) isin ~&@%+,$left($nick($chan,$me).pnick,1) $+ $me,$me)
; *******************************************************************
; * Text/Action events - output translation                         *
; *******************************************************************
on ^*:text:*:*: if ($check4decode($1-)) output Text $1- 
on ^*:action:*:*: if ($check4decode($1-)) output Action $1-

alias -l TextPref return $color(normal) -gtli2 $iif($chan,$chan,$nick) $+(<,$iif($chan,$formatnick,$nick),>) 
alias -l ActPref return $color(action) -gtli2 $iif($chan,$chan,$nick) * $iif($chan,$formatnick,$nick) 

alias -l Output {
  var %style = $1 | tokenize 32 $2-

  window -g1 $iif($chan,$chan,$nick) 
  goto $check4decode($1-)
  haltdef

  :Morse 
  var %m = $iif($1 == MORSE-,$2-,$1-)
  echo $iif(%style == text,$TextPref,$actpref) $1- $+(10,$chr(40),Morse: $iif(%style == action,* $nick) $DecodeMorse(%m),$chr(41)) 
  halt

  :Binary
  var %b = $iif($1 == BIN-,$2-,$1-)
  echo $iif(%style == text,$TextPref,$actpref) $1- $+(10,$chr(40),Binary: $iif(%style == action,* $nick) $DecodeBase(2,8,%b),$chr(41))  
  halt

  :Octal
  var %o = $iif($1 == OCT-,$2-,$1-)
  if ($DecodeBase(8,3,%o) == -INVALID-) goto Hex 
  echo $iif(%style == text,$TextPref,$actpref) $1- $+(10,$chr(40),Octal: $iif(%style == action,* $nick) $DecodeBase(8,3,%o),$chr(41)) 
  halt

  :Hex
  var %h = $iif($1 == HEX-,$2-,$1-)
  if ($DecodeBase(16,2,%h) == -INVALID-) return 
  echo $iif(%style == text,$TextPref,$actpref) $1- $+(10,$chr(40),Hex: $iif(%style == action,* $nick) $DecodeBase(16,2,%h),$chr(41)) 
  halt
}


; *******************************************************************
; * Process text - Check if if decoding is required                 *
; *******************************************************************
alias -l Check4Decode {
  tokenize 32 $1-
  var %whole = $len($1-)
  ;*** Check For Morse ***  
  var %nonmorse = $len($remove($1-,.,-,/,$chr(32))) | var %morsepercent = $calc(100 - %nonmorse / %whole * 100)
  ;*** Check For Binary ***
  var %binary = $calc(%whole - $len($remove($1-,1,0))) | var %binPercent = $calc(%binary / %whole * 100)
  ;*** Check For Octal ***
  var %nonoctal = $len($remove($1-,0,1,2,3,4,5,6,7)) | var %octpercent = $calc(100 - %nonoctal / %whole * 100)
  ;*** Check For hex ***
  var %nonhex = $len($remove($1-,1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F)) | var %hexPercent = $calc(100 - %nonhex / %whole * 100)

  if ($1 == MORSE-) || ((%morsepercent > 75) && ($DecodeMorse($1-) != $1-)) return Morse
  elseif ($1 == BIN-) || ((%binpercent > 99) && ($len($1-) >= 8)) return Binary
  elseif ($1 == OCT-) || ((%octpercent > 99) && ($len($1-) >= 3)) return Octal
  elseif ($1 == HEX-) || ((%hexpercent > 99) && ($len($1-) >= 2)) return Hex
}

; *******************************************************************
; * Base X Encryption/Decryption Aliases                            *
; *******************************************************************
alias -l DecodeBase {
  var %base = $1 | var %charlength = $2 | var %Original = $remove($3-,$chr(32))
  while (%Original) {
    var %translatechar = $base($left(%Original,%charlength),%base,10)
    if ((%translatechar > 126) || (%translatechar < 32)) && (!%noinvalid) return -INVALID-
    var %translate = $chr(%translatechar)
    if (%translatechar = 32) var %message = %message %translate
    else var %message = %message $+ %translate
    var %Original = $right(%Original,- $+ %charlength)
  } 
  unset %noinvalid
  return %message
}

alias EncodeBase {
  var %base = $1 | var %charlength = $2 | var %msg = $3-
  while (%msg) {
    var %basechar = $asc($left(%msg,1))
    var %Encoded = %Encoded $+ $+($str(0,$calc(%charlength - $len($base(%basechar,10,%base)))),$base(%basechar,10,%base))
    var %msg = $right(%msg,-1)
    inc %x
  }
  return %Encoded
}


; *******************************************************************
; * Binary Send/Translate aliases                                   *
; *******************************************************************
alias debin { 
  if (!$1) { echo 4 -ta ERROR: no text specified | halt }
  set -u5 %noinvalid on 
  echo 10 -tai2 Binary Translation: $DecodeBase(2,8,$1-)
}
alias tobin {
  if (!$1) { echo 4 -ta ERROR: no text specified | halt }
  echo 10 -tai2 Binary: $EncodeBase(2,8,$1-)
}
alias binary { bin $1- }
alias bin { 
  if (!$1) { echo 4 -ta ERROR: no text specified | halt }
  .msg $active $iif($readini(settings.ini,Decodes,PrefixMsg) == on,BIN-) $EncodeBase(2,8,$1-)
  echo $color(own) -tai2 $+(<,$iif($chan,$formatme,$me),>) $iif($readini(settings.ini,Decodes,PrefixMsg) == on,BIN-) $EncodeBase(2,8,$1-) 10 $+($chr(40),Binary: $1-,$chr(41))
}
alias binme {
  if (!$1) { echo 4 -ta ERROR: no text specified | halt }
  .describe $active $iif($readini(settings.ini,Decodes,PrefixAct) == on,BIN-) $EncodeBase(2,8,$1-)
  echo $color(action) -tai2 * $iif($chan,$formatme,$me) $iif($readini(settings.ini,Decodes,PrefixAct) == on,BIN-) $EncodeBase(2,8,$1-) 10 $+($chr(40),Binary: * $me $1-,$chr(41)) 
}

; *******************************************************************
; * Octal Send/Translate aliases                                    *
; *******************************************************************
alias deOct { 
  if (!$1) { echo 4 -ta ERROR: no text specified | halt }
  set -u5 %noinvalid on 
  echo 10 -tai2 Octal Translation: $DecodeBase(8,3,$1-) 
}
alias toOct {
  if (!$1) { echo 4 -ta ERROR: no text specified | halt }
  echo 10 -tai2 Octal: $EncodeBase(8,3,$1-)
}
alias Octal { Oct $1- }
alias Oct { 
  if (!$1) { echo 4 -ta ERROR: no text specified | halt }
  .msg $active $iif($readini(settings.ini,Decodes,PrefixMsg) == on,OCT-) $EncodeBase(8,3,$1-)
  echo $color(own) -tai2 $+(<,$iif($chan,$formatme,$me),>) $iif($readini(settings.ini,Decodes,PrefixMsg) == on,OCT-) $EncodeBase(8,3,$1-) 10 $+($chr(40),Octal: $1-,$chr(41))
}
alias octme {
  if (!$1) { echo 4 -ta ERROR: no text specified | halt }
  .describe $active $iif($readini(settings.ini,Decodes,PrefixAct) == on,OCT-) $EncodeBase(8,3,$1-)
  echo $color(action) -tai2 * $iif($chan,$formatme,$me) $iif($readini(settings.ini,Decodes,PrefixAct) == on,OCT-) $EncodeBase(8,3,$1-) 10 $+($chr(40),Octal: * $me $1-,$chr(41)) 
}

; *******************************************************************
; * Hex Send/Translate aliases                                      *
; *******************************************************************
alias dehex { 
  if (!$1) { echo 4 -ta ERROR: no text specified | halt }
  set -u5 %noinvalid on 
  echo 10 -tai2 Hex Translation: $DecodeBase(16,2,$1-) 
}
alias tohex {
  if (!$1) { echo 4 -ta ERROR: no text specified | halt }
  echo 10 -tai2 Hex: $EncodeBase(16,2,$1-)
}
alias hex {
  if (!$1) { echo 4 -ta ERROR: no text specified | halt } 
  .msg $active $iif($readini(settings.ini,Decodes,PrefixMsg) == on,HEX-) $EncodeBase(16,2,$1-)
  echo $color(own) -tai2 $+(<,$iif($chan,$formatme,$me),>) $iif($readini(settings.ini,Decodes,PrefixMsg) == on,HEX-) $EncodeBase(16,2,$1-) 10 $+($chr(40),Hex: $1-,$chr(41))
}
alias hexme {
  .describe $active $iif($readini(settings.ini,Decodes,PrefixAct) == on,HEX-) $EncodeBase(16,2,$1-)
  echo $color(action) -tai2 * $iif($chan,$formatme,$me) $iif($readini(settings.ini,Decodes,PrefixAct) == on,HEX-) $EncodeBase(16,2,$1-) 10 $+($chr(40),Hex: * $me $1-,$chr(41)) 
}

; *******************************************************************
; * Morse Send/Translate aliases                                    *
; *******************************************************************
alias demorse { 
  if (!$1) { echo 4 -ta ERROR: no text specified | halt }
  set -u5 %noinvaid on 
  echo 10 -ta Morse Code Translation: $DecodeMorse($1-) 
}
alias tomorse { 
  if (!$1) { echo 4 -ta ERROR: no text specified | halt }
  echo 10 -ta Morse Code: $encodeMorse($1-) 
}
alias morse {
  if (!$1) { echo 4 -ta ERROR: no text specified | halt }
  .msg $active $iif($readini(settings.ini,Decodes,PrefixMsg) == on,MORSE-) $EncodeMorse($1-)
  echo $color(own) -tai2 $+(<,$iif($chan,$formatme,$me),>) $iif($readini(settings.ini,Decodes,PrefixMsg) == on,MORSE-) $EncodeMorse($1-) 10 $+($chr(40),Morse: $1-,$chr(41)) 
}
alias morseme {
  if (!$1) { echo 4 -ta ERROR: no text specified | halt }
  .describe $active $iif($readini(settings.ini,Decodes,PrefixAct) == on,MORSE-) $EncodeMorse($1-)
  echo $color(action) -tai2 * $iif($chan,$formatme,$me) $iif($readini(settings.ini,Decodes,PrefixAct) == on,MORSE-) $EncodeMorse($1-) 10 $+($chr(40),Morse: * $me $1-,$chr(41)) 
}

; *******************************************************************
; * Morse Encryption/Decryption Aliases                             *
; *******************************************************************
alias EncodeMorse {
  var %msg = $1-
  var %x = 1
  while (%x <= $len(%msg)) {
    var %morse = %morse $encmorse($mid(%msg,%x,1))
    inc %x
  }
  return %morse
}
alias DecodeMorse {
  tokenize 32 $1-
  var %x = 1
  while (%x <= $0) {
    var %morse = %morse $+ $decmorse($ [ $+ [ %x ] ])
    inc %x
  }
  var %morse = $replacecs(%morse,-SPACEHOLDER-,$chr(32))

  return %morse
}

; *******************************************************************
; * Mose Code Character translation aliases                         *
; *******************************************************************
alias encmorse {
  if ($1 == a) return .-
  elseif ($1 == b) return -...
  elseif ($1 == c) return -.-.
  elseif ($1 == d) return -..
  elseif ($1 == e) return .
  elseif ($1 == f) return ..-.
  elseif ($1 == g) return --.
  elseif ($1 == h) return ....
  elseif ($1 == i) return ..
  elseif ($1 == j) return .---
  elseif ($1 == k) return -.-
  elseif ($1 == l) return .-..
  elseif ($1 == m) return --
  elseif ($1 == n) return -.
  elseif ($1 == o) return ---
  elseif ($1 == p) return .--.
  elseif ($1 == q) return --.-
  elseif ($1 == r) return .-.
  elseif ($1 == s) return ...
  elseif ($1 == t) return -
  elseif ($1 == u) return ..-
  elseif ($1 == v) return ...-
  elseif ($1 == w) return .--
  elseif ($1 == x) return -..-
  elseif ($1 == y) return -.--
  elseif ($1 == z) return --..
  elseif ($1 == 0) return -----
  elseif ($1 == 1) return .----
  elseif ($1 == 2) return ..---
  elseif ($1 == 3) return ...--
  elseif ($1 == 4) return ....-
  elseif ($1 == 5) return .....
  elseif ($1 == 6) return -....
  elseif ($1 == 7) return --...
  elseif ($1 == 8) return ---..
  elseif ($1 == 9) return ----.
  elseif ($1 == .) return .-.-.-
  elseif ($1 == ,) return --..--
  elseif ($1 == :) return ---...
  elseif ($1 == ?) return ..--..
  elseif ($1 == ') return .----.
  elseif ($1 == -) return -....-
  elseif ($1 == /) return -..-.
  elseif ($1 == ") return .-..-.
  elseif ($1 == @) return .--.-.
  elseif ($1 == =) return -...- 
  elseif ($1 == $chr(32)) return $chr(32) $+ / $+ $chr(32)
  else return $1
}
alias decmorse {
  if ($1 == .- ) return  a
  elseif ($1 == -... ) return  b
  elseif ($1 == -.-. ) return  c
  elseif ($1 == -.. ) return  d
  elseif ($1 == . ) return  e
  elseif ($1 == ..-. ) return  f
  elseif ($1 == --. ) return  g
  elseif ($1 == .... ) return  h
  elseif ($1 == .. ) return  i
  elseif ($1 == .--- ) return  j
  elseif ($1 == -.- ) return  k
  elseif ($1 == .-.. ) return  l
  elseif ($1 == -- ) return  m
  elseif ($1 == -. ) return  n
  elseif ($1 == --- ) return  o
  elseif ($1 == .--. ) return  p
  elseif ($1 == --.- ) return  q
  elseif ($1 == .-. ) return  r
  elseif ($1 == ... ) return  s
  elseif ($1 == - ) return  t
  elseif ($1 == ..- ) return  u
  elseif ($1 == ...- ) return  v
  elseif ($1 == .-- ) return  w
  elseif ($1 == -..- ) return  x
  elseif ($1 == -.-- ) return  y
  elseif ($1 == --.. ) return  z
  elseif ($1 == ----- ) return  0
  elseif ($1 == .---- ) return  1
  elseif ($1 == ..--- ) return  2
  elseif ($1 == ...-- ) return  3
  elseif ($1 == ....- ) return  4
  elseif ($1 == ..... ) return  5
  elseif ($1 == -.... ) return  6
  elseif ($1 == --... ) return  7
  elseif ($1 == ---.. ) return  8
  elseif ($1 == ----. ) return  9
  elseif ($1 == .-.-.- ) return  .
  elseif ($1 == --..-- ) return  ,
  elseif ($1 == ---... ) return  :
  elseif ($1 == ..--.. ) return  ?
  elseif ($1 == .----. ) return  '
  elseif ($1 == -....- ) return  -
  elseif ($1 == -..-. ) return  /
  elseif ($1 == .-..-. ) return  "
  elseif ($1 == .--.-. ) return  @
  elseif ($1 == -...- ) return  =
  elseif ($1 == /) return -SPACEHOLDER-
  else return $1
}