Fahrzeugpreis abziehen (Datenbank)

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
  • Hey ich habe das MrMonat Autohaus genommen nun möchte ich das wenn er das Fahrzeug z.B für 27500$ kauft es auch von der Datenbank abzieht mein Code sieht mittlerweile so aus:


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_AUTOHAUS)
    {
    if(response)
    {
    //Autoverkauf
    new id=GetPVarInt(playerid,"buyCarID");
    if(GetPlayerMoney(playerid)<ahCars[id][c_preis])
    {
    SendClientMessage(playerid,DUNKELROT,"Du hast nicht genügend Geld dabei!");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    GivePlayerMoney(playerid,-ahCars[id][c_preis]);
    PlayerInfo[playerid][pMoney]=-c_preis;
    createPlayerCar(playerid,ahCars[id][model],ahInfo[ahCars[id][ah_id]][s_x],ahInfo[ahCars[id][ah_id]][s_y],ahInfo[ahCars[id][ah_id]][s_z],ahInfo[ahCars[id][ah_id]][s_r]);
    SendClientMessage(playerid,DUNKELGRÜN,"Herzlichen Glückwunsch zu deinem neuen Fahrzeug!");
    RemovePlayerFromVehicle(playerid);
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,DUNKELROT,"Also möchtest du das Fahrzeug nicht, kein Problem wir haben noch weitere.");
    }
    return 1;
    }


    Ich hatte 750.000$ nachdem ich den Sultan gekauft habe und gereloggt bin hatte ich -5$ auf der Hand woran liegt das? ?(

  • PlayerInfo[playerid][pMoney]=-c_preis;

    Das muss heißen:


    PlayerInfo[playerid][pMoney] -= c_preis;


    Und das wird dann ganz normal beim relog gespeichert und somit brauchst du nichts direkt in der Datenbank verändern, da dass nach dem Relog automatisch passiert :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Sry nicht richtig hingeschaut, dachte du hast so eine Variable benannt..aber nein, du schreibst da einfach den Namen vom Enum sub rein xD


    Musst es so machen:


    PlayerInfo[playerid][pMoney] -= ahCars[id][c_preis];

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Danke dir nur jetzt habe ich noch ein nicht all zu großes Problem aber stört mich jetzt doch schon ein wenig und zwar wollte ich das AutosOhneMotor ding einbauen so und jetzt sieht es so aus zeige dir einfach alles was ich habe:


    new AutosOhneMotor[] = {509,510,481};


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate==PLAYER_STATE_DRIVER)
    {
    new vID=GetPlayerVehicleID(playerid);
    new vModel=GetVehicleModel(vID);

    for(new i=0; i<sizeof(AutosOhneMotor); i++)
    {
    if(AutosOhneMotor[i]==vModel)continue;
    new tmp_engine,
    tmp_lights,
    tmp_alarm,
    tmp_doors,
    tmp_bonnet,
    tmp_boot,
    tmp_objective;
    //Motor an/ausschalten
    GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
    SetVehicleParamsEx(vID, 1, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
    }
    for(new i=0; i<sizeof(ahCars); i++)
    {
    if(ahCars[i][id_x]!=vID)continue;
    //Verkaufsprozess
    SetPVarInt(playerid,"buyCarID",i);
    new string[256];
    format(string,sizeof(string),"Möchten sie das Fahrzeug für %i$ kaufen?",ahCars[i][c_preis]);
    ShowPlayerDialog(playerid,DIALOG_AUTOHAUS,DIALOG_STYLE_MSGBOX,"Autoverkauf",string,"Ja","Nein");
    break;
    }
    return 1;
    }
    return 1;
    }


    /edit
    Ahso ganz vergessen zu sagen was das Problem ist :D also jetzt ist bei jedem Fahrzeug der Motor sofort an....

  • Brauchst da keine Schleife und keine globale Variable.


    Mach dir am einfachsten eine kurze Funktion für die Übersicht:

    C
    stock hasEngine(vID)
    {
        switch(GetVehicleModel(vID))
        {
    	case 509,510,481: return 0;
        }
        return 1;
    }


    Und dann kannst du es so schreiben:


    //Edit:
    Ja das lag an dieser Zeile:


    Zitat

    if(AutosOhneMotor[ i ]==vModel)continue;

    Richtig wäre:


    if(AutosOhneMotor[i]!=vModel)continue;


    Dennoch würde ich dir meine Version empfehlen ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S