Jump to content

[V|REL|WIP] Working JB700 (spy car)


Sergeeeek

Recommended Posts

system-x116

Как скоро будет доступен этот чудесный мод?

Link to comment
Share on other sites

So after the spikes are added what other gadgets will you add, and when will we see a download link for this?

Link to comment
Share on other sites

This car + Michael in hisTuxedo = The name is Da Santa, Michael De Santa

Link to comment
Share on other sites

CrayZcreationZ

@runitsalpha bro can you make the 007 car mod with machine guns instead of missles feels more realistic instead of just blowing everything up around feel me...

Link to comment
Share on other sites

Can't wait for this mod to be finished good job. All I need is the juggernaut armor from the Paleto score and my life will be complete. Now if you would excuse me my penis requires attention.

Link to comment
Share on other sites

imakuni1995

@runitsalpha bro can you make the 007 car mod with machine guns instead of missles feels more realistic instead of just blowing everything up around feel me...

Actually, it's supposed to shoot shotgun shells if I remember correctly.

Link to comment
Share on other sites

imakuni1995

 

Where can we download it?

Download link is in the first post.

 

Got it, thanks! The guns do work and they're pretty damn cool, I couldn't, however, help but notice the lack of a muzzle flash effect when firing them. Other than that, great work!

Edited by imakuni1995
Link to comment
Share on other sites

You're a legend. A lot of people have been wanting this for a while now. I'm sure this will make quite a few people happy, myself included. Being able to eject yourself (and to have the gamepad work with it), is just the icing on the top. Such a simple, but great addition.

 

When I get time to play around with this for myself, I'm definitely gonna test out the ejector seat on Chop.

Link to comment
Share on other sites

 

 

Where can we download it?

Download link is in the first post.

 

Got it, thanks! The guns do work and they're pretty damn cool, I couldn't, however, help but notice the lack of a muzzle flash effect when firing them. Other than that, great work!

 

Yeah, that's something I couldn't get to work for some reason. I will fix it in the updates.

Link to comment
Share on other sites

Awesome!!!! glad you liked my idea to eject yourself xD going to be so much fun I have been wanting this mod since the game first game out xD fantastic work!

Link to comment
Share on other sites

@Sergeeeek

 

Which weapon ID does the JB700 use ?

 

I'm asking this because when the weapons fire, there is not firing effect and i've noticed this when i've modded the JB700 weapons by using the Insurgent weapon ID, the firing effect wasn't working until i've spawned the Insurgent and then the weapons started using the firing effect... =/ kinda tricky to understand this = )

Link to comment
Share on other sites

GTAGeek123

Awesome mod. Now if we could only get the magnet on the Skylift working...

Link to comment
Share on other sites

Fortunately, I had no issues using the ejector seat on Chop. The only glitch (which is to do with the game not the mod of course) is that once he's launched he will just stay where he lands. Exiting the car teleports him back and cues that animation though (can be done whilst he's still airborne as well). Although if you eject yourself as well, he'll either teleport to the car and get out, or naturally reset. Could be seen as a drawback, but teleporting him back in saves time. If you teleport using a trainer once he's ejected, exiting the car will teleport him back to you again.

 

https://www.youtube.com/watch?v=sS4u8h4lnZQ

 

One thing I did notice is that NUM5 drops the spikes and NUM8 cues the ejector seat (as well as the default key bindings). I'm not really a keyboard user, so I don't know if that's a default of the game/intentional? I was teleporting around with a trainer, so that's when I noticed.

Link to comment
Share on other sites

Great mod. Definitly another feature Rockstar didn't let us have outside of the missions which should of been there, but wasn't because they were being stupid.

 

But there are just two problems.

-Holding LS shouldn't drop spike strips. It should beep the horm. Tapping LS should drop the spike strips.

-When pressing LS and RS to activate Franklin's special ability, spike strips are dropped.

Edited by nkjellman
Link to comment
Share on other sites

SilenceFiction

I just tested your mod and I love it!

I noticed 2 bugs:
- You can't sound the horn.

- If you press NUM5 it drops spikes.

Overall good job I like the mod very much :)

Link to comment
Share on other sites

getting this car into the garage makes the game super buggy and unable to exit the garage (i tuned it in LS Customs, dont know if it has something to do with it)

Otherwise, awesome mod :lol:

Edited by Atharos
Link to comment
Share on other sites

for the muzzle flash in C++ (and you can port this to LUA easily enough)

 

you need the following in your natives.h file (they might already exist)

In AUDIO namespace:static void _PLAY_SOUND_FROM_COORD(Any p0, char *p1, float p2, float p3, float p4, Any *p5, BOOL p6, Any p7, BOOL p8) { invoke<Void>(0x8D8686B622B88120, p0, p1, p2, p3, p4, p5, p6, p7, p8); } // 8D8686B622B88120 CAD3E2D5In STREAMING namespace:static void _REQUEST_PTFX_ASSET_BY_NAME(char* FX) { invoke<Void>(0xB80D8756B4668AB6, FX); } // B80D8756B4668AB6 CFEA19A9static Any _HAS_PTFX_ASSET_LOADED(char* FX) { return invoke<Any>(0x8702416E512EC454, FX); } // 8702416E512EC454 9ACC6446static void _REMOVE_PTFX_ASSET(char* FX) { invoke<Void>(0x7E0FE22DC929277C, FX); } // 0x7E0FE22DC929277C 0xC44762A1In GRAPHICS namepace:static void _SET_PTFX_ASSET_NEXT_CALL(const char* name)  { invoke<Void>(0x6C38AF3693A69A91, name); } // 6C38AF3693A69A91static BOOL _START_PARTICLE_FX_NON_LOOPED_ON_ENTITY(char *p0, Any p1, float p2, float p3, float p4, float p5, float p6, float p7, float p8, BOOL p9, BOOL p10, BOOL p11) { return invoke<BOOL>(0x0D53A3B8DA0809D2, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); } // 0D53A3B8DA0809D2 9604DAD4

then these variables defined in your script (you of course don't need to use these variables)

Vehicle vTheVehicle;Vector3 vStartPos{ 0.00f, 0.00f, 0.00f };Vector3 vEndPos{ 0.00f, 0.00f, 0.00f };Vector3 vOffset1{ 0.00f, 0.00f, 0.00f };Vector3 vOffset2{ 0.00f, 0.00f, 0.00f };Hash vWeaponHash = 0xE284C527; // Assault Shotgunfloat vGameTimer = 225.00f;float vGameTimerDelay = 225.00f;

and then this is the script

            if (isKeyDown(keyGunControl))            {                vTheVehicle = PED::GET_VEHICLE_PED_IS_USING(PLAYER::PLAYER_PED_ID());                vStartPos.x = 0.6826f;                vStartPos.y = 1.6707f;                vStartPos.z = 0.3711f;                vEndPos.x = vStartPos.x;                vEndPos.y = vStartPos.y + 10.00f;                vEndPos.z = vStartPos.z - 0.10f;                vOffset1 = ENTITY::GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER::PLAYER_PED_ID(), vStartPos.x, vStartPos.y, vStartPos.z);                vOffset2 = ENTITY::GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER::PLAYER_PED_ID(), vEndPos.x, vEndPos.y, vEndPos.z);                if (STREAMING::_HAS_PTFX_ASSET_LOADED("scr_carsteal4") == 0) { STREAMING::_REQUEST_PTFX_ASSET_BY_NAME("scr_carsteal4"); };                // We want this to fire much like a shotgun rather than be rapid fire - Based on GameTick, default is 225.00f                if ((GAMEPLAY::GET_GAME_TIMER() - vGameTimer) > vGameTimerDelay) {                                                            // left gun                    GAMEPLAY::SHOOT_SINGLE_BULLET_BETWEEN_COORDS(vOffset1.x, vOffset1.y, vOffset1.z, vOffset2.x, vOffset2.y, vOffset2.z, 15, 1, vWeaponHash, PLAYER::PLAYER_PED_ID(), 1, 1, 0xBF800000); // WeaponHash 0xE284C527                    //right gun                                 vOffset1.z = vOffset1.z + 0.2;                    vOffset2.z = vOffset2.z + 0.2;                    GAMEPLAY::SHOOT_SINGLE_BULLET_BETWEEN_COORDS(vOffset1.x, vOffset1.y, vOffset1.z, vOffset2.x, vOffset2.y, vOffset2.z, 15, 1, vWeaponHash, PLAYER::PLAYER_PED_ID(), 1, 1, 0xBF800000); // WeaponHash 0xE284C527                                        // Muzzle Flash                    GRAPHICS::_SET_PTFX_ASSET_NEXT_CALL("scr_carsteal4");                    GRAPHICS::_START_PARTICLE_FX_NON_LOOPED_ON_ENTITY("scr_carsteal5_car_muzzle_flash", vTheVehicle, vStartPos.x, vStartPos.y, vStartPos.z, 0, 0, 90, 1.0, 0, 0, 0);                    GRAPHICS::_SET_PTFX_ASSET_NEXT_CALL("scr_carsteal4");                    GRAPHICS::_START_PARTICLE_FX_NON_LOOPED_ON_ENTITY("scr_carsteal5_car_muzzle_flash", vTheVehicle, vStartPos.x - 1.35, vStartPos.y, vStartPos.z, 0, 0, 90, 1.0, 0, 0, 0);                                    if (PLAYER::IS_PLAYER_PLAYING(PLAYER::PLAYER_ID()) == 1) {                        if (PLAYER::IS_SPECIAL_ABILITY_ACTIVE(PLAYER::PLAYER_ID()) == 1) {                            AUDIO::_PLAY_SOUND_FROM_COORD(-1, "FRANKLIN_GUN_MASTER", vOffset1.x, vOffset1.y, vOffset1.z, 0, 0, 0, 0);                        }                        else {                            AUDIO::_PLAY_SOUND_FROM_COORD(-1, "JB700_GUN_PLAYER_MASTER", vOffset1.x, vOffset1.y, vOffset1.z, 0, 0, 0, 0);                        };                    };                    vGameTimer = GAMEPLAY::GET_GAME_TIMER();                }            }

if you're having issues I can provide complete source

 

special thanks to skomski for assisting with a missing native "SET_PTFX_ASSET_NEXT_CALL" and providing a lua example

 

also would you be able to share your source code?

Edited by Sp0rks
Link to comment
Share on other sites

for the muzzle flash in C++ (and you can port this to LUA easily enough)

 

you need the following in your natives.h file (they might already exist)

In AUDIO namespace:static void _PLAY_SOUND_FROM_COORD(Any p0, char *p1, float p2, float p3, float p4, Any *p5, BOOL p6, Any p7, BOOL p8) { invoke<Void>(0x8D8686B622B88120, p0, p1, p2, p3, p4, p5, p6, p7, p8); } // 8D8686B622B88120 CAD3E2D5In STREAMING namespace:static void _REQUEST_PTFX_ASSET_BY_NAME(char* FX) { invoke<Void>(0xB80D8756B4668AB6, FX); } // B80D8756B4668AB6 CFEA19A9static Any _HAS_PTFX_ASSET_LOADED(char* FX) { return invoke<Any>(0x8702416E512EC454, FX); } // 8702416E512EC454 9ACC6446static void _REMOVE_PTFX_ASSET(char* FX) { invoke<Void>(0x7E0FE22DC929277C, FX); } // 0x7E0FE22DC929277C 0xC44762A1In GRAPHICS namepace:static void _SET_PTFX_ASSET_NEXT_CALL(const char* name)  { invoke<Void>(0x6C38AF3693A69A91, name); } // 6C38AF3693A69A91static BOOL _START_PARTICLE_FX_NON_LOOPED_ON_ENTITY(char *p0, Any p1, float p2, float p3, float p4, float p5, float p6, float p7, float p8, BOOL p9, BOOL p10, BOOL p11) { return invoke<BOOL>(0x0D53A3B8DA0809D2, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); } // 0D53A3B8DA0809D2 9604DAD4

then these variables defined in your script (you of course don't need to use these variables)

Vehicle vTheVehicle;Vector3 vStartPos{ 0.00f, 0.00f, 0.00f };Vector3 vEndPos{ 0.00f, 0.00f, 0.00f };Vector3 vOffset1{ 0.00f, 0.00f, 0.00f };Vector3 vOffset2{ 0.00f, 0.00f, 0.00f };Hash vWeaponHash = 0xE284C527; // Assault Shotgunfloat vGameTimer = 225.00f;float vGameTimerDelay = 225.00f;

and then this is the script

            if (isKeyDown(keyGunControl))            {                vTheVehicle = PED::GET_VEHICLE_PED_IS_USING(PLAYER::PLAYER_PED_ID());                vStartPos.x = 0.6826f;                vStartPos.y = 1.6707f;                vStartPos.z = 0.3711f;                vEndPos.x = vStartPos.x;                vEndPos.y = vStartPos.y + 10.00f;                vEndPos.z = vStartPos.z - 0.10f;                vOffset1 = ENTITY::GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER::PLAYER_PED_ID(), vStartPos.x, vStartPos.y, vStartPos.z);                vOffset2 = ENTITY::GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER::PLAYER_PED_ID(), vEndPos.x, vEndPos.y, vEndPos.z);                if (STREAMING::_HAS_PTFX_ASSET_LOADED("scr_carsteal4") == 0) { STREAMING::_REQUEST_PTFX_ASSET_BY_NAME("scr_carsteal4"); };                // We want this to fire much like a shotgun rather than be rapid fire - Based on GameTick, default is 225.00f                if ((GAMEPLAY::GET_GAME_TIMER() - vGameTimer) > vGameTimerDelay) {                                                            // left gun                    GAMEPLAY::SHOOT_SINGLE_BULLET_BETWEEN_COORDS(vOffset1.x, vOffset1.y, vOffset1.z, vOffset2.x, vOffset2.y, vOffset2.z, 15, 1, vWeaponHash, PLAYER::PLAYER_PED_ID(), 1, 1, 0xBF800000); // WeaponHash 0xE284C527                    //right gun                                 vOffset1.z = vOffset1.z + 0.2;                    vOffset2.z = vOffset2.z + 0.2;                    GAMEPLAY::SHOOT_SINGLE_BULLET_BETWEEN_COORDS(vOffset1.x, vOffset1.y, vOffset1.z, vOffset2.x, vOffset2.y, vOffset2.z, 15, 1, vWeaponHash, PLAYER::PLAYER_PED_ID(), 1, 1, 0xBF800000); // WeaponHash 0xE284C527                                        // Muzzle Flash                    GRAPHICS::_SET_PTFX_ASSET_NEXT_CALL("scr_carsteal4");                    GRAPHICS::_START_PARTICLE_FX_NON_LOOPED_ON_ENTITY("scr_carsteal5_car_muzzle_flash", vTheVehicle, vStartPos.x, vStartPos.y, vStartPos.z, 0, 0, 90, 1.0, 0, 0, 0);                    GRAPHICS::_SET_PTFX_ASSET_NEXT_CALL("scr_carsteal4");                    GRAPHICS::_START_PARTICLE_FX_NON_LOOPED_ON_ENTITY("scr_carsteal5_car_muzzle_flash", vTheVehicle, vStartPos.x - 1.35, vStartPos.y, vStartPos.z, 0, 0, 90, 1.0, 0, 0, 0);                                    if (PLAYER::IS_PLAYER_PLAYING(PLAYER::PLAYER_ID()) == 1) {                        if (PLAYER::IS_SPECIAL_ABILITY_ACTIVE(PLAYER::PLAYER_ID()) == 1) {                            AUDIO::_PLAY_SOUND_FROM_COORD(-1, "FRANKLIN_GUN_MASTER", vOffset1.x, vOffset1.y, vOffset1.z, 0, 0, 0, 0);                        }                        else {                            AUDIO::_PLAY_SOUND_FROM_COORD(-1, "JB700_GUN_PLAYER_MASTER", vOffset1.x, vOffset1.y, vOffset1.z, 0, 0, 0, 0);                        };                    };                    vGameTimer = GAMEPLAY::GET_GAME_TIMER();                }            }

if you're having issues I can provide complete source

 

special thanks to skomski for assisting with a missing native "SET_PTFX_ASSET_NEXT_CALL" and providing a lua example

 

also would you be able to share your source code?

Oh thanks! Yeah, I'll make it open source, but first I want to fix some bugs and make the code a little less messy :)

Link to comment
Share on other sites

imakuni1995

 

for the muzzle flash in C++ (and you can port this to LUA easily enough)

 

you need the following in your natives.h file (they might already exist)

In AUDIO namespace:static void _PLAY_SOUND_FROM_COORD(Any p0, char *p1, float p2, float p3, float p4, Any *p5, BOOL p6, Any p7, BOOL p8) { invoke<Void>(0x8D8686B622B88120, p0, p1, p2, p3, p4, p5, p6, p7, p8); } // 8D8686B622B88120 CAD3E2D5In STREAMING namespace:static void _REQUEST_PTFX_ASSET_BY_NAME(char* FX) { invoke<Void>(0xB80D8756B4668AB6, FX); } // B80D8756B4668AB6 CFEA19A9static Any _HAS_PTFX_ASSET_LOADED(char* FX) { return invoke<Any>(0x8702416E512EC454, FX); } // 8702416E512EC454 9ACC6446static void _REMOVE_PTFX_ASSET(char* FX) { invoke<Void>(0x7E0FE22DC929277C, FX); } // 0x7E0FE22DC929277C 0xC44762A1In GRAPHICS namepace:static void _SET_PTFX_ASSET_NEXT_CALL(const char* name)  { invoke<Void>(0x6C38AF3693A69A91, name); } // 6C38AF3693A69A91static BOOL _START_PARTICLE_FX_NON_LOOPED_ON_ENTITY(char *p0, Any p1, float p2, float p3, float p4, float p5, float p6, float p7, float p8, BOOL p9, BOOL p10, BOOL p11) { return invoke<BOOL>(0x0D53A3B8DA0809D2, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); } // 0D53A3B8DA0809D2 9604DAD4

then these variables defined in your script (you of course don't need to use these variables)

Vehicle vTheVehicle;Vector3 vStartPos{ 0.00f, 0.00f, 0.00f };Vector3 vEndPos{ 0.00f, 0.00f, 0.00f };Vector3 vOffset1{ 0.00f, 0.00f, 0.00f };Vector3 vOffset2{ 0.00f, 0.00f, 0.00f };Hash vWeaponHash = 0xE284C527; // Assault Shotgunfloat vGameTimer = 225.00f;float vGameTimerDelay = 225.00f;

and then this is the script

            if (isKeyDown(keyGunControl))            {                vTheVehicle = PED::GET_VEHICLE_PED_IS_USING(PLAYER::PLAYER_PED_ID());                vStartPos.x = 0.6826f;                vStartPos.y = 1.6707f;                vStartPos.z = 0.3711f;                vEndPos.x = vStartPos.x;                vEndPos.y = vStartPos.y + 10.00f;                vEndPos.z = vStartPos.z - 0.10f;                vOffset1 = ENTITY::GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER::PLAYER_PED_ID(), vStartPos.x, vStartPos.y, vStartPos.z);                vOffset2 = ENTITY::GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER::PLAYER_PED_ID(), vEndPos.x, vEndPos.y, vEndPos.z);                if (STREAMING::_HAS_PTFX_ASSET_LOADED("scr_carsteal4") == 0) { STREAMING::_REQUEST_PTFX_ASSET_BY_NAME("scr_carsteal4"); };                // We want this to fire much like a shotgun rather than be rapid fire - Based on GameTick, default is 225.00f                if ((GAMEPLAY::GET_GAME_TIMER() - vGameTimer) > vGameTimerDelay) {                                                            // left gun                    GAMEPLAY::SHOOT_SINGLE_BULLET_BETWEEN_COORDS(vOffset1.x, vOffset1.y, vOffset1.z, vOffset2.x, vOffset2.y, vOffset2.z, 15, 1, vWeaponHash, PLAYER::PLAYER_PED_ID(), 1, 1, 0xBF800000); // WeaponHash 0xE284C527                    //right gun                                 vOffset1.z = vOffset1.z + 0.2;                    vOffset2.z = vOffset2.z + 0.2;                    GAMEPLAY::SHOOT_SINGLE_BULLET_BETWEEN_COORDS(vOffset1.x, vOffset1.y, vOffset1.z, vOffset2.x, vOffset2.y, vOffset2.z, 15, 1, vWeaponHash, PLAYER::PLAYER_PED_ID(), 1, 1, 0xBF800000); // WeaponHash 0xE284C527                                        // Muzzle Flash                    GRAPHICS::_SET_PTFX_ASSET_NEXT_CALL("scr_carsteal4");                    GRAPHICS::_START_PARTICLE_FX_NON_LOOPED_ON_ENTITY("scr_carsteal5_car_muzzle_flash", vTheVehicle, vStartPos.x, vStartPos.y, vStartPos.z, 0, 0, 90, 1.0, 0, 0, 0);                    GRAPHICS::_SET_PTFX_ASSET_NEXT_CALL("scr_carsteal4");                    GRAPHICS::_START_PARTICLE_FX_NON_LOOPED_ON_ENTITY("scr_carsteal5_car_muzzle_flash", vTheVehicle, vStartPos.x - 1.35, vStartPos.y, vStartPos.z, 0, 0, 90, 1.0, 0, 0, 0);                                    if (PLAYER::IS_PLAYER_PLAYING(PLAYER::PLAYER_ID()) == 1) {                        if (PLAYER::IS_SPECIAL_ABILITY_ACTIVE(PLAYER::PLAYER_ID()) == 1) {                            AUDIO::_PLAY_SOUND_FROM_COORD(-1, "FRANKLIN_GUN_MASTER", vOffset1.x, vOffset1.y, vOffset1.z, 0, 0, 0, 0);                        }                        else {                            AUDIO::_PLAY_SOUND_FROM_COORD(-1, "JB700_GUN_PLAYER_MASTER", vOffset1.x, vOffset1.y, vOffset1.z, 0, 0, 0, 0);                        };                    };                    vGameTimer = GAMEPLAY::GET_GAME_TIMER();                }            }

if you're having issues I can provide complete source

 

special thanks to skomski for assisting with a missing native "SET_PTFX_ASSET_NEXT_CALL" and providing a lua example

 

also would you be able to share your source code?

Oh thanks! Yeah, I'll make it open source, but first I want to fix some bugs and make the code a little less messy :)

 

Great to see you're still supporting the mod even after release!

Link to comment
Share on other sites

I just tested your mod and I love it!

I noticed 2 bugs:

- You can't sound the horn.

- If you press NUM5 it drops spikes.

Overall good job I like the mod very much :)

Because the mod uses game's own input system whatever is bound to INPUT_VEH_MOVE_DOWN_ONLY (tilting car in the air) is going to drop spikes.

 

So you can just unbind NUM5 in the controls menu.

Link to comment
Share on other sites

firebird18

Unfortunately for me this mod don't work :( , but when i buy JB700 in internet car doesn't appear in garage. Game version 350.2 , Scripthook v.1.0.350.2a , other mods : Enhanced Native Trainer . Noclip , OpenInteriors, NoRemoveVehicles32. Please for help.

Link to comment
Share on other sites

vitalik2187836

Отличный мод, ждал его на пк, когда ещё играл на ps 3 XD. Есть конечно баги, но я думаю, их легко исправить (по сути, кроме эффекта выстрелов, больше ничего и нет). Единственное, пожалуй, нужно сделать ини файл, так как действительно конфликтует с некоторыми модами. И ещё, чисто моё мнение: может сделаешь точку прицела для пушек? По-моему было бы очень удобно, а то даже не знаешь, куда стреляешь)

Great mod, wait for this long time).Of course it have some bugs, but i think you can fix it.You should make ini file. And i think you should make croshare for guns, it will be realy cool :)

Edited by vitalik2187836
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.