Problem mit HotDog Job

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
  • Joa Guten Abend Breadfish,
    seit langen habe ich mal wieder ein Problem, dass ich mit euch teilen möchte :D


    Also mein Problem ist, wenn ich ein Pickup erstelle, soll es immer rechts vom Hotdog wagen stehen.
    Im Moment hab ich es so:


    new Float:x,Float:y,Float:z;
    GetVehiclePos(vehicleid,x,y,z);
    hotdogpickup[playerid]=CreatePickup(1239,1,x-0.6,y-2,z);


    Einmal ist es direkt rechts vom Hotdog wagen, aber drehe ich mich etwas ist es nicht mehr direkt rechts vom wagen.


    Zur verdeutlichung:
    So wies sein soll:

    Spoiler anzeigen
    Ein bisschen "gedreht":

    Spoiler anzeigen
    10 Beiträge [X]
    50 Beiträge [X]
    100 Beiträge [X]
    150 Beiträge [X]
    200 Beiträge [X]
    250 Beiträge [X]
    300 Beiträge [X]
    350 Beiträge [X]
    400 Beiträge [X]
    450 Beiträge [X]
    500 Beiträge [X]
    550 Beiträge []
    600 Beiträge []
    650 Beiträge []
    700 Beiträge []
    750 Beiträge []

  • Ich denke mal, dass du das Problem mit logischem Denken selbst entdeckt hast.
    Du erstellst ein Pickup, dass immer die gleiche Position hat. Nur ist das Problem, wenn das Fahrzeug gedreht ist.


    Gleiche Position: -0.6 auf der x-Achse, -2 auf der y-Achse.


    Meine Lösung dazu (keine Garantie): Man müsste die Rotation feststellen und das dann verschieben.

  • Ich kann dir einen Stock geben, den du nur etwas anpassen musst.
    Damit kannst du die Position neben einem Fahrzeug zurückverfolgen.
    Natürlich bezogen auf die Rotation des Fahrzeuges ;)
    stock IsPlayerBehindVehicle(playerid,veh)
    {
    new Float:vcoord[3]; GetVehiclePos(veh,vcoord[0],vcoord[1],vcoord[2]);
    new Float:vangle; GetVehicleZAngle(veh,vangle);
    new Float:vinfo[3]; GetVehicleModelInfo(GetVehicleModel(veh),VEHICLE_MODEL_INFO_SIZE,vinfo[0],vinfo[1],vinfo[2]);
    new Float:lenge = floatdiv(vinfo[1],2.0);
    new Float:radius = floatdiv(vinfo[0],2.0);
    vcoord[0] = floatadd(vcoord[0],(-lenge * floatsin(-vangle,degrees)));
    vcoord[1] = floatadd(vcoord[1],(-lenge * floatcos(-vangle,degrees)));
    if(IsPlayerInRangeOfPoint(playerid,radius,vcoord[0],vcoord[1],vcoord[2])){return 1;}
    else{return 0;}
    }


    Musst du nur auf deine Bedürfnisse anpassen.
    In dem Beispiel oben wird ein Punkt hinter dem fahrzeug berechnet.