Textdraw Switch?

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


    ich habe 2 Textdraws erstellt, sieht aus wie eine Liste.
    Nun möchte ich das man mit den Pfeil Tasten eins von beiden auswählen kann
    und bei Enter Taste das dann ausgewählt habe und irgendeine Funktion nutzen kann/adden kann.


    So ist es aufgebaut:


    Code
    Was möchten sie tun?
    Kicken
    Bannen


    Ich wähle nun zb. Bannen aus:
    Da würde ich Bannen dann als ausgewählt makieren.
    Aber wie stlele ich das an das ich mit den Pfeil Tasten hoch und runter switchen kann?
    Und dann mit der Enter Taste oder so meine Auswahl bestätigen kann?
    Wäre nett wenn jemand Hilft.
    Mfg DaN

  • Ich will & kann kein Menu nutzen weil ich so einiges vorhabe mit dieser Funktion,
    wenn mir jemand erklären könnte wie das Funktioniert.

    Einmal editiert, zuletzt von DaN ()

  • Du könntest es mit einer Variable und dem Callback OnPlayerKeyStateChange machen
    --> Wenn das Textdraw angezeigt wird var auf 1 setzten
    dann wenn man Pfeilrechts drückt wird die Var um eins erhöht und TextDrawHideForPlayer + TextDrawSetString + TextDrawShowForPlayer
    Bei TextDrawSetString einfach sowas nehmen : format(string, sizeof(string), "~w~1. Bannen~n~~r~2. Kicken~n~~w~3. usw");
    mit Pfeillinks das selbe nur Var -1


    Allerdings wird eine Abfrage benötigt ala if(var == 1), damit wenn er bei 1 ist die Var nicht auf 0 wird sondern auf 3 gesetzt wird
    Und natürlich auch bei 3, damit die Var nicht 4 wird sondern wieder bei 1 ist


    Dann beim Enter einfach die Var abfragen und je nachdem dann mit einer if abfrage deine gewünschte Aktion ausführen


    Ist am Anfang sehr kompliziert aber wenn man ein bissl mit sowas arbeitet wirds einfach :)


    Nicht jeder, der sich für super hält, ist ein Superheld. :love:
    ------------------------------------------------------------------------------------------------

  • Danke habs kapiert.
    Werde es versuchen.
    Wenns nicht klappt wende ich mich nochmal an euch ^^.

  • Na dann viel Spaß :)


    Wenns noch Probleme gibt kannst du mir auch einfach eine PM senden


    Nicht jeder, der sich für super hält, ist ein Superheld. :love:
    ------------------------------------------------------------------------------------------------

  • Werd ich machen.
    Danke.



    //editSo hab mal angefangen etwas zu machen Funktioniert aber nicht.
    Sobald ich den Befehl /test auslöse fängt der Server so derbst an zu laggen.
    Hier der Code:
    if (strcmp("/test", cmdtext, true, 10) == 0)
    {
    for(new i = 0;i<MAX_PLAYERS;i++){
    darf[playerid] = 1;
    textvar[playerid] = 1;
    TextDrawShowForPlayer(playerid,test[i]);
    }
    return 1;
    }
    if (strcmp("/testaus", cmdtext, true, 10) == 0)
    {
    for(new i = 0;i<MAX_PLAYERS;i++){
    darf[playerid] = 0;
    textvar[playerid] = 0;
    TextDrawHideForPlayer(playerid,test[i]);
    }
    return 1;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(PRESSED(KEY_DOWN))
    {
    for(new i = 0;i<MAX_PLAYERS;i++){
    if(darf[playerid] == 1)
    {
    if(textvar[playerid] == 1)
    {
    new string[64];
    format(string, sizeof(string), "~y~Kicken~n~~r~Bannen");
    TextDrawSetString(test[i], string);
    auswahl[playerid] = 1;
    textvar[playerid] = 2;
    }
    else if(textvar[playerid] == 2)
    {
    new string[64];
    format(string, sizeof(string), "~r~Kicken~n~~y~Bannen");
    TextDrawSetString(test[i], string);
    auswahl[playerid] = 2;
    textvar[playerid] = 1;
    }
    }
    }


    }
    return 1;
    }



    Hoffe ihr könnt mir weiter Helfen.

    3 Mal editiert, zuletzt von DaN ()


  • if (strcmp("/test", cmdtext, true, 10) == 0)
    {
    darf[playerid] = 1;
    textvar[playerid] = 1;
    TextDrawShowForPlayer(playerid,test[playerid]);
    // Ich gehe davon aus, dass das TextDraw NUR für den Spieler der Text eingeben hat angezeigt werden soll
    // --> For-schleife raus und anstatt [i] --> [playerid], damit nur das TextDraw der playerid geändert wird
    return 1;
    }


    if (strcmp("/testaus", cmdtext, true, 10) == 0)
    {
    darf[playerid] = 0;
    textvar[playerid] = 0;
    TextDrawHideForPlayer(playerid,test[playerid]);
    // Hier das selbe wie bei /test
    return 1;
    }



    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(PRESSED(KEY_DOWN))
    {
    if(darf[playerid] == 1)
    {
    if(textvar[playerid] == 1)
    {
    new string[64];
    format(string, sizeof(string), "~y~Kicken~n~~r~Bannen");
    TextDrawSetString(test[playerid], string);
    auswahl[playerid] = 1;
    textvar[playerid] = 2;
    }
    else if(textvar[playerid] == 2)
    {
    new string[64];
    format(string, sizeof(string), "~r~Kicken~n~~y~Bannen");
    TextDrawSetString(test[playerid], string);
    auswahl[playerid] = 2;
    textvar[playerid] = 1;
    }
    }
    }
    // Hier ebenso die For-Schleife raus
    // Falls was mit den Variablen nicht stimmt, kann ich dir nicht helfen,
    // da ich nicht weiß wie diese Verwendet werden


    return 1;
    }


    Hoffe ich konnte dir damit helfen :)


    Nicht jeder, der sich für super hält, ist ein Superheld. :love:
    ------------------------------------------------------------------------------------------------

  • Ja du konntest mir Helfen.
    Hatte das Problem schon selber gelöst gehabt gerade.
    Trotzdem Danke.



    Was mich noch beschäftigt ist, das KEY_DOWN& UP & LEFT & RIGHT NICHT FUNKTIONIEREn.
    Weißt du warum?

  • Ich glaube das muss man so machen :


    if (newkeys & KEY_DOWN)


    bin mir aber nicht 100 % sicher


    Ich habe bei meinem TDM-Script lediglich die Maustasten und Shift verwendet
    und bei shift hat das so funktioniert :
    if (newkeys & KEY_JUMP)


    Wie das mit PRESSED geht weiß ich ehrlichgesagt nicht


    Nicht jeder, der sich für super hält, ist ein Superheld. :love:
    ------------------------------------------------------------------------------------------------