Zeilenumbrüche aus einer Datenbank in einen Dialog übernehmen

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
  • Guten Tag,


    ich sitze momentan an einem Problem, ich wollte eine help database machen, nun wenn ich ein Eintrag mit Zeilenumbruch im Dialog anzeigen lasse, dann werden die Zeilenumbrüche als normaler Text angezeigt.
    Ich hab schon einiges versucht mit str_replace etc..


    Hier einige Impressionen meines Programmes:
    new title[128];
    format(title,sizeof(title),"%i: %s",HelpInfo[i][hID],HelpInfo[i][hTitle]);

    ShowPlayerDialog(playerid,DIALOG_HELP_DATABASE,DIALOG_STYLE_MSGBOX,title,HelpInfo[i][hText],"Ok","");

  • Wir müssen schon wissen was du auslesen/anzeigen willst.


    Ich habe das Problem doch bereits beschrieben, dass ich Zeilenumbrüche aus einer Datenbank in einen Dialog übernehmen möchte, dies aber nicht funktioniert, die Zeilenumbrüche werden als ganz normaler Text angezeigt.
    Mit Zeilenumbruch meine ich '\n'

    ich glaube es liegt am titel


    Liegt es nicht.

  • Nein tut es nicht!
    Wenn ihr in einem Dialog folgendes schreibt:
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_MSGBOX,"WIllkommen","Dies ist ein Text\n, der dir helfen soll\ndas Tutorial zu verstehen.","OK");

    Amgezeigt wird das ganze so:
    Willkommen (überschrift)
    Dies ist ein Text
    ,der dir helfen soll
    das Tutorial zu verstehen.


    In der Datenbank steht es wie in der Anzeige des Dialogs (pwn Text)
    aber InGame steht es dann genau so. Nicht so, wie es sollte.


  • Danke, dass du es verstanden hast.

  • Das Problem ist beim auslesen bekommt jede Zelle des arrays 1 Buchstaben, somit wird der Zeilenbruch auch nicht erkannt daher musst du die Zeilenbrüche sogesehen ersetzen


    Hier mal ein Beispielcode:


    new str[20];
    str[0] = 'H';
    str[1] = 'a';
    str[2] = 'l';
    str[3] = 'l';
    str[4] = 'o';
    str[5] = '\32;';
    str[6] = 'w';
    str[7] = 'i';
    str[8] = 'e';
    str[9] = '\\';
    str[10] = 'n';
    str[11] = 'g';
    str[12] = 'e';
    str[13] = 'h';
    str[14] = 't';
    str[15] = 's';
    print(str);


    for(new i, j = strlen(str); i != j; ++i)if(str[i] == '\\' && str[i+1] == 'n')str[i] = '\32;',str[i+1] = '\n';
    print(str);


    dann weißt du wie das ganze zustande kommt und umgeändert wird durch die Schleife.


  • Hat nun funktioniert, danke.