IRCManager 1.33 ((C) Superior)
With this script you can pre-set the servers and channels which you want to join automatically when you start mIRC. For each server you can set a different nickname and a password for automatic identification.
IRCManager is extremely easy to use, each setting can be set, changed or removed by using a dialog. This dialog can be entered by selecting the option IRCManager on the right-click channel or server menu.
If IRCManager is enabled to load automatic on your mIRC, you don't need to automatically join on connect. It's preffered to deselect the options 'Connect on startup' and 'Pop up dialog connect on startup' (You can find them: Tools -> Options -> Treebar: Connect - Options!)
Speading or modifying this script isn't appreciated without the author's authorisation! However commenting or rating this script would be very a appreciated!
Update Information:
It's recommended to update all version earlier then IRCManager 1.31!
menu channel,menubar,status {
.IRCManager { dialog $iif($dialog(ircmanager),-ev,-md) ircmanager ircmanager }
.-
}
dialog -l ircmanager {
title "Loading..."
size -1 -1 500 380
option pixels
text "" 1, 20 20 300 20
list 2, 50 40 270 80
button "" 3, 340 40 80 20
button "" 4, 340 60 80 20
button "" 5, 340 80 80 20
button "/\" 6, 20 40 20 20
button "\/" 7, 20 70 20 20
text "" 17, 20 100 500 20
text "Server settings:" 10, 20 120 120 20
text "Server:" 11, 20 140 80 20
text "Port:" 12, 20 160 80 20
text "Channels:" 13, 20 180 80 20
text "Personal settings:" 14, 20 220 120 20
text "Nickname:" 15, 20 240 80 20
text "Password:" 16, 20 260 80 20
box "" 20, 100 140 200 20
box "" 21, 100 160 200 20
box "" 22, 100 180 200 20
box "" 23, 100 240 200 20
box "" 24, 100 260 200 20, pass
edit "" 30, 100 140 200 20
edit "" 31, 100 160 200 20, limit 5
edit "" 32, 100 180 200 20, autohs
edit "" 33, 100 240 200 20
edit "" 34, 100 260 200 20, pass
text "" 50, 310 140 200 20
text "" 51, 310 160 200 20
text "" 52, 310 180 200 20
text "" 53, 310 240 200 20
text "" 54, 310 260 200 20
check "Enable IRCManager" 40, 20 300 200 20
check "Start IRCManager on connect" 41, 20 320 200 20
button "Ok" 100, 20 340 80 20, ok
text "" 101, 110 342 350 20
}
on *:dialog:ircmanager:*:*: {
if ($devent == init) {
echo -a 3Loading IRCManager..
set %ircmanager.version 1.33
dialog -t ircmanager IRCManager %ircmanager.version [By Superior (c) 2007-2008]
set %ircmanager.status server.list
if (%ircmanager.setting.access == $NULL) {
set %ircmanager.setting.access on
}
elseif (%ircmanager.setting.access == on) {
did -ec ircmanager 40
}
elseif (%ircmanager.setting.access == off) {
did -eu ircmanager 40
}
if (%ircmanager.setting.startup == $NULL) {
set %ircmanager.setting.startup on
$iif(%ircmanager.setting.access == on,did -ec ircmanager 41,did -bc ircmanager 41)
}
elseif (%ircmanager.setting.startup == on) {
$iif(%ircmanager.setting.access == on,did -ec ircmanager 41,did -bc ircmanager 41)
}
elseif (%ircmanager.setting.startup == off) {
$iif(%ircmanager.setting.access == on,did -eu ircmanager 41,did -bu ircmanager 41)
}
did -ar ircmanager 1 IRCManager: Your Servers!
var %i 1
while ($gettok(%ircmanager.serverlist,%i,124) != $NULL) {
did -a ircmanager 2 $gettok(%ircmanager.serverlist,%i,124)
inc %i
}
did -ar ircmanager 3 Add Server
did -ar ircmanager 4 Edit Server
did -ar ircmanager 5 Del Server
did -h ircmanager 30-34
did -ar ircmanager 101 IRCManager %ircmanager.version copyright by Superior
}
if ($devent == sclick) {
if ($did == 2) {
did -ar ircmanager 20 %ircmanager.server. $+ $did(2).seltext
did -ar ircmanager 21 %ircmanager.port. [ $+ [ $did(2).seltext ] ]
did -ar ircmanager 22 %ircmanager.chan. [ $+ [ $did(2).seltext ] ]
did -ar ircmanager 23 %ircmanager.nickname. [ $+ [ $did(2).seltext ] ]
did -ar ircmanager 24 $str(*,$len(%ircmanager.nickpass. [ $+ [ $did(2).seltext ] ]))
}
if ($did == 3) {
;ADD Server
if (%ircmanager.status == server.list) {
set %ircmanager.status server.add
did -ar ircmanager 1 IRCManager: Add a server!
did -b ircmanager 2
did -ar ircmanager 3 Add Server
did -ar ircmanager 4 Reset
did -ar ircmanager 5 Cancel
did -h ircmanager 20-24
did -rv ircmanager 30-34
did -var ircmanager 51 Use a '+' infront of SSL ports!
did -var ircmanager 52 Use a ',' between the channels!
did -var ircmanager 54 Do not enter on public PC!
did -ar ircmanager 17 Click 'Add Server' to add the server to the list after you entered the details!
}
elseif (%ircmanager.status == server.add) {
if ($did(30).text == $NULL) {
did -ar ircmanager 101 Please add a server!
did -ar ircmanager 17 Please add a server!
}
else {
set %ircmanager.status server.list
set %ircmanager.serverlist %ircmanager.serverlist $+ $did(30).text $+ |
set %ircmanager.port. [ $+ [ $did(30).text ] ] $did(31).text
set %ircmanager.chan. [ $+ [ $did(30).text ] ] $did(32).text
set %ircmanager.nickname. [ $+ [ $did(30).text ] ] $did(33).text
set %ircmanager.nickpass. [ $+ [ $did(30).text ] ] $did(34).text
did -ae ircmanager 2 $did(30).text
did -are ircmanager 3 Add Server
did -are ircmanager 4 Edit Server
did -are ircmanager 5 Del Server
did -ar ircmanager 17
did -v ircmanager 20-24
did -h ircmanager 30-34
did -h ircmanager 50-54
}
}
elseif (%ircmanager.status == server.edit) {
set %ircmanager.status server.list
set %ircmanager.port. [ $+ [ $did(20).text ] ] $did(31).text
set %ircmanager.chan. [ $+ [ $did(20).text ] ] $did(32).text
set %ircmanager.nickname. [ $+ [ $did(20).text ] ] $did(33).text
set %ircmanager.nickpass. [ $+ [ $did(20).text ] ] $did(34).text
did -e ircmanager 2
did -are ircmanager 3 Add Server
did -are ircmanager 4 Edit Server
did -are ircmanager 5 Del Server
did -ar ircmanager 17
did -v ircmanager 20
did -arv ircmanager 21 %ircmanager.port. [ $+ [ $did(30).text ] ]
did -arv ircmanager 22 %ircmanager.chan. [ $+ [ $did(30).text ] ]
did -arv ircmanager 23 %ircmanager.nickname. [ $+ [ $did(30).text ] ]
did -arv ircmanager 24 $str(*,$len(%ircmanager.nickpass. [ $+ [ $did(2).seltext ] ]))
did -h ircmanager 30-34
}
elseif (%ircmanager.status == server.del) {
set %ircmanager.status server.list
set %ircmanager.server.temp $did(2).seltext
unset %ircmanager.*. $+ $did(2).seltext
did -ar ircmanager 1 IRCManager: Your Servers!
did -er ircmanager 2
var %i 1
while (%i <= $numtok(%ircmanager.serverlist,124)) {
if (%ircmanager.server.temp != $gettok(%ircmanager.serverlist,%i,124)) {
set %ircmanager.serverlist.temp %ircmanager.serverlist.temp $+ $gettok(%ircmanager.serverlist,%i,124) $+ |
did -a ircmanager 2 $gettok(%ircmanager.serverlist,%i,124)
}
inc %i
}
set %ircmanager.serverlist %ircmanager.serverlist.temp
unset %ircmanager.serverlist.temp
unset %ircmanager.server.temp
did -are ircmanager 3 Add Server
did -are ircmanager 4 Edit Server
did -are ircmanager 5 Del Server
did -ar ircmanager 17
did -av ircmanager 20-24
did -h ircmanager 30-34
}
}
if ($did == 4) {
;Edit Server
if (%ircmanager.status == server.list) {
if ($did(2).seltext == $NULL) {
did -ar ircmanager 101 Select a server!
did -ar ircmanager 17 Please add a server!
}
if ($did(2).seltext != $NULL) {
set %ircmanager.status server.edit
did -ar ircmanager 1 IRCManager: Edit a server!
did -b ircmanager 2
did -ar ircmanager 3 Edit Server
did -ar ircmanager 4 Reset
did -ar ircmanager 5 Cancel
did -ar ircmanager 17 Click 'Edit Server' to save the new server settings!
did -h ircmanager 20-24
did -arbv ircmanager 30 $did(2).seltext
did -arv ircmanager 31 %ircmanager.port. [ $+ [ $did(2).seltext ] ]
did -arv ircmanager 32 %ircmanager.chan. [ $+ [ $did(2).seltext ] ]
did -arv ircmanager 33 %ircmanager.nickname. [ $+ [ $did(2).seltext ] ]
did -arv ircmanager 34 %ircmanager.nickpass. [ $+ [ $did(2).seltext ] ]
}
}
elseif (%ircmanager.status == server.add) {
did -ar ircmanager 30-34
}
elseif (%ircmanager.status == server.edit) {
did -ar ircmanager 31 %ircmanager.port. [ $+ [ $did(2).seltext ] ]
did -ar ircmanager 32 %ircmanager.chan. [ $+ [ $did(2).seltext ] ]
did -ar ircmanager 33 %ircmanager.nickname. [ $+ [ $did(2).seltext ] ]
did -ar ircmanager 34 %ircmanager.nickpass. [ $+ [ $did(2).seltext ] ]
}
}
if ($did == 5) {
;DEL Server
if (%ircmanager.status == server.list) {
if ($did(2).seltext == $NULL) {
did -ar ircmanager 101 Select a server!
did -ar ircmanager 17 Please add a server!
}
if ($did(2).seltext != $NULL) {
set %ircmanager.status server.del
did -ar ircmanager 1 IRCManager: Delete a server!
did -b ircmanager 2
did -ar ircmanager 3 Del Server
did -arb ircmanager 4 Edit Server
did -ar ircmanager 5 Cancel
did -ar ircmanager 17 Click 'Del Server' to delete the selected server!
}
}
else {
set %ircmanager.status server.list
did -ar ircmanager 1 IRCManager: Your Servers!
did -e ircmanager 2
did -are ircmanager 3 Add Server
did -are ircmanager 4 Edit Server
did -are ircmanager 5 Del Server
did -ar ircmanager 17
did -v ircmanager 20-24
did -h ircmanager 30-34
did -h ircmanager 50-54
}
}
if ($did == 6) {
;Server UP
if ($did(2).seltext == $NULL) {
did -ar ircmanager 101 Select a server!
did -ar ircmanager 17 Please add a server!
}
else {
if ($findtok(%ircmanager.serverlist,$did(2).seltext,1,124) > 1) {
set %ircmanager.serverlist.temp $gettok(%ircmanager.serverlist,$calc($findtok(%ircmanager.serverlist,$did(2).seltext,1,124)-1),124)
set %ircmanager.serverlist $reptok(%ircmanager.serverlist,$gettok(%ircmanager.serverlist,$calc($findtok(%ircmanager.serverlist,$did(2).seltext,1,124)-1),124),$did(2).seltext,1,124)
set %ircmanager.serverlist $reptok(%ircmanager.serverlist,$did(2).seltext,%ircmanager.serverlist.temp,2,124) $+ |
did -o ircmanager 2 $calc($did(2).sel - 1) $did(2).seltext
did -o ircmanager 2 $did(2).sel %ircmanager.serverlist.temp
unset %ircmanager.serverlist.temp
}
}
}
if ($did == 7) {
;Server DOWN
if ($did(2).seltext == $NULL) {
did -ar ircmanager 101 Select a server!
did -ar ircmanager 17 Please add a server!
}
else {
if ($findtok(%ircmanager.serverlist,$did(2).seltext,1,124) < $numtok(%ircmanager.serverlist,124)) {
set %ircmanager.serverlist.temp $gettok(%ircmanager.serverlist,$calc($findtok(%ircmanager.serverlist,$did(2).seltext,1,124)+1),124)
set %ircmanager.serverlist $reptok(%ircmanager.serverlist,$gettok(%ircmanager.serverlist,$calc($findtok(%ircmanager.serverlist,$did(2).seltext,1,124)+1),124),$did(2).seltext,1,124)
set %ircmanager.serverlist $reptok(%ircmanager.serverlist,$did(2).seltext,%ircmanager.serverlist.temp,1,124) $+ |
did -o ircmanager 2 $calc($did(2).sel + 1) $did(2).seltext
did -o ircmanager 2 $did(2).sel %ircmanager.serverlist.temp
unset %ircmanager.serverlist.temp
}
}
}
if ($did == 40) {
if ($did(40).state == 1) {
set %ircmanager.setting.access on
did -e ircmanager 41
}
if ($did(40).state == 0) {
set %ircmanager.setting.access off
did -b ircmanager 41
}
}
if ($did == 41) {
if ($did(40).state == 1) {
set %ircmanager.setting.startup on
}
if ($did(40).state == 0) {
set %ircmanager.setting.startup off
}
}
if ($did == 100) {
if (%ircmanager.status != server.list) {
did -ar ircmanager 17 Please return to main menu first!
did -ar ircmanager 101 Are you sure you want to close without saving? Return to main menu!
/halt
}
}
if ($did(101).text != $NULL) {
.timerIRCMMessage 1 04 { did -ar ircmanager 101 }
}
}
if ($devent == close) {
if ($timer(0) != 0) {
.timerIRCM* off
}
}
}
on *:start: {
if ((%ircmanager.setting.access == on) && (%ircmanager.setting.startup == on)) {
echo -a 3Loading IRCManager settings...
set %ircmanager.connections $numtok(%ircmanager.serverlist,124)
var %x 1
while (%x <= $numtok(%ircmanager.serverlist,124)) {
echo -s 4----
echo -s 4Connecting to $gettok(%ircmanager.serverlist,%x,124) at port %ircmanager.port. [ $+ [ $gettok(%ircmanager.serverlist,%x,124) ] ]
echo -s 4You are now known as %ircmanager.nickname. [ $+ [ $gettok(%ircmanager.serverlist,%x,124) ] ]
echo -s 4Configuration compleet! Have a nice day and enjoy chatting!
echo -s 4IRCManager %ircmanager.version by Superior
echo -s 4----
inc %x
}
var %i 1
if (%x == 0) {
echo -s 4----
echo -s 4No servers added to IRCManager
echo -s 4IRCManager %ircmanager.version by Superior
echo -s 4----
}
var %i 1
while (%i < %x) {
if (%i == 1) {
.timer $+ %i 1 3 /server $gettok(%ircmanager.serverlist,%i,124) + $+ %ircmanager.port. [ $+ [ $gettok(%ircmanager.serverlist,%i,124) ] ]
}
elseif (%i != 1) {
.timer $+ %i 1 $calc(%i * 3) /server -m $gettok(%ircmanager.serverlist,%i,124) + $+ %ircmanager.port. [ $+ [ $gettok(%ircmanager.serverlist,%i,124) ] ]
}
inc %i
}
}
}
on *:connect: {
if (%ircmanager.setting.access == on) {
var %i 1
while (%i <= $numtok(%ircmanager.serverlist, 124)) {
if ($gettok($server,$calc($numtok($server, 46) - 1) -,46) == $gettok($gettok(%ircmanager.serverlist,%i,124),2-,46)) {
nick %ircmanager.nickname. [ $+ [ $gettok(%ircmanager.serverlist,%i,124) ] ]
if (%ircmanager.nickpass. [ $+ [ $gettok(%ircmanager.serverlist,%i,124) ] ] != $NULL) {
identify %ircmanager.nickpass. [ $+ [ $gettok(%ircmanager.serverlist,%i,124) ] ]
}
var %x 1
while (%x <= $numtok(%ircmanager.chan. [ $+ [ $gettok(%ircmanager.serverlist,%i,124) ] ],44)) {
join $gettok(%ircmanager.chan. [ $+ [ $gettok(%ircmanager.serverlist,%i,124) ] ],%x,44)
inc %x
}
dec %ircmanager.connections
}
inc %i
}
}
}
on *:NOTICE:*nickname is registered*:*: {
if ((%ircmanager.setting.access == on) && ($nick == NickServ) && (%ircmanager.connections == 0)) {
var %i 1
while (%i <= $numtok(%ircmanager.serverlist, 124)) {
if (($gettok($gettok(%ircmanager.serverlist,%i,124),2-,46) == $gettok($server,$calc($numtok($server, 46) - 1) -,46)) && ($me == %ircmanager.nickname. [ $+ [ $server ] ])) {
msg nickserv identify %ircmanager.nickpass. [ $+ [ $server ] ]
echo -s 4----
echo -s 4IRCManager has identified you at $server ( $+ $gettok(%ircmanager.serverlist,%i,124) $+ ) $+ ! [Identification requested by $nick $+ ]
echo -s 4----
}
inc %i
}
}
}
What if the chan has a key? So would it be #chan (key),#chan ? Like that?
EDIT: Also where nick/password go, can there be a spot for ircops to put there oper pass in?
Both option will be added in the next version, which will be released as soon as possible on Hawkee. Currently it's not possible to enter key protected channels with IRCManager.
EDIT: I also can't get it to let me delete a server.
If you want to delete a server, follow the following steps:
How can I add more channels into channel box? I normally on over 10 channels but I can add only fews channel in the channel box on this script.
I updated the script, you can add now all the channels you want (notice: there is probably a max of channels you can join at the same time on your server). If you add or edit a server, you can enter the channels seperated by a ','!
#chan1,#chan2,#chan3
I really dont understand why you make the text boxes in the dialog table and then fill them with the text in dialog events instead of in the table.
If I see how I used the text boxes and how you are using them, I fully agree that you are using them much more efficient. I will certainly do something with this on the next update.
You should consider using $inputs for warnings such as the "Please select a server" warning that appears when they try and instead of reserving space in the dialog for an empty text box that isnt needed unless an error is made.
You remind me of something I didn't use for a very long time. At the moment I saw the word "$input", I thought: "God damn, that was what I was searching for..." :P
I also don't understand why you make those silly looking up and down buttons for your list instead of using the verticle scrollbar option in the list.
Those up and down buttons aren't for scrolling, but to re-order the servers. You will join the first server first, then the second, etc...
I noticed you have a timer unsetting that needs to be silenced. To silence it, put a . in front of the timer command, i.e. .timer 0 1 echo -a hi. Which will stop " 0 timer(s) matching ircm halted" from showing up in the status window.
Great!
I also noticed than you dont have an event on unload that unsets the left over variables so you may want to add that as well.
This will be available in, one of the, next updates. I already worked on something like an 'Uninstall' option!
Don't worry, I am not thinking that you are nailing me. I posted this script here, so that I can learn more. Like the '.' in front of the timer. I saw that box fields can be used on a much better way. I really appreciate your reply.
I will re-design the dialog, with the things that I learned from your reply. I am not going to copy yours, but you showed me a very very good example. Hopefully I can beat you in one of the next updates! Thanks Typo!
I loaded your script and before I even tried using it I noticed the dialog. It honestly leaves a lot to be desired.
I really dont understand why you make the text boxes in the dialog table and then fill them with the text in dialog events instead of in the table.
Since you do it like that you end up with a lot of empty space until you initiate one of the events that fill it.
You should consider using $inputs for warnings such as the "Please select a server" warning that appears when they try and instead of reserving space in the dialog for an empty text box that isnt needed unless an error is made.
I also don't understand why you make those silly looking up and down buttons for your list instead of using the verticle scrollbar option in the list.
I think the dialog could be a lot smaller and better organized and I will even offer my help to edit it if you need assistance.
I decided to do some major editing to yours to show you what I mean. This is your dialog edited but the events in the script would need some editing to match the new dialog.
Your dialog:
My version:
And incase you want it, the code:
dialog -l ircmanager {
title "Loading..."
size -1 -1 304 393
option pixels
text "IRC Manager", 1, 112 5 79 14, center
list 2, 7 39 206 91, size vsbar
button "Add Server", 3, 214 41 80 20
button "Reset", 4, 214 75 80 20
button "Cancel", 5, 214 108 80 20
text "Server settings: Use a '+' infront of SSL ports! Use a ',' between the channels!", 10, 12 140 279 28, center
text "Server:", 11, 26 172 39 14
text "Port:", 12, 26 193 27 14
text "Channels:", 13, 26 215 51 14
text "Personal settings: Don not enter a password if you are on a public PC!", 14, 13 243 277 27, center
text "Nickname:", 15, 24 276 54 14
text "Password:", 16, 24 296 52 14
edit "", 30, 76 170 200 20
edit "", 31, 76 191 200 20
edit "", 32, 76 212 200 20
edit "", 33, 77 272 200 20
edit "", 34, 78 293 200 20, pass
check "Enable IRCManager", 40, 10 325 200 20
check "Start IRCManager on connect", 41, 10 341 200 20
button "Ok", 100, 113 367 80 20, ok
box "", 6, 4 13 295 120
box "", 7, 4 131 295 105
text "Servers", 8, 112 25 79 14, center
box "", 9, 4 235 295 84
box "", 17, 4 317 295 46
box "", 18, 0 -3 304 396
}
Notice how I actually set the text in the dialog table instead of in an event.
Btw, the picture I took of the dialog was actually without any dialog events allowed to initiate. I disabled all of them because they interfered with the new dialog and wouldn't allow it to load properly.
I noticed you have a timer unsetting that needs to be silenced. To silence it, put a . in front of the timer command, i.e. .timer 0 1 echo -a hi. Which will stop " 0 timer(s) matching ircm halted" from showing up in the status window.
I also noticed than you dont have an event on unload that unsets the left over variables so you may want to add that as well.
Sorry if it seems like im nailing you with a thousand things.
First of all thanks for your replies!
I have made some small changes:
I say give him the one you would use yourself.
menu * {
-
IRCManager:dialog $iif($dialog(ircmanager),-ev,-md) ircmanager ircmanager
-
}
I used * as an example to show that you can use it to select all menus since LucSatise already showed how to combine more than one menu name. The other difference is the $iif that checks if the dialog is already open and brings it brings it to the foreground if it is and opens it if not.