Dialog wenn ich in ein Auto steige ?

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
  • Hallöle


    und zwar wollte ich gerne für meine Müllmänner und Busfahrer es so haben das wenn man einsteigt einen Dialog bekommt mir Route1\nRoute2 Ich weiss wie man den Dialog schreibt.


    Nur wie klappt es das es wenn ich ins auto steige kommt.


    Und wie genau muss das Response aussehen damit wenn man raufklickt den befehl ausführt.

  • Beispiel ? Verstehe ich nich ganz habe es so im script.


    AddStaticVehicleEx(408,2192.4641,-1999.2092,14.0985,359.3515,1,0,180); // Müll1
    AddStaticVehicleEx(408,2192.7297,-1989.0369,14.0978,359.8188,1,0,180); // Müll2
    AddStaticVehicleEx(408,2183.3367,-1976.6440,14.1037,271.3646,1,0,180); // Müll3
    AddStaticVehicleEx(408,2173.0032,-1976.9377,14.0950,271.1490,1,0,180); // Müll4
    AddStaticVehicleEx(408,2181.4653,-1990.7405,14.0888,315.5790,1,0,180); // Müll5
    AddStaticVehicleEx(408,2169.4907,-1985.1644,14.0950,271.6864,1,0,180); // Müll6

  • Oben
    New MuallCars[6];


    Und überall
    MuellCars[0] = AddStatic..
    MuellCars[1] = AddStatic..
    MuellCars[2] = AddStatic..


    Und beim einsteigen
    Schleife durch alle MuellCars und dann abfragen ob vehicleid == i ist
    Dann halt abfragen ob er den Job hat und dann anzeigen lassen
    Wenn nicht dann ausm Fahrzeug schmeißen

  • Beitrag von AirM4X ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Die AddStaticVehicle() Funktion returned immer die Fahrzeuge ID, die das aktuell erstellte Fahrzeug besitzt (nicht zu verwechseln mit der Model ID!).
    Diese musst du halt in einem Array speichern.


    Beispielsweise so (ich hoffe, du schaust dir die Kommentare an, denn ich habe mir wirklich Mühe gegeben, dir das Prinzip zu erläutern):

    new trashCars[10] //Array mit allen IDs von allen Trashcars / 10 = Anzahl der maximal verfügbaren Müllfahrzeuge


    trashCars[0] = AddStaticVehicle(...); //in trashCars[0] ist nun die Vehicle ID des soeben erstellten Fahrzeugs. Diese Zeile wiederholst du bei jedem Trashcar.


    Nun müsstest du einfach nur noch unter OnPlayerStateChange() Folgendes machen:

    if(newstate== PLAYER_STATE_DRIVER){ //Abfragen, ob er auch als Fahrer eingestiegen ist
    for(new i=0; i<sizeof(trashCars); i++){ //Schleife initialisieren, die durch allle Felder des Arrays trashCars iteriert
    if(GetPlayerVehicleID(playerid) == trashCars[i]){ // der Wert des aktuell iterierten Feldes des Arrays trashCars befindet sich nun in trashCars[i]. Wenn dieser identisch mit dem aktuellen Fahrzeug ist, dann ist er in einem Trashcar.
    ShowPlayerDialog(...) //Dialog anzeigen mit allen Routen
    break; Schleife abbrechen, da sie nicht mehr weiter durchlaufen werden muss.
    }
    }
    }


    //E: Habe aus Versehen newkeys anstatt newstate verwendet. Bitte beachte das und ändere den Code dementsprechend um.

  • Danke icy muss das unten dann so aussehen ?


    if(dialogid == DIALOG_ROUTE)
    {
    if(response)
    {
    if(listitem == 0)
    {
    if(Mullabfuhr[playerid] == 0 && PlayerInfo[playerid][pJob] == 17)
    {
    if(PlayerInfo[playerid][pMulltime] == 0)
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 408 || Mullabfuhr[playerid] == 0)
    {
    SendClientMessage(playerid, COLOR_LIGHTGREEN, "Du bist nun im Dienst, fahre nun zu den einzelnen Häusern und Geschäften!");
    SetPlayerCheckpoint(playerid, 2347.8499,-1993.0889,13.9195, 5.0);
    MullabfuhrCP[playerid] = 1;
    Mullabfuhr[playerid] = 1;
    }
    else if(listitem == 1)
    {
    if(Mullabfuhr[playerid] == 0 && PlayerInfo[playerid][pJob] == 17)
    {
    if(PlayerInfo[playerid][pMulltime] == 0)
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 408 || Mullabfuhr[playerid] == 0)
    {
    SendClientMessage(playerid, COLOR_LIGHTGREEN, "Du bist nun im Dienst, fahre nun zu den einzelnen Häusern und Geschäften!");
    SetPlayerCheckpoint(playerid, 2130.1143,-1889.0669,13.9588, 5.0);
    MullabfuhrCP2[playerid] = 1;
    Mullabfuhr2[playerid] = 1;
    }
    }
    }
    return 1;
    }

  • Spoiler anzeigen
    if(dialogid == DIALOG_ROUTE)
    {
    if(response)
    {
    if(listitem == 0)
    {
    if(Mullabfuhr[playerid] == 0 && PlayerInfo[playerid][pJob] == 17)
    {
    if(PlayerInfo[playerid][pMulltime] == 0)
    {
    SendClientMessage(playerid, COLOR_LIGHTGREEN, "Du bist nun im Dienst, fahre nun zu den einzelnen Häusern und Geschäften!");
    SetPlayerCheckpoint(playerid, 2347.8499,-1993.0889,13.9195, 5.0);
    MullabfuhrCP[playerid] = 1;
    Mullabfuhr[playerid] = 1;
    return 1;
    }
    }
    }
    else if(listitem == 1)
    {
    if(Mullabfuhr[playerid] == 0 && PlayerInfo[playerid][pJob] == 17)
    {
    if(PlayerInfo[playerid][pMulltime] == 0)
    {
    SendClientMessage(playerid, COLOR_LIGHTGREEN, "Du bist nun im Dienst, fahre nun zu den einzelnen Häusern und Geschäften!");
    SetPlayerCheckpoint(playerid, 2130.1143,-1889.0669,13.9588, 5.0);
    MullabfuhrCP2[playerid] = 1;
    Mullabfuhr2[playerid] = 1;
    return 1;
    }
    }
    }
    }
    return 1;
    }

    Mach das mal so. Das Model vom Fahrzeug musst du eigentlich nicht mehr abfragen.
    Unter OnPlayerStateChange muss das ganze so, weil da hatte ich vorhin einen Fehler.
    public OnPlayerStateChange(playerid,newstate,oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    for(new i;i<sizeof MuellCars;i++)
    {
    if(!IsPlayerInVehicle(playerid,MuellCars[i]))continue;
    return ShowPlayerDialog(playerid,DIALOG_ROUTE,DIALOG_STYLE_LISTITEM,"Route","......","Weiter","Abbrechen");
    }
    }
    return 1;
    }

  • Spoiler anzeigen
    if(dialogid == DIALOG_ROUTE)
    {
    print("DIALOG_ROUTE");
    if(response)
    {
    print("response == 1");
    if(listitem == 0)
    {
    printf("!listitem && Mullabfuhr %d && pJob %d",Mullabfuhr[playerid],PlayerInfo[playerid][pJob]);
    if(Mullabfuhr[playerid] == 0 && PlayerInfo[playerid][pJob] == 17)
    {
    printf("pMulltime %d",PlayerInfo[playerid][pMulltime]);
    if(PlayerInfo[playerid][pMulltime] == 0)
    {
    SendClientMessage(playerid, COLOR_LIGHTGREEN, "Du bist nun im Dienst, fahre nun zu den einzelnen Häusern und Geschäften!");
    SetPlayerCheckpoint(playerid, 2347.8499,-1993.0889,13.9195, 5.0);
    MullabfuhrCP[playerid] = 1;
    Mullabfuhr[playerid] = 1;
    return 1;
    }
    }
    }
    else if(listitem == 1)
    {
    printf("listitem && Mullabfuhr %d && pJob %d",Mullabfuhr[playerid],PlayerInfo[playerid][pJob]);
    if(Mullabfuhr[playerid] == 0 && PlayerInfo[playerid][pJob] == 17)
    {
    printf("pMulltime %d",PlayerInfo[playerid][pMulltime]);
    if(PlayerInfo[playerid][pMulltime] == 0)
    {
    SendClientMessage(playerid, COLOR_LIGHTGREEN, "Du bist nun im Dienst, fahre nun zu den einzelnen Häusern und Geschäften!");
    SetPlayerCheckpoint(playerid, 2130.1143,-1889.0669,13.9588, 5.0);
    MullabfuhrCP2[playerid] = 1;
    Mullabfuhr2[playerid] = 1;
    return 1;
    }
    }
    }
    }
    return 1;
    }

    Welche Debuggs werden dir ausgegeben?

    Einmal editiert, zuletzt von AirM4X ()

  • also so ?


    if(dialogid == DIALOG_ROUTE)
    {
    print("DIALOG_ROUTE");
    if(response)
    {
    print("response == 1");
    if(listitem == 0)
    {
    printf("!listitem && Mullabfuhr %d && pJob %d",Mullabfuhr[playerid],PlayerInfo[playerid][pJob]);
    if(Mullabfuhr[playerid] == 0 && PlayerInfo[playerid][pJob] == 17)
    {
    SendClientMessage(playerid, COLOR_LIGHTGREEN, "Du bist nun im Dienst, fahre nun zu den einzelnen Häusern und Geschäften!");
    SetPlayerCheckpoint(playerid, 2347.8499,-1993.0889,13.9195, 5.0);
    MullabfuhrCP[playerid] = 1;
    Mullabfuhr[playerid] = 1;
    return 1;
    }
    }
    }
    else if(listitem == 1)
    {
    printf("!listitem && Mullabfuhr %d && pJob %d",Mullabfuhr[playerid],PlayerInfo[playerid][pJob]);
    if(Mullabfuhr[playerid] == 0 && PlayerInfo[playerid][pJob] == 17)
    {
    SendClientMessage(playerid, COLOR_LIGHTGREEN, "Du bist nun im Dienst, fahre nun zu den einzelnen Häusern und Geschäften!");
    SetPlayerCheckpoint(playerid, 2130.1143,-1889.0669,13.9588, 5.0);
    MullabfuhrCP2[playerid] = 1;
    Mullabfuhr2[playerid] = 1;
    return 1;
    }
    }
    }
    }
    return 1;
    }


    Wenn ich es so hab crasht pawn

  • Achte bitte auf deine Klammersetzung.
    Versuch das mal selbst mit gerade am Handy:D