Guten "Spät"-Abend zusammen,
ich bin vorhin mal wieder dazu gekommen, ein wenig zu scripten, und es trat sofort ein Problem auf.
Ich möchte meine Häuser gerne so speichern, dass nur die benutzten, also auch wirklich die eingetragenen gespeichert werden.
Sprich die Häuser, wo die Interior-ID über 0 liegt.
Momentan ist es so:
public SaveHouses()
{
print("Debug 1");
new i = 0, mainQuery[1537], secondQuery[256];
print("Debug 2");
while(i<MAX_HOUSES && Haus[i][hInterior] > 0)
{
print("Debug 3");
format(secondQuery, sizeof(secondQuery), "UPDATE `script_houses` SET `EnterX`='%f', `EnterY`='%f', `EnterZ`='%f', `ExitX`='%f', `ExitY`='%f', `ExitZ`='%f', ",
Haus[i][EnterX], Haus[i][EnterY], Haus[i][EnterZ], Haus[i][ExitX], Haus[i][ExitY], Haus[i][ExitZ]);
strcat(mainQuery, secondQuery);
print("Debug 4");
format(secondQuery, sizeof(secondQuery), "`Interior`='%d', `Besitzer`='%s', `Name`='%s', `Preis`='%d', `Mieten`='%d', `Lock`='%d', `MietPreis`='%d' `Kasse`='%d' WHERE id = '%d'",
Haus[i][hInterior], Haus[i][hBesitzer], Haus[i][hName], Haus[i][hPreis], Haus[i][hMieten], Haus[i][hLock], Haus[i][hMietPreis], Haus[i][hKasse], Haus[i][hdbID]);
mysql_function_query(myCon, mainQuery, false, "", "");
print("Debug 5");
i++;
}
printf("[SAVE] Häuser wurden gespeichert. (%d/%d)", i, MAX_HOUSES);
return 1;
}
Er kommt lediglich bis Debug 2 und beim "Häuser wurden gespeichert" wird 0/200 angezeigt.
Wenn ich die Abfrage rausnehme geht es, allerdings werden dann alle gespeichert, was ich wiederum nicht möchte.
Die Interior-ID wird auch richtig ausgelesen.
public LoadHouses()
{
new rows, fields, count;
cache_get_data(rows, fields);
for(new i;i<rows;i++)
{
new houseID = cache_get_field_content_int(i, "id");
if(houseID < MAX_HOUSES)
{
Haus[houseID][hdbID] = cache_get_field_content_int(i, "id");
Haus[houseID][EnterX] = cache_get_field_content_float(i, "EnterX"); printf("Haus[%d][EnterX]: %f", houseID, Haus[houseID][EnterX]);
Haus[houseID][EnterY] = cache_get_field_content_float(i, "EnterY");
Haus[houseID][EnterZ] = cache_get_field_content_float(i, "EnterZ");
Haus[houseID][ExitX] = cache_get_field_content_float(i, "ExitX");
Haus[houseID][ExitY] = cache_get_field_content_float(i, "ExitY");
Haus[houseID][ExitZ] = cache_get_field_content_float(i, "ExitZ");
Haus[houseID][hInterior] = cache_get_field_content_int(i, "Interior"); printf("Haus[%d][hInterior]: %d", houseID, Haus[houseID][hInterior]);
cache_get_field_content(i, "Besitzer", Haus[houseID][hBesitzer], myCon, 32);
cache_get_field_content(i, "Name", Haus[houseID][hName], myCon, 32);
Haus[houseID][hPreis] = cache_get_field_content_int(i, "Preis");
Haus[houseID][hMieten] = cache_get_field_content_int(i, "Mieten");
Haus[houseID][hLock] = cache_get_field_content_int(i, "Lock");
Haus[houseID][hMietPreis] = cache_get_field_content_int(i, "MietPreis");
Haus[houseID][hKasse] = cache_get_field_content_int(i, "Kasse");
count++;
}
}
printf("[LOAD] Häuser geladen: %d/%d", count, MAX_HOUSES);
return 1;
}
Häuser geladen: 2/200 kommt dort.
Interior ID "debug":
Haus[1][hInterior]: 4
Haus[2][hInterior]: 3
Also gleich wie in der Datenbank. (ID 1 = Interior 4, ID 2 = Interior 3)
Ich wüsste nicht woran dies liegen könnte.
Ich bedanke mich bei den Leuten die mir helfen möchten!