Jump to content

Yacht Deluxe


3dplanet

Recommended Posts

b41eb8-YDL1.jpg



This mod allow you to buy the super yacht from GTA online.

Just go to the yellow marker in marina to buy your yacht.






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



- 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 by 3dplanet
Link to comment
Share on other sites

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");
  • Like 2
Link to comment
Share on other sites

qiangqiang101

 

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);}
Link to comment
Share on other sites

nkjellman

 

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

  • 2 weeks later...

 

 

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 :D

---

Link to comment
Share on other sites

  • 5 months later...

 

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 by R3QQ
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • 1 User Currently Viewing
    0 members, 0 Anonymous, 1 Guest

×
×
  • Create New...

Important Information

By using GTAForums.com, you agree to our Terms of Use and Privacy Policy.