Korrektur Spielercheck
Diverse Pruefungen, ob ein Spieler existiert, gefixt.
Dabei direkt auf etwas robusteres umgestellt statt auf
die Existenz des Savefiles zu pruefen.
Change-Id: I13d251e497f166e12403c902c3fcac179c7dd879
diff --git a/d/seher/haeuser/moebel/swift_std_container.c b/d/seher/haeuser/moebel/swift_std_container.c
index 90f4986..6d0a456 100644
--- a/d/seher/haeuser/moebel/swift_std_container.c
+++ b/d/seher/haeuser/moebel/swift_std_container.c
@@ -319,9 +319,9 @@
+(zweitieerlaubnis==""?"nicht mehr ":"")+"oeffnen/schliessen."));
return 1;
}
- wen=CAP(wen);
- if( file_size("//save//"+LOWER(wen[0..0])+"//"+LOWER(wen)+".o") != -1 ) // Spieler gibt es auch!
+ if( master()->find_userinfo(wen)) // Spieler gibt es auch!
{
+ wen=CAP(wen);
if( member(erlaubnis, wen) != -1 ) // Spieler hat Erlaubnis -> verbieten!
{
erlaubnis-=({wen});
@@ -336,7 +336,7 @@
return 1;
}
else
- write("Es gibt keinen Spieler namens "+wen+"!\n");
+ write("Es gibt keinen Spieler namens "+CAP(wen)+"!\n");
return 1;
}
diff --git a/obj/tools/teller/t_cmds.c b/obj/tools/teller/t_cmds.c
index 68fa5d3..62f431d 100644
--- a/obj/tools/teller/t_cmds.c
+++ b/obj/tools/teller/t_cmds.c
@@ -136,7 +136,7 @@
if( !becomes_pl() && ( !objectp(top()) || !living(top()) ) )
{
- if( stringp(top()) && file_size( "/save/"+top()[0..0]+"/"+top()+".o") > 0 )
+ if( stringp(top()) && master()->find_userinfo(top()))
{
obj = clone_object( T_PLAYER );
obj->Load( top() );
diff --git a/secure/bbmaster.c b/secure/bbmaster.c
index 9677f7f..4e5c784 100644
--- a/secure/bbmaster.c
+++ b/secure/bbmaster.c
@@ -338,10 +338,7 @@
// Alles ab hier nur zum Ueberwachen von FTP-Aktivitaeten.
private int player_exists( string user )
{
- if ( !stringp( user ) || sizeof( user ) < 2 )
- return 0;
-
- return file_size( "/save/" + user[0..0] + "/" + user + ".o" ) > 0;
+ return master()->find_userinfo(user);
}
public int add( string user, int timeout )
diff --git a/secure/ftpd.c b/secure/ftpd.c
index 749cf03..3aaa5e6 100644
--- a/secure/ftpd.c
+++ b/secure/ftpd.c
@@ -58,7 +58,7 @@
nomask int player_exists( string user ) {
user = lower_case(user);
if( !stringp( user ) || sizeof( user ) < 1 ) return 0;
- return file_size( "/save/"+user[0..0]+"/"+user+".o" ) > 0;
+ return master()->find_userinfo(user);
}
nomask varargs int add( string user, int timeout ) {
diff --git a/secure/mailer.c b/secure/mailer.c
index 1c0d575..c4f7665 100644
--- a/secure/mailer.c
+++ b/secure/mailer.c
@@ -384,8 +384,8 @@
}
else
- if ( file_size( SAVEPATH + recipients[i][0..0] + "/" +
- recipients[i] + ".o" ) >=0 ){
+ if (master()->find_userinfo(recipients[i]) )
+ {
save_msg( newmsg, recipients[i] );
recok += ({ recipients[i] });
}
@@ -595,15 +595,15 @@
public int query_recipient_ok( string name )
{
#if INTERNET_MAIL_ENABLED
- return (file_size( "secure/save/" + name[0..0] + "/" + name + ".o" ) > 0
- || member( name, '%' ) > 0 || member( name, '@' ) > 0 );
+ return (master()->find_userinfo(name)
+ || member( name, '%' ) > 0 || member( name, '@' ) > 0 );
#else
// es darf zwar ein @ in der Adresse vorkommen, dahinter aber kein . mehr
// (dann ist es ne Mail via Intermud-Mail, nicht ins Internet).
string *tmp;
- return (file_size( "secure/save/" + name[0..0] + "/" + name + ".o" ) > 0
- || member( name, '%' ) > 0
- || (sizeof(tmp=explode(name,"@")) == 2 && strstr(tmp[1],".") == -1));
+ return (master()->find_userinfo(name)
+ || member( name, '%' ) > 0
+ || (sizeof(tmp=explode(name,"@")) == 2 && strstr(tmp[1],".") == -1));
#endif
}
diff --git a/secure/master/misc.c b/secure/master/misc.c
index 40915c7..a831d46 100644
--- a/secure/master/misc.c
+++ b/secure/master/misc.c
@@ -176,7 +176,8 @@
return;
}
- if ( !force && file_size(SAVEPATH+name[0..0]+"/"+name+".o") > 0 ){
+ if ( !force && find_userinfo(name))
+ {
write("Es existiert bereits ein Spieler dieses Namens.\n");
return;
}
@@ -243,7 +244,8 @@
return 0;
}
- if (file_size(SAVEPATH+name[0..0]+"/"+name+".o")<=0){
+ if (!find_userinfo(name))
+ {
write("Es existiert kein Spieler dieses Namens!\n");
return 0;
}
diff --git a/secure/news.c b/secure/news.c
index 751c887..25931b7 100644
--- a/secure/news.c
+++ b/secure/news.c
@@ -131,7 +131,7 @@
if (member(grouplist, name)) return -2; // Gibt es schon
- if (file_size("/"+SAVEPATH+owner[0..0]+"/"+owner+".o")<0) return -3;
+ if (!master()->find_userinfo(owner)) return -3;
savefilea = old_explode(name,".");
savefile = implode(savefilea,"/");
diff --git a/secure/sinmaster.c b/secure/sinmaster.c
index 14b8f94..1559c75 100644
--- a/secure/sinmaster.c
+++ b/secure/sinmaster.c
@@ -108,7 +108,7 @@
if ( text[0..2]=="-f " )
text=text[3..];
- else if ( file_size(sprintf("/save/%s/%s.o",who[0..0],who))<1)
+ else if ( !master()->find_userinfo(who))
return sprintf("Es gibt keinen Spieler namens '%s'\n",who);
text = dtime(time()) + " ("+CAP(getuid(RPL))+")\n"
diff --git a/secure/testmud.c b/secure/testmud.c
index 42c255a..2b0cee7 100644
--- a/secure/testmud.c
+++ b/secure/testmud.c
@@ -33,7 +33,7 @@
{
copy_file("/std/def_workroom.c","/players/jof/workroom.c");
}
- if(file_size("/secure/save/j/jof.o") == FSIZE_NOFILE)
+ if (!master()->find_userinfo("jof"))
{
save_object("/secure/save/j/jof");
}
diff --git a/secure/wahlmaschine.c b/secure/wahlmaschine.c
index 8705f87..899fe1e 100644
--- a/secure/wahlmaschine.c
+++ b/secure/wahlmaschine.c
@@ -125,7 +125,9 @@
return 0;
}
if ((second=RPL->QueryProp(P_SECOND)) &&
- (!stringp(second) || (file_size("/save/"+lower_case(second[0..0])+"/"+lower_case(second)+".o")<=0))) {
+ (!stringp(second)
+ || !master()->find_userinfo(second)))
+ {
notify_fail("Nicht richtig markierte Zweities sind von der Wahl ausgeschlossen.\n");
return 0;
}
diff --git a/std/player/base.c b/std/player/base.c
index 6d7af19..1078454 100644
--- a/std/player/base.c
+++ b/std/player/base.c
@@ -2277,17 +2277,22 @@
InitPlayer();
// Padreic 01.02.1999
- if ( !IS_LEARNER(ME) && second = QueryProp(P_SECOND) ) {
- if ( stringp(second) && lower_case(second)[0..3] == "von " ) {
+ if ( !IS_LEARNER(ME) && (second = QueryProp(P_SECOND)) )
+ {
+ if ( stringp(second) && lower_case(second)[0..3] == "von " )
+ {
second = lower_case(second[4..]);
SetProp( P_SECOND, second );
}
if ( !stringp(second ) ||
- file_size( "/save/" + second[0..0] + "/" + second + ".o" ) <= 0 ){
+ !master()->find_userinfo(second))
+ {
+ // Wenns nur an Gross-/Kleinschreibung liegt, wird automatisch
+ // korrigiert.
if ( stringp(second) &&
- file_size( "/save/" + lower_case(second[0..0]) + "/" +
- lower_case(second) + ".o" ) >0 ){
+ master()->find_userinfo(lower_case(second)))
+ {
SetProp( P_SECOND, lower_case(second) );
log_file( "WRONG_SECOND",
sprintf( "%s: %s: P_SECOND = %O -> Automatisch "