VarBesitzer ist ja keine Variable, erstell einfach ne Variable oben. die setzt du bei ocmd:kaufen auf 1 und dann statt beim abspeichern
format(query, sizeof(query), "UPDATE `Houses` SET `VarBesitzer`='1' AND `Besitzer`='%s' WHERE `HausID` = '%d'",PlayerName[playerid],HausInfo[i][HausDB]);
das zu machen, machst du das:
format(query, sizeof(query), "UPDATE `Houses` SET `VarBesitzer`='%d' AND `Besitzer`='%s' WHERE `HausID` = '%d'",HausInfo[i][Verkauft],PlayerName[playerid],HausInfo[i][HausDB]);
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
-
-
So?
#define MAX_HOUSES 50
enum HausDaten
{
hBesitzer[MAX_PLAYER_NAME],
hKaufpreis,
hVarBesitzer,
Float: hIconX,
Float: hIconY,
Float: hIconZ,
hIconID,
Float: hSpawnX,
Float: hSpawnY,
Float: hSpawnZ,
hInteriorID,
HausDB,
Verkauft
}
new HausInfo[MAX_HOUSES][HausDaten];Muss da nochwas in die Tabelle (Struktur= ?
-
jop, und jetzt machst du bei ocmd:kaufen die variable auf 1 und ersetzt das halt wie in meinem vorherigen post.
Dann haust du die abfrage unter if(!IsPlayerInRangeOfPoint...
if(!HausInfo[i][Verkauft]) return SendClientMessage(playerid,COLOR_BLASSRED,"Das Haus ist schon verkauft."); -
Seit du das mit der Variable meinst blick ich echt nicht mehr durch xD
Habe nur oben bei dem enum das hinzugefügt... muss noch mehr irgendwo hin?Muss ich in der Tabelle "Verkauft" einfügen als Intenger?
Und bei LoadHouses(); ? -
die Variable Verkauft, ist sozusagen VarBesitzer, nimm das hier:
ocmd:kaufen(playerid,params[])
{
new query[1000], string[300], string2[500];
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,Float:X,Float:Y,Float:Z);
for(new i=0;i<MAX_HOUSES;i++)
{
if(!IsPlayerInRangeOfPoint(playerid,2,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ])) return SendClientMessage(playerid,COLOR_BLASSRED,"Hier kannst du kein Haus kaufen, du musst dich vor einem Haus stellen.");
if(!HausInfo[i][Verkauft]) return SendClientMessage(playerid,COLOR_BLASSRED,"Das Haus ist schon verkauft.");
if(GetPlayerMoney(playerid) <= HausInfo[i][hKaufpreis]) return SendClientMessage(playerid,COLOR_BLASSRED,"Du hast nicht genug Geld um dir dieses Haus zu kaufen.");
if(GetPlayerScore(playerid) <= 3) return SendClientMessage(playerid,COLOR_BLASSRED,"Du benötigt mindestens Level 3 um dir ein eigenes Haus zu kaufen.");
if(SpielerInfo[playerid][pHaus] != 1) return SendClientMessage(playerid,COLOR_BLASSRED,"Du besitzt schon ein eigenes Haus, bitte verkaufe es vorher. [Befehle: /befehle]");
HausInfo[i][Verkauft] = 1;
format(query, sizeof(query), "UPDATE `Houses` SET `VarBesitzer`='%d' AND `Besitzer`='%s' WHERE `HausID` = '%d'",HausInfo[i][Verkauft], PlayerName[playerid],HausInfo[i][HausDB]);
mysql_query(query);
format(query, sizeof(query), "UPDATE `Accounts` SET `Haus`='1' WHERE `Benutzername` = '%s'",PlayerName[playerid]);
mysql_query(query);
format(string,sizeof(string),"Du hast dir ein Haus für {FFCC00}$%d{FFFFFF} gekauft. Hausnummer |%d|",HausInfo[i][hKaufpreis],HausInfo[i][HausDB]);
SendClientMessage(playerid,COLOR_WHITE,string);
SendClientMessage(playerid,COLOR_WHITE,"Neue Befehle verfügbar [/befehle]");
Delete3DTextLabel(HausLabel[i]);
format(string2,sizeof(string2),"--== Verkauftes Haus ==--\nBesitzer: {FFCC00}%s{FFFFFF}",HausInfo[playerid][hBesitzer]);
HausLabel[i] = Create3DTextLabel(string2,COLOR_WHITE,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ],15,0,1);
Update3DTextLabelText(HausLabel[i],COLOR_WHITE,string2);
GivePlayerMoney(playerid,-HausInfo[i][hKaufpreis]);
return 1;
}
return 1;
} -
Verkauft als Wert in die Tabelle?
Standard 0 oder 1 ? -
wenn du das haus erstellst die verkauft variable auf 0, wenn einer das haus kauft auf 1
-
wenn du das haus erstellst die verkauft variable auf 0, wenn einer das haus kauft auf 1
Hat das was mit der Tabelle zu tun?
Kann das Haus immer und immer wieder kaufen.
Dort steht Besitzer: Niemand normal müsste mein Name stehen.Mfg, Markus
-
Hab übersehen, das du die Variable hVarBesitzer hast jz müsste alles gehen, check mal und ersetz es
#define MAX_HOUSES 50
enum HausDaten
{
hBesitzer[MAX_PLAYER_NAME],
hKaufpreis,
hVarBesitzer,
Float: hIconX,
Float: hIconY,
Float: hIconZ,
hIconID,
Float: hSpawnX,
Float: hSpawnY,
Float: hSpawnZ,
hInteriorID,
HausDB
}
new HausInfo[MAX_HOUSES][HausDaten];ocmd:kaufen(playerid,params[])
{
new query[1000], string[300], string2[500];
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,Float:X,Float:Y,Float:Z);
for(new i=0;i<MAX_HOUSES;i++)
{
if(!IsPlayerInRangeOfPoint(playerid,2,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ])) return SendClientMessage(playerid,COLOR_BLASSRED,"Hier kannst du kein Haus kaufen, du musst dich vor einem Haus stellen.");
if(HausInfo[i][hVarBesitzer] != 1) return SendClientMessage(playerid,COLOR_BLASSRED,"Das Haus ist schon verkauft.");
if(GetPlayerMoney(playerid) <= HausInfo[i][hKaufpreis]) return SendClientMessage(playerid,COLOR_BLASSRED,"Du hast nicht genug Geld um dir dieses Haus zu kaufen.");
if(GetPlayerScore(playerid) <= 3) return SendClientMessage(playerid,COLOR_BLASSRED,"Du benötigt mindestens Level 3 um dir ein eigenes Haus zu kaufen.");
if(SpielerInfo[playerid][pHaus] != 1) return SendClientMessage(playerid,COLOR_BLASSRED,"Du besitzt schon ein eigenes Haus, bitte verkaufe es vorher. [Befehle: /befehle]");
HausInfo[i][hVarBesitzer] = 1;
HausInfo[i][hBesitzer] = PlayerName[playerid];
format(query, sizeof(query), "UPDATE `Houses` SET `VarBesitzer`='%d' AND `Besitzer`='%s' WHERE `HausID` = '%d'",HausInfo[i][hVarBesitzer], PlayerName[playerid],HausInfo[i][HausDB]);
mysql_query(query);
format(query, sizeof(query), "UPDATE `Accounts` SET `Haus`='1' WHERE `Benutzername` = '%s'",PlayerName[playerid]);
mysql_query(query);
format(string,sizeof(string),"Du hast dir ein Haus für {FFCC00}$%d{FFFFFF} gekauft. Hausnummer |%d|",HausInfo[i][hKaufpreis],HausInfo[i][HausDB]);
SendClientMessage(playerid,COLOR_WHITE,string);
SendClientMessage(playerid,COLOR_WHITE,"Neue Befehle verfügbar [/befehle]");
Delete3DTextLabel(HausLabel[i]);
format(string2,sizeof(string2),"--== Verkauftes Haus ==--\nBesitzer: {FFCC00}%s{FFFFFF}",HausInfo[playerid][hBesitzer]);
HausLabel[i] = Create3DTextLabel(string2,COLOR_WHITE,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ],15,0,1);
Update3DTextLabelText(HausLabel[i],COLOR_WHITE,string2);
GivePlayerMoney(playerid,-HausInfo[i][hKaufpreis]);
return 1;
}
return 1;
} -
Okay, ich teste es gerade.
//E
Ingame funktioniert nun alles nur wenn ich in die DB kucke steht bei Besitzer noch immer "Niemand" anstatt "Markus" und die VarBesitzer ist nicht auf 1 ...
=( -
keine ahnung, villeicht wurds nicht richtig gespeichert oder so, teste es nochmal.
bin jz erstmal off, falls du weiterhin Probleme hast, ich bin morgen um 12 uhr wieder online -
-
Ich habs schon es funktioniert auch nur ich kann es nicht verkaufen.
An dieser Zeile hagt es InGame
if(HausInfo[i][hBesitzer] != playerid) return SendClientMessage(playerid,COLOR_BLASSRED,"Du bist nicht der Besitzer von diesem Haus."); -
playerid = Intger
hBesitzer = string
Was passt da wohl nicht?Arbeite mit http://wiki.sa-mp.com/wiki/Strcmp
-
Wollte das so machen
if(Haus.....[hBesitzer] != PlayerName[playerid]) return Send....
Nur dann bekomme ich einen Fehler bei PlayerName...
-
if(strcmp(HausInfo[i][hBesitzer], PlayerName[playerid], true))return SendClientMessage(playerid,COLOR_BLASSRED,"Du bist nicht der Besitzer von diesem Haus.");
So ist es richtig -
Danke
mit dem strcmp zeugs hatte ich auch direkt nie was zu tun ich benutze für Parameter ocmd aber strcmp naja... -
breadfish.de
Hat das Thema geschlossen.