Just and idea : Scripted Camera.

Post » Fri Nov 05, 2010 7:09 am

Ok great. As long as it applies the voice filtering for those things, so I don't have to dink around in a sound program trying to make them sound that way. Thanks for all your help. I will mess around with the camera thing until I have completed the cell it takes place in. It should actually provide for a very cool, Fallout 3/NV style trailer that I think everyone will enjoy watching. Though it will be ingame,(Instead of pre rendered CGI) so lower quality. But I have a nice computer/GPU so can put it on max, with full quality high res video and the like.
User avatar
tannis
 
Posts: 3446
Joined: Sat Dec 09, 2006 11:21 pm

Post » Thu Nov 04, 2010 11:42 pm

Ok I am finally going to start slowly scripting this. I am using Cipscis's method of incrementing by GetSecondsPassed, and I have the first 2 seconds of it set up mostly correctly so far. My only issue, is that http://geck.gamesas.com/index.php/SetAngle is not working... Since I am doing this with some help from the console, and the player will actually never have this run (nor is it included in what will be the public version of the mod) it makes it easier. I call TM to hide menu's, then TCL so the player doesnt fall because of gravity, then start the quest which starts the script running that controls all of this. I call Setangle on the player, but it does not angle their camera at all... could TCL be stopping this from occuring? If so that kinda blows up the entire thing and I am done, because as far as I can tell its the only way to stop gravities effect on the player. What else would be stopping it from working? Heres the line where its called.

Player.Setangle X 30


Thats all typed right, right? It doesnt warn me when I save the script. I should be using X and 30 should angle it down a bit. But the camera stays angled at 0. Can anyone help?
User avatar
Nick Jase Mason
 
Posts: 3432
Joined: Sun Jul 29, 2007 1:23 am

Post » Thu Nov 04, 2010 5:30 pm

http://geck.gamesas.com/index.php/ToggleCollision shouldn't affect how http://geck.gamesas.com/index.php/SetAngle works on the player, so I wouldn't expect that to be a problem. Are you certain that the line is being executed?

When it comes to rotating the player, as opposed to just setting them to a particular rotation, http://geck.gamesas.com/index.php/Rotate could come in quite handy.

Cipscis
User avatar
Elle H
 
Posts: 3407
Joined: Sun Aug 06, 2006 3:15 am

Post » Fri Nov 05, 2010 12:32 am

Yea I am sure its being called. Its there with a bunch of other things to move the player around and such, and all that happens, which means it MUST be running the setangle line as well. As for Rotate, in this specific instance, I need the players camera instantly down at 30 degrees. And I'm not sure how that will work for the rest of it, because I will probably be rotating on more than once axis at once in some frames, which it says I cannot do. So if TCL is not affecting it, what the heck is stopping it from working?
User avatar
Stephanie Nieves
 
Posts: 3407
Joined: Mon Apr 02, 2007 10:52 pm

Post » Fri Nov 05, 2010 7:52 am

I tried to set the player X angle via script and tcl toggled off and it worked. I did not have tm off though as I needed it to start the test script I used. If you are using a staged timer, try putting the SetAngle X command in the next stage and see if that will help.
User avatar
FITTAS
 
Posts: 3381
Joined: Sat Jan 13, 2007 4:53 pm

Post » Thu Nov 04, 2010 6:04 pm

Next stage? Like have it run two instantly, one frame after another, then continue? I suppose I could try that... Here is my script so far. And dont comment on how screwed up it is when it comes to the stages, I know it very repetative and stupid and I will be fixing that. I made this last night at 3am so I was tired and it shows. :P So ignore its overall layout and madness please.

scn GTScriptshort stagefloat timerBegin Gamemode	If Timer > 0		Set Timer to Timer - GetSecondsPassed	Elseif stage == 0		Set stage to 1	Elseif stage == 2		Set stage to 3	Elseif stage == 4		Set stage to 5	EndIf	If stage == 1		Set stage to 2		Set Timer to 3		Player.moveto GTPlayerStart		Player.Setangle X 30	Elseif stage == 3		GenesisTrailerRadio.activate player		set stage to 4		set timer to 2	Elseif stage == 5	EndifEnd


So should I have it advance stage then set the angle, then advance it again instantly and set the timer instead of doing both those at once under stage == 1? Everything there works just fine except the angling of the camera. Under stage 5, (which once I fix will be 3) is where the camera will start to pan back, and I will be using SetAngle some more to start tilting the camera around. So if I have to do it in another stage, it will make every step of this twice as long and like double the scripts size -_- I run this by entering the cell it happens in, and entering the following 3 commands into the console, respectively; Tm, Tcl, and Startquest GT. Then dont hit any buttons at all and it does its thing. I will try running it in another stage though, see if that works. -_-
User avatar
Joe Bonney
 
Posts: 3466
Joined: Tue Jul 17, 2007 12:00 pm

Post » Thu Nov 04, 2010 8:06 pm

From the MoveTo wiki page:

If this function is used to move the player, the function will queue up a movement request which will NOT process immediately and will NOT halt script execution.


That could be the reason that the SetAngle is not working properly. I haven't tried this, but perhaps using the SetAngle before the MoveTo in the same stage might also work.

EDIT: after testing a bit, I have decided that placing the SetAngle first won't help either. It seems that since the Moveto is queued, the setangle processes then the moveto resets the X angle. So you are going to have to wait a few frames until the MoveTo completes before using the SetAngle.

Edit2: To make it as quick as possible check to see if the player's Xpos = your xmarkers Xpos as a condition for the next stage. Do the same thing with the Y values too if the X check isn't enough. In my testing, what the player reported as his X/Y coordinates was off by 0.01, so perhaps an exact fit isn't possible or it was just a rounding issue.
User avatar
Roberta Obrien
 
Posts: 3499
Joined: Tue Oct 23, 2007 1:43 pm

Post » Fri Nov 05, 2010 9:18 am

Ok what I will do then, is have two scripts. One run the seconds i start the quest, to move my guy in place. Then I will set the stage to 1 with console, and that will tilt the camera, then start the whole scripted movement. It will be a relatively simply fix I suppose. Thanks for testing all this, I will let you know if it still wont work.
User avatar
Mistress trades Melissa
 
Posts: 3464
Joined: Mon Jun 19, 2006 9:28 pm

Post » Fri Nov 05, 2010 4:00 am

I don't think you need another script. Try this:

scn GTScriptshort stagefloat timerBegin Gamemode	if timer > 0		set timer to timer - GetSecondsPassed	elseif stage == 0		Player.MoveTo GTPlayerStart		; if necessary, add a short delay before the next stage here, like:		; set timer to 0.1		set stage to 1	elseif stage == 1		Player.SetAngle X 30		set timer to 3		set stage to 2	elseif stage == 2		GenesisTrailerRadio.Activate Player		set stage to 0		ResetQuest GT	endifEnd

User avatar
Angelina Mayo
 
Posts: 3427
Joined: Wed Jan 24, 2007 4:58 am

Post » Fri Nov 05, 2010 8:48 am

HugePinball is right, you don't need a new script, just a small delay. My earlier ramblings were just a method to determine the minimum delay by checking if the player (camera) was in position before executing the SetAngle. But you don't need a complex set of checks if you can get away with putting in a small delay like 0.1 like he offered. All you are trying to do here is pause the script execution long enough for the MoveTo to finish.
User avatar
Spencey!
 
Posts: 3221
Joined: Thu Aug 17, 2006 12:18 am

Post » Thu Nov 04, 2010 6:03 pm

Alright, I will try that. My brains are scrambled right now for some reason so most of my scripting is garbage. :P
User avatar
Alycia Leann grace
 
Posts: 3539
Joined: Tue Jun 26, 2007 10:07 pm

Previous

Return to Fallout 3