Hey Breadfishler,
Ich habe ein Problem und zwar weiß ich nicht ganz genau wie ich den Trailer am Truck Attachen soll wenn er /gettrailer eingibt
kann mir da einer helfen?
Hey Breadfishler,
Ich habe ein Problem und zwar weiß ich nicht ganz genau wie ich den Trailer am Truck Attachen soll wenn er /gettrailer eingibt
kann mir da einer helfen?
Diese Funktion sollte dir weiterhelfen können.
https://wiki.sa-mp.com/wiki/AttachTrailerToVehicle
erstmal vielen Dank für die Antwort aber ehrlichgesagt versteh ich nicht ganz genau was ich machen soll
z.B das hier:
new vehicleid = CreateVehicle(...);new trailerid = CreateVehicle(...); AttachTrailerToVehicle(trailerid, vehicleid);versteh ich absolut nicht die fahrzeuge stehen ja schon und wenn diese person sich hinein setzt soll er /gettrailer machen,und dann wird ein Trailer dran gesezt die Trucks sind mit TruckerVehs[] defininiert
wenn du sie schon erstellt hast brauchst du das CreateVehicle ned
dann schreibst du
new vehicleid = GetPlayerVehicleID(playerid);
Mein Befehl sieht nun so aus:
ocmd:gettrailer(playerid)
{
new vehicleid = GetPlayerVehicleID(playerid);
AttachTrailerToVehicle(435,vehicleid);
return 1;
}
aber es funktioniert nicht...
Schreib das mal so:
ocmd:gettrailer(playerid)
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,-1,"* Du befindest dich in keinem Fahrzeug!");
new vehicleid = GetPlayerVehicleID(playerid);
new trailer = GetClosestVehicle(playerid, 15.0);
if(trailer == INVALID_VEHICLE_ID) return SendClientMessage(playerid,-1,"* Es befindet sich kein Trailer in deiner Nähe!");
AttachTrailerToVehicle(trailer,vehicleid);
return 1;
}
//Die Funktion
stock GetClosestVehicle(playerid,Float:range)
{
new i,Float:ref=3000.0,Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
for(new Float:tmp,v=GetVehiclePoolSize(); v!=0; v--)
{
tmp=GetVehicleDistanceFromPoint(v,x,y,z);
if(tmp < ref) ref=tmp,i=v;
}
return (ref > range) ? INVALID_VEHICLE_ID : i;
}
Alles anzeigen
Achso dazu wollte ich noch sagen das wenn er /gettrailer macht ein Trailer an ihm dran "Spawnen" soll und nicht das er irgendwo steht und ich ihn dann so attache
...vielleicht so etwas..früher schreiben...
...die einfach spawnen Methode ist meiner Meinung nach..nicht so sinnvoll..denn wenn er z.B. nah an einer Wand steht..oder jemand / etwas hinter ihm ist...spawnt der trailer halt..darein...das könnte leute unter die Map werfen oder autos..in die Luft
Wie dem auch sei...das würde so aussehen:
ocmd:gettrailer(playerid)
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,-1,"* Du befindest dich in keinem Fahrzeug!");
new Float:x,Float:y,Float:z,Float:a, v=GetPlayerVehicleID(playerid),Float:length,Float:tmp;
GetVehiclePos(v,x,y,z),GetVehicleZAngle(v, a);
GetVehicleModelInfo(GetVehicleModel(v), VEHICLE_MODEL_INFO_SIZE, tmp, length, tmp);
x += (-((length/2.0)+8.0)) * floatsin(-a, degrees);
y += (-((length/2.0)+8.0)) * floatcos(-a, degrees);
new trailer = CreateVehicle(435,x,y,z,a,-1,-1,-1);
AttachTrailerToVehicle(trailer,v);
return 1;
}
Alles anzeigen
wie mache ich das dass er in einem TruckerVehs sitzen muss?
...nun das sind Basics, schau dir das nochmal an..
Je nachdem wie du das definiert hast...
//Oben im Command einfügen:
if(!IsTruckDriver(playerid)) return SendClientMessage(playerid,-1,"* Sie sind nicht der Fahrer eines Trucks!");
//Funktion
stock IsTruckDriver(playerid)
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 0;
for(new i; i<sizeof(trucks); i++) //Variablenname trucks anpassen
{
if(IsPlayerInVehicle(playerid, trucks[i])) return 1;
}
return 0;
}
Alles anzeigen
Habe es noch nie gemacht deswegen aber vielen Dank