Timerinterval Problem

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,
    habe derzeit ein kleines Problem mit meinem Timer/Tank System. Ich habe einen Timer mit einem Interval von einer Sekunde aufgesetzt. Alle meine Fahrzeuge haben bestimmt Eigenschaften. Das wären meine Arrays FuelDropValue und FuelDropRate. FuelDropRate sagt wie viele Sekunden es braucht, dass das Fahrzeug Benzin verliert. FuelDropValue sagt wie viel Benzin jeweils verbraucht wird.
    Eigentlich funktioniert das alles auch ganz gut nur ist es oft sehr ungenau.
    Zum Beispiel wenn das Fahrzeug alle 2 Sekunden Benzin verlieren soll, veliert es z.B 3 mal im Abstand von 2 Sekunden Benzin, danach braucht es dann einmal fünf Sekunden, dann einmal vier, dann wieder zwei, usw. Das Timer System von SAMP ist ja manchmal etwas ungenau aber 3 Sekunden ?
    Ich habe dann mal den eigentlichen Timer debuggt und er wird fast immer jede Sekunde abgerufen, nur ganz selten braucht er zwei Sekunden. Es passiert aber nie, dass er mehr als eine Sekunde mehr braucht.
    Also muss es fast an meinem Code liegen. P.S.: Ich habe auch schon alle möglichen TimerFix Includes oder Plugins benutzt.
    Dieser Code wird jede Sekunde ausgeführt: (Irgendwie bringen die Pawn Tags die Einrückung von meinem Code durcheinander)

    new FuelDropVar = GetPVarInt(playerid,"FuelDrop");
    SetPVarInt(playerid,"FuelDrop",FuelDropVar+1);
    if(FuelDropRate[vehicleid] == FuelDropVar)
    {
    //printf("%i",gettime());
    SetPVarInt(playerid,"FuelDrop",0);
    centerTank[vehicleid] -= FuelDropValue[vehicleid];
    if(centerTank[vehicleid] < 0) centerTank[vehicleid] = 0;
    if(wingTankLimit[vehicleid] != 0)
    {
    leftTank[vehicleid] -= FuelDropValue[vehicleid];
    if(leftTank[vehicleid] < 0) leftTank[vehicleid] = 0;
    rightTank[vehicleid] -= FuelDropValue[vehicleid];
    if(rightTank[vehicleid] < 0) rightTank[vehicleid] = 0;
    }
    }

  • Wie sieht es aus, wenn du es so debuggst?
    new FuelDropVar = GetPVarInt(playerid,"FuelDrop");
    printf("Aufruf: %d playerid: %d FuelDropVar: %d (soll: %d)",gettime(),playerid,FuelDropVar,FuelDropRate[vehicleid]);
    SetPVarInt(playerid,"FuelDrop",FuelDropVar+1);
    if(FuelDropRate[vehicleid] == FuelDropVar)
    {
    printf("Tank runter");
    SetPVarInt(playerid,"FuelDrop",0);
    centerTank[vehicleid] -= FuelDropValue[vehicleid];
    if(centerTank[vehicleid] < 0) centerTank[vehicleid] = 0;
    if(wingTankLimit[vehicleid] != 0)
    {
    leftTank[vehicleid] -= FuelDropValue[vehicleid];
    if(leftTank[vehicleid] < 0) leftTank[vehicleid] = 0;
    rightTank[vehicleid] -= FuelDropValue[vehicleid];
    if(rightTank[vehicleid] < 0) rightTank[vehicleid] = 0;
    }
    }


  • Also ich kopiere jetzt mal ein paar Zeilen hier rein:

    Code
    [13:34:08] Aufruf: 1415536448  playerid: 0  FuelDropVar: 0  (soll: 3)[13:34:09] Aufruf: 1415536449  playerid: 0  FuelDropVar: 1  (soll: 3)[13:34:10] Aufruf: 1415536450  playerid: 0  FuelDropVar: 2  (soll: 3)[13:34:11] Aufruf: 1415536451  playerid: 0  FuelDropVar: 3  (soll: 3)[13:34:11] Tank runter[13:34:12] Aufruf: 1415536452  playerid: 0  FuelDropVar: 0  (soll: 3)[13:34:13] Aufruf: 1415536453  playerid: 0  FuelDropVar: 1  (soll: 3)[13:34:15] Aufruf: 1415536455  playerid: 0  FuelDropVar: 2  (soll: 3)[13:34:16] Aufruf: 1415536456  playerid: 0  FuelDropVar: 3  (soll: 3)[13:34:16] Tank runter[13:34:17] Aufruf: 1415536457  playerid: 0  FuelDropVar: 0  (soll: 3)[13:34:18] Aufruf: 1415536458  playerid: 0  FuelDropVar: 1  (soll: 3)[13:34:19] Aufruf: 1415536459  playerid: 0  FuelDropVar: 2  (soll: 3)[13:34:20] Aufruf: 1415536460  playerid: 0  FuelDropVar: 3  (soll: 3)[13:34:20] Tank runter[13:34:21] Aufruf: 1415536461  playerid: 0  FuelDropVar: 0  (soll: 3)[13:34:22] Aufruf: 1415536462  playerid: 0  FuelDropVar: 1  (soll: 3)[13:34:23] Aufruf: 1415536463  playerid: 0  FuelDropVar: 2  (soll: 3)[13:34:25] Aufruf: 1415536465  playerid: 0  FuelDropVar: 3  (soll: 3)[13:34:25] Tank runter[13:34:26] Aufruf: 1415536466  playerid: 0  FuelDropVar: 0  (soll: 3)[13:34:27] Aufruf: 1415536467  playerid: 0  FuelDropVar: 1  (soll: 3)[13:34:28] Aufruf: 1415536468  playerid: 0  FuelDropVar: 2  (soll: 3)[13:34:29] Aufruf: 1415536469  playerid: 0  FuelDropVar: 3  (soll: 3)[13:34:29] Tank runter[13:34:30] Aufruf: 1415536470  playerid: 0  FuelDropVar: 0  (soll: 3)[13:34:31] Aufruf: 1415536471  playerid: 0  FuelDropVar: 1  (soll: 3)[13:34:32] Aufruf: 1415536472  playerid: 0  FuelDropVar: 2  (soll: 3)[13:34:33] Aufruf: 1415536473  playerid: 0  FuelDropVar: 3  (soll: 3)[13:34:33] Tank runter[13:34:35] Aufruf: 1415536475  playerid: 0  FuelDropVar: 0  (soll: 3)[13:34:36] Aufruf: 1415536476  playerid: 0  FuelDropVar: 1  (soll: 3)[13:34:37] Aufruf: 1415536477  playerid: 0  FuelDropVar: 2  (soll: 3)[13:34:38] Aufruf: 1415536478  playerid: 0  FuelDropVar: 3  (soll: 3)[13:34:38] Tank runter[13:34:39] Aufruf: 1415536479  playerid: 0  FuelDropVar: 0  (soll: 3)[13:34:40] Aufruf: 1415536480  playerid: 0  FuelDropVar: 1  (soll: 3)[13:34:41] Aufruf: 1415536481  playerid: 0  FuelDropVar: 2  (soll: 3)[13:34:42] Aufruf: 1415536482  playerid: 0  FuelDropVar: 3  (soll: 3)[13:34:42] Tank runter[13:34:44] Aufruf: 1415536484  playerid: 0  FuelDropVar: 0  (soll: 3)[13:34:45] Aufruf: 1415536485  playerid: 0  FuelDropVar: 1  (soll: 3)[13:34:46] Aufruf: 1415536486  playerid: 0  FuelDropVar: 2  (soll: 3)[13:34:47] Aufruf: 1415536487  playerid: 0  FuelDropVar: 3  (soll: 3)[13:34:47] Tank runter[13:34:48] Aufruf: 1415536488  playerid: 0  FuelDropVar: 0  (soll: 3)[13:34:49] Aufruf: 1415536489  playerid: 0  FuelDropVar: 1  (soll: 3)[13:34:50] Aufruf: 1415536490  playerid: 0  FuelDropVar: 2  (soll: 3)[13:34:51] Aufruf: 1415536491  playerid: 0  FuelDropVar: 3  (soll: 3)[13:34:51] Tank runter[13:34:53] Aufruf: 1415536493  playerid: 0  FuelDropVar: 0  (soll: 3)[13:34:54] Aufruf: 1415536494  playerid: 0  FuelDropVar: 1  (soll: 3)[13:34:55] Aufruf: 1415536495  playerid: 0  FuelDropVar: 2  (soll: 3)[13:34:56] Aufruf: 1415536496  playerid: 0  FuelDropVar: 3  (soll: 3)[13:34:56] Tank runter[13:34:57] Aufruf: 1415536497  playerid: 0  FuelDropVar: 0  (soll: 3)[13:34:58] Aufruf: 1415536498  playerid: 0  FuelDropVar: 1  (soll: 3)[13:34:59] Aufruf: 1415536499  playerid: 0  FuelDropVar: 2  (soll: 3)[13:35:00] Aufruf: 1415536500  playerid: 0  FuelDropVar: 3  (soll: 3)[13:35:00] Tank runter[13:35:01] Aufruf: 1415536501  playerid: 0  FuelDropVar: 0  (soll: 3)[13:35:03] Aufruf: 1415536503  playerid: 0  FuelDropVar: 1  (soll: 3)[13:35:04] Aufruf: 1415536504  playerid: 0  FuelDropVar: 2  (soll: 3)[13:35:05] Aufruf: 1415536505  playerid: 0  FuelDropVar: 3  (soll: 3)[13:35:05] Tank runter[13:35:06] Aufruf: 1415536506  playerid: 0  FuelDropVar: 0  (soll: 3)[13:35:07] Aufruf: 1415536507  playerid: 0  FuelDropVar: 1  (soll: 3)[13:35:08] Aufruf: 1415536508  playerid: 0  FuelDropVar: 2  (soll: 3)[13:35:09] Aufruf: 1415536509  playerid: 0  FuelDropVar: 3  (soll: 3)[13:35:09] Tank runter