@q @program cmd-laston 1 9999 d i ( laston.muf, by Scotfox, 11-June-1993. ) ( Lets you find out how long ago someone was on-line. In conjunction with ) ( record-last-site, lets wizards see where someone last connected from. ) ( Usage: "last <player>" ) ( Properties: @set yourself = _block_last:yes to prevent anyone from seeing ) ( when you were last connected. ) : last-help me @ "\"last playername\" tells you the last time that player was connected. \"last #block\" makes it so nobody else can use 'last' on you. \"last #unblock\" lets 'last' work on you again." notify ; : last-time ( name dbref -- name dbref time time ) dup "@/laston" getpropstr dup if atoi dup exit then pop dup timestamps pop rot rot pop pop dup ; : how-long-ago ( seconds ) systime swap - dup 60 < if pop "(under a minute ago)" exit then 60 / "(" swap ( string minutes ) ( 60 * 24 * 28 = 40320, about the number of minutes in a moon cycle ) dup 40320 > if dup 40320 / intostr " moons " strcat rot swap strcat swap 40320 % then ( 60 * 24 = 1440, the number of minutes in a day ) dup 1440 > if dup 1440 / intostr " days " strcat rot swap strcat swap 1440 % then ( 60 minutes in an hour ) dup 60 > if dup 60 / intostr " hours " strcat rot swap strcat swap 60 % then intostr " minutes ago)" strcat strcat ; : last-on dup "" strcmp not if pop last-help exit then dup "#block" stringcmp not if me @ "_block_last" "yes" 0 addprop me @ "Now nobody can see when you were last connected." notify pop exit then dup "#unblock" stringcmp not if me @ "_block_last" remove_prop me @ "Now anyone can see when you were last connected." notify pop exit then dup .pmatch dup #-1 dbcmp if pop pop me @ "I don't know anyone by that name." notify exit then ( name dbref ) swap pop dup name swap ( get the exact name ) ( name dbref ) dup awake? over "D" flag? not and if swap " is online right now" strcat else dup "_block_last" getpropstr .yes? over "d" flag? or if over "'s last-connection information isn't public" strcat me @ "W" flag? not if "." strcat me @ swap notify pop pop exit then ", but since you're a wizard..." strcat me @ swap notify then last-time ( name dbref time time ) " last left the game on %A, %B %e, %Y, at %I:%M %p %Z " swap timefmt ( name dbref time string ) 4 rotate swap strcat over how-long-ago strcat swap pop then ( name dbref string ) me @ "W" flag? 3 pick "G" flag? not and if over "+/host" getpropstr dup "" strcmp if " from " swap strcat strcat else pop then then "." strcat me @ swap notify pop ; . c q