- disabled write_quake_variables function for q3

- added ability to use custom configs for q3
- made some error popups translatable
- updated german translation


git-svn-id: http://svn.code.sf.net/p/xqf/code/trunk@92 d2ac09be-c843-0410-8b1f-f8a84130e0ec
This commit is contained in:
Ludwig Nussel 2001-09-30 13:13:31 +00:00 committed by l-n
parent 7240f82311
commit 7a50c1f636
4 changed files with 206 additions and 96 deletions

View File

@ -1,15 +1,21 @@
Sep 28, 2001: Ludwig Nussel <l-n@sourceforge.net>
Sep 30, 2001: Ludwig Nussel <l-n@users.sourceforge.net>
- disabled write_quake_variables function for q3
- added ability to use custom configs for q3
- made some error popups translatable
- updated german translation
Sep 28, 2001: Ludwig Nussel <l-n@users.sourceforge.net>
- added Rune support
- changed layout of game configuration screen
Sep 28, 2001: Ludwig Nussel <l-n@sourceforge.net>
Sep 28, 2001: Ludwig Nussel <l-n@users.sourceforge.net>
- added support for games using the gamespy protocol
- added q3,ut,sof,nolf,rally masters,turok2 and shogo masters
- made game names translatable
- updated german translation
- changed version to 0.9.7b
Sep 27, 2001: Ludwig Nussel <l-n@sourceforge.net>
Sep 27, 2001: Ludwig Nussel <l-n@users.sourceforge.net>
- more translatable strings marked
- updated german translation
@ -17,7 +23,7 @@ Sep 27, 2001: Jordi Mallach <jordi@sindominio.net>
- Updated Spanish translation
- added gettext cruft to po/.cvsignore
Sep 27, 2001: Ludwig Nussel <l-n@sourceforge.net>
Sep 27, 2001: Ludwig Nussel <l-n@users.sourceforge.net>
- made q3_exec usable for Wofenstein, removed wo_exec
- identify q3/rtcw servers by their version string
- use common option struct for all games with q3 engine

View File

@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2001-09-28 11:43+0200\n"
"PO-Revision-Date: 2001-09-28 11:43+GMT\n"
"POT-Creation-Date: 2001-09-29 23:53+0200\n"
"PO-Revision-Date: 2001-09-29 23:58+GMT\n"
"Last-Translator: Ludwig Nussel <ludwig.nussel@web.de>\n"
"Language-Team: <de@li.org>\n"
"MIME-Version: 1.0\n"
@ -30,8 +30,9 @@ msgstr "Master Adresse"
#. Cancel Button
#: src/addmaster.c:237 src/addserver.c:165 src/dialogs.c:318 src/filter.c:694
#: src/launch.c:333 src/pref.c:2371 src/psearch.c:228 src/psearch.c:401
#: src/srv-prop.c:595 src/xqf.c:619 src/xqf.c:631 src/xqf.c:1236
#: src/game.c:1691 src/launch.c:333 src/pref.c:2423 src/psearch.c:228
#: src/psearch.c:401 src/srv-prop.c:595 src/xqf.c:619 src/xqf.c:631
#: src/xqf.c:1236
msgid "Cancel"
msgstr "Abbrechen"
@ -49,7 +50,7 @@ msgid "XQF: Warning!"
msgstr "XQF: Warnung!"
#. OK Button
#: src/dialogs.c:142 src/dialogs.c:307 src/filter.c:702 src/pref.c:2379
#: src/dialogs.c:142 src/dialogs.c:307 src/filter.c:702 src/pref.c:2431
#: src/psearch.c:217 src/psearch.c:401 src/srv-prop.c:603
msgid "OK"
msgstr "OK"
@ -220,10 +221,86 @@ msgstr "Runter"
#. server_type
#. flags
#: src/game.c:431
#: src/game.c:454
msgid "Generic Gamespy"
msgstr "Allgemein Gamespy"
#. %s = game name e.g. QuakeWorld
#: src/game.c:1182
#, c-format
msgid "%s command line is empty."
msgstr "Die %s Kommandozeile ist leer"
#. directory name, game name
#: src/game.c:1189 src/game.c:1300
#, c-format
msgid ""
"\"%s\" is not a directory\n"
"Please specify correct %s working directory."
msgstr ""
"\"%s\" ist kein Verzeichnis.\n"
"Bitte korrektes Arbeitsverzeichnis für %s angeben."
#. game name
#: src/game.c:1201
#, c-format
msgid "Please specify correct %s working directory."
msgstr "Bitte korrektes Arbeitsverzeichnis für %s angeben."
#. directory, subdirectory, game name
#: src/game.c:1207
#, c-format
msgid ""
"Directory \"%s\" doesn't contain \"%s\" subdirectory.\n"
"Please specify correct %s working directory."
msgstr ""
"\"%s\" enthält kein \"%s\" Unterverzeichnis.\n"
"Bitte korrektes Arbeitsverzeichnis für %s angeben."
#. %s Quake3
#: src/game.c:1263
#, c-format
msgid ""
"~/.q3a directory doesn't exist or doesn't contain\n"
"\"baseq3\" (\"demoq3\") subdirectory.\n"
"Please run %s client at least once before running XQF\n"
"or specify correct %s working directory."
msgstr ""
"Das Verzeichnis ~/.q3a existiert nicht oder enthält\n"
"kein \"baseq3\" (\"demoq3\") Unterverzeichnis\n"
"Bitte rufen Sie %s mindestens einmal auf bevor Sie XQF aufrufen,\n"
"oder geben Sie ein korrektes Arbeitsverzeichnis für %s an."
#. %s directory, Quake3
#: src/game.c:1272
#, c-format
msgid ""
"\"%s\" directory doesn't exist or doesn't contain \"baseq3\" (\"demoq3\") "
"subdirectory.\n"
"Please specify correct %s working directory\n"
"or leave it empty (~/.q3a is used by default)"
msgstr ""
"Das Verzeichnis \"%s\" existiert nicht oder enhält kein "
"\"baseq3\" (\"demoq3\") Unterverzeichnis\n"
"Bitte geben Sie ein korrektes Arbeitsverzeichnis für %s an,\n"
"oder lassen Sie es leer (~/.q3a wird Standardmäßig benutzt)"
#. passwords file could not be written
#: src/game.c:1691 src/launch.c:333 src/xqf.c:619 src/xqf.c:631
msgid "Launch"
msgstr "Starten"
#: src/game.c:1692
#, c-format
msgid ""
"Cannot write to file \"%s\".\n"
"\n"
"Launch client anyway?"
msgstr ""
"Kann die Datei \"%s\" nicht schreiben.\n"
"\n"
"Client trotzdem starten?"
#: src/launch.c:72 src/launch.c:191
msgid "XQF: ERROR!"
msgstr "XQF: Fehler!"
@ -250,10 +327,6 @@ msgstr ""
"\n"
"%s"
#: src/launch.c:333 src/xqf.c:619 src/xqf.c:631
msgid "Launch"
msgstr "Starten"
#: src/launch.c:334
#, c-format
msgid ""
@ -357,229 +430,229 @@ msgid "Custom CFG"
msgstr "Eigene Config"
#. Common Options
#: src/pref.c:1500
#: src/pref.c:1549
msgid "Common Options"
msgstr "Gemeinsame Optionen"
#: src/pref.c:1511
#: src/pref.c:1560
msgid "Disable CD Audio"
msgstr "CD Audio deaktivieren"
#. Disable Sound
#: src/pref.c:1519
#: src/pref.c:1568
msgid "Disable Sound"
msgstr "Sound deaktivieren"
#: src/pref.c:1541
#: src/pref.c:1596
msgid "Do not set (use game default)"
msgstr "Nicht setzen (Standard benutzen)"
#: src/pref.c:1542
#: src/pref.c:1597
msgid "Automatically calculate from server ping time"
msgstr "Automatisch aus dem Ping des Servers berechnen"
#: src/pref.c:1543
#: src/pref.c:1598
msgid "Fixed value"
msgstr "Fester Wert"
#: src/pref.c:1597 src/pref.c:1640
#: src/pref.c:1652 src/pref.c:1695
msgid "Masterserver Protocol Version"
msgstr "Masterserver Protokoll Version"
#: src/pref.c:1610
#: src/pref.c:1665
msgid "vm_cgame fix"
msgstr "vm_cgame fix"
#: src/pref.c:1615
#: src/pref.c:1670
msgid "Rocketarena fix"
msgstr "Rocketarena fix"
#: src/pref.c:1620 src/pref.c:1653
#: src/pref.c:1675 src/pref.c:1708
msgid "set fs_game on connect"
msgstr "fs_game beim Verbinden setzen"
#. 'w_switch' & 'b_switch' control
#: src/pref.c:1694
#: src/pref.c:1749
msgid "The highest weapon that Quake should switch to..."
msgstr "Die höchste Waffe zu der Quake wechseln soll..."
#: src/pref.c:1707
#: src/pref.c:1762
msgid "upon a weapon pickup"
msgstr "beim Waffe aufheben"
#: src/pref.c:1725
#: src/pref.c:1780
msgid "upon a backpack pickup"
msgstr "beim Rucksack aufheben"
#. 'pushlatency'
#: src/pref.c:1742
#: src/pref.c:1797
msgid "pushlatency"
msgstr "pushlatency"
#: src/pref.c:1760
#: src/pref.c:1815
msgid "Disable auto-aiming"
msgstr "auto-aiming deaktivieren"
#: src/pref.c:1791
#: src/pref.c:1846
msgid "Skins"
msgstr "Skins"
#: src/pref.c:1810
#: src/pref.c:1865
msgid "Rate"
msgstr "Rate"
#. Troubleshooting
#: src/pref.c:1830
#: src/pref.c:1885
msgid "Troubleshooting"
msgstr "Fehlersuche"
#: src/pref.c:1843
#: src/pref.c:1898
msgid "Disable delta-compression (cl_nodelta)"
msgstr "delta-Kompression deaktivieren (cl_nodelta)"
#: src/pref.c:1857
#: src/pref.c:1912
msgid "Disable player/entity prediction (cl_predict_players)"
msgstr "Spieler/entity Vorhersage deaktivieren (cl_predict_players)"
#: src/pref.c:1911 src/pref.c:2036
#: src/pref.c:1966
msgid "Icons"
msgstr "Icons"
#: src/pref.c:1911 src/pref.c:2036
#: src/pref.c:1966
msgid "Text"
msgstr "Text"
#: src/pref.c:1911 src/pref.c:2036
#: src/pref.c:1966
msgid "Both"
msgstr "Beides"
# src/pref.c:
#: src/pref.c:1917
#: src/pref.c:1972
msgid "Server List"
msgstr "Server Liste"
#: src/pref.c:1930
#: src/pref.c:1985
msgid "Show host names"
msgstr "Hostnamen anzeigen"
#: src/pref.c:1945
#: src/pref.c:2000
msgid "Show default port"
msgstr "Standart Port anzeigen"
#: src/pref.c:1960
#: src/pref.c:2015
msgid "Sort servers real-time during refresh"
msgstr "Server in Echtzeit während der Auffrischung sortieren"
#: src/pref.c:1975
#: src/pref.c:2030
msgid "Refresh on update"
msgstr "Beim Aktualisieren auffrischen"
#. Toolbar
#: src/pref.c:1990
#: src/pref.c:2045
msgid "Toolbar"
msgstr "Werkzeugleiste"
#. Toolbar Tips
#: src/pref.c:2015
#: src/pref.c:2070
msgid "Tooltips"
msgstr "Werkzeugtips"
#. On Startup
#: src/pref.c:2051
#: src/pref.c:2103
msgid "On Startup"
msgstr "Beim Starten"
#: src/pref.c:2061
#: src/pref.c:2113
msgid "Refresh Favorites"
msgstr "Favoriten auffrischen"
#. On Exit
#: src/pref.c:2074
#: src/pref.c:2126
msgid "On Exit"
msgstr "Beim Beenden"
#: src/pref.c:2087
#: src/pref.c:2139
msgid "Save server lists"
msgstr "Serverlisten speichen"
#: src/pref.c:2102
#: src/pref.c:2154
msgid "Save server information"
msgstr "Serverinformationen speichern"
#: src/pref.c:2119
#: src/pref.c:2171
msgid "Save player information"
msgstr "Spielerinformationen speichern"
#. On Quake Launch
#: src/pref.c:2135
#: src/pref.c:2187
msgid "When launching a game..."
msgstr "Beim Spielstart..."
#: src/pref.c:2148
#: src/pref.c:2200
msgid "Terminate XQF"
msgstr "XQF beenden"
#: src/pref.c:2161
#: src/pref.c:2213
msgid "Iconify XQF window"
msgstr "XQF minimieren"
#: src/pref.c:2176
#: src/pref.c:2228
msgid "Create LaunchInfo.txt"
msgstr "LaunchInfo.txt anlegen"
#: src/pref.c:2189
#: src/pref.c:2241
msgid "Execute prelaunch"
msgstr "'prelaunch' ausführen"
#. QStat preferences -- maxsimultaneous & maxretries
#: src/pref.c:2223
#: src/pref.c:2275
msgid "QStat Options"
msgstr "QStat Optionen"
#. maxsimultaneous
#: src/pref.c:2234
#: src/pref.c:2286
msgid "Number of simultaneous servers to query"
msgstr "Anzahl gleichzeitig abzufragender Server"
#. maxretries
#: src/pref.c:2251
#: src/pref.c:2303
msgid "Number of retries"
msgstr "Anzahl Versuche"
#: src/pref.c:2292
#: src/pref.c:2344
msgid "XQF: Preferences"
msgstr "XQF: Einstellungen"
# src/pref.c
#: src/pref.c:2312
#: src/pref.c:2364
msgid "General"
msgstr "Allgemein"
#: src/pref.c:2317
#: src/pref.c:2369
msgid "Player Profile"
msgstr "Spieler Profil"
#: src/pref.c:2322
#: src/pref.c:2374
msgid "Games"
msgstr "Spiele"
#: src/pref.c:2327
#: src/pref.c:2379
msgid "Appearance"
msgstr "Erscheinungsbild"
#: src/pref.c:2332
#: src/pref.c:2384
msgid "QStat"
msgstr "QStat"
#: src/pref.c:2337
#: src/pref.c:2389
msgid "QW/Q2"
msgstr "QW/Q2"
#: src/pref.c:2342
#: src/pref.c:2394
msgid "Q3/RTCW"
msgstr "Q3/RTCW"
#: src/pref.c:2444
#: src/pref.c:2496
msgid "Unable to get user name/home/tmpdir\n"
msgstr "Konnte Benutzername,Heimatverzeichnis oder tmpdir nicht ermitteln\n"
@ -653,10 +726,6 @@ msgstr ""
"In Datei %s kann nicht geschrieben werden\n"
"Fehler: %s\n"
#: src/source.c:1022
msgid "Favorites"
msgstr "Favoriten"
#: src/srv-prop.c:332
msgid "IP Address:"
msgstr "IP Adresse:"

View File

@ -196,7 +196,7 @@ struct game games[] = {
quake_parse_server,
q3_analyze_serverinfo,
quake3_config_is_valid,
write_quake_variables,
NULL,
q3_exec,
q3_custom_cfgs,
quake_save_info
@ -1176,14 +1176,16 @@ static int quake_config_is_valid (struct server *s) {
}
if (g->cmd == NULL || g->cmd[0] == '\0') {
dialog_ok (NULL, "%s command line is empty.", g->name);
// %s = game name e.g. QuakeWorld
dialog_ok (NULL, _("%s command line is empty."), g->name);
return FALSE;
}
if (g->real_dir != NULL && g->real_dir[0] != '\0') {
if (stat (g->real_dir, &stat_buf) != 0 || !S_ISDIR (stat_buf.st_mode)) {
dialog_ok (NULL, "\"%s\" is not a directory\n"
"Please specify correct %s working directory.",
// directory name, game name
dialog_ok (NULL, _("\"%s\" is not a directory\n"
"Please specify correct %s working directory."),
g->real_dir, g->name);
return FALSE;
}
@ -1193,13 +1195,15 @@ static int quake_config_is_valid (struct server *s) {
if (stat (path, &stat_buf) || !S_ISDIR (stat_buf.st_mode)) {
if (!g->real_dir || g->real_dir[0] == '\0') {
dialog_ok (NULL, "Please specify correct %s working directory.",
// game name
dialog_ok (NULL, _("Please specify correct %s working directory."),
g->name);
}
else {
dialog_ok (NULL,
"Directory \"%s\" doesn\'t contain \"%s\" subdirectory.\n"
"Please specify correct %s working directory.",
// directory, subdirectory, game name
_("Directory \"%s\" doesn\'t contain \"%s\" subdirectory.\n"
"Please specify correct %s working directory."),
g->real_dir, cfgdir, g->name);
}
g_free (path);
@ -1253,18 +1257,20 @@ static int quake3_config_is_valid (struct server *s) {
if (path == NULL) {
if (!g->real_dir || g->real_dir[0] == '\0') {
dialog_ok (NULL,
"~/.q3a directory doesn\'t exist or doesn\'t contain\n"
// %s Quake3
_("~/.q3a directory doesn\'t exist or doesn\'t contain\n"
"\"baseq3\" (\"demoq3\") subdirectory.\n"
"Please run %s client at least once before running XQF\n"
"or specify correct %s working directory.",
"or specify correct %s working directory."),
g->name, g->name);
}
else {
dialog_ok (NULL,
"\"%s\" directory doesn\'t exist or doesn\'t contain "
// %s directory, Quake3
_("\"%s\" directory doesn\'t exist or doesn\'t contain "
"\"baseq3\" (\"demoq3\") subdirectory.\n"
"Please specify correct %s working directory\n"
"or leave it empty (~/.q3a is used by default)",
"or leave it empty (~/.q3a is used by default)"),
g->real_dir, g->name);
}
return FALSE;
@ -1288,8 +1294,9 @@ static int config_is_valid_generic (struct server *s) {
if (g->real_dir != NULL && g->real_dir[0] != '\0') {
if (stat (g->real_dir, &stat_buf) != 0 || !S_ISDIR (stat_buf.st_mode)) {
dialog_ok (NULL, "\"%s\" is not a directory\n"
"Please specify correct %s working directory.",
// %s directory, game name
dialog_ok (NULL, _("\"%s\" is not a directory\n"
"Please specify correct %s working directory."),
g->real_dir, g->name);
return FALSE;
}
@ -1454,7 +1461,7 @@ static int write_q2_vars (const char *filename, const struct condef *con) {
return TRUE;
}
/*
#ifdef QSTAT23
static int write_q3_vars (const char *filename, const struct condef *con) {
@ -1478,7 +1485,7 @@ static int write_q3_vars (const char *filename, const struct condef *con) {
}
#endif
*/
static int write_quake_variables (const struct condef *con) {
#ifdef QSTAT23
@ -1504,6 +1511,7 @@ static int write_quake_variables (const struct condef *con) {
res = write_q2_vars (file, con);
break;
/*
#ifdef QSTAT23
case Q3_SERVER:
path = quake3_data_dir (games[Q3_SERVER].dir);
@ -1514,6 +1522,7 @@ static int write_quake_variables (const struct condef *con) {
}
break;
#endif
*/
default:
return FALSE;
@ -1675,8 +1684,9 @@ static int qw_exec (const struct condef *con, int forkit) {
file = file_in_dir (g->real_dir, q_passwd);
if (!write_passwords (file, con)) {
if (!dialog_yesno (NULL, 1, "Launch", "Cancel",
"Cannot write to file \"%s\".\n\nLaunch client anyway?", file)) {
//passwords file could not be written
if (!dialog_yesno (NULL, 1, _("Launch"), _("Cancel"),
_("Cannot write to file \"%s\".\n\nLaunch client anyway?"), file)) {
g_free (file);
g_free (cmd);
return;
@ -1844,6 +1854,16 @@ static int q3_exec (const struct condef *con, int forkit) {
argv[argi++] = con->demo;
}
if(g->game_cfg) {
argv[argi++] = "+exec";
argv[argi++] = g->game_cfg;
}
if (con->custom_cfg) {
argv[argi++] = "+exec";
argv[argi++] = con->custom_cfg;
}
/* If the fs_game or -- more likely -- gamename is set, we want to
put fs_game on the command line so that the mod is loaded when
we connect. */
@ -2218,7 +2238,6 @@ static GList *q2_custom_cfgs (char *dir, char *game) {
return cfgs;
}
#ifdef QSTAT23
static GList *q3_custom_cfgs (char *dir, char *game) {
@ -2227,6 +2246,8 @@ static GList *q3_custom_cfgs (char *dir, char *game) {
char *path = NULL;
char *mod_path = NULL;
debug (5, "q3_custom_cfgs(%s,%s)",dir,game);
qdir = expand_tilde ((dir)? dir : games[Q3_SERVER].dir);
path = quake3_data_dir (qdir);
@ -2246,7 +2267,6 @@ static GList *q3_custom_cfgs (char *dir, char *game) {
#endif
static void quake_save_server_rules (FILE *f, struct server *s) {
char **info;

View File

@ -181,6 +181,8 @@ static void get_new_defaults_for_game (enum server_type type) {
struct generic_prefs *prefs = &genprefs[type];
char str[256];
debug (5, "get_new_defaults_for_game(%d)",type);
if (prefs->cmd_entry) {
if (g->cmd) g_free (g->cmd);
g->cmd = strdup_strip (gtk_entry_get_text (GTK_ENTRY (prefs->cmd_entry)));
@ -255,6 +257,8 @@ static void get_new_defaults (void) {
int i;
char *str;
debug (5, "get_new_defaults()");
/* Quake */
config_push_prefix ("/" CONFIG_FILE "/Game: QS");
@ -638,6 +642,11 @@ static void update_cfgs (enum server_type type, char *dir, char *initstr) {
GList *cfgs;
char *str = NULL;
debug (5, "update_cfgs(%d,%s,%s)",type,dir,initstr);
if(!prefs->cfg_combo)
return;
cfgs = (*games[type].custom_cfgs) (dir, NULL);
if (initstr) {
@ -666,6 +675,8 @@ static void dir_entry_activate_callback (GtkWidget *widget, gpointer data) {
type = (int) gtk_object_get_user_data (GTK_OBJECT (widget));
prefs = &genprefs[type];
debug (5, "dir_entry_activate_callback() type=%d",type);
if (prefs->pref_dir) g_free (prefs->pref_dir);
prefs->pref_dir = strdup_strip (gtk_entry_get_text (
GTK_ENTRY (prefs->dir_entry)));
@ -2331,6 +2342,9 @@ void preferences_dialog (int page_num) {
GtkWidget *button;
GtkWidget *window;
int game_num;
int i;
debug (5, "preferences_dialog()");
game_num = page_num / 256;
page_num = page_num % 256;
@ -2401,16 +2415,17 @@ void preferences_dialog (int page_num) {
q1_skin_is_valid = TRUE;
update_q1_skin ();
update_cfgs (Q1_SERVER, genprefs[Q1_SERVER].real_dir,
games[Q1_SERVER].game_cfg);
qw_skin_is_valid = TRUE;
update_qw_skins (pref_qw_skin);
update_cfgs (QW_SERVER, genprefs[QW_SERVER].real_dir,
games[QW_SERVER].game_cfg);
q2_skin_is_valid = TRUE;
update_q2_skins (pref_q2_skin);
update_cfgs (Q2_SERVER, genprefs[Q2_SERVER].real_dir,
games[Q2_SERVER].game_cfg);
for (i = 0; i < GAMES_TOTAL; i++) {
update_cfgs (i, genprefs[i].real_dir, games[i].game_cfg);
}
gtk_widget_show (notebook);
/*