Beiträge von Kasakow

    Vielen Dank Kaliber, es funktioniert nun wie gegossen.
    Da ich es aber nicht mag, Copy & Paste zu betreiben & dann bestimmte Sektoren des Codes, nicht zu verstehen, hab ich noch die ein oder andere Frage.


    EOS? End of String?
    Inwiefern lässt sich das irgendwo noch einsetzen.
    Ich meine, könnte ich z.B anstatt if(!strlen(string)) auch if(string[0] == EOS) einsetzen? Und inwiefern macht das dann auch Sinn? Dann könnte ich ja auch if(!string[0]) einsetzen oder nicht?
    Wo lässt sich EOS wo verwenden?


    if(rows%10 == 0) btnB = "Weiter",SetPVarInt(playerid,"ProtocolBtnB",1);
    Damit frage ich ab ob der PVar Zahlenwert kleiner als 10 ist oder wie? So habe ich meinen Code noch nicht gestaltet.


    Auch wenn ich nicht müsste, möchte ich noch was hinzufügen.
    Ich hatte über 1.5 Jahre Pause beim Skripten und bin ein bisschen raus, ich bin gewiss kein Volldepp aber ich muss wieder reinkommen, auch was das ordentliche Arbeiten angeht.-
    Ich werde mal mit nem Zeichenzähler durch meine Strings gehen und schauen wie viel Speicher ich überhaupt benötige.

    "Zahlung per Handy".
    Das erinnert mich.. an mich selber früher.
    Mama zahlt den o2 Handyvertrag und ich verballere mehrere hundert Euro via Handyrechnung um es zu Echtgeld zu machen.. nur so eine Idee..Mister.. eine reine Spekulation.
    Sorry Made, aber das was du hier versuchst, ist richtig mies. Ich nehm dir das nicht ab, dass du mit Freude Steam Guthaben verkaufst für nur die Hälfte.

    Naja, man es kann aber sicherlich einrichten, das sobald einmal auf Weiter geklickt wurde, der Schließen Button als Zurück benutzt werden kann.


    Ich habe keine Ahnung, was du meinst.

    Wenn ich auf Seite 2 gehe, weil von meinem Account aus, sind mehrer MySQL Seiten vorhanden, dann sagt er beim "!response Button", das nichts mehr vorhanden sei.


    //EDIT
    Einigermaßen geht das jetzt auch.. aber bei der ersten Seite gibt er mir dann aus das nicht mehr da sei & dass kein Eintrag gefunden wurde.
    Gerne kann ich dir es auch mit Bildern verdeutlichen @Kaliber.



    case D_PP:
    {
    new end = GetPVarInt(playerid,"ProtocolEnd");
    DeletePVar(playerid,"ProtocolEnd");
    if(!response)
    {
    if(end%10==0)
    {
    ShowPlayerProtocol(playerid,end-10);
    return 1;
    }
    DeletePVar(playerid,"ProtocolName"), SCM(playerid, COLOR_GREY, "Du hast entweder das Fenster geschlossen oder es sind keine weiteren Einträge vorhanden!");
    }
    ShowPlayerProtocol(playerid,end+10);
    }

    @Kaliber
    So ein leichtsinnsfehler.. bei dir hat es gleich funktioniert .. weil du ID 0 bist und dein Enumfeld auch das erste ist.
    Ich hab halt einfach die playerid nicht mit angegeben.
    Aktuell funktioniert es, aber rückwärts. Sprich, wenn ich auf weiter klicke & es sind noch Einträge vorhanden, dann sagt er ist nichts mehr da.
    Wenn aber noch was zu lesen da ist & ich auf Schließen/Zurück gehe.. dann zeigt er mir die nächsten Einträge.

    Um das richtig zu verstehen, also das ganze funktioniert jetzt..
    Ich lade das Skript bei Gitlab hoch, der Windows Server zieht es sich, kompiliert es, und sagt mir bescheid ? und die Amx.. ist auch gleich im Windows Ordner, beim Server?

    @Kaliber
    Ich konnte mich Relativ okay in deinen Code hineinversetzen.
    Aktuell funktioniert er, so aber auch nicht, also es passiert nach Eingabe des Commands immer noch nichts.
    Ich bekomme in meiner LogCore eine Meldung.


    SQL
    [11:52:47] [ERROR] signal 2 (SIGINT) catched; shutting log-core down (errno: 0, signal code: 128, exit status: 141512)

    Ja, nutze ProtocolRead nur in diesen Codes.
    Ich habe noch nicht mit LIMIT gearbeitet und daher ist es mir noch nicht im Begriff, wie ich es umsetzen soll.
    Ja ich habe es beim Abschicken auch gemerkt, ich optimiere meine Array Größen dann immer mal wieder im Laufe der Woche an eine ordentliche ausreichende Größe an.


    ProtocolRead[P_MAX][600][3] | So habe ich es deklariert.

    Nutze doch bitte die PAWN Box für solch Quellcodes, danke!
    Ja, also.. ich nehme an dass du die soweit die neuste Version von BlueG nutzt, so wie fast jeder heutzutage.
    Von daher, wird das so nicht funktionieren.
    Schicke anstatt deinem Funktionsaufruf, einen Query mit einer Aufforderung an die Datenbank, eine Spalte zu markieren unter wie folgtem Namen: "playername". In dem Callback, arbeitest du dann mit dem Cache der dir zur Verfügung steht.
    Früher ging das noch .. bei R5 habe ich das mal so angewendet mit mysql_num_rows(); unter der gleichen Funktion.
    Sprich, so wie ich es dir Oben geschickt habe.

    Leider führt er den Code nicht ordnungsgemäß aus.
    Auch wenn ich einen fehlenden Datensatz suchen möchte, gibt er mir die Fehlermeldung nicht aus.
    Ich möchte dass das System mir pro Seite im Dialog, 10-20 Einträge Zeigt vom Spieler.
    Ich habe auch gemerkt, das der Code ziemlich Recourcenfressend ist, die Dateigröße wurde auf einen Schwung viel größer.


    Quellcode:

    ocmd:pp(playerid, params[])
    {
    if(pInfo[playerid][pAdmin] < 6)return 1;
    new query[256];
    if(sscanf(params, "s", query))return SCM(playerid, COLOR_GREY, "Befehl: /pp [Name]");
    mysql_format(handle, query, sizeof query, "SELECT * FROM playerprotocol WHERE Name='%e'", query),
    mysql_pquery(handle, query, "PlayerQuery", "d", PLAYER_QUERY_PPROTOCOL);
    return 1;
    }


    case PLAYER_QUERY_PPROTOCOL:
    {
    if(!rows)return SCM(playerid, COLOR_LESSRED, "Es wurde kein Eintrag gefunden.");
    SetPVarInt(playerid, "ProtocolStep", rows);
    new str[1024];
    str = "Datum\tUhrzeut\tInhalt\n";
    for(new i;i<rows;i++)
    {
    cache_get_value_name(i, "Datum", ProtocolRead[playerid][i][0], 600),
    cache_get_value_name(i, "Uhrzeit", ProtocolRead[playerid][i][1], 600),
    cache_get_value_name(i, "Inhalt", ProtocolRead[playerid][i][2], 600);
    if(i <= 9)
    {
    if(strlen(ProtocolRead[playerid][i][2]) > 0)
    {
    format(str, sizeof str, "%s%s\t%s\t%s\n", str, ProtocolRead[playerid][i][0], ProtocolRead[playerid][i][1], ProtocolRead[playerid][i][2]);
    }
    }
    }
    ShowPlayerDialog(playerid, D_PP, DIALOG_STYLE_TABLIST_HEADERS, "Spielerprotokoll", str, "Schließen", "");
    }


    case D_PP:
    {
    if(!response || listitem || GetPVarInt(playerid, "ProtocolStep") >= countProtoStep(playerid))
    {
    SCM(playerid, COLOR_GREY, "Du hast entweder das Fenster geschlossen oder es sind keine weiteren Einträge vorhanden!");
    return 1;
    }
    query = "Datum\tUhrzeit\tInhalt\n";
    for(new k = GetPVarInt(playerid, "ProtocolStep"), i; i<k+10;i++)
    {
    format(query, sizeof query, "%s%s\t%s\t%s", ProtocolRead[playerid][i][0], ProtocolRead[playerid][i][1], ProtocolRead[playerid][i][2]),
    SetPVarInt(playerid, "ProtocolStep", GetPVarInt(playerid, "ProtocolStep") + 1);
    }
    ShowPlayerDialog(playerid, D_PP, DIALOG_STYLE_TABLIST_HEADERS, "Spielerprotokoll", query, "Schließen", "");
    }


    stock countProtoStep(playerid)
    {
    new counter;
    for(new i;i<sizeof ProtocolRead;i++)
    {
    if(strlen(ProtocolRead[playerid][i][2]) > 0)counter ++;
    }
    return counter;
    }