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.

    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.

    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.

    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;
    }

    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;
    }