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: