Hi, I made a few minor changes to your code and got it to work, I have commented what I changed.
Rem ***** Main Source File *****
`Setup
Hide Mouse
Sync On
Sync Rate 60
AutoCam Off
Position Camera 0,0,0,-20
Backdrop On
Color Backdrop 0
Make Light 1,
Position Light 1,0,0,-25
`Setup Variables
Player1Score=0
Player2Score=0
`Make Paddles and Set Collision
Make Object Box 1,.5,4,1:Color Object 1, RGB(255,255,255):Set Object Collision On 1
Make Object Box 2,.5,4,1:Color Object 2, RGB(255,255,255):Set Object Collision On 2
`Make Ball and Set Collision
Make Object Sphere 3,.8:Color Object 3, RGB(255,255,255):Set Object Collision On 3
YRotate Object 3,90
`Make Middle Line (No Collision, Mainly For Show)
Make Object Box 4,.1,25,.1:Color Object 4, RGB(255,255,255)
`Make Border Lines
`Top Border
Make Object Box 5,35,.1,.1:Color Object 5, RGB(255,255,255):Set Object Collision On 5:Position Object 5,0,12,0
`Bottom Border
Make Object Box 6,36,.1,.1:Color Object 6, RGB(255,255,255):Set Object Collision On 6:Position Object 6,0,-12,0
`Right Border
Make Object Box 7,.1,25,.1:Color Object 7, RGB(255,255,255):Set Object Collision On 7:Position Object 7,16,0,0
`Left Border
Make Object Box 8,.1,25,.1:Color Object 8, RGB(255,255,255):Set Object Collision On 8:Position Object 8,-16,0,0
`After Point Is Scored, Reset Positions/Ball Angle
gosub reset // Hodgey's Edit (call subroutine, see below)
`Main Loop
Do
If BallAngle2#<>0
BallAngle#=BallAngle2#
Endif
`Set Controls For Player 1
If UpKey()=1 and Player1X#<10
Move Object Up 1,.3
Inc Player1X#,.3
Endif
If DownKey()=1 and Player1X#>-10
Move Object Down 1,.3
Dec Player1X#,.3
Endif
`Set Controls For Player 2
If KeyState(17)=1 and Player2X#<10
Move Object Up 2,.3
Inc Player2X#,.3
Endif
If KeyState(31) and Player2X#>-10
Move Object Down 2,.3
Dec Player2X#,.3
Endif
`Set Ball Movement
Move Object 3,.2
`State Moving Collision For Player 1
If Object Collision(3,1)=1
BallAngle2#=(wrapvalue(BallAngle#+180)) // Hodgey's Edit (used wrapvalue()
If Upkey()=1
XRotate Object 3,WrapValue((360+BallAngle2#)-8)
Endif
If DownKey()=1
XRotate Object 3,WrapValue((360+BallAngle2#)+8)
Endif
If Upkey()=0 and Downkey()=0
XRotate Object 3,WrapValue(360+BallAngle2#)
Endif
Endif
`State Moving Collision For Player 2
If Object Collision(3,2)=1
BallAngle2#=((360-BallAngle#)+180)
If KeyState(17)=1
XRotate Object 3,WrapValue((360+BallAngle2#)+8)
Endif
If KeyState(31)=1
XRotate Object 3,WrapValue((360+BallAngle2#)+8)
Endif
If Keystate(17)=0 and Keystate(31)=0
Xrotate Object 3,WrapValue(360+BallAngle2#)
Endif
Endif
Sync
Loop
Reset: // Hodgey's Edit (moved down here)
// `Position Paddles
Position Object 1,15,0,0
Position Object 2,-15,0,0
// `Variables For Position
Player1X#=0
Player2X#=0
BallY#=0
// `Ball Angle Variable
BallAngle#=0
BallAngle2#=0
return // Hodgey's Edit (created a subroutine)
The thing that seemed to make the difference is the wrapvalue command but I don't know why because if you compare what the wrapvalue command does and your code, they both do the same thing. Also, it accepts your code with your second collision test but not your first.
Something to think about but atleast its working now
A clever person solves a problem, a wise person avoids it - Albert Einstein