Problem MoveObject rotz

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
  • Hey Leute, ich habe folgendes Problem


    Ich möchte das sich ein Object eine Umdrehung 360° an der z Rotation dauerhaft dreht.
    Wie kann ich es möglich machen?

  • Hier mal der Code



    Problem ist nur das er das nicht langsam macht sondern ruckartig auf die nächste Koordinate geht

  • #define OBJECT_SPEED 0.01


    Hat er weniger etwas damit zu tun, das Problem ist, das der Timer nur für X Y Z funktioniert aber nicht für Rot X Rot Y und Rot Z

  • aber nicht für Rot X Rot Y und Rot Z


    Ja, weil die Geschwindigkeit zu hoch ist.


    Mach es mal auf: 0.0001 ;)


    Und sind die X,Y,Z Koordinaten bei dem MoveObject exakt die selben wie von dem Objekt? Denn du musst es mindestens um 0.0001 in irgendeine Richtung verschieben :)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Habe ich gemacht, aber es hat sich nichts geändert hier der Quellcode

  • Leider funktioniert das nicht.
    Jeffry:


    Das steht unter OnGameModInit

    Code
    dBoden =CreateObject(13607, 1478.07996, -1799.66003, 227.06000, 0.00000, 0.00000, 0.00000);
    	MoveObject(dBoden,1478.07996, -1799.66003, 227.06000, 0.00000, 0.00000, 90.00000);
    	SetTimerEx("TurnObject", 750, 0, "dd", dBoden, 0);


    Einmal editiert, zuletzt von Dr._Darius ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • dBoden =CreateObject(13607, 1478.07996, -1799.66003, 227.06000, 0.00000, 0.00000, 0.00000);
    MoveObject(dBoden,1478.07996, -1799.66003, 227.06000, 0.00000, 0.00000, 90.00000);
    SetTimerEx("TurnObject", 750, 0, "dd", dBoden, 0);


    Das MoveObject da mach mal zu:


    MoveObject(dBoden,1478.07996, -1799.66003, 227.06000, OBJECT_SPEED, 0.00000, 0.00000, 90.00000);


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • ändert leider nichts an der Situation.


    Folgender Effekt dritt auf.
    Der Boden dreht sich wie eine Schallplatte die gerade von einem DJ gescratcht wird. Es macht keine 360° drehung

  • Und genau das habe ich verwendet. aber funktioniert trotzdem nicht

  • Du hattest bei der Drehung zwei mal 360/0 Grad stehen, und es waren keine 90'er Sprünge.


    Teste es so:
    dBoden =CreateObject(13607, 1478.07996, -1799.66003, 227.06000, 0.00000, 0.00000, 0.00000);
    MoveObject(dBoden,1478.07996, -1799.661, 227.06000, OBJECT_SPEED, 0.00000, 0.00000, 90.00000);
    SetTimerEx("TurnObject", 750, 0, "dd", dBoden, 0);


    forward TurnObject(objectid, objpos);
    public TurnObject(objectid, objpos)
    {
    if(objectid == dBoden)
    {
    switch(objpos)
    {
    case 0: MoveObject(dBoden, 1478.07996, -1799.66003, 227.06000+0.01, OBJECT_SPEED, 0.00000, 0.00000, 180.0), objpos = 1;
    case 1: MoveObject(dBoden, 1478.07996, -1799.66003, 227.06000+0.02, OBJECT_SPEED, 0.00000, 0.00000, 270.0), objpos = 2;
    case 2: MoveObject(dBoden, 1478.07996, -1799.66003, 227.06000+0.03, OBJECT_SPEED, 0.00000, 0.00000, 0.0), objpos = 3;
    case 3: MoveObject(dBoden, 1478.07996, -1799.66003, 227.06000+0.04, OBJECT_SPEED, 0.00000, 0.00000, 90.0), objpos = 0;
    }
    SetTimerEx("TurnObject", 750, 0, "dd", dBoden, objpos);
    }
    return 1;
    }


    Mit OBJECT_SPEED als 0.001.

  • SO es Funktioniert alles, jedoch möchte ich noch das es sich langsam dreht und und flüssig(kleine Rückler sind ok)

  • Ein Beispiel wäre Super, Weil ich im Script 2 mal SettimerEx habe.


    Was ich mir Vorstell in 30 min =360°

  • Naja, du machst hier die 750 größer:
    SetTimerEx("TurnObject", 750, 0, "dd", dBoden, objpos);
    zu:
    SetTimerEx("TurnObject", 1500, 0, "dd", dBoden, objpos);


    Und OBJECT_SPEED machst du kleiner, zu 0.0005.


    => Somit wäre der Timer verdoppelt und die Geschwindigkeit halbiert.
    Musst es eben so anpassen wie es dir von der Geschwindigkeit her dann gefällt. Timer immer in Relation zur Geschwindigkeit anpassen. Genau kann ich es dir so nicht sagen, welche Zahlen du nehmen musst, ich habe damals auch dutzende Versuche gebraucht, bis es gepasst hat. Das ist eben eine Probiererei. ;)

  • Werden beide in Millisekunden angeben? d.h Speed und SettimerEx?
    Ein Befehl wäre dafür am besten


    für Speed und den Timer