Posted by
| Nick Gammon
Australia (23,121 posts) Bio
Forum Administrator |
Message
| Following a suggestion from Magnum, plus various requests in the past, I present a "reconnecter" that attempts to connect to the MUD if it is down, multiple times. The time between attempts is configurable.
To use, copy the code below the line, paste into a text editor, and save as "Reconnecter.xml", in your plugins directory, and then install it.
The file can also be downloaded from:
http://www.gammon.com.au/mushclient/plugins/ Reconnecter.xml
By changing the entities at the start you can configure the interval between retries, the command that is recognised for a deliberate QUIT, and the commands to initiate connection, or suppress it.
To use, just install. It will detect if your world is connected, and if not, try to connect. If you don't want to connect just now, type NOCONNECT (or whatever you have configured the command to be), case-sensitive.
Once connected, if the connect is dropped it will detect that and attempt to reconnect. However if you type the "quit" command (default QUIT in caps) then it suppresses the reconnection.
If you plan to leave the PC for a while, you might type NOCONNECT to suppress reconnection, and when you return, type CONNECT to activate it again.
You will need to suppress the dialog boxes that appear when you are disconnected, or that will interfere with the process. To do this, go to File -> Global Preferences -> General, and uncheck "Notify me when connection broken" and "Notify me if unable to connect".
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE muclient [
<!ENTITY interval "10" >
<!ENTITY quit_command "QUIT" >
<!ENTITY connect_command "CONNECT" >
<!ENTITY noconnect_command "NOCONNECT" >
]>
<!-- Saved on Monday, September 30, 2002, 6:21 PM -->
<!-- MuClient version 3.26 -->
<!-- Plugin "Reconnecter" generated by Plugin Wizard -->
<!--
1. Change the entity above "interval" to be the number of seconds
between retries.
2. Change the entity above "quit_command" to be the command you
type to quit (eg. quit, QUIT, @quit or whatever)
3. Change the entity above "connect_command" to be the command you
type to enable connection checking.
4. Change the entity above "noconnect_command" to be the command you
type to disable connection checking.
-->
<muclient>
<plugin
name="Reconnecter"
author="Nick Gammon"
id="83beba4e37b3d0e7f63cedbc"
language="VBscript"
purpose="Reconnects when disconnected"
date_written="2002-09-30 18:20:24"
requires="3.22"
version="1.0"
>
<description trim="y">
<![CDATA[
This plugin will automatically reconnect you when you are disconnected,
at a user-configurable interval (say, every 5 seconds)
]]>
Reconnecter:help - this help screen
&connect_command; - enable recconnection (eg. after using &noconnect_command;)
&noconnect_command; - disable reconnection (eg. if you are leaving the PC)
</description>
</plugin>
<!-- Timers -->
<timers>
<timer name="ConnectCheckTimer" script="OnConnectCheckTimer"
second="&interval;" active_closed="y" enabled="y">
</timer>
</timers>
<!-- Aliases -->
<aliases>
<alias
script="OnQuit"
match="&quit_command;"
enabled="y"
>
</alias>
<alias
script="OnConnect"
match="&connect_command;"
enabled="y"
>
</alias>
<alias
script="OnNoConnect"
match="&noconnect_command;"
enabled="y"
>
</alias>
</aliases>
<!-- Script -->
<script>
<![CDATA[
dim retry
retry = 0
did_quit = vbFalse
sub OnConnectCheckTimer (sName)
'
' If currently connecting, leave it to do that ...
'
if world.GetInfo (107) then exit sub
'
' If currently connected, we don't need to check any more
'
if world.IsConnected then
world.note "World is connected, disabling disconnection check"
world.enabletimer sName, 0
exit sub
end if
'
' If deliberate quit, we don't need to check any more
'
if did_quit then
world.note "Deliberate quit, disabling disconnection check"
world.enabletimer sName, 0
exit sub
end if
'
' OK, we need to connect now ...
'
retry = retry + 1
world.note "Connecting to world, attempt # " & retry
world.connect
end sub
sub OnPluginDisconnect
'
' If deliberate quit, we don't need to enable the connection check
'
if did_quit then exit sub
'
' We have been disconnected, we need to try connecting again
'
world.note "Connection checker enabled"
world.enabletimer "ConnectCheckTimer", 1
end sub
sub OnPluginConnect
'
' Now we are connected, no need to keep trying to connect
'
retry = 0
world.enabletimer "ConnectCheckTimer", 0
'
' No deliberate quit yet
'
did_quit = vbFalse
end sub
sub OnPluginInstall
world.doafternote 1, "Connection checker installed."
end sub
]]>
sub OnQuit (sName, sLine, wildcards)
did_quit = vbTrue
world.send "&quit_command;" ' send to world so it does it
world.note "Deliberate quit (&quit_command;), reconnect disabled"
end sub
sub OnConnect (sName, sLine, wildcards)
world.note "Connection checker enabled"
world.enabletimer "ConnectCheckTimer", 1
did_quit = vbFalse
end sub
sub OnNoConnect (sName, sLine, wildcards)
world.note "Connection checker disabled"
world.enabletimer "ConnectCheckTimer", 0
did_quit = vbTrue
end sub
</script>
<!-- Plugin help -->
<aliases>
<alias
script="OnHelp"
match="Reconnecter:help"
enabled="y"
>
</alias>
</aliases>
<script>
<![CDATA[
Sub OnHelp (sName, sLine, wildcards)
World.Note World.GetPluginInfo (World.GetPluginID, 3)
End Sub
]]>
</script>
</muclient>
|
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|