wenn du das haus erstellst die verkauft variable auf 0, wenn einer das haus kauft auf 1
Beiträge von firestormZ
-
-
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;
} -
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."); -
das passiert nur mit dem normal text editor, nutze notepad++ oder wordpad etc.
-
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]); -
nein pHaus ist ja, ob er EIN HAUS SCHON BESITZT, du musst aber ne Variable erstellen, ob das HAUS NOCH ZU VERKAUFEN IST ODER NICHT
-
du musst ja auch noch ne variable machen zb HausInfo[i][Verkauft], und die setzt du beim kauf auf 1
-
nimm das neue edit
-
oh, wenn das jetzt nicht funktioniert, dann weis ich au nimmer
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(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]");
format(query, sizeof(query), "UPDATE `Houses` SET `VarBesitzer`='1' AND `Besitzer`='%s' WHERE `HausID` = '%d'",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;
} -
markus probier einfach mal mein edit
-
nimm mal mein edit, und guck obs funzt
-
hm, scheint eigentlich alles richtig zu sein, wie erstellst du denn ein haus?
//edit: so ist es übersichtlicher und sollte jetzt klappen:
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(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]");
format(query, sizeof(query), "UPDATE `Houses` SET `VarBesitzer`='1' AND `Besitzer`='%s' WHERE `HausID` = '%d'",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;
} -
müsste so passen
//wichtig ist nur, das du am ende der schleife return 1; nutzt, da du sonst nicht 1 haus erstellst, sondern soviele, wie MAX_HOUSES definiert ist.
mfg
-
SetTimerEx("beantragt",1500,1,"i",playerid); // 1500 als Test
//STRUKTUR: NAME DES TIMER, ZEIT, WIEDERHOLUNG DES TIMERS, PARAMETER, PLAYERID ETC.
Du hast die Wiederholung des Timers auf true(1) gesetzt, also wiederholt sich der timer alle 1,5 sekunden.
mach die true(1) zu false(0) und das Problem ist gegessen.mfg
-
du musst unter der fehlermeldung return 1; setzen, da du innerhalb der schleife die nachricht sendest und er die nachrichten so oft schickt, wie MAX_HOUSES definiert ist.
return 1; bewirkt dann, dass er nach 1 mal senden aufhört -
achso danke, dann weis ich jetzt, wies funktioniert
-
Firerfan:
was war denn jetzt das problem? würd mich mal interessieren, weil ich sowas ähnliches vorhabemfg
-
achso meinst du das
-
Uppermost:
Geht so, allerdings irgendwie unnötig
new string[20]="123 blubblub";
SendClientMessage(playerid, 0xFFFFFFFF,string); -
bitte, eine frage
Warum wollt ihr eigentlich alle aufeinmal firstperson haben? Glaub 4 oder 5 Beiträge heute nur mit firstperson gesehen ;D