Rechenproblem

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
  • Hallöle Breadfisher,
    ich möchte gerne eine Rechnung durchführen, doch egal wie ich es mache, es möchte nicht funktionieren.


    Man kann ja normalerweise rechnen in SAMP mit > * < multiplizieren, man kann mit > - < subtrahieren und mit > + < addieren, doch irgendwie will > / < dividieren nicht gehen.
    Ich möchte eine Kill / Deaths Rate ausrechnen (kurz K/D-Rate), doch habe ich viele Möglichkeiten versucht, die ich euch nun nochmal zur schau stelle.

    // Versuch 1
    stock kdrate(playerid, kd) return kd = SpielerInfo[playerid][Kills] / SpielerInfo[playerid][Tode];


    ocmd:stats(playerid,params[])
    {
    new text[256];
    format(text,256,"Name: %s\nKills: %i\nDeaths: %i\nK/D-Rate: %f\nAdminlevel: %i",pName(playerid),GetPlayerScore(playerid),SpielerInfo[playerid][Tode],kdrate(playerid),SpielerInfo[playerid][Adminlevel]);
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Mein Status",text,"OK","");
    return 1;
    }
    // Funktioniert nicht, nun zu versuch 2
    // Ich definiere unter meinen enum > SpielerInfo[playerid][KDRate]


    forward kdrate(playerid);


    public kdrate(playerid)
    {
    SpielerInfo[playerid][Kills] / SpielerInfo[playerid][Tode] = SpielerInfo[playerid][KDRate];
    return 1;
    }
    ocmd:stats(playerid,params[])
    {
    new text[256];
    format(text,256,"Name: %s\nKills: %i\nDeaths: %i\nK/D-Rate: %f\nAdminlevel: %i",pName(playerid),GetPlayerScore(playerid),SpielerInfo[playerid][Tode],SpielerInfo[playerid][KDRate],SpielerInfo[playerid][Adminlevel]);
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Mein Status",text,"OK","");
    return 1;
    }
    // Klappt auch nicht, nun die letzte Variante von mir.
    // Hier setze ich für %f folgendes ein ---> SpielerInfo[playerid][Kills] / SpielerInfo[playerid][Tode]
    ocmd:stats(playerid,params[])
    {
    new text[256];
    format(text,256,"Name: %s\nKills: %i\nDeaths: %i\nK/D-Rate: %f\nAdminlevel: %i",pName(playerid),GetPlayerScore(playerid),SpielerInfo[playerid][Tode],SpielerInfo[playerid][Kills] / SpielerInfo[playerid][Tode],SpielerInfo[playerid][Adminlevel]);
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Mein Status",text,"OK","");
    return 1;
    }
    // Klappt auch nicht, und falls ihr euch fragt warum %f ? Weil natürlich dann eine Kommastelle entsteht und nur das Format Float Kommastellen zulässt.
    Bitte um eure Hilfe wenn es eine Möglichkeit gibt.


    MfG Tiger


  • stock kdrate(playerid) {
    new Float:kd = SpielerInfo[playerid][Kills] / SpielerInfo[playerid][Tode];
    return kd;
    }


    Edit weiss nicht ob das mit dem returnen so direkt geht aber deins geht dann so


    stock kdrate(playerid, Float:kd) return kd = SpielerInfo[playerid][Kills] / SpielerInfo[playerid][Tode];

    Einmal editiert, zuletzt von NicoWiss ()

  • stock Float:kdrate(playerid)
    {
    new Float:kd = (float)SpielerInfo[playerid][Kills];
    if(SpielerInfo[playerid][Tode] != 0) kd=(float)SpielerInfo[playerid][Kills] / (float)SpielerInfo[playerid][Tode];
    return kd;
    }
    ocmd:stats(playerid,params[])
    {
    new text[256];
    format(text,256,"Name: %s\nKills: %i\nDeaths: %i\nK/D-Rate: %0.2f\nAdminlevel: %i",pName(playerid),GetPlayerScore(playerid),SpielerInfo[playerid][Tode],kdrate(playerid),SpielerInfo[playerid][Adminlevel]);
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Mein Status",text,"OK","");
    return 1;
    }