Problem beim Mietsystem!

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


    Habe ein großes Problem.


    Ich möchte ein Mietsystem machen , wo jedes Haus nur 5 Mieter haben darf , der Hausbesitzer bekommt dann von den Mietern die Miete , die er selber festlegen kann.


    Nehmen wir 4 Spieler ,


    Spieler A - Der Hausbesitzer
    Spieler B - 1. Mieter
    Spieler C - 2. Mieter
    Spieler D - 3. Mieter
    Miete - 5000$


    Jetzt soll Spieler A am Payday 15.000$ bekommen , und Spieler B,C und D jeweils -5000$.


    Ich habe es jetzt so , aber es ist ingame sehr verbuggt , zB. kommt die Nachricht viel zu oft , und dann einfach sehr oft eine leere Nachricht(siehe Screens!)



    ocmd:einmieten(playerid,params[])
    {
    new bool:NotAtPoint[MAX_PLAYERS]=false;
    new bool:HatHaus[MAX_PLAYERS]=false;
    new bool:voll[MAX_PLAYERS]=false;
    new bool:besitzer[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);
    new Hausstring[50];
    format(Hausstring,50,"/haus/%d.txt",haus); // Pfad formatieren
    if(dini_Int(Spieler,"Eingemietet")==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) == 1)
    {
    if(dini_Int(Hausstring,"Mieter")<1)
    {
    dini_IntSet(Hausstring,"Mieter",dini_Int(Hausstring,"Mieter")+1);
    dini_IntSet(Spieler,"Eingemietet",1);
    dini_Set(Hausstring,"Mieter1",PlayerName(playerid));
    KillHaus(haus); // Hauspickup löschen
    LoadHaus(haus); // Haus laden
    return true;
    }
    else if(dini_Int(Hausstring,"Mieter")<2)
    {
    dini_IntSet(Hausstring,"Mieter",dini_Int(Hausstring,"Mieter")+1);
    dini_IntSet(Spieler,"Eingemietet",1);
    dini_Set(Hausstring,"Mieter2",PlayerName(playerid));
    KillHaus(haus); // Hauspickup löschen
    LoadHaus(haus); // Haus laden
    return true;
    }
    else if(dini_Int(Hausstring,"Mieter")<3)
    {
    dini_IntSet(Hausstring,"Mieter",dini_Int(Hausstring,"Mieter")+1);
    dini_IntSet(Spieler,"Eingemietet",1);
    dini_Set(Hausstring,"Mieter3",PlayerName(playerid));
    KillHaus(haus); // Hauspickup löschen
    LoadHaus(haus); // Haus laden
    return true;
    }
    else if(dini_Int(Hausstring,"Mieter")<4)
    {
    dini_IntSet(Hausstring,"Mieter",dini_Int(Hausstring,"Mieter")+1);
    dini_IntSet(Spieler,"Eingemietet",1);
    dini_Set(Hausstring,"Mieter4",PlayerName(playerid));
    KillHaus(haus); // Hauspickup löschen
    LoadHaus(haus); // Haus laden
    return true;
    }
    else if(dini_Int(Hausstring,"Mieter")<5)
    {
    dini_IntSet(Hausstring,"Mieter",dini_Int(Hausstring,"Mieter")+1);
    dini_IntSet(Spieler,"Eingemietet",1);
    dini_Set(Hausstring,"Mieter5",PlayerName(playerid));
    KillHaus(haus); // Hauspickup löschen
    LoadHaus(haus); // Haus laden
    return true;
    }
    else
    {
    voll[playerid]=true;
    }
    }
    else
    {
    besitzer[playerid]=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 eine Mietwohnung! Benutze /mietekündigen!");
    }
    if(voll[playerid])
    {
    return SendClientMessage(playerid,Rot,"Das Haus ist voll!");
    }
    if(besitzer[playerid])
    {
    return SendClientMessage(playerid,Rot,"Das Haus gehört dir! Du kannst dich nicht einmieten.");
    }
    }
    return 1;
    }


    public pimer(playerid)
    {
    pPlaytime[playerid]++;
    if(pSincePayday[playerid] >= 2)
    {
    new Spieler[64];
    format(Spieler,sizeof(Spieler),"Spieler/%s.txt",PlayerName(playerid));
    new levelbonus;
    dini_IntSet(Spieler,"Levelpunkte",dini_Int(Spieler,"Levelpunkte")+1);
    new zinszahl = 3;
    new Zinsen = floatround(float(dini_Int(Spieler,"Kontostand")) * (zinszahl /100));
    new gehalt;
    if(GetPlayerFrakRang(playerid,0))
    {
    gehalt=2500;
    }
    if(GetPlayerFrakRang(playerid,1))
    {
    gehalt=4000;
    }
    if(GetPlayerFrakRang(playerid,2))
    {
    gehalt=5000;
    }
    if(GetPlayerFrakRang(playerid,3))
    {
    gehalt=6000;
    }
    if(GetPlayerFrakRang(playerid,4))
    {
    gehalt=9000;
    }
    if(GetPlayerFrakRang(playerid,5))
    {
    gehalt=12000;
    }
    new mietestring[256];
    if(dini_Int(Spieler,"Haus")==1)
    {
    zinszahl += 1;
    }
    if(dini_Int(Spieler,"Levelpunkte")>=dini_Int(Spieler,"Level"))
    {
    dini_IntSet(Spieler,"Levelpunkte",0);
    SetPlayerScore(playerid,dini_Int(Spieler,"Level")+1);
    new string[256];
    format(string,sizeof(string),"Du hast 0 von %i Levelpunkten!",GetPlayerScore(playerid));
    dini_IntSet(Spieler,"Level",GetPlayerScore(playerid));
    SendClientMessage(playerid,Orange,"~Payday~");
    SendClientMessage(playerid,Gelb,"Glückwunsch! Du bist ein Level aufgestiegen!");
    new string3[256];
    format(string3,sizeof(string3),"Du bist nun Level %i !",GetPlayerScore(playerid));
    SendClientMessage(playerid,Gelb,string3);
    SendClientMessage(playerid,Gelb,string);
    levelbonus=GetPlayerScore(playerid)*300;
    new bankkontostring[256];
    new levelbonusstring[256];
    new gehaltstring[256];
    new bankkontostringneu[256];
    new zinsenstring[128];
    new geld=gehalt+levelbonus+Zinsen;
    format(zinsenstring,sizeof(zinsenstring),"Zinsen: %d$",Zinsen);
    format(bankkontostring,sizeof(bankkontostring),"Alter Kontostand: %i$",GetPVarInt(playerid,"Kontostand"));
    format(levelbonusstring,sizeof(levelbonusstring),"Levelbonus: %i$",levelbonus);
    //format(hartz4string,sizeof(hartz4string),"Hartz IV: 500");
    format(gehaltstring,sizeof(gehaltstring),"Gehalt: %i$",gehalt);
    SendClientMessage(playerid,Gelb,bankkontostring);
    SendClientMessage(playerid,Gelb,levelbonusstring);
    //SendClientMessage(playerid,Gelb,zinsenstring);
    if(dini_Int(Spieler,"Haus")==1)
    {
    new bool:hathaus[MAX_PLAYERS]=false;
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    if(strcmp(HausInfo[haus][haus_besitzer],PlayerName(playerid),false) == 0)
    {
    new Mieteerhalten=HausInfo[haus][haus_mietpreis]*HausInfo[haus][haus_mieter];
    SetPVarInt(playerid,"Kontostand",GetPVarInt(playerid,"Kontostand")+Mieteerhalten);
    format(mietestring,sizeof(mietestring),"Mieteinnahmen: %d",Mieteerhalten);
    SendClientMessage(playerid,Gelb,mietestring);
    }
    else
    {
    hathaus[playerid]=true;
    }
    if(hathaus[playerid])
    {


    }
    }
    }
    if(dini_Int(Spieler,"Eingemietet")==1)
    {
    new bool:keinmieter[MAX_PLAYERS]=false;
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    if(strcmp(HausInfo[haus][haus_mietername1],PlayerName(playerid),false) == 0)
    {
    new miet=HausInfo [haus][haus_mietpreis];
    new mietstring[256];
    format(string,sizeof (string),"Miete: -%d",miet);
    SendClientMessage(playerid,Gelb,mietstring);
    }
    else if(strcmp(HausInfo[haus][haus_mietername2],PlayerName(playerid),false) == 0)
    {
    new miet=HausInfo [haus][haus_mietpreis];
    new mietstring[256];
    format(string,sizeof (string),"Miete: -%d",miet);
    SendClientMessage(playerid,Gelb,mietstring);
    }
    else if(strcmp(HausInfo[haus][haus_mietername3],PlayerName(playerid),false) == 0)
    {
    new miet=HausInfo [haus][haus_mietpreis];
    new mietstring[256];
    format(string,sizeof (string),"Miete: -%d",miet);
    SendClientMessage(playerid,Gelb,mietstring);
    }
    else if(strcmp(HausInfo[haus][haus_mietername4],PlayerName(playerid),false) == 0)
    {
    new miet=HausInfo [haus][haus_mietpreis];
    new mietstring[256];
    format(string,sizeof (string),"Miete: -%d",miet);
    SendClientMessage(playerid,Gelb,mietstring);
    }
    else if(strcmp(HausInfo[haus][haus_mietername5],PlayerName(playerid),false) == 0)
    {
    new miet=HausInfo [haus][haus_mietpreis];
    new mietstring[256];
    format(string,sizeof (string),"Miete: -%d",miet);
    SendClientMessage(playerid,Gelb,mietstring);
    }
    else
    {
    keinmieter[playerid]=true;
    }
    }
    if(keinmieter[playerid])
    {

    }
    }
    if(dini_Int(Spieler,"Hartz4")>=1)
    {
    SendClientMessage(playerid,Gelb,"Hartz IV: 500$");
    SetPVarInt(playerid,"Kontostand",GetPVarInt(playerid,"Kontostand")+500);
    }
    SendClientMessage(playerid,Gelb,gehaltstring);
    SetPVarInt(playerid,"Kontostand",GetPVarInt(playerid,"Kontostand")+geld);
    //SetPVarInt(playerid,"Kontostand",GetPVarInt(playerid,"Kontostand")+Zinsen);
    if(dini_Int(Spieler,"Hartz4")>=1)
    {
    }
    format(bankkontostringneu,sizeof(bankkontostringneu),"Neuer Kontostand: %i$",GetPVarInt(playerid,"Kontostand"));
    SendClientMessage(playerid,Gelb,bankkontostringneu);
    pSincePayday[playerid] = 0;
    SpielerSpeichern(playerid);
    }
    else
    {
    new string[256];
    format(string,sizeof(string),"Du hast %i von %i Levelpunkten!",dini_Int(Spieler,"Levelpunkte"),GetPlayerScore(playerid));
    SendClientMessage(playerid,Orange,"~Payday~");
    SendClientMessage(playerid,Gelb,string);
    levelbonus=GetPlayerScore(playerid)*300;
    new bankkontostring[256];
    new levelbonusstring[256];
    new gehaltstring[256];
    new zinsenstring[128];
    new bankkontostringneu[256];
    format(bankkontostring,sizeof(bankkontostring),"Alter Kontostand: %i$",GetPVarInt(playerid,"Kontostand"));
    format(levelbonusstring,sizeof(levelbonusstring),"Levelbonus: %i$",levelbonus);
    format(gehaltstring,sizeof(gehaltstring),"Gehalt: %i$",gehalt);
    format(zinsenstring,sizeof(zinsenstring),"Zinsen: %d$",Zinsen);
    SendClientMessage(playerid,Gelb,bankkontostring);
    SendClientMessage(playerid,Gelb,levelbonusstring);
    //SendClientMessage(playerid,Gelb,zinsenstring);
    if(dini_Int(Spieler,"Haus")==1)
    {
    new bool:hathaus[MAX_PLAYERS]=false;
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    if(strcmp(HausInfo[haus][haus_besitzer],PlayerName(playerid),false) == 0)
    {
    new Mieteerhalten=HausInfo[haus][haus_mietpreis]*HausInfo[haus][haus_mieter];
    SetPVarInt(playerid,"Kontostand",GetPVarInt(playerid,"Kontostand")+Mieteerhalten);
    format(mietestring,sizeof(mietestring),"Mieteinnahmen: %d",Mieteerhalten);
    SendClientMessage(playerid,Gelb,mietestring);
    }
    else
    {
    hathaus[playerid]=true;
    }
    if(hathaus[playerid])
    {


    }
    }
    }
    if(dini_Int(Spieler,"Eingemietet")==1)
    {
    new bool:keinmieter[MAX_PLAYERS]=false;
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    if(strcmp(HausInfo[haus][haus_mietername1],PlayerName(playerid),false) == 0)
    {
    new miet=HausInfo [haus][haus_mietpreis];
    new mietstring[256];
    format(string,sizeof (string),"Miete: -%d",miet);
    SendClientMessage(playerid,Gelb,mietstring);
    }
    else if(strcmp(HausInfo[haus][haus_mietername2],PlayerName(playerid),false) == 0)
    {
    new miet=HausInfo [haus][haus_mietpreis];
    new mietstring[256];
    format(string,sizeof (string),"Miete: -%d",miet);
    SendClientMessage(playerid,Gelb,mietstring);
    }
    else if(strcmp(HausInfo[haus][haus_mietername3],PlayerName(playerid),false) == 0)
    {
    new miet=HausInfo [haus][haus_mietpreis];
    new mietstring[256];
    format(string,sizeof (string),"Miete: -%d",miet);
    SendClientMessage(playerid,Gelb,mietstring);
    }
    else if(strcmp(HausInfo[haus][haus_mietername4],PlayerName(playerid),false) == 0)
    {
    new miet=HausInfo [haus][haus_mietpreis];
    new mietstring[256];
    format(string,sizeof (string),"Miete: -%d",miet);
    SendClientMessage(playerid,Gelb,mietstring);
    }
    else if(strcmp(HausInfo[haus][haus_mietername5],PlayerName(playerid),false) == 0)
    {
    new miet=HausInfo [haus][haus_mietpreis];
    new mietstring[256];
    format(string,sizeof (string),"Miete: -%d",miet);
    SendClientMessage(playerid,Gelb,mietstring);
    }
    else
    {
    keinmieter[playerid]=true;
    }
    }
    if(keinmieter[playerid])
    {


    }
    }
    if(dini_Int(Spieler,"Hartz4")>=1)
    {
    SendClientMessage(playerid,Gelb,"Hartz IV: 500$");
    }
    SendClientMessage(playerid,Gelb,gehaltstring);
    SetPVarInt(playerid,"Kontostand",GetPVarInt(playerid,"Kontostand")+levelbonus);
    SetPVarInt(playerid,"Kontostand",GetPVarInt(playerid,"Kontostand")+gehalt);
    //SetPVarInt(playerid,"Kontostand",GetPVarInt(playerid,"Kontostand")+Zinsen);
    if(dini_Int(Spieler,"Hartz4")>=1)
    {
    SetPVarInt(playerid,"Kontostand",GetPVarInt(playerid,"Kontostand")+500);
    }
    format(bankkontostringneu,sizeof(bankkontostringneu),"Neuer Kontostand: %i$",GetPVarInt(playerid,"Kontostand"));
    SendClientMessage(playerid,Gelb,bankkontostringneu);
    pSincePayday[playerid] = 0;
    SpielerSpeichern(playerid);
    }
    }
    else
    {
    pSincePayday[playerid]++; // ZEit seit Payday wird um 1 erhöht
    }
    return 1;
    }


    Screens: