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
  • Guten Tag,
    Hab folgendes Problem:


    Der Tacho geht viel z uschnell nachoben und hört nicht auf bei stillstandt sich zu erhöhen.


    public CheckGas(playerid)//Tanken
    {
    for(new veh = 0; veh < MAX_VEHICLES; veh++)
    {
    if(MotorSystemMotor[veh] == true)
    {
    if(Gas[veh] > 0)
    {
    if(IsAPlane(veh) || IsABoat(veh) || IsAFahrrad(veh))
    {
    Gas[veh] += 2;
    }
    Gas[veh] -= 1; // TANK
    new string[128];


    new Float:Entfernung, Float:Geschwindigkeit;
    GetVehiclePos(GetPlayerVehicleID(veh), Pos[0][playerid], Pos[1][playerid],Pos[2][playerid]);
    Entfernung = floatsqroot(floatpower(floatabs(floatsub(Pos[0][playerid], Pos[0][playerid])), 2)+floatpower(floatabs(floatsub(Pos[1][playerid], Pos[1][playerid])), 2)+floatpower(floatabs(floatsub(Pos[2][playerid], Pos[2][playerid])), 2));
    Geschwindigkeit = (Entfernung / (50000/1000)) * 3.6;

    format(string, 128, "Kilometer: %d Km", floatround(Geschwindigkeit));
    TextDrawSetString(Tacho7[playerid],string);
    GetVehiclePos(GetPlayerVehicleID(veh), Pos1[0][playerid],Pos1[1][playerid],Pos1[2][playerid]);


    }


    Danke im vorraus.

  • Schreib das alles mal so:


    new Kilometer[MAX_VEHICLES]; //Oben ins Skript


    public CheckGas(playerid)
    {
    for(new veh,string[32]; veh < MAX_VEHICLES; veh++)
    {
    if(!MotorSystemMotor[veh] || Gas[veh] <= 0) continue;
    if(IsAPlane(veh) || IsABoat(veh) || IsAFahrrad(veh)) Gas[veh] += 2;
    Gas[veh]--; // TANK
    Kilometer[veh] = floatround(floatdiv(float(GetVehicleSpeed(veh)),3.6));
    format(string, sizeof string, "Kilometer: %d Km", floatround(Kilometer[veh]/1000));
    TextDrawSetString(Tacho7[playerid],string);
    }
    return 1;
    }


    stock GetVehicleSpeed(vehicleid) {
    new Float:Q[3];
    return GetVehicleVelocity(vehicleid,Q[0],Q[1],Q[2]),floatround(floatmul(VectorSize(Q[0], Q[1], Q[2]), 170.0));
    }


    Lösche mal alle Variablen die du da verwendest und mache es so :D


    PS: Versuche deine string-Größe immer anzupassen, damit du nicht unnötige Cells verschwendest und Variablen muss man eigentlich nicht in Schleifen deklarieren ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • D:\Users\Admin\Downloads\E-RP(1).pwn(9520) : error 017: undefined symbol "veh"
    D:\Users\Admin\Downloads\E-RP(1).pwn(9528) : error 017: undefined symbol "veh"
    D:\Users\Admin\Downloads\E-RP(1).pwn(9529) : error 017: undefined symbol "veh"
    D:\Users\Admin\Downloads\E-RP(1).pwn(9530) : error 017: undefined symbol "veh"
    D:\Users\Admin\Downloads\E-RP(1).pwn(9533) : error 054: unmatched closing brace ("}")
    D:\Users\Admin\Downloads\E-RP(1).pwn(9534) : error 010: invalid function or declaration

  • D:\Users\Admin\Downloads\E-RP(1).pwn(9520) : error 017: undefined symbol "veh"
    D:\Users\Admin\Downloads\E-RP(1).pwn(9528) : error 017: undefined symbol "veh"
    D:\Users\Admin\Downloads\E-RP(1).pwn(9529) : error 017: undefined symbol "veh"
    D:\Users\Admin\Downloads\E-RP(1).pwn(9530) : error 017: undefined symbol "veh"
    D:\Users\Admin\Downloads\E-RP(1).pwn(9533) : error 054: unmatched closing brace ("}")
    D:\Users\Admin\Downloads\E-RP(1).pwn(9534) : error 010: invalid function or declaration


    Dann hast DU einen Klammerfehler gemacht :P

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • Dann hast DU einen Klammerfehler gemacht :P

    Gelöst jedoch bekomme ich trotzdem errors:
    D:\Users\Admin\Downloads\E-RP(1).pwn(9513) : error 029: invalid expression, assumed zero
    D:\Users\Admin\Downloads\E-RP(1).pwn(9535) : error 010: invalid function or declaration


    D:\Users\Admin\Downloads\E-RP(1).pwn(13570) : error 017: undefined symbol "VectorSize"


  • Der Code...wäre ganz nett :rolleyes:



    Aktualisiere mal deine samp Includes :D


    public CheckGas(playerid)
    {
    for(new veh,string[32]; veh < MAX_VEHICLES; veh++)
    {
    if(!MotorSystemMotor[veh] || Gas[veh] <= 0) continue;
    if(IsAPlane(veh) || IsABoat(veh) || IsAFahrrad(veh)) Gas[veh] += 2;
    Gas[veh]--; // TANK
    Kilometer[veh] = floatround(floatdiv(float(GetVehicleSpeed(veh)),3.6));
    format(string, sizeof string, "Kilometer: %d Km", floatround(Kilometer[veh]/1000));
    TextDrawSetString(Tacho7[playerid],string);
    {
    }
    else//1. Error
    {
    ForAllPlayers(i)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPlayerState(i) == 2)
    {
    if(GetPlayerVehicleID(i) == veh)
    {
    SendClientMessage(i, COLOR_YELLOW, "Boardcomputer: Tank leer, der Motor ist abgestorben.");
    }
    }
    }
    }
    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;
    }
    }
    }
    return 1;
    }//2. Error

  • Was zur Hölle...


    Glaubst du wirklich, dass das funktioniert?! :huh:


    Schreibe das so:


    public CheckGas(playerid)
    {
    for(new veh,string[32]; veh < MAX_VEHICLES; veh++)
    {
    if(!MotorSystemMotor[veh]) continue;
    if(Gas[veh] <= 0)
    {
    ForAllPlayers(i)
    {
    if(!IsPlayerConnected(i) || GetPlayerState(i) != PLAYER_STATE_DRIVER || IsPlayerNPC(i)) continue;
    if(!IsPlayerInVehicle(i,veh)) continue;
    SendClientMessage(i, COLOR_YELLOW, "Boardcomputer: Tank leer, der Motor ist abgestorben.");
    break;
    }
    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;
    continue;
    }
    if(IsAPlane(veh) || IsABoat(veh) || IsAFahrrad(veh)) Gas[veh] += 2;
    Gas[veh]--; // TANK
    Kilometer[veh] = floatround(floatdiv(float(GetVehicleSpeed(veh)),3.6));
    format(string, sizeof string, "Kilometer: %d Km", floatround(Kilometer[veh]/1000));
    TextDrawSetString(Tacho7[playerid],string);
    }
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • Vielen Dank hast du eventuell das Aktuelle Include welches diesen Fehler macht.
    VectorSize

  • Vielen Dank hast du eventuell das Aktuelle Include welches diesen Fehler macht.


    Ich hoffe du kennst diese Seite: http://www.sa-mp.com/download.php


    und da einfach, das downloaden: http://files.sa-mp.com/samp03z_svr_R1_win32.zip


    und dort kannst du dir die Includes aus /Pawno/include/ rausfischen ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • Die hab ich schon jedoch hab ich ne holz leitung welche gerade start benutzt wird und daher dauert der download ziemlich lange kannst net hoch laden das einzelne? :thumbup:

  • Was macht ihr da eigentlich??
    Eine Schleife durch alle Fahrzeuge ist doch total sinnlos.


    new Float:Kilometer[MAX_VEHICLES];
    OnGameModeInit:
    SetTimer("CheckGas", 1000, 1);
    forward CheckGas();
    public CheckGas()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerNPC(i)) continue;
    new veh = GetPlayerVehicleID(i), string[32];
    if(veh)
    {
    if(!MotorSystemMotor[veh]) continue;
    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;
    continue;
    }
    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];
    //if(IsAPlane(veh) || IsABoat(veh) || IsAFahrrad(veh)) Gas[veh] += 2; //Das hier macht keinen Sinn!! Der Tank wird immer mehr dadurch.
    Gas[veh]--; // TANK
    format(string, sizeof string, "Kilometer: %d Km", floatround(Kilometer[veh]));
    TextDrawSetString(Tacho7[playerid],string);
    if(Gas[veh] <= 0) SendClientMessage(i, COLOR_YELLOW, "Boardcomputer: Tank leer, der Motor ist abgestorben.");
    }
    }
    return 1;
    }


  • Steigt weiterhin ins unendliche kanns daran liegen?
    format(string3,sizeof(string3),"~r~KM:~g~ %i.%i",Fahrzeug[VID][Meter]/1000,Fahrzeug[VID][Meter]%1000);

  • Was machst du, wenn ein Spieler nicht in einem Auto sitzt und der Motor an ist?


    Heutige Autos gehen im Stand ja eigentlich aus, selbst an der Ampel.


    Dann eben so:
    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[playerid],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;
    }


    Corvus:
    Ich habe den Code getestet, der funktioniert.
    Hast du Kilometer als Integer definiert? Poste mal alles von dem Code.

  • /MOD: Keine unnötigen Vollzitate bitte

    Corvus:
    Ich habe den Code getestet, der funktioniert.
    Hast du Kilometer als Integer definiert? Poste mal alles von dem Code.


    Kompletter Code:


    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)
    {
    if(!MotorSystemMotor[veh]) continue;
    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;
    }
    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);
    if(Gas[veh] <= 0) SendClientMessage(i, COLOR_YELLOW, "Boardcomputer: Tank leer, der Motor ist abgestorben.");
    }
    }
    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)
    {
    Gas[i]--;
    }
    }
    return 1;
    }


    format(string,sizeof(string),"~r~%s",VehNames[GetVehicleModel(VID)-400]);
    format(string1,sizeof(string1),"~r~KM/H:~g~ %d",value);
    format(string2,sizeof(string2),"~r~Tank:~g~ %s %d", Tank, Gas[VID]);
    format(string4,sizeof(string4),"~r~Zustand:~g~ %.1f",leben/10);
    format(string3,sizeof(string3),"~r~KM:~g~ %i.%i",Fahrzeug[VID][Meter]/1000,Fahrzeug[VID][Meter]00);
    TextDrawSetString(Tacho3[playerid], string);
    TextDrawSetString(Tacho4[playerid],string1);
    TextDrawSetString(Tacho6[playerid],string2);
    TextDrawSetString(Tacho5[playerid],string4);
    TextDrawSetString(Tacho7[playerid],string3);


    public SekundenTimer6()
    {
    new string[500],
    Float:maxspeed = 200.0,
    playername[MAX_PLAYER_NAME],
    value,
    Float:xX,
    Float:yY,
    Float:zZ,
    Float:X,
    Float:Y,
    Float:Z,
    string2[40],
    string1[40],
    string3[40],
    string4[40];


    ForAllPlayers(i){if(IsPlayerConnected(i) && gPlayerLogged[i] && !IsPlayerNPC(i) && AFKModus[i] == 0)
    {
    new VID = GetPlayerVehicleID(i);


    if(IsPlayerInAnyVehicle(i))
    {


    if(GetPlayerState(i) == 2)
    {
    GetVehicleVelocity(GetPlayerVehicleID(i) ,X, Y, Z);
    value = floatround(floatsqroot((X*X) + (Y*Y) + (Z*Z)) * 100 * 1.40);
    if(value > maxspeed && PlayerInfo[i][pSQLID] != 1)
    {
    new tmpcar = GetPlayerVehicleID(i);
    if(!IsAPlane(tmpcar))
    {
    // new VID = GetPlayerVehicleID(i);
    GetPlayerName(i, playername, sizeof(playername));
    GetVehiclePos(VID, xX, yY, zZ);
    format(string, sizeof(string), "AdmWarnung: %s(ID: %d) %d KM/H Position: %f,%f,%f", playername, i, value, xX, yY, zZ);
    SendAdminMessage(COLOR_KNALLROT, -1, string);
    }
    }
    }
    if(IsABoat(VID) || IsAFahrrad(VID))
    {
    // new VID = GetPlayerVehicleID(i);
    format(string2,sizeof(string2),"~r~KM/H:~g~ %d",value);
    format(string,sizeof(string),"~r~%s",VehNames[GetVehicleModel(VID)-400]);
    TextDrawSetString(Tacho2[i], string);
    TextDrawSetString(Tacho4[i],string2);
    }
    else if(IsAPlane(VID))
    {
    // new VID = GetPlayerVehicleID(i);
    new Float:cx,Float:cy,Float:cz;
    GetVehiclePos(VID,cx, cy, cz);
    format(string, sizeof(string), "%f",cz);
    format(string2,sizeof(string2),"~r~KM/H:~g~ %d",value);
    format(string,sizeof(string),"~r~%s",VehNames[GetVehicleModel(VID)-400]);
    TextDrawSetString(Tacho2[i], string);
    TextDrawSetString(Tacho4[i],string2);
    }
    else
    {
    new Speed[20];
    new Float:leben;
    if(value >= 0 && value <= 75){Speed = "~g~";}
    if(value > 75){Speed = "~r~";}
    new Tank[20];
    if(Gas[VID] > 10 && Gas[VID] <= 20){Tank = "~y~";}
    if(Gas[VID] <= 10){Tank = "~r~";}
    if(Gas[VID] > 20){Tank = "~g~";}
    VehSpeed[VID] = value;
    GetVehicleHealth(VID,leben);
    new fID = GetPlayerVehicleID(i);
    Fahrzeug[fID][Meter] += GetVehicleDistanz(fID);
    GetVehiclePos(fID,Fahrzeug[fID][PosXLast],Fahrzeug[fID][PosYLast],Fahrzeug[fID][PosZLast]);
    format(string,sizeof(string),"~r~%s",VehNames[GetVehicleModel(VID)-400]);
    format(string1,sizeof(string1),"~r~KM/H:~g~ %d",value);
    format(string2,sizeof(string2),"~r~Tank:~g~ %s %d", Tank, Gas[VID]);
    format(string4,sizeof(string4),"~r~Zustand:~g~ %.1f",leben/10);
    format(string3,sizeof(string3),"~r~KM:~g~ %i.%i",Fahrzeug[fID][Meter]/1000,Fahrzeug[fID][Meter]%1000);
    TextDrawSetString(Tacho3[i], string);
    TextDrawSetString(Tacho4[i],string1);
    TextDrawSetString(Tacho5[i],string4);
    TextDrawSetString(Tacho6[i],string2);
    TextDrawSetString(Tacho7[i],string3);
    }
    }
    else
    {
    TextDrawHideForPlayer(i, Tacho[i]);
    }
    new IsInNoDm = 0;
    for(new ZI = 0; ZI < sizeof(NODMZonenInfo); ZI++)
    {
    if(IsPlayerInArea(i, NODMZonenInfo[ZI][NODMMinX],NODMZonenInfo[ZI][NODMMinY],NODMZonenInfo[ZI][NODMMaxX],NODMZonenInfo[ZI][NODMMaxY]))
    {
    IsInNoDm += 1;
    break;
    }
    }
    if(IsInNoDm == 1)
    {
    NoDmTimer[i] += 1;
    TextDrawShowForPlayer(i, NODMZoneTextdraw);
    }
    else
    {
    NoDmTimer[i] = 0;
    NoDmWarnungen[i] = 0;
    TextDrawHideForPlayer(i, NODMZoneTextdraw);
    }
    // CheckNODMZone Ende
    }
    }
    return 1;
    }

    2 Mal editiert, zuletzt von seegras ()

  • Du musst das alte Zeug mit der [Meter] Variable natürlich weg machen, das überschreibt dir ja den neuen Code.


    format(string3,sizeof(string3),"~r~KM:~g~ %i.%i",Fahrzeug[VID][Meter]/1000,Fahrzeug[VID][Meter]00);


    Nimm den Tacho7 komplett aus dem anderen Timer raus.



    Schau dir nochmal meinen Code oben an, ich habe dort nochmal etwas geändert, während du mich zitiert hast.