Brauche Hilfe mit Dialog

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
  • Jup Hier
    case DIALOG_TAXIPICE:
    {
    if (!response)
    RemovePlayerFromVehicle(playerid); // Den Spieler aus dem Fahrzeug werfen, wenn er abbrechen drückt
    else
    {
    new taxifare = strval(inputtext);
    if (taxifare > 150 || taxifare < 50) // Ein maximales und minimales Limit für den Preis?
    {
    // Der Spieler kann es nochmal versuchen:
    ShowPlayerDialog(playerid, DIALOG_TAXIPICE, DIALOG_STYLE_INPUT, "{FFFF00}Taxi - Preis festlegen", "{FFFFFF}Lege den Preis für die Taxifahrt fest:", "Ok", "Abbrechen");
    return SCM(playerid, 0xFF0000FF, "[TAXI] Der Preis muss zwischen 50 und 150$ liegen.");
    }



    SetPVarInt(playerid, "taxifare", taxifare);
    new string[128],vehicleid = GetPlayerVehicleID(playerid);
    Spieler[playerid][pTaxiDuty] = 1;
    PlayerTextDrawShow(playerid,TAXOdraw[playerid][1]);
    format(string,sizeof(string),"Dienstpreis: %i$",taxifare);
    PlayerTextDrawSetString(playerid,TAXOdraw[playerid][1],string);
    format(string,sizeof(string),"Taxifahrer/in %s ist im Dienst. Kosten %i$",SpielerName(playerid),taxifare);
    SCMALL(SYSTEMGELB,string);
    VehicleOnDuty[GetPlayerVehicleID(playerid)] = true;
    format(string,sizeof(string),"San Andreas Taxi \nTaxifahrer/in: %s\nDienstpreis: %i$",SpielerName(playerid),taxifare);
    UpdateDynamic3DTextLabelText(vFahrzeug[vehicleid][VehText], TAXIFARBESYSTEM, string);
    PlayerTextDrawShow(playerid,TAXOdraw[playerid][0]);
    PlayerTextDrawSetString(playerid,TAXOdraw[playerid][0],"Frei...");
    PlayerTextDrawShow(playerid,TAXOdraw[playerid][2]);
    PlayerTextDrawSetString(playerid,TAXOdraw[playerid][2],"Frei...");
    PlayerTextDrawShow(playerid,TAXOdraw[playerid][3]);
    PlayerTextDrawSetString(playerid,TAXOdraw[playerid][3],"Frei...");
    format(string, sizeof(string), "[TAXI] Du hast den Preis auf %d$ festgelegt.", taxifare);
    return SCM(playerid, 0xFFFF00FF,string);
    }
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Na pTaxiDuty soll ja ein Wert, wahrscheinlich in einem Enum sein oder zumindest definiert, als Index über den man auf das Array zugreift. Wenn du das nicht definiert hast, würde der Compiler einen Fehler ausgeben.

  • Dann weiß ich auch nicht weiter, wenn du die Variable beim Beantworten des Dialogs auf 1 setzt, danach nirgendwo auf 0 setzt und bei der Abfrage der Variable aber trotzdem wieder false kommt. Ich würde dir empfehlen, nochmal deine Gedanken zu ordnen, wie du es eigentlich haben willst und dann Schritt für Schritt nochmal die Funktionen und Variablen die gesetzt werden müssen durchzugehen.

  • Da du mir zwei Nachrichten diesbezüglich geschrieben hast:
    Was @Madd92 schreibt ist korrekt.



    Da du das pTaxiDuty auf 1 setzt, wenn der Preis eingegeben wurde, muss die Abfrage auch funktionieren, wenn du erneut in das Taxi einsteigst.
    Dies klappt allerdings nicht, wenn du beim Aussteigen das pTaxiDuty auf 0 setzt. Suche danach und entferne den entsprechenden Code.


    Du kannst vor der Abfrage auch prüfen, welchen Wert das pTaxiDuty hat. Solange es dort 0 ist, wird der Dialog angezeigt.
    if(IsVehicleATaxi(vehicleid))
    {
    if(Spieler[playerid][pJob] != 17)
    {
    TextDrawShowForPlayer(playerid,InfoSign);
    PlayerTextDrawSetString(playerid,INFOdraw[playerid][2],"~r~Info:~w~~n~Du besitzt nicht den jeweiligen Job.");
    PlayerTextDrawShow(playerid,INFOdraw[playerid][2]);
    SetTimerEx("HideInfoBox",3000,0,"i",playerid);
    return RemovePlayerFromVehicle(playerid);
    }
    printf("pTaxiDuty: %d", Spieler[playerid][pTaxiDuty]);
    if(Spieler[playerid][pTaxiDuty] == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_TAXIPICE, DIALOG_STYLE_INPUT, "{FFFF00}Taxi - Preis festlegen", "{FFFFFF}Lege den Preis für die Taxifahrt fest:", "Ok", "Abbrechen");
    }
    }


    Solange dir dort 0 angezeigt wird, siehst du den Dialog.
    Setze dir beim Setzen auf 1 bitte auch einen Print, zum prüfen, ob das dort auch auf 1 gesetzt wird. Wenn ja, dann musst du anschließend alle Stellen prüfen, an denen pTaxiDuty im Wert verändert wird (print setzen) und dann die Stelle im Code anpassen, welche den Wert wieder auf 0 setzt (das findest du durch die prints raus).


    Dann klappt es auch.

  • Allerdings kann es dann natürlich passieren, dass in der Zeit jemand anderes das alte Taxi nutzt, man muss also viele Dinge dabei noch beachten.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen