Hallo liebe Brotfische,
ich hoffe ihr könnt' mir helfen.
Ich habe ein Biz Lade-System geschrieben, aber es funktioniert nicht, für mich eine unerklärliche problematik.
Die erste Biz wird vollständig geladen. aber alle anderen nicht, es kommt mir so vor als wird die Cache nach der ersten Biz gelöscht.
new query[103];
mysql_format(g_SQL, query, sizeof query, "SELECT * FROM `bizzes`");
mysql_tquery(g_SQL, query, "OnLoadBusiness");
forward OnLoadBusiness();
public OnLoadBusiness() {
new string[200], eintritt[100];
if(cache_num_rows() > 0) {
printf("DEBUG: cache_num_results() = %i, cache_num_cows() = %i, cache_num_fields() = %i", cache_num_results(), cache_num_rows(), cache_num_fields());
for(new i=0; i < cache_num_rows(); i++) {
print("DEBUGTEST");
cache_get_value_int(i, "id", BizInfo[i][bID]);
cache_get_value_int(i, "owner", BizInfo[i][bOwner]);
cache_get_value_int(i, "towner", BizInfo[i][bTOwner]);
cache_get_value_int(i, "price", BizInfo[i][bPrice]);
cache_get_value_int(i, "typ", BizInfo[i][bTyp]);
cache_get_value_int(i, "bizlock", BizInfo[i][bLock]);
cache_get_value_int(i, "enterprice", BizInfo[i][bEnterprice]);
cache_get_value_int(i, "adminlock", BizInfo[i][bAdminLock]);
cache_get_value_int(i, "amtlock", BizInfo[i][bAmtLock]);
cache_get_value_int(i, "interior", BizInfo[i][bInterior]);
cache_get_value_int(i, "kasse", BizInfo[i][bKasse]);
cache_get_value_int(i, "hint", BizInfo[i][bHInt]);
cache_get_value_float(i, "b_x", BizInfo[i][bX]);
cache_get_value_float(i, "b_y", BizInfo[i][bY]);
cache_get_value_float(i, "b_z", BizInfo[i][bZ]);
cache_get_value_float(i, "b_a", BizInfo[i][bA]);
cache_get_value_float(i, "bintx", BizInfo[i][bIntX]);
cache_get_value_float(i, "binty", BizInfo[i][bIntY]);
cache_get_value_float(i, "bintz", BizInfo[i][bIntZ]);
cache_get_value_float(i, "binta", BizInfo[i][bIntA]);
cache_get_value(i, "name", BizInfo[i][bName], 150);
cache_get_value(i, "slocan", BizInfo[i][bSlocan], 150);
if(BizInfo[i][bEnterprice] < 1) {
eintritt = "";
} else {
format(eintritt, sizeof(eintritt), "{FFFF00}Eintritt: {FFFFFF}%d$", BizInfo[i][bEnterprice]);
}
if(BizInfo[i][bAdminLock] == 1) {
format(string, sizeof(string), "[ %s ]\n{F81518}Dieses Unternehmen wurde Administrativ gesperrt!", BizInfo[i][bName]);
BizInfo[i][bPickup] = CreateDynamicPickup(1318, 1, BizInfo[i][bX], BizInfo[i][bY], BizInfo[i][bZ]);
BizInfo[i][bLabel] = CreateDynamic3DTextLabel(string, 0xFFFF00FF, BizInfo[i][bX], BizInfo[i][bY], BizInfo[i][bZ], 10.0);
} else if(BizInfo[i][bAmtLock] == 1) {
format(string, sizeof(string), "[ %s ]\n{F81518}Dieses Unternehmen wurde vom Ordnungsamt gesperrt!\nFalls Sie der Betreiber sind, melden Sie sich beim Ordnungsamt!", BizInfo[i][bName]);
BizInfo[i][bPickup] = CreateDynamicPickup(1318, 1, BizInfo[i][bX], BizInfo[i][bY], BizInfo[i][bZ]);
BizInfo[i][bLabel] = CreateDynamic3DTextLabel(string, 0xFFFF00FF, BizInfo[i][bX], BizInfo[i][bY], BizInfo[i][bZ], 10.0);
} else if(BizInfo[i][bOwner] == 0 && BizInfo[i][bTOwner] == 0) {
format(string, sizeof(string), "[ %s ]\n- Zum Verkauf -\nKaufpreis: {FFFFFF}%d$\n\nZum kaufen, tippe /buybiz", BizInfo[i][bName], BizInfo[i][bPrice]);
BizInfo[i][bPickup] = CreateDynamicPickup(1274, 1, BizInfo[i][bX], BizInfo[i][bY], BizInfo[i][bZ]);
BizInfo[i][bLabel] = CreateDynamic3DTextLabel(string, 0xFFFF00FF, BizInfo[i][bX], BizInfo[i][bY], BizInfo[i][bZ], 10.0);
} else {
if(BizInfo[i][bHInt] == 1) {
format(string, sizeof(string), "[ %s ]\n%s\nInhaber: {FFFFFF}%s\n{FFFF00}Teilhaber: {FFFFFF}%s\n%s\n{FFFF00}Zum betreten, drücke Enter", BizInfo[i][bName], BizInfo[i][bSlocan], getUserByID(BizInfo[i][bOwner]), getUserByID(BizInfo[i][bTOwner]), eintritt);
BizInfo[i][bPickup] = CreateDynamicPickup(1318, 1, BizInfo[i][bX], BizInfo[i][bY], BizInfo[i][bZ]);
CreateDynamicPickup(1318, 1, BizInfo[i][bIntX], BizInfo[i][bIntY], BizInfo[i][bIntZ], BizInfo[i][bID], BizInfo[i][bInterior]);
BizInfo[i][bLabel] = CreateDynamic3DTextLabel(string, 0xFFFF00FF, BizInfo[i][bX], BizInfo[i][bY], BizInfo[i][bZ], 10.0);
CreateDynamic3DTextLabel("[ AUSGANG ]\n\nDrücke Enter zum rausgehen", 0xFFFF00FF, BizInfo[i][bIntX], BizInfo[i][bIntY], BizInfo[i][bIntZ], 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, BizInfo[i][bID], BizInfo[i][bInterior]);
} else {
format(string, sizeof(string), "[ %s ]\n%s\nInhaber: {FFFFFF}%s\n{FFFF00}Teilhaber: {FFFFFF}%s\n%s\n", BizInfo[i][bName], BizInfo[i][bSlocan], getUserByID(BizInfo[i][bOwner]), getUserByID(BizInfo[i][bTOwner]), eintritt);
BizInfo[i][bPickup] = CreateDynamicPickup(1239, 1, BizInfo[i][bX], BizInfo[i][bY], BizInfo[i][bZ]);
BizInfo[i][bLabel] = CreateDynamic3DTextLabel(string, 0xFFFF00FF, BizInfo[i][bX], BizInfo[i][bY], BizInfo[i][bZ], 10.0);
}
}
printf("[BIZ] %s (%i/%i) geladen.", BizInfo[i][bName], i+1, cache_num_rows());
}
return 1;
}
print("[BIZ] Es wurden keine Geschäfte gefunden.");
return 1;
}
Alles anzeigen
Hier wird alles korrekt ausgegeben, cache_num_cows() gibt 18 zurück da 18 Bizzen in der DB existieren.
printf("DEBUG: cache_num_results() = %i, cache_num_cows() = %i, cache_num_fields() = %i", cache_num_results(), cache_num_rows(), cache_num_fields());
Wenn die erste Biz geladen ist, gibt komischerweise cache_num_rows() plötzlich 0 zurück. Und dadurch können keine weiteren Einträge geladen werden.
printf("[BIZ] %s (%i/%i) geladen.", BizInfo[i][bName], i+1, cache_num_rows());
Und in der MySQL-Log steht:
[09:20:42] [ERROR] cache_get_value_name: field 'name' not found
[09:20:42] [ERROR] cache_get_value_name: field 'name' not found
[09:20:42] [ERROR] cache_get_row_count: no active cache
[09:20:42] [ERROR] cache_get_row_count: no active cache
Wo ist der Fehler: