Beiträge von Pille

    Ja, funktioniert, allerdings nicht besonders ressourcenschonend.
    Diese zwei verschachtelten Defines brauchen im Gegensatz zu der normalen Funktion dann doch relativ lange..
    Selbst dein erster Versuch ist noch langsamer ^^


    Danke für die Mühe, Kaliber, aber das ist es noch nicht was ich suche.


    Vielleicht gibt es ja keine Möglichkeit das besser hinzukriegen als ganz o.g.?

    Wieso nicht?!


    Weil ich die Differen der beiden Zahlen berechnen möchte.
    Da ich weiß, dass ein Kreis 360° hat, kann ich nie mehr als 180° von einem Punkt entfernt sein.


    Stells dir vor wie in einem Karusell, wo ich an der Umrisslinie entlang zu einem anderen Punkt auf der Umrisslinie laufen muss.
    Egal wo der ist.. der Weg von meinem Punkt (bzw. meiner Gradanzahl) zu dem anderen (bzw. zu der Gradanzahl) kann nicht
    größer als 180 sein.

    Du musst wegen mir nicht den absoluten Wert überall einsetzen,
    nur wenn er unbedingt nötig ist natürlich ^^


    #define CalcDifference(%0,%1) ((%0-%1) > 180) ? floatabs((%0-%1) - 360.0) : floatabs(%0-%1)


    Hier die erste Abfrage ist ja schon fehlerhaft, weil man nicht den absoluten Wert nimmt, oder?



    Beispiel:
    Zahl1: 10
    Zahl2: 200


    Du würdest am Anfang vergleichen:


    ((10-200)>180) ? ... : floatabs(10-200)


    Als Endergebnis käme 190 raus.. und das möchte ich ja nicht. ^^





    So würde es funktionieren:
    (floatabs(%0-%1) > 180) ? floatabs(floatabs(%0-%1) - 360.0) : floatabs(%0-%1)


    Allerdings wird bei jeder Abfrage 2x den absoluten Wert berechnet und 2x die Zahlen voneinander subtrahiert.
    Ist nicht ganz im Sinne des Erfinders, verstehste? :D

    Hi,


    gibt es irgendwie einen besseren Weg zwei Grad-Variablen zu vergleichen und ihren Unterschied herauszubekommen?
    (man bedenke, dass ich nicht die normale Differenz, sondern eine Differenz, die beachtet, dass ein Kreis 360° hat.
    Es ist also unmöglich einen größerer Wert als 180 herauszubekommen.)


    Beispiele

    Beispiel 1:
    Zahl1: 25.5
    Zahl2: 38.6
    Unterschied: 13.1

    Beispiele
    Beispiel 2:
    Zahl1: 10.0
    Zahl2: 340.0
    Unterschied: 30.0

    Beispiele
    Beispiel 3:
    Zahl1: 10.0
    Zahl2: 189.0
    Unterschied: 179.0

    Beispiele
    Beispiel 4:
    Zahl1: 10.0
    Zahl2: 191.0
    Unterschied: 179.0


    Ich habs momentan so (funktioniert perfekt):
    stock Float:CalcDifference(Float:value1,Float:value2)
    {
    new Float:calc=floatabs((value1-value2));
    if(calc>180.0) return floatabs(calc-360.0);
    return calc;
    }


    Da ich diese Abfrage in einem Timer verwende, der mehrmals in der Sekunde aufgerufen wird,
    möchte ich diese Abfrage so gestalten, dass der Prozessor so wenig wie möglich rechnen muss.


    Die if-Abfrage und die beiden floatabs-Funktionsnutzungen stören mich da ein bisschen.
    Außerdem würde ich das lieber direkt machen, ohne eine Extra-Funktion aufzurufen.



    Gibt es da eine intelligentere / schönere / elegantere Lösung?



    Danke für eure Antworten! :)

    stock Float:CalcDifference(Floate:value1,Floate:value2)
    {
    new Float:calc=floatabs((value1-value2)); // Zeile 7
    if(calc>180.0) calc=floatsub(calc,360.0);
    return calc;
    }


    public OnGameModeInit()
    {


    printf("%f",CalcDifference(5.0,20.0)); // Zeile 15
    }


    Code
    D:\...pwn(7) : warning 213: tag mismatch
    D:\...pwn(15) : warning 213: tag mismatch
    D:\...pwn(15) : warning 213: tag mismatch


    Was ist da los?

    if(dialogid==DIALOG_REGISTER)
    {
    if(response==0)
    {
    SendClientMessage,Rot,"Du hast die Registrierung abgebrochen u. wurdest gekickt.");
    Kick(playerid);
    }


    Es sollte dir selber auffalen wo der Fehler liegt. Ich sehe 3 :)

    MySQL?


    Select COUNT(*) FROM Accounts


    Dini?


    Es ist nicht möglich im Script die Dateien im Ordner zu zählen.
    Du könntest dir mit einer .bat-Datei alle Dateien auflisten lassen,
    dann weißt du wieviel Accounts zum jetzigen Zeitpunkt registriert sind.


    Wenn du diese Zahl in einer Datei zwischenspeicherst und die bei jeder Registrierung um eins erhöhst,
    kannst du so mit etwas Aufwand die Registrierungen zählen :)