Hallo,
ich habe gerade einige Fehler, die ich beim besten Willen nicht wegbekomme:
Code
error 032: array index out of bounds (variable "haus") // 13x - Überall wo haus[i][...] verwendet wird
Hier der relevante Teil des Codes.
#define MAX_HAUS 350
enum hInfo {
Float:X,
Float:Y,
Float:Z,
Preis,
Gebiet[5],
Besitzer[24],
KeyID,
pickup,
bool:loaded = false
};
Float:X,
Float:Y,
Float:Z,
Preis,
Gebiet[5],
Besitzer[24],
KeyID,
pickup,
bool:loaded = false
};
new haus[MAX_HAUS][hInfo];
public LoadHaus()
{
new text[128], form[5], besitzer[24], gebiet[5], i;
while(i < MAX_HAUS) {
if(haus[i][loaded] == false)
{
format(mQuery, 128, "SELECT * FROM haus WHERE ID = %i", i);
mysql_query(mQuery);
mysql_store_result();
if(mysql_num_rows())
{
mysql_free_result();
format(form, 5, "%i", i);
format(besitzer, 24, "%s", mySQL_GetString("haus", "Besitzer", "ID", form));
format(gebiet, 24, "%s", mySQL_GetString("haus", "Gebiet", "ID", form));
haus[i][X] = mySQL_GetFloat("haus", "X", "ID", form);
haus[i][Y] = mySQL_GetFloat("haus", "Y", "ID", form); //error 032
haus[i][Z] = mySQL_GetFloat("haus", "Z", "ID", form); //error 032
haus[i][Besitzer] = besitzer; //error 032
haus[i][Gebiet] = gebiet; //error 032
haus[i][KeyID] = mySQL_GetInt("haus", "KeyID", "ID", form); //error 032
haus[i][Preis] = mySQL_GetInt("haus", "Preis", "ID", form); //error 032
haus[i][loaded] = true;
if(strlen(haus[i][Besitzer]) > 2) //error 032
{ // Bewohnt
format(text, 128, "- Besitzer: %s -\n- Gebiet: %s -", haus[i][Besitzer], haus[i][Gebiet]); //error 032
haus[i][pickup] = CreatePickup(1272, 1, haus[i][X], haus[i][Y], haus[i][Z], -1); //error 032
Create3DTextLabel(text, cAQUA, haus[i][X], haus[i][Y], haus[i][Z]+1, 5, 0, 0); //error 032
}
else
{ // Verkäuflich
format(text, 128, "- Verkäuflich -\n- Preis: $%i -\n- Gebiet: %s -", haus[i][Preis], haus[i][Gebiet]); //error 032
haus[i][pickup] = CreatePickup(1273, 1, haus[i][X], haus[i][Y], haus[i][Z], -1); //error 032
Create3DTextLabel(text, cDONE, haus[i][X], haus[i][Y], haus[i][Z]+1, 5, 0, 0); //error 032
}
}
}
i++;
}
return 1;
}
{
new text[128], form[5], besitzer[24], gebiet[5], i;
while(i < MAX_HAUS) {
if(haus[i][loaded] == false)
{
format(mQuery, 128, "SELECT * FROM haus WHERE ID = %i", i);
mysql_query(mQuery);
mysql_store_result();
if(mysql_num_rows())
{
mysql_free_result();
format(form, 5, "%i", i);
format(besitzer, 24, "%s", mySQL_GetString("haus", "Besitzer", "ID", form));
format(gebiet, 24, "%s", mySQL_GetString("haus", "Gebiet", "ID", form));
haus[i][X] = mySQL_GetFloat("haus", "X", "ID", form);
haus[i][Y] = mySQL_GetFloat("haus", "Y", "ID", form); //error 032
haus[i][Z] = mySQL_GetFloat("haus", "Z", "ID", form); //error 032
haus[i][Besitzer] = besitzer; //error 032
haus[i][Gebiet] = gebiet; //error 032
haus[i][KeyID] = mySQL_GetInt("haus", "KeyID", "ID", form); //error 032
haus[i][Preis] = mySQL_GetInt("haus", "Preis", "ID", form); //error 032
haus[i][loaded] = true;
if(strlen(haus[i][Besitzer]) > 2) //error 032
{ // Bewohnt
format(text, 128, "- Besitzer: %s -\n- Gebiet: %s -", haus[i][Besitzer], haus[i][Gebiet]); //error 032
haus[i][pickup] = CreatePickup(1272, 1, haus[i][X], haus[i][Y], haus[i][Z], -1); //error 032
Create3DTextLabel(text, cAQUA, haus[i][X], haus[i][Y], haus[i][Z]+1, 5, 0, 0); //error 032
}
else
{ // Verkäuflich
format(text, 128, "- Verkäuflich -\n- Preis: $%i -\n- Gebiet: %s -", haus[i][Preis], haus[i][Gebiet]); //error 032
haus[i][pickup] = CreatePickup(1273, 1, haus[i][X], haus[i][Y], haus[i][Z], -1); //error 032
Create3DTextLabel(text, cDONE, haus[i][X], haus[i][Y], haus[i][Z]+1, 5, 0, 0); //error 032
}
}
}
i++;
}
return 1;
}
Ich hoffe mir kann jemand helfen.
Mit freundl. Grüßen
Padarom
edit: Problem gelöst. Dadurch, dass ich in der Enumeration der Boolean loaded den Standardwert false zugewiesen habe, wurde erwartet, dass ich jeder anderen Variable auch einen Standardwert zuweise. Da ein Boolean standardweise false ist, wäre das so oder so hinfällig.