Server Manager
Server Manager
To make joining multiple servers easier in case you ping out on one of them(under normal, 'perform' based connections, massive problems would be caused should one ping out). This script is to fix that.
To get started, type
To connect on startup, make sure "Connect on Startup" is selected in the upper right corner.
Any commands defined in the currently connecting server's perform dialog in mIRC's settings will be executed after the nick is identified. The password for that nick must be specified in the Options > Servers > (Server Group) > Random Server configuration dialog, and the auth method must be set to nickserv.
The script below needs to be copied to the remotes section of the script editor in mIRC; preferably, in its own file.
To get started, type
in any channel or server status window. In the dialog that pops up, add a server group(SorceryNet for example), and a server address and any optional parameters, such as
, then click Add server. From there, to manage or unmanage a server, click its line in that same dialog, and then click (Un)Manage. The button will change depending on the state the server is in. The order of servers can be changed by selecting a server and clicking either of the up or down arrow buttons.To connect on startup, make sure "Connect on Startup" is selected in the upper right corner.
Any commands defined in the currently connecting server's perform dialog in mIRC's settings will be executed after the nick is identified. The password for that nick must be specified in the Options > Servers > (Server Group) > Random Server configuration dialog, and the auth method must be set to nickserv.
The script below needs to be copied to the remotes section of the script editor in mIRC; preferably, in its own file.
Code: Select all
;Server Manager
;$version:1.0.0
;Author: Daedalus
dialog -l server_man_conf_tbl {
title "Server Manager Config"
size -1 -1 200 110
option dbu
button "Manage", 1, 5 4 35 10, nowrap
button $chr(9660), 2, 79 4 10 10
button $chr(9650), 3, 89 4 10 10
text "Servers", 4, 100 5 22 14, nowrap
check "Connect on startup", 5, 140 4 55 10
list 7, 5 15 190 80, vsbar
button "Add server", 8, 5 90 40 10
edit "", 9, 47 90 35 10
edit "", 10, 85 90 59 10
button "Remove selected", 11, 145 90 50 10
text "GroupName", 12, 47 102 35 10, nowrap
text "ServerAddrAndParams", 13, 85 102 59 10, nowrap
}
dialog -l server_man_sure_tbl {
title "Are you sure you want to remove that?"
size -1 -1 224 73
option pixels notheme
button "Yes", 1, 20 40 65 25, ok result
button "No", 2, 130 40 65 25, cancel
text " Are you sure you want to", 3, 40 4 130 17 nowrap
text " remove the selected server?", 4, 40 20 145 17 nowrap
}
on *:DIALOG:server_man_conf:init:0: {
var %file = $scriptdir $+ settings.ini
did -b $dname 1
did -b $dname 8
did -r $dname 7
if ($readini(%file,general,connect) == 1) {
did -c $dname 5
}
sm.refresh_servers
}
on *:DIALOG:server_man_conf:*:*: {
var %file = $scriptdir $+ settings.ini
if (($devent == edit) && (($did == 9) || ($did == 10))) {
if (($did($dname,9,1).text != $null) && ($did($dname,10,1).text != $null)) {
did -e $dname 8
}
else {
did -b $dname 8
}
}
elseif ($devent == sclick) {
if ($did == 1) {
sm.toggle_server_state $did($dname,7).sel
var %selected_server_state = $gettok($readini(%file,servers,n $+ $did($dname,7).sel),1,58)
if (%selected_server_state == 1) {
did -o $dname 1 1 Unmanage
}
elseif (%selected_server_state == 0) {
did -o $dname 1 1 Manage
}
}
elseif ($did == 2) {
sm.move_server down $did($dname,7).sel
}
else if ($did == 3) {
sm.move_server up $did($dname,7).sel
}
elseif ($did == 5) {
if ($did($dname,$did).state == 1) {
writeini $qt($scriptdir $+ settings.ini) general connect 1
}
elseif ($did($dname,$did).state == 0) {
writeini $qt($scriptdir $+ settings.ini) general connect 0
}
}
elseif ($did == 7) {
if ($did($dname,7).sel != 0) {
var %selected_server_state = $gettok($readini(%file,servers,n $+ $did($dname,7).sel),1,58)
if (%selected_server_state == 1) {
did -o $dname 1 1 Unmanage
}
elseif (%selected_server_state == 0) {
did -o $dname 1 1 Manage
}
if ($did($dname,1).enabled == $false) {
did -e $dname 1
}
}
else {
did -b $dname 1
}
}
elseif ($did == 8) {
sm.add_server $did($dname,9).text
}
elseif ($did == 11) {
var %can_delete = $dialog(server_man_sure,server_man_sure_tbl,-3)
if (%can_delete == Yes) {
sm.delete_server
}
}
}
}
on *:START: {
var %file = $qt($scriptdir $+ settings.ini)
if ($readini(%file,general,connect) == 1) {
sm.server_connect
}
}
alias serverman {
if ($dialog(server_man_conf) != $null) {
dialog -x server_man_conf
}
dialog -ma server_man_conf server_man_conf_tbl
}
alias -l sm.enumerate_servers {
var %file = $qt($scriptdir $+ settings.ini)
var %item_num = $ini(%file,servers,0) | var %item_i = 1
while (%item_i <= %item_num) {
var %item = $ini(%file,servers,%item_i)
var %item_val = $readini(%file,servers,%item)
writeini %file servers_temp n $+ %item_i %item_val
inc %item_i 1
}
remini %file servers
var %item_num = $ini(%file,servers_temp,0) | var %item_i = 1
while (%item_i <= %item_num) {
var %item = $ini(%file,servers_temp,%item_i)
var %item_val = $readini(%file,servers_temp,%item)
writeini %file servers n $+ %item_i %item_val
inc %item_i 1
}
remini %file servers_temp
}
alias -l sm.render_server {
var %state_icon = $iif($gettok($1,1,58) == 1,$chr(9678),$chr(9675))
return %state_icon $gettok($1,2,58) $gettok($1,3,58)
}
alias -l sm.refresh_servers {
var %file = $qt($scriptdir $+ settings.ini)
var %item_num = $ini(%file,servers,0) | var %item_i = 1
did -r server_man_conf 7
while (%item_i <= %item_num) {
var %item = n $+ %item_i
var %item_val = $readini(%file,servers,%item)
did -a server_man_conf 7 $sm.render_server(%item_val)
inc %item_i 1
}
}
alias -l sm.move_server {
var %file = $qt($scriptdir $+ settings.ini)
var %direction = $1
var %num = $2
if ((%direction == up) && (%num == 1)) {
return
}
elseif ((%direction == down) && (%num == $ini(%file,servers,0))) {
return
}
elseif ((%direction == down) || (%direction == up)) {
var %current_item = n $+ %num
var %current = $readini(%file,servers,%current_item)
var %target_item = n $+ $iif(%direction == down,$calc(%num + 1),$calc(%num - 1))
var %target = $readini(%file,servers,%target_item)
remini %file servers %target_item
remini %file servers %current_item
writeini %file servers %target_item %current
writeini %file servers %current_item %target
}
sm.enumerate_servers
sm.refresh_servers
if ((%direction == down) || (%direction == up)) {
did -c server_man_conf 7 $iif(%direction == down,$calc(%num + 1),$calc(%num - 1))
}
}
alias -l sm.add_server {
var %file = $qt($scriptdir $+ settings.ini)
sm.enumerate_servers
writeini %file servers n $+ $calc($ini(%file,servers,0) + 1) $+(0,:,$did(server_man_conf,9).text,:,$did(server_man_conf,10).text)
sm.refresh_servers
}
alias -l sm.toggle_server_state {
var %file = $qt($scriptdir $+ settings.ini)
var %server_i = $1
var %server_state = $gettok($readini(%file,servers,n $+ %server_i),1,58)
var %server_state_new = $iif(%server_state == 1,0,1)
var %server = $readini(%file,servers,n $+ %server_i)
writeini %file servers n $+ %server_i $puttok(%server,%server_state_new,1,58)
sm.refresh_servers
did -c server_man_conf 7 %server_i
}
alias -l sm.delete_server {
var %file = $qt($scriptdir $+ settings.ini)
remini %file servers n $+ $did(server_man_conf,7).sel
sm.enumerate_servers
sm.refresh_servers
did -b server_man_conf 1
}
alias -l sm.server_connect {
var %file = $qt($scriptdir $+ settings.ini)
var %server_i = 1 | var %server_num = $ini(%file,servers,0)
while (%server_i <= %server_num) {
var %server_item = n $+ %server_i
var %server = $readini(%file,servers,%server_item)
var %option = $null
if (%server_i > 1) {
var %option = -m
}
if ($gettok(%server,1,58) == 1) {
if (%option == $null) {
var %option = -
}
var %option = %option $+ p
}
.timersmconnect $+ %server_i 1 $calc(%server_i * 2) /server %option $gettok(%server,2,58) $gettok($gettok(%server,3,58),2-,32)
inc %server_i 1
}
}
on *:CONNECT:{
var %file = $qt($scriptdir $+ settings.ini)
var %server_i = 1 | var %server_num = $ini(%file,servers,0)
while (%server_i <= %server_num) {
var %server_item = $ini(%file,servers,%server_i)
var %server = $readini(%file,servers,%server_item)
if ($gettok(%server,2,58) == $network) {
break
}
inc %server_i 1
}
if ($gettok(%server,1,58) == 1) {
autojoin -s
}
if ($me != $mnick) {
ns ghost $mnick $server(1,$network).methodpass
.timer 1 5 /nick $mnick
.timer 1 6 /ns id $server(1,$network).methodpass
}
}
on $*:NOTICE:/You are now identified|you are already identified|you are now recognized/i:*:{
if ($nick == NickServ) {
var %file = $qt($scriptdir $+ settings.ini)
var %server_i = 1 | var %server_num = $ini(%file,servers,0)
while (%server_i <= %server_num) {
var %server_item = $ini(%file,servers,%server_i)
var %server = $readini(%file,servers,%server_item)
if ($gettok(%server,2,58) == $network) {
break
}
inc %server_i 1
}
var %perform_i = 0 | var %perform_group_i = 1 | var %perform_num = $ini($mircdir $+ perform.ini,perform,0)
if ($gettok(%server,1,58) == 1) {
while (%perform_i < %perform_num) {
var %perform_item = $ini($mircdir $+ perform.ini,perform,%perform_i)
var %perform = $readini($mircdir $+ perform.ini,perform,%perform_item)
if ($gettok(%perform,1,44) == $network) {
.timersmperform $+ %server_i $+ %perform_i -d 1 $calc(%perform_group_i * 2) $gettok(%perform,2,44)
inc %perform_group_i 1
}
inc %perform_i 1
}
}
}
}
Last edited by Daedalus on January 27th, 2023, 4:05 am, edited 4 times in total.