Go to the documentation of this file.
43 if (!
who || !
who->contr || !
who->contr->language)
61 if (strcmp(
code, language->code) == 0)
117 while ((
next = strstr(
line,
"\\n")) != NULL) {
148 if (strncmp(
file->d_name,
"messages.", 9) != 0)
166 if (
line[0] !=
'#' &&
line[0] !=
'\0') {
171 token = strtok(NULL,
"|");
178 language->
messages[scode] = smessage;
193 if (strcmp(language->
code,
"en") == 0)
201 LOG(
llevError,
"i18n: couldn't find default language (en)\n");
212 for (
auto message : language->messages) {
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic convert convertall and filelist py GuildList has the list of guilds for the server GuildLocations is what is used by the install script for setting up the maps It has columns in the first is the name of the no spaces The second is the region of the the third is the destination folder for the the fourth is the exit the fifth and sixth are the x and y coords within the exit the seventh eighth and ninth are the exit location for the storage hall If field seven is then it uses the same exit map as for the guild hall itself filelist py has a list of which files to process for each guild hall convert py takes all the files in filelist py and customises them to the specific guild then outputs them into a in the same order that they are listed in GuildLocations convertall py reads the lines from GuildLocations and runs line by line
static std::vector< i18n_file * > i18n_files
void LOG(LogLevel logLevel, const char *format,...)
std::map< sstring, sstring > messages
void draw_ext_info_format(int flags, int pri, const object *pl, uint8_t type, uint8_t subtype, const char *format,...) PRINTF_ARGS(6
void bufferreader_destroy(BufferReader *br)
BufferReader * bufferreader_init_from_file(BufferReader *br, const char *filepath, const char *failureMessage, LogLevel failureLevel)
DIR * opendir(const char *)
sstring add_refcount(sstring str)
sstring i18n_get_language_code(language_t language)
sstring add_string(const char *str)
struct dirent * readdir(DIR *)
TIPS on SURVIVING Crossfire is populated with a wealth of different monsters These monsters can have varying immunities and attack types In some of them can be quite a bit smarter than others It will be important for new players to learn the abilities of different monsters and learn just how much it will take to kill them This section discusses how monsters can interact with players Most monsters in the game are out to mindlessly kill and destroy the players These monsters will help boost a player s after he kills them When fighting a large amount of monsters in a single attempt to find a narrower hallway so that you are not being attacked from all sides Charging into a room full of Beholders for instance would not be open the door and fight them one at a time For there are several maps designed for them Find these areas and clear them out All throughout these a player can find signs and books which they can read by stepping onto them and hitting A to apply the book sign These messages will help the player to learn the system One more always keep an eye on your food If your food drops to your character will soon so BE CAREFUL ! NPCs Non Player Character are special monsters which have intelligence Players may be able to interact with these monsters to help solve puzzles and find items of interest To speak with a monster you suspect to be a simply move to an adjacent square to them and push the double ie Enter your message
void free_string(sstring str)
void fatal(enum fatal_error err)
language_t i18n_get_language_by_code(const char *code)
const typedef char * sstring
void i18n_list_languages(object *who)
language_t i18n_find_language_by_code(const char *code)
Crossfire Architecture the general intention is to enhance the enjoyability and playability of CF In this code
static i18n_file * i18n_default
const char * i18n(const object *who, const char *code)
static void convert_newline(char *line)
char * bufferreader_next_line(BufferReader *br)