Was geht denn nicht?
Dass dir das doppelt angezeigt wird liegt nur daran, dass das immer alles einzeln geladen wird.
Solltest das so schreiben:
public loadBizzes(){
new rows;
cache_get_row_count(rows);
if(rows == 0) return 1;
new tank_counter;
for(new i,query[200]; i < rows; i++){
cache_get_value_name_int(i, "id", bInfo[i][db_id]);
cache_get_value_name_int(i, "biz_typ", bInfo[i][biz_typ]);
cache_get_value_name(i, "biz_name", bInfo[i][biz_name], 128);
cache_get_value_name_int(i, "biz_owner", bInfo[i][biz_owner]);
cache_get_value_name_int(i, "biz_sowner", bInfo[i][biz_sowner]);
cache_get_value_name_int(i, "biz_level", bInfo[i][biz_level]);
cache_get_value_name_int(i, "int_id", bInfo[i][int_id]);
cache_get_value_name_float(i, "bizkosten", bInfo[i][biz_kosten]);
cache_get_value_name_float(i, "bizkasse", bInfo[i][biz_kasse]);
cache_get_value_name_float(i, "enter_x", bInfo[i][enter_x]);
cache_get_value_name_float(i, "enter_y", bInfo[i][enter_y]);
cache_get_value_name_float(i, "enter_z", bInfo[i][enter_z]);
cache_get_value_name_float(i, "int_x", bInfo[i][int_x]);
cache_get_value_name_float(i, "int_y", bInfo[i][int_y]);
cache_get_value_name_float(i, "int_z", bInfo[i][int_z]);
cache_get_value_name_float(i, "i_x", bInfo[i][i_x]);
cache_get_value_name_float(i, "i_y", bInfo[i][i_y]);
cache_get_value_name_float(i, "i_z", bInfo[i][i_z]);
bInfo[i][id_x] = bInfo[i][db_id];
if(bInfo[i][biz_typ] == 1){
tank_counter++;
mysql_format(handle, query, sizeof(query), "SELECT * FROM new_tankstellen WHERE id = '%i'", bInfo[i][db_id]);
mysql_pquery(handle, query, "loadTanke", "i", i);
}
}
print("|__________Tankstellen wurden geladen__________|");
printf("Es wurden %i Tankstellen geladen", tank_counter);
return 1;
}
public loadTanke(dbid){
new rows;
cache_get_row_count(rows);
if(rows == 0) return 1;
new string[128];
cache_get_value_name_int(0, "id", tankInfo[dbid][db_id]);
cache_get_value_name_int(0, "t_typ", tankInfo[dbid][t_typ]);
cache_get_value_name_float(0, "t_x", tankInfo[dbid][t_x]);
cache_get_value_name_float(0, "t_y", tankInfo[dbid][t_y]);
cache_get_value_name_float(0, "t_z", tankInfo[dbid][t_z]);
cache_get_value_name_int(0, "t_range", tankInfo[dbid][t_range]);
cache_get_value_name_float(0, "benzin_vol", tankInfo[dbid][benzin_vol]);
cache_get_value_name_float(0, "diesel_vol", tankInfo[dbid][diesel_vol]);
cache_get_value_name_float(0, "gas_vol", tankInfo[dbid][gas_vol]);
cache_get_value_name_float(0, "kerosin_vol", tankInfo[dbid][kerosin_vol]);
cache_get_value_name_float(0, "benzin_preis", tankInfo[dbid][benzin_preis]);
cache_get_value_name_float(0, "diesel_preis", tankInfo[dbid][diesel_preis]);
cache_get_value_name_float(0, "gas_preis", tankInfo[dbid][gas_preis]);
cache_get_value_name_float(0, "kerosin_preis", tankInfo[dbid][kerosin_preis]);
tankInfo[dbid][id_x] = tankInfo[dbid][db_id];
printf("Tankstelle: %s | X: %f | Y: %f | Z: %f | ID: %i geladen", bInfo[dbid][biz_name], bInfo[dbid][enter_x], bInfo[dbid][enter_y], bInfo[dbid][enter_z], tankInfo[dbid][id_x]);
format(string, sizeof(string), "%s", bInfo[dbid][biz_name]);
tankLabel[bInfo[dbid][id_x]] = Create3DTextLabel(string, COLOR_WHITE, bInfo[dbid][enter_x], bInfo[dbid][enter_y], bInfo[dbid][enter_z], 15, 0, 1);
return 1;
}
Alles anzeigen
Das Problem das ich hier sehe ist Array-Verschwendung.
Also man kann es so lösen, aber das ist nicht gerade elegant, da wenn du z.B. 100 Unternehmen hast und davon ist index 30 und index 98 eine Tankstelle.
Dann steht in tankInfo[30] etwas und in tankInfo[98] etwas.
Der ganze Rest ist leer.
Bräuchtest also eigentlich auch nur tankInfo[0] und tankInfo[1], sprich 2 Cells, wohingegen du hier 100 reservierst.
Aber gut...das nur mal als Anmerkung.
Und in Zeile 56 von meinem Code, da wolltest du doch bInfo[dbid][id_x] schreiben, oder? 
Des weiteren wäre das effizienter nicht für jede Tankstelle einen Query auszuführen, sondern einfach einen JOIN zu benutzen und dann alle Tankstellen auf einmal zu laden.