Frage zu Toren

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
  • Hallo,


    ich wollte mal Fragen, ob es möglich ist, ein Tor seitlich zu öffnen, ohne neue Koordinaten direkt eingeben zu müssen.
    Also ich will das Dynamisch haben. Bei nach unten öffnen hab ichs so:
    new Float:x, Float:y, Float:z;
    GetObjectPos(gateid, x, y, z);
    MoveObject(gateid, x, y, z-20);


    Und so ähnlich hätte ich das dann eben gerne zum seitliuch öffnen, also das das Tor nach links geschoben wird.

  • Müsstest halt überlegen. Stell dir ein Koordinatensystem vor und verschiebe es dort dann, dann müsstes du es ungefährt herausfinden.
    Da sich aber x und y verändern würde ich lieber die Koordinaten neu eintragen ;)

  • schau dir mal mein Command an...


    Command("gate")
    {
    if(IsPlayerConnected(playerid))
    {
    Schleife(TorSystem,InfoID)
    {
    if(PlayerToPoint(15.0, playerid,TorSystem[InfoID][ZuX], TorSystem[InfoID][ZuY], TorSystem[InfoID][ZuZ]))
    {
    if(TorSystem[InfoID][OwnerID] == PlayerInfo[playerid][pMember])
    {
    format(string, sizeof(string), "Tor Geöffnet %d", InfoID);
    SendClientMessage(playerid,COLOR_WHITE,string);
    if(TorSystem[InfoID][TorStyle] == 0)
    {
    MoveObject(Tor[InfoID],TorSystem[InfoID][ZuX]-7,TorSystem[InfoID][ZuY],TorSystem[InfoID][ZuZ],3);
    // MoveObject(Tor[InfoID],TorSystem[InfoID][ZuX],TorSystem[InfoID][ZuY],TorSystem[InfoID][ZuZ]-8,3);
    GateTimer[playerid] = SetTimerEx("CloseDynamic", TorSystem[InfoID][TimeToClose], 1, "dd",playerid,InfoID);
    return 1;
    }
    if(TorSystem[InfoID][TorStyle] == 1)
    {
    MoveObject(Tor[InfoID],TorSystem[InfoID][ZuX]-7,TorSystem[InfoID][ZuY],TorSystem[InfoID][ZuZ],3);
    GateTimer[playerid] = SetTimerEx("CloseDynamic", TorSystem[InfoID][TimeToClose], 1, "dd",playerid,InfoID);
    return 1;
    }
    if(TorSystem[InfoID][TorStyle] == 2)
    {
    MoveObject(Tor[InfoID],TorSystem[InfoID][ZuX],TorSystem[InfoID][ZuY],TorSystem[InfoID][ZuZ]-7,3);
    GateTimer[playerid] = SetTimerEx("CloseDynamic", TorSystem[InfoID][TimeToClose], 1, "dd",playerid,InfoID);
    return 1;
    }
    if(TorSystem[InfoID][TorStyle] == 3)
    {
    MoveObject(Tor[InfoID],TorSystem[InfoID][ZuX]+7,TorSystem[InfoID][ZuY],TorSystem[InfoID][ZuZ],3);
    GateTimer[playerid] = SetTimerEx("CloseDynamic", TorSystem[InfoID][TimeToClose], 1, "dd",playerid,InfoID);
    return 1;
    }
    if(TorSystem[InfoID][TorStyle] == 4)
    {
    MoveObject(Tor[InfoID],TorSystem[InfoID][ZuX],TorSystem[InfoID][ZuY],TorSystem[InfoID][ZuZ]+7,3);
    GateTimer[playerid] = SetTimerEx("CloseDynamic", TorSystem[InfoID][TimeToClose], 1, "dd",playerid,InfoID);
    return 1;
    }
    return 1;
    }
    }
    }
    }
    return 1;
    }

  • das ist mir klar. nur daraus muss man ja irgendwie berechnen wohin das tor gehen soll.
    Bsp:
    Torkoords sind: x, y, z
    Rot sind: rx, ry, rz
    Das Tor soll um nach links fahren
    Wie wäre dann die berechnung dafür? Das ist das was ich suche

  • Meine Idee dazu wäre es ungefähr so zu versuchen


    new Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz;
    GetObjectRot(gateid,rx,ry,rz);
    if(rz > 0 && rz < 10) MoveObject(gateid,x-1,y-7,z);
    //etc


    Das ist nur ausm Kopf geschrieben, keine Garantie dafür das es funktioniert

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • aber wenn ich rotation 15 Grad ist bewegt sich das object richtig fail
    und das will ben ja eben nicht

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Was ich denke einfach



    MoveObject(gateid, x, y-20, z);
    bzw. ausprobieren ob x oder y seitlich ist in dem fall


    wenn ich das doch dynamisch haben will, dann kann man ja nicht davon ausgehen, dass das tor wirklich so genau ist.
    außerdem gibts bei einer etwas ungereaderen gradzahl (zb. 43) probleme machen.
    ich probier dann jetzt mal aces variante aus