Autohaus Problem

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Tag leute.


    Ich melde mich mit ein paar kleinen Problemen.
    Bin gerade dabei mit Jeffrys Tutorial ein Autohaus zu erstellen.
    Klapt eigentlich alles sehr gut, jedoch hab ich ein paar Problemchen.



    Zu Problem 1:
    Hier beim createcar Befehl sagt er immer das MAX_AUTOS schon erreicht wäre, obwohl es auf 10 gestellt ist und noch garkein Auto existiert.

    Spoiler anzeigen
    ocmd:createcar(playerid, params[])
    {
    // if(GetVehicleModel(MAX_AUTOS-1) != 0) return SendClientMessage(playerid, error, "Es können keine weiteren Fahrzeuge erstellt werden, Limit (MAX_AUTOS) erreicht.");
    new model, color1 = -1, color2 = -1, cPreis;
    if(sscanf(params,"dddd",model,color1, color2,cPreis))return SendClientMessage(playerid,info,"/Createcar [Modellid] [Farbe1] [Farbe2] [Preis]");
    if(model < 400 || model > 611) return SendClientMessage(playerid, error, "Model ID existiert nicht.");
    if(SpielerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, error, "Du bist kein Admin!");
    for(new i=0; i<MAX_AUTOS; i++)
    {
    if(CarInfo[i][c_vID] == 0)
    {
    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);
    format(CarInfo[i][Besitzer], 34, "Niemand");
    CarInfo[i][modelID] = model;
    CarInfo[i][c_x] = x;
    CarInfo[i][c_y] = y;
    CarInfo[i][c_z] = z;
    CarInfo[i][c_a] = a;
    CarInfo[i][c_color1] = color1;
    CarInfo[i][c_color2] = color2;
    CarInfo[i][c_Preis] = cPreis;

    Spoiler anzeigen
    new query[256];
    format(query, sizeof(query), "INSERT INTO Cars (ID, Besitzer, ModelID, PosX, PosY, PosZ, PosA, Color1, Color2, Preis) VALUES ('%s','%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d','%d')",
    i, 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]);
    mysql_tquery(handle, query);
    CarInfo[i][c_vID] = CreateVehicle(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], -1);
    PutPlayerInVehicle(playerid, CarInfo[i][c_vID], 0);
    return SendClientMessage(playerid, erfolg, "Fahrzeug gespeichert.");
    }
    }
    return SendClientMessage(playerid, error, "Limit für Fraktions-Fahrzeuge erreicht.");
    }



    //Edit: Selbst gefixxt! Nurnoch der Createcar buggt ;)
    Das war es erstmal ^^
    Jeffry:


    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    3 Mal editiert, zuletzt von ENEF () aus folgendem Grund: Code erweitert

  • Da sammeln sich wieder neue Probleme.


    Diesmal gibt er mir beim Createcar die Fehlermeldung "Limit für Fraktionsfahrzeuge erreicht!"


    Zweitens, bei meinem Speicher Public wird es so gemacht:


    Ist ein Auto gekauft, spawnt es an seinem letzten Punkt, die Koordinaten werden also gespeichert.
    Ist es nicht gekauft spawnt es da wo der Admin /Carpark gemacht hat.


    Dazu hab ich den Save so gemacht:


    Spoiler anzeigen
    forward SaveAllCars();
    public SaveAllCars()
    {
    new query[512];
    for(new i=0; i<MAX_AUTOS; i++)
    {
    if(CarInfo[i][modelID] >= 400 && CarInfo[i][modelID] <= 611)
    {
    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' 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], i);
    mysql_tquery(handle, query);
    SendClientMessageToAll(info, "Nicht gekauft Autos wurden gespeichert!");
    }
    else 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' 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], i);
    mysql_tquery(handle, query);
    SendClientMessageToAll(info, "Gekaufte Autos wurden gespeichert!");
    }
    printf("query: %s", query);
    /*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' 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], i);
    */
    }
    }
    SendClientMessageToAll(info, "Alle Fahrzeuge wurden gespeichert!");
    return 1;
    }


    Jedoch wird es nur so gespeichert wenn ich bsp ein neues Auto erstelle und das dann Parke.
    Dann bekomme ich die Nachrichten (Jenachdem ob ich es gekauft habe oder nicht)


    falls gekauft: SendClientMessageToAll(info, "Gekaufte Autos wurden gespeichert!");
    falls nicht; SendClientMessageToAll(info, "Nicht gekauft Autos wurden gespeichert!");


    + SendClientMessageToAll(info, "Alle Fahrzeuge wurden gespeichert!");


    Hab ich mehrere Fahrzeuge(jetzt nicht mehr möglich da die Fehlermeldung oben kommt) gekauft kommen dann halt beide + Alle fahrzeuge gespeichert.


    Das soll ja nicht so sein, es sollen immer alle gespeichert werden muss ich dann das else weg lassen?
    Weil wenn ich eins gekauft habe und eins nicht, wird entweder nur das nicht gekaufte gespeichert, das gekaufte oder "Alle fahrzeuge gespeichert" aber es wird im endeffekt nichts gesavet.
    Sorry wenn ich schlecht erkläre.


    Noch dazu:
    Nach einem GMX kann ich keine Fahrzeuge mehr löschen / Parken oder sonstiges da kommt immer die Meldung
    if(vid <= 0) return SendClientMessage(playerid, error, "Vehicle-ID ist kein kaufbares Auto.");
    oder
    SendClientMessage(playerid, error, "Dieses Fahrzeug kann nicht geparkt werden.");

    Spoiler anzeigen


    ocmd:deletecar(playerid, params[])
    {
    new vid = GetPlayerVehicleID(playerid);
    //if(sscanf(params,"d",vid)) return SendClientMessage(playerid, error, "Nutze: /ffloeschen [Vehicle ID]");
    if(vid <= 0) return SendClientMessage(playerid, error, "Vehicle-ID ist kein kaufbares Auto.");
    for(new i=0; i<MAX_AUTOS; i++)
    {
    if(CarInfo[i][c_vID] == vid)
    {
    format(CarInfo[i][Besitzer], 34, "");
    CarInfo[i][modelID] = 0;
    CarInfo[i][c_x] = 0.0;
    CarInfo[i][c_y] = 0.0;
    CarInfo[i][c_z] = 0.0;
    CarInfo[i][c_a] = 0.0;
    CarInfo[i][c_color1] = 0;
    CarInfo[i][c_color2] = 0;
    CarInfo[i][c_Preis] = -1;
    CarInfo[i][c_Gekauft] = -1;
    new query[128];
    format(query, sizeof(query), "DELETE FROM Cars WHERE ID = '%d'", i);
    mysql_tquery(handle, query);
    DestroyVehicle(CarInfo[i][c_vID]);
    CarInfo[i][c_vID] = 0;
    return SendClientMessage(playerid, info, "Fahrzeug gelöscht.");
    }
    }
    return SendClientMessage(playerid, error, "Vehicle-ID ist kein Fraktions-Fahrzeug.");
    }
    ocmd:carpark(playerid)
    {
    if(SpielerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, error, "Du bist kein Admin!");
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, error, "Du bist in keinem Fahrzeug.");
    new vehicleid = GetPlayerVehicleID(playerid);
    if(SaveCarCheck(vehicleid)) return SendClientMessage(playerid, erfolg, "Fahrzeug geparkt.");
    else return SendClientMessage(playerid, error, "Dieses Fahrzeug kann nicht geparkt werden.");
    }


    Und das ist ziemlich komisch.


    Jeffry:


    Jetzt bist du gefragt, diesmal hab ich mich sehr stark an deinem Tutorial orientiert ^^


    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Für den ersten Fehler:
    Die Schleife so ändern:
    if(CarInfo[i][c_vID] != 0)continue;


    Weil bei dir würde er anfangen für i=0
    Dann würde er nur Auto 0 abfragen und wenn das Fahrzeug 0 schon vorhanden ist würde er die Schleife abbrechen und nicht mit i=1 i=2 ... weitermachen


    Deshalb wenn die ID nicht gleich 0 ist continue

  • Meinste jetzt bei "Createcar"?
    Das war so richtig, hatte nur einen kleinen Fehler drinne :D


    Aber Danke dir trotzdem, wollte es grad editieren ^^


    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Problem 1:
    Poste den Code dazu.


    Problem 2:
    Das ist normal, du gibst die Nachricht ja jedes mal aus, wenn ein Fahrzeug gespeichert wurde. Da du alle Fahrzeuge speicherst, bekommst du eine Meldung für jedes Fahrzeug.


    Problem 3:
    Wir lädst du die Fahrzeuge aus der Datenbank?



    => Bitte poste ein Problem nach dem anderen und nicht alles auf einmal, das ist viel zu viel und ein viel zu großes Durcheinander. Also fange bei Problem 1 an, wenn das erledigt ist, mache mit Problem 2 weiter.

  • Hallo Jeffry: , danke für deine Antwort.


    Fangen wir jetzt erstmal damit an, dass die Positionen des Fahrzeuges nur gespeichert wird, wenn man in der Sitzung(Ich mache /Createcar... dann funktioniert alles, nach einem GMX geht nichts mehr) gesavet wird.
    Wie du ja gelesen hast, hab ich es so gemacht das bei gekauften Autos die letzte Postion gespeichert werden soll und bei einem kaufbaren Auto die Postion immer gleich bleiben soll, also da wo ich zuletzt /carpark gemacht habe:


    Spoiler anzeigen
    forward SaveAllCars();
    public SaveAllCars()
    {
    new query[512];
    for(new i=0; i<MAX_AUTOS; i++)
    {
    if(CarInfo[i][modelID] >= 400 && CarInfo[i][modelID] <= 611)
    {
    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' 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], i);
    mysql_tquery(handle, 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' 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], i);
    mysql_tquery(handle, query);
    SendClientMessageToAll(info, "Gekaufte Autos wurden gespeichert!");
    }
    printf("query: %s", query);
    /*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' 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], i);
    */
    }
    }
    SendClientMessageToAll(info, "Alle Fahrzeuge wurden gespeichert!");
    return 1;
    }


    SaveAllCars wird jede Minute bei OnGameModeInit aufgerufen.


    Sollte ich nicht eigentlich 2 Nachrichten bekommen? ich bekomme ja immer nur "Alle Fahrzeuge gespeichert" obwohl eigentlich garnichts gespeichert wurde.


    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Hi Jeffry:


    Also den Code zum Laden:


    LoadCars_Data
    forward LoadCars_Data();
    public LoadCars_Data()
    {

    LoadCars_Data
    new rows;
    rows = cache_num_rows();
    for(new i=0; i<rows; i++)
    {
    cache_get_field_content(i, "Besitzer", CarInfo[i][Besitzer],handle,34);
    CarInfo[i][modelID] = cache_get_field_content_int(i, "ModelID");
    CarInfo[i][c_x] = cache_get_field_content_float(i, "PosX");
    CarInfo[i][c_y] = cache_get_field_content_float(i, "PosY");
    CarInfo[i][c_z] = cache_get_field_content_float(i, "PosZ");
    CarInfo[i][c_a] = cache_get_field_content_float(i, "PosA");
    CarInfo[i][c_color1] = cache_get_field_content_int(i, "Color1");
    CarInfo[i][c_color2] = cache_get_field_content_int(i, "Color2");
    CarInfo[i][c_Preis] = cache_get_field_content_int(i, "Preis");
    CarInfo[i][c_Gekauft] = cache_get_field_content_int(i, "Gekauft");

    LoadCars_Data
    if(CarInfo[i][modelID] >= 400 && CarInfo[i][modelID] <= 611)
    {
    new text[64];
    CarInfo[i][modelID] = CreateVehicle(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], -1);
    format(text, sizeof(text), "Besitzer: %s\nKaufpreis: %d\nReparier Kosten: %d",CarInfo[i][Besitzer],CarInfo[i][c_Preis], CarInfo[i][c_Preis] / 10);
    CarInfo[i][Carlable] = Create3DTextLabel(text,0x0FFF00FF,CarInfo[i][c_x], CarInfo[i][c_y], CarInfo[i][c_z],20.0,0,1);
    Attach3DTextLabelToVehicle(CarInfo[i][Carlable],CarInfo[i][modelID], 0.0, 0.0, 2.0);
    }
    else
    {
    printf("[Error] Model-ID %d existiert nicht (ID: %d).", CarInfo[i][modelID], i);
    }
    if(GetVehicleModel(MAX_VEHICLES-1) != 0) return print("Es können keine weiteren Fahrzeuge geladen werden, Limit (MAX_VEHICLES) erreicht.");

    LoadCars_Data
    if(i == MAX_AUTOS-1) return print("Es können keine weiteren Fahrzeuge geladen werden, Limit (MAX_AUTOS) erreicht.");
    }
    return 1;
    }


    Createcar
    ocmd:createcar(playerid, params[])
    {
    if(GetVehicleModel(MAX_VEHICLES-1) != 0) return SendClientMessage(playerid, error, "Es können keine weiteren Fahrzeuge erstellt werden, Limit (MAX_AUTOS) erreicht.");
    new model, color1 = -1, color2 = -1, cPreis;
    if(sscanf(params,"dddd",model,color1, color2,cPreis))return SendClientMessage(playerid,info,"/Createcar [Modellid] [Farbe1] [Farbe2] [Preis]");
    if(model < 400 || model > 611) return SendClientMessage(playerid, error, "Model ID existiert nicht.");
    if(SpielerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, error, "Du bist kein Admin!");
    for(new i=0; i<MAX_AUTOS; i++)
    {
    if(CarInfo[i][c_vID] == 0)
    {
    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);
    format(CarInfo[i][Besitzer], 34, "Niemand");
    CarInfo[i][modelID] = model;
    CarInfo[i][c_x] = x;
    CarInfo[i][c_y] = y;
    CarInfo[i][c_z] = z;
    CarInfo[i][c_a] = a;
    CarInfo[i][c_color1] = color1;
    CarInfo[i][c_color2] = color2;
    CarInfo[i][c_Preis] = cPreis;
    CarInfo[i][c_Gekauft] = 0;

    Createcar
    new query[256];
    format(query, sizeof(query), "INSERT INTO Cars (ID, Besitzer, ModelID, PosX, PosY, PosZ, PosA, Color1, Color2, Preis, Gekauft) VALUES ('%d','%s', '%d', '%f', '%f', '%f', '%f', '%d', '%d','%d','%d')",
    i, 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]);
    mysql_tquery(handle, query);
    CarInfo[i][c_vID] = CreateVehicle(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], -1);
    PutPlayerInVehicle(playerid, CarInfo[i][c_vID], 0);
    SaveAllCars();
    return SendClientMessage(playerid, erfolg, "Fahrzeug gespeichert.");
    }
    }
    return SendClientMessage(playerid, error, "Limit für Fraktions-Fahrzeuge erreicht.");
    }


    Irgendwie werden glaub ich einfach die ID's getauscht so dass das Auto kein Kaufbares Auto mehr ist, deswegen wird es bestimmt nicht mehr richtig gespeichert und man kann es ja auch nicht mehr Löschen/Parken..


    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Ok, dann debugge das mal so:

    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", i, CarInfo[i][modelID]);
    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' 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], i);
    mysql_tquery(handle, 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' 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], i);
    mysql_tquery(handle, query);
    SendClientMessageToAll(info, "Gekaufte Autos wurden gespeichert!");
    }
    printf("query: %s", query);
    /*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' 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], i);
    */
    }
    }
    SendClientMessageToAll(info, "Alle Fahrzeuge wurden gespeichert!");
    printf("Fertig.");
    return 1;
    }

    Was steht dann im Log, wenn du es speichern willst und es nicht geht?

  • Hi,


    gespeichert wird alles so wie es aussieht 8|


    SQL
    [19:48:58] Starte SaveAllCars[19:48:58] i: 0 | Model: 1[19:48:58] i: 1 | Model: 2[19:48:58] i: 2 | Model: 3[19:48:58] i: 3 | Model: 4[19:48:58] i: 4 | Model: 5[19:48:58] i: 5 | Model: 0[19:48:58] i: 6 | Model: 0[19:48:58] i: 7 | Model: 0[19:48:58] i: 8 | Model: 0[19:48:58] i: 9 | Model: 0[19:48:58] Fertig.


    Ist Model nicht eigentlich bsp Infernus 411?


    Jeffry:


    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Ja, eben.
    CarInfo[i][modelID] = CreateVehicle(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], -1);
    zu:
    CarInfo[i][c_vID] = CreateVehicle(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], -1);


    Beim Laden der Fahrzeuge.

  • uppss.. Danke :whistling:


    Die Log sagt jetzt:

    SQL
    [19:59:46] RCON (In-Game): Player #0 (iCarus) has logged in.[19:59:48] RCON (In-Game): Player [iCarus] sent command: gmx[19:59:48] query: UPDATE accounts SET Name = 'iCarus', Level = '6', Geld = '628037', Kills = '0', Tode = '15', Admin = '6', Banned = '0', Leader = '1', Member = '0', Team = '1', Rank = '6', Duty = '0', Skin = '303', Health = '0.000000', xKord = '-1986.960937', yKord = '140.376754', zKord = '27.539062', Interior = '0', Carlic = '0', Bikelic = '0', Flylic = '0', Bootlic = '0', LKWlic = '0', Konto = '1', Kontostand = '313675', Beantragt = '0', Pin = '1229', Kontonummer = '2006', Abholen = '0', `Alter` = '18', Geschlecht = 'Maennlich', Levelpunkte = '19', Payday = '5', Herkunft = 'Baden-Wuerttemberg', Verheiratetmit = 'Niemand', Telefonnummer = '0', Tutorial = '1', Dutyskin = '283', Tot = '0', Totskin = '162', Wanteds = '0', Knast = '0', Knastzeit = '-1428515988', KnastzeitBis = '0', Knastskin = '0', Sterne = '0', Verbrechen = '0', wTot = '0', Inhaftiert = '0', tWerbung = '1', Perso = '1', Persobereit = '2', vWelt = '0', Premium = '1', Premzeit = '0', Togooc = '0', Job = '0' WHERE Name = 'iCarus'[19:59:48] Starte SaveAllCars[19:59:48] i: 0 | Model: 0[19:59:48] i: 1 | Model: 560[19:59:48] Gekauft: 1[19:59:48] query: UPDATE Cars SET Besitzer = 'iCarus',ModelID = '560', PosX = '-1985.284545', PosY = '140.771575', PosZ = '27.392204', PosA = '0.643158', Color1 = '1', Color2 = '1',Preis = '1',Gekauft  = '1' WHERE ID = '1'[19:59:48] i: 2 | Model: 560[19:59:48] Gekauft: 0[19:59:48] query: UPDATE Cars SET Besitzer = 'Niemand',ModelID = '560', PosX = '-1991.910034', PosY = '127.962997', PosZ = '27.250600', PosA = '8.880020', Color1 = '1', Color2 = '1',Preis = '1',Gekauft  = '0' WHERE ID = '2'[19:59:48] i: 3 | Model: 560[19:59:48] Gekauft: 0[19:59:48] query: UPDATE Cars SET Besitzer = 'Niemand',ModelID = '560', PosX = '-1991.657348', PosY = '143.926788', PosZ = '27.243560', PosA = '332.910919', Color1 = '1', Color2 = '1',Preis = '1',Gekauft  = '0' WHERE ID = '3'[19:59:48] i: 4 | Model: 0[19:59:48] i: 5 | Model: 0[19:59:48] i: 6 | Model: 0[19:59:48] i: 7 | Model: 0[19:59:48] i: 8 | Model: 0[19:59:48] i: 9 | Model: 0[19:59:48] Fertig.


    So, jetzt kurz zum /buycar, ich kann ein Auto zwar kaufen, irgendwie wird es halt erst nach einem GMX in der Datenbank eingetragen, egal aufjedenfall bekomm ich die Nachricht:
    Dieses Auto steht nicht zum Verkauf
    Und trotzdem noch die Nachricht das ich es gekauft habe.
    Soll ja so sein das wenn dieses Auto kein Kaufauto ist soll es diese Nachricht zeigen oder wenn es schon jemand gehört


    Spoiler anzeigen
    ocmd:buycar(playerid, params[])
    { //if(CarInfo[i][c_vID] != 0)continue;
    new vehicleid = GetPlayerVehicleID(playerid);
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, error, "Du bist in keinem Fahrzeug");
    for(new i=0; i<MAX_AUTOS; i++)
    {
    if(SpielerInfo[playerid][pGeld] < CarInfo[i][c_Preis]) return SendClientMessage(playerid, error, "Du hast nicht genug Geld!");
    if(CarInfo[i][c_Gekauft] == 0)
    {
    format(CarInfo[i][Besitzer], 34, "%s",SpielerName(playerid));
    CarInfo[i][c_Gekauft] = 1;
    GivePlayerMoney(playerid, -CarInfo[i][c_Preis]);
    break;
    }
    else {
    SendClientMessage(playerid, error, "Dieses Auto steht nicht zum Verkauf!");
    }
    }
    SendClientMessage(playerid, erfolg, "Herzlichen Glückwunsch, du hast dieses Auto gekauft!");
    return 1;
    }


    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • ocmd:buycar(playerid, params[])
    {
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, error, "Du bist in keinem Fahrzeug");
    new vehicleid = GetPlayerVehicleID(playerid);
    for(new i=0; i<MAX_AUTOS; i++)
    {
    if(CarInfo[i][c_vID] != vehicleid) continue;
    if(CarInfo[i][c_Gekauft] == 0)
    {
    if(SpielerInfo[playerid][pGeld] < CarInfo[i][c_Preis]) return SendClientMessage(playerid, error, "Du hast nicht genug Geld!");
    format(CarInfo[i][Besitzer], 34, "%s",SpielerName(playerid));
    CarInfo[i][c_Gekauft] = 1;
    GivePlayerMoney(playerid, -CarInfo[i][c_Preis]);
    SendClientMessage(playerid, erfolg, "Herzlichen Glückwunsch, du hast dieses Auto gekauft!");
    return 1;
    }
    else
    {
    SendClientMessage(playerid, error, "Dieses Auto steht nicht zum Verkauf!");
    return 1;
    }
    }
    return SendClientMessage(playerid, error, "Du bist in keinem Fahrzeug.");
    }

  • Soweit passt alles.


    Vielen dank Jeffry!


    Sobald ich irgendwas neues habe, oder Hilfe brauche Editiere ich den Beitrag.


    Bis dahin Erledigt!


    Mit freundlichen Grüßen


    //Edit:
    Es ist mir gerade aufgefallen, dass das Fahrzeug mit ID 0 nie gelöscht wird, weder bei Deletecar oder bei OnVehicleDeath.


    Erstelle ich ein neues, wird dieses dann bsp. wenn es zerstört wird gelöscht aber ID 0 bleibt.
    hier mal bsp. mein /Deletecar:

    Spoiler anzeigen
    ocmd:deletecar(playerid, params[])
    {
    new vid = GetPlayerVehicleID(playerid);
    //if(sscanf(params,"d",vid)) return SendClientMessage(playerid, error, "Nutze: /ffloeschen [Vehicle ID]");
    for(new i=0; i<MAX_AUTOS; i++)
    {
    if(CarInfo[i][c_vID] == vid)
    {
    format(CarInfo[i][Besitzer], 34, "");
    CarInfo[i][modelID] = 0;
    CarInfo[i][c_x] = 0.0;
    CarInfo[i][c_y] = 0.0;
    CarInfo[i][c_z] = 0.0;
    CarInfo[i][c_a] = 0.0;
    CarInfo[i][c_color1] = 0;
    CarInfo[i][c_color2] = 0;
    CarInfo[i][c_Preis] = -1;
    CarInfo[i][c_Gekauft] = -1;
    new query[128];
    format(query, sizeof(query), "DELETE FROM Cars WHERE ID = '%d'", i);
    mysql_tquery(handle, query);
    DestroyVehicle(CarInfo[i][c_vID]);
    CarInfo[i][c_vID] = 0;
    return SendClientMessage(playerid, info, "Fahrzeug gelöscht.");
    }
    }
    return SendClientMessage(playerid, error, "Vehicle-ID ist kein Fraktions-Fahrzeug.");
    } Jeffry:


    Und genau so lösch ich die Autos bei OnVehicleDeath



    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    Einmal editiert, zuletzt von ENEF ()