Reconnecter Plugin

Posted by Invictus84 on Tue 11 Dec 2007 07:31 PM — 5 posts, 22,801 views.

USA #0
So, recently I decided to take the plunge, give MS Windows the axe and put Ubuntu 7.10 on my system as its only OS. Everything has been smooth up to this point, except I can't get non-Lua scripts/plugins to work, at all. Just crashes MUSHclient every time. After spending 3 days trying to find out what all .dll's might be required for running VBscript (as the only non-Lua plugin I really care about is written in VBscript) other than vbscript.dll (which I managed to find a download for, but it didn't help at all), I've given up and just went looking for a Lua version of the Reconnecter plugin.

Well, I didn't find one... and my ability to script is severly lacking. So, has anyone managed to rewrite the reconnecter plugin for Lua? Or is Lua even capable of performing those functions in the plugin?

Any help is greatly appreciated :)
USA #1
If no one has jumped on this by the end of tomorrow (New York time), I'll convert it for you. I won't have access to MUSHclient to test it out at all until then, but it should not take long at all to get this little plugin converted to Lua.
Australia Forum Administrator #2
Quote:

Or is Lua even capable of performing those functions in the plugin?


Yes, Lua is capable of most feats. :)

Here is a Lua version of the reconnector plugin:


<?xml Version="1.0" encoding="UTF-8"?>
<!DOCTYPE muclient [
  <!ENTITY interval "10" >
  <!ENTITY quit_command "quit" >
  <!ENTITY connect_command "connect" >
  <!ENTITY noconnect_command "NOCONNECT" >
]>

<!-- 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="dc8cb4a314674db813c12c90"
   language="Lua"
   purpose="Reconnects when disconnected"
   date_written="2007-12-12 11:30:00"
   requires="3.80"
   version="2.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[
local retry, did_quit

retry = 0  -- retry count
did_quit = false

function OnConnectCheckTimer (sName)
  
  --
  --  If currently connecting, leave it to do that ...
  --
  
  if GetInfo (107) then 
    return
  end -- if
  
  
  --
  --  If currently connected, we don't need to check any more
  --
  
  if IsConnected () then
    Note "World is connected, disabling disconnection check"
    EnableTimer (sName, false)
    return
  end -- if
  
  --
  --  If deliberate quit, we don't need to check any more
  --
  if did_quit then
    Note "Deliberate quit, disabling disconnection check"
    EnableTimer (sName, false)
    return
  end -- if
  
  --
  --  OK, we need to Connect now ...
  --
  
  retry = retry + 1
  
  Note ("Connecting to world, attempt # " .. retry)
  Connect ()

end -- function

function OnPluginDisconnect ()
  --
  --  If deliberate quit, we don't need to enable the connection check
  --
  
  if did_quit then  
    return
  end -- if
  
  --
  --  We have been disconnected, we need to try connecting again
  --

  Note "Connection checker enabled"
  EnableTimer ("ConnectCheckTimer", true)
  
end -- function

function OnPluginConnect ()
  
  --
  --  Now we are connected, no need to keep trying to Connect
  --
  
  retry = 0
  EnableTimer ("ConnectCheckTimer", false)
  
  --
  --  No deliberate quit yet
  --
  
  did_quit = false
    
end -- function

function OnPluginInstall ()
  DoAfterNote (1, "Connection checker installed.")
end -- function

]]>

function OnQuit (sName, sLine, wildcards)
  did_quit = true
  Send ("&quit_command;") --  Send to world so it does it
  Note "Deliberate quit (&quit_command;), reconnect disabled"
end -- function

function OnConnect (sName, sLine, wildcards)
  Note "Connection checker enabled"
  EnableTimer ("ConnectCheckTimer", true)
  did_quit = false
end -- function

function OnNoConnect (sName, sLine, wildcards)
  Note "Connection checker disabled"
  EnableTimer ("ConnectCheckTimer", false)
  did_quit = true
end -- function


</script>


<!--  Plugin Help  -->

<aliases>
  <alias
   script="OnHelp"
   match="Reconnecter:Help"
   enabled="y"
  >
  </alias>
</aliases>

<script>
<![CDATA[
function OnHelp (sName, sLine, wildcards)
  Note (GetPluginInfo (GetPluginID, 3))
end -- function
]]>
</script> 

</muclient>
Amended on Tue 11 Dec 2007 11:45 PM by Nick Gammon
USA #3
Oh, man, you guys rock :)

Now I can return to my regularly scheduled idling for days on end... :P

Thanks a heap :)

[EDIT]: That should seriously be added to the list of Plugins... I'm sure there's plenty of people running Linux who would love to use that plugin, due to the possible problems with VBscript (though they could easily just copy/paste from this thread :P).
Amended on Wed 12 Dec 2007 12:32 AM by Invictus84
Australia Forum Administrator #4
I have uploaded the amended version as the "official" one for this web site.