Tutorial Future Pinball Nudge/ Tilt Tutorial

Gimli

Pinball Master
Joined
Feb 6, 2020
Messages
1,341
Reaction score
882
Points
120
Favorite Pinball Machine
Monster Bash
I was posting about this at GoPinball when the curtain came down...I have found Future Pinball nudging to be a mystifying minefield but have discovered a few things.

-This thread will try to clarify what I have learned in terms of FP coding of Tilt and the xml tilt properties that we can tweak.

-This post will not discuss installing Digital /analog tilt mechanism in Pinball Cabs for FP which I know nothing about.

This thread reminds me of Monty Python:


Preamble

I don't know much about actual pinball tilt mechanisms or which manufacturers use whatever.
But I had a quick look at this:

tiltpanel.jpg
It seems what I am discussing is pendulum switch emulation in the FP code/xml.
From what I gather the pendulum switch in a real machine or plumb bob tilt works like in this video



I also note that in some tables like Star Trek you get"Danger" Warnings prior to being able to TILT

So the Tilt mechanism physics seems to involve at very least:
1. Tilt Sensitivity Settings
2. Tilt Warning
3. Sensitivity Recovery / Warning Recovery ( I am not sure if Warning Recovery occurs..but I have decided to code this...)
3. Tilt

Future Pinball Coding

1. Table Editor Tilt Warning Settings
2. XML parameters
3. Script

1. Table Editor Tilt Warning Settings.
I will start with the simplest first . From table editor if you click your mouse on a blank spot on the table, you should see the "Table" menu along the right side of the screen and at the bottom you can set Tilt warnings. However it is not as easy as it sounds...as I have found that in order actually for the table to recognize your new settings you have to go through a bit of shell game.

It turns that "Warnings" in the code are dependent on "nvTiltWarnings" that are current in the fpRam file that is generated when you play FP.
so in order for your new Tilt Warning settings to take effect , after you change the number in table editor then you need reset the FPRam file. This is very easy to do. Simply go up to top of the screen menu section under Table/ Table Info and click on "Reset FP Ram File to Defaults".

So now the table will tilt after your final warning.

2. XML Parameters.
In the past the XML file was a mysterious imbedded section in FP program code that only the hackers accessed with all the Hacked versions of FP.
But recently the table Dev's and Tweakers like Slam, Terry, George and Wild etc.. have been adding the XML to the table script and BAM will overide the FP program code with your settings.
You can either copy and paste one of their codes into your table or if you have a table running by your own standards you can generate your own xml code as follows.

Load your table with BAM. Press "Q" or "~" on keyboard to load BAM Menu (Make sure you are in the "Advanced" BAM menu") go to "DEV Options" then "Physics Tweaks".
Press Control-Shift-C and it will say "Clipboard:physicsXML As a comment" ( Note if you just press Control-C it will say "Clipboard:xBAM.physics xml" you DON'T WANT THIS)

Now you have your xml code and all you need to do is go to any table script and press Control-V to paste it into you code anywhere you want outside of a Sub....End Sub routine.
The XML code will have the following Nudge Routine:
Code:
<nudge impulse=""100.0"" impulseRandomness=""25.0"" warningLevel=""160"" leftAngle=""65"" upAngle=""0.0"" rightAngle=""295""" & vbcrlf &_    "         vectorRandomness=""4"" visualDistance=""2"" waitPeriod=""300"" maxBallVelocity=""1000.0""></nudge>
You can immediately surmise the reasons for each of the parameters and tweak them how you wish....

If you remember we are trying to emulate a pendulum and its sensitivity, you will see that "WarningLevel" and "WaitPeriod" jump out at you.

As it turns out "Warning Level" is the same thing as Sensitivity. At the default Warning Level of 160 it takes 1-3 nudges to generate a "Warning". This number is variable I presume based on the "Impulse Randomness" setting above. Anyways, if you set the Warning level lower to around 100 then every nudge will generate a warning. And if you set the Warning level high enough then no nudges will generate a warning and it is impossible therefore to tilt the table.

The Wait Period is the time between nudges that it will take for the pendulum to return to rest. So lets call this "Sensitivity Recovery"

3. Script
Most FP table authors start with the good old "new table" script as their starting point when creating a table.
The relevant code is as follows:

Code:
' The Played has Nudged the Table a little too hard/much and a Warning
' must be given to the player
'
Sub FuturePinball_TiltWarning(ByVal Warnings)
    'AddDebugText "Tilt Warning" & Warnings

    ' play a sound at this point and put something on a display
End Sub


' The Player has tilted the machine (Too Many Warnings)
'
Sub FuturePinball_Tilted()
    'AddDebugText "**Tilted**"

    ' play a sound
    PlaySound "Tilt"

    ' ensure that the flippers are down (as the keys won't work from now on)
    LeftFlipper.SolenoidOff
    RightFlipper.SolenoidOff

    ' you may wish to turn off any lights at this point. (The Light Sequencer
    ' will make this very easy)

    ' start the tilt recovery timer which waits until all balls have drained
    ' before doing the end of ball sequence (or end of game)
    TiltRecoveryTimer.Interval = 2000
    TiltRecoveryTimer.Enabled    = TRUE
End Sub


' The tilt recovery timer waits for all the balls to drain before continuing on
' as per normal
'
Sub TiltRecoveryTimer_Expired()
    ' disable the timer
    TiltRecoveryTimer.Enabled    = FALSE
    ' if all the balls have been drained then..
    If (BallsOnPlayfield = 0) Then
        ' do the normal end of ball thing (this dosn't give a bonus if the table is tilted)
        EndOfBall()
    Else
        ' else retry (checks again in another second)
        TiltRecoveryTimer.Interval = 1000
        TiltRecoveryTimer.Enabled = TRUE
    End If
End Sub
Notice it has 3 Sub Routines:
1.Sub FuturePinball_TiltWarning(ByVal Warnings)
2.Sub FuturePinball_Tilted()
3.Sub TiltRecoveryTimer_Expired()

Observations:
In virtually all FP tables, the Tilt Warnings will reset only between balls and between games played.
NOTE: if the ball saver is active and you drain a ball and another ball is released Tilt Warnings are NOT reset
NOTE: even if you wait between nudges Warning Levels are NOT Reset

So I don't know if actual tables have the Warning Level reset if you wait long enough between nudges...but I decided to code this as a feature as follows.

You need to create a timer named "TiltWarningRecovery" in table editor. And here is an example of the code:

Code:
Dim Bumps
Bumps = 0

Sub FuturePinball_TiltWarning(ByVal Warnings)
    Bumps = Bumps + 1
    Warnings = Bumps
      'AddDebugText "Tilt Warning" & Warnings

    ' play a sound at this point and put something on a display

   TiltWarningRecovery.Set False:TiltWarningRecovery.Set True, 5000 'Allows tilt to recover in 5 seconds
   Select Case (Warnings)' Here is an example if you have 4 warnings chosen
         Case 1:
            DispDmd1.QueueText "Warning 1", seBlink, 100, True
                DispSeg1.QueueText "Warning 1", seBlink, 100, True
                HudDmd1.QueueText "Warning 1", seBlink, 100, True
                HudSeg1.QueueText "Warning 1", seBlink, 100, True  ' Or whatever you wish to say here
            PlaySound "Warning1" 'Add whatever sound you wish...
     
         Case 2:
             DispDmd1.QueueText "Warning 2", seBlink, 100, True
                 DispSeg1.QueueText "Warning 2", seBlink, 100, True  ' Or whatever you wish to say here
             HudDmd1.QueueText "Warning 2", seBlink, 100, True
                 HudSeg1.QueueText "Warning 2", seBlink, 100, True  ' Or whatever you wish to say here
             PlaySound "Warning2"'Add whatever sound you wish...
         Case 3:
                DispDmd1.QueueText "Warning 3", seBlink, 100, True
                DispSeg1.QueueText "Warning 3", seBlink, 100, True  ' Or whatever you wish to say here
            HudDmd1.QueueText "Warning 3", seBlink, 100, True
                HudSeg1.QueueText "Warning 3", seBlink, 100, True  ' Or whatever you wish to say here
            PlaySound "Warning3"'Add whatever sound you wish...
         Case 4:
                DispDmd1.QueueText "Warning 4", seBlink, 100, True
                DispSeg1.QueueText "Warning 4", seBlink, 100, True  ' Or whatever you wish to say here
            HudDmd1.QueueText "Warning 4", seBlink, 100, True
                HudSeg1.QueueText "Warning 4", seBlink, 100, True  ' Or whatever you wish to say here
            PlaySound "Warning4"'Add whatever sound you wish...
    End Select
End Sub
 


Sub FuturePinball_Tilted()
      If Bumps  < 4 then fpTilted = FALSE: Exit Sub 'this prevents table from tilting until after 4 warnings
        DispDmd1.QueueText "Tilted", seBlink, 100, True
        DispSeg1.QueueText "Tilted", seBlink, 100, True  ' Or whatever you wish to say here
        HudDmd1.QueueText "Tilted", seBlink, 100, True
        HudSeg1.QueueText "Tilted", seBlink, 100, True  ' Or whatever you wish to say here
        PlaySound "Tilted"'
        TiltRecoveryTimer.Interval = 1000
        TiltRecoveryTimer.Enabled   = TRUE
        Bumps = 0
End Sub




Sub TiltWarningRecovery_Expired() 'to Lift tilt warnings and recharge tilt after 5 seconds of gentle play :)
   If Bumps > 3 and fpTilted = FALSE then  'Will only recharge afer you reach critical last warning Bumps = 4
        DispDmd1.QueueText "Recharged", seBlink, 100, True
        DispSeg1.QueueText "Recharged", seBlink, 100, True  ' Or whatever you wish to say here
        HudDmd1.QueueText "Recharged", seBlink, 100, True
        HudSeg1.QueueText "Recharged", seBlink, 100, True  ' Or whatever you wish to say here
        PlaySound "Recharged"
        AddDebugText "R E C H A R G E D"
      Bumps = 0
   End if
   AddDebugText " Bumps" &  Bumps
   AddDebugText "TiltWarningRecovery.Enabled" & TiltWarningRecovery.Enabled
End Sub
I added this additional sub routine.

The above is a simple template and if any one is interested here is dummy "table" demonstrating it :

see below attachment

I set the warning level low just to demonstrate how every nudge generates a Warning. I set the Warnings to 4 then you will Tilt on the very next nudge. If you wait after the 4th warning for 5 seconds it will say "Recharged" and the Warning cycle will reset and your are free to nudge again.

I added simple code for both Gas Segments and DMDs for demonstration purposes.

For me at least this totally demystifies the FP Tilt coding and I can now tweak it as I see fit.
I like the feature of Warning Recovery , although I am not sure this translates to real tables

It adds a predictable element of strategy whereby if possible i will cradle the ball after the final warning until recharged. And I can then nudge freely during game play.

Cheers
 

Attachments

  • TiltTemplate.fpt
    559 KB · Views: 142
Last edited:
TerryRed said:
Nicely done!
One thing I can tell you is that FP's analogue nudging will never EVER trigger a TILT Warning. So anyone using that on a cabinet is playing tables at a much easier difficulty.

This would be fine if FP had a dedicated TILT BOB input. Then that Tilt BOB on a cabinet would trigger a Warning.

The only possible way around that would be to have the TILT BOB trigger an unused key, and add that function in script to then trigger the Tile Warning feature possibly?

I have analogue nudge and a Tilt Bob in my cabinet, but I still use digital nudge as my cabinet is too damn heavy.
Edited by TerryRed, 09 May 2020 - 04:06 PM.
 
TerryRed said:
The only possible way around that would be to have the TILT BOB trigger an unused key, and add that function in script to then trigger the Tile Warning feature possibly?
yes that can be done...I kind of used the same idea in the code above for the "Tilt Warning Recovery" function.
The FP program seems to have "Warnings" hard coded and automatic based on the Nudge key function.and it is a value that is only available inside the Sub TiltWarning routine
so for instance you can't monitor or change "Warnings" outside of the Sub TiltWarning routine.
So I added a parameter I called "Bumps" outside the Sub Tilt Warning Routine that I then Mirror Warnings to inside the Sub Tilt Warning Routine
Warnings = Bumps
So instead of "Warnings" you use "Bumps" .

In your case, each time you nudge you have Bumps = Bumps + 1 and then you call the Sub FuturePinball_Tilted() which will only tilt if the Bumps > 4 or whatever you wish and you can bypass the Sub Tilt Warning routine altogether

Note this won't actually make the table "nudge" but I presume that is not the problem..it is more the activation of Tilt you are referring to.

So as a demo
Code:
 I created this cheatcode using "B" on keyboard

Dim Bumps

Sub FuturePinball_KeyPressed(ByVal KeyCode)



    if keycode = 48 then Bumps = Bumps + 1:AddDebugText" Bumps = " & Bumps:FuturePinball_Tilted() 'B on keyboard

and then you have "Bumps" as the deciding factor in the Sub FuturePinball_Tilted()
Code:
Sub FuturePinball_Tilted()

If Bumps < 5 then fpTilted = FALSE: Exit Sub 'this prevents table from tilting until after 4 warnings

DispDmd1.QueueText "Tilted", seBlink, 100, True

DispSeg1.QueueText "Tilted", seBlink, 100, True ' Or whatever you wish to say here

HudDmd1.QueueText "Tilted", seBlink, 100, True

HudSeg1.QueueText "Tilted", seBlink, 100, True ' Or whatever you wish to say here

PlaySound "Tilted"'

TiltRecoveryTimer.Interval = 1000

TiltRecoveryTimer.Enabled = TRUE

Bumps = 0

End Sub


Edited by gimli246, 09 May 2020 - 08:26 PM.
 
@ Gimli
Thanks for the help/tutorial :)
I have got this working nicely in a very basic test table ?
 
I have got this working nicely in a very basic test table

@Gin
if you played to Charlie's Angels table, you could have noticed also.

@Gimli
if you want put a video of your demo in "Demonstrate how you are all using BAM on your tables"
 
Last edited:
@wild ok
The tilt code though doesnt require BAM
 
Thanks for this, just wanted to mention that I added a Tutorial thread and resource prefix in case folks want to use them.
:salut:
 
Thanks for this, just wanted to mention that I added a Tutorial thread and resource prefix in case folks want to use them.
:salut:
Btw, is it my imagination, or did the sub-sub-forums start being visually nested under the sub-forum headers in the past week? For example:


I remember bringing up sometime back that having a bunch of invisible sub-sub-forums was confusing, but this change seems to directly remedy that concern. So... whoohoo?
 
Forgot when that changed but I wasn't a fan of the drop down selections, that looks like the Bam category view to me:

My forum view lists the sub-forums differently?
Sub_forums.jpg
 
yes that can be done...I kind of used the same idea in the code above for the "Tilt Warning Recovery" function.
The FP program seems to have "Warnings" hard coded and automatic based on the Nudge key function.and it is a value that is only available inside the Sub TiltWarning routine
so for instance you can't monitor or change "Warnings" outside of the Sub TiltWarning routine.
So I added a parameter I called "Bumps" outside the Sub Tilt Warning Routine that I then Mirror Warnings to inside the Sub Tilt Warning Routine
Warnings = Bumps
So instead of "Warnings" you use "Bumps" .

In your case, each time you nudge you have Bumps = Bumps + 1 and then you call the Sub FuturePinball_Tilted() which will only tilt if the Bumps > 4 or whatever you wish and you can bypass the Sub Tilt Warning routine altogether

Note this won't actually make the table "nudge" but I presume that is not the problem..it is more the activation of Tilt you are referring to.

So as a demo
Code:
 I created this cheatcode using "B" on keyboard

Dim Bumps

Sub FuturePinball_KeyPressed(ByVal KeyCode)



    if keycode = 48 then Bumps = Bumps + 1:AddDebugText" Bumps = " & Bumps:FuturePinball_Tilted() 'B on keyboard

and then you have "Bumps" as the deciding factor in the Sub FuturePinball_Tilted()
Code:
Sub FuturePinball_Tilted()

If Bumps < 5 then fpTilted = FALSE: Exit Sub 'this prevents table from tilting until after 4 warnings

DispDmd1.QueueText "Tilted", seBlink, 100, True

DispSeg1.QueueText "Tilted", seBlink, 100, True ' Or whatever you wish to say here

HudDmd1.QueueText "Tilted", seBlink, 100, True

HudSeg1.QueueText "Tilted", seBlink, 100, True ' Or whatever you wish to say here

PlaySound "Tilted"'

TiltRecoveryTimer.Interval = 1000

TiltRecoveryTimer.Enabled = TRUE

Bumps = 0

End Sub


Edited by gimli246, 09 May 2020 - 08:26 PM.
Dear GIMLI:
Thank you very much for these posts and for all your work you share from many years.

I am and "end user" who enjoy a lot the creations of many guys like you who share with the virtual pinball community all kind of wonderfull tables and improvements.

I built a pincab some years ago and from the begining I was thinking how could I do to make FP tables to be Tilted from a Tiltbob and no from the nudges. I think that this post from you finally gives me the key but remember that....I am not very good with programing and so on.

Could you let me know what parts of the code you shared should I copy and paste in the script of any FP table to make it to nudge normally but to be tilted only after the number of warnings I set in the script (Warnings and TILT come from bumps providing from the Tiltbob and no from the nudges) I noticed that you provided letter "B" for an input in your last coding but I tried it in Charlie s Angels and it is assigned to change the ball appearence.

Sorry for my English please. I speak Spanish in my country....And thank you for your kind attention. I am sure that with a little help from you I will manage to make my cab to be tilted from the tiltbob and no for the FP nudges.

Best Regards.

Jorge
 
Hello Jorge ,

I wll try to respond tomorrow

Regards
Bob
 
Dear GIMLI:
Thank you very much for these posts and for all your work you share from many years.

I am and "end user" who enjoy a lot the creations of many guys like you who share with the virtual pinball community all kind of wonderfull tables and improvements.

I built a pincab some years ago and from the begining I was thinking how could I do to make FP tables to be Tilted from a Tiltbob and no from the nudges. I think that this post from you finally gives me the key but remember that....I am not very good with programing and so on.

Could you let me know what parts of the code you shared should I copy and paste in the script of any FP table to make it to nudge normally but to be tilted only after the number of warnings I set in the script (Warnings and TILT come from bumps providing from the Tiltbob and no from the nudges) I noticed that you provided letter "B" for an input in your last coding but I tried it in Charlie s Angels and it is assigned to change the ball appearence.

Sorry for my English please. I speak Spanish in my country....And thank you for your kind attention. I am sure that with a little help from you I will manage to make my cab to be tilted from the tiltbob and no for the FP nudges.

Best Regards.

Jorge

Hi Jorge,
I will see if I can help.

To help me understand how does the Tiltbob interact with the computer....does it trigger a switch when it swings.

Does that switch when activated then cause a "keypress" on the computer that you can program ?

And do you wish each keypress activated by the tiltbob to cause a warning?

Which Key on the computer would you like to use ?
 
Last edited:
Hi Jorge,
I will see if I can help.

To help me understand how does the Tiltbob interact with the computer....does it trigger a switch when it swings.
+That´s right!

Does that switch when activated then cause a "keypress" on the computer that you can program ?
+Yes! I fact it will activate a free input in my interface were all the signal form the other buttons go: https://http2.mlstatic.com/D_Q_NP_20258-MLA20186933037_102014-R.webp

And do you wish each keypress activated by the tiltbob to cause a warning?
+YES GIMLI! Exactly this. The warning should nos come from the nudges as up to now. They should come from the toltbob

Which Key on the computer would you like to use ?
+Anyone that is not often used forany other thing in FP. I understood in one of your posts that you used "B" key for bumps. It would be all right but anyway choose any of the ones that is not often used for any other use in FP.

Thank you a lot for your help!

Jorge
 
Jorge I don't see your response ?
 
Dear GIMLI

I responded bellow each of your questions with a ”+” sign before each answer.

I Will copy it bellow this.

Thank you again!

To help me understand how does the Tiltbob interact with the computer....does it trigger a switch when it swings.
+That´s right!

Does that switch when activated then cause a "keypress" on the computer that you can program ?
+Yes! In fact it will activate a free input in my interface where all the signal form the other buttons go: https://http2.mlstatic.com/D_Q_NP_20258-MLA20186933037_102014-R.webp

And do you wish each keypress activated by the tiltbob to cause a warning?
+YES GIMLI! Exactly this. The warning should not come from the nudges as up to now. They should come from the tiltbob

Which Key on the computer would you like to use ?
+Anyone that is not often used forany other thing in FP. I understood in one of your posts that you used "B" key for bumps. It would be all right but anyway choose any of the ones that is not often used for any other use in FP.

Thank you a lot for your help!

Jorge
 
Dear GIMLI

I responded bellow each of your questions with a ”+” sign before each answer.

I Will copy it bellow this.

Thank you again!

To help me understand how does the Tiltbob interact with the computer....does it trigger a switch when it swings.
+That´s right!

Does that switch when activated then cause a "keypress" on the computer that you can program ?
+Yes! In fact it will activate a free input in my interface where all the signal form the other buttons go: https://http2.mlstatic.com/D_Q_NP_20258-MLA20186933037_102014-R.webp

And do you wish each keypress activated by the tiltbob to cause a warning?
+YES GIMLI! Exactly this. The warning should not come from the nudges as up to now. They should come from the tiltbob

Which Key on the computer would you like to use ?
+Anyone that is not often used forany other thing in FP. I understood in one of your posts that you used "B" key for bumps. It would be all right but anyway choose any of the ones that is not often used for any other use in FP.

Thank you a lot for your help!

Jorge
Thanks Jorge that's what I expected. Floating boat right now :)
But I will come up with some suggestions tomorrow
 
is it possible to disable tilt? I mean infinite nudge?
 
@BECHU2002

Here is a "TiltBobTemplate" table it is using "M" on keyboard which is keycode = 50
Try this demo table and see if it works with your tiltbob....
See the image showing keycode assignmentskeycodes.JPG
 

Attachments

  • TiltBobTemplate.fpt
    559 KB · Views: 115
Last edited:
@BECHU2002

Ok I will explain what to do

1. Remove this code from script which is on line 283 of "new table" template

Code:
Sub FuturePinball_TiltWarning(ByVal Warnings)
    'AddDebugText "Tilt Warning" & Warnings

    ' play a sound at this point and put something on a display
End Sub


' The Player has tilted the machine (Too Many Warnings)
'
Sub FuturePinball_Tilted()
    'AddDebugText "**Tilted**"

    ' play a sound
    PlaySound "Tilt"

    ' ensure that the flippers are down (as the keys won't work from now on)
    LeftFlipper.SolenoidOff
    RightFlipper.SolenoidOff

    ' you may wish to turn off any lights at this point. (The Light Sequencer
    ' will make this very easy)

    ' start the tilt recovery timer which waits until all balls have drained
    ' before doing the end of ball sequence (or end of game)
    TiltRecoveryTimer.Interval = 2000
    TiltRecoveryTimer.Enabled    = TRUE
End Sub

2. And Also remove this code around line 609

Code:
Sub TiltRecoveryTimer_Expired()
    ' disable the timer
    TiltRecoveryTimer.Enabled    = FALSE
    ' if all the balls have been drained then..
    If (BallsOnPlayfield = 0) Then
        ' do the normal end of ball thing (this dosn't give a bonus if the table is tilted)
        EndOfBall()
    Else
        ' else retry (checks again in another second)
        TiltRecoveryTimer.Interval = 1000
        TiltRecoveryTimer.Enabled = TRUE
    End If
End Sub

3. Paste this code anywhere in script outside of a "Sub ........... end Sub" routine
Note that I put "exit Sub" under the TiltWarning Routine this prevents the nudge key from tilting the machine....
Code:
Dim Bumps
Bumps = 0

Sub FuturePinball_TiltWarning(ByVal Warnings)
    exit sub
   
End Sub
 


Sub FuturePinball_Tilted()
      If Bumps  < 4 then fpTilted = FALSE: Exit Sub 'this prevents table from tilting until after 4 warnings
        DispDmd1.QueueText "Tilted", seBlink, 100, True
        DispSeg1.QueueText "Tilted", seBlink, 100, True  ' Or whatever you wish to say here
        HudDmd1.QueueText "Tilted", seBlink, 100, True
        HudSeg1.QueueText "Tilted", seBlink, 100, True  ' Or whatever you wish to say here
        PlaySound "Tilted"'
        TiltRecoveryTimer.Interval = 1000
        TiltRecoveryTimer.Enabled   = TRUE
        Bumps = 0
End Sub




Sub TiltWarningRecovery_Expired() 'to Lift tilt warnings and recharge tilt after 5 seconds of gentle play :)
   If Bumps > 3 and fpTilted = FALSE then  'Will only recharge afer you reach critical last warning Bumps = 4
        DispDmd1.QueueText "Recharged", seBlink, 100, True
        DispSeg1.QueueText "Recharged", seBlink, 100, True  ' Or whatever you wish to say here
        HudDmd1.QueueText "Recharged", seBlink, 100, True
        HudSeg1.QueueText "Recharged", seBlink, 100, True  ' Or whatever you wish to say here
        PlaySound "Recharged"
        AddDebugText "R E C H A R G E D"
      Bumps = 0
   End if
   AddDebugText " Bumps" &  Bumps
   AddDebugText "TiltWarningRecovery.Enabled" & TiltWarningRecovery.Enabled
End Sub




' The tilt recovery timer waits for all the balls to drain before continuing on
' as per normal
'
Sub TiltRecoveryTimer_Expired() 'This is the same as FP default code
    ' disable the timer
    TiltRecoveryTimer.Enabled    = FALSE
    ' if all the balls have been drained then..
    If (BallsOnPlayfield = 0) Then
        ' do the normal end of ball thing (this dosn't give a bonus if the table is tilted)
        EndOfBall()
    Else
        ' else retry (checks again in another second)
        TiltRecoveryTimer.Interval = 1000
        TiltRecoveryTimer.Enabled = TRUE
    End If
End Sub

4. Under Sub FuturePinball_KeyPressed(ByVal KeyCode)
copy this code which is assigning "M" on keyboard ( keycode = 50 )
Code:
if keycode = 50 then  'M on keyboard
    Bumps = Bumps + 1
    'Warnings = Bumps
      'AddDebugText "Tilt Warning" & Warnings

    ' play a sound at this point and put something on a display

   TiltWarningRecovery.Set False:TiltWarningRecovery.Set True, 5000 'Allows tilt to recover in 5 seconds
   Select Case (Bumps)' Here is an example if you have 4 warnings chosen
         Case 1:
            DispDmd1.QueueText "Warning 1", seBlink, 100, True
                DispSeg1.QueueText "Warning 1", seBlink, 100, True
                HudDmd1.QueueText "Warning 1", seBlink, 100, True
                HudSeg1.QueueText "Warning 1", seBlink, 100, True  ' Or whatever you wish to say here
            PlaySound "Warning1" 'Add whatever sound you wish...
     
         Case 2:
             DispDmd1.QueueText "Warning 2", seBlink, 100, True
                 DispSeg1.QueueText "Warning 2", seBlink, 100, True  ' Or whatever you wish to say here
             HudDmd1.QueueText "Warning 2", seBlink, 100, True
                 HudSeg1.QueueText "Warning 2", seBlink, 100, True  ' Or whatever you wish to say here
             PlaySound "Warning2"'Add whatever sound you wish...
         Case 3:
                DispDmd1.QueueText "Warning 3", seBlink, 100, True
                DispSeg1.QueueText "Warning 3", seBlink, 100, True  ' Or whatever you wish to say here
            HudDmd1.QueueText "Warning 3", seBlink, 100, True
                HudSeg1.QueueText "Warning 3", seBlink, 100, True  ' Or whatever you wish to say here
            PlaySound "Warning3"'Add whatever sound you wish...
         Case 4:
                DispDmd1.QueueText "Warning 4", seBlink, 100, True
                DispSeg1.QueueText "Warning 4", seBlink, 100, True  ' Or whatever you wish to say here
            HudDmd1.QueueText "Warning 4", seBlink, 100, True
                HudSeg1.QueueText "Warning 4", seBlink, 100, True  ' Or whatever you wish to say here
            PlaySound "Warning4"'Add whatever sound you wish...
            Case 5:
                fpTilted = True:FuturePinball_Tilted():LeftFlipper.SolenoidOff:RightFlipper.SolenoidOff
    End Select
    End if

5. Note the DMD names I used above....you can change the names to the DMD's on your table. For Example "MyDMD.QueueText"

6. Under "Sub ResetForNewPlayerBall()" put Bumps = 0
Code:
Sub ResetForNewPlayerBall()
    Bumps = 0
   
    End Sub

7. Remember to create this Timer in the table editor:
"TiltWarningRecovery"
 
Dear Gimli:

I can´t believe the lot of work that you have made for me. Thank you very much. I hope that many other guys can use this for making improvements to their cabinets too!

I will be trying your demo table probably tomorrow and then I will try to use your instructions to modify any of the tables that I have in my virtual pin so it can be nudged as up to now but only tilted according to the tilt bob. I think that I can follow your instructions and then modify the script of any existing table to work like this.

Thank you again and please be patient with me if I have to ask for any little help when trying to configure this improvement, please.
Have a nice weekend!

Jorge
 
Dear Gimli:

I can´t believe the lot of work that you have made for me. Thank you very much. I hope that many other guys can use this for making improvements to their cabinets too!

I will be trying your demo table probably tomorrow and then I will try to use your instructions to modify any of the tables that I have in my virtual pin so it can be nudged as up to now but only tilted according to the tilt bob. I think that I can follow your instructions and then modify the script of any existing table to work like this.

Thank you again and please be patient with me if I have to ask for any little help when trying to configure this improvement, please.
Have a nice weekend!

Jorge
Hi Jorge,
I hope it works !!
 
Okay, I'm trying to completely disable nudge for a single game.

Looks like the relevant key-input is not handled the way I'm used to.
I.e., can't seem to find the nudge-related keycode lines I was expecting in script (ala VP).

So... should I go in to the XML and try zero-ing out certain values there?
 
General chit-chat
Help Users
You can interact with the ChatGPT Bot in any Chat Room and there is a dedicated room. The command is /ai followed by a space and then your ? or inquiry.
ie: /ai What is a EM Pinball Machine?
  • No one is chatting at the moment.
      Chat Bot Mibs Chat Bot Mibs: roachie has left the room.
      Back
      Top