Difference between revisions of "0136"
m |
|||
Line 27: | Line 27: | ||
Y_POS = <span class="nv">2@</span> | Y_POS = <span class="nv">2@</span> | ||
Z_POS = <span class="nv">3@</span> | Z_POS = <span class="nv">3@</span> | ||
− | |||
<span class="k">end</span> | <span class="k">end</span> | ||
Line 36: | Line 35: | ||
X_POS += <span class="m">4.0</span> | X_POS += <span class="m">4.0</span> | ||
[[00A5]]: CAR_HANDLE = create_car CAR_MODEL at X_POS Y_POS Z_POS | [[00A5]]: CAR_HANDLE = create_car CAR_MODEL at X_POS Y_POS Z_POS | ||
+ | [[0249]]: release_model CAR_MODEL | ||
− | + | <span class="k">while</span> [[0119|8119]]: <span class="k">not</span> car CAR_HANDLE wrecked | |
− | <span class="k">while</span> <span class="k"> | ||
<span class="k">wait</span> <span class="m">10</span> | <span class="k">wait</span> <span class="m">10</span> | ||
<span class="k">if</span> | <span class="k">if</span> | ||
− | + | 8185: <span class="k">not</span> car CAR_HANDLE health >= <span class="m">900</span> | |
<span class="k">then</span> | <span class="k">then</span> | ||
− | + | <span class="c1">// generate larger car explosion</span> | |
− | + | [[00AA]]: store_car CAR_HANDLE position_to X_POS Y_POS Z_POS | |
− | + | [[020C]]: create_explosion <span class="m">5</span> at X_POS Y_POS Z_POS <span class="c1">// EXPLOSION_HELI</span> | |
− | + | 0136: <span class="k">shake_camera</span> <span class="m">1600</span> with_point X_POS Y_POS Z_POS | |
− | + | 020B: explode_car CAR_HANDLE | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<span class="k">end</span> | <span class="k">end</span> | ||
<span class="k">end</span> | <span class="k">end</span> | ||
+ | [[01C3]]: remove_references_to_car CAR_HANDLE | ||
}} | }} | ||
Line 73: | Line 64: | ||
Y_POS = <span class="nv">2@</span> | Y_POS = <span class="nv">2@</span> | ||
Z_POS = <span class="nv">3@</span> | Z_POS = <span class="nv">3@</span> | ||
− | |||
<span class="k">end</span> | <span class="k">end</span> | ||
Line 82: | Line 72: | ||
X_POS += <span class="m">4.0</span> | X_POS += <span class="m">4.0</span> | ||
[[00A5]]: CAR_HANDLE = create_car CAR_MODEL at X_POS Y_POS Z_POS | [[00A5]]: CAR_HANDLE = create_car CAR_MODEL at X_POS Y_POS Z_POS | ||
+ | [[0249]]: release_model CAR_MODEL | ||
− | + | <span class="k">while</span> [[0119|8119]]: <span class="k">not</span> car CAR_HANDLE wrecked | |
− | <span class="k">while</span> <span class="k"> | ||
<span class="k">wait</span> <span class="m">10</span> | <span class="k">wait</span> <span class="m">10</span> | ||
<span class="k">if</span> | <span class="k">if</span> | ||
− | + | 8185: <span class="k">not</span> car CAR_HANDLE health >= <span class="m">900</span> | |
<span class="k">then</span> | <span class="k">then</span> | ||
− | + | <span class="c1">// generate larger car explosion</span> | |
− | + | [[00AA]]: store_car CAR_HANDLE position_to X_POS Y_POS Z_POS | |
− | + | [[020C]]: create_explosion <span class="m">6</span> at X_POS Y_POS Z_POS <span class="c1">// EXPLOSION_HELI</span> | |
− | + | 05F5: call_scm_func <span class="nl">@opcode_0136</span> inputs <span class="m">4</span> -- <span class="k">shake_camera</span> <span class="m">1600</span> with_point X_POS Y_POS Z_POS <span class="c1">// 0136 substitute</span> | |
− | + | 020B: explode_car CAR_HANDLE | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<span class="k">end</span> | <span class="k">end</span> | ||
<span class="k">end</span> | <span class="k">end</span> | ||
+ | [[01C3]]: remove_references_to_car CAR_HANDLE | ||
+ | 05DC: end_custom_thread | ||
<span class="nl">:opcode_0136</span> | <span class="nl">:opcode_0136</span> |
Revision as of 15:30, 15 January 2017
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@ 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
- 0003, shake camera without point