AttachObjectToVehicle

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
  • Hallöle,


    ich hab ein kleines Problemchen mit dem erwähnten Befehl. SuFu genutzt, auch was gefunden. Aber irgendwie hat es nicht geholfen.... o_O


    Meinen Originalcode habe ich hier nicht, sorry. Bin nicht zu Hause. Aber ich schreibe mal, wie ich es gemacht habe und was passiert...
    Ich weiß, das verstößt hier gegen das allgemein gewünschte Verhalten (Code posten, ....) aber ich kanns gerade nur ausführlich erklären, ich denke ihr kriegt es trotzdem hin es nach zu vollziehen.


    Ausgangssituation:
    Ich möchte an meinen LKW zwei Lichter an das Dach packen. Bling-bling und so. Keine Sirene, sondern wirklich Lichter. Ich habe die ''Light-Poller'' genommen, leider weiß ich nicht genau wie die richtig heißen. Hab es vielleicht ein bisschen umständlich gemacht. Habe mich in ein Roadtrain gesetzt und meine Position gesaved. Habe dann im MTA Map Editor auf dieser Position einen Truck und die Lichter erstellt. Die Lichter an die richtige Position geschoben, die Differenz der Positionen vom Truck zu den Lichtern genommen. Diese Abstände dann im CreateObject genutzt.
    Die Abstände sind in dem Beispiel jetzt einfach mal
    x+5, y+2, z+3
    Das ganze läuft über z.B. den Befehl /mylicht


    Vorgehen im Script:
    - Koordinaten vom Spieler gespeichert in float:xx, float:yy und float:zz.
    - Objekte erstellt.
    Light1 = CreateObject(ID, xx+5,yy+2,zz+3,0,0,0); //wenn ich mich recht erinnere.
    - Fahrzeug-ID des Spielers holen
    vID = GetPlayerVehicleID(playerid)
    - Objekte ans Fahrzeug kleben
    AttachObjectToVehicle(Light1, vID, xx+5,yy+2,zz+3, 0, 0, 0)


    Problem:
    Ich bekomme keine Errors oder Warnings.
    Beim Eingeben des Befehls ingame:
    - Die Objekte werden an der richtigen Stelle erstellt. Alles läuft reibungslos.
    - Wenn ich losfahre fallen die Lampen einfach ab Q_Q Sie werden nicht mit dem Fahrzeug in Verbindung gebracht. Warum? o_O


    Sorry wenn ich nur zu blöd dazu bin xD
    Sorry² wenns das Problem hier schon gab, SuFu hat zu diesem Problem nichts gefunden
    Sorry³ wenn ihr ohne meinen richtigen Code nicht helfen könnt, aber da ich keine Errors bekomme wirds ein logischer Fehler sein. Und die Logik dahinter habe ich hier möglichst ausführlich beschrieben, sollte also genügen.


    Mit freundlichen Grüßen,
    Shine

  • Schau mal dieses Video hier bei ~3:36, das Problem gibts schon lange und hatte ich auch.
    http://www.youtube.com/watch?v=mI2kHMVpv1s
    Wenn du dieses abfallen der Lichter meinst,dass ist ein GTA Problem. Bin mir auch gar nicht mehr so sicher wodurch es alles hervorgerufen wurde. Ein Fall müsste aber die Kollision mit irgendetwas gewesen sein.Die fallen ab, sind dann aber wieder an der richtigen Stelle. Kann sein,dass du die Lichter zu weit im LKW drin hast und es deswegen als eine Kollision erkannt wird.

  • Nein, nicht dieses Abfallen.
    Die Lichter werden gar nicht erst an den Truck geheftet. Sobald ich losfahre, fallen die Lichte ab und liegen auf dem Boden. Ich kann San Andreas 50x umrunden, die Lichter bleiben auf dem Boden rumliegen...


    Es sieht beim Eingeben des Befehls richtig aus, sie sind an richtiger Stelle. Doch sobald ich die Position des Trucks veränder...nunja. S.o.

  • ganz einfach:


    Erstelle die Objecte am 0 Punkt.
    new Object = CreateObject(ID, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
    dann suchst du dir am besten Ingame die Cordinaten raus wo die Lampen an deinem Fahrzeug sein sollen.
    Ich habe mir dazu diesen Befehl gebastelt:
    if(strcmp(cmd, "/otest", true) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] != 1339) return 1;

    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "BENUTZE: /otest [objectid] [x] [y] [z] [rotx] [roty] [rotz]");
    new object = strval(tmp);

    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "BENUTZE: /otest [objectid] [x] [y] [z] [rotx] [roty] [rotz]");
    new Float:x = floatstr(tmp);

    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "BENUTZE: /otest [objectid] [x] [y] [z] [rotx] [roty] [rotz]");
    new Float:y = floatstr(tmp);

    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "BENUTZE: /otest [objectid] [x] [y] [z] [rotx] [roty] [rotz]");
    new Float:z = floatstr(tmp);

    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "BENUTZE: /otest [objectid] [x] [y] [z] [rotx] [roty] [rotz]");
    new Float:rotx = floatstr(tmp);


    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "BENUTZE: /otest [objectid] [x] [y] [z] [rotx] [roty] [rotz]");
    new Float:roty = floatstr(tmp);


    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "BENUTZE: /otest [objectid] [x] [y] [z] [rotx] [roty] [rotz]");
    new Float:rotz = floatstr(tmp);

    new carid = GetPlayerVehicleID(playerid);
    DestroyObject(CarObject[carid][0]);
    CarObject[carid][0] = CreateObject(object,0,0,0,0,0,0);
    AttachObjectToVehicle(CarObject[carid][0], carid, x, y, z, rotx, roty, rotz);
    format(string, sizeof(string), "[DEBUG] OBJECT %d | X[%f] Y[%f] Z[%f] RX[%f] RY[%f] RZ[%f]",object,x,y,z,rotx,roty,rotz);
    SendClientMessage(playerid, 0xFF0000FF, string);
    return 1;
    }


    natürlich solltest du beachten das die Varriable fürs Object auf dein Script angepasst wird, bzw du diese GLOBAL definiert hast.
    nachdem du das gemacht hast, gehst du Ingame, setzt dich in dein Fahrzeug rein und gibst "/otest [OBJECTID] 0.0 0.0 0.0 0.0 0.0 0.0" ein und tastest dich dann an die gewünschte stelle ran.
    Wenn du das hast kannst du in dein Script gehen und mit AttachObjectToVehicle und den gerade herrausgefundenen Coords dein Object ans Fahrzeug attachen.


    Ich hoffe ich hab mich einigermaßen verständlich ausgedrückt, und konnte dir helfen :)


    Mit freundlichen Grüßen,
    [GSF]Zunno

  • Schon, aber ich verstehe den Sinn dahinter nicht.
    Ich habe ja schon die gewünschte Position, eben durch diese Abstände. Meine Objekte werden ja an den richtigen, gewünschten Stellen kreiert.
    Nur bleiben sie eben nicht am Fahrzeug... o.o


    Trotzdem, vielen Dank.