0136

From GTAMods Wiki
Revision as of 15:30, 15 January 2017 by Spaceeinstein (talk | contribs)
Jump to navigation Jump to search

GTA III SHAKE_CAM_WITH_POINT


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@
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
0249: release_model CAR_MODEL

while 8119:   not car CAR_HANDLE wrecked
    wait 10
    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  // EXPLOSION_HELI
        0136: shake_camera 1600 with_point X_POS Y_POS Z_POS
        020B: explode_car CAR_HANDLE
    end
end
01C3: remove_references_to_car CAR_HANDLE

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@
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
0249: release_model CAR_MODEL

while 8119:   not car CAR_HANDLE wrecked
    wait 10
    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  // EXPLOSION_HELI
        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
    end
end
01C3: remove_references_to_car CAR_HANDLE
05DC: end_custom_thread

: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

  • GTA III Vice City San Andreas 0003, shake camera without point