AdminMod.de
https://www.adminmod.de/

Rationale Zahlen?
https://www.adminmod.de/viewtopic.php?t=3735
Seite 1 von 1

Autor:  Smudo [ 27.07.2002, 19:54 ]
Betreff des Beitrags:  Rationale Zahlen?

Wie kann ich in Plugins Rationale Zahlen verwenden und diese auf ein Format (z.B. 2 Stellen vor und eine Stelle nach dem Komma) formatieren?

Ich denke, ich benötige die include Datei fixed.inc, die ja auch vorhanden ist. Aber wie erstelle ich die Variablen?
Ich hab gelesen, dass ich, wenn ich Rationale Zahlen verwenden moechte, die Anweisung #pragma rational verwenden muss.
#pragma rational kennt der Compiler aber nicht.

Autor:  frostschutz [ 28.07.2002, 01:21 ]
Betreff des Beitrags: 

Gibt es in Small eigentlich nicht. Es soll angeblich eine Art Library für Small geben, die so eine Zahl dann ueber zwei Integer emuliert, aber von solchen Krücken hab ich bisher die Finger gelassen.


Wenn deine Zahlen nicht zu gross werden, kannst du ja mit normalen Integern arbeiten. So dass z.B. eine 1 mit 4 Stellen hinter dem Komma dann einfach als 10000 angenommen wird.


Ansonsten kannst du natuerlich auch mit zwei Integer-Zahlen arbeiten. Deklariert wird das einfach als 2 Variablen oder meinetwegen auch als Array mit 2 Elementen. Um mit solchen Zahlen dann arbeiten zu koennen, brauchst du natuerlich ein paar Funktionen, die das mit den Kommas berechnen.

z.B. folgendes waere eine Funktion, um 2 Kommazahlen zu addieren: (nur schematisch)
Code:
add_kommazahlen(azahl, akomma, bzahl, bkomma)
{
    int ezahl, ekomma;

    ezahl = azahl + bzahl;
    ekomma = akomma + bkomma;

    if(ekomma >= 1000000) // 6 Stellen hinterm Komma
    {
        ezahl++;
        ekomma -= 1000000;
    }

    // Ergebnis berechnet und muss nun irgendwie
    // zurueckgeliefert werden
}


Das einfachste ist natuerlich, einfach komplett auf den Komma-Krempel zu verzichten.

Autor:  Smudo [ 29.07.2002, 11:46 ]
Betreff des Beitrags: 

Das Prob ist das das Ergebnis einer Berechnung eine Kommazahl ergibt. Ob ich jetzt also 5 durch 3 teile oder 5000 durch 3000, da kommt immer das gleiche raus.
Ich frage einfach mal anders.
Hat jemand einen Vorschlag (Formel) wie man den Skill eines Spielers während einer Map am gerechtesten berechnen kann. (ohne Kommastellen)
Hab mir die wildesten Formeln ausgedacht aber ohne Komma wird das nichts.

Autor:  Warhead [ 29.07.2002, 17:23 ]
Betreff des Beitrags: 

Eine Möglichkeit wäre durch simple Addition und Subtraktion.
Am Anfang ist der Skill=0. Wird ein Gegner verwundet: Skill++, wird einer vom eigenen Team verwundet Skill--. Missionsziel erfüllt: Skill+5.
Wer am Ende den höchsten Skillwert hat, wird als bester eingestuft. Easy.

Autor:  MrClone [ 29.07.2002, 18:55 ]
Betreff des Beitrags: 

Zitat:
Das Prob ist das das Ergebnis einer Berechnung eine Kommazahl ergibt. Ob ich jetzt also 5 durch 3 teile oder 5000 durch 3000, da kommt immer das gleiche raus.
Ich frage einfach mal anders.
Hat jemand einen Vorschlag (Formel) wie man den Skill eines Spielers während einer Map am gerechtesten berechnen kann. (ohne Kommastellen)
Hab mir die wildesten Formeln ausgedacht aber ohne Komma wird das nichts.
Es kommt aber auch drauf an wie man es sieht?!?!
Ist einer besser der 4kills und 2death hat, als einer mit 2kills und 1death? Rechnerisch (K/D rate) nicht, aber wenn man es so sieht hat er mehr kills und zweitens sieht man an den deaths das er sich auch (evtl) mehr eingesetzt hat. Theoretisch kann man also einfach kills minus death nehmen, (oder glaubt ihr wirklich das jemand mit 4:1 besser ist als jemand mit 64:16?)

Autor:  Smudo [ 30.07.2002, 11:41 ]
Betreff des Beitrags: 

@ Warhead:
Hmmm Anzahl der Treffer ist aber auch nicht gerade aussagekräftig. Wenn ich jemanden mit 8 Treffern im Linken Zeh töte würde ich 8 Punkte bekommen und mit einem Headshot nur 1nen Punkt. Man müsste das dann abhängig vom verursachten Schaden machen.

@MrClone:
Das K/D Ratio ist auf jeden Fall anfangs wenig aussagekräftig. Im Moment habe ich es so gemacht, dass ich das K/D Ratio nehme aber erst ab wenigstens 10 Kills anfange es Auszuwerten. Zusätzlich muss der Spieler das eingestellte K/D Ratio wenigstens 3 Runden hintereinander überschreiten. Es funktioniert so und es erfüllt auch schon seinen Zweck aber ich hätte es gerne noch genauer.

Das mit dem Auswerten von Treffern in Kombination mit dem verursachten Schaden hört sich aber gut an finde ich. Das werde ich mal antesten.

BTW: Small ist aber wirklich sehr small wenn es keine rationale Zahlen kann :)

Autor:  Warhead [ 30.07.2002, 11:58 ]
Betreff des Beitrags: 

Ja sicher, bei jeder Statistikzählung gibt es Unstimmigkeiten. Dein Beispiel ist auch nicht astrein. Die AWP macht bei einem Headshot über 300 HP Schaden. Wenn jetzt einer diesen Headshot mit der AWP schafft und sofort stirbt hat er über 300 Punkte. Jetzt gibts einen 2. Spieler der mit der Colt rumrennt und 2 Leute mit jeweils 2 Treffern tötet und danach stirbt. Er hat dadurch ca. 250 Punkte. Wer von beiden ist nun besser?

Mein Beispiel sollte nur aufzeigen wie es ohne Division geht, was man daraus macht ist jedem selbst überlassen. Du kannst Dir ja auch mal den Algorithmus von hlstats anschauen.

Autor:  frostschutz [ 30.07.2002, 12:37 ]
Betreff des Beitrags: 

Ich nehm an, dein K/D Ratio Problem ist nun die miserable Rundung?

Mach einfach ein 10000*K/D Ratio daraus. Dadurch hast du dann praktisch ne Kommazahl, eben um ein paar Stellen nach links verschoben.

Autor:  MrClone [ 30.07.2002, 13:40 ]
Betreff des Beitrags: 

@Warhead
Ist ja klar das derjenige mit den 2 kills und 250 punkten besser ist als der mit 1kill und 300 punkten, wieso nehmt ihr nicht die punkte mal die kills?
250*2=500
300*1=300
schon wäre das problem gelöst, und der mit mehr kills hat auch mehr punkte.

Autor:  Smudo [ 30.07.2002, 15:00 ]
Betreff des Beitrags: 

Ok Ok, ich hab jetzt Ideen und Vorschläge genug. Ihr könnt jetzt aufhöhren :)
Daraus lässt sich bestimmt was machen.

THX @ ALL

Seite 1 von 1 Alle Zeiten sind UTC+01:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/