; Ascii Table
; By Carnage-
; - The snippet is for quickly inserting an ascii charecter into what you are writing
; when you press f5(or whatever you change it too), an ascii window will popup and
; you can just simply click on what char you want.
; - Also, if you hold down control while clicking, the window will not close, so you
; can click one more than one charecter. If you open the window and dont want to click
; anything, you can press control to close it.
;
; You can change the font the script draws in by using /ascii.font [fontname] with or without
; parameters, if there are no parameters an input box will popup, else, it uses the parameters given.
;
; History:
; Version 2.3 Final
; - more error checking
; Version 2.2
; - made the window open up correctly on all occasions
; - added some more error checking
; Version 2.1
; - removed the about window, its kinda unnessary in a small snippet like this.
; - added a function to check if a font exists using a modified $isfont() function by ToKeN
; Version 2
; - added the ability to change the colors the window is drawn in. Just in case some people want it
; to match their themes or something. The alias is /ascii.color <color name> <rgb>, and you can
; scroll down to the alias to find out how to use it.
; - added a nifty about window.
; - added load/unload events
; press f5, or whatever you change it to, to open the ascii window
alias f5 { if ($window(@ascii)) { return } | set %ascii.lastwin $active | ascii.open }
alias ascii.open {
; prelim checks.
if (!%ascii.font) { %ascii.font = TAHOMA }
if (!%ascii.linecolor) { %ascii.linecolor = 0 }
if (!%ascii.fontcolor) { %ascii.fontcolor = 0 }
if (!%ascii.bgcolor) { %ascii.bgcolor = $rgb(192,192,192) }
if (!%ascii.hilcolor) { %ascii.hilcolor = 16742767 }
; open window
window -hpBCzd +dL @ascii 100 100 449 113
; fill in the bg
drawrect -nrf @ascii %ascii.bgcolor 1 0 0 449 113
; draw lines
var %r = 1
while (%r < 33) { drawline -nr @ascii %ascii.linecolor 1 $calc(%r *14) 0 $calc(%r *14) 112 | inc %r }
var %r = 1
while (%r < 8) { drawline -nr @ascii %ascii.linecolor 1 0 $calc(%r *16) 450 $calc(%r *16) | inc %r }
; extra lines
drawline -nr @ascii %ascii.linecolor 1 0 0 458 0
drawline -nr @ascii %ascii.linecolor 1 0 0 0 113
var %x = 17,%y = 2
var %i = 33,%n = 63
; Condensed code to draw the charecters
while (%n < 270) {
while (%i <= %n) { drawtext -nr @ascii %ascii.fontcolor %ascii.font -8 %x %y $chr(%i) | var %x = $calc(%x + 14) | inc %i }
var %i = $calc(%n +1),%n = $calc(%i +31),%y = $calc(%y + 16),%x = 3
}
; update everything!
drawdot @ascii
window -a @ascii
}
menu @ascii {
sclick:{
; store where the user clicked
var %x = $mouse.x
var %y = $mouse.y
; find the value of the ascii chr based on where they clicked
var %chr $chr($calc( $gettok($calc(%x /14),1,46) + ($gettok($calc(%y /16),1,46) *32) +32))
; if the user already clicked something, unhilight the charecters box
if (%ascii.lastclick) { drawrect -r @ascii %ascii.bgcolor 1 %ascii.lastclick 13 15 }
; hilight what the user clicked
drawrect -r @ascii %ascii.hilcolor 1 $calc(%x - (%x % 14) +1) $calc(%y - (%y % 16) +1) 13 15
; set a variable to unhilight it if the user clicks something else
set %ascii.lastclick $calc(%x - (%x % 14) +1) $calc(%y - (%y % 16) +1)
; if the user is holding control we dont want the window to close
if ($mouse.key & 2) { asc %chr 0 }
; if the user isnt holding control, close the window
else { asc %chr 1 }
}
}
; once the user lets go of control, the window automatically closes
on *:keyup:@ascii:17:{ window -c @ascii }
alias -l asc {
; add the chr to whatever is already in the editbox
if (%ascii.lastwin == Status Window) { editbox -s $editbox(%ascii.lastwin) $+ $1 }
else { editbox %ascii.lastwin $editbox(%ascii.lastwin) $+ $1 }
; if the user isnt holding control, close window
if ($2 == 1) { window -c @ascii | unset %ascii.lastclick }
}
; /ascii.font [fontname]
; Change the font that the table is draw in
alias ascii.font {
if ($1) { var %font = $1 }
else { var %font = $$input(Font:,133) }
if (%font) {
if ($isfont(%font)) { %ascii.font = %font }
else { echo -s Error: Font $+(",%font,") does not exist on your system. }
}
}
; /ascii.color <color name> <rgb>
; the rgb is not in r,g,b format, use the $rgb() function when doing it
; ex: /ascii.color text $rgb(255,0,255)
; available color names: fontcolor, hilcolor, linecolor, bgcolor
alias ascii.color {
if ($2) {
if ($istok(fontcolor hilcolor linecolor bgcolor,$1,32)) { set %ascii. $+ $1 [ [ $2 ] ] }
else { echo Error: Color name $+(",$1,") isnt a valid color type, please choose from these types: fontcolor, hilcolor, linecolor, bgcolor }
}
}
; Event blah blah.
on *:load:{
linesep -s
echo -si6 *** - Ascii Table Addon
echo -si6 *** - Press F5 to load the ascii table. Click on whatever charecter you want and the window will close.
echo -si6 *** - If you would like the window to stay open, then hold control while clicking the charecters you would like.
echo -si6 *** - Aliases:
echo -si6 *** - /ascii.font <fontname> - changes the font that the window is drawn in
echo -si6 *** - /ascii.color <color name> <rgb> - changes the colors the table is drawn in
echo -si6 *** - ---available color names: fontcolor, hilcolor, linecolor, bgcolor
echo -si6 *** - ---the rgb in the /ascii.color alias should NOT be in the r,g,b format, when you are entering it, use the $!rgb() function to convert it.
echo -si6 *** - End.
linesep -s
}
on *:unload:{
unset %ascii.*
}
; Modified $isfont() function origionally made by ToKeN
alias isfont {
var %string = Does this font exist?
if ($width(%string,$1-,12) == $width(%string,Not a real font,12)) && ($height(%string,$1-,12) == $height(%string,Not a real font,12)) { return 0 }
else { return 1 }
}Чтобы выбрать любой символ из таблицы нажимаете F5.
Кнопку вызова таблицы можно изменить в строке
alias f5 { if ($window(@ascii)) { return } | set %ascii.lastwin $active | ascii.open }











