enum GangZonesInfo
{
gzone_id,
gzone_name[MAX_NAME],
gZoneOwner[50],
gZoneAttacker[50],
SprayTag1HP,
SprayTag2HP,
SprayTag3HP,
Float:SprayTag1PosX,
Float:SprayTag1PosY,
Float:SprayTag1PosZ,
Float:SprayTag2PosX,
Float:SprayTag2PosY,
Float:SprayTag2PosZ,
Float:SprayTag3PosX,
Float:SprayTag3PosY,
Float:SprayTag3PosZ,
Float:gzone_minx,
Float:gzone_miny,
Float:gzone_minz,
Float:gzone_maxx,
Float:gzone_maxy,
Float:gzone_maxz
};
new GangZone[GANG_ZONES][GangZonesInfo];
stock GetGangZones() {
new idx=0;
mysql_query( "SELECT * FROM gangzones");
mysql_store_result();
while(mysql_retrieve_row())//lauf durch alle zeilen durch
{
new tmp[128];
mysql_fetch_field_row(tmp, "id");
GangZone[idx][gzone_id] = strval(tmp);
mysql_fetch_field_row(tmp, "zonename");
format(GangZone[idx][gzone_name],50,tmp);
mysql_fetch_field_row(tmp, "ZoneOwner");
format(GangZone[idx][gZoneOwner],50,tmp);
mysql_fetch_field_row(tmp, "ZoneMinX");
GangZone[idx][gzone_minx] = strval(tmp);
idx++;
printf("ID %i | Name %s | Owner %s | ZoneMinX %f",idx,GangZone[gzone_id][gzone_name],GangZone[gzone_id][gZoneOwner],GangZone[gzone_id][gzone_minx]);
}
mysql_free_result();
printf("* Es wurden %i GangZones geladen. *", idx);
return 1;
}
[18:54:14] ID 1 | Name Test1 | Owner gsf | ZoneMinX 0.000000
[18:54:14] ID 2 | Name Test1 | Owner gsf | ZoneMinX 0.000000
[18:54:14] ID 3 | Name Test1 | Owner gsf | ZoneMinX 0.000000
Er lädt leider nur die 1. GangZone aus der Tabelle (also ID 2/3 haben genau das gleiche wie 1 obwohl in der DB was anderes steht)
E: Benutzt wird das MySQL R5 Plugin.
Problem mit dem laden der Gangzonen ..
- tobialvarez
- Geschlossen
- Erledigt
-
-
Du printest den Text nach dem du idx um 1 erhöhst...
Ansonsten sehe ich da keinen Fehler, würde aber trod. noch
if(mysql_num_rows())
vor die while schleife packen.Edit:
GangZone[gzone_id][gzone_name]
Woher hast du die "gzone_id" ?
Wird doch nirgends gesetzt..Musst es dann schon so benutzen:
GangZone[idx][gzone_name]
MfG.
-
stock GetGangZones() {
new idx=0;
mysql_query( "SELECT * FROM gangzones");
mysql_store_result();
if(mysql_num_rows())
{
while(mysql_retrieve_row())//lauf durch alle zeilen durch
{
new tmp[128];
mysql_fetch_field_row(tmp, "id");
GangZone[idx][gzone_id] = strval(tmp);
mysql_fetch_field_row(tmp, "zonename");
format(GangZone[idx][gzone_name],50,tmp);
mysql_fetch_field_row(tmp, "ZoneOwner");
format(GangZone[idx][gZoneOwner],50,tmp);
mysql_fetch_field_row(tmp, "ZoneMinX");
GangZone[idx][gzone_minx] = strval(tmp);
printf("ID %i | Name %s | Owner %s | ZoneMinX %f",idx,GangZone[gzone_id][gzone_name],GangZone[gzone_id][gZoneOwner],GangZone[gzone_id][gzone_minx]);
idx++;
}
}
mysql_free_result();
printf("* Es wurden %i GangZones geladen. *", idx);
return 1;
}
Das Problem tritt weiterhin auf. Die Sache ist das er immer nur die 1. Spalte lädt egal welche ID (Also wenn die Infos von 2 geladen werden sollen stehen da trotzdem die von 1) -
printf("ID %i | Name %s | Owner %s | ZoneMinX %f",idx,GangZone[idx][gzone_name],GangZone[idx][gZoneOwner],GangZone[idx][gzone_minx]);
Und poste mal bitte die MySQL logs.
//Edit:
GangZone[idx][gzone_minx] = floatstr(tmp);
Benutze "floatstr" für die Floats. -
printf("ID %i | Name %s | Owner %s | ZoneMinX %f",idx,GangZone[idx][gzone_name],GangZone[idx][gZoneOwner],GangZone[idx][gzone_minx]);
Und poste mal bitte die MySQL logs.
//Edit:
GangZone[idx][gzone_minx] = floatstr(tmp);
Benutze "floatstr" für die Floats.Das Problem ist behoben, ich bedanke mich
-
breadfish.de
Hat das Thema geschlossen.