Skip to content

Instantly share code, notes, and snippets.

@JuniorDjjr
Created May 12, 2022 12:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save JuniorDjjr/c6d6a1ad6d8b1504c15192ded606ce42 to your computer and use it in GitHub Desktop.
Save JuniorDjjr/c6d6a1ad6d8b1504c15192ded606ce42 to your computer and use it in GitHub Desktop.
// by Junior_Djjr - MixMods.com.br
// You need: https://forum.mixmods.com.br/f141-gta3script-cleo/t5206-como-criar-scripts-com-cleoplus
SCRIPT_START
{
LVAR_INT scplayer hVeh pVeh i iSearchProgress hAudioStream
LVAR_FLOAT f fLastBrake fGas fBrake fBrakePressure fIniVolume x y z
WAIT 0
WAIT 0
IF NOT READ_FLOAT_FROM_INI_FILE "CLEO\Air Brake Sound.ini" "Settings" "Volume" (fIniVolume)
fIniVolume = 0.7
ENDIF
SET_SCRIPT_EVENT_CAR_CREATE ON OnCarCreate hVeh
GET_PLAYER_CHAR 0 (scplayer)
WHILE TRUE
WAIT 0
iSearchProgress = 0
WHILE GET_ANY_CAR_NO_SAVE_RECURSIVE iSearchProgress (iSearchProgress hVeh)
IF IS_CAR_ENGINE_ON hVeh
OR IS_CHAR_IN_CAR scplayer hVeh
IF GET_EXTENDED_CAR_VAR hVeh AUTO 1 fLastBrake // is false, it's because vehicle isn't valid
GET_CAR_PEDALS hVeh fGas fBrake
IF fLastBrake > 0.5
AND fBrake <= 0.5
GET_EXTENDED_CAR_VAR hVeh AUTO 2 fBrakePressure
IF fBrakePressure > 0.1
// Don't keep adding too distant sounds
GET_CAR_COORDINATES hVeh x y z
IF LOCATE_CAMERA_DISTANCE_TO_COORDINATES x y z 100.0
GOSUB PlayAudio
ENDIF
ENDIF
SET_EXTENDED_CAR_VAR hVeh AUTO 2 0.0
ELSE
IF fBrake > 0.5
GET_EXTENDED_CAR_VAR hVeh AUTO 2 fBrakePressure
f = fBrake * 0.08
fBrakePressure +=@ f
CLAMP_FLOAT fBrakePressure 0.0 1.0 (fBrakePressure)
SET_EXTENDED_CAR_VAR hVeh AUTO 2 fBrakePressure
ENDIF
ENDIF
ENDIF
SET_EXTENDED_CAR_VAR hVeh AUTO 1 fBrake
ENDIF
ENDWHILE
ENDWHILE
OnCarCreate:
IF GOSUB IsTruckOrBus
INIT_EXTENDED_CAR_VARS hVeh AUTO 2 // will also be used to check if vehicle is valid
ENDIF
RETURN_SCRIPT_EVENT
IsTruckOrBus:
GET_VEHICLE_SUBCLASS hVeh i
IF i = VEHICLE_SUBCLASS_AUTOMOBILE
GET_CAR_ANIMGROUP hVeh i
IF i = CAR_ANIMGROUP_BUS
OR i = CAR_ANIMGROUP_COACH
OR i = CAR_ANIMGROUP_TRUCK
RETURN_TRUE
RETURN
ENDIF
GET_VEHICLE_POINTER hVeh (pVeh)
READ_STRUCT_OFFSET pVeh 0x216 2 (i) //0x138 + 0xDE
/*IF IS_CHAR_IN_CAR scplayer hVeh
PRINT_FORMATTED_NOW "%i" 1000 i
ENDIF*/
IF i = 84 //truck
RETURN_TRUE
RETURN
ENDIF
IF i = 81 // trash and some other non-trucks
// only consider if uses middle wheel, avoid vans etc
IF DOES_CAR_HAVE_PART_NODE hVeh CAR_NODE_WHEEL_RM
RETURN_TRUE
RETURN
ENDIF
ENDIF
ENDIF
RETURN_FALSE
RETURN
PlayAudio:
//PRINT_FORMATTED_NOW "fBrakePressure %f" 500 fBrakePressure
IF LOAD_3D_AUDIO_STREAM "CLEO\Air Brake Sound\airbrake.mp3" hAudioStream
SET_AUDIO_STREAM_LOOPED hAudioStream FALSE
SET_PLAY_3D_AUDIO_STREAM_AT_CAR hAudioStream hVeh
GET_AUDIO_SFX_VOLUME f
f *= fBrakePressure
f *= fIniVolume
SET_AUDIO_STREAM_VOLUME hAudioStream f
SET_AUDIO_STREAM_STATE hAudioStream 1
ELSE
PRINT_STRING_NOW "~r~Error: Can't find 'CLEO\Air Brake Sound\airbrake.mp3" 4000
ENDIF
RETURN
}
SCRIPT_END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment