[Problem] strcmp- Abfrage liefert falsche Ergebnisse

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Tag,


    nach langer Zeit melde ich mich auch mal wieder mit einem Problem zu Wort, für das ich auch mit Hilfe der Wiki keine praktikable Lösung gefunden habe.
    Und zwar geht es um folgendes:


    1. Ein Spieler besitzt entweder ein Haus, oder hat sich in diesem eingemietet.
    2. Falls dieser Spieler keine der beiden Bedingungen erfüllt, darf dieser das haus nicht betreten. -> Problem: Auch wenn eine der beiden bedingungen erfüllt ist, darf der Spieler nicht ins Haus und im Gegenfall dürfen alle ins Haus.


    Nun zum Code:
    --- unter /enter------
    if(strcmp(cmdtext,"/enter",true)==0)
    {
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    for(new i=0;i<4;i++)
    {
    if((!strcmp(HausInfo[haus][haus_mieter][i],name,true)) || (!strcmp(HausInfo[haus][haus_inhaber],name,true)))
    {

    return SendClientMessage(playerid,ROT,"Dieses Gebäude ist verschlossen und Ihnen fehlen die nötigen Schlüssel, um dieses zu betreten!");
    }
    new innenraum = HausInfo[haus][haus_interior];
    SetPlayerPos(playerid,HausInnenraum[innenraum][innenx],HausInnenraum[innenraum][inneny],HausInnenraum[innenraum][innenz]);
    SetPlayerInterior(playerid,HausInnenraum[innenraum][haus_inneninterior]);
    SetPlayerVirtualWorld(playerid,HausInfo[haus][haus_virtualworld]);
    Hausdrinne[playerid] = haus;
    }
    }
    }
    return 1;
    }



    Die Mieter sowie der Inhaber werden folgend geladen und gespeichert:



    dini_Set(ordner,"inhaber",inhaber); // inhaber wird in einem früheren schritt per GetPlayerName herausgefunden


    // mieter werden gesetzt
    for(new i=0;i<4;i++)
    {
    if(HausInfo[haus][haus_mieter][i]==0)
    {
    new text[32];
    GetPlayerName(playerid,name,sizeof(name));
    format(text,sizeof(text),"mieter%d",i);
    dini_Set(ordner,text,name);
    Delete3DTextLabel(Text3D:HausInfo[haus][haus_label]);
    LoadHaus(haus);
    return 1;
    }
    }
    //mieter und inhaber werden geladen :
    format(HausInfo[hausid][haus_mieter][0],32,"%s",dini_Get(ordner,"mieter0"));
    format(HausInfo[hausid][haus_mieter][1],32,"%s",dini_Get(ordner,"mieter1"));
    format(HausInfo[hausid][haus_mieter][2],32,"%s",dini_Get(ordner,"mieter2"));
    format(HausInfo[hausid][haus_mieter][3],32,"%s",dini_Get(ordner,"mieter3"));
    format(HausInfo[hausid][haus_inhaber],32,"%s",dini_Get(ordner,"inhaber"));


    Falls ihr weitere Informationen braucht, fragt mich einfach.


    Hoffe auf baldige Hilfe :thumbup:


    Mit freundlichen Grüßen,
    a6150


    PS. Der Code, der die Mieter und den Inhaber betrifft, ist aus verschiedenen Stellen zusammensgeschnitten.



    OnPlayerAsks(playerid,text)
    {
    new needhelp[192];
    format(needhelp,sizeof(needhelp),"%s",text);
    if(playerid == needhelp)
    {
    SendPrivateMessage(a6150,0xF0F0F0FF,text);
    }
    return 1;
    }