<?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>
