Jump to content

Plunger Code Stanadardization


Dazz

Recommended Posts

  • Administrators

One thing that I think we really needed is plunger code standardization.  Right now I think we have 3 or 4 different methods that can be used to add analog plunger code to tables. Some seem to be easier to implement than others, but others seem to be more consistent in their power when released.

 

I'm not as familiar with the methods as I would like to be, but after testing out the differences I think the impulse plunger method that Koadic uses. It seems to have the most consistent release power when released from the same tension. 

 

If anyone is familiar with the multiple plunger methods can chime in and discuss the + and - to the different methods.  Perhaps if could get someone to create a couple test tables and use a different plunger method we can determine the better way to go.

Link to comment
Share on other sites

Hey guys...  here is the current version of my code with example Impulse Plunger initialization along with the suggested Key Down and Key Up entries and some code comments...

 

	
' Example of modified Impulse Plunger scripting. IMPowerSetting and IMTime moved down to plunger area.'

	'Impulse Plunger'
	'--------------------'
''	Set plungerIM = New cvpmImpulseP
''	With plungerIM
''		.InitImpulseP swPlunger, IMPowerSetting, IMTime
''		.Switch 16
''		.Random 1.5
''		.InitEntrySnd "PlungerPull"
''		.InitExitSnd "plunger2", "plunger"
''		.CreateEvents "plungerIM"
''	End With


'**************'
'Key Input     '
'**************'

 Sub Table1_KeyDown(ByVal keycode)
	If keycode = PlungerKey Then PlungerIM.Pullback:Pcount = 0:PTime.Enabled = 1:Plunger.TimerEnabled=0
	If vpmKeyDown(keycode) Then Exit Sub
 End Sub

 Sub Table1_KeyUp(ByVal keycode)
	If keycode = PlungerKey Then PTime.Enabled = 0:Pcount = 0:PTime2.Enabled = 1:PlungerIM.Fire
	If vpmKeyUp(keycode) Then Exit Sub
 End Sub


'        Koadic's Alpha Ramp
'   Impulse Plunger Scripting v5'
'       single ramp animated'
'        via image switching'
'------------------------------'
 Dim PDelay, PCount, PImages, PStart, IMTime, IMPowerSetting, PlFrame

 IMPowerSetting = Plunger.MechStrength	' Plunger Power - Set via Plunger MechStrength'
 IMTime = Round(Plunger.PullSpeed/10, 2)' Time in 1/10th seconds for Full Plunge - Set via Plunger Pull Speed...'
											' 1 = .1 second, 5 = .5 second, 10 = 1 second, etc.'
 PStart = 0				' Set number of first plunger image, use 1 for legacy "1-12" setup'
 PImages = 25			' Set number of animation frames not including the PStart position, use 11 for legacy "1-12" setup'
 PTime.Interval = INT(IMTime*1000/PImages)

 'This sets window for power readings to use when the analog plunger triggers a ball launch.'
 ' When the analog plunger position triggers the launch, this will grab the power to use from previous'
 ' readings going back the amount of the delay window (200ms by default). This helps compensate if the'
 ' plunger is slowed too much by friction by grabbing the power from an earlier reading.'
 'Set desired delay in editor via Plunger Release Speed'
 PDelay = CINT(Plunger.FireSpeed/Plunger.TimerInterval)
 ReDim PlPos(PDelay)
 
 ResetPlungers

 Sub ResetPlungers
	aPlunger.Image = "p" & PStart
	For x = 0 to ubound(PlPos):PlPos(x) = 0:Next
	Pcount = 0
	PRefresh.state = ABS(PRefresh.state - 1)
 End Sub

 Sub PTime_Timer
	If PCount < (PImages) Then
		PCount = PCount + 1
		aPlunger.Image = "p" & (PCount+PStart)
		PRefresh.state = ABS(PRefresh.state - 1)
	End If
 End Sub

 Sub PTime2_Timer
	Select Case PCount
		Case 0:aPlunger.Image = "p" & PStart : PRefresh.state = ABS(PRefresh.state - 1)
		Case 1:aPlunger.Image = "p" & INT(PImages/5) : PRefresh.state = ABS(PRefresh.state - 1)
		Case 2:ResetPlungers:Plunger.TimerEnabled = 1:Me.Enabled = 0
	End Select
	Pcount = Pcount + 1
 End Sub

 Sub Plunger_Timer()
	PlPos(PDelay) = Plunger.Position
	PlFrame = PlPos(PDelay)  ' can change to INT(PlPos(PDelay)/2)+1 for legacy "1-12" setups'
	'If PlFrame > 12 Then PlFrame = 12 ''uncomment and adjust if needed for using fewer animation frames'
	If PlPos(PDelay) <> PlPos(PDelay - 1) Then
		aPlunger.Image = "p" & PlFrame
		PRefresh.state = ABS(PRefresh.state - 1)
		If PlPos(PDelay) < 2 and PlPos(0) > 5 Then
			PlungerIM.Strength = (PlPos(0)/25*Plunger.MechStrength)
			PlungerIM.AutoFire
			PlungerIM.Strength = Plunger.MechStrength
			Plunger.TimerEnabled = 0:PTime2.Enabled = 1
		End If
	End If
	For x = 0 to ubound(PlPos)-1:PlPos(x)=PlPos(x+1):Next
 End Sub

Link to original

If anyone wants further information/explanation of the specifics, just ask :)

Link to comment
Share on other sites

  • 5 months later...

Hi, is this something that I can just paste in to a table script? if so where?

I just received one of the new virtua pin plungers and am getting confused with the multiple ways on how to add analog plunger support to tables

 

thanks

Link to comment
Share on other sites

  • 4 weeks later...

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...