@q
@program cmd-@doing
1 9999 d
i
( cmd-@doing ver 1.2
version 1.0 created by Whitefire.
version 1.1 modified by Kimi.
clears doing on logout.
version 1.2 modified by Foxen.
doesn't clear doing unless you logged out for longer than 20 minutes.
)
: do-help ( -- )
me @ " " notify
me @ "$command"
command @ "$command" subst notify
me @ "$command <string>"
command @ "$command" subst notify
me @ "$command #clear"
command @ "$command" subst notify
me @ " " notify
me @
"This sets your 'doing' string: the info line that appears beside "
"your name and connection time on the WHO screen. When typed with "
"the #clear argument, it clears your doing string. When typed with "
"no argument, it shows your current doing string. When typed with "
"any other argument, it sets your doing string to that argument."
strcat strcat strcat strcat notify
;
: add-doing (s -- )
dup strlen 40 >
if
40 strcut strlen
"Warning: " swap dup 1 >
if
intostr strcat " characters" strcat
else
intostr strcat " character" strcat
then
" lost." strcat .tell
then
me @ "_/do" rot 0 addprop
me @ "Set." notify
;
: cmd-@doing ( s -- )
strip
dup not
if
pop
me @ "You are curently doing: " me @ "_/do" getpropstr strcat notify
exit
then
dup tolower "#c" 2 strncmp not
if
pop
me @ "_/do" remove_prop
me @ "Cleared." notify
else
add-doing
then
;
: clear-doing ( -- )
me @ "_/do" remove_prop
;
: main ( s -- )
command @ "Queued event." stringcmp not
trig if
dup if "#help" over stringpfx if do-help exit then then
then
if
pop
me @ awake? not (awake? returns number of connections player has)
if (player disconected. has 0 connections)
me @ "@/doingpid" "" pid addprop (remember the pid, fluke)
20 60 * sleep (sleep 20 minutes)
me @ "@/doingpid" remove_prop (clear the pid)
clear-doing
exit
else (player connected. >=1 connections)
me @ "@/doingpid" getpropval
dup if (there's a logout process to nuke)
dup ispid? if (just make SURE that it's still there)
kill pop (kill it if it is.)
then
me @ "@/doingpid" remove_prop (clear the logout pid)
then
then
exit
then
cmd-@doing
;
.
c
q