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 ![]()