Dialog | Listitem - Enum

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
  • Hier das Problem



    for(new i = 0; i < sizeof(MietCars); i++)
    {
    if(MietCars[i][Inuse] == 0)
    {
    format(abc,128,"Fahrzeug: %s | Mietpreis: $%d\n", CarName[MietCars[i][Model]], MietCars[i][Price]);
    strcat(string,abc);
    }
    ShowPlayerDialog(playerid,DIALOG_MIETCARS,DIALOG_STYLE_LIST,"Wähle ein Fahrzeug",string,"Weiter","Abbrechen");
    }


    So durch das if (MietCars[i][Inuse]) stimmt ja die Enumnr nicht mehr mit dem Listitem sodass ich das nicht so nutzen kann:


    MietCars[listitem][Inuse] = 1


    Danke euch;)


    E// if Fehler
    // @Blackace: Kaliber: wisst ihr das ich glaube die Materie ist sehr sehr sehr hoch ;)

    2 Mal editiert, zuletzt von NicoWiss ()


  • Hey, sry war fix am Handy getippt.


    Hast du evtl ein Beispiel?


    du erstellst ein array in dem du die werte speicherst 1d array


    dann brauchst du noch eine extra variabel die du natürlich außerhalb der for-schleife erstellst


    new x, i;
    for(; i < sizeof(MietCars); ++i){


    diese variabel hier x lässt du nach der if abfrage sollte diese zutreffen incrementieren.
    ++x


    weil somit legst du die reihenfolge fest und der array weisst du noch den wert von der variabel i zu.


    array[x] = i;


    weil nun hast du die Möglichkeit mit listitems zu arbeiten bei OnDialogResponse
    MietCars[array[listitem]][Price]= 100;


    wenn du auf den ersten Eintrag im Fialog klickst, wird davon der erste zugewiesene Wert genommen von
    der Rangabfolge, der nicht gemieteten Fahrzeugen.


  • Okay hab alles gecheckt ausser den OnDialogRensponse Teil:


    Weil ich muss ja abfragen:


    if(listitem = xyz)


    Das fehlt da ja jetzt?


    //e und wieso ++x;


    Muss nicht x = i?

    Einmal editiert, zuletzt von NicoWiss ()

  • 1. du musst da garnichts abfragen


    2. x dient zur setzung der reihenfolge


    Die listitems gehen ja von 0 - x beim anklicken sagen wir mal du hast 10 listitems
    und du willst nun das listitem 0 anklicken und dahinter verbirgt sich das auto welches in deiner array MietCars an platz 49 ist


    nun wie kommt man jetzt auf die 49 ?


    Da kommt das formatieren des strings ins spiel , array und die extra variabel welche man in der if abfrage erhöhen lässt.


    also die for-schleife geht die ganzen daten im array durch und findet 10 autos die nicht besetzt welche den platz 49 , 51, 52, 53, 60, 70, 71, 79, 91, 99
    haben. Diese plätze werdne in dem array zwischen gespeichert an platz 1 - 10


    array[0] = 49;
    array[1] = 51;
    array[2] = 52;
    array[3] = 60;
    ....


    du filterst somit die ids raus.


  • Da ich aufn Internat bin teste ich es Freitag und melde mich evtl nochmal aber heisst es nicht


    x++; anstatt ++x;

  • Da ich aufn Internat bin teste ich es Freitag und melde mich evtl nochmal aber heisst es nicht


    x++; anstatt ++x;

    Nein es gibt zwei verschiedene Versionen der inkrementierung einmal Postfix(i++) und Präfix(++i). Der unterschied besteht das sie sich unterschiedlich inkrementieren.
    so wird bei der Postfix version erst eine kopie erstellt und danach wird sie um 1 erhöht und bei der Präfix versionen genau andersrum.

  • Nein es gibt zwei verschiedene Versionen der inkrementierung einmal Postfix(i++) und Präfix(++i). Der unterschied besteht das sie sich unterschiedlich inkrementieren.
    so wird bei der Postfix version erst eine kopie erstellt und danach wird sie um 1 erhöht und bei der Präfix versionen genau andersrum.


    Ist es dann egal wierum oder nicht