Lasse dir wie hier in Kapitel 1.5 beschrieben die Zeile mit dem Fehler im Log ausgeben:
Tipps: Scripting-Probleme richtig erklären
Poste dann die Zeile mit dem Fehler sowie den neu erzeugten Fehlerlog.
Lasse dir wie hier in Kapitel 1.5 beschrieben die Zeile mit dem Fehler im Log ausgeben:
Tipps: Scripting-Probleme richtig erklären
Poste dann die Zeile mit dem Fehler sowie den neu erzeugten Fehlerlog.
weis ich nicht, ich sehe da sowieso nicht durch
Lösche den Log, führe dann das aus was nicht funktioniert, und poste dann den Log nochmal.
sowas nur von mir erstelltes
?
Im enum
numberplate,
Zu
numberplate[32],
Beim Laden wie bereits gesagt:
cInfo[idx][numberplate]=cache_get_field_content(i,"numberplate",cInfo[idx][numberplate], dbhandle, 32);
Zu
cache_get_field_content(i,"numberplate",cInfo[idx][numberplate], dbhandle, 32);
habe aber zu dieses Fraktionscar noch ein Problem und zwar wird nichts im MSQL ertsellt
Gibt dir denn der MySQL Log etwas aus?
Was wird nicht erstellt?
Wie hast du numberplate deklariert (enum) und wie sieht der Code bei dir jetzt aus (ganze Schleife)?
und hier die zeile
Das \ am Ende mach die Zeile zwar leserlich kürzer, allerdings fügt der Compiler das wieder zusammen, was die Zeile wieder für den Compiler zu lang macht.
Daher musst du den String splitten:
format(query, sizeof(query), "UPDATE `FracVehicles` SET `fVehid`='%s', `fPosX`='%f', `fPosY`='%f', `fPosZ`='%f', `fPosA`='%f', `fCol1`='%d', `fCol2`='%d', `fFaction1`='%d' ",
FactionCars[i][fVehid], FactionCars[i][fPos][0], FactionCars[i][fPos][1], FactionCars[i][fPos][2],
FactionCars[i][fPos][3], FactionCars[i][fCol][0], FactionCars[i][fCol][1],FactionCars[i][fFaction][0]);
format(query, sizeof(query), "%s, `fFaction2`='%d', `fFaction3`='%d', `fFaction4`='%d', `fFaction5`='%d', `fSpoiler`='%d', `fHood`='%d', `fRoof`='%d', `fSideskirt`='%s', `fLamps`='%d', `fNitro`='%d' ", string,
FactionCars[i][fFaction][1], FactionCars[i][fFaction][2], FactionCars[i][fFaction][3], FactionCars[i][fFaction][4], FactionCars[i][fTuning][0],
FactionCars[i][fTuning][1], FactionCars[i][fTuning][2], FactionCars[i][fTuning][3], FactionCars[i][fTuning][4], FactionCars[i][fTuning][5]);
format(query, sizeof(query), "%s, `fExhaust`='%d', `fWheel`='%d', `fStereo`='%d', `fHydraulics`='%d', `fFrontBumper`='%d', `fVent1`='%d', `fRearBumper`='%d', `fVent2`='%s', `fPaintjob`='%d', `fPrice`='%d' ", string,
FactionCars[i][fTuning][6], FactionCars[i][fTuning][7], FactionCars[i][fTuning][8], FactionCars[i][fTuning][9], FactionCars[i][fTuning][10],
FactionCars[i][fTuning][11], FactionCars[i][fTuning][12], FactionCars[i][fTuning][13], FactionCars[i][fTuning][14], FactionCars[i][fPrice]);
format(query, sizeof(query), "%s, `fTankart`='%d', `fGesperrt`='%d', `fMotorschaden`='%d', `fSperrpreis`='%d' ", string,
FactionCars[i][fTankart], FactionCars[i][fGesperrt], FactionCars[i][fMotorschaden], FactionCars[i][fSperrpreis]);
format(query, sizeof(query), "%s WHERE `id` = '%d'", string, i);
Alternativ kannst du auch jede Variable in ein extra format schreiben und zusammenfügen, anstatt wie hier immer ein paar. Macht es eventuell leserlicher.
Also so:
format(query, sizeof(query), "UPDATE `FracVehicles` SET ");
format(query, sizeof(query), "%s`fVehid`='%s', ", string, FactionCars[i][fVehid]);
format(query, sizeof(query), "%s`fPosX`='%f', ", string, FactionCars[i][fPos][0]);
format(query, sizeof(query), "%s`fPosY`='%f', ", string, FactionCars[i][fPos][1]);
//...
format(query, sizeof(query), "%s`fSperrpreis`='%d' ", string, FactionCars[i][fSperrpreis]);
format(query, sizeof(query), "%s WHERE `id` = '%d'", string, i);
cache_get_field_content(i,"numberplate",cInfo[idx][numberplate], dbhandle, 32);
Lass dir wie hier in Kapitel 1.5 beschrieben, die Zeile mit dem Fehler ausgeben:
Tipps: Scripting-Probleme richtig erklären
Dann weißt du wo das Problem liegt und kannst dort ebenfalls die Abfrage hinzufügen.
Aktualisiere dein Crashdetect Plugin:
http://forum.sa-mp.com/showthread.php?t=262796
Ich sehe da nicht de Fehler aber vieleicht sieht ihr den Fehler
Da das ALTER TABLE jedes mal aufgerufen wird, wenn der Server gestartet wird, wird jedes mal versucht die Spalten (alle) hinzuzufügen.
Für die bereits existierenden Spalten wird dann natürlich der Fehler ausgegeben.
Daher sollte man das so nicht machen, sondern wie ich beschrieben habe.
mysql_free_result ist nicht mehr notwendig, das kannst du löschen.
cache_get_data gibt es nicht mehr. Nutze cache_get_row_count und cache_get_field_count.
Anstatt cache_get_field_content nutze jetzt cache_get_value_name.
Alle Funktionen findest du hier:
http://wiki.sa-mp.com/wiki/MySQL/R40
Da stand das auch am erster Stelle
Wo hast du das her? In meinem Tutorial steht das nicht an erster Stelle.
Frage: wenn es bald gehen sollte und ich irgendwann eine Zeile dazu schreibe wird sie dann auch übernommen oder muss ich dann die msql Daten Bank leeren?
Der Code erstellt nur die Tabelle einmalig, wenn sie nicht existiert. Wenn du eine Spalte hinzufügen willst, dann trage es im Code ein und füge die Spalte manuell in der Datenbank hinzu.
Die erste Zeile stimmt nicht, der Teil mit der Engine muss in die letzte Zeile.
Vergleiche deinen Code mit dem aus dem Tutorial.
Name und Passwort kannst du auch eintragen.
mysql_format(handle, query,sizeof(query),"SELECT * FROM "#DATENBANKTAG"_gangwar WHERE GangZoneID='%d'",gw); //14701
mysql_pquery(handle,query,"OnQueryFinish","siii",query,_SQL_GANGZONE_INSERT,gw,_:handle); //14702
Entferne die 3306 am Ende.
Außerdem muss die handle so deklariert sein:
new MySQL:handle;
Ja, sowie Passwort und Datenbank vertauschen.
Siehe auch hier:
[jTuT] MySQL R41 (Installation, XAMPP, Verwendung, Bedienung & Registrations-System)
Das fällt weg.
Da die beiden letzten Parameter ebenfalls leer sind, können diese auch weg fallen.
Es fehlt dort am Ende.
,gw,MySqlConnection
sowie das Query vor dem Parameter.
Nimm einfach die Ursprungszeile und mache die Änderung gleich wie in den anderen Zeilen. Das sollte nicht allzu schwer sein.
Zeile 4 hast du falsch abgeändert. Nimm da nochmal die originale Zeile und mache dann die Änderung wie bei den anderen Zeilen.