MySQL Timer? Mit Spieler Arbeiten, wenn offline?

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
  • Hey,


    ich habe verschiedenes vor, die mit dem Player passieren sollen, wenn sie offline sind.



    Beispiel: Logout Pickup, wenn er Offline ist, soll das Pickup beispielsweise nach einer Minute gelöscht werden.
    Aber wie kann es denn gelöscht werden, wenn er offline ist? ich kann doch nicht mehr playerid benutzen, oder? Wie würde man dies denn richtig machen?



    Genauso, wenn ich eine Art "Schutzfunktion" für den Spieler einfüge. Sagen wir, er hat irgendwas gemacht, wenn sich ausloggt/crashed hat er 2min Zeit sich wieder einzuloggen
    ansonsten ist es weg, was er angefangen hat. Jemand dazu eine Idee?




    Gruß
    Kevin

    Mit freundlichen Grüßen,


    Keslo


  • #define MAX_DISCONNECT_IDS 100


    new disid[MAX_DISCONNECT_IDS];
    new dis_pickup[MAX_DISCONNECT_IDS];


    public OnGameModeInit()
    {
    for(new i = 0; i < MAX_DISCONNECT_IDS; i++)
    {
    disid[i] = -1; // Alles eben auf -1 setzen
    }
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);

    new id = GetFreeDisconnectID();
    dis_pickup[id] = pickup = CreatePickup(1227, 2, X, Y, Z, -1);
    SetTimerEx("DestroyDisPickup", (1000*60), false, "i", id);
    return 1;
    }


    forward DestroyDisPickup(id);
    public DestroyDisPickup(id)
    {
    DestroyPickup(id);
    return 1;
    }


    stock GetFreeDisconnectID()
    {
    for(new i = 0; i < MAX_DISCONNECT_IDS; i++)
    {
    if(disid[i] != i) return i;
    }
    return -1;
    }

    Keine Ahnung ob's geht. Aber so in etwa wenn du mit ID's arbeiten willst. Du kannst auch weiterhin noch die Spielerid verwenden, blöd allerdings wenn dann jemand mit der gleichen ID spawnt und direkt wieder disconnected in der Zeit wo noch das andere Pickup da ist (zwei Pickups mit der selben ID)


    /edit
    Zur Schutzfunktion:



    public OnPlayerDisconnect(playerid, reason)
    {
    if(reason == 0) // Crash
    {
    new name[MAX_PLAYER_NAME + 1];
    GetPlayerName(playerid, name, sizeof(name));
    SetTimerEx("CrashTimer", (1000*60)*2, false, "s", name);
    }
    return 1;
    }

  • @m4a_X


    Danke dir erstmal, werde es nachher testen :)


    Wie sieht es aus, wenn ich zb ein Event Ingame erstellen will und die Zeit bzw Datum angebe, wann das Event beendet werden soll?
    Ingame sollte dann zb stehen: "Event läuft in 5 Tagen und 22 Stunden aus"... dort eine idee?:D




    Push

    Mit freundlichen Grüßen,


    Keslo

    Einmal editiert, zuletzt von Keslo ()