Was sagt der MySQL Log jetzt?
Beiträge von Jeffry
-
-
-
Nein, kein Problem! Mit dem Code alleine fange ich ja nichts an, ich muss es bei dir am laufen sehen, dann können wir es auch gleich probieren.
Passt es morgen mittag? Ich habe dir eine PN geschrieben, das müssen wir ja nicht hier besprechen.

EDIT:
Problem wurde behoben. Problem war, dass das Feld "id" in der Datenbank "ID" heißt, und die cache-Funktionen eben case-sensitive sind.
Sprich:
id = cache_get_field_content_int(i, "id");
zu:
id = cache_get_field_content_int(i, "ID");Funktioniert nun alles.
-
Bist du in einer Stunde (21:30) noch da? Dann würde ich mir das mal per TeamViewer anschauen.
-
Welcher Dialog wird angezeigt? Der DIALOG_CHANGE_ANY oder der DIALOG_CHANGE_ME?
Wie hast du diese Dialoge definiert? -
Dann ist aller Wahrscheinlichkeit nach eines der Queries das du da hast zu klein (query, query2, query3 oder hauptquery). Erhöhe das mal die Größe.
Außerdem könntest du das auch alles in eins machen, dann sparst du dir Speicher. -
-
public TopBox()
{
mysql_function_query(mycon, "SELECT Level, Name FROM `User` ORDER BY Level DESC LIMIT 1", true, "LoadHightesLevel", "d", "playerid");
return 1;
}
forward LoadHightesLevel(playerid);
public LoadHightesLevel(playerid)
{
new rows, fields, str[30];
cache_get_data(rows, fields);
if(!rows) return 1;
cache_get_field_content(0,"Name",str);
format(str, sizeof(str), "Max.Level: %d, Name:%s", cache_get_field_content_int(0,"Level"), str);
SendClientMessageToAll(ROT,str);
return 1;
}Wir können hier "str" als Namensspeicher nutzen, da es zuvor nicht verwendet wird.
-
Ja, dann musst du im SELECT noch den Name hinzufügen, und im Callback (LoadHightesLevel) noch den Name auslesen.
Versuche dich daran mal. -
Ach, das wurde als enum angelegt, habe ich nicht drauf geachtet. Man darf sich auf nichts verlassen.
forward LoadHightesLevel();
public LoadHightesLevel()
{
new rows, fields, str[30];
cache_get_data(rows, fields);
if(!rows) return 1;
format(str, sizeof(str), "Max.Level: %d", cache_get_field_content_int(0,"Level"));
TextDrawSetString(DeinTextdraw, str);
return 1;
}
Eigentlich reicht es so sowieso, wenn du den Wert sonst nirgends brauchst. -
mysql_function_query(MyConnection, "SELECT Level FROM `Spieler` ORDER BY Level DESC LIMIT 1", true, "LoadHightesLevel", "", "");
und:
forward LoadHightesLevel();
public LoadHightesLevel()
{
new rows, fields, str[30];
cache_get_data(rows, fields);
if(!rows) return 1;
HightesPlayer[PlayerLevel] = cache_get_field_content_int(0,"Level");
format(str, sizeof(str), "Max.Level: %d", HightesPlayer[PlayerLevel]);
TextDrawSetString(DeinTextdraw, str);
return 1;
}So reicht es.
-
stock SaveFraktion()
{
new query[275];
for(new frak=1;frak<MAX_FRAKTIONEN;frak++)
{
format(query,sizeof(query),"UPDATE "#DATENBANK"_fraktionen SET frakmaterial = '%d', frakgeld = '%d', marihuana = '%d', koks = '%d', crystle = '%d', lsd = '%d', gras = '%d' WHERE frakid = '%d'",
FrakInfo[frak][frakmaterial],FrakInfo[frak][frakgeld],FrakInfo[frak][fMarihuana],FrakInfo[frak][fKoks],FrakInfo[frak][fCrystle],FrakInfo[frak][fLSD],FrakInfo[frak][fGras],frak+1);
mysql_function_query(MYSQLVerbindung,query,false,"","");
}
return true;
}
Dann müsste es passen. -
public OnObjectMoved(objectid)
{
for(new i=7;i>0;i--)
{
gate_array[i] = gate_array[i-1];
}
gate_array[0] = objectid;
return 1;
}Somit ist gate_array[0] das zuletzt bewegte Objekt, gate_array[1] das vorletzt bewegte, etc... .
-
format(string, sizeof(string), "%s %s sagt: %s",AdminFarbeF(playerid), sendername, text);
zu:
format(string, sizeof(string), "%s %s {FFFFFF} sagt: %s",AdminFarbeF(playerid), sendername, text); -
Lädst du die Fahrzeuge möglicherweise doppelt?
Also laut dem Log stimmt beim Speichern alles, es wird genau das eine existierende Fahrzeug gespeichert.Hast du auch nur das eine Fahrzeug in der Datenbank, oder warum speichert es nur eins?
-
-
if(strcmp(cmd, "/respawncars", true) == 0 || strcmp(cmd, "/rc", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] < 2)
{
SendClientMessage(playerid, COLOR_GRAD1, "Du hast keine Berechtigung.");
return 1;
}
new bool:unwanted[MAX_VEHICLES];
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerInAnyVehicle(i))
{
unwanted[GetPlayerVehicleID(i)]=true;
}
}
for(new car = 1; car < MAX_VEHICLES; car++)
{
if(!unwanted[car]) SetVehicleToRespawn(car);
}
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "%s hat alle unbesetzten Fahrzeuge respawnt.", sendername);
BroadCast(COLOR_WHITE,string);
}
return 1;
} -
stock AdminFarbeS(playerid)
{
new farbeS[32];
switch(PlayerInfo[playerid][pAdmin])
{
case 0: farbeS = "Schwarz";
case 1: farbeS = "Dunkel-Lila";
case 2: farbeS = "Lila";
case 3: farbeS = "Dunkel-Blau";
case 1337: farbeS = "Hell-Blau";
case 1338: farbeS = "Grau";
case 2000: farbeS = "Türkis";
case 2001: farbeS = "Orange";
case 2002: farbeS = "Rot";
}
return farbeS;
} -
Wie sieht dein Befehl jetzt aus?
Hast du eine mehrzeilige Meldung mit vielen Zahlen im Compiler? -
Debugge das Speichern mal so und poste dann was im Log, wenn du deine Fahrzeuge speicherst und es nicht geht:
Spoiler anzeigen forward SaveAllCars();
public SaveAllCars()
{
printf("Starte SaveAllCars");
new query[512];
for(new i=0; i<MAX_AUTOS; i++)
{
printf("i: %d | Model: %d | Besitzer: %s", i, CarInfo[i][modelID], CarInfo[i][Besitzer]);
if(CarInfo[i][modelID] >= 400 && CarInfo[i][modelID] <= 611)
{
printf("Gekauft: %d", CarInfo[i][c_Gekauft]);
if(CarInfo[i][c_Gekauft] == 0)
{
GetVehiclePos(CarInfo[i][c_vID], CarInfo[i][c_x], CarInfo[i][c_y], CarInfo[i][c_z]);
GetVehicleZAngle(CarInfo[i][c_vID], CarInfo[i][c_a]);
format(query, sizeof(query), "UPDATE Cars SET Besitzer = '%s',ModelID = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosA = '%f', Color1 = '%d', Color2 = '%d',Preis = '%d',Gekauft = '%d', Versicherung = '%d' WHERE ID = '%d'",
CarInfo[i][Besitzer],CarInfo[i][modelID], CarInfo[i][c_x], CarInfo[i][c_y], CarInfo[i][c_z], CarInfo[i][c_a], CarInfo[i][c_color1], CarInfo[i][c_color2],CarInfo[i][c_Preis],CarInfo[i][c_Gekauft], CarInfo[i][c_Versicherung], i);
mysql_tquery(handle, query);
printf("query: %s", query);
SendClientMessageToAll(info, "Nicht gekauft Autos wurden gespeichert!");
}
if(CarInfo[i][c_Gekauft] == 1)
{
new Float:VehPos[4];
GetVehiclePos(CarInfo[i][c_vID],VehPos[0],VehPos[1],VehPos[2]);
GetVehicleZAngle(CarInfo[i][c_vID], VehPos[3]);
format(query, sizeof(query), "UPDATE Cars SET Besitzer = '%s',ModelID = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosA = '%f', Color1 = '%d', Color2 = '%d',Preis = '%d',Gekauft = '%d', Versicherung = '%d' WHERE ID = '%d'",
CarInfo[i][Besitzer],CarInfo[i][modelID], VehPos[0], VehPos[1], VehPos[2], VehPos[3], CarInfo[i][c_color1], CarInfo[i][c_color2],CarInfo[i][c_Preis],CarInfo[i][c_Gekauft],CarInfo[i][c_Versicherung], i);
mysql_tquery(handle, query);
printf("query: %s", query);
SendClientMessageToAll(info, "Gekaufte Autos wurden gespeichert!");
}
}
}
SendClientMessageToAll(info, "Alle Fahrzeuge wurden gespeichert!");
printf("Fertig.");
return 1;
}