Commit 8566bf0f authored by Alynna Trypnotk's avatar Alynna Trypnotk

Proto 1.0 versions historical versions only!

parent 2f78525e
/**************************************************************************
* ProtoMuck
* Copyright (c) 2000 by Chris Brine, and Richard Taylor
* All rights reserved
*
* Contact addresses
* Chris Brine - Moose/Van - ashitaka@home.com
* Richard Taylor - Akari - Nakoruru08@hotmail.com
*
* This code is based loosely on the following code
* TinyMUD
* Copyright (c) 1989, 1990 by David Applegate, James Aspnes, Timothy
* Freeman, Bennet Yee, and Na Choon Piaw
* TinyMUCK FB
* authored by Foxen/Revar (real name undisclosed)
*
* NeonMUCK
* Copyright (c) 1996 by Jeremy Blackman, Andrew Nelson, and Joseph L. Traub
*
* This code supports the Pueblo multimedia protocol
* Copyright (c) 1995, 1996 by Chaco Communications
*
* This code contains the MCP programming language
* Copyright (c) 1996 by Joseph L. Traub and Jeremy Blackman
*
* This code contains a dictionary-based compression scheme
* Copyright (c) 1995 Dragon's Eye Productions and Dr. Cat
*
* Permission is hereby granted to copy, redistribute or use this software
* subject to the following restrictions and understandings
*
* I) Any copy or redistrubtion of this software must include this
* copyright notice in full
*
* II) Users of this software agree to make a good faith attempt to return
* any improvements or extensions made to this software or it's
* component parts to the authors of this software.
*
* III) All materials developed as a consequence of the use of this software
* shall duly acknowledge such use in accordance with the standards of
* acknowledging credit in academic research.
*
* IV) This software may not be sold, nor may access to this software be
* charged for without the express written permission of the authors
* and the written permission of the authors of the various components.
*
* V) The authors make no warrantee or representation about the fitness
* of this software for any task, nor do they warrantee or represent
* this software as error-free. The authors further will not be held
* responsible for any problems or damages incurred through the use of
* this software.
*
* VI) The authors make no promises or commitments to provide any services
* or support for this software, either by way of maintainance or by
* upgrades to this software.
*
* VII) In conjunction with product arising from the use of this software,
* there shall be no use of the name of the authors, of Carnegie-Mellon
* University, Bell Communications Research, Cat and Dragon Enterprises
* Ltd, Dragon's Eye Productions, Blackman and Ross, CyberSoft or
* Noderunner, nor any adaptation thereof in any advertising,
* promotional, or sales literature without prior written consent from
* the authors, Carnegie-Mellon University, Bell Communications
* Research, Cat and Dragon Enterprises Ltd, Dragon's Eye Productions,
* Blackman and Ross, CyberSoft and Noderunner in each case
*
***************************************************************************/
## QUICK INSTALLATION for those who demand results NOW! ##
1. modify src/inc/config.h to fit your preferences and your system.
2. modify src/inc/params.h also.
3. modify game/data/parmfile.cfg
When you're happy with the changes...
cd src # Enter the src directory.
./configure # This will call the configuration script
make # Compiles the source code
make install # This puts the binaries in ../game/
cd ../game/data # This will put you into the games data directory
(opt) cp minimal.proto proto.db # Make the minimal dbase your dbase
cd ../.. # Directory should be $(HOME)/proto
./proto start # This starts the server.
And you're done! ProtoMuck has it's own special minimal database. To
connect to it, use:
telnet somehost someport
<Welcome screen scrolls by>
connect One potrzebie
You should then be connected to da Man.
QUIT
./proto stop # This shuts the server down.
## HISTORY ##
ProtoMUCK is derived from NeonMUCK with man extentions and
modifications, which is derived from TinyMUCK, PuebloMUCK, RattyMUCK,
and TinyMUCKfb. All of these share common derivation form TinyMUD 1.5.2,
which also has many extensive changes.
## COMPATABILITY ##
ProtoMuck will read, without modification, any TinyMUD, TinyMUCK,
PuebloMUCK, TinyMUCK FB, NeonMUCK, and RattyMUCK databases. ProtoMuck
databases however cannot be loaded back into these other variants,
except for NeonMUCK (though it is untested and only in theory).
NeonMuck added space for 32 additional flags on all objects, along
with a new programming language called MCP, extensive new MUF
primitives, increased support for Pueblo and other web based logins,
and a host of other changes. And, in turn, ProtoMUCK expanded upon
that and started on the long road of bringing the FB code base in
line with the later versions.
To convert an existing FB database over, rename it to proto.db
in the game/data directory. Log in as the God character, and
type '@fixwizbits Convert DB to new level system.' Then shut
down the game and restart it; the database is now a clean
Neon-format database.
## COPYRIGHT ##
Please see the file COPYRIGHT for the full version of the copyright
applying to this code. It is unlawful to use this code without
complying with the copyright.
## COMPILING PROTOMUCK ##
ProtoMuck uses the GNU autoconf system to try and compile without
errors on any platform which supports the required tools. ProtoMuck
does want GCC, Flex, and Bison to compile each and every source file
into object code. If Flex and Bison aren't available, pre-compiled
versions of the mcpparse.y and mcplex.fl files are available in
the 'backup' directory under the source tree.
This code is known to compile without errors or warnings under
Linux, Solaris, and SunOS. It can be ported cleanly to Windows
under Cygnus's gnu-win32 development kit. with a custom Makefile
and using the backup parser files.
It should compile cleanly, or with very few modification under most
systems. If you need to make modifications, or find a system which
it doesn't compile under, or which it compiles but doesn't run under,
please contact the authors, and they will do their best to provide you
with some help, and to incorporate fixes into later releases (if any).
The authors are however under no obligation to provide support, but
will likely do so anyway.
# SLACKWARE LINUX #
ProtoMuck has an internal fix to the Makefile so the fix below should
not be necessary, but the fix is provided for reference purposes.
If you are running slackware 2.2.x or later, you might need to first
make sure your system has a soft link from /usr/lib/libg.sa to
/usr/lib/libc.sa. Do this with the command:
cd /usr/lib; ln -s libc.sa libg.sa
This isn't a complete fix, but it at least lets Proto compile. Make
sure the Makefile generated has LIBR=-lm
This fix is not required under RedHat Linux.
# SUN #
Sun realloc() is braindead. On every Sun system I have seen,
all TinyMUD/TinyMUCK derived code runs about 6 megs in memory with
a very small database if the option DB_DOUBLING is not defined. If
you are running on a Sun3 or Sun4, you should definitely compile with
this option turned on.
Let the authors know if there are other systems that need this. This
may not be as much of a problem with current versions of the server,
as databases now store a count of their objects, and the entire
database generally gets allocated in one chunk.
# OTHER OS'S #
As far as other platforms, you're on your own. In almost all cases,
just running 'make' will set up the makefile and configuration
for your system, then typing 'make' again will compile the server.
## DIRECTORY STRUCTURE ##
bin -- Contains the unix restart script and other support scripts
docs -- Contains important information about administering the muck
game -- Holds all run-time game data files and online information
src -- Contains all source code to build the server executable
and related utility programs
## PROGRAM ##
# protomuck #
Usage: protomuck [options] starting-dbfile dump-dbfile [portnumber]
Where the [options] can be:
-convert load db, save in current format, and quit.
-decompress when saving db, save in uncompressed format.
-nosanity don't do db sanity checks at startup time.
-insanity load db, then enter interactive sanity editor.
-sanfix load db, then fix any sanity problems in the DB.
-wizonly only allow wizards to login.
-help display usage message.
If port is not specified it defaults to 10002. The initial database
will be read in from starting-dbfile, which must contain at least
the two objects in minimal.db to work well.
The -decompress option will cause the dump-file to be saved in an
uncompressed format. The protomuck process will write a checkpoint
out to dump-dbfile every few hours, depending on the @tuned interval
parameter.
The -convert option will cause the server to load an old style
database, save it back out immediately in the most current database
format, and then shutdown, instead of allowing connections.
# proto #
Usage: proto start -- Starts the muck
Usage: proto stop -- Shuts the muck down
This is just a simple script to turn ProtoMuck on or off from the
shell account. ProtoMuck accepts a SIGKILL to force an immediate
but clean and safe shutdown of the muck. (Don't try this on a
normal Fuzzball server, it will crash and could hose your database.)
# olddecompress #
Usage: olddecompress < compressed-db-file > uncompressed-db-file
or: olddecompress compressed-db-file > uncompressed-db-file
Removes old style bigraph compression from a database file that has
been generated by an older version of netmuck using the -DCOMPRESS
compile-time option.
# topwords #
Usage: topwords < db-file | sort > wordlist.txt
This program will find the 4096 words who will give you the best
compression with the new style dictionary based compression. This
is used by the optimdb script to re-optimize the compression of a
database.
# optimdb #
Usage: optimdb infile outfile
This script reads a database, and saves it out to the outfile with
the compression optimized. For databases under a half meg, this db
will likely be a few K larger than the same database compressed with
the old bigraph method. For half a meg and over, though, it's a win.
## AUTHOR and CONTACT INFORMATION ##
Bug reports, suggestions, and complaints can be sent to:
(Moose) ashitaka@home.com -or- (Akari) Nakoruru08@hotmail.com
\ No newline at end of file
## QUICK INSTALLATION for those who demand results NOW! ##
1. modify src/inc/config.h to fit your preferences and your system.
2. modify src/inc/params.h also.
3. modify game/data/parmfile.cfg
When you're happy with the changes...
cd src # Enter the src directory.
make # This will call the configuration script
(opt) make depend # Makes the dependancies appropriate to your system
make # Compiles the source code
make install # This puts the binaries in ../game/
cd ../game/data # This will put you into the games data directory
cd ../.. # Directory should be $(HOME)/proto
./proto start # This starts the server.
And you're done! ProtoMuck has it's own special minimal database. To
connect to it, use:
telnet somehost someport
<Welcome screen scrolls by>
connect One potrzebie
You should then be connected to da Man.
QUIT
./proto stop # This shuts the server down.
## HISTORY ##
ProtoMUCK is derived from NeonMUCK with man extentions and
modifications, which is derived from TinyMUCK, PuebloMUCK, RattyMUCK,
and TinyMUCKfb. All of these share common derivation form TinyMUD 1.5.2,
which also has many extensive changes.
## COMPATABILITY ##
ProtoMuck will read, without modification, any TinyMUD, TinyMUCK,
PuebloMUCK, TinyMUCK FB, NeonMUCK, and RattyMUCK databases. ProtoMuck
databases however cannot be loaded back into these other variants,
except for NeonMUCK (though it is untested and only in theory).
NeonMuck added space for 32 additional flags on all objects, along
with a new programming language called MCP, extensive new MUF
primitives, increased support for Pueblo and other web based logins,
and a host of other changes. And, in turn, ProtoMUCK expanded upon
that and started on the long road of bringing the FB code base in
line with the later versions.
To convert an existing FB database over, rename it to proto.db
in the game/data directory. Log in as the God character, and
type '@fixwizbits Convert DB to new level system.' Then shut
down the game and restart it; the database is now a clean
Neon-format database.
## COPYRIGHT ##
Please see the file COPYRIGHT for the full version of the copyright
applying to this code. It is unlawful to use this code without
complying with the copyright.
## COMPILING PROTOMUCK ##
ProtoMuck uses the GNU autoconf system to try and compile without
errors on any platform which supports the required tools. ProtoMuck
does want GCC, Flex, and Bison to compile each and every source file
into object code. If Flex and Bison aren't available, pre-compiled
versions of the mcpparse.y and mcplex.fl files are available in
the 'backup' directory under the source tree.
This code is known to compile without errors or warnings under
Linux, Solaris, and SunOS. It can be ported cleanly to Windows
under Cygnus's gnu-win32 development kit. with a custom Makefile
and using the backup parser files.
It should compile cleanly, or with very few modification under most
systems. If you need to make modifications, or find a system which
it doesn't compile under, or which it compiles but doesn't run under,
please contact the authors, and they will do their best to provide you
with some help, and to incorporate fixes into later releases (if any).
The authors are however under no obligation to provide support, but
will likely do so anyway.
# SLACKWARE LINUX #
ProtoMuck has an internal fix to the Makefile so the fix below should
not be necessary, but the fix is provided for reference purposes.
If you are running slackware 2.2.x or later, you might need to first
make sure your system has a soft link from /usr/lib/libg.sa to
/usr/lib/libc.sa. Do this with the command:
cd /usr/lib; ln -s libc.sa libg.sa
This isn't a complete fix, but it at least lets Proto compile. Make
sure the Makefile generated has LIBR=-lm
This fix is not required under RedHat Linux.
# SUN #
Sun realloc() is braindead. On every Sun system I have seen,
all TinyMUD/TinyMUCK derived code runs about 6 megs in memory with
a very small database if the option DB_DOUBLING is not defined. If
you are running on a Sun3 or Sun4, you should definitely compile with
this option turned on.
Let the authors know if there are other systems that need this. This
may not be as much of a problem with current versions of the server,
as databases now store a count of their objects, and the entire
database generally gets allocated in one chunk.
# OTHER OS'S #
As far as other platforms, you're on your own. In almost all cases,
just running 'make' will set up the makefile and configuration
for your system, then typing 'make' again will compile the server.
## DIRECTORY STRUCTURE ##
bin -- Contains the unix restart script and other support scripts
docs -- Contains important information about administering the muck
game -- Holds all run-time game data files and online information
src -- Contains all source code to build the server executable
and related utility programs
## PROGRAM ##
# protomuck #
Usage: protomuck [options] starting-dbfile dump-dbfile [portnumber]
Where the [options] can be:
-convert load db, save in current format, and quit.
-decompress when saving db, save in uncompressed format.
-nosanity don't do db sanity checks at startup time.
-insanity load db, then enter interactive sanity editor.
-sanfix load db, then fix any sanity problems in the DB.
-wizonly only allow wizards to login.
-help display usage message.
If port is not specified it defaults to 10002. The initial database
will be read in from starting-dbfile, which must contain at least
the two objects in minimal.db to work well.
The -decompress option will cause the dump-file to be saved in an
uncompressed format. The protomuck process will write a checkpoint
out to dump-dbfile every few hours, depending on the @tuned interval
parameter.
The -convert option will cause the server to load an old style
database, save it back out immediately in the most current database
format, and then shutdown, instead of allowing connections.
# proto #
Usage: proto start -- Starts the muck
Usage: proto stop -- Shuts the muck down
This is just a simple script to turn ProtoMuck on or off from the
shell account. ProtoMuck accepts a SIGKILL to force an immediate
but clean and safe shutdown of the muck. (Don't try this on a
normal Fuzzball server, it will crash and could hose your database.)
# olddecompress #
Usage: olddecompress < compressed-db-file > uncompressed-db-file
or: olddecompress compressed-db-file > uncompressed-db-file
Removes old style bigraph compression from a database file that has
been generated by an older version of netmuck using the -DCOMPRESS
compile-time option.
# topwords #
Usage: topwords < db-file | sort > wordlist.txt
This program will find the 4096 words who will give you the best
compression with the new style dictionary based compression. This
is used by the optimdb script to re-optimize the compression of a
database.
# optimdb #
Usage: optimdb infile outfile
This script reads a database, and saves it out to the outfile with
the compression optimized. For databases under a half meg, this db
will likely be a few K larger than the same database compressed with
the old bigraph method. For half a meg and over, though, it's a win.
## AUTHOR and CONTACT INFORMATION ##
Bug reports, suggestions, and complaints can be sent to:
(Moose) ashitaka@home.com -or- (Akari) Nakoruru08@hotmail.com
NeonMUCK Changes Files
----------------------
The work on NeonMUCK was not highly documented. These files are the only
indications of any record keeping on the changes that went into NeonMUCK.
They have been included here as a reference as to what ProtoMUCK evolved
from. Nothing contained in them is implied to be correct, or to even be
supported in ProtoMUCK anymore.
NeonMuck source code is (C)1996 Andrew Nelson and Jeremy Blackman, all
rights reserved. All pertinant TinyMUCK and TinyMUCKfb copyrights also
still apply. Database compression code (C) Dragon's Eye Productions and
used with the kind permission of Dr. Cat.
---- Changes from normal TinyMUCKfb as of Neon 1.5, first release ----
REALLY MAJOR:
* Pueblo multimedia protocol support added.
- 'PUEBLO' ($) flag added.
- notify_html, notify_html_exclude, html_nocr, html_exclude_nocr
MUF primitives added.
- {html:} and {ohtml:} MPI added
* ANSI color support added.
- 'COLOR' flag added to players.
- ansi_notify MUF primitive added
- {ansi:} MPI added.
* New MUCKER / WIZARD level system added.
- see 'help newlevels'
* WWW server support added.
- notify_descriptor (MAGE (M4) only) MUF primitive added.
- Users can create homepages on themselves.
- MUF programs can work as webpages as well.
* Combat/RPG support planned
- MOBILE and ETHEREAL flags (currently unused by server) added for
MUD-program use.
OF OTHER INTEREST:
* Program logs show user's mucker level.
* @/lockout-msg can be set on a player to prevent them from logging in...
contents of this prop will be displayed and login rejected.
* Lots of new @tune parameters
* Online registration request hopper added.
* wizchat/wc added internally.
* Wizards can choose to not see wall_wizards messages
* Added setting to curtail building if DB hits a certain size
* Wizards can @name non-wizards without needing to @newpassword the user
* Dark rooms do not display contents even to owner. Examine will still
show all contents
* Fixed simple_look in look.c to not use (@desc) for the 'command @'
* _sys/lastcleantime added for cleanup intervals
* Added support for mortal use of !@ps
* Wizards cannot @force other wizards. Period.
* MPI security holes patched.
* @/mage feeps added to allow select mortals higher-level use of certain
commands.
* Wizards can teleport into player's inventories. No, you can't ask why.
Boredom, ok? :)
* MUF 'parseprop' now parses MPI _correctly_ to remove all non-printing
characters from result string.
* MUF 'moveto' prim now allows entry of vehicles without a wizbit.
* Wizard WHO list modified so there's more room for sitenames.
* 'Doing...' in normal WHO list is replaced by #0=_poll, if set.
* Fixed @tune to allow un-setting of dbref tune params.
* Added GUEST flag, restricted use of certain commands so characters set
GUEST cannot use them. Set this flag on twinks, too! Note that MUF
programs not locked against GUEST characters could potentially give them
these powers back.
* Added a 'help' command to the login screen to spit back 'connect.txt'
as opposed to welcome.txt.
* 'viewable' flag added.
* DARK flag on a player will send them ALL debug info for a MUF program
they run. HACK FOR DEBUGGING PURPOSES...(?)TEMPORARY(?)
* Andy made a truly garish default color scheme. Watch out! :)
* Program changes by wizards are NOT logged to logs/programs.
This saves an unbelievable amount of disk space.
* Nicer @stats and @proginfo
* Automatic character generation / e-mail based registration added. Cool!
* Some sites, for real losers, can be COMPLETELY blocked. Neon won't
even output the login screen before dropping connection.
* {showlist} MPI primitive will print a list without running against the
{list} length limit.
* A set of randomly cycled login screens! Again, no, you can't ask why! ;)
INTERNAL:
* Fixed some logging issues.
* Hostname resolution in registration connection should work better now.
* Violated some C programming rules, but fixed dump_users() to not crash
on long usernames.
* format_time() fixed.
NeonMuck source code is (C)1996 Jeremy Blackman, Andrew Nelson, and Joe
Traub.
All rights reserved. All pertinant TinyMUCK and TinyMUCKfb copyrights
also still apply. Database compression code (C) Dragon's Eye Productions
and used with the kind permission of Dr. Cat.
---- Changes from pre-2.x Neon as of Neon 2.0 ----
* First prototype of NWI (Neon Web Interface) is in place.
- this allows a user without Pueblo to log in and still get
multimedia.
* More MUF primitives cleaned up.
* Some 'ease of use' MPI and MUF for multimedia added...
- commandtext
- playmidi
* KEEPDUMPS cleaned up.
* First hooks for a potential Windows port added in place.
---- Changes from Neon 2.0 as of Neon 2.10 ----
* NWI cleaned up slightly.
* This version is mostly internal changes to allow easier compiling
across different platforms.
- SunOS/Solaris now compiles without too much trouble, although a
slight manual change to autoconf.h is still needed after running
the configure script.
- WinNT/95 port works now!
* Some (undocumented, and possibly temporary) new MUF primitives added,
to support arrays and socket controls.
---- Planned changes ---
Loki is talking to Foxen, the author of TinyMUCKfb, about establishing
some standards between the two MUCKs so that TinyMUCKfb, which will support
multimedia as well eventually, will be able to exchange code with NeonMuck.
This may necessitate a large revision, to 3.x, but will allow the standards
for arrays, sockets, etc to be fixed and then documented, since it will
then be a reasonable safe assumption they won't be changing.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Changes from 1.70 to 1.71
**Foxsteve**
- Added the RESTART, SHUTDOWN, DELTA, DUMP, and ARMAGEDDON prims to MUF.
- Fixed various overflow crashes caused by checks not being implemented
where they should be.
- Submitted MUF editing prims for review. Note that the MUF editng prims
were not included in Proto1.75, but will show up in 1.80. The reason
for this is that they will be redesigned to work with arrays instead
of stack ranges.
- Fixed }array, }list, and }dict to actually work. Those had gotten lost
from compile.c at some point along the line.
**Alynna**
* Added the define CYGWIN for defining a compile under CYGWIN. Off by default.
If you are compiling for Win32 under Cygwin, and define this, all will go off
without so much as a warning. :) Assuming your Cygwin is configed right.
* Added the define CYGWIN_TZ and CYGWIN_TZX which defines the
offset in hours and the label of the timezone for strftime.
* Added my comments in config.h, documenting these, and added a note to
the USE_STRFTIME define, saying not to define it, as CYGWIN define fixes
the protomuck strftime.
* strftime.c/format_time: For %Z: When determining the timezone, use
whats in the define, dont try to figure it out under CYGWIN, it breaks.
Takes the label from CYGWIN_TZX
* strftime.c/get_tz_offset: Return whats defined under CYGWIN_TZ, dont
try to figure it out.
* interface.c/main: DETACH define fix, CYGWIN is POSIX, but doesnt
explicitly say so. CYGWIN define activates this fix when DETACH is defined.
CYGWIN define tells proto to use 'setsid()' for CYGWIN.
* version.h: Update version number and specifically detect CYGWIN and display
apporpriate version info.
* game.c: Modified @version for new version info, and to display whether it is