Lestium Posted June 14, 2015 Share Posted June 14, 2015 Hey, I need help for Get trailer ID (for open trailer doors and attach vehicle to this). I have tested this native : GET_VEHICLE_TRAILER_VEHICLE , but crash the game int GetTrailer(int Veh) { int Tr = 0; while (!Function.Call<bool>(Hash.GET_VEHICLE_TRAILER_VEHICLE, Tr, Veh)) { Tr++; } return Tr; } Help me, please Sorry for my bad english. Link to comment Share on other sites More sharing options...
Jitnaught Posted June 15, 2015 Share Posted June 15, 2015 (edited) int GetTrailer (int veh){ int trailer = -1; Function.Call<bool>(Hash.GET_VEHICLE_TRAILER_VEHICLE, veh, trailer); return trailer;} Untested, btw. If you want to know how to use a native, you can look at the NativeDB page (scroll down to see how to use the GET_VEHICLE_TRAILER_VEHICLE native, you'll see it). The main problem you had with your code is you were trying to get a trailer vehicle from the trailer ID, which was 0. The other was your whole while (..) tr++ stuff, which you didn't need to do since the native already gives you the ID of the trailer, so you don't need a loop or anything like that. Edited June 15, 2015 by LetsPlayOrDy Link to comment Share on other sites More sharing options...
Mgel Posted June 15, 2015 Share Posted June 15, 2015 Here's what i would do: Vehicle GetAttachedTrailer(Vehicle veh){ if (Function.Call<bool>(Hash.GET_VEHICLE_TRAILER_VEHICLE, veh)) { return Function.Call<Vehicle>(Hash.GET_VEHICLE_TRAILER_VEHICLE, veh) } else return null;}void AttachTrailer(Vehicle trailer, Vehicle veh){ Vehicle currentTrailer = GetAttachedTrailer(veh); if (currentTrailer != null && currentTrailer.Handle != trailer.Handle) { Function.Call(DETACH_VEHICLE_FROM_TRAILER(veh)); currentTrailer.Delete(); Function.Call(ATTACH_VEHICLE_TO_TRAILER(veh, trailer, 0f)); } else if (currentTrailer.Handle == trailer.Handle) { UI.Notify("Specified trailer already attached to vehicle"); } else { Function.Call(ATTACH_VEHICLE_TO_TRAILER(veh, trailer, 0f)); }} Or at least something along those lines as it haven't been tested. Link to comment Share on other sites More sharing options...
Lestium Posted August 26, 2015 Author Share Posted August 26, 2015 Here's what i would do: Vehicle GetAttachedTrailer(Vehicle veh){ if (Function.Call<bool>(Hash.GET_VEHICLE_TRAILER_VEHICLE, veh)) { return Function.Call<Vehicle>(Hash.GET_VEHICLE_TRAILER_VEHICLE, veh) } else return null;}void AttachTrailer(Vehicle trailer, Vehicle veh){ Vehicle currentTrailer = GetAttachedTrailer(veh); if (currentTrailer != null && currentTrailer.Handle != trailer.Handle) { Function.Call(DETACH_VEHICLE_FROM_TRAILER(veh)); currentTrailer.Delete(); Function.Call(ATTACH_VEHICLE_TO_TRAILER(veh, trailer, 0f)); } else if (currentTrailer.Handle == trailer.Handle) { UI.Notify("Specified trailer already attached to vehicle"); } else { Function.Call(ATTACH_VEHICLE_TO_TRAILER(veh, trailer, 0f)); }} Or at least something along those lines as it haven't been tested. int GetTrailer (int veh){ int trailer = -1; Function.Call<bool>(Hash.GET_VEHICLE_TRAILER_VEHICLE, veh, trailer); return trailer;} Untested, btw. If you want to know how to use a native, you can look at the NativeDB page (scroll down to see how to use the GET_VEHICLE_TRAILER_VEHICLE native, you'll see it). The main problem you had with your code is you were trying to get a trailer vehicle from the trailer ID, which was 0. The other was your whole while (..) tr++ stuff, which you didn't need to do since the native already gives you the ID of the trailer, so you don't need a loop or anything like that. Thanks for your helps, but dosen't work again (the game has stopped working) Link to comment Share on other sites More sharing options...
GeorgeZhang Posted August 26, 2015 Share Posted August 26, 2015 (edited) You should pass Vehicle instead of integer. It seems that the bool returns whether a trailer is found or not. Vehicle trailer;if(Function.Call<bool>(Hash.GET_VEHICLE_TRAILER_VEHICLE, veh, trailer)){ //do something with the trailer} Please test it out. Hope it helps Edited August 26, 2015 by GeorgeZhang Link to comment Share on other sites More sharing options...
Lestium Posted August 28, 2015 Author Share Posted August 28, 2015 You should pass Vehicle instead of integer. It seems that the bool returns whether a trailer is found or not. Vehicle trailer;if(Function.Call<bool>(Hash.GET_VEHICLE_TRAILER_VEHICLE, veh, trailer)){ //do something with the trailer} Please test it out. Hope it helps Thank, but doesn't work again, i tested my idea : Vehicle[] Nearby = World.GetNearbyVehicles(Game.Player.Character, Convert.ToSingle(10.0), 3); Vehicle CurrentVeh = Game.Player.Character.CurrentVehicle; foreach (Vehicle veh in Nearby) { if (veh != CurrentVeh) { Function.Call<bool>(Hash.GET_VEHICLE_TRAILER_VEHICLE, CurrentVeh, veh); } } This returns false when the trailer is nearby (it's okay), but when trailer is attached, game stopped working.. Link to comment Share on other sites More sharing options...
GeorgeZhang Posted August 28, 2015 Share Posted August 28, 2015 You should pass Vehicle instead of integer. It seems that the bool returns whether a trailer is found or not. Vehicle trailer;if(Function.Call<bool>(Hash.GET_VEHICLE_TRAILER_VEHICLE, veh, trailer)){ //do something with the trailer} Please test it out. Hope it helps Thank, but doesn't work again, i tested my idea : Vehicle[] Nearby = World.GetNearbyVehicles(Game.Player.Character, Convert.ToSingle(10.0), 3); Vehicle CurrentVeh = Game.Player.Character.CurrentVehicle; foreach (Vehicle veh in Nearby) { if (veh != CurrentVeh) { Function.Call<bool>(Hash.GET_VEHICLE_TRAILER_VEHICLE, CurrentVeh, veh); } } This returns false when the trailer is nearby (it's okay), but when trailer is attached, game stopped working.. But the code seems to assign all vehicles nearby to your trailer, which is likely what crashed the game? Maybe you should try passing another Vehicle variable? Link to comment Share on other sites More sharing options...
Lestium Posted August 28, 2015 Author Share Posted August 28, 2015 I found how to use OutputArgument, it works with this code : Vehicle GetTrailer(Vehicle veh) { OutputArgument outputArgument = new OutputArgument(); if (Function.Call<bool>(Hash.GET_VEHICLE_TRAILER_VEHICLE, veh, outputArgument)) { return outputArgument.GetResult<Vehicle>(); } else { return null; } } Thank you to those who helped me! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now