Script Hat rechen Fehler

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
  • Also
    ich erklär es mal kurz
    new Schwachsin = Gas[vehicleid];
    new Bla = Schwachsin/GetGasMax(GetVehicleModel(vehicleid))*100;
    diese rechnug sag mir die Prozzent zahl von tank an.
    So weit 1lite rfehlt ist der Prozent 0


    wieso???


    also Infernus 50 Liter
    50/50 == 100
    49/50 == 0
    Kapier ich nicht


    Wie soll ich denn sonnst die Prozent ausrechnen. Weil ich muss will das unter 60% ein Gelber TextDraw erscheitn und ab 20% Rot wird und ja er macht schon bei 49/50 0% also Rot

    Einmal editiert, zuletzt von HoneyKing ()

  • Definier mal alles mit new Float:name, dann gehts.

  • new Schwachsin = Gas[vehicleid];
    new Float:Bla = Schwachsin/GetGasMax(GetVehicleModel(vehicleid))*100;


    /edit: kp warum der das so verschiebt

  • Zeig mal bitte ein bisschen mehr Code, vor allem da wo du den Tacho setzt.

  • //Mitten aus Timer2
    new Float:Speedo_X,Float:Speedo_Y,Float:Speedo_Z;
    new Float:Speedo_HP;
    for(new i=0; i<SLOTS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i) && !IsANoTachoVehicle(GetPlayerVehicleID(i)))
    {
    TextDrawHideForPlayer(i, Copyright);
    GetPlayerPos(i, Speedo_X, Speedo_Y, Speedo_Z);
    GetPlayerVehicleID(i);
    GetVehicleHealth(GetPlayerVehicleID(i), Speedo_HP);


    new str1[256],str2[256],str3[256],str4[256];
    if(SpeedoON[i] == 0)
    {
    TextDrawShowForPlayer(i, box[i]); TextDrawShowForPlayer(i, fahrzeug[i]); TextDrawShowForPlayer(i, kmh[i]);
    TextDrawShowForPlayer(i, hoehe[i]); TextDrawShowForPlayer(i, zustand[i]);
    SpeedoON[i] = 1;
    }
    new Float:speed_x,Float:speed_y,Float:speed_z,Float:final_speed,final_speed_int;
    new veh = GetPlayerVehicleID(i);
    GetVehicleVelocity(veh, speed_x, speed_y, speed_z);
    final_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*136.666667; // 136.666667 = kmph // 85.4166672= mph
    final_speed_int = floatround(final_speed,floatround_round);
    new kmh_anzahl = final_speed_int;


    format(str1,sizeof(str1),"Fahrzeug: ~y~%s",VehicleName[GetVehicleModel(GetPlayerVehicleID(i))-400]);
    TextDrawSetString(fahrzeug[i], str1);


    if(kmh_anzahl >= 150)
    {
    format(str2,sizeof(str2),"KM/H: ~r~%d",kmh_anzahl);
    TextDrawSetString(kmh[i], str2);
    }
    else if(kmh_anzahl >= 90)
    {
    format(str2,sizeof(str2),"KM/H: ~y~%d",kmh_anzahl);
    TextDrawSetString(kmh[i], str2);
    }
    else if(kmh_anzahl >= 40)
    {
    format(str2,sizeof(str2),"KM/H: ~g~%d",kmh_anzahl);
    TextDrawSetString(kmh[i], str2);
    }
    else
    {
    format(str2,sizeof(str2),"KM/H: ~b~%d",kmh_anzahl);
    TextDrawSetString(kmh[i], str2);
    }
    new vehicleid = GetPlayerVehicleID(i);
    format(str3,sizeof(str3),"Tank: ~g~%d / %d Liter", Gas[vehicleid],GetGasMax(GetVehicleModel(vehicleid)));
    TextDrawSetString(hoehe[i], str3);
    new Schwachsin = Gas[vehicleid];
    new Float:Bla = Schwachsin/GetGasMax(GetVehicleModel(vehicleid))*100;
    if(Bla >= 60)
    {
    TextDrawHideForPlayer(i,tankBlink[i]);
    TextDrawHideForPlayer(i,tankBlink2[i]);
    TextDrawHideForPlayer(i,tankBlink3[i]);
    TextDrawShowForPlayer(i, tankBlink[i]);
    }
    else if(Bla >= 20 && Bla <= 59)
    {
    TextDrawHideForPlayer(i,tankBlink[i]);
    TextDrawHideForPlayer(i,tankBlink2[i]);
    TextDrawHideForPlayer(i,tankBlink3[i]);
    TextDrawShowForPlayer(i, tankBlink2[i]);
    }
    else if(Bla >= 0 && Bla <= 19)
    {
    TextDrawHideForPlayer(i,tankBlink[i]);
    TextDrawHideForPlayer(i,tankBlink2[i]);
    TextDrawHideForPlayer(i,tankBlink3[i]);
    TextDrawShowForPlayer(i, tankBlink3[i]);
    }
    if(Speedo_HP >= 551)
    {
    format(str4,sizeof(str4),"Zustand: ~g~%.2f", Speedo_HP);
    TextDrawSetString(zustand[i], str4);
    }
    else if(Speedo_HP >= 361)
    {
    format(str4,sizeof(str4),"Zustand: ~y~%.2f", Speedo_HP);
    TextDrawSetString(zustand[i], str4);
    }
    else
    {
    format(str4,sizeof(str4),"Zustand: ~r~%.2f", Speedo_HP);
    TextDrawSetString(zustand[i], str4);
    }
    }
    SavePlayerPos[i][sX] = Speedo_X, SavePlayerPos[i][sY] = Speedo_Y, SavePlayerPos[i][sZ] = Speedo_Z;
    }
    for(new i=0; i<SLOTS; i++)
    {
    if(!IsPlayerInAnyVehicle(i))
    {
    TextDrawHideForPlayer(i, box[i]); TextDrawHideForPlayer(i, fahrzeug[i]); TextDrawHideForPlayer(i, kmh[i]);
    TextDrawHideForPlayer(i, hoehe[i]); TextDrawHideForPlayer(i, zustand[i]); TextDrawHideForPlayer(i, tankBlink[i]);
    TextDrawShowForPlayer(i, Copyright); TextDrawHideForPlayer(i, tankBlink2[i]); TextDrawHideForPlayer(i, tankBlink3[i]);
    SpeedoON[i] = 0;
    }
    }

  • Füge mal nach der Definition von Bla ne Debugnachricht ein:
    new msg[60];
    format(msg, sizeof(msg), "%f Liter", Bla);
    SendClientMessage(i, FARBE, msg);


    So müsstest du sehen, ob die Zahl richtig errechnet wird oder ob später ein Fehler ist.

  • da Passiert das hier
    [00:11:36] 100.000000 Liter
    [00:11:37] 100.000000 Liter
    [00:11:38] 100.000000 Liter
    [00:11:39] 100.000000 Liter
    [00:11:40] 0.000000 Liter
    [00:11:41] 0.000000 Liter
    [00:11:42] 0.000000 Liter


    soweit er 49 Liter hat steht da 0.000000 Liter


    PS:Pille habe ich auch versucht ändert nix

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Dann stimmt die Berechnung nicht.
    Zeig mal bitte den Code von GetGasMax.

  • stock GetGasMax(vehmodel)
    {
    if(vehmodel >= 400 && vehmodel <= 611)
    {
    return GasMax[(vehmodel-400)];
    }
    return 100;
    }


    new GasMax[] = {
    60, //"Landstalker",
    50,//"Bravura",
    50,//"Buffalo",
    110,//"Linerunner",
    45,//"Pereniel",
    50,//"Sentinel",
    200,//"Dumper",
    80,//"Firetruck",
    75,//"Trashmaster",
    60,//"Stretch",
    40,//"Manana",
    50,//"Infernus",
    50,//"Voodoo",
    90,//"Pony",
    90,//"Mule",
    48,//"Cheetah",
    70,//"Ambulance",
    60,//"Leviathan",
    60,//"Moonbeam",
    50,//"Esperanto",
    45,//"Taxi",
    40,//"Washington",
    60,//"Bobcat",
    64,//"Mr Whoopee",
    60,//"BF Injection",
    250,//"Hunter",
    50,//"Premier",
    80,//"Enforcer",
    70,//"Securicar",
    52,//"Banshee",
    50,//"Predator",
    80,//"Bus",
    100,//"Rhino",
    50,//"Barracks",
    55,//"Hotknife",
    100,//"Trailer",
    58,//"Previon",
    95,//"Coach",
    48,//"Cabbie",
    45,//"Stallion",
    70,//"Rumpo",
    100,//"RC Bandit",
    50,//"Romero",
    130,//"Packer",
    120,//"Monster Truck",
    45,//"Admiral",
    50,//"Squalo",
    80,//"Seasparrow",
    30,//"Pizzaboy",
    100,//"Tram",
    100,//"Trailer",
    55,//"Turismo",
    55,//"Speeder",
    60,//"Reefer",
    60,//"Tropic",
    160,//"Flatbed",
    80,//"Yankee",
    20,//"Caddy",
    48,//"Solair",
    75,//"Berkley's RC Van",
    100,//"Skimmer",
    50,//"PCJ-600",
    30,//"Roller",
    45,//"Freeway",
    100,//"RC Baron",
    100,//"RC Raider",
    60,//"Glendale",
    55,//"Oceanic",
    45,//"Sanchez",
    80,//"Sparrow",
    95,//"Patriot",
    25,//"Quad",
    50,//"Coastguard",
    50,//"Dinghy",
    50,//"Hermes",
    55,//"Sabre",
    90,//"Rustler",
    60,//"ZR-350",
    60,//"Walton",
    58,//"Regina",
    55,//"Comet",
    100,//"Fahrrad",
    100,//"Burrito",
    100,//"Camper",
    60,//"Marquis",
    35,//"Baggage",
    150,//"Dozer",
    100,//"Maverick",
    100,//"News Chopper",
    80,//"Rancher",
    80,//"FBI Rancher",
    50,//"Virgo",
    50,//"Greenwood",
    100,//"Jetmax",
    70,//"Hotring",
    80,//"Sandking",
    50,//"Blista Compact",
    80,//"Police Maverick",
    80,//"Boxville",
    58,//"Benson",
    80,//"Mesa",
    100,//"RC Goblin",
    75,//"Hotring Racer",
    75,//"Hotring Racer",
    75,//"Bloodring Banger",
    75,//"Rancher",
    60,//"Super GT",
    45,//"Elegant",
    110,//"Journey",
    100,//"Bike",
    100,//"Mountain Bike",
    50,//"Beagle",
    50,//"Cropdust",
    50,//"Stunt",
    140,//"Tanker",
    100,//"RoadTrain",
    50,//"Nebula",
    50,//"Majestic",
    48,//"Buccaneer",
    150,//"Shamal",
    175,//"Hydra",
    45,//"FCR-900",
    45,//"NRG-500",
    48,//"HPV1000",
    135,//"Cement Truck",
    75,//"Tow Truck",
    60,//"Fortune",
    60,//"Cadrona",
    65,//"FBI Truck",
    55,//"Willard",
    30,//"Forklift",
    35,//"Traktor",
    60,//"Combine",
    50,//"Feltzer",
    50,//"Remington",
    55,//"Slamvan",
    55,//"Blade",
    100,//"Freight",
    100,//"Streak",
    100,//"Vortex",
    48,//"Vincent",
    55,//"Bullet",
    58,//"Clover",
    60,//"Sadler",
    90,//"Firetruck",
    60,//"Hustler",
    50,//"Intruder",
    40,//"Primo",
    130,//"Cargobob",
    60,//"Tampa",
    60,//"Sunrise",
    60,//"Merit",
    100,//"Utility",
    50,//"Nevada",
    80,//"Yosemite",
    60,//"Windsor",
    100,//"Monster Truck",
    100,//"Monster Truck",
    55,//"Uranus",
    60,//"Jester",
    60,//"Sultan",
    60,//"Stratum",
    60,//"Elegy",
    150,//"Raindance",
    100,//"RC Tiger",
    50,//"Flash",
    50,//"Tahoma",
    55,//"Savanna",
    60,//"Bandito",
    100,//"Freight",
    100,//"Trailer",
    20,//"Kart",
    20,//"Mower",
    200,//"Duneride",
    35,//"Sweeper",
    50,//"Broadway",
    50,//"Tornado",
    200,//"AT-400",
    200,//"DFT-30",
    65,//"Huntley",
    60,//"Stafford",
    40,//"BF-400",
    70,//"Newsvan",
    30,//"Tug",
    100,//"Trailer",
    50,//"Emperor",
    40,//"Wayfarer",
    60,//"Euros",
    90,//"Hotdog",
    60,//"Club",
    100,//"Trailer",
    100,//"Trailer",
    200,//"Andromada",
    95,//"Dodo",
    100,//"RC Cam",
    50,//"Launch",
    60,//"Streifenwagen",
    60,//"Streifenwagen",
    60,//"Streifenwagen",
    75,//"Polizei Ranger",
    50,//"Picador",
    75,//"S.W.A.T. Van",
    55,//"Alpha",
    55,//"Phoenix",
    50,//"Glendale",
    50,//"Sadler",
    100,//"Luggage Trailer",
    100,//"Luggage Trailer",
    100,//"Stair Trailer",
    52,//"Boxville",
    100,//"Farm Plow",
    100//"Utility Trailer"
    };


    So

  • Änder mal bitte
    stock GetGasMax(vehmodel)
    {
    if(vehmodel >= 400 && vehmodel <= 611)
    {
    return GasMax[(vehmodel-400)];
    }
    return 100;
    }


    in


    stock GetGasMax(vehmodel)
    {
    if(vehmodel < 400 || vehmodel > 611) return 0;
    else return GasMax[(vehmodel-400)];
    }

  • tja ich mag Pawno Langsam und es mich auch es macht nur fehler :D


    Hat noch einer lösungen?


    //edit


    Also ich habe es mal Manuel versuchet also 49/50*100 das ergibt ja normalerweise 98 aber in Script ergibt das 0
    habe ja so gerechnet 49/50*100


    Hat jetzt einer eine Lösung


    //edit
    also mir ist aufgefallen das Pawn/Samp irgend wie nicht mit 0.XX arbeiten kann da gibt er nur 0 aus und wenn mann 50/50 macht ergibt ja 1 und da is es kein problem aber soweite 49/50 ist ergibt das ja 0.98 und er kann das ja nicht haben deswegen macht er daraus 0 soverstehe ich das jetzt von PAwn. Hat noch einer eine Lösung wie ich es hinbekomme das er das richtig rechnet

    2 Mal editiert, zuletzt von HoneyKing ()

  • Hat noch einer eine Lösung wie ich es hinbekomme das er das richtig rechnet


    hatte damals das gleiche problem und es konnte mir auch niemand helfen:
    prozent rechnung


    habe aber fuer mich eine loesung gefunden. ich habe den wert davor mal 100 gerechnet. und das ergebniss dann wieder geteilt durch 100. somit kommt man nie unter 1 sondern bekommt immer schoen ganze zahlen.
    ich wollte eine gewisse prozentzahl von einem betrag von unter 100 ausrechnen lassen.



    new taxiprozent=GetPVarInt(fraktion,"TaxiProzent");
    new taxifbpv=GetPVarInt(fraktion,"TaxiGeld");
    new taximal=taxifair2[playerid][0]*100;
    new taxibam=taximal/100*taxiprozent;
    new taxierge=taxibam/100;
    SetPVarInt(fraktion,"TaxiGeld",taxifbpv+taxierge);



    vielleicht nicht mit 0.0-1.0 rechnen sonder mit 1-100 wenn du verstehst worauf ich hinaus will.
    vielleicht gibt es bessere moeglichkeiten wie z.b mit floats aber wenn alles nichts hilft probiers mal so..


    edit:
    49/50 = 0.98 * 100 = 98
    aber
    49 * 100 = 4900 /50 = 98


    bei der zweiten rechnung wird nie mit 0. gerechnet.

    Einmal editiert, zuletzt von Tround ()

  • Habs aber auch hinbekommen. Habe einfach die werde GasMax und Wie viel noch drinen ist in Floats umgewandelt und dann gings


    //close