Ich habe einfach mal die Buttons vertauscht, also so, wie ich es gewöhnt bin
Das Ding ist halt, wenn ich eine oder mehrere Seiten zurück gehe, schließt er und sagt dass nichts mehr sei.
Beiträge von Kasakow
-
-
Orientiere wie @Kaliber bereits erwähnte am Dreisatz.
Du lässt jeden Kilometer 0.131L abziehen, dann geht die Rechnung auf. -
Der letzte Code den du mir bearbeitest hast, so sieht es da aktuell aus.
-
@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. -
Nop, irgendwie will er nicht .. immer wieder INVALID AMX instance
-
Leider tut sich, immer noch nichts.
In der SQL Error Log, sagt er, dass ich eine, ungültige AMX Instanz habe."[00:27:24] [plugins/mysql] CCallback::Execute - invalid AMX instance"
-
Ich schau später / morgen mal rüber.
Gitlab gehört BF und kostet 5 Euro Monatlich ? -
Und die PWN verbleibt dann nicht auf dem Windows vServer ?
-
Habe es gerade ausprobiert. Es reagiert immer noch nicht.
//EDIT
@Kaliber
Crashdetect gibt mir nicht aus.Meine Tabellenstruktur:
Es wird auf jeden Fall was in die Log gepostet:
-
mysql_log(LOG_ALL);else print(">> [MYSQL]: Die Verbindung zur Datenbank konnte NICHT erfolreich hergestellt werden. Der Server wird nun heruntergefahren."),
Mach mal das else eine Zeile drunter.
-
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. -
new query[MAX_PLAYERS_NAME+1];
Also allein da, würde es scheitern. Schicke doch noch damit einen Query weg..
Ich schaue mir deinen Code morgen mal genauer an, bin jetzt schlafen.. sollte auch nicht um die Uhrzeit am Skript sitzen, das geht immer Schief. -
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. -
Ok dachte ich mir
auf jeden Fall.
Brauche aber die Funktion so dass er das Return
Was soll es denn für eine Funktion werden?
Ich bezweifle es nämlich, dass du was damit Anfangen kannst, wenn er bei beiden Reihen Abfragen den Zahlenwert 1 zurückgibt. -
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!
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! -
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 Zahlenwertforward Callback(playerid); //Kann beliebig umbenannt werden
public Callback(playerid)
{
new rows;
cache_get_row_count(rows);
if(rows == 0)
{
}
else
{
}
} -
Ich kompiliere mein Skript standardmäßig mit Pawno.