Dialog wird nicht angezeigt

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
  • Hey,
    habe ein kleines System gebastelt mit dem man sich Schilder also Werbetafeln mieten kann. Nun will ich einen Dialog erstellen der alle verfügbaren also alle zum Verkauf stehenden Schilder anzeigt. Das habe ich auch gemacht nur wird er im Spiel nicht angezeigt. Die Schilder werden ordnungsgemäß geladed und erstellt, nur der Dialog will nicht. Was mache ich falsch ?
    stock ShowSigns(playerid)
    {
    new signFormat[800];
    new signLocation[30];
    for(new i=0;i<sizeof(SignInfo);i++){
    if(SignInfo[i][ID] == 0)continue;
    if(SignInfo[i][ForSale] != 1) continue;
    Get3DZoneForCoords(signLocation, sizeof(signLocation), SignInfo[i][x], SignInfo[i][y], SignInfo[i][z]);
    format(signFormat,sizeof(signFormat),"%s{FFFFFF}ID: {FF9900}%i {FFFFFF}|| Location: {FF9900}%s {FFFFFF}|| Price: {FF9900}%s\n",signFormat,SignInfo[i][ID],signLocation,FM(SignInfo[i][Price]));
    }
    ShowPlayerDialog(playerid,48,DIALOG_STYLE_LIST,"Available billboards",signFormat,"Select","Back");
    return 1;
    }

  • Mach doch mal einen Print-Debug und 800 Zellen sind ein bisschen viel? Mach das mal nur auf 512...


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • stock ShowSigns(playerid)
    {
    new signFormat[800];
    new signLocation[30];
    for(new i=0;i<sizeof(SignInfo);i++)
    {
    printf("i: %d", i);
    if(SignInfo[i][ID] == 0)continue;
    if(SignInfo[i][ForSale] != 1) continue;
    printf("passed.");
    Get3DZoneForCoords(signLocation, sizeof(signLocation), SignInfo[i][x], SignInfo[i][y], SignInfo[i][z]);
    print(signLocation);
    format(signFormat,sizeof(signFormat),"%s{FFFFFF}ID: {FF9900}%i {FFFFFF}|| Location: {FF9900}%s {FFFFFF}|| Price: {FF9900}%s\n",signFormat,SignInfo[i][ID],signLocation,FM(SignInfo[i][Price]));
    print(signFormat);
    }
    ShowPlayerDialog(playerid,48,DIALOG_STYLE_LIST,"Available billboards",signFormat,"Select","Back");
    return 1;
    }
    Was steht im Log?


    lukas1177: Nicht dein Ernst, oder?
    Kaliber: Die Zeile an sich hat schon fast 100 Zeichen, wenn er also mehr als 10 Schilder hat, dann wird er sogar mehr als die 800 brauchen.

  • Das Problem hatte ich auch mal. Probier mal dieses Array Global zu schreiben. Also signFormat[800] irgendwo ganz am Anfang des. Scriptes. Ansonsten kannst Du es, wie Kaliber es schon geschrieben hat, die Zelle Anzahl verkleinern.


    #Handy

    Mit freundlichen Grüßen
    Zeuto

  • Ups, habe gerade gemerkt, dass ich zum Testen eine Funktion gemacht hatte die ForSale bei allen Schildern auf 0 setzt. Trotzdem danke für die Hilfe :) Ich hätte da aber noch eine bzw. zwei Fragen. Wie kann ich es machen wenn bei allen Schildern ForSale 0 ist, also wenn es nicht zum Verkauf steht, dass eine Nachricht returnt wird ? Und die zweite Frage wäre bezüglich der Anzahl der Schilder. Da ein String ja höchstens 1024 Zeichen groß sein kann, wie mache ich es wenn ich sehr viele Schilder habe ?