SUBSIM Radio Room Forums

SUBSIM Radio Room Forums (https://www.subsim.com/radioroom/index.php)
-   SH5 Mods Workshop (https://www.subsim.com/radioroom/forumdisplay.php?f=249)
-   -   [TEC] Crew Scripting (https://www.subsim.com/radioroom/showthread.php?t=163616)

kapitan_zur_see 03-09-10 12:47 PM

this thread is of top interest!
I can't thank you enough for sharing your knowledge, Heretic :know:
Hell I could kiss you...


Hey, point that torpedo somewhere else!! :stare:

Heretic 03-09-10 01:43 PM

Moving people around

Wp:Teleport("waypoint"); Instantly teleports actor to the waypoint
Wp:Goto("waypoint"); actor walks to the waypoint.

If the waypoint you're trying to reach is in another room, the actor will reach the transition waypoint, go into the crucifiction pose (default unanimated postion), and teleport to the transition waypoint in the next room. Looks goofy. It's better to take control and only goto the transition waypoint, then teleport to the next room and continue from there.

Example: I want the WO to move from the control room ladder (CR_Stairs) back to his regular position in the fore quarters.

Rather than doing this:
Quote:

Wp:Goto("QRF_Watch");
It looks better to do this:
Quote:

Wp:Goto("CR_WP08_DOOR");
Wp:Teleport("RR_WP01_DOOR");
Wp:Goto("QRF_Watch");
CR_WP08_DOOR is the waypoint in the control room next to the foreward hatch. RR_WP01_DOOR is the waypoint on the other side of the hatch. Ideally we'd perform an animation there to have him duck thru the hatch, but we don't have one that'll work.

Generally, when you want to move people around, it's best to find out where they are first. You don't want to trigger your new sequence if he's already there, right? Wp:IsCurrentWaypoint("waypoint") will tell you that.

For the example above, we'd only want the WO to walk from the ladder if that's where he's currently located, so we put our move logic into an if statement conditioned off his current waypoint. If he's not at CR_STAIRS, it won't be executed. I've highlighted the syntax.

Quote:

if Wp:IsCurrentWaypoint("CR_STAIRS") then
{
Wp:Goto("CR_WP08_DOOR");
Wp:Teleport("RR_WP01_DOOR");
Wp:Goto("QRF_Watch");
}
endif;

It's sometimes preferable to use 'not' logic on that check. Suppose I want to send the WO to waypoint WT_CR02 on the bridge when surfaced. I don't care where he's currently at, if he's not on the bridge. An exclamation point in front of the check reverses the logic. So !Wp:IsCurrentWaypoint("waypoint") means not at that waypoint. If he's aready there, we'll add an else condition and have him perform the appropriate animation.

Quote:

if !Wp:IsCurrentWaypoint("WT_CR02") then
{
Wp:Teleport("WT_CR02");
}
else
{
Wp:PlayAnimationAndWait( "WT_CR02_Contact01_7A" ); <--- this is the 'mad pointer' animation, btw
}
endif;
The if check is also where you should perform any uniform changes and whatnot. Let's give him binoculars and since his default torso already show binoculars around his neck, we'll swap his torso for a similar one without them. When we bring him back, we'll have to remember to swap them back.
Quote:

if !Wp:IsCurrentWaypoint("WT_CR02") then
{
Wp:Teleport("WT_CR02");
Wp:SetBodyPartVisibility("object1_Binocular", 1);
Wp:SetBodyPartVisibility("D_Torso03", 0);
Wp:SetBodyPartVisibility("D_Torso01", 1);
}
else
{
Wp:PlayAnimationAndWait( "WT_CR02_Contact01_7A" );
}
endif;

LukeFF 03-10-10 04:09 AM

Quote:

Originally Posted by Therion_Prime (Post 1302214)
http://img532.imageshack.us/img532/8739/jobsb.jpg

Notice: Deck gun and flak loader 1 and 2

Very interesting. I'd definitely like to see more deck gun and flack gun crewmen on deck.

JotDora 03-10-10 05:40 AM

Thanks for patiently updating this thread. Im reading all your statements very carefully, to build up know-how.

I'm a programmer (leading a team of programmers) so scripting should not be a problem.

Thanks again for your time and for sharing your knowledge!

Greetings from germany

JotDora

urfisch 03-10-10 06:37 AM

please keep us informed! this topic is very, very promising!

:yeah:

oscar19681 03-10-10 11:16 AM

Quote:

Originally Posted by Dowly (Post 1304140)
Haha! :haha:

I think Heretic will be the first to do this. I'm in middle of 1xTC patrol and will not start looking into files before I've finished that. :03:

See ya in 5 months then.

Therion_Prime 03-10-10 12:51 PM

Quote:

Originally Posted by GermanGS (Post 1303109)
Please describe the steps of how you done it

Just open the main submarine *.gr2 with the goblin editor and it will load all "child" gr2s automatically. i.e. ..\SH5\data\Submarine\NSS_Uboat7a\NSS_Uboat7a.GR2

kapitan_zur_see 03-11-10 09:27 AM

How do you make it to show the result of a script editing without having to restart the entire game from desktop to loading a patrol?

I can't make the game to sort of "reload" my saved script whilst staying ingame? I tried with the AI debugger script editor using the "reload script" function, but no luck, except it messes the AI debugger itself and end up showing CR_NAV_IDLE in the CR_HF tree and causing CTD.

Do you always have to start all the game through to take a new script in effect? painfull!!!

Heretic 03-11-10 10:13 AM

I've always restarted between changes. Takes a while, but I guess I have a high tolerance for such things. I looked through the script editor but couldn't see anything that looked like it applied to Crew AI. Looks like you've found some way to at least view it? I'd be very interested in learning that. Perhaps I'd be able to find more functions.

kapitan_zur_see 03-11-10 10:59 AM

Quote:

Originally Posted by Heretic (Post 1308515)
I've always restarted between changes. Takes a while, but I guess I have a high tolerance for such things. I looked through the script editor but couldn't see anything that looked like it applied to Crew AI. Looks like you've found some way to at least view it? I'd be very interested in learning that. Perhaps I'd be able to find more functions.

Simply open ingame the AI script debugger, not the script manager, using windows taskbar. select "crew" in the first menu called "select unit type", then in the "select unit" one, scroll down to "CR_HF" for example. But it doesn't show much if anything at all.

I'm stuck trying to find a way editing anims in gmax or 3dsmax though. And that goblin editor is nothing but a controller parameters editor, you can't move objects, can't add waypoints and most importantly, you can't ADD controllers also! more of a viewer than anything else... A tweaker, shall we say. It looks powerfull at first sight, but it's very restrictive

Heretic 03-12-10 11:07 AM

Quote:

Originally Posted by kapitan_zur_see (Post 1308602)
Simply open ingame the AI script debugger, not the script manager, using windows taskbar. select "crew" in the first menu called "select unit type", then in the "select unit" one, scroll down to "CR_HF" for example. But it doesn't show much if anything at all.


Thanks! I don't know if it's of any use as a real-time script tweaker, seems to always crash. But it's a great debugger because it shows the values in the variables. Very handy.

piri_reis 03-12-10 11:34 AM

Quote:

Originally Posted by kapitan_zur_see (Post 1308602)
you can't move objects, can't add waypoints and most importantly, you can't ADD controllers also! more of a viewer than anything else... A tweaker, shall we say. It looks powerfull at first sight, but it's very restrictive

Using GE, I haven't found a way to move points or play around with the meshes.. But you can definitely add controllers. The easiest being the free camera optics. Done it myself.

Some Modders are sure to be using this to add/modify controllers, as we speak .

GermanGS 03-12-10 02:39 PM

Quote:

Originally Posted by Therion_Prime (Post 1306490)
Just open the main submarine *.gr2 with the goblin editor and it will load all "child" gr2s automatically. i.e. ..\SH5\data\Submarine\NSS_Uboat7a\NSS_Uboat7a.GR2

Thanks Alot it really helps to see were i want the crew to go to.

Heretic 03-22-10 01:17 PM

Working with sound files

Wp:PlayAttenuatedSoundWithLipsync("file", delay);
Wp:PlaySoundWithLipsync("file", delay);

These two functions work the same, with PlaySoundWithLipsync having the same volume regardless of distance, and PlayAttenuatedSoundWithLipsync having the volume fade over distance.

You can play any ogg file with these functions. I haven't tried mp3 but wav files definitely don't work. The "file" component is the path name within the speech folder followed by the file name without the extension. The delay variable tells how long, in seconds, to delay before playing the sound, so you can sync it up with a movement, tie multiple sounds together etc.

Quote:

Wp:PlayAttenuatedSoundWithLipsync("ChiefEngineer\N ormal\MC_CR_CHIEF_53", 15.0); # "fore planes"
Wp:PlayAttenuatedSoundWithLipsync("ChiefEngineer\N ormal\MC_CR_CHIEF_140", 16.4); # "eight"
Wp:PlayAttenuatedSoundWithLipsync("ChiefEngineer\N ormal\MC_CR_CHIEF_55", 17.2); # "degrees down"
Note that the delay is from the first command. Each character can only be playing one sound at a time, it you set the delay too low, and the previous sound isn't finished, the sound won't play. The German and English speech files are not exactly the same length, so you should test with both to make sure it works ok in both versions.

You can't play any of the sounds other than those in the speech folder. There's ways around that though. Just copy the sound you want, convert it to an ogg, then put it in the speech folder.

I used the helmsman to 'speak' the dive alarm bell when the dive command is given. I used the non-attenuated version, so the sound isn't localized. I copied the Submarine Bell.wav file from the sounds folder, used an audio editor to loop it three times so it'd play longer, then saved it as an ogg. Note, you can't have spaces in the file name.

Quote:

Wp:PlaySoundWithLipsync("MFCM\Submarine_Bell", 0.0);

Heretic 03-22-10 01:29 PM

Using Global Variables.

Wp:SetGlobalVariable(variable, value)
Wp:GetGlobalVariable(variable)

Sometimes it's useful to use a variable to control things in your script. The tutorial strategies use this to control things. The interaction between the cook and bosun are also controlled by variables. Variable values are stored with the save game.

You add a new variable to file init.aix. Increment the index by one for each variable you add. These variables are single digit only 0-9. I haven't tried letters.
Quote:

VAR_SQ_BOSUN_STATE = 13;
VAR_CR_NAV_STATE = 14;
VAR_CR_CHIEF_STATE = 15;
VAR_CR_SO_STATE = 16;
VAR_CR_SO_KILL_COOK_TRIGGER = 17; <-- here's our new entry
To set the variable:
Quote:

Wp:SetGlobalVariable(VAR_CR_SO_KILL_COOK_TRIGGER, 1);
To check the variable:
Quote:

if Wp:GetGlobalVariable(VAR_CR_SO_KILL_COOK_TRIGGER) == 1
{
Wp:PlayAnimationAndWait( "Use_Machete_on_Cook" );
}
endif;

KarlSteiner 04-01-10 09:39 AM

Thanks
 
Hi Heretic,

thanks to your geat work and information about the Crew-animations e.t.c..:up::up::up:

We in Germany say: SH5 is a banana-product. It ripes under at the clients.

Thanks to you the banana grows riper!


Best regards

Karl :rock:
My poor work for SH3:

http://forums-de.ubi.com/eve/forums/a/tpc/f/2371008762/...431054756#9431054756

http://forums.ubi.com/eve/forums/a/t...756#6011016756

THE_MASK 06-13-12 01:21 AM

Quote:

Originally Posted by Therion_Prime (Post 1302334)
Ok, i found out how to load a sub into the goblin editor and display waypoints. Lots of stuff can be adjusted here:
http://img709.imageshack.us/img709/7528/wpchief.jpg

You can barely see the chiefs waypoint on the white collision floor to the right. Now I have to figure out how to move it and how to add more waypoints.

anyone know how i get the dropdown box to work with windows 7 ? It just flickers .

TheDarkWraith 06-13-12 06:15 AM

Quote:

Originally Posted by sober (Post 1896879)
anyone know how i get the dropdown box to work with windows 7 ? It just flickers .

Right click on the exe file and select Properties. Under the compatibility tab ensure Disable visual themes is checked :up:

THE_MASK 06-13-12 06:40 AM

Quote:

Originally Posted by TheDarkWraith (Post 1896942)
Right click on the exe file and select Properties. Under the compatibility tab ensure Disable visual themes is checked :up:

thanks .

gap 06-13-12 06:42 AM

Quote:

Originally Posted by sober (Post 1896879)
anyone know how i get the dropdown box to work with windows 7 ? It just flickers .

Quote:

Originally Posted by TheDarkWraith (Post 1896942)
Right click on the exe file and select Properties. Under the compatibility tab ensure Disable visual themes is checked :up:

Thank you Sober for asking and TDW for answering. :up:

Until now I thought that this flickering issue was only my problem :oops:


All times are GMT -5. The time now is 02:27 PM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © 1995- 2025 Subsim®
"Subsim" is a registered trademark, all rights reserved.