Finde nichts...
ocmd:hauskaufen(playerid,params[])
{
new id = IsHaus(playerid),Text[256],query[256];
if(id != -1) //hier brauch ich nicht mehr viel erklären, da es das selbe wie beim lösch befehl ist.
{
if(HausInfo[id][vergeben] != 0) return SCM(playerid,rot,"Das haus ist bereits vergeben!");
HausInfo[id][vergeben] = 1;
HausInfo[id][Besitzer] = MeinName(playerid);
SCM(playerid,gruen,"Du hast das Haus gekauft");
GivePlayerMoney(playerid,-HausInfo[id][Preis]);
Delete3DTextLabel(HausInfo[id][hLabel]);
DestroyDynamicPickup(HausInfo[id][hausobjekt]);
HausInfo[id][hausobjekt] = CreateDynamicPickup(1273, 1, HausInfo[id][X], HausInfo[id][Y], HausInfo[id][Z]);
format(Text,sizeof(Text),"Haus\nBesitzer:\t%s",HausInfo[id][Besitzer]);
HausInfo[id][hLabel] = Create3DTextLabel(Text, orange, HausInfo[id][X], HausInfo[id][Y], HausInfo[id][Z], 15, 0);
format(query,sizeof(query),"UPDATE `haus` SET `vergeben` = '%d',`Besitzer` = '%s' WHERE `ID` = '%d'",HausInfo[id][vergeben],HausInfo[id][Besitzer],id);
db_query(Database,query);
return 1;
}
else
{
SCM(playerid,rot,"Du bist an keinem Haus.");
}
return 1;
}
ocmd:hausverkaufen(playerid,params[])
{
new id = IsHaus(playerid),Text[256],query[256];
if(id != -1)
{
if(HausInfo[id][vergeben] != 1) return SCM(playerid,rot,"Du kannst das Haus nich verkaufen!");
if(strcmp(HausInfo[id][Besitzer], MeinName(playerid), false)) return SCM(playerid,rot,"Das ist nicht dein Haus!");
HausInfo[id][vergeben] = 0;
HausInfo[id][Besitzer] = 0;
SCM(playerid,gruen,"Du hast das Haus Verkauft");
GivePlayerMoney(playerid,HausInfo[id][Preis]);
Delete3DTextLabel(HausInfo[id][hLabel]);
format(Text,sizeof(Text),"Haus %d Zum Verkauf\n\nPreis:\t%d",id,HausInfo[id][Preis]);
HausInfo[id][hLabel] = Create3DTextLabel(Text, orange, HausInfo[id][X], HausInfo[id][Y], HausInfo[id][Z], 15, 0);
format(query,sizeof(query),"UPDATE `haus` SET `vergeben` = '%d',`Besitzer` = 'Niemand' WHERE `ID` = '%d'",HausInfo[id][vergeben],id);
db_query(Database,query);
return 1;
}
else
{
SCM(playerid,rot,"Du bist an keinem Haus.");
}
return 1;
}
ocmd:delhaus(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return SCM(playerid,rot,"Du bist nicht befugt!");
new id = IsHaus(playerid),query[256];
if(id != -1)
{
HausInfo[id][erstellt] = false;
HausInfo[id][X] = 0.0;
HausInfo[id][Y] = 0.0;
HausInfo[id][Z] = 0.0;
HausInfo[id][Preis] = 0;
HausInfo[id][vergeben] = 0;
HausInfo[id][Besitzer] = 0;
DestroyDynamicPickup(HausInfo[id][hausobjekt]);
Delete3DTextLabel(HausInfo[id][hLabel]);
format(query,sizeof(query),"SELECT * FROM haus WHERE ID = '%d'",id);
format(query,sizeof(query),"DELETE FROM haus WHERE ID = '%d'",id);
db_query(Database,query);
SCM(playerid,gruen,"Du hast das Haus gelöscht");
return 1;
}
else
{
SCM(playerid,rot,"Du bist an keinem Haus!");
}
return 1;
}
ocmd:chaus(playerid,params[])
{
new Float:x,Float:y,Float:z,Float:a,preis,Text[256], query[256];
if(!IsPlayerAdmin(playerid)) return SCM(playerid,rot,"Du bist nicht befugt!");
if(sscanf(params,"d", preis)) return SCM(playerid,rot,"Benutze: /chaus [Preis]");
GetPlayerPos(playerid, x, y, z);//daführ benötigen wir die oben erstellten floats Float:x,Float:y,Float:z
GetPlayerFacingAngle(playerid,a); //daführ benötigen wir die oben erstellten floats Float:a
for(new i = 0;i < MAX_HAUS; i++)
{
if(HausInfo[i][erstellt] == true)continue;
HausInfo[i][erstellt] = true;
HausInfo[i][X] = x;
HausInfo[i][Y] = y;
HausInfo[i][Z] = z;
HausInfo[i][Preis] = preis;
HausInfo[i][vergeben] = 0;
HausInfo[i][Besitzer] = 0;
HausInfo[i][hausobjekt] = CreateDynamicPickup(1273, 1, HausInfo[i][X], HausInfo[i][Y], HausInfo[i][Z]);
format(Text,sizeof(Text),"Haus %d Zum Verkauf\n\nPreis:\t%d",i,HausInfo[i][Preis]);
HausInfo[i][hLabel] = Create3DTextLabel(Text, orange, HausInfo[i][X], HausInfo[i][Y], HausInfo[i][Z], 15, 0);
format(query,sizeof(query),"INSERT INTO `haus` (`ID`, `X`,`Y`,`Z`,`Preis`,`vergeben`,`Besitzer`) VALUES ('%i','%f','%f','%f','%d','Niemand')",i,x,y,z,preis,0);
db_query(Database,query);
SCM(playerid,gruen,"Haus erstellt!");
return 1;
}
return 1;
}
die Stocks
stock IsHaus(playerid)
{
new i=0;
while(i != MAX_HAUS)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, HausInfo[i][X], HausInfo[i][Y], HausInfo[i][Z]))
{
return i;
}
i++;
}
return -1;
}//da gibt es nicht viel mehr zu erklären.
stock createhouse()//der Stock ansich
{
new DBResult:Result, str[512],Text[256], rows;
for(new i=0;i<MAX_HAUS;i++)//nun gehen wir mit Hilfe einer Schleife alle Häuser einmal durch.
{
format(str,sizeof(str),"SELECT * FROM `haus` WHERE `ID` = '%i'",i);//Nun formatieren wir einen string, welcher aus der Tabelle "haus" auslesen soll
Result = db_query(Database,str);//Die Variable wird nun beim aufrufen von Result den Query ausführen um was auszulesen
rows = db_num_rows(Result);//rows ist nun die variable für die Felder
if(rows == 0)continue;//Falls ein Feld in der Datanbank leer ist, wird sofort zum nächsten gegangen, ohne das die schleife unterbrochen wird
db_get_field_assoc(Result,"X",str,sizeof(str));//Nun Lesen wir das Feld "X" in der Tabelle aus
HausInfo[i][X]=floatstr(str);//Und geben diesen wert der Variabl "X"
db_get_field_assoc(Result,"Y",str,sizeof(str));//das passiert jetzt so wie bei "X", es werden jeweils Integer geladen
HausInfo[i][Y]=floatstr(str);
db_get_field_assoc(Result,"Z",str,sizeof(str));
HausInfo[i][Z]=floatstr(str);
db_get_field_assoc(Result,"Preis",str,sizeof(str));
HausInfo[i][Preis]=strval(str);
db_get_field_assoc(Result,"vergeben",str,sizeof(str));
HausInfo[i][vergeben]=strval(str);
db_get_field_assoc(Result,"Besitzer",str,sizeof(str));//Nun Lesen wir das Feld "Besitzer" aus
format(HausInfo[i][Besitzer],MAX_PLAYER_NAME,"%s",str);//Nun formatieren wir die Variable "Besitzer" in einen string, und geben den Wert vom besitzer dieser Variable
HausInfo[i][erstellt] = true;
if(HausInfo[i][vergeben] == 1)//Haus ist vergeben
{
format(Text,sizeof(Text),"Haus\nBesitzer:\t%s",HausInfo[i][Besitzer]);//String wird für das Label Formatiert, es Zeigt Nur den Besitzer an.
HausInfo[i][hausobjekt] = CreateDynamicPickup(1239, 1, HausInfo[i][X], HausInfo[i][Y], HausInfo[i][Z]);// Nun erstellen wir mit dem Streamer das Pickup, das Pickup ist nun der Variable "Hausobjekt" zugehörig
}
else
{
format(Text,sizeof(Text),"Haus %d zum Verkauf\n\nPreis:\t%d",i,HausInfo[i][Preis]);//String wird für das Label Formatiert, es Zeigt an das es Zum verkauf ist, zudem auch den Preis
HausInfo[i][hausobjekt] = CreateDynamicPickup(1273, 1, HausInfo[i][X], HausInfo[i][Y], HausInfo[i][Z]); // Nun erstellen wir mit dem Streamer das Pickup, das Pickup ist nun der Variable "Hausobjekt" zugehörig
}
HausInfo[i][hLabel] = Create3DTextLabel(Text, orange, HausInfo[i][X], HausInfo[i][Y], HausInfo[i][Z], 15, 0);//erstellen des Labels, es gehört nun der Variable hLabel
db_free_result(Result);//Frei geben des benötigten Speichers.
}//schließen der Klammern
}//schließen der Klammern
der enum
enum haus
{
Float:X, //X Koordinate des Pickups/Label
Float:Y, //Y Koordinate des Pickups/Label
Float:Z, //Z Koordinate des Pickups/Label
hausobjekt, // Ist das einzelnde Haus
hPickup, // ist die Variable für das Hauspickup
Text3D:hLabel, //Ist der 3D TextLabel für das Label
Preis, //Die Variable für den Preis
vergeben, //Eine Variable ob das Haus vergeben ist
Besitzer[MAX_PLAYER_NAME], //Und der Besitzer des Hauses
bool:erstellt //Eine Variable, ob das Haus überhaupt vergeben ist. Warum "bool?" weil man einen Bool nur auf "1" oder "0" Setzen kann, welches hier auch nur bernötigt wird
}
new HausInfo[MAX_HAUS][haus]; //Und die Variable um auf das Enum zuzugreifen
Edit: Ich lese mir das natürlich auch durch veränder es später auch und schaue nach Fehlern aber erstmal Teste ich am Anfang ob es überhaupt geht