______________________________________________________________________

; This is a small tutorial, or example file, on how to make themes for eXtreme
; Read carefully, check other themes, and you'll soon be able to create a theme yourself.

______________________________________________________________________
______________________________________________________________________
		:::Info header:::

;name: <here you type theme's name...one word, max 2>
;author: <author>
;email: <author's email, optional>
;url: <author's site, optional>
;desc: <small description, keep in mind that it can't be too big or won't fit in display dialog>

______________________________________________________________________
		:::Settings header:::

[start]

basecolors= <(required) 4 numbers separated by commas, e.g. 10,4,15,11 ..these numbers represent the script colours for some events (whois, etc)>

colors= <(required) numbers separated by commas, e.g. 1,-,5,15,-,11,... ..these numbers represent the mirc colours for events
	the order is: background,editbox,editbox text,listbox,listbox text,action,ctcp,highlight,info,info2,invite,join,kick,mode,nick,normal,notice,notify,other,own,part,quit,topic,wallops,whois
	just type //ae $getactualcols in the status and copy/paste the result here>

rgbcolors= <(optional) 16 RGB numbers separated by commas, e.g. 13072278,-,5719505,9192809,-,2235235,... ..these numbers allow you to change mirc default colour boxes, in the specified order.
	if not default, just type //ae $getrgbcols in the status and copy/paste the result here>
	The non-specified box values (-) will be set to default. You can use //ae $_rgb to find out more about RGB values>

nickcolors= <(required) 8 numbers separated by commas, e.g. 4,5,2,4,12,14 ...it represents the nickcolours for me,notify,ircop,friends,shitlist,aways,ops,voices. Value 20 is for no colour

lb= <(optional) ascii code for default left bracket (check the ascii table in the script)>
rb= <(optional) ascii code for default right bracket>

logo= <(optional) your script's logo>
timestamp= <(optional) you can enter the custom timestamp for your theme. It will only be displayed when the timestamping is enabled>

join.sepline1= <(optional) separation line for topic/topic creation (upper)>
join.sepline2= <(optional) separation line for topic/topic creation (lower)>
sepline1= <(optional) general separation line (upper)>
sepline2= <(optional) general separation line (lower)>

fstatus= <(optional) status font/size, in the format 'font,size', e.g. Verdana,11. You can add ,b for bold>
fchannel= Verdana,11 <(optional) channel font, the one that appears in Display dialog>
fquery= Verdana,11,b <(optional) query/chat font>

onload= <(optional) here you can specify one command you want the theme to execute when loaded for the first time>

______________________________________________________________________
		:::Images support:::

imagestatus= <background for status window, in the format 'style file' (style is center, fill, normal, stretch, tile, photo)>
imagechan= <background for channel windows>
imagequery= <background for query, chat, and dedicated message windows>
imagemirc= <background for main mIRC window>
imagetoolbar= <image to use for toolbar>
imagebuttons= <image to use for toolbar buttons>
imageswitchbar= <image to use for switchbar>

______________________________________________________________________
		:::Schemes support:::

scheme1=<scheme name>
scheme2=<scheme name>
...
(you can have as many schemes as you want)

[scheme1]
(here you can enter any of the above headers, with the same rules. They will override the default, if present)

[scheme2]
(same as above)

...
______________________________________________________________________
		:::Alias:::

[aliases]

theme_filename { <filename MUST be smaller than 8 chars, if filename is mytheme.thm, you use theme_mytheme>

	if ($1 == joinself) return %::chan: channel
	elseif ($1 == rejoin) return %::chan: channel
	elseif ($1 == servererror) return %::text: error msg
	elseif ($1 == join) return %::nick: nick, %::address: address, %::chan: channel, %::userlevel: userlevel, %::country: country/masktype
	elseif ($1 == part) return %::nick: nick, %::address: address, %::chan: channel, %::text: reason
	elseif ($1 == quit) return %::nick: nick, %::address: address, %::text: reason
	elseif ($1 == mode) return %::nick: nick, %::address: address, %::chan channel, %::modes: modes
	elseif ($1 == kickself) return %::nick: nick, %::address: address, %::knick: knick(you), %::chan: channel, %::text: reason
	elseif ($1 == kick) return %::nick: nick, %::address: address, %::knick: knick, %::chan: channel, %::text: reason
	elseif ($1 == modeuser) return %::nick: nick/you, %::modes: modes
	elseif ($1 == textqueryself) return %::nick: you, %::text: text
	elseif ($1 == textchanself) return %::nick: you, %::chan: chan, %::text: text
	elseif ($1 == actionqueryself) return %::nick: nick/you, %::text: text
	elseif ($1 == actionchanself) return %::nick: nick/you, %::text: text
	elseif ($1 == textmsgself) return %::nick: target(nick/channel), %::text: text
	elseif ($1 == textmsg) return %::nick: nick, %::address: address, %::text: text
	elseif ($1 == textquery) return %::nick: nick, %::address: address, %::text: text
	elseif ($1 == textchan) return %::nick: nick, %::address: address, %::chan: channel, %::text: text
	elseif ($1 == actionquery) return %::nick: nick, %::address: address, %::text: text
	elseif ($1 == actionchan) return %::nick: nick, %::address: address, %::chan: channel, %::text: text
	elseif ($1 == nickself) return %::nick: oldnick, %::newnick: newnick
	elseif ($1 == nick) return %::nick: nick, %::address: address, %::newnick: newnick
	elseif ($1 == wallop) return %::nick: nick, %::text: text
	elseif ($1 == invite) return %::nick: nick, %::address: address, %::chan: channel
	elseif ($1 == topic) return %::nick: nick, %::address: address, %::chan: channel, %::text: topic
	elseif ($1 == noticechan) return %::nick: nick, %::address: address, %::chan: channel, %::text: text				<received channel notices>
	elseif ($1 == notice) return %::nick: nick, %::address: address, %::text: text							<received pvt notice>
	elseif ($1 == noticeserver) return %::nick: fromserver, %::text: text							<received pvt notice>
	elseif ($1 == noticeself) return %::nick: target (nick/channel), %::text: text							<sent notice>
	elseif ($1 == ctcpself) return %::nick: target nick, %::ctcp: ctcptype, %::text: extra parameters (for SOUND, etc)
	elseif ($1 == ctcpchanself) return %::nick: target channel, %::ctcp: ctcptype, %::text: extra parameters (for SOUND, etc)
	elseif ($1 == ctcpreplyself) return %::nick: target nick, %::ctcp: ctcptype, %::text: ctcp reply
	elseif ($1 == ctcpreply) return %::nick: nick, %::address: address, %::ctcp: ctcptype, %::text: ctcpreply
	elseif ($1 == ctcpchan) return %::chan: chan, %::address: address, %::target: target (channel), %::ctcp: ctcptype
	elseif ($1 == ctcp) return %::nick: nick, %::address: address, %::target: target (you), %::ctcp: ctcptype

	elseif ($1 == notify) return %::nick: nick, %::address: address
	elseif ($1 == unotify) return %::nick: nick, %::address: address

	elseif ($1 == dns) return %::nick: nick, %::address: address
	elseif ($1 == dnsresolve) return %::nick: nick, %::address: address, %::raddress: resolved address, %::iaddress: $iaddress, %::naddress
	elseif ($1 == dnserror) return %::nick: nick, %::address: address, %::iaddress: $iaddress, %::naddress (some won't exist)

	;whois
	elseif ($1 == raw.311) return $sepline1: separator1, %::nick: nick, %::ident: ident, %::host: host, %::userlevel: level, %::country: country, %::realname: ircname
	elseif ($1 == raw.307) return %::nick, %::text: registered nick
	elseif ($1 == raw.308) return %::nick, %::text: misc (admin)
	elseif ($1 == raw.309) return %::nick, %::text: misc (csop)
	elseif ($1 == raw.310) return %::nick, %::text: misc (helper)
	elseif ($1 == raw.313) return %::nick, %::text: misc (ircop)
	elseif ($1 == raw.317) return %::nick, $duration(%::idletime): idle duration, %::signontime: connect time, in asctime format, %::signontime.ctime: same, but in seconds (ctime format)
	elseif ($1 == raw.319) return %::nick,%::chan: channels
	elseif ($1 == raw.312) return %::nick, %::wserver: server, %::serverinfo: extra server info
	elseif ($1 == raw.378) return %::nick, %::text: misc (real hostname)
	elseif ($1 == raw.301) return %::nick, %::away: away msg
	elseif ($1 == wi.recnicks) return %::recnicks: recnicks, if any
	elseif ($1 == raw.318) return %::nick: nick, $sepline2: separator2

	;whowas
	elseif ($1 == raw.314) return $sepline1: separator1, %::nick: nick, %::ident: ident, %::host: host, %::userlevel: level, %::country: country, %::realname: ircname
	elseif ($1 == raw.369) return %::nick: nick, $sepline2: separator2

	;topic
	elseif ($1 == raw.332) return %::chan: channel, %::text: topic
	elseif ($1 == raw.333) return %::chan: channel, %::nick: nick who set topic, %::text: date (asctime)

	;lusers
	elseif ($1 == raw.250) return
	elseif ($1 == raw.251) return
	elseif ($1 == raw.252) return
	elseif ($1 == raw.253) return
	elseif ($1 == raw.254) return
	elseif ($1 == raw.255) return
	elseif ($1 == raw.265) return
	elseif ($1 == raw.266) return

	;names
	elseif ($1 == raw.353) return %::chan: channel, %::text: nicks
	elseif ($1 == raw.366) return %::chan: channel

	;who
	elseif ($1 == raw.352) return %::nick, %::address, %::away, %::isoper, %::cmode, %::chan, %::wserver, %::value: hops, %::realname
	elseif ($1 == raw.315) return %::value: who query


	;*** IMPORTANT!!! the next line IS NEEDED ***

	return $display($1)
}

NOTE: Variables as %::me, %::server and %::port (and %::numeric) are always set.
______________________________________________________________________


			<<IMPORTANT>>

-You DON'T need all lines, the ones you don't use will be set to default display (using your theme's colors).
-You can add your own aliases/identifiers to this file, but remember to name them with something like themename_bla to avoid conflicts.
-Be carefull with colour codes and text events, avoid putting them together (1 $+ $5- is WRONG, if the text starts with a number it will change the colour).

	:::Multi-line display

-You can no longer use  to 'break' the line.
-For multi-line display, you should use a different format. Ex:

	:join
	 %:echo %::nick ( $+ %::address $+ ) joins %::chan %:comments
	 %:echo %::nick is from %::country
	 return

This would echo 2 lines instead of 1.
The only inconvenience using this is with the Theme Editor (such line cannot be edited). But you should use it whenever you find necessary.
Also, if you choose to control the %:echo, your theme must handle extra %:comments, it should be appended to the end of the line.

---

There are some more identifiers/aliases you can find in other themes, as:

$_fade.nick(nick,colour1,colour2): does that fade effect on nick, with 2 colours (defaults to grey/white)

...etc, look for them :P

---

If you still have some doubts, just check an existing theme file...you'll quickly find out how it works.
After you make a theme, plz send it to me at kall@kall.cjb.net
If I find it suitable, I'll include it in the script (with your permission, keeping your credits but changing whatever I find necessary)

Good luck :)
Kall
