forked from github/server
ECheck: @-Kommando eingepflegt in neuen Tree
This commit is contained in:
parent
1ffe82dfcd
commit
5c961e997c
|
@ -0,0 +1,5 @@
|
||||||
|
include $(ERESSEA)/Makefile.include
|
||||||
|
|
||||||
|
echeck:
|
||||||
|
$(CC) $(CFLAGS) $(LDFLAGS) -o echeck echeck.c
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* vi: set ts=2 ai sw=2:
|
/* vi: set ts=2 ai sw=2:
|
||||||
*
|
*
|
||||||
* $Id: echeck.c,v 1.4 2001/02/03 23:29:26 corwin Exp $
|
* $Id: echeck.c,v 1.5 2001/02/05 21:17:14 faroul Exp $
|
||||||
*
|
*
|
||||||
* Eressea PB(E)M host Copyright (C) 1997-2000
|
* Eressea PB(E)M host Copyright (C) 1997-2000
|
||||||
* Enno Rehling (rehling@usa.net)
|
* Enno Rehling (rehling@usa.net)
|
||||||
|
@ -24,8 +24,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MAINVERSION "3"
|
#define MAINVERSION "3"
|
||||||
#define MINVERSION "10"
|
#define MINVERSION "11"
|
||||||
#define PATCHLEVEL "4"
|
#define PATCHLEVEL "0"
|
||||||
|
|
||||||
#ifndef DEFAULT_PATH
|
#ifndef DEFAULT_PATH
|
||||||
# if defined(unix)
|
# if defined(unix)
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
# define PATH_DELIM ":"
|
# define PATH_DELIM ":"
|
||||||
# else
|
# else
|
||||||
# define DEFAULT_PATH NULL
|
# define DEFAULT_PATH NULL
|
||||||
#define PATH_DELIM ":"
|
# define PATH_DELIM ";"
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -191,6 +191,8 @@ char echo_it=0, /* option: echo input lines */
|
||||||
noroute=0,
|
noroute=0,
|
||||||
nolost=0,
|
nolost=0,
|
||||||
has_version=0,
|
has_version=0,
|
||||||
|
at_cmd=0,
|
||||||
|
attack_warning=0,
|
||||||
compile=0; /* option: compiler-style warnings */
|
compile=0; /* option: compiler-style warnings */
|
||||||
int error_count=0, /* counter: errors */
|
int error_count=0, /* counter: errors */
|
||||||
warning_count=0; /* counter: warnings */
|
warning_count=0; /* counter: warnings */
|
||||||
|
@ -928,9 +930,9 @@ ItemName(int i, int plural) {
|
||||||
return item->name->txt;
|
return item->name->txt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
FILE *
|
FILE *
|
||||||
path_fopen(const char *path, const char *file, const char *mode)
|
path_fopen(const char *path, const char *file, const char *mode) {
|
||||||
{
|
|
||||||
FILE *f;
|
FILE *f;
|
||||||
char *pathw = strdup(path);
|
char *pathw = strdup(path);
|
||||||
char *token;
|
char *token;
|
||||||
|
@ -946,7 +948,6 @@ path_fopen(const char *path, const char *file, const char *mode)
|
||||||
}
|
}
|
||||||
token = strtok(NULL, PATH_DELIM);
|
token = strtok(NULL, PATH_DELIM);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(pathw);
|
free(pathw);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -960,8 +961,8 @@ readspells(void) {
|
||||||
|
|
||||||
F = path_fopen(path, "zauber.txt", "r");
|
F = path_fopen(path, "zauber.txt", "r");
|
||||||
if (!F) {
|
if (!F) {
|
||||||
fprintf(ERR, "Kann Datei 'zauber.txt' nicht lesen.\n", file);
|
fprintf(ERR, "Kann Datei 'zauber.txt' nicht lesen.\n"
|
||||||
fprintf(ERR, "Suchpfad ist '%s'\n", path);
|
"Suchpfad ist '%s'\n", file, path);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1010,8 +1011,8 @@ readskills(void) {
|
||||||
|
|
||||||
F = path_fopen(path, "talente.txt", "r");
|
F = path_fopen(path, "talente.txt", "r");
|
||||||
if (!F) {
|
if (!F) {
|
||||||
fprintf(ERR, "Kann Datei 'talente.txt' nicht lesen.\n", file);
|
fprintf(ERR, "Kann Datei 'talente.txt' nicht lesen.\n"
|
||||||
fprintf(ERR, "Suchpfad ist '%s'\n", path);
|
"Suchpfad ist '%s'\n", file, path);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1055,8 +1056,8 @@ readitems(void) {
|
||||||
|
|
||||||
F = path_fopen(path, "items.txt", "r");
|
F = path_fopen(path, "items.txt", "r");
|
||||||
if(!F) {
|
if(!F) {
|
||||||
fprintf(ERR, "Kann Datei 'items.txt' nicht lesen.\n", file);
|
fprintf(ERR, "Kann Datei 'items.txt' nicht lesen.\n"
|
||||||
fprintf(ERR, "Suchpfad ist '%s'\n", path);
|
"Suchpfad ist '%s'\n", file, path);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1106,6 +1107,9 @@ porder(void) {
|
||||||
for (i=0; i != indent; i++)
|
for (i=0; i != indent; i++)
|
||||||
putc(' ',OUT);
|
putc(' ',OUT);
|
||||||
|
|
||||||
|
if (at_cmd)
|
||||||
|
putc('@',OUT);
|
||||||
|
at_cmd=0;
|
||||||
if (does_default>0)
|
if (does_default>0)
|
||||||
fprintf(OUT,"%s%s",checked_buf, does_default==2 ? "\"\n" : "");
|
fprintf(OUT,"%s%s",checked_buf, does_default==2 ? "\"\n" : "");
|
||||||
else
|
else
|
||||||
|
@ -1388,8 +1392,6 @@ newunit(int n, int t) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* - In/Output ------------------------------------------------- */
|
|
||||||
|
|
||||||
int
|
int
|
||||||
atoip(char *s) {
|
atoip(char *s) {
|
||||||
int n;
|
int n;
|
||||||
|
@ -1450,6 +1452,13 @@ findstr(char **v, const char *s, int max) {
|
||||||
int
|
int
|
||||||
findtoken(const char *str, int type) {
|
findtoken(const char *str, int type) {
|
||||||
tnode *tk = &tokens[type];
|
tnode *tk = &tokens[type];
|
||||||
|
|
||||||
|
if (*str=='@') {
|
||||||
|
str++;
|
||||||
|
at_cmd=1;
|
||||||
|
} else
|
||||||
|
at_cmd=0;
|
||||||
|
|
||||||
while (*str) {
|
while (*str) {
|
||||||
char c=(char)tolower(*str);
|
char c=(char)tolower(*str);
|
||||||
int index=((unsigned char)c)%32;
|
int index=((unsigned char)c)%32;
|
||||||
|
@ -2053,12 +2062,11 @@ long_order(void) {
|
||||||
if (q) *q=0; /* Den Befehl extrahieren */
|
if (q) *q=0; /* Den Befehl extrahieren */
|
||||||
i=findkeyword(s);
|
i=findkeyword(s);
|
||||||
switch (i) {
|
switch (i) {
|
||||||
case K_ATTACK:
|
|
||||||
case K_CAST:
|
case K_CAST:
|
||||||
if (this_command==i)
|
if (this_command==i)
|
||||||
return;
|
return;
|
||||||
/* ATTACKIERE und ZAUBERE sind zwar keine langen Befehle, aber man darf
|
/* ZAUBERE ist zwar kein langer Befehl, aber man darf auch
|
||||||
* auch keine anderen langen haben - darum ist bei denen long_order() */
|
* keine anderen langen haben - darum ist bei denen long_order() */
|
||||||
case K_SELL:
|
case K_SELL:
|
||||||
case K_BUY:
|
case K_BUY:
|
||||||
if (this_command==K_SELL || this_command==K_BUY)
|
if (this_command==K_SELL || this_command==K_BUY)
|
||||||
|
@ -3338,10 +3346,11 @@ checkanorder(char *Orders) {
|
||||||
scat(keywords[K_ATTACK]);
|
scat(keywords[K_ATTACK]);
|
||||||
if (getaunit(NECESSARY)==3)
|
if (getaunit(NECESSARY)==3)
|
||||||
anerror("TEMP-Einheiten kann man nicht ATTACKIEREn");
|
anerror("TEMP-Einheiten kann man nicht ATTACKIEREn");
|
||||||
long_order();
|
if (!attack_warning) {
|
||||||
/* ATTACKIERE ist zwar kein langer Befehl, aber man darf auch keine
|
/* damit längere Angriffe nicht in Warnungs-Tiraden ausarten */
|
||||||
anderen langen haben - darum ist bei ATTACKIERE long_order();
|
awarning("Längere Kämpfe schließen den langen Befehl aus",5);
|
||||||
Check in order_for_unit() */
|
attack_warning=1;
|
||||||
|
}
|
||||||
if (getaunit(42)==42) {
|
if (getaunit(42)==42) {
|
||||||
strcpy(warn_buf,"Pro Einheit muß ein ATTACKIERE-Befehl gegeben werden");
|
strcpy(warn_buf,"Pro Einheit muß ein ATTACKIERE-Befehl gegeben werden");
|
||||||
anerror(warn_buf);
|
anerror(warn_buf);
|
||||||
|
@ -3458,6 +3467,12 @@ checkanorder(char *Orders) {
|
||||||
|
|
||||||
case K_GIVE:
|
case K_GIVE:
|
||||||
case K_LIEFERE:
|
case K_LIEFERE:
|
||||||
|
if (this_command==K_LIEFERE && !empiria)
|
||||||
|
{
|
||||||
|
awarning("LIEFERE ist obsolet, bitte @GIB benutzen",3);
|
||||||
|
i=K_GIVE;
|
||||||
|
at_cmd=1;
|
||||||
|
}
|
||||||
checkgiving(i);
|
checkgiving(i);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -3956,7 +3971,7 @@ readaunit(void) {
|
||||||
if (befehle_ende)
|
if (befehle_ende)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Erst wenn wir sicher sind, dass kein Befehl eingegeben wurde, checken
|
/* Erst wenn wir sicher sind, daß kein Befehl eingegeben wurde, checken
|
||||||
* wir, ob nun eine neue Einheit oder ein neuer Spieler drankommt */
|
* wir, ob nun eine neue Einheit oder ein neuer Spieler drankommt */
|
||||||
|
|
||||||
if (igetkeyword(order_buf)==-1) {
|
if (igetkeyword(order_buf)==-1) {
|
||||||
|
@ -4015,7 +4030,7 @@ help(const char *s) {
|
||||||
fprintf(ERR, "ECheck (Version "VERSION", "__DATE__
|
fprintf(ERR, "ECheck (Version "VERSION", "__DATE__
|
||||||
"), Zug-Checker für Eressea - Freeware!\n\n"
|
"), Zug-Checker für Eressea - Freeware!\n\n"
|
||||||
" Benutzung: %s [Optionen] Befehlsdatei\n"
|
" Benutzung: %s [Optionen] Befehlsdatei\n"
|
||||||
/* Vorsicht, TABs! Neue Texte mit Tab-Width=8 rein */
|
/***** Vorsicht, TABs! Neue Texte mit Tab-Width=8 rein *****/
|
||||||
" - Verwendet stdin anstelle einer Eingabedatei.\n"
|
" - Verwendet stdin anstelle einer Eingabedatei.\n"
|
||||||
" -b unterdrückt Warnungen und Fehler (brief)\n"
|
" -b unterdrückt Warnungen und Fehler (brief)\n"
|
||||||
" -q erwartet keine Angaben zu Personen/Silber in [] bei EINHEIT\n"
|
" -q erwartet keine Angaben zu Personen/Silber in [] bei EINHEIT\n"
|
||||||
|
@ -4037,7 +4052,7 @@ help(const char *s) {
|
||||||
" lost Einheit verliert Silber und Gegenstände\n"
|
" lost Einheit verliert Silber und Gegenstände\n"
|
||||||
" -w[n] Warnungen der Stufe n (default: 4=alle Warnungen)\n"
|
" -w[n] Warnungen der Stufe n (default: 4=alle Warnungen)\n"
|
||||||
" -x Zeilenzählung ab PARTEI statt Dateianfang\n"
|
" -x Zeilenzählung ab PARTEI statt Dateianfang\n"
|
||||||
" -Ppfad Pfadangabe für items.txt und zauber.txt\n"
|
" -Ppfad Pfadangabe für items.txt, talente.txt und zauber.txt\n"
|
||||||
" -vm.l Mainversion.Level - für Test, ob richtige ECheck-Version\n"
|
" -vm.l Mainversion.Level - für Test, ob richtige ECheck-Version\n"
|
||||||
, s);
|
, s);
|
||||||
}
|
}
|
||||||
|
@ -4330,6 +4345,7 @@ process_order_file(int *faction_count, int *unit_count) {
|
||||||
case P_REGION:
|
case P_REGION:
|
||||||
if (Regionen)
|
if (Regionen)
|
||||||
remove_temp();
|
remove_temp();
|
||||||
|
attack_warning=0;
|
||||||
if (echo_it)
|
if (echo_it)
|
||||||
{
|
{
|
||||||
fputs(order_buf,OUT);
|
fputs(order_buf,OUT);
|
||||||
|
@ -4377,7 +4393,7 @@ process_order_file(int *faction_count, int *unit_count) {
|
||||||
befehle_ende=0;
|
befehle_ende=0;
|
||||||
f=readafaction();
|
f=readafaction();
|
||||||
fprintf(ERR, "Befehle für Partei %s gefunden.\n", itob(f));
|
fprintf(ERR, "Befehle für Partei %s gefunden.\n", itob(f));
|
||||||
check_OPTION(); /* Nach PARTEI auf "; OPTION" / "; ECHECK" testen */
|
check_OPTION(); /* Nach PARTEI auf "; OPTION" bzw. "; ECHECK" testen */
|
||||||
if (befehle_ende) return;
|
if (befehle_ende) return;
|
||||||
fprintf(ERR, "Rekrutierungskosten auf %d Silber gesetzt, "
|
fprintf(ERR, "Rekrutierungskosten auf %d Silber gesetzt, "
|
||||||
"Warning Level %d.\n", rec_cost, show_warnings);
|
"Warning Level %d.\n", rec_cost, show_warnings);
|
||||||
|
@ -4587,23 +4603,19 @@ main(int argc, char *argv[]) {
|
||||||
readitems();
|
readitems();
|
||||||
readspells();
|
readspells();
|
||||||
readskills();
|
readskills();
|
||||||
|
if (!skilldata || !spells) {
|
||||||
|
fputs("Die Dateien 'talente.txt' und 'items.txt' müssen vorhanden sein\n",ERR);
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
inittokens();
|
inittokens();
|
||||||
F=stdin;
|
F=stdin;
|
||||||
|
|
||||||
for (i=1; i<argc; i++)
|
for (i=1; i<argc; i++)
|
||||||
if (argv[i][0] != '-'
|
if (argv[i][0] != '-') {
|
||||||
#ifdef WIN32
|
|
||||||
&& argv[i][0] != '/'
|
|
||||||
#endif
|
|
||||||
) {
|
|
||||||
F=fopen(argv[i], "r");
|
F=fopen(argv[i], "r");
|
||||||
if (!F) {
|
if (!F) {
|
||||||
fprintf(ERR, "Kann Datei `%s' nicht lesen.\n", argv[i]);
|
fprintf(ERR, "Kann Datei `%s' nicht lesen.\n", argv[i]);
|
||||||
#ifdef AMIGA
|
|
||||||
return 10;
|
|
||||||
#else
|
|
||||||
return 2;
|
return 2;
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
filename=argv[i];
|
filename=argv[i];
|
||||||
fprintf(ERR, "Verarbeite Datei `%s'.\n", argv[i]);
|
fprintf(ERR, "Verarbeite Datei `%s'.\n", argv[i]);
|
||||||
|
@ -4620,7 +4632,7 @@ main(int argc, char *argv[]) {
|
||||||
|
|
||||||
if (unit_count==0) {
|
if (unit_count==0) {
|
||||||
fputs("\nBitte überprüfe, ob Du die Befehle korrekt eingesandt hast.\n"
|
fputs("\nBitte überprüfe, ob Du die Befehle korrekt eingesandt hast.\n"
|
||||||
"Beachte dabei besonders, dass die Befehle nicht als HTML, Word-Dokument\n"
|
"Beachte dabei besonders, daß die Befehle nicht als HTML, Word-Dokument\n"
|
||||||
"oder als Attachment (Anlage) eingeschickt werden dürfen.\n", ERR);
|
"oder als Attachment (Anlage) eingeschickt werden dürfen.\n", ERR);
|
||||||
return -42;
|
return -42;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue