for(new i=1, j=MAX_HOUSES; i<=j; i++)
Nur mal kurz was fundamentales, was mich daran stört.
Von der Geschwindigkeit her, wäre es hier besser direkt MAX_HOUSES in der Bedingung zu verwenden, da das eine Konstante ist.
Du packt es in eine Variable, das macht es langsamer. Das würde nur Sinn machen, wenn MAX_HOUSES eine Funktion wäre xD
Und davon abgesehen, solltest du bei 0 starten und nicht bei 1 ![]()
Zudem musst du die ID auch zurückgeben und nicht nur 1 ![]()
Und wichtig ist auch, dass es kleiner als MAX_HOUSES ist und nicht kleiner gleich ![]()
Und die 0 wäre kein invalider Index hahaha xD
Also die ganze Funktion mal so schreiben:
stock getFreeHouseID()
{
for(new i; i<MAX_HOUSES; i++)
{
if(!hInfo[i][hID]) return i;
}
return -1;
}
stock createHouse(playerid, Float:X, Float:Y, Float:Z)
{
new query[256],fid=getFreeHouseID();
if(fid == -1) return 0; //Hier wären alle Häuser voll!
mysql_format(handle, query, sizeof(query), "INSERT INTO houses (h_id, h_x, h_y, h_z) VALUES ('%d','%f', '%f', '%f')",
fid, X, Y, Z);
mysql_pquery(handle, query, "OnHouseCreated", "ddfff", playerid, fid, X, Y, Z);
return 1;
}
Die Beschreibung wird nicht gesetzt, da du bei dem einen insID und bei dem Anderen houseid verwendest...
Sind diese Werte identisch? Was genau machst du da xD