Kilometerzähler...

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 Leute ich habe etwas gefunden..
    Ein Kilometerzähler nur das Problem ist das er sofort auf 2 Springt und nicht auf 0
    und ich möchte das er die Kilometer von Jedem Auto einzelnd zählt..
    z.B:
    Man steigt in ein Auto und fährt los man ist in SF angekommen und hat 20 KM auf der Anzeige stehen.
    Nun steigt man in ein Motorrad und die anzeige ist auf 0 nicht auf 20
    und fährt eine kleine runde um ein Block,kommt wieder zum Alten auto und hat 5 KM auf der anzeige ,steigt wieder in das Alte auto ein und auf der Anzeige steht auf
    20...
    Bei mir ist es so:
    Man steigt in ein Auto fährt nach Sf hat 20 KM auf der anzeige steigt in ein anderes Auto und hat wieder 20 KM auf der Anzeige.



    Hier mein code:



    new Float:Xv[MAX_VEHICLES], Float:Yv[MAX_VEHICLES], Float:Zv[MAX_VEHICLES];
    new Meters[MAX_VEHICLES];
    forward KilometerTimer();


    #define COLOR_COUNTER 0x00C0FFCC


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print("Kilometerzähler");
    print("--------------------------------------\n");
    SetTimer("KilometerTimer", 1000, 1);
    for(new i=0; i<max_vehicles; i++)="" {
    Meters[i]=0;
    SaveCoords(i);
    }
    return 1;
    }


    public KilometerTimer()
    {
    new string[256];
    for(new i=0; i<max_vehicles; i++)="" {
    Meters[i]+=GetDistanceToLastPoint(i);
    format(string, 256, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~w~Kilometer: ~b~%03d", Meters[i]/1000);
    GameTextForVehiclePlayers(i, string, 3000, 3);
    SaveCoords(i);
    }
    return 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    SaveCoords(vehicleid);
    Meters[vehicleid]=0;
    return 1;
    }
    stock GameTextForVehiclePlayers(vehicleid, message[], time, style)
    {
    for(new a=0; a<max_players; a++)
    if (IsPlayerInVehicle(a, vehicleid)) GameTextForPlayer(a, message, time, style);
    return 1;
    }


    stock GetDistanceToLastPoint(vehicleid)
    {
    new Float:x2, Float:y2, Float:z2, Float:output;
    GetVehiclePos(vehicleid, x2, y2, z2);
    output = floatsqroot(floatpower(floatabs(floatsub(x2, Xv[vehicleid])), 2)+floatpower(floatabs(floatsub(y2, Yv[vehicleid])), 2)+floatpower(floatabs(floatsub(z2, Zv[vehicleid])), 2));
    return floatround(output);
    }


    stock SaveCoords(vehicleid)
    {
    new Float:X, Float:Y, Float:Z;
    GetVehiclePos(vehicleid, X, Y, Z);
    Xv[vehicleid]=X;
    Yv[vehicleid]=Y;
    Zv[vehicleid]=Z;
    }

  • geile idee.


    sehr nice.


    ich hab keine ahnung wie man dein problem lösen sollte aber ich würde des vilt in einem Textdraw wieder geben des sieht wesentlich besser aus.

    Life Of California :thumbup:

  • Mach es in einem Textdraw oder sofort auf dem Tacho

  • Hi


    Der fehler liegt hier:


    public KilometerTimer()
    {
    new string[256];
    for(new i=0; i<max_vehicles; i++)="" {
    Meters[i]+=GetDistanceToLastPoint(i);
    format(string, 256, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~w~Kilometer: ~b~%03d", Meters[i]/1000);
    GameTextForVehiclePlayers(i, string, 3000, 3);
    SaveCoords(i);
    }
    return 1;
    }


    Und was bringt das ="" nachdem du die schleife definierst?


    Du musst GetPlayerVehicleID verwenden, mit der Schleife erreichst du nur, dass das mit jedem car passiert. Ich hoff es is verständlich ausgedrückt^^
    Benutz die Schleife für alle spieler, frag ab ob sie in nem car sin, un dort dann der rest rein.


    MFG, Robdeflop®

  • SetTimerEx("KA", Zeit in ML, 1, "d",vehicleid);// das per schleife bei OnGameModeInit oder bei OnPlayerEnterVehicle.....


    public KA(vehicleid)
    {
    AutoInfo[vehicle][Meilen]+=GetDistanceToLastPoint(vehicle);
    SaveCoords(vehicle);


    }