Rotations Problem bei MoveObject

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
  • Da es ein starkes Problem ist hierher verschoben von den kleinen Scriptingfragen.


    Ich habe 13 Objekte, die ich verschieben möchte.


    new ZollMaut[15];


    1 Objekt, dass funktioniert.


    Relevant sind case 0case 8 und case 10 (Array-Objekt 0, 8 , 10)

    Code
    ZollMaut[0] = CreateDynamicObject(968, X, Y, Z, 0.000000, 90.000000, -98.799995, -1, -1, -1, 300.00, 300.00);


    Die ersten 8 Objekte funktionieren, nichts ist anders die folgenden scheinen nicht zu funktionieren und wurden mehrfach ausgetauscht.
    Bei Zollmaut[10] ist es so, dass das Objekt einfach nur seine Z Position ändern soll, öffnet sich die Rampe scheint das Objekt weg zufliegen anstatt wie angegeben -2 nach der Z Koordinate zu gehen.



    An der Funktion, die das richtige Objekt herausfindet (GetClosestZollMaut) kann es nicht liegen, da ich bereits versucht habe das Objekt einfach so zu bewegen.






    Code
    ZollMaut[10] = CreateDynamicObject(968, X,Y,Z , 0.000000, 90.00, -12.899986, -1, -1, -1, 300.00, 300.00);
    Code
    ZollMaut[8] = CreateDynamicObject(968, X, Y, Z, 0.000000, -90.000000, -10.800004, -1, -1, -1, 300.00, 300.00);
    C
    @checkZoneMaut(p,i);@checkZoneMaut(p,i)
    {
    	return (GetClosestZollMaut(p) == -1) ? ZollMautzu(i) : SetTimerEx("@checkZoneMaut", 3000, 0, "ii", p,i);
    }


    C
    stock MoveDynamicObjectRot(obj, Float:rX, Float:rY, Float:rZ, bool:open)
    {
    	new Float:x,Float:y,Float:z;
    	GetDynamicObjectPos(obj,x,y,z);
    	MoveDynamicObject(obj,x,y,z+((open)?(0.0001):(-0.0001)),0.0001,rX,rY,rZ);
    	return 1;
    }

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Es gibt bestimmt bessere varianten aber
    ich habs so gemacht:


    globale Variable:
    new Schranken;


    OnGameModeInit:
    LoadSchranken();


    Command:

    ocmd:schranken(playerid,params[])
    {
    if(Schranken == 1)
    {
    CloseAllSchranken();
    }
    else
    if(Schranken == 0)
    {
    OpenAllSchranken();
    }
    return 1;
    }


    Stocks:



    stock OpenAllSchranken()
    {
    MoveDynamicObjectRot(schranke[0],0,0,0,true);
    MoveDynamicObjectRot(schranke[1],0,0,0,true);
    MoveDynamicObjectRot(schranke[2],0,0,0,true);
    MoveDynamicObjectRot(schranke[3],0,0,0,true);
    MoveDynamicObjectRot(schranke[4],0,0,0,true);
    MoveDynamicObjectRot(schranke[5],0,0,0,true);
    MoveDynamicObjectRot(schranke[6],0,0,0,true);
    MoveDynamicObjectRot(schranke[7],0,0,0,true);
    MoveDynamicObjectRot(schranke[8],0,0,0,true);
    MoveDynamicObjectRot(schranke[9],0,0,0,true);
    Schranken = 1;
    return 1;
    }



    stock CloseAllSchranken()
    {
    MoveDynamicObjectRot(schranke[0],0,90.0000,0,true);
    MoveDynamicObjectRot(schranke[1],0,90.0000,0,true);
    MoveDynamicObjectRot(schranke[2],0,90.0000,0,true);
    MoveDynamicObjectRot(schranke[3],0,90.0000,0,true);
    MoveDynamicObjectRot(schranke[4],0,90.0000,0,true);
    MoveDynamicObjectRot(schranke[5],0,90.0000,0,true);
    MoveDynamicObjectRot(schranke[6],0,90.0000,0,true);
    MoveDynamicObjectRot(schranke[7],0,90.0000,0,true);
    MoveDynamicObjectRot(schranke[8],0,90.0000,0,true);
    MoveDynamicObjectRot(schranke[9],0,90.0000,0,true);
    Schranken = 0;
    return 1;
    }



    stock LoadSchranken()
    {
    print("Schranken werden Geladen.");
    schranke[0] = CreateDynamicObject(968, 190.0970, -141.1317, 1.0950, 0.0000, 90.0000, 0.0000); //barrierturn
    schranke[1] = CreateDynamicObject(968, 198.2671, -141.1317, 1.0950, 0.0000, 90.0000, 0.0000); //barrierturn
    schranke[2] = CreateDynamicObject(968, 206.1571, -141.1317, 1.0950, 0.0000, 90.0000, 0.0000); //barrierturn
    schranke[3] = CreateDynamicObject(968, 213.9771, -141.1317, 1.0950, 0.0000, 90.0000, 0.0000); //barrierturn
    schranke[4] = CreateDynamicObject(968, 221.6571, -141.1317, 1.0950, 0.0000, 90.0000, 0.0000); //barrierturn
    schranke[5] = CreateDynamicObject(968, 190.0970, -144.0717, 1.0950, 0.0000, 90.0000, 0.0000); //barrierturn
    schranke[6] = CreateDynamicObject(968, 198.2371, -144.0717, 1.0950, 0.0000, 90.0000, 0.0000); //barrierturn
    schranke[7] = CreateDynamicObject(968, 205.9669, -144.0717, 1.0950, 0.0000, 90.0000, 0.0000); //barrierturn
    schranke[8] = CreateDynamicObject(968, 213.7969, -144.0717, 1.0950, 0.0000, 90.0000, 0.0000); //barrierturn
    schranke[9] = CreateDynamicObject(968, 221.5068, -144.0717, 1.0950, 0.0000, 90.0000, 0.0000); //barrierturn
    print("Schranken wurden Geladen.");
    Schranken = 0;
    return 1;
    }

    Du willst mich kennenlernen? Kauf mein Buch, Bia*ch!


  • Da es ein starkes Problem ist

    Das ist kein starkes Problem, du machst daraus nur ein starkes Problem, indem du uns nicht alle wichtigen Details gibst.


    Geb doch wenigstens von den Problem Schranken die genauen Koordinaten und Start-Rotationen an...


    Damit wir das reproduzieren können und selber testen können.


    Desweiteren nutzt du wie ich sehe ein paar Funktionen falsch...also MoveDynamicObject(ZollMaut[i], 0.0, -2.0, 0.0, 1, 0.0, 0.0, 0.0);


    da nutzt du ja nur MoveDynamicObject mit einem Speed von 1...auf den 0 Punkt?!


    Keine Ahnung, magst du uns mal den Erstell Code geben und alle Rotations-Achsen angeben, danke ^^



    ich habs so gemacht:

    Zum testen supi!


    Aber das System was er nutzt, öffnet immer nur die Schranke, die am nähsten bei ihm ist und schließt diese automatisch, sobald er nicht mehr in der Nähe ist.


    Funktionieren tut das System, nur er verwendet einfach irgendwo falsche Parameter bzw Koordinaten. :D

    ast2ufdyxkb1.png


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

  • Was halt auffällig ist, ist dass die Schranke [8] weiter weg ist von den anderen eventuell liegt es daran? Und was auffällt die Z Koordinate eventuell liegt es daran?

    Zitat von Kaliber

    da nutzt du ja nur MoveDynamicObject mit einem Speed von 1...auf den 0 Punkt?!

    Wie nutze ich die Funktion falsch? ist der Speed 1 falsch oder wie? Ich bewege das Objekt ja -2 auf der Y Koordinate. Ist doch so, dass wenn ich 0 angebe er sich 0 "Meter" in die Richtung bewegt oder sind das die Koordinaten :o


    Gibt keinen Code beim erstellen. Hier die X-Y-Z Positions. [0] = Funktioniert, [10] = Objekt bewegt sich konstant in eine Richtung mit (MoveDynamicObject), [8] Schranke die verbugt auf geht (vermutlich sehr langsam)

    C
    ZollMaut[0] = CreateDynamicObject(968, 47.892612, -1533.911376, 5.059437, 0.000000, 90.000000, -98.799995, -1, -1, -1, 300.00, 300.00);
    
    
    ZollMaut[10] = CreateDynamicObject(968, -168.013595, 364.986572, 12.180410, 0.000000, 90.00, -12.899986, -1, -1, -1, 300.00, 300.00);
    
    
    ZollMaut[8] = CreateDynamicObject(968, -945.394165, -265.088317, 36.620601, 0.000000, -90.000000, -10.800004, -1, -1, -1, 300.00, 300.00);


    Alle Rotations-Achsen:



    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.