[Report-System] TextDraw erhält nach Erstellung falschen Wert - jedoch die "Kollegen" nicht

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 liebe Community.



    Dadurch, dass ein Textdraw nicht einen String erhält, crasht mein Server nach dem 5ten Textdraw .
    Ich habe mal das Problem "gedebugged" und raus kam folgendes:



    Dort muss auf den Unterschied geachtet werden, aReport und bReport ist irrelevant. Es geht nur um "DEBUG-TDS: ---"


    Dort, wo jeder TextDraw seine "ID" Ingame bekommt:



    for(new f=0; f<6; f++){
    aReport[f] = false;
    bReport[f] = false;
    format(zReport[f][2*MAX_PLAYER_NAME+10],2*MAX_PLAYER_NAME+10,"%d:",f+1);
    }


    Kleiner Part wo die Debugs erstellt werden:

    Spoiler anzeigen

    printf("ID: %i (+1 = %i) - aReport: %d - bReport: %d",i,i+1,aReport[i],bReport[i]);
    format(string2,sizeof(string2),"%s %s",zReport[i][2*MAX_PLAYER_NAME+10],SpielerName(playerid));
    TextDrawSetString(Text:Report[i],string2);
    printf("DEBUG-TDS: %s",string2);



    -------
    Kleine Information zu oben:


    Dadurch stürzt der Server nach dem 5ten Report immer ab, was ich mir eigentlich nicht erklären kann...



    Mit freundlichen Grüßen,
    iEnerqie.


    E1: Beim ersten Expander was hinzugefügt. (Nachtrag ist kursiv)


    E2:


    Beim umformatieren kommt der Fehler O.o

    Spoiler anzeigen

    [19:08:35] Neuer Text: 1:
    [19:08:35] Neuer Text: 2:
    [19:08:35] Neuer Text: 3:
    [19:08:35] Neuer Text: 4:
    [19:08:35] Neuer Text: 5:

    2 Mal editiert, zuletzt von Andosius ()

  • Dein Server geht aus, oder? Das ist normal, dass dann die Verbindung neu aufgebaut wird, wenn du den Server wieder startest, bzw. wenn der Server automatisch wieder gestartet wird.
    Genau dafür ist das Plugin.


    xD



    So war nicht nicht gemeint.
    Ich meine es so:
    Report 5 wird erstellt -> Server verliert Verbindung -> Connection Lost ohne Nachricht -> Console reagiert nicht.


    Zumindest ist nach dem letzten Debug klar, dass der Fehler beim Command (umformatieren) auftritt.

  • Geht leider schlecht, da ich eine Schleife nutze.
    Diese wird am Ende dann mit
    break;wieder beendet.


    Hängen tut es ja nur da:

    format(string2,sizeof(string2),"%s %s",zReport[i][2*MAX_PLAYER_NAME+10],SpielerName(playerid));
    TextDrawSetString(Text:Report[i],string2);


    Siehe alle meine Debugs, alles wird ordnungsgemäß verpackt, etc.
    Nur dort kommt diese blöde Ziege mit dem Namen "5"....


    Und endlos ist die Schleife auf jeden Fall nicht. ;)



    for(new i; i<5; i++)
    {
    if(aReport[i] == true || bReport[i] == true){
    failed++;
    continue;
    }
    if(aReport[i] == false && bReport[i] == false){
    bReport[i] = true;
    format(fReport[i][128],128,"Frage: %s",grund);
    format(string,sizeof(string),"[SUP] Spieler %s hat ein Ticket erstellt! ID: %d",SpielerName(playerid),i+1);
    SendeAllenAdmins(string);
    printf("ID: %i (+1 = %i) - aReport: %d - bReport: %d",i,i+1,aReport[i],bReport[i]);
    format(string2,sizeof(string2),"%s %s",zReport[i][2*MAX_PLAYER_NAME+10],SpielerName(playerid));
    TextDrawSetString(Text:Report[i],string2);
    printf("DEBUG-TDS: %s",string2);
    break;
    }
    if(failed == 5){
    SendClientMessage(playerid,COL_aREPORT,"DEBUG TEST FÜR'S ERSTE!");
    break;
    }
    }


    ----
    Jetzt macht zwar jeder noob C&P und wird das in einem anderen Thread haben aber egal.. ^^


    e1: gefailt, habe Tab gedrückt..



    Gruß,
    iEnerqie.

  • for(new i; i<5; i++)
    {
    printf("Starte i=%d", i);
    printf("%d / %d", aReport[i], bReport[i]);
    if(aReport[i] == true || bReport[i] == true)
    {
    failed++;
    printf("failed = %d", failed);
    continue;
    }
    if(aReport[i] == false && bReport[i] == false)
    {
    printf("Beides false");
    bReport[i] = true;
    printf("bReport = %d", bReport[i]);
    format(fReport[i][128],128,"Frage: %s",grund);
    printf("fReport = %s", fReport[i][128]);
    format(string,sizeof(string),"[SUP] Spieler %s hat ein Ticket erstellt! ID: %d",SpielerName(playerid),i+1);
    printf("string = %s", string);
    SendeAllenAdmins(string);
    printf("ID: %i (+1 = %i) - aReport: %d - bReport: %d",i,i+1,aReport[i],bReport[i]);
    format(string2,sizeof(string2),"%s %s",zReport[i][2*MAX_PLAYER_NAME+10],SpielerName(playerid));
    printf("DEBUG-TDS: %s",string2);
    TextDrawSetString(Text:Report[i],string2);
    printf("break");
    break;
    }
    if(failed == 5)
    {
    printf("failed");
    SendClientMessage(playerid,COL_aREPORT,"DEBUG TEST FÜR'S ERSTE!");
    break;
    }
    printf("ganz unten");
    }
    printf("FERTIG");
    Lass es mal so laufen und poste dann was im Log steht.

  • Ich habe zwar ein Durchblick von 0 aber okay, hier sind die Ergebnisse Jeffry: .

  • Er kommt jedes mal bis zum "FERTIG".


    Was ist das eigentlich?
    Hast du das eingegeben?

    Zitat

    252375263523862348762378


    Wenn nein, hat es einen bestimmten Grund, warum du [128] in Klammer hinter fReport hast?
    Wenn nein, schreib es mal so:
    for(new i; i<5; i++)
    {
    printf("Starte i=%d", i);
    printf("%d / %d", aReport[i], bReport[i]);
    if(aReport[i] == true || bReport[i] == true)
    {
    failed++;
    printf("failed = %d", failed);
    continue;
    }
    if(aReport[i] == false && bReport[i] == false)
    {
    printf("Beides false");
    bReport[i] = true;
    printf("bReport = %d", bReport[i]);
    format(fReport[i],128,"Frage: %s",grund);
    printf("fReport = %s", fReport[i][128]);
    format(string,sizeof(string),"[SUP] Spieler %s hat ein Ticket erstellt! ID: %d",SpielerName(playerid),i+1);
    printf("string = %s", string);
    SendeAllenAdmins(string);
    printf("ID: %i (+1 = %i) - aReport: %d - bReport: %d",i,i+1,aReport[i],bReport[i]);
    format(string2,sizeof(string2),"%s %s",zReport[i],SpielerName(playerid));
    printf("DEBUG-TDS: %s",string2);
    TextDrawSetString(Text:Report[i],string2);
    printf("break");
    break;
    }
    if(failed == 5)
    {
    printf("failed");
    SendClientMessage(playerid,COL_aREPORT,"DEBUG TEST FÜR'S ERSTE!");
    break;
    }
    printf("ganz unten");
    }
    printf("FERTIG");

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • Oh, danke. xD Sehr nett.
    fReport[ i ][128]
    -> Die Fragen


    Hier das Ergebnis:


    E1:


    Jedoch werden die Zahlen vor dem Ding nicht mehr angezeigt wie du im Debug siehst, bei der 1 fehlt sogar der Doppelpunkt.


    E2: [ i ] verbessert

  • Bei deinem zReport musst du das gleiche machen:
    format(zReport[f][2*MAX_PLAYER_NAME+10],2*MAX_PLAYER_NAME+10,"%d:",f+1);
    zu:
    format(zReport[f],2*MAX_PLAYER_NAME+10,"%d:",f+1);



    Und bei diesem print hab ich noch vergessen die 128 weg zu machen:
    printf("fReport = %s", fReport[i][128]);
    mach das auch noch.

  • Okay, das geht nun in die komplett falsche Richtung. :)



    Naja, trotzdem erstmal vielen Dank, dass du dich so bemühst.



    Gruß,
    iEnerqie.

  • Poste mal den ganzen Code der dazugehört, du hast das bestimmt überall falsch gemacht, deshalb klappt das auch nicht.


    "überall falsch gemacht,"
    Sehr nett, ich bedanke mich bei dir und dann sowas. Sympathisch.


    Ich habe den kompletten Code nochmal überarbeitet und alles 1:1 gemacht wie du es hattest:

    Code
    [20:43:20] Neuer Text: 
    [20:43:20] Neuer Text: 
    [20:43:20] Neuer Text: 
    [20:43:20] Neuer Text: 
    [20:43:20] Neuer Text:


    Hängt sich der Server denn immer noch auf?


    Habe vorhin versehentlich ein Return 1; gesetzt, das war die Ursache -> sollte kein Problem mehr sein.


    Kannst du mal sagen, was du überhaupt eingegeben hast?


    Frage: --> Hallo, Tag, Hola, Hallo, Tag, Hola, Hallo, Tag, Hola


    Das dient rein zum testen, der Inhalt ist irrelevant.



    Code:

    for(new f=0; f<5; f++){
    aReport[f] = false;
    bReport[f] = false;
    //format(zReport[f][2*MAX_PLAYER_NAME+10],2*MAX_PLAYER_NAME+10,"%d:",f+1);
    format(zReport[f],2*MAX_PLAYER_NAME+10,"%d:",f+1);
    printf("Neuer Text: %s", zReport[f][2*MAX_PLAYER_NAME+10]);
    }


    for(new i; i<5; i++)
    {
    printf("Starte i=%d", i);
    printf("%d / %d", aReport[i], bReport[i]);
    if(aReport[i] == true || bReport[i] == true)
    {
    failed++;
    printf("failed = %d", failed);
    continue;
    }
    if(aReport[i] == false && bReport[i] == false)
    {
    printf("Beides false");
    bReport[i] = true;
    printf("bReport = %d", bReport[i]);
    format(fReport[i],128,"Frage: %s",grund);
    printf("fReport = %s", fReport[i]);
    format(string,sizeof(string),"[SUP] Spieler %s hat ein Ticket erstellt! ID: %d",SpielerName(playerid),i+1);
    printf("string = %s", string);
    SendeAllenAdmins(string);
    printf("ID: %i (+1 = %i) - aReport: %d - bReport: %d",i,i+1,aReport[i],bReport[i]);
    format(string2,sizeof(string2),"%s %s",zReport[i],SpielerName(playerid));
    printf("DEBUG-TDS: %s",string2);
    TextDrawSetString(Text:Report[i],string2);
    printf("break");
    break;
    }
    if(failed == 5)
    {
    printf("failed");
    SendClientMessage(playerid,COL_aREPORT,"DEBUG TEST FÜR'S ERSTE!");
    break;
    }
    printf("ganz unten");
    }
    printf("FERTIG");


    Edit1: Rechtschreibung und Umformulierung

    Einmal editiert, zuletzt von Andosius ()

  • Was? :wacko:
    Ich hab dich doch nicht versucht blöd anzumachen...
    Und ich habe auch nie irgendwo behauptet, dass alles was ich mache richtig ist. Wer kann das von sich behaupten? Wenn etwas nicht klappt, dann ist es eben so, warum sollte ich dich dafür verantwortlich machen? Ich stehe zu meinen Fehlern, wenn ich einen gemacht habe.


    Ich hab schlichtweg gesagt, dass du den ganzen Code posten sollst, weil ich denke, dass du den Fehler (den du in dem Schnipsel ja schon drei mal gemacht hast) durchweg durch das ganze Report System gemacht hast. Das ist doch nicht schlimm, dafür helfen wir ja. Ich verstehe gerade nicht wo dein Problem ist. :S


    Nur um dir weiter helfen zu können brauche ich, oder brauchen wir, mehr Code, da ich selbst aus diesem Schnipsel nicht mehr herausbekomme. Und da ich dein System nicht geschrieben habe, weiß ich auch nicht was es macht, daher wäre es angebracht, wenn du ein paar Informationen dazugibst, zum Beispiel was du eingegeben hast, bzw, was eigentlich an den Stellen im print stehen sollte.



    Es tut mir Leid falls du dich angegriffen gefühlt hast, das ist keineswegs so gemeint. Zu sagen, dass sich ein Fehler durch den ganzen Code zieht ist meiner Meinung nach keine blöde Anmache, sondern nur eine Vermutung die man prüfen kann bzw. soll.


    Wie dem auch sei, ich helfe dir gerne weiter, dafür brauche ich aber mehr Informationen.



    EDIT:
    Problem wurde behoben.
    Der Fehler war, wie ich gesagt habe, dass überall die Arraygröße noch dazu angegeben worden ist.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()