Difference between revisions of "Moving gate"
Jump to navigation
Jump to search
m |
|||
Line 1: | Line 1: | ||
− | This is a code snippet of a moving gate in [[Sanny Builder]]'s format and should work in [[GTA III]], [[Vice City]], and [[San Andreas]]. This code is based on the moving gates, including the sound it makes, in GTA III. Remember to read the tutorial on [[Create a thread|how to create a thread]] before proceeding to implement this code. | + | This is a code snippet of a '''moving gate''' in [[Sanny Builder]]'s format and should work in [[GTA III]], [[Vice City]], and [[San Andreas]]. This code is based on the moving gates, including the sound it makes, in GTA III. Remember to read the tutorial on [[Create a thread|how to create a thread]] before proceeding to implement this code. |
<source lang="scm" line> | <source lang="scm" line> | ||
− | + | // set constants | |
− | + | const | |
− | + | OBJECT = #ELECTRICGATE // you can use any object you want but make sure it's defined before creating it | |
− | + | INITI_X = 298.0 // initial x position | |
− | + | INITI_Y = -313.6 // initial y position | |
− | + | INITI_Z = 11.0 // initial z position | |
− | + | ANGLE = 0.0 // angle of your gate | |
− | + | FINAL_X = 304.0 // final x position | |
− | + | FINAL_Y = -313.6 // final y position | |
− | + | FINAL_Z = 11.0 // final z position | |
− | + | end | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | // create gate object | |
− | + | 029B: 0@ = init_object OBJECT at INITI_X INITI_Y INITI_Z | |
− | + | 01C7: remove_object_from_mission_cleanup_list 0@ | |
− | + | 0177: set_object 0@ z_angle_to ANGLE | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
while true | while true | ||
wait 250 ms | wait 250 ms | ||
Line 127: | Line 25: | ||
if | if | ||
// use other area check opcodes for more precision and options | // use other area check opcodes for more precision and options | ||
− | 00FE: actor $PLAYER_ACTOR in_sphere 0 near_point | + | 00FE: actor $PLAYER_ACTOR in_sphere 0 near_point INITI_X INITI_Y INITI_Z radius 5.0 5.0 5.0 |
then | then | ||
if | if | ||
1@ == 0 | 1@ == 0 | ||
then | then | ||
− | //018C: play_sound 92 at | + | //018C: play_sound 92 at INITI_X INITI_Y INITI_Z // uncomment for III |
− | //018C: play_sound 3 at | + | //018C: play_sound 3 at INITI_X INITI_Y INITI_Z // uncomment for VC |
− | //097B: play_audio_at_object 0@ event 1100 // uncomment for SA | + | //097B: play_audio_at_object 0@ event 1100 // uncomment for SA |
1@ = 1 | 1@ = 1 | ||
end | end | ||
− | while if 834E: not move_object 0@ to | + | while if 834E: not move_object 0@ to FINAL_X FINAL_Y FINAL_Z speed 0.1 0.1 0.0 flag 0 |
wait 0 ms | wait 0 ms | ||
end | end | ||
Line 149: | Line 47: | ||
3@ == 0 | 3@ == 0 | ||
then | then | ||
− | //018C: play_sound 93 at | + | //018C: play_sound 93 at FINAL_X FINAL_Y FINAL_Z // uncomment for III |
− | //018C: play_sound 3 at | + | //018C: play_sound 3 at FINAL_X FINAL_Y FINAL_Z // uncomment for VC |
− | //097B: play_audio_at_object 0@ event 1101 // uncomment for SA | + | //097B: play_audio_at_object 0@ event 1101 // uncomment for SA |
3@ = 1 | 3@ = 1 | ||
end | end | ||
Line 158: | Line 56: | ||
1@ ==1 | 1@ ==1 | ||
then | then | ||
− | //018C: play_sound 92 at | + | //018C: play_sound 92 at FINAL_X FINAL_Y FINAL_Z // uncomment for III |
− | //018C: play_sound 3 at | + | //018C: play_sound 3 at FINAL_X FINAL_Y FINAL_Z // uncomment for VC |
− | //097B: play_audio_at_object 0@ event 1100 // uncomment for SA | + | //097B: play_audio_at_object 0@ event 1100 // uncomment for SA |
end | end | ||
− | while if 834E: not move_object 0@ to | + | while if 834E: not move_object 0@ to INITI_X INITI_Y INITI_Z speed 0.1 0.1 0.0 flag 1 |
wait 0 ms | wait 0 ms | ||
end | end | ||
− | 01BB: store_object 0@ position_to | + | 01BB: store_object 0@ position_to 4@ 5@ 6@ |
if | if | ||
3@ == 1 | 3@ == 1 | ||
Line 171: | Line 69: | ||
2@ = 1 | 2@ = 1 | ||
if and | if and | ||
− | + | 4@ == INITI_X | |
− | + | 5@ == INITI_Y | |
− | + | 6@ == INITI_Z | |
then | then | ||
− | //018C: play_sound 93 at | + | //018C: play_sound 93 at INITI_X INITI_Y INITI_Z // uncomment for III |
− | //018C: play_sound 3 at | + | //018C: play_sound 3 at INITI_X INITI_Y INITI_Z // uncomment for VC |
− | //097B: play_audio_at_object 0@ event 1101 // uncomment for SA | + | //097B: play_audio_at_object 0@ event 1101 // uncomment for SA |
3@ = 0 | 3@ = 0 | ||
2@ = 0 | 2@ = 0 | ||
end | end | ||
1@ = 0 | 1@ = 0 | ||
− | end | + | end |
end | end | ||
end | end |
Revision as of 00:09, 22 November 2011
This is a code snippet of a moving gate in Sanny Builder's format and should work in GTA III, Vice City, and San Andreas. This code is based on the moving gates, including the sound it makes, in GTA III. Remember to read the tutorial on how to create a thread before proceeding to implement this code.
// set constants
const
OBJECT = #ELECTRICGATE // you can use any object you want but make sure it's defined before creating it
INITI_X = 298.0 // initial x position
INITI_Y = -313.6 // initial y position
INITI_Z = 11.0 // initial z position
ANGLE = 0.0 // angle of your gate
FINAL_X = 304.0 // final x position
FINAL_Y = -313.6 // final y position
FINAL_Z = 11.0 // final z position
end
// create gate object
029B: 0@ = init_object OBJECT at INITI_X INITI_Y INITI_Z
01C7: remove_object_from_mission_cleanup_list 0@
0177: set_object 0@ z_angle_to ANGLE
while true
wait 250 ms
if
0256: player $PLAYER_CHAR defined
then
if
// use other area check opcodes for more precision and options
00FE: actor $PLAYER_ACTOR in_sphere 0 near_point INITI_X INITI_Y INITI_Z radius 5.0 5.0 5.0
then
if
1@ == 0
then
//018C: play_sound 92 at INITI_X INITI_Y INITI_Z // uncomment for III
//018C: play_sound 3 at INITI_X INITI_Y INITI_Z // uncomment for VC
//097B: play_audio_at_object 0@ event 1100 // uncomment for SA
1@ = 1
end
while if 834E: not move_object 0@ to FINAL_X FINAL_Y FINAL_Z speed 0.1 0.1 0.0 flag 0
wait 0 ms
end
if
2@ == 1
then
3@ = 0
2@ = 0
end
if
3@ == 0
then
//018C: play_sound 93 at FINAL_X FINAL_Y FINAL_Z // uncomment for III
//018C: play_sound 3 at FINAL_X FINAL_Y FINAL_Z // uncomment for VC
//097B: play_audio_at_object 0@ event 1101 // uncomment for SA
3@ = 1
end
else
if
1@ ==1
then
//018C: play_sound 92 at FINAL_X FINAL_Y FINAL_Z // uncomment for III
//018C: play_sound 3 at FINAL_X FINAL_Y FINAL_Z // uncomment for VC
//097B: play_audio_at_object 0@ event 1100 // uncomment for SA
end
while if 834E: not move_object 0@ to INITI_X INITI_Y INITI_Z speed 0.1 0.1 0.0 flag 1
wait 0 ms
end
01BB: store_object 0@ position_to 4@ 5@ 6@
if
3@ == 1
then
2@ = 1
if and
4@ == INITI_X
5@ == INITI_Y
6@ == INITI_Z
then
//018C: play_sound 93 at INITI_X INITI_Y INITI_Z // uncomment for III
//018C: play_sound 3 at INITI_X INITI_Y INITI_Z // uncomment for VC
//097B: play_audio_at_object 0@ event 1101 // uncomment for SA
3@ = 0
2@ = 0
end
1@ = 0
end
end
end
end