Jump to content



Recommended Posts

I've been playing around with camera functions, trying figuring out how they work, and I thought I'd share some of what I've found


It seems there are at least 2 different types of cameras, the default gameplay camera, and scripted cameras created by scripts. Each have there own set of natives assosciated with them, and the ones for the gameplay camera are pretty limited. It isn't possible to get a handle to the gameplay camera, there are only a few functions that access and modify certain properties (GET_GAMEPLAY_CAM_COORD, GET_GAMEPLAY_CAM_ROT, etc)


There is a lot more control over scripted cameras. They can be created with CREATE_CAM or more often CREATE_CAM_WITH_PARAMS, which return an ID, it's possible to get/set most of their properties, interpolate between them, attach/pointAt targets, etc. Each creation function takes a string name, ie "DEFAULT_SCRIPTED_CAMERA", "DEFAULT_SPLINE_CAMERA", and a few others. I've only tested using "DEFAULT_SCRIPTED_CAMERA" so far, as it's the most commonly used one


Creating a camera sets it as active, but that's not enough for it to render. RENDER_SCRIPT_CAMS must also be called. I'm not sure what all the params are, only that the first is a bool that sets whether to render scripted cameras or the gameplay camera. Using the common values from the scripts for the others seems to work: RENDER_SCRIPT_CAMS(1, 0, 3000, 1, 0). Set the first param to 0 to switch back to the default game camera


To shake the camera, call SHAKE_CAM(cameraId, shakeType, shakeAmplitude). shakeType is a string containing the name of the shake type. I found the following types in the decompiled scripts:



Some types are one-shot shakes (such as explosions), but most of them loop. To stop a looping shake, use STOP_CAM_SHAKING


There seems to be a hard limit of 26 scripted cameras that can be created at a time. After that, calling CREATE_CAM will return an invalid ID, until other cameras are destroyed with DESTROY_CAM(cameraID), or DESTROY_ALL_CAMS()


Some things I still plan on looking into:


-Special types of scripted cameras, ie spline, cinematic, I'm not sure at all how these work yet

-Any other natives I may have missed, as well as the unknown ones that are still hashed


If you're using the Community Scripthook V .Net wrapper, use the new Camera/Gameplay classes (not yet in a release build, but you can get automated builds from the latest commit here). See this post for a simple example


I'll be releasing a Top Down Mod using all of this pretty soon

Edited by wozzy
Link to comment
Share on other sites

  • 4 weeks later...

how delete cam and back to normal? because when i deleted,not happens :/

RENDER_SCRIPT_CAMS(1, 0, 3000, 1, 0). Set the first param to 0 to switch back to the default game camera....

Edited by ChOcOsKiZo
Link to comment
Share on other sites

Highly anticipating this.


In regards to cams, is there a way to avoid LOD when the cam is too far away from the player ped? Other than dragging the player ped along with the cam, I don't see how this can be avoided (not that I mind). It would be great to have WASD control of the cam and fly around. It would make for great unique shots.

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.