Dialogfrage an alle Nachteulen :D

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
  • Moin Moin,


    und zwar habe ich doch mal ne Frage zwecks Dialogen...


    Ich habe das so bei mir


    #define DIALOG_Registrieren 1
    #define DIALOG_Registrieren_Geschlecht 2
    #define DIALOG_Registrieren_Geburtsdatum 3


    und davon über 600.


    Daher meine Frage, gibt es die Möglichkeit, dies anders aufzulisten.


    Weil jedes mal wenn ein Dialog dazukommt und ich den dazwischen machen muss, muss ich irgendeine ID nehmen oder alle ID´s neu sortieren.


    Beispiel : Ich habe das jetzt


    #define DIALOG_normaleHilfe 70
    #define DIALOG_Allgemeinehilfe 71
    #define DIALOG_Haushilfe 72
    #define DIALOG_Businesshilfe 73
    #define DIALOG_Autohilfe 74
    #define DIALOG_Fraktionhilfe 75
    #define DIALOG_Berufhilfe 76
    #define DIALOG_Bankhilfe 77
    #define DIALOG_Handyhilfe 78
    #define DIALOG_Fischhilfe 79
    #define DIALOG_Premiumhilfe 80
    #define DIALOG_Menuehilfe 81
    #define DIALOG_sonstigeshilfe 82


    und möchte aber noch ein Hilfedialog machen.


    Dann müsste ich ja, weil ich das sortiert haben will, alle ID´s verschieben.


    Gibt es irgendwie die Möglichkeit sowas als enum oder wie bei Carlisten aufzuführen oder was gibt es noch für Möglichkeiten ?


    Vielleich sogar als include ? Zeigt mal her eure Ideen. Bin für alles offen ;)

  • muss glaubich gar nicht sortiert sein, aber ne Zahl sollte nicht Zweimal vorkommen, genau genommen musst du es gar nicht definieren, das dient nur der Anschaulichkeit.
    Bedeutet wenn du jetzt nen neuen Dialog wo reinschieben willst kannste den auch bei den #define ganz unten mit ner ganz andren zahl reinschreiben, nur musst du aufpassen, dass du bei OnPlayerDialogResponse() (dialogid == blabla) nichts verwechselst.

  • Theoretisch ginge es mit einer schleife wo du immer sagst, DIALOGZAHL ist immer +1, aber ich habe es noch nicht probiert, ich machs eventuell später und sag dir bescheid.



    //edit


    PS: Eventuell funkt es auch mit Random ^^



    #JoKér



  • Das wär echt super wenn das gehen würde.


    @ Schtän


    Das die ID´s nicht doppelt vorkommen dürfen weiß ich ;)


    Und normalerweise müssen die nicht sortiert werden aber dies würde ich gerne so haben, weil ich den Überblick behalten möchte und bei über 600 Dialogen kommt man irgendwann durcheinander, deswegen eine ordentliche Struktur ;)


    Hat noch jemand eine Idee ?

    Einmal editiert, zuletzt von cHaOsFaTz () aus folgendem Grund: Text aktualisiert

  • Wie sollen die IDs bitte verschieben ?
    Bei der Funktion musst die die ID doch festlegen entweder mit einer definierung "#define" oder ne Zahl.
    Oder meinst du wenn der Spieler DIALOG 2 nicht aufrufen darf soll es nicht in der Liste angezeigt werden ?
    Wenn ja ne Abfrage stellen ob Spieler DIALOG 2 aufrufen darf wenn nicht mit "++" einen höher zählen lassen.
    Ist leicht zu machen falls dus nicht verstanden hast müsste ich dir nen Beispiel schreiben.


    LG RFT

    RFT

  • wäre super wenn du mir ein Beispiel gibst ;)



    @ InternetInk aka Benjamin


    Ja hast recht jedoch will ich nicht das es im Script so steht


    #define DIALOG_BEISPIEL1 1
    #define DIALOG_BEISPIEL2 5
    #define DIALOG_BEISPIEL13 8
    #define DIALOG_BEISPIEL14 55
    #define DIALOG_BEISPIEL15 361


    sondern halt sortiert. nur jedesmal muss ich dann die ID´s wieder alle verschieben wenn was neues kommt.


    Hoffe ich habe es jetzt halbswegs verständlich erklärt ;)


    EDIT 1 : Text hinzufügt


  • if(Test[playerid] == 1)ShowPlayerDialog(playerid, DIALOG1, DIALOG_STYLE_LIST, "DIALOG1", "Hallo\nBye\nMoin", "OK", "Abbrechen"));
    if(Test[playerid] == 2)ShowPlayerDialog(playerid, DIALOG1, DIALOG_STYLE_LIST, "DIALOG1", "Hallo\nMoin", "OK", "Abbrechen"));



    Unter OnDialogResponse muss es so aussehen



    if(dialogid == DIALOG1)
    {
    switch(listitem)
    {
    case 0:
    {
    //moin
    }
    case 1:
    {
    if(Test[playerid] == 2)listitem++; //Damit Moin statt bye ausgeführt wird.
    }
    case 2:
    {
    //bye
    }
    }


    Wichtig ist das du kein "return" setzt da der Code sonst gestoppt wird und somit nicht "Bye" ausgeführt wird.
    Ich hoffe du hast verstanden was ich meine falls du sowas überhaupt meinst.


    LG RFT

    RFT

  • naja die Lösung ist schon ansatzweise was anderes.


    Ich nenne nochmal ein Beispiel aus meine Script


    zum Beispiel das hier


    #define DIALOG_Registrieren 1
    #define DIALOG_Registrieren_Geschlecht 2
    #define DIALOG_Registrieren_Geburtsdatum 3
    #define DIALOG_Registrieren_EMail 4
    #define DIALOG_Registrieren_Bundesland 5
    #define DIALOG_Registrieren_Woherkennstduuns 6
    #define DIALOG_Registrieren_Geworbenvon 7
    #define DIALOG_Registrieren_Stadt 8
    #define DIALOG_Registrieren_Fertig 9
    #define DIALOG_Login 10


    wenn ich aber erst was neues hingaben will wie z.B.
    DIALOG_Registrieren_Sicherheitsfrage


    dann muss ich alle ID´s die darüber stehen also sprich die höher als wie 10 sind eins nach oben verschieben


    weil so will ich das nicht haben ;)


    >>>>>>



    #define DIALOG_Registrieren 1
    #define DIALOG_Registrieren_Geschlecht 2
    #define DIALOG_Registrieren_Geburtsdatum 3
    #define DIALOG_Registrieren_EMail 4
    #define DIALOG_Registrieren_Bundesland 5
    #define DIALOG_Registrieren_Woherkennstduuns 6
    #define DIALOG_Registrieren_Geworbenvon 7
    #define DIALOG_Registrieren_Stadt 8
    #define DIALOG_Registrieren_Fertig 9
    #define DIALOG_Registrieren_Sicherheitsfrage
    897 // so halt nicht ;)
    #define DIALOG_Login 10


    Daher die Frage ob ich auch dei Möglichkeit habe sowas in einem stock oder public Bereich vielleicht mit case oder so.


    Ich weiss nur nicht ob dies funktionieren würde.


    Das Beste wäre natürlich eine .inc Datei mit allen DIalog ID´s


    Meine Idee wäre die :


    Dialoge.inc ( Dateiname )


    Und dann sollte die Datei einen Bereich haben wo ich halt alle aufzähle und keine ID´s mehr benötige, vielleicht random oder so ;)



    Hoffe jemand hat es verstanden, weil ist kompliziert zu erklären ;)