Report system Spackt Hilfe

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


    Gabe ein Problem Das Report System bugt rum. Die Zuordnung mit den Spielern die den Report geschrieben haben stimmt nicht.



    Z.b Es geht ein Report von Spieler A ein, Ich mach "/reports" , Klick
    auf die Katigorie wähl den User aus und im Chat steht net der Name des
    Spielers sondern z.b "[BOT]Zugbot schrieb"



    Heißt das mit der zuordnung etwas nicht ordnungsgemäß funktioniert. Kann mir da einer helfen






    Bitte um Hilfe MfG lui

  • Also Bein Fragen passiert das also den hier ei Fragen 0

  • Ändere:


    case DIALOG_REPORTANNAHME:
    {
    new clickedlistitem = Spieler[playerid][pReportSelect],string[1000],headerstring[64];
    if(response == 0)
    {
    Spieler[playerid][pReportSelect] = 0;
    CancelSelectTextDraw(playerid);
    return 1;
    }
    else
    {
    if(!IsPlayerConnected(ReportListitem[listitem][rID][clickedlistitem]) || ReportListitem[listitem][rID][clickedlistitem] == -1)
    zu:
    case DIALOG_REPORTANNAHME:
    {
    new clickedlistitem = Spieler[playerid][pReportSelect],string[1000],headerstring[64];
    if(response == 0)
    {
    Spieler[playerid][pReportSelect] = 0;
    CancelSelectTextDraw(playerid);
    return 1;
    }
    else
    {
    new counter;
    ForEachPlayer(i)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i) && GetPVarInt(i,"Eingeloggt") == 1)
    {
    if(ReportListitem[i][rID][0] != -1)
    {
    if(counter == listitem)
    {
    listitem = i;
    break;
    }
    counter++;
    }
    }
    }
    if(!IsPlayerConnected(ReportListitem[listitem][rID][clickedlistitem]) || ReportListitem[listitem][rID][clickedlistitem] == -1)

    So wird das listitem zu dem eigentlichen "i" gesetzt, denn dort steht ja die ID drin.
    Wenn nämlich erst der Spieler mit der ID 5 eine Frage geschrieben hat, dann steht dessen Frage bei listitem 0. Wenn du dann direkt mit listitem auf das Array zugreifst, dann wird der Wert von Spieler ID 0 ausgelesen, und nicht der von der ID 5.



    Diese Anpassung musst du bei den anderen Reports auch machen.

  • ja ich meine wo ich die noch ein fügen muss der regelverstoß bugt nur noch der hat die id [2] stats 0



    Ich glaube ich habe es ist das so Okey


  • Nein, aber versuche es so, da du - wie ich sehe - alle über einen Dialog ansprichst:
    if(ReportListitem[i][rID][0] != -1)
    zu:
    if(ReportListitem[i][rID][clickedlistitem] != -1)


    Nur in dem Code ändern, den ich dir gegeben habe (Zeile 17).


    Die neue Schleife die du hinzugefügt hast kannst du wieder weg machen.

  • also so wie ich das jetzt habe geht das



    Aber ob das os richtig ist das weiß ich nicht MfG

  • Das funktioniert unter bestimmten Bedingungen korrekt, ja. Allerdings nicht immer, und zwar dann, wenn der Spieler sowohl einen Report bei [0] hat, als auch bei [2] und die Listitems eine unterschiedliche Anzahl an anderen Listitems davor haben.


    Ändere es deshalb wie oben geschrieben zu:
    new counter;
    ForEachPlayer(i)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i) && GetPVarInt(i,"Eingeloggt") == 1)
    {
    if(ReportListitem[i][rID][clickedlistitem] != -1)
    {
    if(counter == listitem)
    {
    listitem = i;
    break;
    }
    counter++;
    }
    }
    }


    Dann sollte er, so wie du dein System aufgebaut hast, direkt die richtige Nummer (0 oder 2, oder eben andere) nehmen.