Beiträge von Jeffry

    Das ist falsch. UPDATE ändert einen Wert in der Datenbank. Du musst mit SELECT arbeiten, so wie du die Spieler-Statistiken (Geld etc...) aus der Datenbank lädst.
    Bei OnPlayerDisconnect -> SavePlayer nutzt du UPDATE, du speicherst etwas. Bei OnPlayerConnect -> LoginPlayer nutzt du SELECT, du lädst etwas.

    Möglicherweise hast du das Textdraw Limit überschritten, wenn MAX_PLAYERS noch auf 500 bzw. 1000 ist, dann ist das sehr wahrscheinlich.
    Erstelle PlayerTextdraws anstatt diesen globalen Textdraws, und erstelle diese bei OnPlayerConnect, zeige sie dem Spieler bei OnPlayerSpawn an und lösche sie bei OnPlayerDisconnect wieder.

    - Erstelle das Textdraw bei OnPlayerConnect (CreatePlayerTextDraw + Einstellungen von deinem ersten Post).
    - Zeige dem Spieler das Textdraw bei OnPlayerSpawn.
    - Lösche das Textdraw bei OnPlayerDisconnect.


    Anstatt "Money1", das du einmal geschrieben hast schreibe "Money".

    OnPlayerCommandText muss 0 zurück geben, damit es in den nächsten Code weiter geht.
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp(cmdtext, "/Drivein", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(IstErAnEinemDrivein(playerid))
    {
    ShowPlayerDialog(playerid,DIALOG_Essen, DIALOG_STYLE_LIST, "Willkommen im Drivein\n Bitte geben sie ihre Bestellung auf", "Cheesburger\nMcWraps\n Big Mac", "Weiter", "Schließen");
    }
    else
    {
    SendClientMessage(playerid, ROT, "Du bist an keinem Drivein !");
    return 1;
    }
    }
    return 1;
    }
    return 0;
    }

    Du hattest die beiden letzten returns vertauscht. So passt es.



    Für OnPlayerCommandText gilt:
    return 1 -> Ende.
    return 0 -> Ende des aktuellen OnPlayerCommandText, nächster Code in dem OnPlayerCommandText vorhanden ist wird genommen.

    @[LnD]JustMe.77: Das ist dann relativ kompliziert. Du benötigst eine Datei in die du alle deine Admins rein schreibst und darüber dann ausgeben lässt. Kommt jemand dazu, musst du ihn der Datei hinzufügen (fwrite) und wenn jemand das Team verlässt musst du ihn entfernen (alle Zeilen auslesen, wieder in die Datei schreiben, außer die Zeile mit entsprechendem Name).


    Grapefruit:
    Du setzt das wahrscheinlich nicht auf 0 zurück.
    Schreibe es dann einfach so:
    public OnPlayerDisconnect(playerid, reason)
    {
    new Float:x, Float:y, Float:z, string[80], hour, mins, sec;
    SpielerInfo[playerid][sLogout] = gettime()+60;
    GetPlayerPos(playerid, x, y, z);
    gettime(hour, mins, sec);
    new pickup = CreatePickup(1272, 2, x, y, z, -1);
    format(string, sizeof(string), "*%s*\n**%d.%d.%d", SpielerInfo[playerid][sName], hour, mins, sec);
    new Text3D:label = Create3DTextLabel(string, COLOR_WHITE, x, y, z, 40.0, 0, 0);
    SetTimerEx("Logout", 60000, 0, "dd", _:label, pickup);
    SavePlayer(playerid);
    SpielerInfo[playerid][sLogout] = 0;
    return 1;
    }


    Außerdem musst du das sLogout beim Login natürlich auch aus der Datenbank laden lassen, sonst bringt es ja nichts.

    Hast du den Kopf von "Logout" dazu geändert?
    public Logout(label, pickup)
    ebenso beim forward.


    Das _: entfernt den Tag (also das Text3D:) und macht daraus eine Zahl.


    @[LnD]JustMe.77: Oh, sorry. Hab ich nicht gesehen.
    MySQL oder Dini?

    Ok, dann musst du mit dem Timestamp den gettime zurück gibt arbeiten.


    public Logout(label, pickup)
    {
    DestroyPickup(pickup);
    Delete3DTextLabel(Text3D:label);
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    new Float:x, Float:y, Float:z, string[80], hour, mins, sec;
    SpielerInfo[playerid][sLogout] = gettime()+60;
    GetPlayerPos(playerid, x, y, z);
    gettime(hour, mins, sec);
    new pickup = CreatePickup(1272, 2, x, y, z, -1);
    format(string, sizeof(string), "*%s*\n**%d.%d.%d", SpielerInfo[playerid][sName], hour, mins, sec);
    new Text3D:label = Create3DTextLabel(string, COLOR_WHITE, x, y, z, 40.0, 0, 0);
    SetTimerEx("Logout", 60000, 0, "dd", _:label, pickup);
    SavePlayer(playerid);
    return 1;
    }


    if(SpielerInfo[playerid][sLogout] > gettime()) return SendClientMessage(playerid, COLOR_WHITE, "Dein Logout Pickup ist noch nicht verschwunden!");

    Ok, da du ja jetzt den Filterscript erstellt hast, müsste dieser im Ordner "filterscripts" gespeichert sein.
    Öffne nun die server.cfg und trage bei "filterscripts" einfach den Name der Datei ein (Filterscript-Name). Dann startest du den Server und kannst ihn ganz normal verwenden (Befehle etc...).

    Das was du da vor hast klappt so nicht, weil die playerid nach OnPlayerDisconnect ja nicht mehr online ist, sprich nach den 60 Sekunden SavePlayer aufzurufen klappt nicht.
    Wie genau willst du es denn haben?


    Spieler geht offline -> Pickup wird erstellt (wird nach 60 Sekunden entfernt) -> Spieler kommt online -> Falls 60 Sekunden rum kann er spawnen, ansonsten muss er warten. Ist das richtig so?