Blitzertimer

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
  • wenn ich geblitzt werde, blitzt der Blitzer mich mehr als einmal, so wie hier auf dem Screen



    obwohl ich ne Blitzerpause erstellt habe.
    Hier mein CMD:


    public Blitzer_Timer()
    {
    new save, strafe, speed;
    for (new playerid = 0; playerid < MAX_PLAYERS; playerid++) {
    save = GetPVarInt(playerid, "BlitzPause");
    if(save > 0) {
    save--;
    SetPVarInt(playerid, "BlitzPause", save);
    continue;
    }
    if(!IsPlayerInAnyVehicle(playerid) || IsPlayerNPC(playerid)) continue;
    for(new i = 0; i < sizeof(Blitzer); i++)
    {
    if (IsPlayerInRangeOfPoint(playerid,8,1061.7998,-1829.6772,13.6789))
    {
    speed = ErmittleGeschwindigkeit(playerid,true);
    if(speed > 100) {
    new string[128];
    // Hier soll der Spieler eigentlich kein weiteres mal geblitzt werden können wenn er geblitzt wurde.
    SetPVarInt(playerid, "BlitzPause", (BLITZER_TIMER_INTERVALL * BLITZER_PAUSE * 60) / 1000);
    // Strafe für Spieler
    if (speed > 100)
    strafe = (4000+3*speed) - 100;
    PlayerPlaySound(playerid, 1132, 0.0, 0.0, 0.0);
    GivePlayerMoney(playerid, -strafe);
    // Text für Spieler
    SendClientMessage(playerid, 0xFF6347AA,"Du bist zu schnell gefahren!");
    format(string,sizeof(string), "Du bist %d km/h gefahren und musst $%d Bußgeld bezahlen.", speed, strafe);
    SendClientMessage(playerid, 0xFF6347AA, string);
    }
    }
    }
    }
    return 1;
    }


    jemand ne Idee wie ich das Problemchen löse?

  • Einfach eine Variable einsetzen.


    Beispiel:
    new got_Flashed[MAX_PLAYERS];



    Bei "OnPlayerConnect" folgendes einfügen:
    got_Flashed[playerid] = 0;



    Dann fügst Du das ein wenn er geblitzt worden ist:
    got_Flashed[playerid] = 1;



    Die Abfrage bevor man Nochmals geblitzt wird:
    if(got_Flashed[playerid] > 0] { return 1; } else { //wenn er geblitzt werde soll }


    Irgendwo in einem Globalen Timer solltest Du die Variable wieder auf "0" setzen lassen.