Was?
Lass alles so wie es ist.
Du willst doch nur abfragen, wer in das Haus darf. Das machst du genau gleich wie beim PayDay.
Und abfragen ob der Spieler das Haus besitzt: Ebenso gleich wie beim PayDay, nur ohne die Mieter-Abfragen.
Was?
Lass alles so wie es ist.
Du willst doch nur abfragen, wer in das Haus darf. Das machst du genau gleich wie beim PayDay.
Und abfragen ob der Spieler das Haus besitzt: Ebenso gleich wie beim PayDay, nur ohne die Mieter-Abfragen.
Ah, ich war verwirrt weil "CaZe" da noch was gepostet hat. Ich dachte das wärst du
Alles klar, ich versuch es mal.
Das wäre dann beispielsweise so wenn ich jetzt das Dialog nur für Besitzer öffnen lassen will oder?
if((!strcmp(SpielerName(playerid), hInfo[i][Besitzer]) && strlen(hInfo[i][Besitzer]))
{
//Dialog
}
Und im Dialog dann einfach mit der Schleife arbeiten und jenachdem die Werte in der DB ändern lassen?
Mit freundlichen Grüßen
Ja.
Dort wo du "Dialog" geschrieben hast kommt dann eben das hin was du machen willst. Pauschal kann ich dir das nicht vorhersagen.
Am besten du probierst es einfach mal aus und sagst bei Problemen Bescheid.
Okey also ich bin doch etwas zu doof für ein Haus System
Ich wollte jetzt ein Kündigen Befehl für Mieter machen^^
Das mit der Miete einstellen hab ich gut hinbekommen, pass auf
Zum Test hab ich mich in einem Haus das Niemand gehört als erster Mieter eingetragen, jedoch werde ich als Mieter2 festgelegt.
Ich bekomme die Nachricht "Mieter2 bye" aber werde nicht von Mieter1 gelöscht
Mit freundlichen Grüßen
ocmd:kuendigen(playerid, params[])
{
for(new i=0; i<MAX_HOUSE; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, hInfo[i][PosX],hInfo[i][PosY],hInfo[i][PosZ]))
{
if(!strcmp(SpielerName(playerid), hInfo[i][Mieter1]) && strlen(hInfo[i][Mieter1])) return format(hInfo[i][Mieter1], 24, ""), SendClientMessage(playerid, erfolg, "Mieter 1 bye"), SaveAllHouses();
if(!strcmp(SpielerName(playerid), hInfo[i][Mieter2]) && strlen(hInfo[i][Mieter2])) return format(hInfo[i][Mieter2], 24, ""), SendClientMessage(playerid, erfolg, "Mieter 2 bye"), SaveAllHouses();
if(!strcmp(SpielerName(playerid), hInfo[i][Mieter3]) && strlen(hInfo[i][Mieter3])) return format(hInfo[i][Mieter3], 24, ""), SendClientMessage(playerid, erfolg, "Mieter 3 bye"), SaveAllHouses();
return 1;
}
}
return 1;
}
Danke für die Hilfe Jeffry
Zu dem Betreten wenn das Haus abgeschlossen ist nur als Mieter oder Besitzer hab ich ein kleines Problem.
Besitzer können immer rein egal ob verschlossen oder nicht, aber Mieter können nicht rein
Irgendwie verstehe ich das mit dem strcmp und strlen nicht so ganz
Mit freundlichen Grüßen
Ich rate dir es so zu machen, ist zwar nicht die schönste Variante, aber damit wirst du am ehesten klar kommen, da es genau gleich ist wie sonst auch:
if(hInfo[house][Gekauft] == 1)
{
if(hInfo[house][Lock] != 0)
{
if((!strcmp(SpielerName(playerid), hInfo[house][Mieter1]) && strlen(hInfo[house][Mieter1])) || (!strcmp(SpielerName(playerid), hInfo[house][Mieter2]) && strlen(hInfo[house][Mieter2])) || (!strcmp(SpielerName(playerid), hInfo[house][Mieter3]) && strlen(hInfo[house][Mieter3])) || (!strcmp(SpielerName(playerid), hInfo[house][Besitzer]) && strlen(hInfo[house][Besitzer])))
{
//Nichts, da erlaubt.
}
else
{
return SendClientMessage(playerid, error, "Dieses Haus ist verschlossen. Zutritt nur für Mieter/Bezitzer");
}
}
SetPlayerPos(playerid, hInfo[house][IntX],hInfo[house][IntY],hInfo[house][IntZ]);
SetPlayerInterior(playerid, hInfo[house][IntID]);
SetPlayerVirtualWorld(playerid, hInfo[house][VID]);
return 1;
}
Perfekt, funktioniert 1A!
Ich muss mich bei dir bedanken, dass du immer Hilfst
Alleine hätte ich das niemals geschafft.^^
Hab noch ne klitze kleine Frage undzwar geht es beim Befehl auch noch anders, die Koordinaten für das Interior festzulegen?
Weil erstens wird der Command dann bestimmt unübersichtlich und ewig und zweitens gibt es bestimmt mehrere Häuser mit der gleichen Interior ID
Vielleicht das man auswählen kann /Createhouse [HausID](1 = Großes Haus) (2 = Mittleres Haus) (3 = Kleines Haus) [IntID].....
Und dann in einem Enum die HausID, InteriorID, Koordinaten fürs Interior.
Damit er dann eigenständig dort sucht und einträgt?
Wäre nämlich besser
Falls das nicht geht oder man zuviel umschreiben müsste sag das einfach.
Mit freundlichen Grüßen
//Edit:
Momentan mach ich es mit switch & case
Ja, klar geht das.
Entweder du splittest die Eingabe (params) mit strtok oder mit sscanf, wie du willst und übergibst es entsprechend anstatt dem switch an die Variablen.
Okay, also ich hab jetzt mal so gemacht
Wird es da jetzt komplikationen geben wegen meinem HausDaten enum?
Und wie lass ich das jetzt per befehl durchsuchen?
und beim Speichern in die Daten bank dann einfach hInfo[i][IntX] = hIntDaten...?
Ich checks grad wenig
Mach den Befehl mit der Eingabe und dem Splitten der Eingaben soweit mal fertig wie du es haben willst, dann kann ich dir den Rest entsprechend zeigen.
So, jetzt hab ich da ja Art(Großes Haus/Mittel/Kleines
Und dann Interior, also wenn ich bsp Createhouse 1(großes haus) 5 mache soll er dann bsp die Mad Dogg villa nehmen also als Koordinate.
Mit dem Splitten weiß ich nicht genau was du meinst, sorry^^
//Hier dann das mit dem Interior und die Postion^^
zu:
for(new j=0; j<sizeof(Houses_Data); j++)
{
if(Houses_Data[j][eArt] == Art && Houses_Data[j][eInt] == Inte)
{
hInfo[i][PosX] = Houses_Data[j][eIntX];
//usw...für alle Daten die du übernehmen willst.
break;
}
}
Und das enum muss so aussehen:
enum hdIntDaten
{
eArt,
eInt,
Float:eIntX,
Float:eIntY,
Float:eIntZ,
eText[34]
}
new Houses_Data[MAX_HOUSE][hdIntDaten] =
{
{1, 5 , 1261.0065,-785.5643,1091.9063, "17 Zimmer"}//Ist die Art(Groß/Mittel/Klein) Interior XYZ vom Interior
};
EDIT:
@_iPit_: Da dein Problem behoben ist, wäre es super, wenn du den Thread als erledigt markierst. Danke!