0136
Contents |
- Description
- Shakes the in-game camera
- Syntax
- 0136: shake_camera [int] with_point [flt1] [flt2] [flt3]
- Parameter
- [int]
- Intensity and duration of the shaking
- [flt1]
- X-coordinate
- [flt2]
- Y-coordinate
- [flt3]
- Z-coordinate
This opcode shakes the in-game camera for a while. The higher the integer value is, the more and the longer the camera shakes. The shaking of the camera depends if the camera's location, not the player's location, is within 100 units of the specified coordinates point. The duration and intensity is independent of that point. Leaving or entering the area after the opcode is called does not change the behavior of the shaking. This opcode was never called in the original script of GTA III.
Example
The following example spawns a Trashmaster close to the player. If the Trashmaster's health is below 90%, it creates an explosion larger than a regular car explosion.
// set constants const CAR_MODEL = #TRASH CAR_HANDLE = 0@ X_POS = 1@ Y_POS = 2@ Z_POS = 3@ HAS_EXPLODED = 4@ end // spawn vehicle 0247: request_model CAR_MODEL 038B: load_requested_models 0054: store_player $PLAYER_CHAR position_to X_POS Y_POS Z_POS X_POS += 4.0 00A5: CAR_HANDLE = create_car CAR_MODEL at X_POS Y_POS Z_POS HAS_EXPLODED = false while true wait 10 if HAS_EXPLODED == false then if 8119: not car CAR_HANDLE wrecked then if 8185: not car CAR_HANDLE health >= 900 then // generate larger car explosion 00AA: store_car CAR_HANDLE position_to X_POS Y_POS Z_POS 020C: create_explosion 5 at X_POS Y_POS Z_POS 0136: shake_camera 1600 with_point X_POS Y_POS Z_POS 020B: explode_car CAR_HANDLE HAS_EXPLODED = true end end end end
For Vice City
This opcode does not exist in Vice City but it is possible to recreate this opcode since camera shaking based on location is already featured in the game (like when cars explode). Vice City improved upon this feature in that the initial duration and intensity of the shaking is dependent on the camera's distance from the point. The following example is a stand-alone CLEO script for Vice City tested on US v1.0 and should work similarly to the example above.
{$CLEO .cs} // set constants const CAR_MODEL = #TRASH CAR_HANDLE = 0@ X_POS = 1@ Y_POS = 2@ Z_POS = 3@ HAS_EXPLODED = 4@ end // spawn vehicle 0247: request_model CAR_MODEL 038B: load_requested_models 0054: store_player $PLAYER_CHAR position_to X_POS Y_POS Z_POS X_POS += 4.0 00A5: CAR_HANDLE = create_car CAR_MODEL at X_POS Y_POS Z_POS HAS_EXPLODED = false while true wait 10 if HAS_EXPLODED == false then if 8119: not car CAR_HANDLE wrecked then if 8185: not car CAR_HANDLE health >= 900 then // generate larger car explosion 00AA: store_car CAR_HANDLE position_to X_POS Y_POS Z_POS 020C: create_explosion 6 at X_POS Y_POS Z_POS 05F5: call_scm_func @opcode_0136 inputs 4 -- shake_camera 1600 with_point X_POS Y_POS Z_POS // 0136 substitute 020B: explode_car CAR_HANDLE HAS_EXPLODED = true end end end end :opcode_0136 // 0@ - input param (intensity/duration) // 1@ - input param (x-coordinate) // 2@ - input param (y-coordinate) // 3@ - input param (z-coordinate) 0093: 0@ = integer_to_float 0@ 0@ *= 0.001 05E3: call_method 0x46FF21 0x7E4688 num_params 4 pop 0 z 3@ y 2@ x 1@ time 0@ // CCamera::CamShake 05F6: ret 0
Keywords
shake, jostle, cam, camera, point
See also
- 0003, shake camera without point