Tacho Kilometer Stand 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
  • Hast du bei OnGameModeInit das hier hingesetzt:
    SetTimer("CheckGas", 1000, 1);


    Wenn ja, poste dein CheckGas, wie es jetzt ist.
    Ich hoffe, dort hast du das Tacho7 nicht entfernt.


    Bei OneGamemodenit:
    SetTimer("CheckGas", 10000, 1);


    forward CheckGas(playerid);
    public CheckGas(playerid)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerNPC(i)) continue;
    new veh = GetPlayerVehicleID(i), string[32];
    if(veh)
    {
    new Float:ST[4];
    GetVehicleVelocity(veh,ST[0],ST[1],ST[2]);
    ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) / 1000.0;
    Kilometer[veh] += ST[3];
    format(string, sizeof string, "Kilometer: %d Km", floatround(Kilometer[veh]));
    TextDrawSetString(Tacho7[playerid],string);
    }
    }
    new engine,lights,alarm,doors,bonnet,boot,objective;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    new veh = GetPlayerVehicleID(i), string[32];
    for(new i=0; i<MAX_VEHICLES; i++)
    {
    GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
    if(engine)
    {
    if(!MotorSystemMotor[veh]) continue;
    Gas[i]--;
    if(Gas[veh] <= 0)
    {
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(veh,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    MotorSystemMotor[veh] = false;
    for(new p=0; p<MAX_PLAYERS; p++) if(GetPlayerVehicleID(p) == veh) SendClientMessage(p, COLOR_YELLOW, "Boardcomputer: Tank leer, der Motor ist abgestorben.");
    }
    }}
    }
    return 1;
    }

  • So habe ich dir den Code aber nicht gegeben. 8|


    forward CheckGas();
    public CheckGas()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerNPC(i)) continue;
    new veh = GetPlayerVehicleID(i), string[32];
    if(veh)
    {
    new Float:ST[4];
    GetVehicleVelocity(veh,ST[0],ST[1],ST[2]);
    ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) / 1000.0;
    Kilometer[veh] += ST[3];
    format(string, sizeof string, "Kilometer: %d Km", floatround(Kilometer[veh]));
    TextDrawSetString(Tacho7[i],string);
    }
    }
    new engine,lights,alarm,doors,bonnet,boot,objective;
    for(new i=0; i<MAX_VEHICLES; i++)
    {
    GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
    if(engine)
    {
    if(!MotorSystemMotor[veh]) continue;
    Gas[i]--;
    if(Gas[veh] <= 0)
    {
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(veh,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    MotorSystemMotor[veh] = false;
    for(new p=0; p<MAX_PLAYERS; p++) if(GetPlayerVehicleID(p) == veh) SendClientMessage(p, COLOR_YELLOW, "Boardcomputer: Tank leer, der Motor ist abgestorben.");
    }
    }
    }
    return 1;
    }


  • Funktionier leider nicht kann es eventuell liegen das oben steht:
    format(string3,sizeof(string3),"~r~KM:~g~ %i.%i",Fahrzeug[VID][Meter]/1000,Fahrzeug[VID][Meter]%1000);

  • Wenn du es mit dem Tacho7 verknüpft hast, ja. Das hatte ich ja bereits gesagt, dass du alles was mit [Meter] zu tun hat, bzw mit Tacho7 und nicht in "CheckGas" steht, entfernen sollst.
    Den Code den ich dir gegeben habe, habe ich selbst getestet und er hat funktioniert. Das heißt es liegt an etwas das du noch im Code hast.

  • Wenn du es mit dem Tacho7 verknüpft hast, ja. Das hatte ich ja bereits gesagt, dass du alles was mit [Meter] zu tun hat, bzw mit Tacho7 und nicht in "CheckGas" steht, entfernen sollst.
    Den Code den ich dir gegeben habe, habe ich selbst getestet und er hat funktioniert. Das heißt es liegt an etwas das du noch im Code hast.


    Hab ich gemacht es befindet sich folgendes noch:
    Tacho7[i] = TextDrawCreate(491.250000, 428.166503, "~r~Kilometer:~g~ 0");
    TextDrawLetterSize(Tacho7[i], 0.202498, 1.034166);
    TextDrawAlignment(Tacho7[i], 1);
    TextDrawColor(Tacho7[i], -1);
    TextDrawSetShadow(Tacho7[i], 0);
    TextDrawSetOutline(Tacho7[i], 1);
    TextDrawBackgroundColor(Tacho7[i], 51);
    TextDrawFont(Tacho7[i], 2);
    TextDrawSetProportional(Tacho7[i], 1);


    new Text:Tacho[MAX_PLAYERS],Text:Tacho1[MAX_PLAYERS],Text:Tacho2[MAX_PLAYERS],Text:Tacho3[MAX_PLAYERS],Text:Tacho4[MAX_PLAYERS],Text:Tacho5[MAX_PLAYERS],Text:Tacho6[MAX_PLAYERS],Text:Tacho7[MAX_PLAYERS];


    forward CheckGas(playerid);
    public CheckGas(playerid)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerNPC(i)) continue;
    new veh = GetPlayerVehicleID(i), string[32];
    if(veh)
    {
    new Float:ST[4];
    GetVehicleVelocity(veh,ST[0],ST[1],ST[2]);
    ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) / 1000.0;
    Kilometer[veh] += ST[3];
    format(string, sizeof string, "Kilometer: %d Km", floatround(Kilometer[veh]));
    TextDrawSetString(Tacho7[i],string);
    }
    }
    new engine,lights,alarm,doors,bonnet,boot,objective;
    new veh = GetPlayerVehicleID(playerid), string[32];
    for(new i=0; i<MAX_VEHICLES; i++)
    {
    GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
    if(engine)
    {
    if(!MotorSystemMotor[veh]) continue;
    Gas[i]--;
    if(Gas[veh] <= 0)
    {
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(veh,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    MotorSystemMotor[veh] = false;
    for(new p=0; p<MAX_PLAYERS; p++) if(GetPlayerVehicleID(p) == veh) SendClientMessage(p, COLOR_YELLOW, "Boardcomputer: Tank leer, der Motor ist abgestorben.");
    }
    }
    }
    return 1;
    }

  • Ändere
    format(string, sizeof string, "Kilometer: %d Km", floatround(Kilometer[veh]));
    mal zu:
    format(string, sizeof string, "--> Kilometer: %d Km", floatround(Kilometer[veh]));


    Wenn du dann im Spiel bist und der Kilometerstand hochzählt, bleibt der "Pfeil" da, oder nicht?


    Wenn ja: Benutzt du noch irgendwo anders im Code die "Kilometer" Variable?
    Wenn nein: Dann hast du nicht alles andere entfernt.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hast du die TextDrawShowForPlayer Funktion für Tacho7 entfernt? Wenn ja ist es klar, dass es nicht mehr angezeigt wird.
    Das darf natürlich nicht weg.

    Stimmt hab nun das bei OnPlayerKeyStateChange drin:
    formet(string3,sizeof(string3),"~r~Kilometer: %d Km", floatround(Kilometer[veh]);

  • Stimmt hab nun das bei OnPlayerKeyStateChange drin:


    Das beantwortet aber meine Frage nicht wirklich. Ich habe dich gefragt, ob du dem Spieler das Textdraw anzeigst, und ob es mit oder ohne den Pfeil den ich dir in den String gesetzt habe angezeigt wird.
    Ich würde dir gerne schneller helfen, aber so gestaltet sich das eben schwer. :S


  • Das beantwortet aber meine Frage nicht wirklich. Ich habe dich gefragt, ob du dem Spieler das Textdraw anzeigst, und ob es mit oder ohne den Pfeil den ich dir in den String gesetzt habe angezeigt wird.
    Ich würde dir gerne schneller helfen, aber so gestaltet sich das eben schwer. :S


    Den Textdraw zeige ich dem in OnPlayerKeyStateChange und Nein er wird nicht angezeigt hab das dort foglend:
    format(string3,sizeof(string3),"~r~Kilometer:~g~ %d Km",floatround(Kilometer[veh]);


    TextDrawSetString(Tacho7[playerid],string3);


    TextDrawShowForPlayer(playerid, Tacho[playerid]);
    TextDrawShowForPlayer(playerid, Tacho1[playerid]);
    TextDrawShowForPlayer(playerid, Tacho2[playerid]);
    TextDrawShowForPlayer(playerid, Tacho3[playerid]);
    TextDrawShowForPlayer(playerid, Tacho4[playerid]);
    TextDrawShowForPlayer(playerid, Tacho5[playerid]);
    TextDrawShowForPlayer(playerid,Tacho6[playerid]);
    TextDrawShowForPlayer(playerid, Tacho7[playerid]);


    Jedoch bekomme ich einen error:
    error 001: expected token: ",", but found ";" Linie: format(string3,sizeof(string3),"~r~Kilometer:~g~ %d Km",floatround(Kilometer[veh]);

  • Ok, was ist jetzt das Problem? Wird es nicht aktualisiert, oder was?


    Egal welches Problem, ändere dieses Teil des CheckGas zu:
    if(veh)
    {
    new Float:ST[4];
    GetVehicleVelocity(veh,ST[0],ST[1],ST[2]);
    ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) / 1000.0;
    Kilometer[veh] += ST[3];
    format(string, sizeof string, "Kilometer: %d km", floatround(Kilometer[veh]));
    printf("playerid: %d | ST3: %0.2f | Kilometer[%d]: %0.2f | string: %s", i, ST[3], veh, Kilometer[veh], string);
    TextDrawSetString(Tacho7[i],string);
    }


    Dann poste was im Log steht wenn du fährst.

  • if(veh) { new Float:ST[4]; GetVehicleVelocity(veh,ST[0],ST[1],ST[2]); ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) / 1000.0; Kilometer[veh] += ST[3]; format(string, sizeof string, "Kilometer: %d km", floatround(Kilometer[veh])); printf("playerid: %d | ST3: %0.2f | Kilometer[%d]: %0.2f | string: %s", i, ST[3], veh, Kilometer[veh], string); TextDrawSetString(Tacho7,string); }


    [15:39:51] playerid: 0 | ST3: 0.00 | Kilometer[260]: 0.00 | string: Kilometer: 0 km
    [15:40:01] playerid: 0 | ST3: 0.00 | Kilometer[260]: 0.00 | string: Kilometer: 0 km
    [15:40:11] playerid: 0 | ST3: 0.00 | Kilometer[260]: 0.00 | string: Kilometer: 0 km

  • Bin jetzt von SF-LV gefahren und:
    [15:45:18] playerid: 0 | ST3: 0.00 | Kilometer[259]: 0.00 | string: Kilometer: 0 km
    [15:45:29] playerid: 0 | ST3: 0.00 | Kilometer[259]: 0.00 | string: Kilometer: 0 km
    [15:45:39] playerid: 0 | ST3: 0.00 | Kilometer[259]: 0.00 | string: Kilometer: 0 km
    [15:45:49] playerid: 0 | ST3: 0.00 | Kilometer[259]: 0.00 | string: Kilometer: 0 km
    [15:45:59] playerid: 0 | ST3: 0.00 | Kilometer[259]: 0.00 | string: Kilometer: 0 km
    [15:46:10] playerid: 0 | ST3: 0.00 | Kilometer[259]: 0.00 | string: Kilometer: 0 km
    [15:46:20] playerid: 0 | ST3: 0.00 | Kilometer[259]: 0.00 | string: Kilometer: 0 km
    [15:46:30] playerid: 0 | ST3: 0.00 | Kilometer[259]: 0.00 | string: Kilometer: 0 km
    [15:46:40] playerid: 0 | ST3: 0.00 | Kilometer[259]: 0.00 | string: Kilometer: 0 km
    [15:46:51] playerid: 0 | ST3: 0.00 | Kilometer[259]: 0.00 | string: Kilometer: 0 km
    [15:47:01] playerid: 0 | ST3: 0.00 | Kilometer[259]: 0.00 | string: Kilometer: 0 km
    [15:47:11] playerid: 0 | ST3: 0.00 | Kilometer[259]: 0.00 | string: Kilometer: 0 km
    [15:47:21] playerid: 0 | ST3: 0.00 | Kilometer[259]: 0.01 | string: Kilometer: 0 km
    [15:47:32] playerid: 0 | ST3: 0.00 | Kilometer[259]: 0.01 | string: Kilometer: 0 km
    [15:47:42] playerid: 0 | ST3: 0.00 | Kilometer[259]: 0.01 | string: Kilometer: 0 km

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen