Locate the line:
Position Object 1,0,3.0,0.0
This is where the snowball starts. As you move around, you position the snowball at the player character's current X,Y,Z position (or the camera's position if you are doing it FPS-style).
Rotate Object 1,330.0,0.0,0.0
This line points the snowball in the required direction ready to fire. So, like when positioning, rotate the snowball up/down with the player/camera.
As I mentioned before, one method of throwing is to have left/right aiming, alog with a power bar. The higher the bar when you press space, the harder (further) you throw in the direction you are facing. (No up/down aiming).
Another method is to have left/right aiming, an up/down display to set the vertical angle and a power meter - a bit like Worms if I remember correctly.
Finally, you also have the option to fix a cross hair in the centre of the screen. When you aim, the up/down angle of the camera would give you the angle to set the snowball.
I'll have a little play while you see what you can come up with yourself...
[Edit] I've modified my first snippet to point you in the right direction. It's not perfect, but should give you some ideas...
Gosub Setup
Do
CX#=Camera Angle X(): CY#=Camera Angle Y(): CZ#=Camera Angle Z()
CY#=Wrapvalue(CY#+mousemovex())
CX#=Wrapvalue(CX#+mousemovey())
Rotate Camera CX#,CY#,CZ#
If Firing=0 Then Set Object To Camera Orientation 1
If Scancode() = 17: Rem W
Move Camera 0.1
Gh#=Get Ground Height(1,Camera Position X(),Camera Position Z())
Position Camera Camera Position X(),Gh#+1.0,Camera Position Z()
Position Object 1,Camera Position X(),Gh#+1.0,Camera Position Z()
Endif
If Scancode() = 31: Rem S
Move Camera -0.1
Gh#=Get Ground Height(1,Camera Position X(),Camera Position Z())
Position Camera Camera Position X(),Gh#+1.0,Camera Position Z()
Position Object 1,Camera Position X(),Gh#+1.0,Camera Position Z()
Endif
If (SpaceKey()=1 Or MouseClick()=1) And Firing=0 Then Firing=1
If Firing=1 Then Gosub Fire_Snowball
Sync
Loop
Fire_Snowball:
Move Object 1,0.4
Inc Gravity#, Acceleration#
NewYVal# = Object Position Y(1) - Gravity#
Position Object 1, Object Position X(1), NewYVal#, Object Position Z(1)
If NewYVal# < -1.0
Position Object 1,Camera Position X(),Camera Position Y(),Camera Position Z()
Set Object To Camera Orientation 1
Gravity# = 0.005
Firing=0
Endif
Return
Setup:
Sync On: Sync Rate 60: CLS
Autocam Off
Hide Mouse
Make Matrix 1,500,500,50,50
CLS RGB(155,155,155)
For N=1 To 1000
C=Rnd(128)
Ink RGB(C,C,C),0
Dot Rnd(245)+5,Rnd(245)+5
Next N
Get Image 1,0,0,256,256
Prepare Matrix Texture 1,1,1,1
Position Matrix 1,-250,0,-250
Make Object Sphere 1,0.2
Gravity# = 0.005
Acceleration# = 0.001
Position Camera 0.0,2.0,0.0
Point Camera 0,2.0,0
Position Object 1,0.0,2.0,0.0
Rotate Object 1,Camera Angle X(),Camera Angle Y(),Camera Angle Z()
Return
TDK