Beiträge von Kasakow

    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;
    }

    Schöne dargestellte Grafik! :saint:
    Die Frage die ich mir persönliche Stelle, wie soll ich das Umsetzen? Also bin gerne bereit mitzulesen und dann etwas rum zuprobieren. Klingt zwar komplexer, aber umso mehr sinnvolles Zeug in meiner Kugel rumschwirrt, um so besser!

    @reaL.


    Weil du den Cache erst in einem Callback auswerten lassen kannst.
    Aber noch vorab, du brauchst bei einer zweiseitigen Abfrage, kein return verwenden.
    Weil er wird bei dieser Abfrage Methode nicht das andere von beiden auch noch ausführen.


    Daher schreibe es mal so:

    new query[128];
    mysql_format(handle, query, sizeof(query), "SELECT ID FROM Accounts WHERE Name = '%e'", Name),
    mysql_pquery(handle, query, "Callback", "d", playerid); //d oder i für einen runden Zahlenwert


    forward Callback(playerid); //Kann beliebig umbenannt werden
    public Callback(playerid)
    {
    new rows;
    cache_get_row_count(rows);
    if(rows == 0)
    {
    }
    else
    {
    }
    }

    Ich habe leider gerade einen Impulskauf getätigt und mir eine Lizenz für die PawnIT IDE geholt, warte gerade noch auf den Entwickler dass er sich mit mir in Kontakt setzt bezüglich meines Erhalts der Lizenz.
    Finde es wirklich Schade, dass das Programm nicht weiter entwickelt wird. Hat jemand eine alternative für mich? Ich benutze in ferner Zukunft einen Windows Dedicated Server und und kompiliere auch auf dem System, ich möchte aber so ein tolles Features wie bei der PawnIT IDE mit der verschlüsselten PAWN Datei? Kennt da jemand was ähnliches?