Über Dialog Mehr als eine Zeile ausgeben?

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
  • Hallo Leute


    Ich habe da ein kleines Problem, ich möchte wie in der Überschrift bereits steht mehr als nur eine zeile ausgeben
    finde allerdings nichts dazu


    Ich rufe den dialog auf
    // Befehl
    if(strcmp("/testtext", cmdtext, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    ShowPlayerDialog(playerid, DIALOG_TESTTEXT, DIALOG_STYLE_INPUT, "Dein Text", "Tippe dein Text", "OK", "Zurück");
    }
    return 1;
    }
    // Aufgerufene Ausgabe
    if(dialogid == DIALOG_TESTTEXT)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,COLOR_WHITE,"Abgebrochen!");
    }
    if(response == 1)
    {
    SendClientMessage(playerid,COLOR_WHITE,inputtext);
    }
    }


    Nun soll er aber automatisch nach 30 Zeichen ein " \n " mit einfügen damit der ausgegebene Text in 2 Zeilen ausgegeben wird


    ihr könnt mir da doch bestimmt weiter helfen

  • Nutze SendBigMessage anstatt SendClientMessage.


    Unten im Gamemode einfügen:
    stock SendBigMessage(playerid,color,string[]) //©Jeffry
    {
    if(strlen(string) < 128) return SendClientMessage(playerid,color,string);
    new buffer[131],tmp[1024];
    strcat(tmp, string);
    while(tmp[0] != EOS)
    {
    strmid(buffer,tmp,0,127);
    strdel(tmp,0,127);
    if(tmp[0] != EOS) strcat(buffer,"...");
    SendClientMessage(playerid,color,buffer);
    }
    return 1;
    }


    Wenn du wirklich nur 30 Zeichen anzeigen willst, pro SendClientMessage, ändere 128 zu 31, 127 zu 30 und 131 zu 34.
    Wenn du die Punkte nicht haben willst, dann entferne die Zeile:
    if(tmp[0] != EOS) strcat(buffer,"...");

  • stock CutIntoLines(string[]) //©Jeffry
    {
    new tmp[1024], find, len;
    strcat(tmp, string);
    while((find = strfind(tmp, "\n")) != -1) strdel(tmp, find, find+1);
    len = strlen(tmp);
    for(new i=30; i<len; i+=31) strins(tmp, "\n", i);
    return tmp;
    }


    Versuche es damit.
    In SetObjectMaterialText schreibst du an die Stelle des Textes
    CutIntoLines(inputtext)
    hin.