Einen Blitzer erstellen der auch Bußgeld austeilt

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
  • Habe gemerkt das mein Problem keine kleine Scripting-Frage ist verschiebe hiermit mein post,


    Will einen Blitzer machen der auch Punkte und Bußgeld automatisch ausgibt aber wie genau berechnet man das z.b pro zu schnellen Km/h 100$ Bußgeld undalle 5Km/h 1 Punkt, also kann mir momentan nichts vorstellen wie ich anfangen kann Tutorials finde ich auch keine.
    Also habe angefangen so einen 50er Blitzer schon einmal zu machen aber irgendwie weiß ich nicht wie ich vorgehen soll das was ich bis jetzt gemacht habe ist, falsch also kriege auch Errors


    Habe auch schon einmal die Blitzbaren Fahrzeuge gemacht,

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Das mit return lass ich weg da dann noch ein Fehler aufkommt,


    Wie soll ich das denn jetzt abfragen ob er das auf ein Autoschein also die Punkte da hinzufügt und wenn die über 10 sein sollen das auch der Autoschein weggenommen wird also habe ich diese "Blitzbar" umsonst gemacht, wie soll ich das machen?

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • forward Blitzer50();
    public Blitzer50()
    {
    new Float:speed, geldstrafe, punkte;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    if(IsPlayerInRangeOfPoint(i,5,1633.10706, -1737.88904, 12.547))
    {
    speed = getPlayerSpeed(i);
    if(speed > 50)
    {
    GameTextForPlayer(i, "~y~!Geblitzt!", 500, 3);
    geldstrafe = (speed - 50) * 100;
    punkte = (speed - 50) / 5;
    pInfo[i][aPunkte] += punkte;
    if(pInfo[i][aPunkte] >= 10)
    {
    SendClientMessage(playerid, 0xFF0000FF, "[Autoschein] Dein Autoschein wurde dir weg genommen, da du zu viele Strafpunkte hast.");
    pInfo[i][pAutoschein] = 0;
    }
    }
    }
    }
    }
    return true;
    }


    Je nach dem wie schnell dein Timer läuft, müsste man eventuell noch zusätzlich abfragen, ob der Spieler in den letzten Sekunden bereits geblitzt wurde.
    Das würde dann so aussehen:
    forward Blitzer50();
    public Blitzer50()
    {
    new Float:speed, geldstrafe, punkte, time = gettime() - 3;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    if(IsPlayerInRangeOfPoint(i,5,1633.10706, -1737.88904, 12.547))
    {
    if(pInfo[i][pZuletztGeblitzt] < time)
    {
    speed = getPlayerSpeed(i);
    if(speed > 50)
    {
    GameTextForPlayer(i, "~y~!Geblitzt!", 500, 3);
    geldstrafe = (speed - 50) * 100;
    punkte = (speed - 50) / 5;
    pInfo[i][aPunkte] += punkte;
    pInfo[i][pZuletztGeblitzt] = gettime();
    if(pInfo[i][aPunkte] >= 10)
    {
    SendClientMessage(playerid, 0xFF0000FF, "[Autoschein] Dein Autoschein wurde dir weg genommen, da du zu viele Strafpunkte hast.");
    pInfo[i][pAutoschein] = 0;
    }
    }
    }
    }
    }
    }
    return true;
    }

  • Danke dir!♥


    Aber was ist jetzt wenn ich mit einem LKW oder einem Motorrad durch den Blitzer fahre? dann geht es ja über den Autoschein das ist mir grade ziemlich unklar.
    Und zu [pZuletztGeblitzt] einfach nur die Variable erstellen und das würde gehen?

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Aber was ist jetzt wenn ich mit einem LKW oder einem Motorrad durch den Blitzer fahre? dann geht es ja über den Autoschein das ist mir grade ziemlich unklar.

    Frage mit deinen "sAuto", "sMotorrad", etc... Funktionen ab, um welchen Schein es sich handelt.


    Und zu [pZuletztGeblitzt] einfach nur die Variable erstellen und das würde gehen?

    In dem dazugehörigen enum, ja.


  • Würde es so funktionieren? Nur irgendwie zeigt er mir Warnings an.

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Kann ich das irgendwie einstellen das er nach 3 Sekunden wieder geblitzt werden kann? Und kann ich auch in einem String anzeigen lassen wie schnell er gefahren ist und wie viel er bezahlen musste Punkte usw.

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Kann ich das irgendwie einstellen das er nach 3 Sekunden wieder geblitzt werden kann?

    Ist schon drin ;) Zeile 14.



    Und kann ich auch in einem String anzeigen lassen wie schnell er gefahren ist und wie viel er bezahlen musste Punkte usw.

    new string[145];
    format(string, sizeof(string), "Du bist %0.2fkm/h gefahren. Dafür erhälst zu %d Punkte und eine Strafe von $%d.", speed, punkte, geldstrafe);
    SendClientMessage(i, 0xFF0000FF, string);

  • Danke!♥
    Habe bis jetzt alles perfekt und fehlerlos, auch so das wenn er kein Schein hat er erhöhtes Geld bezahlen muss das 4x Fache.
    Nur wie mache ich das jetzt, das ich auch noch anzeige wie viel Km/h er zu schnell gefahren ist? einfach dieses Speed -55 aber verstehe nicht wie.

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Ja aber wie gebe ich das an am besten ein neues new erstellen aber verstehe ja nicht wie ich das da zuordne also z.b das ich das dann auch anzeigen kann.

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Danke,


    Irgendwie sind diese angaben komisch möchte auch die Km/h ohne den Nachkomma Stellen angeben also einfach z.b 70Km/h habe versucht da nur %d hin zumachen dann stand da was von 29492499249Km/h


    Außerdem werden mir angezeigt das ich nur 70$ bezahlen muss obwohl mir 10.000 als Beispiel abgezogen werden hier mal zu sehen : http://prntscr.com/j7e0v0


    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Probier es mal so:
    format(string, sizeof(string), "{c45461}Du bist %dKm/h gefahren (%dKm/h zu viel). Dir werden %d Punkte auf deinem Autoschein hinzgefügt, Bußgeld in höhe von $%d.", floatround(speed), uebertretung, punkte, geldstrafe);


    Außerdem kannst du die Übertretung nicht berechnen, wenn du erst danach die Geschwindigkeit abfragst.

  • warum auch -50Km/h

    Wie gesagt: du musst erst die Geschwindigkeit in die Variable "speed" laden, bevor du die Übertretung berechnest.
    Sonst ist da 0 drinnen, und 0 - 50 ergibt -50.



    warum sagt er mir 1$

    Weil der String zu klein ist und die Nachricht nach der 1 abgeschnitten wird.
    Verlängere den String auf 144 Zeichen und/oder verzichte auf unnötige Elemente (wie den Farbcode, den du auch unter SendClientMessage verwenden kannst).