Hallo Leute
Ich hab da mal nen Problem, und zwar habe ich da drei Funktionen die auf MySql geskriptet wurden, ich habe bereits einige tuts durch, und soweiter
aber es klappt einfach nicht.
Funktion Speichern, die Datenbank ist vorhanden, die Tabelle wirt erstellt wenn sie nicht da ist. Ich habe selber schon probiert, aber ich bekomme mysql oder sqlite einfach nich inne birne^^ schnall ich nicht, daher brauch ich eure Hilfe
das ist die Original Save funktion
public SaveGangZone()
{
new sql[600];
if(sBlitzerNum != 0)
{
for(new idx=0;idx < GangZoneNum; idx ++)
{
if(GangZone[idx][gzAk] == 1)
{
if(GangZone[idx][gzId] == 0)
{
format(sql,sizeof(sql),"INSERT INTO `Gangzones` (`Name`, `PosMinX`, `PosMaxX`) VALUES ('%s', '%f', '%f');",
GangZone[idx][gzName],
GangZone[idx][gzPosMinX],
GangZone[idx][gzPosMaxX]);
mysql_query_fix(sql);
new str[20];
format(sql,sizeof(sql),"SELECT `id` FROM `Gangzones` WHERE `Name` = '%s' ORDER BY `id` DESC",GangZone[idx][gzName],GangZone[idx][gzPosMinX],GangZone[idx][gzPosMaxX]);
mysql_query_fix(sql);
mysql_store_result_fix();
mysql_retrieve_row_fix();
mysql_fetch_field_row_f(str,"id");
GangZone[idx][gzId] = strval(str);
mysql_free_result_fix();
}
UpdateFloat("Gangzones","PosMinX",GangZone[idx][gzPosMinX],GangZone[idx][gzId]);
UpdateFloat("Gangzones","PosMinY",GangZone[idx][gzPosMinY],GangZone[idx][gzId]);
UpdateFloat("Gangzones","PosMaxX",GangZone[idx][gzPosMaxX],GangZone[idx][gzId]);
UpdateFloat("Gangzones","PosMaxY",GangZone[idx][gzPosMaxY],GangZone[idx][gzId]);
UpdateFloat("Gangzones","PosZ",GangZone[idx][gzPosZ],GangZone[idx][gzId]);
UpdateInt("Gangzones","Gangid",GangZone[idx][gzGang],GangZone[idx][gzId]);
UpdateInt("Gangzones","Time",GangZone[idx][gzTime],GangZone[idx][gzId]);
UpdateInt("Gangzones","LastAttack",GangZone[idx][gzLastAttack],GangZone[idx][gzId]);
}
}
}
return 1;
}
Als ich versucht habe das umzuschreiben, mit hilfe eines Tut's wurde zwar gespeichert, aber es wurde doppelt und dreifach gespeichert, so das dann anstadt einem eintrag dann auf einmal 5 von der gleichen sorte da waren
Das Nächste ist das Laden, dadrann habe ich mich noch nicht versucht, da ich beim Speichern schon versagt hatte
Hier die Funktion
public LoadGangZone()
{
new arrCoords[10][64];
new strFromFile2[256];
new sql[250];
for(new i=0; i<sizeof(GangZone);i++)
{
if(GangZone[i][gzAk]==1){DestroyGangZone(i);}
GangZone[i][gzAk]=0;
GangZone[i][gzId]=0;
}
format(sql,sizeof(sql),"SELECT * FROM `Gangzones`");
mysql_query_fix(sql);
mysql_store_result_fix();
if(mysql_num_rows_fix() != 0)
{
new idx = 0;
while(mysql_fetch_row_format_f(strFromFile2,","))
{
split(strFromFile2, arrCoords, ',');
GangZone[idx][gzId] = strval(arrCoords[0]);
strmid(GangZone[idx][gzName], arrCoords[1], 0, strlen(arrCoords[1]), 255);
GangZone[idx][gzPosMinX] = floatstr(arrCoords[2]);
GangZone[idx][gzPosMinY] = floatstr(arrCoords[3]);
GangZone[idx][gzPosMaxX] = floatstr(arrCoords[4]);
GangZone[idx][gzPosMaxY] = floatstr(arrCoords[5]);
GangZone[idx][gzPosZ] = floatstr(arrCoords[6]);
GangZone[idx][gzGang] = strval(arrCoords[7]);
if(!IsFrakAGang(GangZone[idx][gzGang])){GangZone[idx][gzGang] = 0;}
GangZone[idx][gzTime] = strval(arrCoords[8]);
GangZone[idx][gzLastAttack] = strval(arrCoords[9]);
GangZone[idx][gzAk] = 1;
GangZone[idx][gzAttacker] = 0;
CreateGangZone(idx);
idx++;
}
GangZoneNum=idx;
}
mysql_free_result_fix();
return 1;
}
Das Dritte währe das Löschen eines Eintrages
Hier die Funktion
stock DeleteGangZone(gzid)
{
if(GangZone[gzid][gzAk])
{
new sql[250];
DestroyGangZone(gzid);
GangZone[gzid][gzAk] = 0;
format(sql,sizeof(sql),"DELETE FROM `Gangzones` WHERE `id` = %d",GangZone[gzid][gzId]);
mysql_query_fix(sql);
GangZone[gzid][gzId] = 0;
}
}
Würde mich sehr Freuen wenn das Jemand mit Ahnung so umschreibt das es auch klappt, wie gesagt ich habe keine ahnung von Mysql oder sqlite daher wende ich mich jetz an euch
Villeicht giebs nen Pro unter euch der mir das umschreiben kann
Und wenn Fragen kommen, warum nicht auf Mysql umsteigen, klare antwort, verstehe ich nicht^^