Motorhaube

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 Breadfish-Community,


    ich bin am versuchen ein Function aufzubauen was die distanz vom Spieler und Motorhaube ist.


    folgendermaßen habe ich angefangen:

    Code
    stock bool:IstPlayerMotorhaube(vehicleid)
    {
    	new Float:Float[3];
    	// weitere komme ich nicht...
    	return false;
    }


    Leider ist das SA:MP Wiki down und kann leider nicht die Fahrzeug parameter nachschauen...
    Kann mir einer weiterhelfen?
    Wie gesagt ich möchte berechnet haben, dass der Spieler vor der Motorhaube steht...
    Bin diesbezüglich etwas neu was aufstellen der berechnungen ist..

  • Dafür kannst du diese Funktion nutzen: Position hinterm Fahrzeug rausfinden.


    stock GetPosVorVeh(vehicleid, Float:dist, &Float:x, &Float:y, &Float:z) //©Jeffry
    {
    new Float:a;
    GetVehicleZAngle(vehicleid, a);
    GetVehiclePos(vehicleid, x, y, z);
    x += (dist * floatsin(-a, degrees));
    y += (dist * floatcos(-a, degrees));
    return true;
    }


    Dies kannst du vie GetPlayerPos nutzen, und dann mit IsPlayerInRangeOfPoint prüfen, ob der Spieler innerhalb des Umkreises ist.


    Wenn du es auf verschieden große Fahrzeuge anwenden willst, dann kannst du die "dist" über https://wiki.sa-mp.com/wiki/GetVehicleModelInfo herausfinden (Länge durch 2 wäre die dist dann).

  • Ah okey danke @Jeffry,


    eine Frage hätte ich noch, und zwar wenn ich diesen Stock "GetPosVorVeh" aufrufe muss der Spieler doch im Auto sitzen oder?
    Weil man muss ja die "vehicleid" angeben, dies geht ja in dem sinne nur dann wenn der Spieler im Auto sitzt oder?
    Oder bin ich verwirrt?

  • aufrufe muss der Spieler doch im Auto sitzen oder?

    Nein. Du kannst es z.B so machen:


    verwenden kannst du es dann so:


    C
    if(strcmp("/getcarid",cmdtext,true,10) == 0)
    {
    	new id, str[128];
    	id = GetNearestVehicleID(playerid, 20.0);
    	if(id == INVALID_VEHICLE_ID) return SendClientMessage(playerid,-1,"Es befindet sich kein Fahrzeuge in der Nähe.");
            format(str,sizeof str,"Die Vehicleid des nähesten Fahrzeuges ist: %d",id);
    	SendClientMessage(playerid,-1,str);
    	return 1;
    }

    Du Funktion GetNearestVehicleID gibt die FahrzeugID des nähesten Fahrzeuges wieder.


    MfG :thumbup:


    Mit freundlichen Grüßen
    German_ScripterHD