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