[net.games.hack] forcefield, others problems and some info scripts

jdl@elmgate.uucp (John Liberty) (02/21/86)

A problem that some hackers may have run into is the so called 'invisible 
forcefield' that prevents you from going to another level. This is not a
monster or some other feature that can be zapped or scrolled.
It is a problem with hack creating the new level's file on disk. I usually
guess it is a disk space problem but I can't be sure. We have plenty of disk
space now so we never see this anymore.
Maybe someone knows more specifics to help anyone who has run into this
problem.

A problem which we had at our site, where /usr/games is an exported NFS
volume (on SUN's), is the method for checking lock files that already
exist. At startup, hack deletes any lock files it thinks are old or have
processes that no longer exists. If hack is running on different machines,
of course some pids will be invalid. We modified hack.unix.c to comment
out the line that checks pid's  it starts ....if (!(kill(lockedpid,0).......

Since I'm posting I'd thought I'd add some scripts which I wrote to give
info on hackers and their scores. The first is a awk script which gives 
score information on a player who has played each character. I takes the
players highest score with each character and calculates total points and 
average points. It also give a cum rank which is the sum of the positions.
This makes an 'all around player competition' at our site. We post the
list in the hack news file. The second script is just a simple shell
script which gives the total number of different players.

-cut here
---------------o----------------o---------------------
# hackcount
# count up the scores for a hack player
#		written by seismo!rochester!kodak!elmgate!jdl (John Liberty)
#
# usage: hack -s [user..] | awk -f hackcount
# I set up an alias:
#   alias hc 'hack -s \!* | awk -f hackcount'
#
# will use the top score in each character class
#  so if multiple users are given the stats reflect combined effort 
# some lines at the bottom providing additional stats are commented out
#
# line1 gives the first line that has a score on it
# nscores helps to check if there is enough info
#
BEGIN {
	line1 = 3;
	nscores = 6;
	notenufs = "Not enough scores.";
	noteveryc = "Not every character.";
      }
	NR >= line1 {
		n = split($3,who,"-");
		if (char[who[2]])
			char[who[2]]++;
		else
		{
			char[who[2]]=1;
			rank += $1;
			score += $2;
			lines++;
			name[who[1]]++;
		}
	}
END   {
	if (lines < nscores)
		print notenufs;
	else if ((char["C"]) && (char["S"]) && (char["T"]) && (char["W"]) && (char["F"]) && (char["K"]))
# got one of each
	{
		for (i in name) printf("%s ", i);
		print ":",rank, score, score/nscores;
	}
	else
		print noteveryc;

# additional stats if wanted
# names used and number of characters played
#	for (i in name) print i,name[i];
# number in each character class
#	for (i in char) print i,char[i];
      }


-and here
---o----------o-------------------o-------------------o-------
#
# finds number of different players
#		written by seismo!rochester!kodak!elmgate!jdl (John Liberty)
#
hack -s all | awk ' NR >=3 { n=split($3,who,"-"); print who[1]; }' |sort|uniq > temp$$
set count = `wc temp$$`
echo "Number of different players :" $count[1]
echo -n "View =>" ; set resp = $<
if ($resp =~ [yY]*) then
	more temp$$
endif
rm temp$$
exit



---------------
					John Liberty (jdl)
					seismo!rochester!kodak!elmgate!jdl
					Eastman Kodak Co.
					Rochester, NY