Premium Zeit weniger machen

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
  • Guten Tag,


    Und zwar bin ich gerade am Premium dran, alles läuft auch sehr gut.


    Ich weiss nun nicht wie ich dies erstellen soll die Premium Zeit wird in Minuten gerechnet.
    Ich möchte aber auch das wenn der Spieler Offline ist das es runter gezählt wird.


    Beispiel:


    Spieler hat 60 Minuten wird auch in der Datenbank eingetragen, entspricht 1 Stunde.
    Wenn der Spieler auch Offline ist soll er nach einer Minute auf 59 Minuten dann nach 2 Minuten auf 58 Minuten.



    Derzeitiger Code:



    mysql_format(handle,query,sizeof(query),"SELECT * FROM `"SERVER_TAGS"_accounts` WHERE `PremiumZeit` >= '1'");
    mysql_pquery(handle,query,"PremiumUpdate");


    Wie mach ich es nun das er trotzdem Offline ist runterzählt ?

  • Entweder, wenn er wieder online kommt den Zeitunterschied seit dem letzten Login berechnen, zB durch Timestamps (sinnvollste Variante), oder nen Timer einbauen, der das im Script immer macht (eig unnötig, frisst unnötig Performance) oder nen Bash/AWK/... Script laufen lassen, das das updatet (auch nicht so sinnvoll, aber würde nicht zu lasten des SAMP Servers gehen)


    Also wenn er online ist, würde ich nen Timer zum checken setzen, und wenn er offline ist, das mit dem Timestamp beim nächsten Login berechnen und im Timer mit verarbeiten bzw. als extra LoginFunktion vonwegen "Während deiner Abwesenheit hast du ... Premiumpunkte gesammelt" (oder sowas ähnliches).

  • Entweder, wenn er wieder online kommt den Zeitunterschied seit dem letzten Login berechnen, zB durch Timestamps (sinnvollste Variante), oder nen Timer einbauen, der das im Script immer macht (eig unnötig, frisst unnötig Performance) oder nen Bash/AWK/... Script laufen lassen, das das updatet (auch nicht so sinnvoll, aber würde nicht zu lasten des SAMP Servers gehen)


    Also wenn er online ist, würde ich nen Timer zum checken setzen, und wenn er offline ist, das mit dem Timestamp beim nächsten Login berechnen und im Timer mit verarbeiten bzw. als extra LoginFunktion vonwegen "Während deiner Abwesenheit hast du ... Premiumpunkte gesammelt" (oder sowas ähnliches).

    Beispiel ?


    Bei mir sieht es immoment so aus..


    forward UpdateServer(playerid);public UpdateServer(playerid){for(new i=0;i<GetMaxPlayers();i++){new query[128+MAX_PLAYER_NAME];mysql_format(handle,query,sizeof(query),"SELECT * FROM `"SERVER_TAGS"_accounts` WHERE `PremiumZeit` >= '1'");mysql_pquery(handle,query,"PremiumUpdate");}return 1;}



    forward PremiumUpdate();public PremiumUpdate(){for(new i=0;i<GetMaxPlayers();i++){if(Spieler[i][pAccountLogged]){if(Spieler[i][pAccountPremiumZeit] >= 1)Spieler[i][pAccountPremiumZeit] -= 1;return 1;}}new sTime,query[128];sTime -= 1;mysql_format(handle,query,sizeof(query),"UPDATE `"SERVER_TAGS"_accounts` SET `AccountPremiumZeit` = '%d' ",sTime);mysql_pquery(handle,query);return 1;}

  • Wenn du "UpdateServer" als 1 Minuten Timer laufen lässt wird jede Minute von jedem Account der Premium hat eins abgezählt. Nur ich denke mal in "PremiumUpdate" musst du die "cache_get_row_count" und "cache_get_field" an dein Mysql Plugin anpassen. Ich hab schon länger nichts mehr mit Pawn gemacht und auch grad nichts zur Hand um nachzusehen wie die Befehle eigentlich lauten müssen.

  • Wenn du "UpdateServer" als 1 Minuten Timer laufen lässt wird jede Minute von jedem Account der Premium hat eins abgezählt. Nur ich denke mal in "PremiumUpdate" musst du die "cache_get_row_count" und "cache_get_field" an dein Mysql Plugin anpassen. Ich hab schon länger nichts mehr mit Pawn gemacht und auch grad nichts zur Hand um nachzusehen wie die Befehle eigentlich lauten müssen.

    funktioniert leider nicht.

  • Hast du das jetzt 1:1 übernommen oder hast du was geändert? Wenn ja schick mal deinen Code.

    ich habe es 1 zu 1 übernommen.


    Ich benutze die MySQL Version R41-2


    Fehler:



    Divinus.pwn(1306) : warning 202: number of arguments does not match definition
    Divinus.pwn(1310) : warning 202: number of arguments does not match definition
    Divinus.pwn(1311) : warning 202: number of arguments does not match definition


    Code:



    new rows = cache_get_row_count(); // 1306
    new user_id = cache_get_value_name_int(i,"ID"); // 13010
    new zeit = cache_get_value_name_int(i,"PremiumZeit"); // 1311

    Einmal editiert, zuletzt von x Sky.NET x ()