Schadens Berechnung

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
  • Hallo Breadfish,


    Ich habe derzeit ein kleines Problem.


    Ich brauche eine Berechnung für den Schaden der durch GetVehicleHealth abgefragt wird.


    Als ich letztens einen neuen Float erstellt habe, und dort den Schaden abgespeichert habe, wollte ich ihn durch einen TextDraw ausgeben für einen Tacho.
    Im Godfather habe ich bis jetzt keine Schadensberechnung gefunden, und das Internet bin ich auch schon seit mehreren Tagen am durchforsten nach Sachen wie


    "Schadens Berechnung" / "Vehicle Damage SAMP" oder ähnliches.


    Finde leider nichts.
    Ich hoffe ihr könnt mir helfen, damit ich endlich nichtmehr im Tacho "Schaden: In Arbeit" stehen habe.
    Ich wollte es auch noch in % umwandeln. Das heißt 1000 Schaden = 100%, 750 Schaden = 75% usw.


    Kann mir da jemand helfen?
    Nach den Sommerferien kamen bei uns die 3 Praktikumswochen + Herbstferien, wo ich sehr sehr viel verlernt habe.
    Vor den Sommerferien stand ich noch 2 auf dem Zeugnis in Mathe, und jetzt hab ich echt sehr sehr viel verlernt. ( Da wird mein Mathe Lehrer staunen da ich sonst nie was vergesse. :pinch: )


    Vielen Dank im Vorraus! :)

  • ein Auto was ganz ist sollte ein Wert von 1000.0 haben und wenn du das durch 10 teilst und dann noch floatround() anwendest wirds ein gerades ergebniss.


    //edit: sprich 100% oder 50% etc.

  • So hab mal versucht es einzufügen aber kriege immer Probleme:



    public UpdateSpeed()
    {
    new Float:x, Float:y, Float:z;
    new string[256], string2[256], string3[256], namestring[256];
    for(new i = 0; i<SLOTS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    new const vehicleid = GetPlayerVehicleID(i);
    new vehiclee = GetPlayerVehicleID(i);
    new Float:speed = GetVehicleSpeed_P(i);
    new Float:memory[3]={0.00,0.00,0.00 };
    GetVehicleVelocity(vehicleid,memory[0],memory[1],memory[2]);
    LastSpeed[i] = speed;
    new Float:damage;
    damage = GetVehicleHealth(i)\10;
    if(!IsAFahrrad(vehiclee))
    {
    format(string, sizeof(string), "%d", floatround(speed));
    TextDrawSetString(Speedo11[i], string);
    format(string2, sizeof(string2), "%d",Gas[GetPlayerVehicleID(i)]);
    TextDrawSetString(Speedo12[i], string2);
    format(string3, sizeof(string3), "%d%", damage);
    TextDrawSetString(Speedo13[i], string3);
    format(namestring, sizeof(namestring), "%s", FahrzeugName[GetVehicleModel(GetPlayerVehicleID(i))-400]);
    TextDrawSetString(Speedo1[i], namestring);
    }
    }
    SavePlayerPos[i][LastX] = x;
    SavePlayerPos[i][LastY] = y;
    SavePlayerPos[i][LastZ] = z;
    }
    }


    Hier meine Fehler & Warnungen:



  • damage = GetVehicleHealth(i, damage)\10;

    So hab ichs jetzt.
    Fehler:



    Wie teilt man denn die Variable (damage) durch 10?

  • Er zeigt mir ingame immer 0 an:

    public UpdateSpeed()
    {
    new Float:x, Float:y, Float:z;
    new string[256], string2[256], string3[256], namestring[256];
    for(new i = 0; i<SLOTS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    new const vehicleid = GetPlayerVehicleID(i);
    new vehiclee = GetPlayerVehicleID(i);
    new Float:speed = GetVehicleSpeed_P(i);
    new Float:memory[3]={0.00,0.00,0.00 };
    GetVehicleVelocity(vehicleid,memory[0],memory[1],memory[2]);
    LastSpeed[i] = speed;
    new Float:damage;
    damage = GetVehicleHealth(i, damage);
    //damage = damage / 10;
    if(!IsAFahrrad(vehiclee))
    {
    format(string, sizeof(string), "%d", floatround(speed));
    TextDrawSetString(Speedo11[i], string);
    format(string2, sizeof(string2), "%d",Gas[GetPlayerVehicleID(i)]);
    TextDrawSetString(Speedo12[i], string2);
    format(string3, sizeof(string3), "%d", damage);
    TextDrawSetString(Speedo13[i], string3);
    format(namestring, sizeof(namestring), "%s", FahrzeugName[GetVehicleModel(GetPlayerVehicleID(i))-400]);
    TextDrawSetString(Speedo1[i], namestring);
    }
    }
    SavePlayerPos[i][LastX] = x;
    SavePlayerPos[i][LastY] = y;
    SavePlayerPos[i][LastZ] = z;
    }
    }


    HAb schon mit floatround versucht, mit dem / 10 machen.
    Nichts funktioniert. Immer nur Schaden: 0

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Du speicherst per GetVehicleHealth den Zustand in der Variable damage. Damit kannst du doch ganz normal weiter arbeiten.
    Übrigens ist damage ein Float deshalb musst du %f zum ausgeben verwenden.


    GetVehicleHealth(i, damage);
    format(str,siezof(str),"Health: %f",damage);

  • Nichts passiert. 0% :(


    Hab schon Qinis Weg probiert. Ergibt auch 0.
    public UpdateSpeed()
    {
    new Float:x, Float:y, Float:z;
    new string[256], string2[256], string3[256], namestring[256];
    for(new i = 0; i<SLOTS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    new const vehicleid = GetPlayerVehicleID(i);
    new vehiclee = GetPlayerVehicleID(i);
    new Float:speed = GetVehicleSpeed_P(i);
    new Float:memory[3]={0.00,0.00,0.00 };
    GetVehicleVelocity(vehicleid,memory[0],memory[1],memory[2]);
    LastSpeed[i] = speed;
    new Float:damage;
    GetVehicleHealth(i, damage);
    damage = damage / 10;
    if(!IsAFahrrad(vehiclee))
    {
    format(string, sizeof(string), "%d", floatround(speed));
    TextDrawSetString(Speedo11[i], string);
    format(string2, sizeof(string2), "%d",Gas[GetPlayerVehicleID(i)]);
    TextDrawSetString(Speedo12[i], string2);
    format(string3, sizeof(string3), "%d%", floatround(damage));
    TextDrawSetString(Speedo13[i], string3);
    format(namestring, sizeof(namestring), "%s", FahrzeugName[GetVehicleModel(GetPlayerVehicleID(i))-400]);
    TextDrawSetString(Speedo1[i], namestring);
    }
    }
    SavePlayerPos[i][LastX] = x;
    SavePlayerPos[i][LastY] = y;
    SavePlayerPos[i][LastZ] = z;
    }
    }

  • Das is mein altes Tacho:
    ich kanns leider nicht [pwn] machen weil Google chrome das Fail anzeigt:



    public UpdateTacho()
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    new vehicle = GetPlayerVehicleID(i);
    if(IsPlayerInAnyVehicle(i) && !IsANoTachoCar(vehicle))
    {
    new string[128];
    new Float:heal;
    GetVehicleHealth(vehicle,heal);
    new Float:x,Float:y,Float:z;
    new Float:distance,value;
    GetPlayerPos(i,x,y,z);
    distance = floatsqroot(floatpower(floatabs(floatsub(x,Tachox[i])),2)+floatpower(floatabs(floatsub(y,Tachoy[i])),2)+floatpower(floatabs(floatsub(z,Tachoz[i])),2));
    value = floatround(distance * 11000);
    Tachox[i] = x;
    Tachoy[i] = y;
    Tachoz[i] = z;
    format(string,sizeof(string),"%d",floatround(value/3200));
    TextDrawSetString(TachoKma[i],string);
    format(string, sizeof(string), "%d%",Tank[vehicle]);
    TextDrawSetString(TachoTaa[i],string);
    format(string, sizeof(string), "%d",Beladen[i]);
    TextDrawSetString(TachoKaa[i],string);
    format(string, sizeof(string),"%d%",floatround(floatdiv(heal, 10),floatround_round));
    TextDrawSetString(TachoZaa[i],string);
    }
    }
    return 1;
    }

  • Immernoch 0%..



    public UpdateSpeed()
    {
    new Float:x, Float:y, Float:z;
    new string[256], string2[256], string3[256], namestring[256];
    for(new i = 0; i<SLOTS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    new const vehicleid = GetPlayerVehicleID(i);
    new vehiclee = GetPlayerVehicleID(i);
    new Float:speed = GetVehicleSpeed_P(i);
    new Float:memory[3]={0.00,0.00,0.00 };
    GetVehicleVelocity(vehicleid,memory[0],memory[1],memory[2]);
    LastSpeed[i] = speed;
    new Float:damage;
    GetVehicleHealth(i, damage);
    if(!IsAFahrrad(vehiclee))
    {
    format(string, sizeof(string), "%d", floatround(speed));
    TextDrawSetString(Speedo11[i], string);
    format(string2, sizeof(string2), "%d",Gas[GetPlayerVehicleID(i)]);
    TextDrawSetString(Speedo12[i], string2);
    format(string3, sizeof(string3), "%d%", floatround(floatdiv(damage,10.0)));
    TextDrawSetString(Speedo13[i], string3);
    format(namestring, sizeof(namestring), "%s", FahrzeugName[GetVehicleModel(GetPlayerVehicleID(i))-400]);
    TextDrawSetString(Speedo1[i], namestring);
    }
    }
    SavePlayerPos[i][LastX] = x;
    SavePlayerPos[i][LastY] = y;
    SavePlayerPos[i][LastZ] = z;
    }
    }


    So ist das jetzt. Was isn daran falsch? -.-

  • 1. Lösch das floatdiv, bringt nichts.
    2. new const vehicleid = GetPlayerVehicleID(i);
    new vehiclee = GetPlayerVehicleID(i);
    Warum eine Konstante?
    Es reicht ganz einfach
    new vehicled = GetPlayerVehicleID(i);
    Mehr brauchst du nicht..

    Kalcor: "... it makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."