Beiträge von Edgar

    Hallo,


    damit du die Differenz in Prozent haben kannst, brauchst du auf jeden Fall auch einen Timestamp, der den Start darstellt.

    Sonst hast du keinen Bezug, was genau 0% oder 100% sind.


    Der aktuelle Timestamp gib an (nach Berechnung) wie viel Prozent du erreicht hast. Dein Timestamp in der Zukunft sind dann (so gehe ich davon aus) deine 100%. Du brauchst aber noch einen Startwert, damit du auch die 0% hast.



    LG



    Nachtrag:

    Beispielsweise so

    Code
    $startTime = 1642777526;
    $endTime = 1642778726;
    $currentTime = time();
    
    $timeDiff = $endTime - $startTime; // Erhalte die Sekunden, die innerhalb des Zeitraums liegen
    $currentTimeDiff = $currentTime - $startTime; // Erhalte die Sekunden, die seit dem Start abgelaufen sind
    
    $percent = $currentTimeDiff / $timeDiff; // Prozent berechnen 
    
    echo $percent;

    Achte darauf, dass $percent auch die 1.0 überschreiten kann.

    Mit welchem Bildbearbeitungsprogramm arbeitest du denn?

    Ein Bild, welches Größer ist, wird doch meist auf die maximale Größe reduziert. Bzw. man kann die Bilder meistens noch skalieren.


    Druckst du die Shirts online oder in einem lokalen Laden?

    Moin.


    Auch wenn die obigen Antworten korrekt sind, möchte ich auch noch eine Lösung hinzufügen.

    Ich glaube, er möchte alle Monate mit den dazugehörigen Werten zurück erhalten.

    Speziell geht es es ihm wohl darum, dass er den Zeitraum der Monate festgelegt hat (wieso auch immer) und diese dementsprechend für Bestellungen begrenzen kann.

    Sollte er dafür einen Anwendungsfall haben, dann sollte er den JOIN in Erwägung ziehen - möglicherweise passt er ja start und end bei den Monaten auch mal an.


    Gehen wir davon aus, dass dein Schema folgendermaßen aufgebaut und gefüllt ist (Spaltennamen usw. musst du dann natürlich auf dein Schema anpassen):


    Um nun von einem Monat die Anzahl der Bestellungen zu erhalten kannst du folgenden Befehl ausführen:

    SQL: BEFEHL
    SELECT name, COUNT(*) as 'Count' FROM months LEFT JOIN orders ON orders.time BETWEEN months.start AND months.end WHERE name = 'Januar';


    Um nun alle Monate mit der Anzahl der zugehörigen Bestellungen zu erhalten:

    SQL: BEFEHL
    SELECT name, COUNT(*) as 'Count' FROM months LEFT JOIN orders ON orders.time BETWEEN months.start AND months.end GROUP BY months.month;


    URL zum FIddle: SQL Fiddle und SQL Fiddle

    Screen: http://img.cireyses.de/owz6gWz0Na1252250.png

    Da selbst der Verfasser hier Diskussionen beginnt und fortführt, schließe ich das Thema.


    Wie man zur heutiger Zeit, in der schon so wenige SAMP Server existieren, trotzdem die Messlatte so weit runtersetzen kann ist mir leider echt ein Rätsel.


    Sollte es gute Gründe für die Wiedereröffnung des Themas geben, dann können diese und gerne weitergereicht werden.


    Euch noch einen schönen und diskussionsfreien Dienstag.

    Ja mooin!


    Bin hier nun auch offiziell ich. Spontan nach dem Billiard spielen beschlossen sich zu betrinken.. 3 Min vor Verkaufsverbot noch alles mitgenommen, was man in die Hände bekommen hat. :sleeping:

    Ich würde das folgendermaßen aufbauen:

    Füge deinem Vehicle-Enum noch einen Wert hinzu, bspw: fvehInUse (als Boolean-Wert)

    Damit kannst du prüfen, ob der Index/Slot bereits in Verwendung ist.


    Diesen Wert musst du immer auf true setzen, wenn du ein Fahrzeug erstellst und somit diesen Slot verwendest und auf false, wenn du diesen wieder freigibst.


    Mit dieser Funktion kannst du den nächsten freien slot erhalten.

    Code: getNextFreeVehicleSlot.stock.inc
    stock getNextFreeVehicleSlot() {
        for(new i; i < MAX_FRAK_VEHICLE; i++) {
            if (!fVehInfo[i][fvehInUse]) return i;
        }
        return -1;
    }


    Dann kannst du das folgendermaßen in deinen Befehl einbauen:


    Vergiss nicht, an den Stellen in deinem Script, an der du Fahrzeuge erstellst auch fVehInfo[freeSlot][fvehInUse] = true; zu verwenden und

    da, wo du welche wieder löscht dann auf false.


    Und dein Enum um fvehInUse erweitern.


    Anmerkung zur deiner Methode mit IsValidVehicle:

    Sollte das Fahrzeug irgendwann mal irgendwie verschwinden (Explodiert, nicht geladen, Troller und so weiter) dann wird das Fahrzeug durch dein Befehl überschrieben, da es nunmal nicht valide ist.


    Mit meiner Empfehlung auf fvehInUse zu prüfen, hast du die alleinige Kontrolle über den "Datensatz", ob dieser verwenden wird oder nicht. Mit IsValidVehicle hingegen kann dir auch mal das Spielgeschähen dazwischen funken, das ist aber in diesem Fall nie gewollt.

    Habe das schnell frei aus dem Kopf erledigt, könnte sein, dass da auch Denkfehler mitbei sind, einfach mal testen.

    Marschl


    Ich gehe mal davon aus, dass der Fehler von fInfo[frak][fName] erzeugt wird. frak scheint größer zu sein, als der mögliche Index von fInfo zulässt.

    Dabei noch eine Frage: Fragst du innerhalb der Schleife ab, ob das Fahrzeug valide ist und wenn nicht, dann soll er das Fahrzeug erstellen?


    Das sieht alles nämlich etwas zu unkonventionell aus. Magst du mal sonst dein Befehl hier reinschreiben, dann kann man mal schauen, was man da verbessern kann.

    Marschl

    Du gibst ja auch printf("%d", fVehInfo[i][fvehID]); in deiner Schleife an. Ich gehe mal davon aus, dass in der fvehID die Datensatz-ID des Fahrzeuges gespeichert ist.

    Damit der Schleifendurchgang geprinted wird, brauchst du nur die lokale Variable i in deinem print angeben.