Timer speichern

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
  • Hi ich habe versucht einen Timer zu speichern und beim connecten wieder auf zu rufen aber irgendwie funkt es nicht.
    Kann mir wer helfen pls?


    SetTimer("sellcarsekundenabfrage",1000,true);


    ocmd:sellcar(playerid,params[])
    {
    if(GetPVarInt(playerid,"Beruf")==2)
    {
    if(GetPVarInt(playerid,"Dropcarstopp")==0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    if(IsPlayerInRangeOfPoint(playerid,5.0,-2234.5779,160.3368,35.3203))
    {
    new verkaufsauto = GetPlayerVehicleID(playerid);
    new Float:health;
    new zustandspreis = GetVehicleHealth(verkaufsauto,health);
    new zufallspreis = random(2500);
    if(GetVehicleHealth(playerid,health)>1000)return SendClientMessage(playerid,COLOR_GREY,"Autos mit mehr als 1000 Zustand können nicht verkauft werden.");
    new verkaufspreis = zustandspreis + zufallspreis;
    GivePlayerMoney(playerid,verkaufspreis);
    SetVehicleToRespawn(verkaufsauto);
    SendClientMessage(playerid,COLOR_LAWNGREEN,"Wir konnten das Fahrzeug verkaufen.");
    new string[128];
    format(string,sizeof(string),"Wir bezahlen dir dafür %d$.",verkaufspreis);
    SendClientMessage(playerid,COLOR_LAWNGREEN,string);
    DisablePlayerCheckpoint(playerid);
    SetPVarInt(playerid,"Dropcarstopp",1);
    SetPVarInt(playerid,"Dropcartime",300);
    SpielerSpeichern(playerid);
    }
    else
    {
    SendClientMessage(playerid,COLOR_LAWNGREEN,"Liefere das Fahrzeug an der markierte Stelle ab.");
    SetPlayerCheckpoint(playerid,-2234.5779,160.3368,35.3203,3);
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY,"Du sitzt in keinem Fahrzeug.");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY,"Du musst warten bis der Autoverkauf wieder neue Fahrzeuge braucht.");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY,"Du bist kein Autodieb.");
    }
    return 1;
    }
    forward sellcarsekundenabfrage(playerid);
    public sellcarsekundenabfrage(playerid)
    {
    SetPVarInt(playerid,"Dropcartime",GetPVarInt(playerid,"Dropcartime")-1);
    SpielerSpeichern(playerid);
    if(GetPVarInt(playerid,"Dropcartime")<=0)
    {
    SetPVarInt(playerid,"Dropcarstopp",0);
    SendClientMessage(playerid,COLOR_GREY,"Du kannst jetzt wieder Fahrzeuge verkaufen.");
    SpielerSpeichern(playerid);
    }
    return 1;
    }

  • Soweit ich weiß kannst du Timer grundsätzlich nicht einfach so im Script für jemanden speichern. Sondern wenn du Offline gehst, z.B bei PVars
    die werden ja auf playerid´s bezogen, und wieder joinst hast du eine andere playerid also wurde die Variable an einen anderen User verschoben.


    Du musst die Zeit in eine .txt speichern oder in die Datenbank & dann wieder auslesen und den Timer an der stelle weiterlaufenlassen.

  • das macht er doch schon hier:
    SetPVarInt(playerid,"Dropcartime",GetPVarInt(playerid,"Dropcartime")-1);
    SpielerSpeichern(playerid);
    das problem ist mal wieder der timer. du kannst nicht einfach in den public (playerid) reinschreiben und hoffen das es funktioniert.
    du hast playerid zwar erstellt in deinem public aber es wird nirgendwo ausgelesen was playerid eigentlich sein soll. daher ist playerid immer bei 0.


  • das macht er doch schon hier:
    SetPVarInt(playerid,"Dropcartime",GetPVarInt(playerid,"Dropcartime")-1);
    SpielerSpeichern(playerid);
    das problem ist mal wieder der timer. du kannst nicht einfach in den public (playerid) reinschreiben und hoffen das es funktioniert.
    du hast playerid zwar erstellt in deinem public aber es wird nirgendwo ausgelesen was playerid eigentlich sein soll. daher ist playerid immer bei 0.



    und wie kann ich das ändern?

  • forward sellcarsekundenabfrage();
    public sellcarsekundenabfrage()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i))continue;
    SetPVarInt(i,"Dropcartime",GetPVarInt(i,"Dropcartime")-1);
    SpielerSpeichern(i);
    if(GetPVarInt(i,"Dropcartime")<=0)
    {
    SetPVarInt(i,"Dropcarstopp",0);
    SendClientMessage(i,COLOR_GREY,"Du kannst jetzt wieder Fahrzeuge verkaufen.");
    SpielerSpeichern(i);
    }
    }
    return 1;
    }


    ich behaupte nicht das der code so funktioniert denn ich werd daraus nicht wirklich schlau.
    doch das prinzip hoffe ich verstehst du.