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
}