Crossfire Server, Trunk  R22010
config.h File Reference
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


#define ARCHETYPES   "archetypes"
#define AUTOSAVE   5000
#define BANFILE   "ban_file"
#define BANISHFILE   "banish_file"
#define BASE_WEAPON_SPEED   1.0
#define BEAT_INTERVAL   3
#define COMMAND_HASH_SIZE   107
#define CS_LOGTIME   600
#define CSPORT   13327 /* old port + 1 */
#define DEBUG
#define DMFILE   "dm_file"
#define EMERGENCY_MAPPATH   "/world/world_105_115"
#define EMERGENCY_X   5
#define EMERGENCY_Y   37
#define HIGHSCORE_DIR   "highscores"
#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_PLAYER_SPEED   0.75
#define MAX_TIME   120000
#define MAXSTRING   20
#define MIN_PLAYER_SPEED   0.25
#define MOTD   "motd"
#define OBJ_EXPAND   100
#define OLD_HIGHSCORE   "highscore"
#define PERM_EXP_GAIN_RATIO   0.50f
#define PERM_EXP_MAX_LOSS_RATIO   0.50f
#define PERM_FILE   "forbid"
#define PK_LUCK_PENALTY   1
#define PLAYERDIR   "players"
#define REAL_WIZ   TRUE
#define REGIONS   "regions.reg"
#define RESET_LOCATION_TIME   3600
#define SAVE_DIR_MODE   0770
#define SAVE_MODE   0660
#define SET_TITLE   TRUE
#define SHUTDOWN_FILE   "shutdown"
#define SOCKETBUFSIZE   256*1024
#define STARTMAX   500
#define TEMPLATE_DIR   "template-maps"
#define TMPDIR   "/tmp"
#define TREASURES   "treasures"
#define UNIQUE_DIR   "unique-items"
#define WATCHDOG

Detailed Description

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.

Macro Definition Documentation



Definition at line 160 of file config.h.


#define ARCHETYPES   "archetypes"

Definition at line 516 of file config.h.



Definition at line 168 of file config.h.



Definition at line 171 of file config.h.



Definition at line 172 of file config.h.



Definition at line 170 of file config.h.



Definition at line 169 of file config.h.


#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 597 of file config.h.

Referenced by process_players1().



Definition at line 149 of file config.h.



Definition at line 142 of file config.h.

Referenced by kill_player_not_permadeath().



Definition at line 144 of file config.h.

Referenced by kill_player_not_permadeath().



Definition at line 143 of file config.h.

Referenced by kill_player_not_permadeath().


#define BANFILE   "ban_file"

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 354 of file config.h.

Referenced by checkbanned().


#define BANISHFILE   "banish_file"

Definition at line 521 of file config.h.

Referenced by checkbanned(), and command_banish().


#define BASE_WEAPON_SPEED   1.0

Definition at line 108 of file config.h.

Referenced by fix_player().


#define BEAT_INTERVAL   3

Interval between heartbeat requests. If a client hasn't sent a command within this time period, and heartbeat is enabled, that client lost connection.

Definition at line 639 of file config.h.

Referenced by connection_alive(), and set_up_cmd().



Definition at line 166 of file config.h.


#define COMMAND_HASH_SIZE   107

If you change this, delete all characters :)

Definition at line 531 of file config.h.



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.

Definition at line 185 of file config.h.


#define CS_LOGTIME   600

Definition at line 188 of file config.h.

Referenced by do_specials().


#define CSPORT   13327 /* old port + 1 */

CSPORT is the port used for the new client/server code. Change if desired. Only of relevance if ERIC_SERVER is set above

Definition at line 361 of file config.h.



Definition at line 152 of file config.h.



Definition at line 151 of file config.h.


#define DEBUG

DEBUG generates copious amounts of output. I tend to change the CC options in the crosssite.def file if I want this. By default, you probably dont want this defined.

Definition at line 198 of file config.h.


#define DMFILE   "dm_file"

File containing valid names that can be dm, one on each line. See example dm_file for syntax help.

Definition at line 368 of file config.h.

Referenced by checkdm().


#define EMERGENCY_MAPPATH   "/world/world_105_115"

These define the players starting map and location on that map, and where emergency saves are defined. This should be left as is unless you make major changes to the map.

Definition at line 505 of file config.h.

Referenced by init_emergency_mappath().


#define EMERGENCY_X   5

Definition at line 507 of file config.h.


#define EMERGENCY_Y   37

Definition at line 508 of file config.h.



Definition at line 98 of file config.h.

Referenced by do_throw(), and fix_player().


#define HIGHSCORE_DIR   "highscores"

Definition at line 519 of file config.h.

Referenced by hiscore_init().


#define HIGHSCORE_LENGTH   1000

How many entries there are room for.

Definition at line 527 of file config.h.

Referenced by add_score(), hiscore_check(), hiscore_display(), hiscore_load(), and hiscore_save().


#define LOGFILE   "/var/log/crossfire/logfile"

LOGFILE specifies which file to log to when playing with the -daemon option.

Definition at line 379 of file config.h.


#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.

Definition at line 211 of file config.h.


#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 237 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 238 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

Default time to reset.

Definition at line 426 of file config.h.

Referenced by set_map_reset_time().


#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 424 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 406 of file config.h.

Referenced by set_map_timeout().


#define MAP_MINTIMEOUT   500

At least that many ticks before swapout.

Definition at line 408 of file config.h.

Referenced by set_map_timeout().


#define MAPDIR   "maps"

These defines tells where, relative to LIBDIR, the maps, the map-index, archetypes highscore and treaures files and directories can be found.

Definition at line 514 of file config.h.


#define MAX_ERRORS   25

Bail out if more are received during tick.

Definition at line 523 of file config.h.

Referenced by LOG().


#define MAX_PLAYER_SPEED   0.75

Definition at line 97 of file config.h.

Referenced by fix_player().


#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 246 of file config.h.

Referenced by new_player_cmd().


#define MAXSTRING   20

Definition at line 529 of file config.h.

Referenced by hashstr().


#define MIN_PLAYER_SPEED   0.25

Definition at line 96 of file config.h.

Referenced by fix_player().


#define MOTD   "motd"

Defining MEMORY_DEBUG disables Crossfire's object allocator, which allocates OBJ_EXPAND objects at a time and manages its own free list. It is faster at allocating lots of objects, but defeats memory debuggers and mitigation techniques by managing its own allocations and enabling use-after-free bugs.

Unfortunately, much of the code does not work without use-after-free because even checking if an object was freed requires looking in the object. Until these issues are fixed, Crossfire needs MEMORY_DEBUG unset in order to run without crashing frequently. 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)

Definition at line 447 of file config.h.



Often, emergency save fails because the memory corruption that caused the crash has trashed the characters too. Define NO_EMERGENCY_SAVE to disable emergency saves. This actually does prevent emergency saves now (Version 0.90.5).

Definition at line 605 of file config.h.



Polymorph as it currently stands is unbalancing, so by default we have it disabled. It can be enabled and it works, but it can be abused in various ways.

Definition at line 253 of file config.h.



Definition at line 163 of file config.h.


#define OBJ_EXPAND   100

How big steps to use when expanding array.

Definition at line 525 of file config.h.

Referenced by expand_objects().


#define OLD_HIGHSCORE   "highscore"

Definition at line 518 of file config.h.

Referenced by hiscore_init().


#define PERM_EXP_GAIN_RATIO   0.50f

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 point, 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 288 of file config.h.


#define PERM_EXP_MAX_LOSS_RATIO   0.50f

Definition at line 289 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 453 of file config.h.

Referenced by forbid_play().



Definition at line 150 of file config.h.


#define PK_LUCK_PENALTY   1

Definition at line 165 of file config.h.


#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.

Definition at line 552 of file config.h.


#define REAL_WIZ   TRUE

Definition at line 158 of file config.h.



Definition at line 159 of file config.h.


#define REGIONS   "regions.reg"

Definition at line 517 of file config.h.


#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

Definition at line 632 of file config.h.



Definition at line 161 of file config.h.


#define SAVE_DIR_MODE   0770

Definition at line 567 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 566 of file config.h.

Referenced by save_map(), save_player(), and write_book_archive().



Definition at line 162 of file config.h.



Definition at line 167 of file config.h.


#define SET_TITLE   TRUE

Definition at line 153 of file config.h.


#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 462 of file config.h.

Referenced by init_startup().



Definition at line 154 of file config.h.


#define SOCKETBUFSIZE   256*1024

SOCKETBUFSIZE is the size of the output socket buffer we request from the operating system. If this buffer is exhausted, the server will drop the client connection. Increase this if players with large player files are causing this buffer to fill up.

Definition at line 471 of file config.h.

Referenced by init_connection().



Definition at line 156 of file config.h.



Definition at line 157 of file config.h.



Definition at line 155 of file config.h.


#define STARTMAX   500

How big array of objects to start with.

Definition at line 524 of file config.h.

Referenced by init_objects(), and object_free_all_data().



Definition at line 164 of file config.h.


#define TEMPLATE_DIR   "template-maps"

Definition at line 515 of file config.h.


#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)

Definition at line 487 of file config.h.


#define TREASURES   "treasures"

Definition at line 520 of file config.h.


#define UNIQUE_DIR   "unique-items"

Directory to use for unique items. This is placed into the 'lib' directory. Changing this will cause any old unique items file not to be used.

Definition at line 495 of file config.h.


#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.

Definition at line 299 of file config.h.