Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are
spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the
password reset link.
Due to spam on this forum, all posts now need moderator approval.
Entire forum
➜ MUSHclient
➜ Plugins
➜ My first plugin... (Reboot Timer)
My first plugin... (Reboot Timer)
|
It is now over 60 days since the last post. This thread is closed.
Refresh page
Posted by
| Shadowfyr
USA (1,790 posts) Bio
|
Date
| Thu 08 Aug 2002 06:17 AM (UTC) Amended on Thu 08 Aug 2002 06:24 PM (UTC) by Shadowfyr
|
Message
| This was designed to work with the 'uptime' command on Ages of Despair. Changing it for another muds command would require changing the trigger and a few wildcards in the setting script, but shouldn't be too hard.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE muclient >
<muclient>
<plugin name="Reboot_Timer"
author="Kagehi"
language="vbscript"
purpose="Displays time until reboot in the status line."
save_state="n"
requires="3.23"
version="1.0"
id="d8008e74585e7435a82d1b12"
>
<description trim="y">
<![CDATA[
Designed for the Ages of Despair mud.
This plugin reads the time until reboot from the 'uptime'
command and sets a counter in the clients status line,
indicating the time left once each minute.
Typing 'uptime' will set/reset it.
]]>
</description>
</plugin>
<!--
========================================
Startup Sub
========================================
-->
<script>
<![CDATA[
sub OnPluginConnect
world.send "uptime"
end sub
]]>
</script>
<!--
========================================
Trigger SetReb
========================================
-->
<triggers>
<trigger
enabled="y"
keep_evaluating="y"
match="*The next reboot is * on * (in *)."
name="SetReb"
script="SetReb"
sequence="3"
>
</trigger>
</triggers>
<script>
<![CDATA[
sub SetReb (TrigName, Output, Wildcards)
dim sTest, sGrab, sOut
dim sMatch
sTest = wildcards(4) '"1d 1h 14m 33s"
int b
int tim
int count
tim = 0
sMatch = split(sTest," ",-1,1)
'world.note ubound(sMatch)
for count = 0 to ubound(sMatch)
sGrab = sMatch(count)
b = len(sGrab)
'world.note sGrab & ", " & count
select case right(sGrab,1)
case "d"
tim = tim + 1440
case "h"
tim = tim + CInt(left(sGrab, b-1)) * 60
case "m"
tim = tim + CInt(left(sGrab, b-1))
case "s"
b = CInt(left(sGrab, b-1))
if b > 30 then
tim = tim + 1
end if
end select
next
world.setvariable "TTRB", CStr(tim)
world.addtimer "RebootTimer", 0, 1, 0, "", 1, "RepReboot"
world.enabletimer "RebootTimer", 1
sOut = Rttt(tim)
world.note "Reboot timer set."
world.setstatus "Reboot is in " & sOut
end sub
]]>
</script>
<!--
========================================
Timer RebootTimer
========================================
-->
<timers>
<timer name="RebootTimer" script="RepReboot" enabled="y" minute="1" active_closed="y" >
</timer>
</timers>
<script>
<![CDATA[
sub RepReboot (TimerName)
dim sRet, sOut, sTest
int tim
sRet = world.getvariable ("TTRB")
tim = CInt(sRet)
tim = tim - 1
if tim < 1 then
world.enabletimer "RebootTimer", 0
world.setstatus "Reboot!"
else
sOut = Rttt(tim)
world.setstatus "Reboot is in " & sOut
world.setvariable "TTRB", CStr(tim)
end if
end sub
function Rttt(tim)
dim sRet, sOut
int temp
int temp2
temp = tim
if temp > 1440 then
sOut = " 1d "
temp = temp - 1440
end if
if temp >= 60 then
temp2 = Int(temp/60)
temp = temp - (temp2 * 60)
sOut = sOut & CStr(temp2) & "h "
end if
sOut = sOut & temp & "m."
Rttt = sOut
end function
]]>
</script>
NOTE: The above script should now be complete, the following questions and comments have been left in place for thread completeness.
Just one thing... It is generally a good idea if one of the first commands sent to the mud after all they login is the 'uptime' command. You can do this in the main world by adding it in the connection settings, however... How do you have a plugin automatically execute the command automatically the same way? | Top |
|
Posted by
| Magnum
Canada (580 posts) Bio
|
Date
| Reply #1 on Thu 08 Aug 2002 08:22 AM (UTC) |
Message
| Put commands in the mainline of the plugin, and they will execute when the plugin is loaded. Look at the sample script to see other routines like OnConnect where you could put them.
I wanted to offer some advice about the thread title you chose. It might be more helpful if you put the title of the plugin in the title, so that the thread can easily be found in the future. (Searching forums). Up to you of course... You don't have to listen to my little nit-picking. :) |
Get my plugins here: http://www.magnumsworld.com/muds/
Constantly proving I don't know what I am doing...
Magnum. | Top |
|
Posted by
| Nick Gammon
Australia (23,133 posts) Bio
Forum Administrator |
Date
| Reply #2 on Thu 08 Aug 2002 10:10 AM (UTC) |
Message
| Check out the sample plugin - the routine to be called when the mud connects is OnPluginConnect. There are a batch of those with hard-coded names.
sub OnPluginConnect
world.note "Plugin " & world.getpluginname & " - world connected."
end sub
|
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Shadowfyr
USA (1,790 posts) Bio
|
Date
| Reply #3 on Thu 08 Aug 2002 06:06 PM (UTC) |
Message
| Good advice on both counts.. I figured there had to be some sort of connect routine for the plugins, just not where to find them listed. While it is useful to have those routines listed in the sample plugin, it is not the first place I went looking. ;)
Oh... And not sure why, but seems 3.24 is picky about having a space between some things in the <plugin> block. One of your sample scripts won't load, because it insists there is no world ID in it. I had mine do the same thing. Turned out changing it from id = "d8008e... to id="d8008e was all I needed to get it loaded. This seems a bit nitpicky to me. :P
I will amend the original post to include the needed startup routine. | Top |
|
Posted by
| Nick Gammon
Australia (23,133 posts) Bio
Forum Administrator |
Date
| Reply #4 on Fri 09 Aug 2002 01:11 AM (UTC) Amended on Fri 09 Aug 2002 01:13 AM (UTC) by Nick Gammon
|
Message
|
Quote:
And not sure why, but seems 3.24 is picky about having a space between some things in the <plugin> block. One of your sample scripts won't load, because it insists there is no world ID in it.
The sample plugin "sample_plugin.xml" has a deliberately bad plugin ID (with XXXs) so you aren't tempted to reuse that exact ID - thus, it won't load. If you want to see it in action, just make your own plugin ID (world.note world.getuniqueid), and paste that into the sample, and load it.
However I cannot reproduce the problem with the extra spaces. It isn't supposed to be picky. For instance, this loads OK:
id = "b5bd261daf097933034a2585" |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Nick Gammon
Australia (23,133 posts) Bio
Forum Administrator |
Date
| Reply #5 on Fri 09 Aug 2002 01:14 AM (UTC) Amended on Fri 09 Aug 2002 02:03 AM (UTC) by Nick Gammon
|
Message
|
Quote:
While it is useful to have those routines listed in the sample plugin, it is not the first place I went looking. ;)
Frankly, the documentation is not really finished (started?).
However I thought that one big example was worth 1000 words, so the documentation is currently "by example".
Also, the new Plugin Wizard will generate plugins for you quite easily, which will be helpful. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).
To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.
18,694 views.
It is now over 60 days since the last post. This thread is closed.
Refresh page
top