@program #227 1 10000 d i $def HEADER "findall.muf v1.6 -- Syvel @ FurryFaire -- 12/13/96" ( Purpose: Display the location and 'status' of all connected players. Players can set themselves 'private' to prevent their location from being displayed. Locations can also be set private. Usage: findall;fall;fa is typical action attached to the program. Set it MUCKER3. Set it WIZARD for #host operation to be available to Wizards. Check #help3 for properties used. Porting: This program is protected by the GNU Public Program License. Credits: Written by Chetar of FurryFaire, string formatting routines borrowed from fEk's Revenge of Whospecies. Quicksort and Range functions by Tjost. Changes: v1.0 First Version v1.1 QuickSort routines by Tjost. He also changed sort-by- location to seperate private players. v1.2 sort-by-host sorts by host and excludes idle time and stat column. findall now part_pmatchs if no options are used. max information now obtained from _sys on #0 rather than .conmax v1.3 Added permission controls on program. Added #help3. Also added a secondary check to keep it from breaking when a player disconnects during sort. v1.4 Added ANSI color, via lib-ansi. Only main output is colorized. Everything else is normal. v1.5 More compatibility for @WHO. WHO * and WHO * works as expected. ) $include $lib/case $include $ansihack ( Configuration ) $def USE-CONUSER ( Seems fb5.46 doesnt have conuser, fb5.55 does ) ($def USE-FORBID) ( Turn this off to shutdown forbid command ) ( ws #far objector property. FARPROP1 is the prop to read, FARPROP2 is what it should equal if the player objects ) $def FARPROP1 "_prefs/wsobject" $def FARPROP2 "yes" $def UNKSEX "-unknown-" $def UNKSPEC "-unknown-" $def SPC80 " " $def WIZFLAG "mage" $def SYSPROPDIR "~sys" $ifdef __muckname=FurryFaire $def WIZFLAG "mage" ( system property dir on #0, FB uses _sys, Glow uses ~sys ) $def SYSPROPDIR "~sys" $endif $ifdef __muckname=Sociopolitical_Ramifications $def WIZFLAG "wizard" $def SYSPROPDIR "_sys" $include $lib/ansi $endif $define .color-unparseobj unparseobj $enddef $ifdef __muckname=FoxMUCK $def WIZFLAG "mage" $def SYSPROPDIR "~sys" $endif $ifdef __muckname=Known-Space-MUCK $def WIZFLAG "mage" $def SYSPROPDIR "~sys" $endif $ifdef __muckname=YaftMUCK $def WIZFLAG "mage" $def SYSPROPDIR "~sys" $endif $define .strfmt swap SPC80 strcat swap ansi_strcut pop $enddef $define .tell me @ swap ansi_notify $enddef $define issamestr? strcmp not $enddef $define .unparseobj? ( d -- i Should d be unparsed? ) me @ over .controls over "L" flag? or over "A" flag? or swap "C" flag? or me @ "S" flag? not and if 1 else 0 then $enddef lvar count1 lvar count2 lvar sortmeth lvar forbidlist lvar p-private lvar l-private lvar stat-column lvar defaults lvar w-line lvar CMD lvar tmpstr : rng-filter ( {rng} a -- {rngfalse} {rngtrue} ) ( Splits the range into two ranges, one with all the items the function returned false for, and one with those it returned true for. ) over 0 -3 rotate begin dup while 3 pick over + 4 + pick 3 pick execute if 3 pick over + 4 + rotate 4 pick 5 + rotate 1 - 5 pick 5 + 0 swap - rotate -4 rotate rot 1 + -3 rotate then 1 - repeat pop pop ; : rng-join ( {rng1} {rng2} -- {rng'} ) ( Joins together two ranges into one. ) dup 2 + rotate + ; : playerprivate? ( d -- i ; returns 1 if player d is private ) prog "settings/p-set" getpropstr if ( if p-set is set to anything, then private prop must say no for player to be not private ) P-PRIVATE @ getpropstr "no" stringcmp if 0 exit else 1 exit then else ( if p-set is unset, then private prop must say 'yes' for player to be set as private ) P-PRIVATE @ getpropstr "yes" stringcmp if 1 exit else 0 exit then then "playerprivate? fell through!" abort ; : locationprivate? ( d -- i ; returns 1 if location d is private ) prog "settings/l-set" getpropstr if ( if l-set is set to anything, then private prop must say no for location to be not private ) L-PRIVATE @ envpropstr swap pop "no" stringcmp if 0 exit else 1 exit then else ( if p-set is unset, then private prop must say 'yes' for location to be set as private ) L-PRIVATE @ envpropstr swap pop "yes" stringcmp if 1 exit else 0 exit then then "locationprivate? fell through!" abort ; : con-not-private? ( i -- b ) condbref dup playerprivate? if dup location locationprivate? if pop 1 exit else pop 0 then else pop 0 then ; : timestr3 ( i -- s ) ( takes i elapsed amount of seconds and return hours, OR minutes ) dup 59 > not if pop "less than a minute" exit then 60 / dup 59 > not if dup 1 = if intostr " minute" strcat else intostr " minutes" strcat then exit then 60 / dup 24 > not if dup 1 = if intostr " hour" strcat else intostr " hours" strcat then exit then 24 / dup 1 = if intostr " day" strcat else intostr " days" strcat then ; : load-defs ( -- ) prog "settings/p-private" getpropstr dup not if pop "_prefs/private?" then P-PRIVATE ! prog "settings/l-private" getpropstr dup not if pop "_private?" then L-PRIVATE ! prog "settings/stat-column" getpropstr dup not if pop "~status" then STAT-COLUMN ! prog "settings/defaults" getpropstr dup not if pop "_prefs/findall/default" then DEFAULTS ! ; : forbid? ( d -- i ) intostr "#" swap strcat "." strcat FORBIDLIST @ swap instr ; : fillfield (str padchar fieldwidth -- padstr) rot ansi_strlen - dup 1 < if pop pop "" exit then swap over begin swap dup strcat swap 2 / dup not until pop swap ansi_strcut pop ; : leftfitstr ( str pad width - s ) 3 pick ansi_strlen over >= if swap pop ansi_strcut pop else 3 pick -3 rotate fillfield strcat then ; : rightfitstr ( str pad width - s ) 3 pick ansi_strlen over >= if swap pop ansi_strcut pop else 3 pick -3 rotate fillfield swap strcat then ; : centfitstr ( str pad width - s ) 3 pick ansi_strlen over >= if swap pop ansi_strcut pop else 3 pick -3 rotate fillfield dup ansi_strlen 2 / ansi_strcut rot strcat swap strcat then ; : obj-color ( d -- s ; return color for d, based on type ) case player? when "^GREEN^" end ( bright green ) thing? when "^PURPLE^" end ( bright magenta ) exit? when "^BLUE^" end ( bright blue ) program? when "^RED^" end ( bright red ) room? when "^CYAN^" end ( bright cyan ) default pop "^GRAY^" end ( light gray ) endcase ; : nameref ( d i -- s ) swap dup .color-unparseobj swap obj-color swap strcat dup ansi_strlen rot - dup 0 > if swap dup ansi_strip "(#" instr 1 - ansi_strcut swap dup ansi_strlen 4 rotate - 1 - ansi_strcut pop "_" strcat swap strcat else pop then ; : getloc ( d -- s ) dup playerprivate? if dup location locationprivate? if location ME @ WIZFLAG flag? if ME @ "silent" flag? ME @ "_prefs/findall/norefs?" getpropstr .yes? or if name exit else 38 nameref exit then else name exit then else "^CRIMSON^*Location Private*" then else "^CRIMSON^*Player Private*" then me @ WIZFLAG flag? if pop "^RED^+" swap location ME @ "Silent" flag? ME @ "_prefs/findall/norefs?" getpropstr .yes? or if name "^CYAN^" swap strcat else 37 nameref then strcat else swap pop then ; : sex ( d - s ) dup "sex" getpropstr dup if swap pop exit else pop then "gender" getpropstr dup if exit else pop UNKSEX then ; : species ( d - s ) dup "species_prop" getpropstr dup if else pop "species" then getpropstr dup if exit else pop UNKSPEC then ; : time1 ( i -- s ) dup 60 > not if intostr "s" strcat exit then 60 / dup 60 > not if intostr "m" strcat exit then 60 / dup 24 > not if intostr "h" strcat exit then 24 / intostr "d" strcat ; : time2 ( i -- s ) dup 60 > not if intostr "s" strcat exit then 60 / dup 60 > not if intostr "m" strcat exit then dup begin 60 - dup 60 < until intostr "m" strcat swap 60 / intostr "h" strcat swap strcat ; : do-help1 "^PURPLE^" HEADER strcat " " 78 centfitstr .tell "^BLUE^--[ ^YELLOW^#help ^BLUE^]" "-" 78 leftfitstr .tell "To show all connected players: ^YELLOW^'" COMMAND @ strcat "'" strcat .tell "To show a particular connected player: ^YELLOW^'" COMMAND @ strcat " '" strcat .tell "To set yourself private: ^YELLOW^'" COMMAND @ strcat " #private'" strcat .tell "To set yourself not private: ^YELLOW^'" COMMAND @ strcat " #!private'" strcat .tell $ifdef USE-FORBID "To set yourself invisible to FindAll: ^YELLOW^'" COMMAND @ strcat " #forbid'" strcat .tell $endif ME @ WIZFLAG flag? if "To enable showing of DBrefs: ^YELLOW^'" COMMAND @ strcat " #ref'" strcat .tell "To disable showing of DBrefs: ^YELLOW^'" COMMAND @ strcat " #!ref'" strcat .tell then "To show @doing instead of location: ^YELLOW^'" COMMAND @ strcat " #doing'" strcat .tell "To show sort by and show species: ^YELLOW^'" COMMAND @ strcat " #species'" strcat .tell "To show location sorted by idle time: ^YELLOW^'" COMMAND @ strcat " #idle'" strcat .tell "To sort by and show location: ^YELLOW^'" COMMAND @ strcat " #location'" strcat .tell "To show location sorted by player name: ^YELLOW^'" COMMAND @ strcat " #name'" strcat .tell "To show location sorted by player ontime: ^YELLOW^'" COMMAND @ strcat " #ontime'" strcat .tell "To show location unsorted (faster): ^YELLOW^'" COMMAND @ strcat " #unsorted'" strcat .tell "To show more help: ^YELLOW^'" COMMAND @ strcat " #help2'" strcat .tell "To show list of program properties used: ^YELLOW^'" COMMAND @ strcat " #help3'" strcat .tell prog WIZFLAG flag? if me @ WIZFLAG flag? if "To sort by and show host (wizard only): ^YELLOW^'" COMMAND @ strcat " #host'" strcat .tell then then "To show latest changes and information: ^YELLOW^'" COMMAND @ strcat " #changes'" strcat .tell "^AQUA^ Sorting defaults to unsorted. Players default to " prog "settings/p-set" getpropstr if "^CYAN^private^AQUA^. Locations" strcat else "^CYAN^not private^AQUA^. Locations" strcat then .tell "^AQUA^ default to " prog "settings/l-set" getpropstr if "^CYAN^private^AQUA^." strcat else "^CYAN^not private^AQUA^." strcat then " Defaults to #doing in WHO mode." strcat .tell "^PURPLE^-- Words in <> are parameters. Parameters in [] are optional. --" .tell ; : do-help2 "^PURPLE^" HEADER strcat " " 78 centfitstr .tell "^BLUE^--[ ^YELLOW^#help2 ^BLUE^]" "-" 78 leftfitstr .tell " ^WHITE^Setting Defaults: ^YELLOW^findall #def [U|I|O|L|N|D]^GRAY^ Set your personal default" .tell " sort." .tell " can be either U|nsorted (system default)" .tell " sort by I|dle time" .tell " sort by L|ocation" .tell " sort by O|nline time" .tell " sort by N|ame" .tell " sort by D|oing, actually sorts by ontime, but" .tell " shows doing by default." .tell " " .tell " ^WHITE^Other options:^GRAY^ You can set 'rooms' to be private by going to that room" .tell " and doing a.." .tell " ^YELLOW^'@set here=" L-PRIVATE @ strcat ":yes'" strcat .tell " This will cause all players in this room to be listed" .tell " as private. This prop is also looked for down the" .tell " environment tree, so, its useful in environment rooms" .tell " too." .tell " " .tell " ^WHITE^Final Notes:^GRAY^ Thanks goes to ^YELLOW^Tjost^GRAY^ for his quicksort routines!" .tell " " .tell ; : do-help3 ( -- ) "^PURPLE^" HEADER strcat " " 78 centfitstr .tell "^BLUE^--[ ^YELLOW^#help3 ^BLUE^]" "-" 78 leftfitstr .tell " " .tell " ^CYAN^--Properties used on ^YELLOW^" prog unparseobj strcat "^CYAN^--" strcat .tell " ^WHITE^settings/l-private^GLOOM^" "." 25 leftfitstr "^GREEN^(str)^GLOOM^..^WHITE^Property on locations for privacy flag." strcat .tell " ^WHITE^settings/l-set^GLOOM^" "." 25 leftfitstr "^GREEN^(any)^GLOOM^..^WHITE^Set for permission mode. See below." strcat .tell " ^WHITE^settings/p-private^GLOOM^" "." 25 leftfitstr "^GREEN^(str)^GLOOM^..^WHITE^Property on players for privacy flag." strcat .tell " ^WHITE^settings/p-set^GLOOM^" "." 25 leftfitstr "^GREEN^(any)^GLOOM^..^WHITE^Set for permission mode. See below." strcat .tell " ^WHITE^settings/stat-column^GLOOM^" "." 25 leftfitstr "^GREEN^(str)^GLOOM^..^WHITE^Set for Stat-Column property, or NO for none." strcat .tell " ^CYAN^--Properties used on Rooms and Environments--" .tell " ^WHITE^" L-PRIVATE @ strcat "^GLOOM^" strcat "." 25 leftfitstr "^GREEN^(str)^GLOOM^..^WHITE^Set Yes for privacy, No for not." strcat .tell " ^CYAN^--Properties used on Players--" .tell " ^WHITE^" P-PRIVATE @ strcat "^GLOOM^" strcat "." 25 leftfitstr "^GREEN^(str)^GLOOM^..^WHITE^Set Yes for privacy, No for not." strcat .tell " " " " 32 leftfitstr "^WHITE^used by ^YELLOW^#private^WHITE^/^YELLOW^#!private^WHITE^ commands." strcat .tell " ^WHITE^_prefs/findall/default^GLOOM^" "." 25 leftfitstr "^GREEN^(str)^GLOOM^..^WHITE^Set to default sort mode. See ^YELLOW^#help2^WHITE^." strcat .tell " " " " 32 leftfitstr "^WHITE^used by ^YELLOW^#def^WHITE^ option." strcat .tell " ^WHITE^" FARPROP1 strcat "^GLOOM^" strcat "." 25 leftfitstr "^GREEN^(str)^GLOOM^..^WHITE^Set to ^YELLOW^" strcat FARPROP2 strcat "^WHITE^ to hide species/sex." strcat .tell STAT-COLUMN @ "NO" stringcmp 0 = not if " ^WHITE^" STAT-COLUMN @ strcat "^GLOOM^" strcat "." 25 leftfitstr "^GREEN^(str)^GLOOM^..^WHITE^4 characters for Stat-Column." strcat .tell then " " .tell " ^FOREST^If ^PURPLE^'l-set'^FOREST^ or ^PURPLE^'p-set'^FOREST^ is set to anything, it reverses permissions to" .tell " ^FOREST^default to private for location or player. Only a ^PURPLE^'no'^FOREST^ on the property" .tell " ^FOREST^cause that location/player to be not private when these are set." .tell ; : do-changes ( -- ) "^PURPLE^" HEADER strcat " " 78 centfitstr .tell "^BLUE^--[ ^YELLOW^#changes^BLUE^ ]" "-" 78 leftfitstr .tell "^WHITE^v1.6 ^BROWN^ 8/29/98 ^FOREST^Adjusted the colors a little, command options no longer" .tell "^FOREST^ case sensitive. DBrefs shown again on locations for wizards," .tell "^FOREST^ long location names truncate more intelligently. General" .tell "^FOREST^ clean up of the source code." .tell "^WHITE^v1.51 ^BROWN^ 2/19/98 ^FOREST^Obeys ws#far objector property, dbrefs from rooms are" .tell "^FOREST^ no longer shown. Sees new IIC for ~status." .tell "^WHITE^v1.5 ^BROWN^10/19/97 ^FOREST^More compatibility for @WHO. WHO * and WHO * " .tell "^FOREST^ works as expected." .tell "^WHITE^v1.4 ^BROWN^10/16/97 ^FOREST^Added color via lib-ansi. Only main output is colored," .tell "^FOREST^ everything else is normal." .tell "^WHITE^v1.3 ^BROWN^10/ 3/97 ^FOREST^Added permission controls on program. Added #help3. Also" .tell "^FOREST^ added a secondary check to keep it from breaking when a" .tell "^FOREST^ player disconnects during sort." .tell "^WHITE^v1.2 ^BROWN^9/27/97 ^FOREST^ sort-by-host sorts by host and excludes idle time and stat" .tell "^FOREST^ column. Findall now shows single players when named on" .tell "^FOREST^ the command line with no options. Max Connects information" .tell "^FOREST^ now obtained from _sys on #0 rather than ConMax program." .tell "^FOREST^ Help system changed a little." .tell "^WHITE^v1.1 ^BROWN^9/15/97 ^FOREST^QuickSort routines by Tjost. He also changed sort-by-" .tell "^FOREST^ location to seperate private prayers." .tell "^WHITE^v1.0 ^BROWN^12/13/96 ^FOREST^First Version" .tell ; : do-private me @ P-PRIVATE @ "yes" 0 addprop "You've been marked private." .tell ; : do-notprivate me @ P-PRIVATE @ "no" 0 addprop "You've been marked not private." .tell ; : sortbyname condbref name swap condbref name swap stringcmp ; : sortbyidle conidle swap conidle swap - ; : sortbyloc condbref location name swap condbref location name swap stringcmp ; : sortbycontime contime swap contime swap - ; : sortbyspecies condbref species swap condbref species swap stringcmp ; : sortbyhost conhost swap conhost swap stringcmp ; : do-setdefault " " explode 2 = not if "Invalid number of parameters. 'findall #help2' for correct usage." .tell exit then pop toupper dup "I" stringcmp not if me @ swap DEFAULTS @ swap 0 addprop "Default sort set to 'idle time.'" .tell exit then dup "L" stringcmp not if me @ swap DEFAULTS @ swap 0 addprop "Default sort set to 'location.'" .tell exit then dup "U" stringcmp not if me @ swap DEFAULTS @ swap 0 addprop "Default sort set to 'unsorted.'" .tell exit then dup "O" stringcmp not if me @ swap DEFAULTS @ swap 0 addprop "Default sort set to 'online time.'" .tell exit then dup "N" stringcmp not if me @ swap DEFAULTS @ swap 0 addprop "Default sort set to 'name.'" .tell exit then dup "D" stringcmp not if me @ swap DEFAULTS @ swap 0 addprop "Default sort set to 'doing.' This sorts by online time, and shows doing lines." .tell exit then dup "H" stringcmp not if me @ WIZFLAG flag? if me @ swap DEFAULTS @ swap 0 addprop "Default set to 'show host', this sorts by name." .tell exit then then "Sorry, \"" swap strcat "\" is not a valid sort default. See findall #help2." strcat .tell exit ; : do-forbid "*** WARNING ***" .tell " " .tell " Setting yourself findall #forbid is permanent. Once done, you will not be" .tell " shown on the findall list, nor will you be able to use the findall program." .tell " Its never reversable, once done, you will remain #forbid forever." .tell " " .tell "Type YES if this is what you want." .tell read "YES" strcmp not if me @ intostr "#" swap strcat "." strcat prog "forbid" getpropstr swap strcat prog swap "forbid" swap 0 addprop "You've been set 'findall #forbid'. It cannot be undone." .tell exit then "findall #forbid cancelled." .tell ; : findall strip dup CMD ! CMD @ not if "*" CMD ! then load-defs prog "forbid" getpropstr dup FORBIDLIST ! dup if me @ intostr "#" swap strcat "." strcat instr if "You've set yourself 'findall #forbid'! You will not show up on the findall" .tell "list, nor will you beable to use the program. Have a nice day." .tell exit then else pop then 0 swap dup strlen if swap pop 1 swap dup "#help3" instring if pop do-help3 exit then dup "#help2" instring if pop do-help2 exit then dup "#help" instring if pop do-help1 exit then dup "#changes" instring if pop do-changes exit then dup "#pr" instring if pop do-private exit then dup "#!p" instring if pop do-notprivate exit then dup "#def" instring if do-setdefault exit then $ifdef USE-FORBID dup "#forbid" instring if pop exit then $endif ME @ WIZFLAG flag? if dup "#ref" stringpfx if pop "^WHITE^FindAll> ^GREEN^You will now see DBrefs on locations." .tell ME @ "_prefs/findall/norefs?" remove_prop exit then dup "#!ref" stringpfx if pop "^WHITE^FindAll> ^GREEN^You will not see DBrefs on locations." .tell ME @ "_prefs/findall/norefs?" "yes" setprop exit then then dup "#id" instring if "I" SORTMETH ! swap pop 0 swap then dup "#lo" instring if "L" SORTMETH ! swap pop 0 swap then dup "#on" instring if "O" SORTMETH ! swap pop 0 swap then dup "#un" instring if "U" SORTMETH ! swap pop 0 swap then dup "#na" instring if "N" SORTMETH ! swap pop 0 swap then dup "#sp" instring if "S" SORTMETH ! swap pop 0 swap then dup "#do" instring if "D" SORTMETH ! swap pop 0 swap then prog WIZFLAG flag? if me @ WIZFLAG flag? if dup "#ho" instring if "H" SORTMETH ! swap pop 0 swap then dup "*" stringpfx if "H" SORTMETH ! swap pop 0 swap then then then dup "#" stringpfx not if swap pop 0 swap then pop then ( if "Invalid option. Type 'findall #help' for help" .tell exit then ) SORTMETH @ not if me @ DEFAULTS @ getpropstr dup if SORTMETH ! else command @ "@WHO" stringcmp not if pop "D" SORTMETH ! else pop "U" SORTMETH ! then then then SORTMETH @ "H" strcmp not if me @ WIZFLAG flag? not if "Default Sort Method Invalid. Please reset with 'findall #def'" .tell exit then then ( do columns formatting ) "^FOREST^Player ^NAVY^|" "----------------|" STAT-COLUMN @ "NO" strcmp SORTMETH @ "H" strcmp and if swap " ^CRIMSON^Stat ^NAVY^|" strcat swap "------|" strcat then swap " ^VIOLET^OnFor ^NAVY^|" SORTMETH @ "H" strcmp if " ^BROWN^Idle ^NAVY^|" strcat then strcat swap "-------|" SORTMETH @ "H" strcmp if "------|" strcat then strcat SORTMETH @ "H" strcmp not if swap " ^CRIMSON^Host" strcat else SORTMETH @ "S" strcmp not if swap " ^VIOLET^G ^GRAY^Species" strcat else SORTMETH @ "D" strcmp not if swap " ^GRAY^Doing" strcat else swap " ^AQUA^Location" strcat then then then .tell "-" 78 leftfitstr "^NAVY^" swap strcat .tell ( "----------------|------|-------|------|---------------------------------------" .tell ) CMD @ "#" stringpfx not CMD @ "*" stringcmp 0 = not and if CMD @ dup "*" stringpfx if 1 strcut swap pop strip then part_pmatch dup #-1 dbcmp if "Player not found." .tell exit else dup #-2 dbcmp if "Multiple matches!" .tell exit else descriptors dup 1 > if 1 begin over over >= while dup 2 + rotate descrcon over 2 + 0 swap - rotate 1 + repeat pop else swap descrcon swap then then then else concount 1 > if 1 begin dup dup while 1 + dup concount = until dup else concount 1 then then ( sorting section ) SORTMETH @ "U" strcmp if 'sortbyname .rng-quicksort then SORTMETH @ "H" strcmp not if 'sortbyhost .rng-quicksort then SORTMETH @ "I" strcmp not if 'sortbyidle .rng-quicksort then SORTMETH @ "L" strcmp not if me @ WIZFLAG flag? if 'sortbyloc .rng-quicksort else 'con-not-private? rng-filter 'sortbyloc .rng-quicksort rng-join then then SORTMETH @ "O" strcmp not SORTMETH @ "D" strcmp not or if 'sortbycontime .rng-quicksort then SORTMETH @ "S" strcmp not if 'sortbyspecies .rng-quicksort then 0 dup COUNT1 ! COUNT2 ! ( begin main display loop ) begin dup 0 > while 1 - swap 0 W-LINE ! dup concount > not if ( if its larger that current connect, player disc'd during sort ) dup condbref dup dup "D" flag? swap forbid? or if 1 W-LINE ! dup forbid? if COUNT1 @ 1 + COUNT1 ! then dup "D" flag? if COUNT2 @ 1 + COUNT2 ! then name "^PURPLE^<" swap strcat ">" strcat 16 .strfmt "^NAVY^| " strcat else name "^GREEN^" swap strcat 16 .strfmt "^NAVY^| " strcat then STAT-COLUMN @ "NO" strcmp SORTMETH @ "H" strcmp and if over condbref dup "interactive" flag? if pop "^BLUE^edit" else dup "_page/away" getpropstr "yes" stringcmp not if pop "^BLUE^AWAY" else STAT-COLUMN @ getpropstr dup tmpstr ! case dup "IC" issamestr? swap "IIC" issamestr? or when "^GREEN^" tmpstr @ strcat tmpstr ! end "OOC" issamestr? when "^WHITE^" tmpstr @ strcat tmpstr ! end dup "WIZ" issamestr? swap "HS" issamestr? or when "^PURPLE^" tmpstr @ strcat tmpstr ! end "NEW" issamestr? when "^YELLOW^" tmpstr @ strcat tmpstr ! end "IDL" issamestr? when "^BROWN^" tmpstr @ strcat tmpstr ! end default pop "^RED^" tmpstr @ strcat tmpstr ! end endcase tmpstr @ then then 4 .strfmt " ^NAVY^| " strcat strcat then over contime time2 "^PURPLE^" swap strcat " " 5 rightfitstr " ^NAVY^| " strcat strcat SORTMETH @ "H" strcmp if over conidle time1 "^YELLOW^" swap strcat " " 4 rightfitstr " ^NAVY^| " strcat strcat then SORTMETH @ "H" strcmp not if over conhost "^RED^" swap strcat $ifdef USE-CONUSER strcat "^GREEN^(^YELLOW^" strcat swap conuser strcat "^GREEN^)" $endif strcat else SORTMETH @ "S" strcmp not if over condbref FARPROP1 getpropstr FARPROP2 stringcmp if swap condbref dup sex 1 ansi_strcut pop toupper "^PURPLE^" swap strcat " " strcat swap species "^WHITE^" swap strcat strcat swap dup ansi_strlen 78 swap - rot dup ansi_strlen rot dup rot swap > if 2 - ansi_strcut pop "^BLUE^>>" strcat strcat else pop strcat then else swap pop "^RED^*hidden*" strcat then else SORTMETH @ "D" strcmp not if swap condbref "_/do" getpropstr dup if swap dup ansi_strlen 78 swap - rot dup ansi_strlen rot dup rot swap > if 2 - ansi_strcut pop "^WHITE^" swap strcat "^BLUE^>>" strcat strcat else pop "^WHITE^" swap strcat strcat then else pop then else swap condbref getloc swap dup ansi_strlen 78 swap - rot dup ansi_strlen rot dup rot swap > if 2 - ansi_strcut pop "^CYAN^" swap strcat "^BLUE^>>" strcat strcat else pop "^CYAN^" swap strcat strcat then then then then W-LINE @ if me @ WIZFLAG flag? if .tell else pop then else .tell then else pop then repeat ( end main display loop ) me @ WIZFLAG flag? if concount else concount COUNT2 @ - then dup 1 > if "^NAVY^---[ ^YELLOW^" swap intostr strcat "^GRAY^ players are connected." strcat else "^NAVY^---[ ^YELLOW^" swap intostr strcat "^GRAY^ player is connected." strcat then " (Max was ^YELLOW^" strcat #0 SYSPROPDIR "/max_connects" strcat getprop intostr strcat "^GRAY^ since Startup " strcat systime #0 SYSPROPDIR "/startuptime" strcat getprop - timestr3 strcat " ago)" strcat COUNT1 @ dup if me @ WIZFLAG flag? not if dup intostr " ^PURPLE^(" swap strcat swap 1 > if " players not shown) ^NAVY^]" strcat else " player not shown) ^NAVY^]" strcat then else pop " ^NAVY^]" then else pop " ^NAVY^]" then strcat "-" 78 leftfitstr .tell me @ "_Prefs/FindAll/LastVersion" getpropstr dup HEADER strcmp if me @ "C" flag? if "FindAll has been upgraded! Type ^YELLOW^" COMMAND @ strcat " #changes^GRAY^ to see latest mods." strcat .tell else "FindAll has been upgraded! Type '" COMMAND @ strcat " #changes' to see latest mods." strcat .tell then dup if "You last used: ^AQUA^" swap strcat .tell else pop then me @ "_Prefs/FindAll/LastVersion" HEADER setprop me @ "_Prefs/Findalldefs" getpropstr dup if me @ "_Prefs/FindAll/Default" rot setprop me @ "_Prefs/Findalldefs" remove_prop else pop then then ; . c q