ircN Script Theme FAQ Submit your ircN script theme to submit@ircN.org Include your nick, email address, and description. To have your ircN Script Theme distributed on this page and/or #ircN@EFnet, then you must follow these set of rules. The ircN Development Team reserves the right to discriminate against any themes that feels will detract from ircN or those which were made specifically to harrass other users of ircN or IRC. ircN script themes can greatly change the look of ircN and even mIRC, they are new definitions for all of the most common messages that are echoed to the screen by ircN and mIRC. To create an ircN script theme you should know how to script and/or have some script experience as creating a script theme involves alot of mIRC script code. It is recommended that you refer to the sample theme provided and that you use the provided blank script theme template provided while creating your theme. The blank template includes some instructions about what should be included in certain sections of the theme, and the syntax/format for these the various parts of the theme. The sample can provide a guide to what identifier returns what in any particular echo in a theme as it is exactly the same as the ircN default echos. For ircN to load a script theme or for the theme to be included on www.ircN.org it must meet the following guidelines. Rules 1. All Script themes must have a [theme] section which includes a ircnscript=true, a name for the theme (name=) and a yes/no switch saying whether the theme includes sounds or not (sounds=). 2. All Script themes must include values for secondary colour (sc=), highlight colour (hc=), alternate colour (ac=), and the prompt for script echos (iecho=) under the [ircN] heading. 3. Any sounds in a script theme are under the header [default] and are in the same format, and must follow the same guidelines as ircN sound themes. 4. All ircN script themes must include all information that is included in the ircN default echo for the event. (ie: if ircN says "To kickban press F11.", the theme must say that F11 kickbans the nick.) 5. The script theme file extention must be th2. 6. If the theme includes any of the command sections, or any who/whois/whowas section, the section must be complete and not leave anything out, as the presence of this section in a script theme will cause ircN not to echo it's own whois box. 7. None of the command sections of the theme may include commands other than the commands necessary to echo the appropiate text or decide what text to echo. 8. No script theme may have code thet interferes with the normal operation of ircN in any way. 9. An addon may include a script theme, but it must be possible to turn off this script theme easily and still have the addon loaded. The addon must also unload the theme it is still loaded when the addon is uninstalled. 10. No script theme can include control codes in the theme code. (ctrl-k, o, b, u) To put text formatting in a script theme, use the available identifiers listed below. Helpful ircN Identifiers $bl - returns a bold format character (ctrl-b) $und - returns an underline format character (ctrl-u) $cl - returns a colour format character (ctrl-k) $o - returns the original text format character (ctrl-o) $vl - returns a vertical line character (|) (this must be used because mIRC interprets this character as a command divider) $bd(text) - returns the text in bold format. $under(text) - returns the text in underlined format $sc(text) - returns the text in the secondary colour $ac(text) - returns the text in the alternate colour $hc(text) - returns the text in the highlight colour $ul(nick,chan,userlevel) - returns the name of the user level of the given user. $kps(cps) - returns the characters per second in kilobytes per second $iduration(seconds) - returns the the seconds in seconds, minutes, hours, days, etc (this allows for decimal places unlike mirc's $duration) $wrap(start,end,text) - returns the text formatted so it will wordwrap around words it is recommended that you do not use this unless you really know what you are doing, the proper way to use this identifier is in the topic echo section of the sample.) Helpful ircN Commands /iecho - echos the text to the current window with the iecho prompt in front of it. /iiecho - echos the text to the current window /nline - echos the names to the window formatted with lines and boxes. For other help refer to the sample, it includes all the necessary variables, identifiers, and commands to echo all the events properly. ##################################### Blank Sample Script Theme ##################################### [theme] name= sound= ircn7script= [loadmsg] n1= n2= [ircN] sc= ac= hc= iecho= multisay= say= multimsg= msg= multidescribe= describe= multiprivdescribe= privdescribe= action= channotice= multichannotice= multinotice= lmsg= lnotice= shownicktext= shownickaction= invite= back= away= awaymsg1= awaymsg2= backmsg1= backmsg2= [nickcolors] shitted= user= protected= voice= op= bot= master= owner= [mIRCcolors] action= ctcp= highlight= info= info2= invite= join= kick= mode= nick= normal= notice= notify= other= own= part= quit= topic= wallops= whois= editbox= listbox= editbg= listbg= background= [mIRC] action= ban= ctcp= pwctcp1= pwctcp2= chanctcp= ctcpreply= ctcppingreply= ctcppingreply0= deop= devoice= invite1= invite2= joined= join1= join2= kick= kickme= kickrejoin= mode= nick= notice= op= part1= part2= quit1= quit2= servermode= serverop= servernotice1= servernotice2= text= topic= unban= usermode= voice= wallops1= wallops2= [nicklist] top= nottop= names= namecount= bottom= namestop1= namestop2a= namestop2b= [whois] top= address= name= chan= server= away= ircop= idle= bottom= [cwhois] top= address= name= chan= away= server= ircop= idle= bottom= [whowas] top= address= name= server= bottom= [cwhowas] top= address= name= server= last= bottom= [nickcomp] styles= ##################################### Sample Script Theme ##################################### [theme] name=Sample script theme by The Quietust sound=no ircn7script=$true [loadmsg] n1=Thank you for loading the ircN 7.0 sample script theme. n2=You should not notice any difference in echoes with this theme loaded, n3=except for stuff like MODE echoes, which will be 1 per line. [ircN] sc=14 ac=04 hc=12 iecho=$b $+ [[ $+ $hc(ß) $+ ]] $+ $b multisay=echo $colour(Own) -ti2 $gettok($1,%i.msg,44) < $+ $pst($me,$gettok($1,%i.msg,44)) $+ > $2- say=echo $colour(Own) -ti2 $1 < $+ $pst($me,$1) $+ > $2- multimsg=iiecho $sc(-) $+ > [[ $+ $sc(msg) $+ $u($chr(40)) $+ $hc($gettok($1,%i.msg,44)) $+ $u($chr(41)) $+ ]] $2- msg=iiecho $sc(-) $+ > [[ $+ $sc(msg) $+ $u($chr(40)) $+ $hc($1) $+ $u($chr(41)) $+ ]] $2- multidescribe=echo $colour(Action) -ti2 $gettok($1,%i.describe,44) * $pst($me,$gettok($1,%i.describe,44)) $2- describe=echo $colour(Action) -ti2 $1 * $pst($me,$1) $2- multiprivdescribe=echo $colour(Action) -tai2 $sc(-) $+ > [[ $+ $sc(act) $+ $u($chr(40)) $+ $hc($gettok($1,%i.describe,44)) $+ $u($chr(41)) $+ ]] * $me $2- privdescribe=echo $colour(Action) -tai2 $sc(-) $+ > [[ $+ $sc(act) $+ $u($chr(40)) $+ $hc($1) $+ $u($chr(41)) $+ ]] * $me $2- action=echo $colour(Action) -tai2 * $pst($me,$chan) $1- ctcp=$sc(-) $+ > [[ $+ $sc(ctcp) $+ $u($chr(40)) $+ $hc($1) $+ $u($chr(41)) $+ ]] $upper($2) $3- channotice=echo $colour(Notice) -ti2 $1 - $+ $pst($me,$1) $+ : $+ $1 $+ - $2- multichannotice=echo $colour(Notice) -ti2 $gettok($1,%i.notice,44) - $+ $pst($me,$gettok($1,%i.notice,44)) $+ : $+ $gettok($1,%i.notice,44) $+ - $2- notice=$sc(-) $+ > [[ $+ $sc(not) $+ $u($chr(40)) $+ $hc($1) $+ $u($chr(41)) $+ ]] $2- multinotice=$sc(-) $+ > [[ $+ $sc(not) $+ $u($chr(40)) $+ $hc($gettok($1,%i.notice,44)) $+ $u($chr(41)) $+ ]] $2- lmsg=$u([) $+ $sc(msg) $+ ( $+ $ac(Selected Nicks) $+ ) $+ $u(]) $1- lnotice=$u([) $+ $sc(not) $+ ( $+ $ac(Selected Nicks) $+ ) $+ $u(]) $1- shownicktext=< $+ $nick $+ : $+ $sc($chan) $+ > %tmp shownickaction=* $nick $+ : $+ $sc($chan) %tmp invite=Invited $hc($1) to $hc($2) at $hc($atime) $+ . back=You are no longer marked as being away. away=You have been marked as being away. awaymsg1=describe $gettok(%away.chan,%i.away,44) is away, $b($1-) $u([) $+ log $+ $b(:) $+ $upper(%msglog) $+ $u(]) $page-msg $e-mail($email) $uin(%uin) awaymsg2=ame is away, $b($1-) $u([) $+ log $+ $b(:) $+ $upper(%msglog) $+ $u(]) $page-msg $e-mail($email) $uin(%uin) backmsg1=describe $gettok(%away.chan,%i.back,44) has returned $+ %tmp.back $+ . $u([) $+ gone $+ $b(:) $+ $gone $+ $u(]) backmsg2=ame has returned $+ %tmp.back $+ . $u([) $+ gone $+ $b(:) $+ $gone $+ $u(]) [nickcolors] shitted=04 user=14 protected=10 voice=06 halfop=02 op=12 bot=05 master=07 owner=03 [mIRCcolors] action=6 ctcp=4 highlight=5 info=2 info2=3 invite=3 join=3 kick=3 mode=3 nick=3 normal=1 notice=5 notify=2 other=6 own=1 part=3 quit=2 topic=3 wallops=5 whois=1 editbox=1 listbox=1 editbg=0 listbg=0 background=0 [mIRC] action=echo $colour(Action) -ti2 $chan * $pst($nick,$chan) $1- ban=echo $colour(Mode) -ti2 $chan *** $nick sets mode: +b $banmask ctcp=CTCP $hc($1) $sc(request) by $u($hc($nick)) at $hc($atime) $+ $cpms($2-) pwctcp1=CTCP $hc($1) $sc(request) by $u($hc($nick)) at $hc($atime) $+ $cpms($str(*,$len($2))) $3- pwctcp2=CTCP $hc($1) $sc(request) by $u($hc($nick)) at $hc($atime) $+ $cpms($str(*,$len($2)))) $str(*,$len($3)) $4- chanctcp=$hc($nick) has requested a channel $sc($1) on $hc($chan) at $hc($atime) $+ $cpms($2-) ctcpreply=CTCP $hc($1) $sc(reply) from $u($hc($nick)) $+ : $2- ctcppingreply=CTCP $hc(PING) $sc(reply) from $u($hc($nick)) $+ : $iduration(%pt) ctcppingreply0=CTCP $hc(PING) $sc(reply) from $u($hc($nick)) $+ : 0 seconds dehelp=echo $colour(Mode) -ti2 $chan *** $nick sets mode: -h $hnick deop=echo $colour(Mode) -ti2 $chan *** $nick sets mode: -o $opnick devoice=echo $colour(Mode) -ti2 $chan *** $nick sets mode: -v $vnick help=echo $colour(Mode) -ti2 $chan *** $nick sets mode: +h $hnick invite1=echo $colour(Invite) -tsi2 *** $nick ( $+ $address $+ ) invites you to join $chan invite2=echo $colour(Invite) -tai2 *** $nick ( $+ $address $+ ) invites you to join $chan joined=echo $colour(Join) -ti2 $chan *** Now talking in $chan join1=echo $colour(Join) -ti2 $chan *** $nick ( $+ $address $+ ) has joined $chan join2=echo $colour(Join) -ti2 $chan *** Joins: $nick ( $+ $address $+ ) kick=echo $colour(Kick) -ti2 $chan *** $knick was kicked by $nick ( $+ $1- $+ $o $+ ) kickme=echo $colour(Kick) -ti2 $chan *** You were kicked by $nick ( $+ $1- $+ $o $+ ) kickrejoin=echo $colour(Info) -i2 $chan *** Attempting to rejoin mode=echo $colour(Mode) -ti2 $chan *** $nick sets mode: $1- nick=echo $colour(Nick) -ti2 $comchan($newnick,%i) *** $nick is now known as $newnick notice=echo $colour(Notice) -ti2 $chan - $+ $pst($nick,$chan) $+ : $+ $chan $+ - $1- op=echo $colour(Mode) -ti2 $chan *** $nick sets mode: +o $opnick part1=echo $colour(Part) -ti2 $chan *** $nick ( $+ $address $+ ) has left $chan $paren($1-) part2=echo $colour(Part) -ti2 $chan *** Parts: $nick ( $+ $address $+ ) $paren($1-) quit1=echo $colour(Quit) -ti2 $comchan($nick,%i) *** $nick has quit IRC $paren($1-) quit2=echo $colour(Quit) -ti2 $comchan($nick,%i) *** Quits: $nick $paren($1-) servermode=echo $colour(Mode) -ti2 $chan *** $nick sets mode: $1- serverop=echo $colour(Mode) -ti2 $chan *** $nick sets mode: +o $opnick servernotice1=echo $colour(Notice) -tsi2 $sc(-) $+ $hc($nick) $+ $sc(-) $1- servernotice2=echo $colour(Notice) -tai2 $sc(-) $+ $hc($nick) $+ $sc(-) $1- text=echo $colour(Normal) -ti2 $chan < $+ $pst($nick,$chan) $+ > $1- topic=echo $colour(Topic) -ti2 $chan *** $pst($nick,$chan) changes the topic to ' $+ $1- $+ $o $+ ' unban=echo $colour(Mode) -ti2 $chan *** $nick sets mode: -b $banmask usermode=echo $colour(Mode) -tsi2 *** $me sets mode: $1- voice=echo $colour(Mode) -ti2 $chan *** $nick sets mode: +v $vnick wallops1=echo $colour(Wallops) -tsi2 $sc(!) $+ $hc($nick) $+ $sc(!) $1- wallops2=echo $colour(Wallops) -tai2 $sc(!) $+ $hc($nick) $+ $sc(!) $1- [nicklist] top=$lfix(3,.) $+ $str(-,15) $+ . $+ $str(-,15) $+ . $+ $str(-,15) $+ . $+ $str(-,15) $+ . names=$lfix(3,$vl) $fix(13,$nll($gettok($1-,%i.nline,32))) $vl $fix(13,$nll($gettok($1-,$pls(1,%i.nline),32))) $vl $fix(13,$nll($gettok($1-,$pls(2,%i.nline),32))) $vl $fix(13,$nll($gettok($1-,$pls(3,%i.nline),32))) $vl namecount=4 bottom=$lfix(3,') $+ $str(-,15) $+ ' $+ $str(-,15) $+ ' $+ $str(-,15) $+ ' $+ $str(-,15) $+ ' namestop1=$lfix(3,.) $+ $str(-,63) $+ . namestop2a=$lfix(3,$vl) Names [[ $+ $hc($3) $+ : $+ $sc($fix(2,%jstat.num2)) $+ ]] $lfix($sub(51,$len($3)),$vl) namestop2b=$lfix(3,$vl) Next [[ $+ $hc($3) $+ : $+ $sc($fix(2,%jstat.num2)) $+ ]] $lfix($sub(52,$len($3)),$vl) [whois] top=$lfix(16,_______________) $+ $hc(_______________) $+ $sc(_______________) address=$vl $b($sc($2)) $u($chr(40)) $+ $3 $+ $hc(@) $+ $o $+ $4 $+ $u($chr(41)) name=$vl $hc($addtok($b(n),ame,0)) $sc(:) $6- chan=$sc($vl) $hc($addtok($b(c),han,0)) $sc(:) $3- server=$sc($vl) $hc($addtok($b(s),erv,0)) $sc(:) $3 away=$vl $hc($addtok($b(a),way,0)) $sc(:) $3- ircop=$sc($vl) $hc($addtok($b(i),rcop,0)) $+ $sc(:) yes idle=$sc($vl) $hc($addtok($b(i),dle,0)) $sc(:) $duration($3-) bottom=$lfix(16,ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ) $+ $hc(ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ) $+ $sc(ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ) [cwhois] top=$lfix(46,_____________________________________________) address=$vl $b($2) ( $+ $3 $+ @ $+ $4 $+ ) name=$vl $b(n) $+ ame : $6- chan=$vl $b(c) $+ han : $3- away=$vl $b(a) $+ way : $3- server=$vl $b(s) $+ erv : $3 ircop=$vl $b(i) $+ rcop: yes idle=$vl $b(i) $+ dle : $duration($3-) bottom=$lfix(46,ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ) [whowas] top=$lfix(16,_______________) $+ $hc(_______________) $+ $sc(_______________) address=$vl $b($sc($2)) $u($chr(40)) $+ $3 $+ $hc(@) $+ $o $+ $4 $+ $u($chr(41)) name=$vl $hc( [ [ $b(n) ] $+ ame ] ) $sc(:) $6- server=$vl $hc( [ [ $b(s) ] $+ erv ] ) $sc(:) $3 last=$vl $hc( [ [ $b(l) ] $+ ast ] ) $sc(:) $4- bottom=$lfix(16,ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ) $+ $hc(ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ) $+ $sc(ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ) [cwhowas] top=$lfix(46,_____________________________________________) address=$vl $b($2) ( $+ $3 $+ @ $+ $4 $+ ) name=$vl $b(n) $+ ame : $6- server=$vl $b(s) $+ erv : $3 last=$vl $b(l) $+ ast : $4- bottom=$lfix(46,ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ) [nickcomp] styles=default,n1,n2,n3,n4,n5 default=%nlb $+ $1 $+ %nrb n1=$b $+ $iif($len($1) > 1,$left($1,1)) $+ $b $+ $mid($1,2,$sub($len($1),2)) $+ $u $+ $right($1,1) $+ $u $+ $b(:) n2=$b $+ $iif($len($1) > 1,$left($1,1)) $+ $b $+ $u $+ $mid($1,2,$sub($len($1),2)) $+ $u $+ $b $+ $right($1,1) $+ $b - n3=$lower($replace($u($1),q,$u(q),y,$u(y),p,$u(p),g,$u(g),j,$u(j))) n4=$u $+ $left($1,$int($div($sub($len($1),1),2))) $+ $b $+ $mid($1,$pls($int($div($sub($len($1),1),2)),1),$sub(2,$mod($len($1),2))) $+ $u $+ $right($1,$int($div($sub($len($1),1),2))) $+ $b $+ : n5=$lower($replace($u($left($1,1)),q,$under(q),y,$under(y),p,$under(p),g,$under(g),j,$under(j))) $+ $lower($replace($under($bd($mid($1,2,1))),q,$under(q),y,$under(y),p,$under(p),g,$under(g),j,$under(j))) $+ $lower($replace($under($mid($1,3,$sub($len($1),2))),q,$under(q),y,$under(y),p,$under(p),g,$under(g),j,$under(j)))