3dplanet Posted May 7, 2016 Share Posted May 7, 2016 (edited) This mod allow you to buy the super yacht from GTA online. Just go to the yellow marker in marina to buy your yacht. Download latest version of Yacht Deluxe Yacht customization - Model - Fittings - Lighting - Color - Country flag - Yacht name Choose choppers and boats models - up to 2 choppers - up to 2 boats - up to 4 seasharks Captain's menu - Change location - Modify yacht - Pilot yacht - Sell yacht Radio TV Optional (set in .ini file) - Price Multiplier - Change outfit in jacuzzi - Spawn girls in jacuzzi - Default radio ON - Default radio station - Spawn Captain - Spawn bartender Enjoy! Menu Controls : - num5 / Enter / Button A -> Select - num8 / Arrow Up / D-Pad Up -> Up - num2 / Arrow Down / D-Pad Down -> Down - num0 / Backspace / Button B -> Back - E / D-Pad Right -> Start menu (marina yellow marker) V1.8 - Working D-Pad Up - Optional spawn Captain - Optional spawn bartender - TV V1.7 - Some bug fix V1.6 - Default radio (see .ini file) - Default radio on (see .ini file) - Jacuzzi girls can be disabled (see .ini file) - Minor fix (yacht name issue and captain's menu should be fixed) V1.5 - Radio - Change outfit in jacuzzi can be disabled (see .ini file) V1.4 - Flatten water around yacht - Driveable yacht (not very good feature) - Captain and bartender character (no interaction) - Available seat in jacuzzi - Jacuzzi girls - Change outfit in jacuzzi V1.3 - Modify yacht menu added - Minor changes and fix V1.2 - Interior acces fixed - Flag issue fixed - Cellphone should not pop up while in menu (not tested for gamepad, need report) - Working Object spawn unlocker (V1.0) from GTAMultiplayer Team included V1.1 - Change location menu added (go to bridge) - Sell yacht - Arrow controls added - Gamepad controls added(not tested, need report) - Price multiplier, prices can be lowered (see .ini file) V1.0 - Initial release Known Issues : - Sometimes yacht name disappear during buying process - D-Pad Up could not work Install : Copy/Overwrite YachtDeluxe.asi and YachtDeluxe folder with its content in your GTAV root folder To keep your previous saved yacht, <b>DO NOT overwrite YachtDeluxe.sav</b> while upgrading version Requirements : - GTA V fully updated - latest ScripthookV - Visual C++ Redistributable for Visual Studio 2015 x64 - Object spawn unlocker (V1.0) from GTAMultiplayer Team (included) As ScripthookV has been developed under MSVC 2013, check you have install Visual C++ Redistributable for Visual Studio 2013 x64 Thanks to : Alexander Blade (Script Hook V & Native trainer menu) GTAMultiplayer Team (Object spawn unlocker (V1.0)) Machine4578 (Gamepad testing) and all GTAforums community Edited May 21, 2016 by 3dplanet nkjellman 1 Link to comment Share on other sites More sharing options...
3dplanet Posted May 7, 2016 Author Share Posted May 7, 2016 C++ code for a working radio (hope it will help you ImNotMental for SPA) radio_emitter1 = OBJECT::CREATE_OBJECT_NO_OFFSET(GAMEPLAY::GET_HASH_KEY("prop_boombox_01"), Xpos, Ypos, Zpos, TRUE, TRUE, FALSE); AUDIO::SET_STATIC_EMITTER_ENABLED("SE_DLC_APT_Yacht_Bar", TRUE); invoke<Void>(0x0E0CD610D5EB6C85, "SE_DLC_APT_Yacht_Bar", radio_emitter1); ENTITY::SET_ENTITY_INVINCIBLE(radio_emitter1, TRUE); ENTITY::FREEZE_ENTITY_POSITION(radio_emitter1, TRUE); ENTITY::SET_ENTITY_COLLISION(radio_emitter1, FALSE, FALSE); ENTITY::SET_ENTITY_VISIBLE(radio_emitter1, FALSE, FALSE); NETWORK::_0xF1CA12B18AEF5298(radio_emitter1, TRUE); AUDIO::SET_EMITTER_RADIO_STATION("SE_DLC_APT_Yacht_Bar", "RADIO_01_CLASS_ROCK"); R3QQ and qiangqiang101 2 Link to comment Share on other sites More sharing options...
qiangqiang101 Posted May 7, 2016 Share Posted May 7, 2016 C++ code for a working radio (hope it will help you ImNotMental for SPA) radio_emitter1 = OBJECT::CREATE_OBJECT_NO_OFFSET(GAMEPLAY::GET_HASH_KEY("prop_boombox_01"), Xpos, Ypos, Zpos, TRUE, TRUE, FALSE); AUDIO::SET_STATIC_EMITTER_ENABLED("SE_DLC_APT_Yacht_Bar", TRUE); invoke<Void>(0x0E0CD610D5EB6C85, "SE_DLC_APT_Yacht_Bar", radio_emitter1); ENTITY::SET_ENTITY_INVINCIBLE(radio_emitter1, TRUE); ENTITY::FREEZE_ENTITY_POSITION(radio_emitter1, TRUE); ENTITY::SET_ENTITY_COLLISION(radio_emitter1, FALSE, FALSE); ENTITY::SET_ENTITY_VISIBLE(radio_emitter1, FALSE, FALSE); NETWORK::_0xF1CA12B18AEF5298(radio_emitter1, TRUE); AUDIO::SET_EMITTER_RADIO_STATION("SE_DLC_APT_Yacht_Bar", "RADIO_01_CLASS_ROCK"); thanks, here is the C# code for a working TV public static void TVOnTick(){try { Prop[] nearbyProps = World.GetNearbyProps(Game.Player.Character.Position, 3.0); for (int i = 0; i <= nearbyProps.Length - 1; i++) { if (((((TVOn == false) && !playerPed.IsInVehicle) && (TVModels.Contains(nearbyProps(i).Model) && (playerPed.Position.DistanceTo(nearbyProps(i).Position) <= 2.0))))) { DisplayHelpTextThisFrame(_TVOn); if (Game.IsControlJustPressed(0, GTA.Control.Context)) { TV = nearbyProps(i); Native.Function.Call(Hash.ATTACH_TV_AUDIO_TO_ENTITY, TV); if (!Native.Function.Call<bool>(Hash.IS_NAMED_RENDERTARGET_REGISTERED, "tvscreen")) { Native.Function.Call(Hash.REGISTER_NAMED_RENDERTARGET, "tvscreen", false); } if (!Native.Function.Call<bool>(Hash.IS_NAMED_RENDERTARGET_LINKED, TV.Model)) { Native.Function.Call(Hash.LINK_NAMED_RENDERTARGET, TV.Model); rendertargetid = Native.Function.Call<int>(Hash.GET_NAMED_RENDERTARGET_RENDER_ID, "tvscreen"); } Native.Function.Call(Hash.SET_TV_CHANNEL, TV_Channel); Native.Function.Call(Hash.SET_TV_VOLUME, TV_Volume); TVOn = true; } } else if (((((TVOn == true) && !playerPed.IsInVehicle) && (TVModels.Contains(nearbyProps(i).Model) && (playerPed.Position.DistanceTo(nearbyProps(i).Position) <= 2.0))))) { DisplayHelpTextThisFrame(_TVOff); if (Game.IsControlJustPressed(0, GTA.Control.Context)) { Wait(1000); if (Native.Function.Call<bool>(Hash.IS_NAMED_RENDERTARGET_REGISTERED, "tvscreen")) { Native.Function.Call(Hash.RELEASE_NAMED_RENDERTARGET, "tvscreen"); } TVOn = false; } } }} catch (Exception ex) { //logger.Log(ex.Message & " " & ex.StackTrace)}} and this one should run on every tick if (TVOn) {Native.Function.Call(Hash.SET_TEXT_RENDER_ID, rendertargetid);Native.Function.Call(Hash.DRAW_TV_CHANNEL, 0.5, 0.5, 1.0, 1.0, 0.0, 255, 255, 255, 255);Native.Function.Call(Hash.SET_TEXT_RENDER_ID, Native.Function.Call<int>(Hash.GET_DEFAULT_SCRIPT_RENDERTARGET_RENDER_ID));Native.Function.Call(Hash.ENABLE_MOVIE_SUBTITLES, true);} 3dplanet 1 Link to comment Share on other sites More sharing options...
nkjellman Posted May 7, 2016 Share Posted May 7, 2016 C++ code for a working radio (hope it will help you ImNotMental for SPA) radio_emitter1 = OBJECT::CREATE_OBJECT_NO_OFFSET(GAMEPLAY::GET_HASH_KEY("prop_boombox_01"), Xpos, Ypos, Zpos, TRUE, TRUE, FALSE); AUDIO::SET_STATIC_EMITTER_ENABLED("SE_DLC_APT_Yacht_Bar", TRUE); invoke<Void>(0x0E0CD610D5EB6C85, "SE_DLC_APT_Yacht_Bar", radio_emitter1); ENTITY::SET_ENTITY_INVINCIBLE(radio_emitter1, TRUE); ENTITY::FREEZE_ENTITY_POSITION(radio_emitter1, TRUE); ENTITY::SET_ENTITY_COLLISION(radio_emitter1, FALSE, FALSE); ENTITY::SET_ENTITY_VISIBLE(radio_emitter1, FALSE, FALSE); NETWORK::_0xF1CA12B18AEF5298(radio_emitter1, TRUE); AUDIO::SET_EMITTER_RADIO_STATION("SE_DLC_APT_Yacht_Bar", "RADIO_01_CLASS_ROCK"); Do you think this could be used to allow us to change the radio stations in Michael, Trevor, and Franklin's safe houses? Link to comment Share on other sites More sharing options...
3dplanet Posted May 21, 2016 Author Share Posted May 21, 2016 C++ code for a working radio (hope it will help you ImNotMental for SPA) radio_emitter1 = OBJECT::CREATE_OBJECT_NO_OFFSET(GAMEPLAY::GET_HASH_KEY("prop_boombox_01"), Xpos, Ypos, Zpos, TRUE, TRUE, FALSE); AUDIO::SET_STATIC_EMITTER_ENABLED("SE_DLC_APT_Yacht_Bar", TRUE); invoke<Void>(0x0E0CD610D5EB6C85, "SE_DLC_APT_Yacht_Bar", radio_emitter1); ENTITY::SET_ENTITY_INVINCIBLE(radio_emitter1, TRUE); ENTITY::FREEZE_ENTITY_POSITION(radio_emitter1, TRUE); ENTITY::SET_ENTITY_COLLISION(radio_emitter1, FALSE, FALSE); ENTITY::SET_ENTITY_VISIBLE(radio_emitter1, FALSE, FALSE); NETWORK::_0xF1CA12B18AEF5298(radio_emitter1, TRUE); AUDIO::SET_EMITTER_RADIO_STATION("SE_DLC_APT_Yacht_Bar", "RADIO_01_CLASS_ROCK"); thanks, here is the C# code for a working TV public static void TVOnTick(){try { Prop[] nearbyProps = World.GetNearbyProps(Game.Player.Character.Position, 3.0); for (int i = 0; i <= nearbyProps.Length - 1; i++) { if (((((TVOn == false) && !playerPed.IsInVehicle) && (TVModels.Contains(nearbyProps(i).Model) && (playerPed.Position.DistanceTo(nearbyProps(i).Position) <= 2.0))))) { DisplayHelpTextThisFrame(_TVOn); if (Game.IsControlJustPressed(0, GTA.Control.Context)) { TV = nearbyProps(i); Native.Function.Call(Hash.ATTACH_TV_AUDIO_TO_ENTITY, TV); if (!Native.Function.Call<bool>(Hash.IS_NAMED_RENDERTARGET_REGISTERED, "tvscreen")) { Native.Function.Call(Hash.REGISTER_NAMED_RENDERTARGET, "tvscreen", false); } if (!Native.Function.Call<bool>(Hash.IS_NAMED_RENDERTARGET_LINKED, TV.Model)) { Native.Function.Call(Hash.LINK_NAMED_RENDERTARGET, TV.Model); rendertargetid = Native.Function.Call<int>(Hash.GET_NAMED_RENDERTARGET_RENDER_ID, "tvscreen"); } Native.Function.Call(Hash.SET_TV_CHANNEL, TV_Channel); Native.Function.Call(Hash.SET_TV_VOLUME, TV_Volume); TVOn = true; } } else if (((((TVOn == true) && !playerPed.IsInVehicle) && (TVModels.Contains(nearbyProps(i).Model) && (playerPed.Position.DistanceTo(nearbyProps(i).Position) <= 2.0))))) { DisplayHelpTextThisFrame(_TVOff); if (Game.IsControlJustPressed(0, GTA.Control.Context)) { Wait(1000); if (Native.Function.Call<bool>(Hash.IS_NAMED_RENDERTARGET_REGISTERED, "tvscreen")) { Native.Function.Call(Hash.RELEASE_NAMED_RENDERTARGET, "tvscreen"); } TVOn = false; } } }} catch (Exception ex) { //logger.Log(ex.Message & " " & ex.StackTrace)}} and this one should run on every tick if (TVOn) {Native.Function.Call(Hash.SET_TEXT_RENDER_ID, rendertargetid);Native.Function.Call(Hash.DRAW_TV_CHANNEL, 0.5, 0.5, 1.0, 1.0, 0.0, 255, 255, 255, 255);Native.Function.Call(Hash.SET_TEXT_RENDER_ID, Native.Function.Call<int>(Hash.GET_DEFAULT_SCRIPT_RENDERTARGET_RENDER_ID));Native.Function.Call(Hash.ENABLE_MOVIE_SUBTITLES, true);} Thanks for you help --- Link to comment Share on other sites More sharing options...
R3QQ Posted November 20, 2016 Share Posted November 20, 2016 (edited) C++ code for a working radio (hope it will help you ImNotMental for SPA) radio_emitter1 = OBJECT::CREATE_OBJECT_NO_OFFSET(GAMEPLAY::GET_HASH_KEY("prop_boombox_01"), Xpos, Ypos, Zpos, TRUE, TRUE, FALSE); AUDIO::SET_STATIC_EMITTER_ENABLED("SE_DLC_APT_Yacht_Bar", TRUE); invoke<Void>(0x0E0CD610D5EB6C85, "SE_DLC_APT_Yacht_Bar", radio_emitter1); ENTITY::SET_ENTITY_INVINCIBLE(radio_emitter1, TRUE); ENTITY::FREEZE_ENTITY_POSITION(radio_emitter1, TRUE); ENTITY::SET_ENTITY_COLLISION(radio_emitter1, FALSE, FALSE); ENTITY::SET_ENTITY_VISIBLE(radio_emitter1, FALSE, FALSE); NETWORK::_0xF1CA12B18AEF5298(radio_emitter1, TRUE); AUDIO::SET_EMITTER_RADIO_STATION("SE_DLC_APT_Yacht_Bar", "RADIO_01_CLASS_ROCK"); This is great! I can't find 0x0E0CD610D5EB6C85 from invoke<Void>(0x0E0CD610D5EB6C85, "SE_DLC_APT_Yacht_Bar", radio_emitter1); in the native db though. Why is that? And why do we need invoke<Void>? Edited November 20, 2016 by R3QQ 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