Probleme beim Freikauf

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
  • Ich kann derzeit ein Fahrzeug mit diesem Befehl freikaufen. Sobald ich dieses aber freigekauft habe und es ein 2tes Fahrzeug gibt, dann kann ich dieses nicht freikaufen da es angeblich nicht gefunden wird.




    ocmd:freikaufen(playerid)
    {
    if(PlayerInfo[playerid][pLoggedIn]==false)return 1;
    new string[128];
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][besitzer] == PlayerInfo[playerid][p_id])
    {
    if(cInfo[i][c_gespeert] == 1)
    {
    format(string,sizeof(string),"%s %d \n",string,cInfo[i][model]);
    }
    else
    {
    return SendClientMessage(playerid,COLOR_RED,"Keine gefunden");
    }
    }
    }
    ShowPlayerDialog(playerid,DIALOG_CARFREIKAUFEN_AUSWAHL,DIALOG_STYLE_LIST,"Verwahrstelle",string,"Auswählen","Abbruch");
    return 1;
    }

  • Sobald c_gesperrt nicht gleich 1 ist, brichst du durch das return auch die Schleife ab. Entferne Zeile 13 - 16. Dann, außerhalb der Schleife überprüfst du einfach ob die Variable string per strlen leer ist -> dann zeigst du die Fehlermeldung an.


  • ocmd:freikaufen(playerid)
    {
    if(PlayerInfo[playerid][pLoggedIn]==false)return 1;
    new string[128],var;
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][besitzer] == PlayerInfo[playerid][p_id])
    {
    if(cInfo[i][c_gespeert] == 1)
    {
    format(string,sizeof(string),"%s %d \n",string,cInfo[i][model]);
    var++;
    }
    }
    }
    if(var>0)return ShowPlayerDialog(playerid,DIALOG_CARFREIKAUFEN_AUSWAHL,DIALOG_STYLE_LIST,"Verwahrstelle",string,"Auswählen","Abbruch");
    return SendClientMessage(playerid,COLOR_RED,"Keine gefunden");
    }

  • ocmd:freikaufen(playerid){ if(PlayerInfo[playerid][pLoggedIn]==false)return 1; new string[128],var; for(new i=0; i<sizeof(cInfo); i++) { if(cInfo[i][besitzer] == PlayerInfo[playerid][p_id]) { if(cInfo[i][c_gespeert] == 1) { format(string,sizeof(string),"%s %d \n",string,cInfo[i][model]); var++; } } } if(var>0)return ShowPlayerDialog(playerid,DIALOG_CARFREIKAUFEN_AUSWAHL,DIALOG_STYLE_LIST,"Verwahrstelle",string,"Auswählen","Abbruch"); return SendClientMessage(playerid,COLOR_RED,"Keine gefunden");}

    Nope



    Sobald c_gesperrt nicht gleich 1 ist, brichst du durch das return auch die Schleife ab. Entferne Zeile 13 - 16. Dann, außerhalb der Schleife überprüfst du einfach ob die Variable string per strlen leer ist -> dann zeigst du die Fehlermeldung an.

    Leider auch nicht.


    Bei beiden Befehlen kann ich das 2 Fahrzeug immer wieder und wieder erstellen

  • Was meinst du mit erstellen? Die dargestellte Problematik, zumindestens mit der Anzeige, sollte damit behoben sein. Verstehe deine Problematik gerade nicht, kannst du die näher erläutern? Sollten Probleme beim Freikaufen entstehen, brauchen wir auch sämtlichen Code unter OnDialogResponse innerhalb der dialogid Abfrage zu DIALOG_CARFREIKAUFEN_AUSWAHL.

  • Ich habe mal einen Youtube Link angehängt da es leichter zu verstehen ist als meine Beschreibung. Zuvor befanden sich keine Fahrzeuge in der Verwahrstelle. Weder von anderen Spielern noch von mir. Erst als ich "/abstellen" eingegeben habe.


    Externer Inhalt youtu.be
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Hier hinzu die Codes

    Einmal editiert, zuletzt von robbi2304 ()

  • Okay, was mir jetzt so auffällt:

    • In deiner Abfrage in Zeile 7 musst du noch zusätzlich abfragen, ob das Fahrzeug gesperrt ist bzw. in deinem Fall ob es nicht gesperrt ist.
    • Zeile 25 sendest du einen Query und setzt c_gesperrt auf 1, das ist sicherlich falsch oder?
    • Zeile 27 ist theoretisch unnötig, da du in Zeile 23 den Wert auf 0 setzt und es in keinem Fall einen anderen Wert als 0 haben kann.
    • In Zeile 16 muss der Platzhalter von %s zu %d, da es eine Zahl ist.

    Denke Punkt 1 wird dein Problem lösen

  • Sorry für die Einrückung, klappt bei mir irgendwie nicht wirklich.

  • Super das klappt schonmal. Ein kleines Problem habe ich nun noch. Sobald die Fahrzeuge freigekauft wurden, ich in diese einsteige und ein wenig fahre und das Fahrzeug dann verlasse spawnt es sofort wieder.

    Der letzte Parameter bei CreateVehicle() gibt den respawn delay in Sekunden an. Du hast ihn auf 1, ergo respawnt das Fahrzeug nach einer Sekunde. Entweder die Zeit beliebig hoch stellen oder auf -1, dann respawnen die Fahrzeuge nicht.