"Du besitzt kein Haus!"

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
  • Hey :D


    Ich bin grade dabei mein Haussystem zu fixxen , ich kriegs aber iwie nicht hin!


    Also mein Problem ist gerade , dass wenn ich /hausverkaufen mache , die Nachricht bekomme "Du besitzt kein Haus!".



    ocmd:hausverkaufen(playerid,params[])
    {
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    new Spieler[50];
    format(Spieler,50,"/Spieler/%s.txt",PlayerName(playerid));
    if(strcmp(HausInfo[haus][haus_besitzer],PlayerName(playerid),false) == 0)
    {
    new string[256];
    format(string,sizeof(string),"Du hast dein Haus für %i$ verkauft.",HausInfo[haus][haus_preis]/2);
    SendClientMessage(playerid,Gelb,string);
    GivePlayerMoney(playerid,HausInfo[haus][haus_preis]/2);
    new Hausstring[50];
    format(Hausstring,50,"/haus/%d.txt",haus);
    dini_Set(Hausstring,"besitzer","Niemand");
    dini_IntSet(Spieler,"Haus",0);
    dini_IntSet(Hausstring,"Besetzt",0);
    KillHaus(haus);
    LoadHaus(haus);
    return true;
    }
    else
    {
    return SendClientMessage(playerid,Rot,"Du hast kein Haus!");
    }
    }
    return 1;
    }


    ocmd:hauskaufen(playerid,params[])
    {
    new bool:NotAtPoint[MAX_PLAYERS]=false;
    new bool:HatHaus[MAX_PLAYERS]=false;
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    new Spieler[50];
    format(Spieler,50,"/Spieler/%s.txt",name);
    if(dini_Int(Spieler,"Haus")==0)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    if(strcmp(HausInfo[haus][haus_besitzer],name,false) == 0)return SendClientMessage(playerid,Rot,"Dieses Haus gehört dir bereits!");
    if(strcmp(HausInfo[haus][haus_besitzer],"Niemand",false))return SendClientMessage(playerid,Rot,"Dieses Haus steht nicht zum Verkauf!");
    // wenn das Haus frei ist dann kaufen:
    if(GetPlayerMoney(playerid) < HausInfo[haus][haus_preis])return SendClientMessage(playerid,Rot,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid,-HausInfo[haus][haus_preis]); // Geld abziehen
    dini_IntSet(Spieler,"Haus",1);
    new Hausstring[50];
    format(Hausstring,50,"/haus/%d.txt",haus); // Pfad formatieren
    dini_Set(Hausstring,"besitzer",name);
    dini_IntSet(Hausstring,"Besetzt",1); // Besitzer überschreiben
    SendClientMessage(playerid,Gelb,"Du hast das Haus erfolgreich gekauft!");
    KillHaus(haus); // Hauspickup löschen
    LoadHaus(haus); // Haus laden
    return true;
    }
    else
    {
    NotAtPoint[playerid]=true;
    }
    }
    else
    {
    HatHaus[playerid]=true;
    }

    }
    if(NotAtPoint[playerid])
    {
    return SendClientMessage(playerid,Rot,"Du bist in keinem Hauspickup!");
    }
    if(HatHaus[playerid])
    {
    return SendClientMessage(playerid,Rot,"Du hast bereits ein Haus!");
    }
    return 1;
    }


  • So wie ich das sehen fragt er nur HausID 1 ab, denn Die Schleife fängt bei eins an und wird hiermit

    Zitat

    else
    {
    return SendClientMessage(playerid,Rot,"Du hast kein Haus!");
    }


    oder hiermit


    Zitat

    if(strcmp(HausInfo[haus][haus_besitzer],PlayerName(playerid),false) == 0)
    {
    //...
    return true;
    }


    gleich wieder beendet o.o


    d.h. entweder das erste Haus gehört dir oder nicht, mehr fragst du da im moment ned ab wegen dem:

    Zitat

    else
    {
    return SendClientMessage(playerid,Rot,"Du hast kein Haus!");
    }



    Merke: return beendet die Schleife ;)


  • Stimmt :D


    Aber ich hatte das Problem , dass wenn ich kein return drinhabe und zB. kein Haus habe , die Nachricht 10x+ gesendet wird :\

  • dann amchs einfach so:


    ocmd:hausverkaufen(playerid,params[])
    {
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    new Spieler[50],bool:hatHaus=false;
    format(Spieler,50,"/Spieler/%s.txt",PlayerName(playerid));
    if(strcmp(HausInfo[haus][haus_besitzer],PlayerName(playerid),false) == 0)
    {
    //...
    return hatHaus=true;
    }
    }
    if(hatHaus==false) return SendClientMessage(playerid,Rot,"Du hast kein Haus!");
    return 1;
    }



    oder wenns so ned geht lass die Nachricht weg ... wird er dann schon merken :D

  • Lol :D


    Ich habs jetzt so ,



    ocmd:hausverkaufen(playerid,params[])
    {
    new hatthaus[MAX_PLAYERS]=false;
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    new Spieler[50];
    format(Spieler,50,"/Spieler/%s.txt",PlayerName(playerid));
    if(strcmp(HausInfo[haus][haus_besitzer],PlayerName(playerid),false) == 0)
    {
    new string[256];
    format(string,sizeof(string),"Du hast dein Haus für %i$ verkauft.",HausInfo[haus][haus_preis]/2);
    SendClientMessage(playerid,Gelb,string);
    GivePlayerMoney(playerid,HausInfo[haus][haus_preis]/2);
    new Hausstring[50];
    format(Hausstring,50,"/haus/%d.txt",haus);
    dini_Set(Hausstring,"besitzer","Niemand");
    dini_IntSet(Spieler,"Haus",0);
    dini_IntSet(Hausstring,"Besetzt",0);
    KillHaus(haus);
    LoadHaus(haus);
    return true;
    }
    else
    {
    hatthaus[playerid]=true;
    }
    }
    if(hatthaus[playerid])
    {
    return SendClientMessage(playerid,Rot,"Du hast kein Haus!");
    }
    return 1;
    }


    und ich habs ausprobiert , es geht ^^
    Jetzt wollte ichs hier hin schreiben , und siehe da , du hast das auch so geschrieben :DD