Beiträge von MiniYoda

    Hast du es auch verstanden?


    Damit du weiterkommst hier die kleine Erklärung:


    OnPlayerUpdate wird, wenn ein Spieler afk ist, d.h. Desktop oder im Menu, nicht mehr für playerid ausgeführt. Der Trick ist einfach die aktuelle time() mit der time() vom letzten OnPlayerUpdate(playerid) zu vergleichen. Ist eine größere Differenz in Sekunden, hat der Spieler kein Kontakt mehr zum Spiel, d.h. er ist auf dem Desktop, im Menu oder steht kurz vor einem Timeout.

    Großartig, dass auch jeder Vorschlag so gut wie falsch ist :D



    new Float: health,preis; // Das Leben eines Spieler wird immer in einem Float returnt, daher muss auch health ein Float sein.
    GetPlayerHealth(playerid,health); // Hätten wir nur kurz in die Wiki mal geguckt, hätten wir die Syntax verstanden.
    preis = 100 - floatround(health, floatround_round); (Hier müssen wir die gerundete Zahl einsetzen, da wir hier wieder mit Ints, nicht mit Floats arbeiten (ich glaube, dass du sofort damit arbeiten kannst, wenn nicht vorher nochmal in eine Int: Var speichern und dann damit arbeiten
    GivePlayerMoney(playerid,-preis);
    SetPlayerHealth(playerid,100.0);



    Edit: SetPlayerHealth, habe gerade gesehen, dass da auch ein Int eingetragen wurde, immer besser das gleich als Float zu schrieben mit .0 am Ende.

    Dazu müssen wir uns einfach mal mit dem System des Textdraws beschäftigen und jene verstehen.


    1. Bildschirmauflösung


    Textdraws kennen nur einen Bildschirmauflösung: 640 * 480
    Egal welche Auflösung der Client hat, das Gatter für die Textdraws wird angepasst und trotzdem in 640 * 480 eingeteilt.


    2. Erstellen eines Textdraws


    http://wiki.sa-mp.com/wiki/TextDrawCreate
    Mit dem Wissen über die Koordinaten erstellen wir hiermit unser Textdraw.
    Als x,y Koordinate geben wir die Position links oben an.


    3. Größe des Textdraws


    http://wiki.sa-mp.com/wiki/TextDrawTextSize
    hier mit geben wir die Breite und die Höhe des Textdraws an. Jedoch wird die Höhe des Box immer deinen Text angepasst werden, daher müssen wir bei Boxen jetzt auf einen kleinen Trick zurückgreifen:


    4. Trick über Inhalt


    Bei Inhalt geben wir für die Box lediglich einen Absatz an: ~n~
    Über die Höhe des Absatzes, können wir nun die Gesammthöhe bestimmen.
    Um die Höhe somit zu verändern nutzen wir folglich:
    http://wiki.sa-mp.com/wiki/TextDrawLetterSize
    Je höher der y-wert, je höher der Textdraw


    5. Box definieren


    Zum Schluss müssen wir dem System nur noch sagen, dass wir eine Box haben möchten:
    http://wiki.sa-mp.com/wiki/TextDrawUseBox
    Und schlussendlich möchten wir die Box noch einfärben:
    http://wiki.sa-mp.com/wiki/TextDrawBoxColor



    6. Freuen, dass wir eine Box erstellt haben.


    Nein nicht in der Apotheke, also ich zocke American Football, wir haben ein Fittnessstudio in dem wir persönliche Beratung erhalten, ich denke, das ist in deinem nicht anders, oder? Dann würde ich das an deiner Stelle auch mal ausnutzen, einfach mal einen Trainer ansprechen. Besonders musst du darauf achten, was für ein Sport du machst oder ob du nur "gut" aussehen willst. Es gibt viel zu unterscheiden: Schnellkraft- oder Maximalkrafttraining? Wann Eiweis, welches und wie viel? ... Aber wenn du einen Trainingsplan hast, dann solltest du einfach mal den fragen, der ihn mit dir zusammengestellt hat.


    Zu Medis: Lass die Finger von Schmerztabletten! Beliebt ist immer wieder die Einnahme von Asperin; doch hier ist Vorsicht zu walten: Asperin wirkt blutverdünnend und kann zu Magenverletzungen (Blutungen etc.) führen.


    Viel wichtiger ist jedoch die Ernährung deinem Training anzupassen, damit erziehlst du (ohne Eiweis in Pulverform, ohne Medis) viel mehr Erfolge! Quark, Buttermilch usw. erhalten meist genug Eiweis. Auch achte dann auch deinen Electrolythaushalt und immer gut dehnen :D



    B2T Ich bin dafür, da wären diese WM-EM-Olympia-Champions-Pokal-Rundballkram endlich weggesperrt :D

    Es ist keine Funktion, sondern eine Überlegung, die besagt, dass wenn ein Spieler im Menü oder auf dem Desktop ist "OnPlayerUpdate" nicht mehr ausgeführt wird.


    das heißt du speicherst bei OnPlayerUpdate jeweils die time() ab und checks im Vergleich jede 10 Sekunden ob die aktuelle Time ungefähr der abgespeicherten entspricht.


    Zusätzlich kannst du dann noch ein Command einbauen.


    Aloha!

    Unrealistisch, offene Welt, keine Umwelt (Bäume etc.), ein paar Gebäude gesetzt.


    Unpassend für jeden RP und DM Server.


    Weil es doch noch halbwegs ordentlich ist: 2/10

    Einfacher: Schau dir Vektorrechnung und den 3dimensionalen Raum bitte an. P(x,y,z)


    SetCameraPos : Das ist der Standort deiner Kammera: Wenn du ein foto von dir machen möchtest, stellst du die Kammera doch vor dir.
    SetCameraLookAt: Hier ist der Punkt, den du mit deiner Kammera fotographieren willst: Also HIER müssten dann DEINE POSITION, da du ja ein Foto von dir mache möchtest, stehen.


    //Edit hast du die Spielerklassen hinzugefügt? (Achte AUF DIE POSITION IN DEN KLASSEN!)


    //Edit Du willst ja ein Foto von den Klassen, nicht von deinem Spieler machen ;)

    Also wenn ich halt immer einen print-Test mache, schau ich an, was falsch läuft. Zum Beispiel hättest du hier den Fehler bei der If-Schleife finden können, indem du in die if schleife etwas packst und dir vehicleid ausgeben lässt. Dann hättest du bemerkt, dass vehilceid != 1 ist und du hättest dich gewundert, warum eine eins steht. Dann hättest du dir zur Kontrolle nur noch "car" printen lassen müssen und du hättest den Fehler entdeckt ;)



    Grob musst du erst den Fehler lokalisieren: Werden bestimmte Schleifen durchlaufen? (Erfolg/Test druch print in die Schleife);
    Um dich dann weiter ins Detail vorzuarbeiten:: Wenn nein: Wie sehen die Variablen aus: Ausgeben aller Schleifen relevanten Daten: sind ungleich: Folglich: checken wo die variablen gesetzt werden...



    Edit: Jap als nächstes müsstest du dann checken, wenn es an der vehicleid nicht liegt, welches Team der Spieler ist und ob es übereinstimmt mit dem angegebenen Team.

    ahh also mit strcmp (stringcompare ;) dämmert es jetzt? ) vergleichst du zwei strings:


    wenn die strings gleich sind returnt es false von daher if (!strcmp(string1, string2)) : Für weitere Parameter von strcmp schau bitte ins Wiki!

    Du bist mir ja so einer, schau dir mal den Post von Nico an und überlege nochmal ganz genau nach, was du da schreibst.


    Außerdem ergibt es eigentlich keinen Sinn jedezeit die Datei zu öffnen für eine Variable. Speicher den Spaß doch ab, wenn der User sich ausloggt.


    Das führt nur zu unnötigen Dateiaufrufen = resourcenfressend.


    Schlussendlich kannst du vlt dann jede 15 Minuten einen Sicherungstimer auslösen, der dann sicherheitshalber alle User sichert. Aber immer eine Datei zu öffnen: unzwecksmäßig und unverhältnismäßig.


    Daher musst du mit strmid den PlayerVar setzen oder setze gleich eine SetPVarString um sie dann bei einen "OnSavePlayer" oder ähnliches komplett in die Datei zu sichern.



    Und zügle deine Worte, wer keine Ahnung sollte einfach mal... Pinguinweißheit... ;)