- Joined
- Mar 16, 2013
- Messages
- 1,405
- Solutions
- 3
- Reaction score
- 663
- Points
- 131
- Favorite Pinball Machine
- Batman(Data East)
This code must be inserted directly in the script of FP .... the external file is no longer needed to work (thanks to Gimli)
This is the code / sound of the ball rolling(created by Smoke),to be entered in FP,but you need to add these:
0) I hope I haven't forgotten something
1) Added a Timer and rename it "RollingBallUpdateTimer"
2) In "FuturePinball_BeginPlay()" added this "initTrakedSoundBalls()",which is the start code of the RollingSounds
3) In all the kickers on the table added the code in red, which destroy and create a ball..here is an example in:
Sub CreateNewBall()
addTrackedBall(PlungerKicker)
PlungerKicker.CreateBall
BallsOnPlayfield = BallsOnPlayfield + 1
PlungerKicker.SolenoidPulse
End Sub
OR
sub Kicker2_hit()
deleteTrackedBall(Kicker2)
Kicker2.DestroyBall
Timer3.Interval = 500
Timer3.Enabled = TRUE
end sub
Sub Timer3_Expired()
Timer3.Enabled = FALSE
addTrackedBall(Kicker2)
Kicker2.CreateBall
Kicker2.SolenoidPulse
end sub
OR
Sub Timer3_Expired()
Timer3.Enabled = FALSE
addTrackedBall(KickerWild)
KickerWild.CreateBall
KickerWild.SolenoidPulse
end sub
4) This is 2 part where you could choose your preferences....schoose the volume....schoose the type of sound,but.....
two sectors are fundamental to avoid that all the code works by being careful with the music channel "ZRBsoundballchan = 8"and "ZRBrampSoundballchan = 8"......I set them to 8, the last available channel the FP, since the first 7 can be used for your music on the table. (there is another way to overcome this limit of 8 channels ... but for those who want to know more, just ask)
5) Add sounds.... in Editor FP / Table / MusicManager .... this sound
Code:
'------------------------------------------------------------------
' Smoke's Ball Rolling Sounds
'------------------------------------------------------------------
' These are the options for ball rolling sounds
Const SelectSound = "zfx_ballrolling0" '"zfx_ballrolling" or "zfx_ballrolling2" or "zfx_ballrolling2Loud" or "zfx_ballrolling2Louder" or "zfx_ballrolling2Loudest"
Const SoundVolume = 1.0 ' set volume between 0 and 1. You can also tweak below as you wish
dim ZRBrampHeight
dim ZRBtablewide
dim ZRBrampVolNormLevel
dim ZRBsoundballchan
dim ZRBrampSoundballchan
dim ZRBvolNormLevel
dim ZRBrollingSound
dim ZRBPitchTunning
dim ZRBrampRollingSound
dim ZRBrampPitchTunning
dim ZRBwireVolNormLevel
dim ZRBwireRollingSound
dim ZRBwirePitchTunning
dim zmaxspeedworldrecord
'*****************************
'*****************************
' TO ADJUST TO YOUR NEEDS in the importing script
'*****************************
'*****************************
ZRBrampHeight=45
ZRBtablewide = 520
ZRBsoundballchan = 7
ZRBvolNormLevel =SoundVolume' 0.40
ZRBrollingSound=SelectSound
ZRBPitchTunning=-40
ZRBrampSoundballchan = 7 'set to -1 to disable rampsound roll
ZRBrampVolNormLevel = 0.80
ZRBrampRollingSound="zfx_ballrolling1" '"zfx_ballrolling" or "zfx_ballrolling2" or "zfx_ballrolling2Loud" or "zfx_ballrolling2Louder" or "zfx_ballrolling2Loudest"
ZRBrampPitchTunning=40 '20
ZRBwireVolNormLevel = 2.0
ZRBwireRollingSound="zfx_ballrolling" '"zfx_ballrolling" or "zfx_ballrolling2" or "zfx_ballrolling2Loud" or "zfx_ballrolling2Louder" or "zfx_ballrolling2Loudest"
ZRBwirePitchTunning=10 '60
'*****************************
'*****************************
Const ZRBsearchshifterror = 900 'max radius*radius-> 30mm*30mm=900
Const ZRBvelTuning = 25
Const ZRBvolTuning = 2300
Dim ZRBtrakedSoundBalls(20)
Dim ZRBwireSoundBalls(20)
dim ZRBlastfoundFastBallResultPF
dim ZRBlastfoundFastBallResultRamp
dim ZRBlastRampSound
dim ZRBchanRampPaused
dim ZRBchanPFPaused
Sub RollingBallUpdateTimer_Expired()
dim volRampFactor,invvolRampFactor,tmpPitch,tmpVol,tmpballonwire
dim foundFastBallResultPF,foundFastBallResultRamp
'SOUND MODE
set foundFastBallResultPF=foundFastBallPlayfield()
set foundFastBallResultRamp=foundFastBallRamp()
tmpballonwire=stillBallOnWire()
volRampFactor=1.0
invvolRampFactor=0.0
if (foundFastBallResultPF is nothing) then
if not(ZRBlastfoundFastBallResultPF is nothing) then
ZRBchanPFPaused=true
set ZRBlastfoundFastBallResultPF=nothing
EffectMusic ZRBsoundballchan, Pause, 0, 0
end if
else
set ZRBlastfoundFastBallResultPF = foundFastBallResultPF
' play the rolling sound for each ball
If ((zfunBallVel(foundFastBallResultPF)>1)) Then
volRampFactor=1.0/((relativeBallHeight(foundFastBallResultPF.PositionGlobal.z)/7) ^2 +1)
if (ZRBchanPFPaused) then
ZRBchanPFPaused=false
EffectMusic ZRBsoundballchan, ResumePlaying, 0, 0
end if
EffectMusic ZRBsoundballchan, SetVolume, zfunVol(foundFastBallResultPF)*volRampFactor*ZRBvolNormLevel, 0
EffectMusic ZRBsoundballchan, SetFrequency, 0, zfunPitch(foundFastBallResultPF)+ZRBPitchTunning
'AddDebugText ( relativeBallHeight(foundFastBallResultPF.PositionGlobal.z) ) & " " & volRampFactor &" P"&time()
'if (round(100*(zfunVol(foundFastBallResultPF)*volRampFactor))>10) then
'AddDebugText "v "&round(100*(zfunVol(foundFastBallResultPF)*volRampFactor)) & " P "&(zfunPitch(foundFastBallResultPF)+ZRBPitchTunning)
'end if
Else
if not(ZRBchanPFPaused) then
ZRBchanPFPaused=true
EffectMusic ZRBsoundballchan, Pause, 0, 0
end if
End If
end if
if (ZRBrampSoundballchan>0) then
if (foundFastBallResultRamp is nothing) then
if not(ZRBlastfoundFastBallResultRamp is nothing) then
set ZRBlastfoundFastBallResultRamp=nothing
ZRBchanRampPaused=true
EffectMusic ZRBrampSoundballchan, Pause, 0, 0
end if
else
set ZRBlastfoundFastBallResultRamp = foundFastBallResultRamp
' play the rolling sound for each ball
If ((zfunBallVel(foundFastBallResultRamp)>1)) Then
volRampFactor=1.0-1.0/((relativeBallHeight(foundFastBallResultRamp.PositionGlobal.z)/7) ^2 +1)
if (volRampFactor<0.0) then
volRampFactor=0.0
end if
if (tmpballonwire) then
if (ZRBlastRampSound=ZRBrampRollingSound) then
ZRBlastRampSound=ZRBwireRollingSound
StopMusic ZRBrampSoundballchan
PlayMusic ZRBrampSoundballchan, ZRBwireRollingSound, TRUE ,0 ,0
else
if (ZRBchanRampPaused) then
ZRBchanRampPaused=false
EffectMusic ZRBrampSoundballchan, ResumePlaying, 0, 0
end if
end if
EffectMusic ZRBrampSoundballchan, SetVolume, zfunVol(foundFastBallResultRamp)*volRampFactor*ZRBwireVolNormLevel, 0
EffectMusic ZRBrampSoundballchan, SetFrequency, 0, zfunPitch(foundFastBallResultRamp)+ZRBwirePitchTunning
'AddDebugText "ww->"&zfunVol(foundFastBallResultRamp)*volRampFactor*ZRBwireVolNormLevel
else
if not(ZRBlastRampSound=ZRBrampRollingSound) then
ZRBlastRampSound=ZRBrampRollingSound
StopMusic ZRBrampSoundballchan
PlayMusic ZRBrampSoundballchan, ZRBrampRollingSound, TRUE ,0 ,0
else
if (ZRBchanRampPaused) then
ZRBchanRampPaused=false
EffectMusic ZRBrampSoundballchan, ResumePlaying, 0, 0
end if
end if
EffectMusic ZRBrampSoundballchan, SetVolume, zfunVol(foundFastBallResultRamp)*volRampFactor*ZRBrampVolNormLevel, 0
EffectMusic ZRBrampSoundballchan, SetFrequency, 0, zfunPitch(foundFastBallResultRamp)+ZRBrampPitchTunning
end if
' AddDebugText relativeBallHeight(foundFastBallResultRamp.PositionGlobal.z) & " " & volRampFactor &" R"&time()
'if (round(100*(zfunVol(foundFastBallResultRamp)*volRampFactor))>10) then
'AddDebugText "v2 "&round(100*(zfunVol(foundFastBallResultRamp)*volRampFactor)) & "P2 "&(zfunPitch(foundFastBallResultRamp)+ZRBPitchTunning)
'end if
Else
if not(ZRBchanRampPaused) then
ZRBchanRampPaused=true
EffectMusic ZRBrampSoundballchan, Pause, 0, 0
end if
End If
end if
end if
End Sub
Function relativeBallHeight(zzz)
if (zzz<ZRBrampHeight) then
relativeBallHeight=0.0
else
relativeBallHeight=(zzz-ZRBrampHeight)
end if
end Function
Function zfunVol(ball) ' Calculates the Volume of the sound based on the ball speed
'zfunVol = (zfunBallVel(ball) + zfunBallVel(ball) ^2) / ZRBvolTuning
zfunVol = (zfunBallVel(ball) ^2) / ZRBvolTuning
if (zfunVol>1.0) then
zfunVol=1.0
end if
End Function
Function foundFastBallPlayfield() ' Calculates the Volume of the sound based on the ball speed
dim speed,speedtmp,tmpball,j
speed=1
set foundFastBallPlayfield=nothing
For j = 1 To 20
set tmpball=ZRBtrakedSoundBalls(j)
if (not(tmpball is nothing)) then
speedtmp=zfunBallVel(tmpball)
if (speedtmp>speed and (tmpball.PositionGlobal.z<ZRBrampHeight)) then
set foundFastBallPlayfield=tmpball
speed=speedtmp
'AddDebugText j& "fast "& speed
end if
end if
Next
End Function
Function foundFastBallRamp() ' Calculates the Volume of the sound based on the ball speed
dim speed,speedtmp,tmpball,j
speed=1
set foundFastBallRamp=nothing
For j = 1 To 20
set tmpball= ZRBtrakedSoundBalls(j)
if (not(tmpball is nothing)) then
speedtmp=zfunBallVel(tmpball)
if (speedtmp>speed and (tmpball.PositionGlobal.z>=ZRBrampHeight)) then
set foundFastBallRamp=tmpball
speed=speedtmp
'AddDebugText j& "fastramp "& speed
end if
end if
Next
End Function
'add a call to this in FuturePinball_BeginPlay
Sub initTrakedSoundBalls()
dim j
RollingBallUpdateTimer.userdata = nothing
For j = 1 To 20
set ZRBtrakedSoundBalls(j)=nothing
set ZRBwireSoundBalls(j)=nothing
Next
'limited to 1 ball sound sorry
StopMusic ZRBsoundballchan
PlayMusic ZRBsoundballchan, ZRBrollingSound, TRUE ,0 ,0
EffectMusic ZRBsoundballchan, Pause, 0, 0
if (ZRBrampSoundballchan>0) then
StopMusic ZRBrampSoundballchan
PlayMusic ZRBrampSoundballchan, ZRBrampRollingSound, TRUE ,0 ,0
EffectMusic ZRBrampSoundballchan, Pause, 0, 0
end if
set ZRBlastfoundFastBallResultPF= nothing
set ZRBlastfoundFastBallResultRamp= nothing
ZRBchanRampPaused=true
ZRBchanPFPaused=true
zmaxspeedworldrecord=0.0
ZRBlastRampSound=ZRBrampRollingSound
AddDebugText "ZRBrampHeight "&ZRBrampHeight
AddDebugText "ZRBtablewide "& ZRBtablewide
AddDebugText "ZRBsoundballchan "& ZRBsoundballchan
AddDebugText "ZRBvolNormLevel "& ZRBvolNormLevel
AddDebugText "ZRBrollingSound "& ZRBrollingSound
AddDebugText "ZRBPitchTunning "& ZRBPitchTunning
AddDebugText "ZRBrampSoundballchan "& ZRBrampSoundballchan
AddDebugText "ZRBrampVolNormLevel "& ZRBrampVolNormLevel
AddDebugText "ZRBrampRollingSound "& ZRBrampRollingSound
AddDebugText "ZRBrampPitchTunning "& ZRBrampPitchTunning
AddDebugText "ZRBwireVolNormLevel "& ZRBwireVolNormLevel
AddDebugText "ZRBwireRollingSound "& ZRBwireRollingSound
AddDebugText "ZRBwirePitchTunning "& ZRBwirePitchTunning
RollingBallUpdateTimer.set true,50
end sub
'called when creating a ball (PlungerKicker ?)
'zbrcreator=trigger/kicker
'zbrtriggheight=height of the trigger (default to 0)
Sub addTrackedBall(zbrcreator)
addTrackedBallHeight zbrcreator,0.0
end sub
Sub addTrackedBallHeight(zbrcreator,zbrcreatorheight)
dim j , tmpfoundindex ,tmpball
RollingBallUpdateTimer.set false
set tmpball = xBAM_BallCloseTo(zbrcreator.x, zbrcreator.y,zbrcreatorheight)
'AddDebugText zbrcreator.x&" "&zbrcreator.y
if (tmpball is nothing) then
AddDebugText "BUUGGGGGGGGG xBAM_BallCloseTo"
end if
tmpfoundindex=-1
For j = 1 To 20
if (ZRBtrakedSoundBalls(j) is nothing) then
if (tmpfoundindex=-1) then
tmpfoundindex = j
end if
else
if ( ((tmpball.PositionGlobal.x-ZRBtrakedSoundBalls(j).PositionGlobal.x)^2+(tmpball.PositionGlobal.y-ZRBtrakedSoundBalls(j).PositionGlobal.y)^2+(tmpball.PositionGlobal.z-ZRBtrakedSoundBalls(j).PositionGlobal.z)^2)<ZRBsearchshifterror ) then
tmpfoundindex=-2
AddDebugText "cleanedc->"&j&" "& ((tmpball.PositionGlobal.x-ZRBtrakedSoundBalls(j).PositionGlobal.x)^2+(tmpball.PositionGlobal.y-ZRBtrakedSoundBalls(j).PositionGlobal.y)^2+(tmpball.PositionGlobal.z-ZRBtrakedSoundBalls(j).PositionGlobal.z)^2)
end if
end if
Next
if (tmpfoundindex>-1) then
set ZRBtrakedSoundBalls(tmpfoundindex) = tmpball
AddDebugText "addc->"&tmpfoundindex&" "& ((tmpball.PositionGlobal.x-ZRBtrakedSoundBalls(tmpfoundindex).PositionGlobal.x)^2+(tmpball.PositionGlobal.y-ZRBtrakedSoundBalls(tmpfoundindex).PositionGlobal.y)^2+(tmpball.PositionGlobal.z-ZRBtrakedSoundBalls(tmpfoundindex).PositionGlobal.z)^2)
end if
RollingBallUpdateTimer.set true,50
end Sub
'called when creating a ball is on metal ramp
'zbrtrigg=trigger
'zbrtriggheight=height of the trigger (default to 0)
Sub addWireRampTrackedBall(zbrtrigg)
addWireRampTrackedBallHeight zbrtrigg,0.0
end sub
Sub addWireRampTrackedBallHeight(zbrtrigg,zbrtriggheight)
dim j , tmpfoundindex ,tmpball
RollingBallUpdateTimer.set false
set tmpball = xBAM_BallCloseTo(zbrtrigg.x, zbrtrigg.y,zbrtriggheight)
'AddDebugText zbrtrigg.x&" "&zbrtrigg.y
if (tmpball is nothing) then
AddDebugText "BUUGGGGGGGGG xBAM_BallCloseTo"
end if
tmpfoundindex=-1
For j = 1 To 20
if (ZRBwireSoundBalls(j) is nothing) then
if (tmpfoundindex=-1) then
tmpfoundindex = j
end if
else
if ( ((tmpball.PositionGlobal.x-ZRBwireSoundBalls(j).PositionGlobal.x)^2+(tmpball.PositionGlobal.y-ZRBwireSoundBalls(j).PositionGlobal.y)^2+(tmpball.PositionGlobal.z-ZRBwireSoundBalls(j).PositionGlobal.z)^2)<ZRBsearchshifterror ) then
tmpfoundindex=-2
AddDebugText "cleanedw->"&j&" "& ((tmpball.PositionGlobal.x-ZRBwireSoundBalls(j).PositionGlobal.x)^2+(tmpball.PositionGlobal.y-ZRBwireSoundBalls(j).PositionGlobal.y)^2+(tmpball.PositionGlobal.z-ZRBwireSoundBalls(j).PositionGlobal.z)^2)
end if
end if
Next
if (tmpfoundindex>-1) then
set ZRBwireSoundBalls(tmpfoundindex) = tmpball
AddDebugText "addw->"&tmpfoundindex&" "& ((tmpball.PositionGlobal.x-ZRBwireSoundBalls(tmpfoundindex).PositionGlobal.x)^2+(tmpball.PositionGlobal.y-ZRBwireSoundBalls(tmpfoundindex).PositionGlobal.y)^2+(tmpball.PositionGlobal.z-ZRBwireSoundBalls(tmpfoundindex).PositionGlobal.z)^2)
end if
RollingBallUpdateTimer.set true,50
end Sub
'to force a remove for wire sound in some case
'zbrtrigg=trigger
'zbrtriggheight=height of the trigger (default to 0)
Sub removeWireRampTrackedBall(zbrtrigg)
removeWireRampTrackedBallHeight zbrtrigg,0.0
end sub
Sub removeWireRampTrackedBallHeight(zbrtrigg,zbrtriggheight)
dim j,tmpball
'AddDebugText "remove wire " &zbrtrigg.x&" "&zbrtrigg.y
RollingBallUpdateTimer.set false
For j = 1 To 20
if not(ZRBwireSoundBalls(j) is nothing) then
set tmpball=ZRBwireSoundBalls(j)
if ( ((tmpball.PositionGlobal.x-zbrtrigg.x)^2+(tmpball.PositionGlobal.y-zbrtrigg.y)^2+(tmpball.PositionGlobal.z-zbrtriggheight)^2)<ZRBsearchshifterror ) then
set ZRBwireSoundBalls(j)=nothing
AddDebugText "delw "&j&" "&(((tmpball.PositionGlobal.x-zbrtrigg.x)^2+(tmpball.PositionGlobal.y-zbrtrigg.y)^2+(tmpball.PositionGlobal.z-zbrtriggheight)^2))
else
AddDebugText "whattttttt" &tmpball.PositionGlobal.x&" "&tmpball.PositionGlobal.y&" "&tmpball.PositionGlobal.z&"-->"&(((tmpball.PositionGlobal.x-zbrtrigg.x)^2+(tmpball.PositionGlobal.y-zbrtrigg.y)^2+(tmpball.PositionGlobal.z-zbrtriggheight)^2))
end if
end if
Next
RollingBallUpdateTimer.set true,50
end sub
'called by drain_hit
'zbrdestroyer=trigger/kicker
'zbrdestroyerheight=height of the trigger (default to 0)
Sub deleteTrackedBall(zbrdestroyer)
deleteTrackedBallHeight zbrdestroyer,0.0
end sub
Sub deleteTrackedBallHeight(zbrdestroyer,zbrdestroyerheight)
dim j,tmpball
RollingBallUpdateTimer.set false
For j = 1 To 20
if not(ZRBtrakedSoundBalls(j) is nothing) then
set tmpball=ZRBtrakedSoundBalls(j)
if ( ((tmpball.PositionGlobal.x-zbrdestroyer.x)^2+(tmpball.PositionGlobal.y-zbrdestroyer.y)^2+(tmpball.PositionGlobal.z-zbrdestroyerheight)^2)<ZRBsearchshifterror ) then
set ZRBtrakedSoundBalls(j)=nothing
AddDebugText "del "&j&" "&(((tmpball.PositionGlobal.x-zbrdestroyer.x)^2+(tmpball.PositionGlobal.y-zbrdestroyer.y)^2+(tmpball.PositionGlobal.z-zbrdestroyerheight)^2))
end if
end if
Next
RollingBallUpdateTimer.set true,50
end sub
function stillBallOnWire()
dim j,tmpball
stillBallOnWire=false
For j = 1 To 20
if not(ZRBwireSoundBalls(j) is nothing) then
set tmpball=ZRBwireSoundBalls(j)
if (tmpball.PositionGlobal.z>=ZRBrampHeight) then
'AddDebugText "wire "&j&" "&tmpball.PositionGlobal.z
stillBallOnWire=true
else
'AddDebugText "nowire "&j&" "&tmpball.PositionGlobal.z
set ZRBwireSoundBalls(j)=nothing
end if
end if
Next
end Function
Function zfunPan(ball) ' Calculates the pan for a ball based on the X position on the table.
Dim tmp
tmp = ball.PositionGlobal.x * 2 / ZRBtablewide-1
If tmp > 0 Then
zfunPan = (tmp ^10)
Else
zfunPan = (-((- tmp) ^10))
End If
End Function
Function zfunPitch(ball) ' Calculates the pitch of the sound based on the ball speed
zfunPitch = round(100+zfunBallVel(ball)/4)
if (zfunPitch>120) then
zfunPitch=120
end if
End Function
Function zfunBallVel(ball) 'Calculates the ball speed
'yes we don't use the Z that we want
zfunBallVel = INT( SQR( (ball.velocity.x^2 + ball.velocity.y^2) )/ZRBvelTuning )
if (zfunBallVel>zmaxspeedworldrecord) then
zmaxspeedworldrecord = zfunBallVel
AddDebugText "speedworldrecord "& zmaxspeedworldrecord
end if
End Function
This is the code / sound of the ball rolling(created by Smoke),to be entered in FP,but you need to add these:
0) I hope I haven't forgotten something
1) Added a Timer and rename it "RollingBallUpdateTimer"
2) In "FuturePinball_BeginPlay()" added this "initTrakedSoundBalls()",which is the start code of the RollingSounds
3) In all the kickers on the table added the code in red, which destroy and create a ball..here is an example in:
Sub CreateNewBall()
addTrackedBall(PlungerKicker)
PlungerKicker.CreateBall
BallsOnPlayfield = BallsOnPlayfield + 1
PlungerKicker.SolenoidPulse
End Sub
OR
sub Kicker2_hit()
deleteTrackedBall(Kicker2)
Kicker2.DestroyBall
Timer3.Interval = 500
Timer3.Enabled = TRUE
end sub
Sub Timer3_Expired()
Timer3.Enabled = FALSE
addTrackedBall(Kicker2)
Kicker2.CreateBall
Kicker2.SolenoidPulse
end sub
OR
Sub Timer3_Expired()
Timer3.Enabled = FALSE
addTrackedBall(KickerWild)
KickerWild.CreateBall
KickerWild.SolenoidPulse
end sub
4) This is 2 part where you could choose your preferences....schoose the volume....schoose the type of sound,but.....
two sectors are fundamental to avoid that all the code works by being careful with the music channel "ZRBsoundballchan = 8"and "ZRBrampSoundballchan = 8"......I set them to 8, the last available channel the FP, since the first 7 can be used for your music on the table. (there is another way to overcome this limit of 8 channels ... but for those who want to know more, just ask)
Code:
' These are the options for ball rolling sounds
Const SelectSound = "zfx_ballrolling0" '"zfx_ballrolling" or "zfx_ballrolling2" or "zfx_ballrolling2Loud" or "zfx_ballrolling2Louder" or "zfx_ballrolling2Loudest"
Const SoundVolume = 1.0 ' set volume between 0 and 1. You can also tweak below as you wish
'*****************************
'*****************************
' TO ADJUST TO YOUR NEEDS in the importing script
'*****************************
'*****************************
ZRBrampHeight=45
ZRBtablewide = 520
ZRBsoundballchan = 8
ZRBvolNormLevel =SoundVolume' 0.40
ZRBrollingSound=SelectSound
ZRBPitchTunning=-40
ZRBrampSoundballchan =8 'set to -1 to disable rampsound roll
ZRBrampVolNormLevel = 0.80
ZRBrampRollingSound="zfx_ballrolling1" '"zfx_ballrolling" or "zfx_ballrolling2" or "zfx_ballrolling2Loud" or "zfx_ballrolling2Louder" or "zfx_ballrolling2Loudest"
ZRBrampPitchTunning=40 '20
ZRBwireVolNormLevel = 2.0
ZRBwireRollingSound="zfx_ballrolling" '"zfx_ballrolling" or "zfx_ballrolling2" or "zfx_ballrolling2Loud" or "zfx_ballrolling2Louder" or "zfx_ballrolling2Loudest"
ZRBwirePitchTunning=10 '60
5) Add sounds.... in Editor FP / Table / MusicManager .... this sound
Attachments
Last edited by a moderator: