Beiträge von Hagi

    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)//Ob er in ein Polizei Fahrzeug einsteigt und dies NICHT als Beifahrer sondern als Fahrer
    {
    if(PremiumFahrzeug(GetPlayerVehicleID(playerid))//Falls das Fahrzeug indem der Spieler eingestiegen ist ein Polizeifahrzeug ist...
    {
    if(isPlayerPremium(playerid))
    {
    SendClientMessage(playerid,HELLROT,"Du bist kein Premium Mitglied!");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }
    }

    An sich ist es in der Funktion schon deklariert.
    Zeig mal genau den Bereich, auf den sich der Error bezieht. Ist das die Funktion public PremiumFahrzeuge(vehicleid)?

    Nein, wenn du eine Variable zum zwischenspeichern nutzt und die beim Laden initialisierst, dann nicht. Du verwendest in Abfragen dann nur noch die Variable.

    Moin,
    Ich habe eine Logitech G15 und die reagiert (also das Display) nach dem Energiesparmodus von Windows 7 nicht mehr. Das Problem ist auch allseits bekannt, es gibt wohl aber noch keinen Patch für die Logitech Gaming Software.


    Man kann das Problem wohl aber mit einer bat. Datei beheben (zumindest elegant umgehen), welche man per Aufgabenplanung von Windows nach Reaktivierung aus dem Energiesparmodus ausführen lässt. Soweit funktioniert auch alles.


    Meine Bat Datei:

    Code
    TASKKILL /F /IM LCore.exe 
    start /D "%cd%/" /MIN LCore.exe


    Die Bat Datei wird korrekt ausgeführt, jedoch startet das Programm nicht minimiert. Das möchte ich aber.
    Kennt jemand die Lösung für das Problem?

    Ja klar, denn du kannst alle Objecte (Zeile) deines Arrays via For Schleife durchlaufen.


    enum MuellEnum
    {
    MuellID,
    Float:XPos,
    Float:YPos,
    Float:ZPos
    };
    #define maxmuellobjects 3
    new Muell[maxmuellobjects][MuellEnum]=
    {
    {2677, 1529.6143,-1439.0948,13.3828},
    {2677, 1506.7222,-1443.4045,13.3828},
    {2677, 1485.4395,-1438.5841,13.3828}
    };
    new muellobject[maxmuellobjects];

    for(new i = 0;i<sizeof(Muell);i++)
    {


    muellobject[i] = CreateObject(Muell[i][MuellID], Muell[i][XPos],.....);
    }


    Dann kannst du bei OnPlayerPickupPickup überprüfen ob die pickupid der gleich ist, welche in einem der muellobject[] zellen gespeichert ist.


    edit: Das geht natürlich so nur bei Pickups und nicht bei Objekten.

    An sich erstmal garnicht. Aber du kannst z.B. beim Connecten abfragen, ob die Zeit schon vorüber ist und dann alle Werte bezüglich Premium aus null oder 0 setzen.


    edit: Prototype: Jo hast recht, der Code war nicht nicht optimiert.

    ocmd:premium(playerid,params[])
    {
    new pID,dauer;
    new timestamp,str[128];


    if(sscanf(params,"ud",pID,dauer)) return SendClientMessage(playerid,GRAU,"Benutze: /premium [SpielerName/ID] [Wochen]");
    timestamp = gettime();
    new sekunden= dauer * 7*24*60*60;
    timestamp += sekunden;
    format(str,sizeof(str),"Blabla hat %d Wochen Premium",dauer);
    SendClientMessageToAll(ROT,str);
    mysql_SetInt("accounts", "Premium", timestamp, "Name", SpielerName(pID));
    SavePlayer(pID);
    return 1;
    }


    Sie Sequenz war falsch.


    edit:


    new sekunden= dauer * 7*24*60*60;


    macht aus den angegebenen Wochen (dauer)


    z.B.


    1 Woche = 7 Tage = 168 Stunden = 10080 Minuten = 604800 Sekunden
    Und wir brauchen ja Sekunden für den Timestamp

    Wenn du das machst


    new sekunden = dauer * 60;
    timestamp += sekunden;


    Bevor dauer überhaupt initialisiert ist, kann das auch nix werden (0*60)


    edit: und für Wochen musst du aus Sekunden noch Minuten,Stunden,Tage und Wochen machen.

    Beim erhalten des Premiums:


    Du holst den Timestamp und speicherst diesen in einer Datei (z.B. Flag = "Premzeit")(Integer).
    Du speicherst die Dauer des Premium in der Datei (z.B. Flag = "Premdauer")(Integer)(z.B. in Tagen).


    Abfragen des Premiums


    Wenn der Spieler sich einloggt fragst du ab:


    Ist aktueller Timestamp kleiner gleich des gespeicherten Timestamp plus der Dauer * 24*60*60.


    if(gettime() < savedtime+dauer*24*60*60)
    savedtime und dauer liest du aus der oben erstellten Datei aus.