Beiträge von Jeffry

    Ich wünsche Euch allen eine frohe Weihnachtszeit, bzw. hoffe, dass Ihr alle schöne Weihnachten hattet, die Feiertage sind ja schon fast vorbei. Denjenigen, die Urlaub haben, natürlich einen schönen (Rest-)Urlaub und allen denjenigen, die an den Feiertagen arbeiten, ein besonderes Dankeschön - ohne Euch würde vieles, was vielen Leuten schon fast normal erscheint, nicht möglich sein!


    An dieser Stelle möchte ich auch die Gelegenheit nutzen, dem Breadfish Team meinen Dank auszusprechen, für die unermüdliche Arbeit das ganze Jahr über, sowie deren Einsatz für den Aufbau der neuen Forums-Version! Es ist schön zu sehen, auch wenn die Scripting Base leider etwas ausstirbt, dass das Forum selbst und besonders die Community sich nach wie vor aktiv hier zusammenfindet! Lasst uns das auch in das neue Jahrzehnt weiter mitnehmen.


    Allen hier wünsche ich einen guten Rutsch in ein gesundes neues Jahr 2020! :)

    Gerne :)

    Nur warum TimestampToDate so ein Einfluss hatte ist mit schleierhaft^^

    Der Grund ist, dass TimestampToDate an der Stelle das Array sprengt, daher auch die Fehlermeldung vom Crashdetect.

    Das Array MonthTimes ist 12 Zellen groß (es sind ja 12 Monate). Das bedeutet, dass man mit den Indizes 0 bis 11 darauf zugreifen kann. Der Fehler in der Include ist aber, dass mit dem Monat darauf zugegriffen wird (sprich 1 bis 12). Somit gibt es immer im Dezember Fehler, die durch die TimestampToDate Include auftreten, da dort das Array gesprengt wird und der Code an der Stelle aufhört weiter zu laufen (daher hat er bei dir nie etwas gemacht).

    Versuche bitte mal folgendes:


    Code
    if(SpielerInfo[playerid][pPrison] > 0) {
        TimestampToDate(SpielerInfo[playerid][pPrisonT], year, month, day, hour, minute, second, 1);


    zu:

    Code
    printf("Vor Abfrage: pPrison: %d", SpielerInfo[playerid][pPrison]);
    if(SpielerInfo[playerid][pPrison] > 0) {
        printf("Nach Abfrage: pPrison: %d", SpielerInfo[playerid][pPrison]);
        TimestampToDate(SpielerInfo[playerid][pPrisonT], year, month, day, hour, minute, second, 1);
        printf("Nach TimestampToDate: pPrison: %d", SpielerInfo[playerid][pPrison]);

    Was gibt dir der Server Log dann aus?

    Ich werde das Tutorial im Dezember wenn ich Urlaub habe auf R41-4 aktualisieren, vorher schaffe ich es leider nicht.


    EDIT:

    MySQL R41-4 benutzen kann

    Ich habe die Aktualisierung auf R41-4 vorgenommen. Das Tutorial ist jetzt wieder aktuell.


    Änderungen in bestehenden Codes betreffen folgende Stellen:

    Code
    new handle;

    zu:

    Code
    new MySQL:handle;


    Sowie gegebenenfalls die mysql_log Funktion anpassen zu:

    Code
    mysql_log();

    Außerdem muss beim Laden der Fahrzeuge der Code wie folgt angepasst werden:


    Hauptsächlich ist das nur die Umstellung auf die neue Schreibweise von cache_get_value_name_int und cache_get_value_name_float, mehr nicht.


    Bei Fragen gerne melden!

    Du gibst die Nachricht aus, wenn es sich um eine Zahl handelt. Es fehlt ein ! davor.


    if(IsNumeric(inputtext)) return SCM(playerid,ROT,"Der betrag muss eine ZAHL sein!");
    zu:
    if(!IsNumeric(inputtext)) return SCM(playerid,ROT,"Der betrag muss eine ZAHL sein!");
    else


    Es macht Sinn, das else auch hin zu schreiben, auch wenn es nicht zwingend notwendig ist, da die obere Abfrage schon einen return hat, trotzdem macht es den Code deutlich leserlicher und verhindert solche Fehler.

    Trenne das mysql_format wie folgt:
    mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d',", PlayerInfo[playerid][pLevel]);
    mysql_format(handle, query, sizeof(query), "%s money = '%d', kills = '%d',", query, PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills]);
    //...
    mysql_format(handle, query, sizeof(query), "%s deaths = '%d' WHERE id = '%d'", query, PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][p_id]);

    Wie gesagt, du brauchst das gar nicht einzufügen, es ist standardmäßig bereits aktiv.


    Zwecks dem Tag Mismatch, der sollte trotzdem nicht kommen. Nutzt du eventuell, wie anfangs auch beim Plugin, eine falsche Include Version? Welche Version steht denn in deiner a_mysql.inc? Das muss auch die R41-4 sein.

    Du solltest davor aber gucken, welche Objekte zum Boden gehören, diese solltest du bei CreateObject belassen, da es sonst passieren kann dass du durch den Boden fällst, bevor die Objekte laden.

    Besser ist es, den Spieler kurz zu freezen (1 Sekunde), wenn er sich auf eine Map teleportiert, da sonst jedes Boden Objekt einen Streamer Slot Weg nimmt, was früher oder später dazu führt, dass der Streamer seine Arbeit nicht mehr richtig machen kann.