Crossfire Server, Branches 1.12
R18729
|
Go to the source code of this file.
Macros | |
#define | ARCHETYPES "archetypes" |
#define | ARCHTABLE 8192 |
#define | ARMOR_MAX_ENCHANT 5 |
#define | ARMOR_SPEED_IMPROVEMENT 10 |
#define | ARMOR_SPEED_LINEAR TRUE |
#define | ARMOR_WEIGHT_LINEAR TRUE |
#define | ARMOR_WEIGHT_REDUCTION 10 |
#define | AUTOSAVE 5000 |
#define | BALANCED_STAT_LOSS FALSE |
#define | BALSL_LOSS_CHANCE_RATIO 4 |
#define | BALSL_MAX_LOSS_RATIO 2 |
#define | BALSL_NUMBER_LOSSES_RATIO 6 |
#define | BANFILE "ban_file" |
#define | BANISHFILE "banish_file" |
#define | CASTING_TIME FALSE |
#define | COMMAND_HASH_SIZE 107 |
#define | CS_LOGSTATS |
#define | CS_LOGTIME 600 |
#define | CSPORT 13327 /* old port + 1 */ |
#define | DEATH_PENALTY_LEVEL 3 |
#define | DEATH_PENALTY_RATIO 20 |
#define | DEBUG |
#define | DMFILE "dm_file" |
#define | EMERGENCY_MAPPATH "/world/world_105_115" |
#define | EMERGENCY_X 5 |
#define | EMERGENCY_Y 37 |
#define | EXPLORE_MODE FALSE |
#define | HIGHSCORE "highscore" |
#define | HIGHSCORE_LENGTH 1000 |
#define | LOGFILE "/var/log/crossfire/logfile" |
#define | MANY_CORES |
#define | MAP_CLIENT_X 25 |
#define | MAP_CLIENT_Y 25 |
#define | MAP_DEFAULTRESET 7200 |
#define | MAP_MAXRESET 7200 |
#define | MAP_MAXTIMEOUT 1000 |
#define | MAP_MINTIMEOUT 500 |
#define | MAPDIR "maps" |
#define | MAX_ERRORS 25 |
#define | MAX_OBJECTS 100000 |
#define | MAX_TIME 120000 |
#define | MAXSTRING 20 |
#define | MOTD "motd" |
#define | NO_EMERGENCY_SAVE |
#define | NO_POLYMORPH |
#define | NOT_PERMADETH TRUE |
#define | OBJ_EXPAND 100 |
#define | PERM_EXP_GAIN_RATIO 0.10f |
#define | PERM_EXP_MAX_LOSS_RATIO 0.50f |
#define | PERM_FILE "forbid" |
#define | PERMANENT_EXPERIENCE_RATIO 25 |
#define | PK_LUCK_PENALTY 1 |
#define | PLAYERDIR "players" |
#define | REAL_WIZ TRUE |
#define | RECYCLE_TMP_MAPS FALSE |
#define | REGIONS "regions.reg" |
#define | RESET_LOCATION_TIME 3600 |
#define | RESURRECTION FALSE |
#define | SAVE_DIR_MODE 0770 |
#define | SAVE_MODE 0660 |
#define | SEARCH_ITEMS TRUE |
#define | SET_FRIENDLY_FIRE 5 |
#define | SET_TITLE TRUE |
#define | SHUTDOWN_FILE "shutdown" |
#define | SIMPLE_EXP TRUE |
#define | SOCKETBUFSIZE 256*1024 |
#define | SPELL_ENCUMBRANCE TRUE |
#define | SPELL_FAILURE_EFFECTS FALSE |
#define | SPELLPOINT_LEVEL_DEPEND TRUE |
#define | STARTMAX 500 |
#define | STAT_LOSS_ON_DEATH FALSE |
#define | TEMPLATE_DIR "template-maps" |
#define | TMPDIR "/tmp" |
#define | TREASURES "treasures" |
#define | UNIQUE_DIR "unique-items" |
#define | USE_CALLOC |
#define | WATCHDOG |
This file contains various #defines that select various options. Some may not be desirable, and some just may not work.
There are some options that are not selectable in this file which may not always be undesirable. An example would be certain treasures that you may not want to have available. To remove the activation code would make these items worthless - instead remove these from the treasure file. Some things to look for are:
prepare_weapon, improve_*: Allow characters to enchant their own weapons ench_armour: Allow characters to enchant their armor.
In theory, most of the values here should just be defaults, and everything here should just be selectable by different run time flags However, for some things, that would just be too messy.
Definition in file config.h.
#define ARCHTABLE 8192 |
Used when hashing archetypes.
Definition at line 596 of file config.h.
Referenced by add_arch(), clear_archetable(), and try_find_archetype().
#define AUTOSAVE 5000 |
How often (in seconds) the player is saved if he drops things. If it is set to 0, the player will be saved for every item he drops. Otherwise, if the player drops and item, and the last time he was saved due to item drop is longer the SAVE_INTERVAL seconds, he is then saved. Depending on your playing environment, you may want to set this to a higher value, so that you are not spending too much time saving the characters. This option should now work (Crossfire 0.90.5) AUTOSAVE saves the player every AUTOSAVE ticks. A value of 5000 with MAX_TIME set at 120,000 means that the player will be saved every 10 minutes. Some effort should probably be made to spread out these saves, but that might be more effort than it is worth (Depending on the spacing, if enough players log on, the spacing may not be large enough to save all of them.) As it is now, it will just set the base tick of when they log on, which should keep the saves pretty well spread out (in a fairly random fashion.)
Definition at line 665 of file config.h.
Referenced by process_players1().
#define BALSL_LOSS_CHANCE_RATIO 4 |
Definition at line 117 of file config.h.
Referenced by kill_player().
#define BALSL_MAX_LOSS_RATIO 2 |
Definition at line 119 of file config.h.
Referenced by kill_player().
#define BALSL_NUMBER_LOSSES_RATIO 6 |
Definition at line 118 of file config.h.
Referenced by kill_player().
#define BANFILE "ban_file" |
Enable the new material code - it needs some work. You can enable this, and things will work, just you'll see a whole bunch more materials show up, and thus a whole bunch more materials in your inventory, and the sorting for them isn't really good. If you compress your files to save space, set the COMPRESS_SUFFIX below to the compression suffix you want (.Z, .gz, .bz2). The autoconf should already find the program to use. If you set the suffix to something that autoconf did not find, you are likely to have serious problems, so make sure you have the appropriate compression tool installed before you set this. You can look at the autoconf.h file to see what compression tools it found (search for COMPRESS). Note that this is used when saving files. Crossfire will search all methods when loading a file to see if it finds a match If you get a complaint about O_NDELAY not being known/undefined, try uncommenting this. This may cause problems - O_NONBLOCK will return -1 on blocking writes and set error to EAGAIN. O_NDELAY returns 0. This is only if no bytes can be written - otherwise, the number of bytes written will be returned for both modes. BANFILE - file used to ban certain sites from playing. See the example ban_file for examples.
Definition at line 360 of file config.h.
Referenced by checkbanned().
#define BANISHFILE "banish_file" |
Definition at line 588 of file config.h.
Referenced by checkbanned(), and command_banish().
#define COMMAND_HASH_SIZE 107 |
#define CS_LOGSTATS |
CS_LOGSTATS will cause the server to log various usage stats (number of connections, amount of data sent, amount of data received, and so on.) This can be very useful if you are trying to measure server/bandwidth usage. It will periodially dump out information which contains usage stats for the last X amount of time. CS_LOGTIME is how often it will print out stats.
#define CS_LOGTIME 600 |
Definition at line 163 of file config.h.
Referenced by do_server().
#define CSPORT 13327 /* old port + 1 */ |
#define DEBUG |
#define DMFILE "dm_file" |
#define EMERGENCY_MAPPATH "/world/world_105_115" |
#define HIGHSCORE "highscore" |
Definition at line 586 of file config.h.
Referenced by add_score(), and display_high_score().
#define HIGHSCORE_LENGTH 1000 |
How many entries there are room for.
Definition at line 594 of file config.h.
Referenced by add_score(), check_score(), and display_high_score().
#define LOGFILE "/var/log/crossfire/logfile" |
#define MANY_CORES |
This option creates more core files. In some areas, there are certain checks done to try and make the program more stable (ie, check parameter for null, return if it is). These checks are being done for things that should not happen (ie, being supplied a null parameter). What MANY_CORES does, is if one of these checks is true, it will dump core at that time, allowing for fairly easy tracking down of the problem. Better to fix problems than create thousands of checks.
#define MAP_CLIENT_X 25 |
This determines the maximum map size the client can request (and thus what the server will send to the client.
Client can still request a smaller map size (for bandwidth reasons or display size of whatever else).
The larger this number, the more cpu time and memory the server will need to spend to figure this out in addition to bandwidth needs. The server cpu time should be pretty trivial.
There may be reasons to keep it smaller for the 'classic' crossfire experience which was 11x11. Big maps will likely make the same at least somewhat easier, but client will need to worry about lag more.
I put support in for non square map updates in the define, but there very well might be things that break horribly if this is used. I figure it is easier to fix that if needed than go back at the future and have to redo a lot of stuff to support rectangular maps at that point.
MSW 2001-05-28
Definition at line 212 of file config.h.
Referenced by check_wall(), clear_los(), init_block(), look_at_cmd(), print_los(), set_up_cmd(), set_wall(), and update_los().
#define MAP_CLIENT_Y 25 |
Definition at line 213 of file config.h.
Referenced by check_wall(), clear_los(), init_block(), look_at_cmd(), set_up_cmd(), set_wall(), and update_los().
#define MAP_DEFAULTRESET 7200 |
#define MAP_MAXRESET 7200 |
MAP_MAXRESET is the maximum time a map can have before being reset. It will override the time value set in the map, if that time is longer than MAP_MAXRESET. This value is in seconds. If you are low on space on the TMPDIR device, set this value to somethign small. The default value in the map object is MAP_DEFAULTRESET (given in seconds.) I personally like 1 hour myself, for solo play. It is long enough that maps won't be resetting as a solve a quest, but short enough that some maps (like shops and inns) will be reset during the time I play. Comment out MAP_MAXRESET time if you always want to use the value in the map archetype.Maximum time to reset.
Definition at line 430 of file config.h.
Referenced by read_map_log(), and set_map_reset_time().
#define MAP_MAXTIMEOUT 1000 |
MAP_MAXTIMEOUT tells the maximum of ticks until a map is swapped out after a player has left it. If it is set to 0, maps are swapped out the instant the last player leaves it. If you are low on memory, you should set this to 0. Note that depending on the map timeout variable, the number of objects can get quite high. This is because depending on the maps, a player could be having the objects of several maps in memory (the map he is in right now, and the ones he left recently.) Each map has it's own TIMEOUT value and value field and it is defaulted to 300
Having a nonzero value can be useful: If a player leaves a map (and thus is on a new map), and realizes they want to go back pretty quickly, the old map is still in memory, so don't need to go disk and get it.
MAP_MINTIMEOUT is used as a minimum timeout value - if the map is set to swap out in less than that many ticks, we use the MINTIMEOUT value below. If MINTIMEOUT > MAXTIMEOUT, MAXTIMEOUT will be used for all maps.How many ticks till maps are swapped out.
Definition at line 412 of file config.h.
Referenced by compile_info(), map_least_timeout(), and set_map_timeout().
#define MAP_MINTIMEOUT 500 |
At least that many ticks before swapout.
Definition at line 414 of file config.h.
Referenced by set_map_timeout().
#define MAPDIR "maps" |
#define MAX_ERRORS 25 |
#define MAX_OBJECTS 100000 |
MAX_OBJECTS is no hard limit. If this limit is exceeded, Crossfire will look for maps which are already scheldued for swapping, and promptly swap them out before new maps are being loaded. If playing only by yourself, this number can probably be as low as
Definition at line 447 of file config.h.
Referenced by compile_info(), and swap_below_max().
#define MAX_TIME 120000 |
If you feel the game is too fast or too slow, change MAX_TIME. You can experiment with the 'speed <new_max_time>' command first. The length of a tick is MAX_TIME microseconds. During a tick, players, monsters, or items with speed 1 can do one thing.
Definition at line 221 of file config.h.
Referenced by compile_info(), and new_player_cmd().
#define MAXSTRING 20 |
Definition at line 597 of file config.h.
Referenced by hasharch(), and hashstr().
#define MOTD "motd" |
Max objects low water mark (lwm). If defined, the map swapping strategy is a bit different: 1) We only start swapping maps if the number of objects in use is greater than MAX_OBJECTS above. 2) We keep swapping maps until there are no more maps to swap or the number of used objects drop below this low water mark value.
If this is not defined, maps are swapped out on the timeout value above, or if the number of objects used is greater than MAX_OBJECTS above.
Note: While this will prevent the pauses noticed when saving maps, there can instead be cpu performance penalties - any objects in memory get processed. So if there are 4000 objects in memory, and 1000 of them are living objects, the system will process all 1000 objects each tick. With swapping enable, maybe 600 of the objects would have gotten swapped out. This is less likely a problem with a smaller number of MAX_OBJECTS than if it is very large. Also, the pauses you do get can be worse, as if you enter a map with a lot of new objects and go above MAX_OBJECTS, it may have to swap out many maps to get below the low water mark. Turning on MEMORY_DEBUG slows down execution, but makes it easier to find memory corruption and leaks. Currently, the main thing that happens with this activated is that one malloc is done for each object - thus whatever debugging mechanism the malloc library (or other debugging tool provides, like purify), it can track this individual malloc. Default behaviour when turned off is that enough memory is malloced for a large group of objects so malloc does not need to be called as often. This should only be turned on if some form of memory debugging tool is being used - otherwise, turning this on will cause some performance hit with no useful advantage.
Define to 2 for stricter checks (known to currently break). Define to 3 for even stricter checks (known to currently break even more). If you want to have a Message Of The Day file, define MOTD to be the file with the message. If the file doesn't exist or if it is empty, no message will be displayed. (It resides in the CONFDIR directory)
#define NO_EMERGENCY_SAVE |
#define NO_POLYMORPH |
#define OBJ_EXPAND 100 |
How big steps to use when expanding array.
Definition at line 592 of file config.h.
Referenced by expand_objects().
#define PERM_EXP_GAIN_RATIO 0.10f |
This determine how many entries are stored in the kill log. You can see this information with the 'party kills' command. More entries mean slower performance and more memory. IF this is not defined, then this feature is disabled. The PERM_EXP values adjust the behaviour of permenent experience. - if the setting permanent_experience_percentage is zero, these values have no meaning. The value in the settings file is the percentage of the experience that is permenent, the rest could be lost on death. When dying, the greatest amount of non-permenent exp it is possible to lose at one time is PERM_EXP_MAX_LOSS_RATIO - this is calculated as total exp - perm exp * loss ratio. The gain ratio is how much of experienced experience goes to the permanent value. This does not detract from total exp gain (ie, if you gained 100 exp, 100 would go to the skill total and 10 to the permanent value).
A few thoughts on these default value (by MSW) gain ratio is pretty much meaningless until exp has been lost, as until that poin, the value in the settings file will be used. It is also impossible for the exp to actually be reduced to the permanent exp ratio - since the loss ratio is .5, it will just get closer and closer. However, after about half a dozen hits, pretty much all the exp that can be lost has been lost, and after that, only minor loss will occur.
Definition at line 263 of file config.h.
Referenced by add_player_exp().
#define PERM_EXP_MAX_LOSS_RATIO 0.50f |
Definition at line 264 of file config.h.
Referenced by check_exp_loss().
#define PERM_FILE "forbid" |
You can restrict playing in certain times by creating a PERMIT_FILE in CONFDIR. See the sample for usage notes.
Definition at line 503 of file config.h.
Referenced by compile_info(), and forbid_play().
#define PLAYERDIR "players" |
If you want the players to be able to save their characters between games, define SAVE_PLAYER and set PLAYERDIR to the directories where the player-files will be put. Remember to create the directory (make install will do that though).
If you intend to run a central server, and not allow the players to start their own Crossfire, you won't need to define this.
#define RESET_LOCATION_TIME 3600 |
By selecting the following, whenever a player does a backup save (with the 'save' command), the player will be saved at home (EMERGENCY_MAP_* information that is specified later). If this is not set, the player will be saved at his present location. RESET_LOCATION_TIME is the number of seconds that must elapse before we fill return the player to his savebed location. If this is zero, this feature is disabled (player will resume where ever he was when he last logged off). If this is set to less than two hours, it will prevent players from camping out in treasure rooms. Do not comment this out - it must be set to something - if you comment this out, the program will not compile.
This will work to BACKUP_SAVE_AT_HOME at home above, but where the player where appear under what conditions is a little complicated depending on how the player exited the game. But if the elapsed time is greater than the value below, player will always get returned to savebed location location.
Set to one hour as default
#define SAVE_DIR_MODE 0770 |
Definition at line 635 of file config.h.
Referenced by make_path_to_file().
#define SAVE_MODE 0660 |
If you have defined SAVE_PLAYER, you might want to change this, too. This is the access rights for the players savefiles. Given that crossfire runs in a client/server model, there should be no issue setting these to be quite restrictive (600 and 700). Before client/server, multiple people might run the executable, thus requiring that the server be setuid/setgid, and more generous permisisons needed. SAVE_MODE is permissions for the files, SAVE_DIR_MODE is permission for nay directories created.
Definition at line 634 of file config.h.
Referenced by compile_info(), save_map(), save_player(), and write_book_archive().
#define SHUTDOWN_FILE "shutdown" |
If you want to take the game down while installing new versions, or for other reasons, put a message into the SHUTDOWN_FILE file. Remember to delete it when you open the game again. (It resides in the CONFDIR directory)
Definition at line 512 of file config.h.
Referenced by compile_info(), and init_startup().
#define SOCKETBUFSIZE 256*1024 |
SOCKETBUFSIZE is the size of the buffer used internally by the server for storing backlogged messages for the client. This is not operating system buffers or the like. This amount is used per connection (client). This buffer is in addition to OS buffers, so it may not need to be very large. When the OS buffer and this buffer is exhausted, the server will drop the client connection for falling too far behind. So if you have very slow client connections, a larger value may be warranted.
Definition at line 525 of file config.h.
Referenced by add_to_buffer(), and write_socket_buffer().
#define STARTMAX 500 |
How big array of objects to start with.
Definition at line 591 of file config.h.
Referenced by free_all_object_data(), and init_objects().
#define TMPDIR "/tmp" |
Your tmp-directory should be large enough to hold the uncompressed map-files for all who are playing. It ought to be locally mounted, since the function used to generate unique temporary filenames isn't guaranteed to work over NFS or AFS On the other hand, if you know that only one crossfire server will be running using this temporary directory, it is likely to be safe to use something that is NFS mounted (but performance may suffer as NFS is slower than local disk)
#define UNIQUE_DIR "unique-items" |
#define USE_CALLOC |
If undefined, malloc is always used. It looks like this can be oboleted. However, it can be useful to track down some bugs, as it will make sure that the entire data structure is set to 0, at the expense of speed. Rupert Goldie has run Purify against the code, and if this is disabled, apparantly there are a lot of uninitialized memory reads - I haven't seen any problem (maybe the memory reads are copies, and the destination doesn't actually use the garbage values either?), but the impact on speed of using this probably isn't great, and should make things more stable. Msw 8-9-97
#define WATCHDOG |
WATCHDOG lets sends datagrams to port 13325 on localhost in (more-or-less) regular intervals, so an external watchdog program can kill the server if it hangs (for whatever reason). It shouldn't hurt anyone if this is defined but you don't have an watchdog program.