PDA

View Full Version : Sick of playing 'Russian Roulette' in the COD FMB


dflion
08-15-2011, 11:32 AM
With the excellent help of ‘Stiboo’, I am finally ‘cracking’ the BOF FMB to make working campaigns.
I have been working ‘slowly and surely’ on creating a generic CS file to add to each mission in my ‘BOF single mission/campaign’ and create a proper campaign. I was successful, or was I???

I discovered that there was a generic CS file in the ‘IC German campaign’ which allowed the ‘success’ or ‘failure’ trigger for each campaign mission completed. All you had to do was change the mission name and number in each CS file. What it did not allow, was that if you got to say, mission 5 and you wanted to leave the flight sim, when you came back, it would not start at mission 6??? You had to revert back to the start of the campaign!

These are the issues with the COD FMB that I am sick of playing ‘Russian Roulette’ with, they are –
1. IC should provide a proper generic basic CS file to indicate the campaign mission file a ‘success’ or ‘failure’ and let each successful mission save, so you can pick-up the next mission if you leave the sim.
2. There should also provide a generic ‘completed campaign’ CS file when you successfully complete the campaign.
3. Finally they should provide a generic CS file that allows aircraft to takeoff from another airfield after the original mission takeoff time.

These are the basic CS FMB files that Luthier and his team (or a gifted member programmer) need to give us to keep the vitally important FMB providing good campaign interest in COD. If this doesn’t happen, the sim will slowly die from lack of interest in the FMB area!

I hope you get this very clear message Luthier and Team? (I know you are all very busy on other issues)

DFLion

esmiol
08-15-2011, 02:23 PM
they should give doc about the FMB in fact :)

dflion
08-16-2011, 06:46 AM
I have just downloaded 'The Enlightened Florist's' Dynamic campaigns to check them out? He is doing a great job, under difficult circumstances!

I noticed he mentioned that at the start of the campaign, you have to press 'A' (autopilot) to get your wingman to fly. This problem applys to all my single mission campaigns and has to be fixed by 'Luthier and Team' soon?

The other issue that 'Luthier and Team' need to seriously think about is the 'aircraft warm-up time' at the start of each campaign mission. Because most early WWII fighters from both sides had their 'fitters' already warming-up the engine for an instant takeoff. There needs to be some type of 'option button' for instant warm-up for an instant takeoff!
To help solve the problem in my campaigns, I have placed 'you' the mission flying pilot at the rear of your flight/squadron to give you some time to warm up your engine before takeoff?

DFLion

FG28_Kodiak
08-16-2011, 06:51 AM
For the warm up there is a simple solution, set the Airgroup on idle (true), make a script in which you set the idle on false after a specific time. So the player has enough time for warming up.

dflion
08-16-2011, 07:11 AM
Thanks FG28_Kodiak, do it and attach a 'script' copy.

DFLion

FG28_Kodiak
08-16-2011, 08:19 AM
using System;
using maddox.game;
using maddox.game.world;
using System.Diagnostics; // for Stopwatch timer

public class Mission : AMission
{

Stopwatch PlayerGroupIdleTimer = new Stopwatch();
const int PlayerAirgroupIdleTimeMinutes = 3; // 3 minutes for player to warm up his engine

public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex)
{
base.OnPlaceEnter(player, actor, placeIndex);

AiAircraft airc1 = (AiAircraft)GamePlay.gpPlayer().Place();

PlayerGroupIdleTimer.Start();

if (!airc1.IsAirborne())
{
airc1.AirGroup().Idle = true;
GamePlay.gpHUDLogCenter(player.Name() + " warm up your engine");
}

}

public override void OnTickGame()
{
base.OnTickGame();

//check mission timers
if (PlayerGroupIdleTimer.Elapsed.Minutes >= PlayerAirgroupIdleTimeMinutes)
{
PlayerGroupIdleTimer.Reset(); //Set timer to 0
PlayerGroupIdleTimer.Stop();

AiAircraft airc1 = (AiAircraft)GamePlay.gpPlayer().Place();
airc1.AirGroup().Idle = false;
}
}
}

dflion
08-17-2011, 07:19 AM
Thanks for doing this Kodiak, I will experiment with this script and see what happens? Will give you some feedback as soon as possible.

DFLion

dflion
08-19-2011, 06:00 AM
How are you Kodiak. I have combined your 'time script' with the 'mission sequencing script' and everything seems to be ok, although sometimes it is intermittent (it sometimes works and somestimes not).

Just to get the function of the script clear in my head. When you start the mission, your wingman and leader go straight onto autopilot, then they wait for three minutes before they take-off, giving you time to warm-up your engine. You then take-off when they take-off. Is my explanation right, on what you are trying to do with the script?

With this three minute mission lag before takeoff, you have to adjust everything in the mission to occur 3 minutes later, for everything to coincide.

Anyway, thankyou again for your help and if don't agree in what I am saying above, let me know.

DFLion

FG28_Kodiak
08-19-2011, 06:29 AM
Just to get the function of the script clear in my head. When you start the mission, your wingman and leader go straight onto autopilot, then they wait for three minutes before they take-off, giving you time to warm-up your engine. You then take-off when they take-off. Is my explanation right, on what you are trying to do with the script?

First i look in which Aircraft the player is.
AiAircraft airc1 = (AiAircraft)GamePlay.gpPlayer().Place();

Then i start the Stopwatch, you can use a trigger or Time.tickCounter() also, its only a example.
PlayerGroupIdleTimer.Start();

Then check if plane is airborne (if it airborne its a bad idea to set it on idle ;))
if (!airc1.IsAirborne())
{
If the plane is not airborne, i set the complete player airgroup on idle, it's the same you set the idle state in FMB
airc1.AirGroup().Idle = true;
then a short message for the player
GamePlay.gpHUDLogCenter(player.Name() + " warm up your engine");
}

later in OnTickGame i set the AirGroup().Idle = false; so the AI will make it's job ;)

Mysticpuma
08-19-2011, 06:53 AM
I see Mission Building is going to be for script experts only...how sad :(

I used to enjoy maing short missions in 1946, this looks like computer coding, which for me is totally out of my league :(

Good luck to you experts, cheers, MP

FG28_Kodiak
08-19-2011, 07:22 AM
I see no problem.
If you need a script for a mission simply ask.

May be we need some scripting corner, to bring mission builders and coders together.

Mysticpuma
08-19-2011, 08:29 AM
Hi Kodiak, thanks for the reply. I think the scripting, once the dedicated Mission and Campaign Builders get fully to grips with it, will be an incredible asset, it's just that for me and others who like to make something on the odd occasion, it looks like there is a huge learning curve which is a shame for coding/scripting novices. I am sure though, that as more is discovered, many requests will be made to the experts! Cheers, MP

41Sqn_Banks
08-19-2011, 08:51 AM
You don't need any scripting for the things that were possible with IL-2: Sturmovik 1946 with exception of victory conditions. The only thing that is different now is how spawning of units is delayed, this is now done by triggers and actions, still no scripting needed.

SNAFU
08-19-2011, 09:39 AM
Jepp, if triggers and actions would work in multiplayer without the backup of scripts...:rolleyes:

dflion
08-19-2011, 10:38 PM
First i look in which Aircraft the player is.
AiAircraft airc1 = (AiAircraft)GamePlay.gpPlayer().Place();

Then i start the Stopwatch, you can use a trigger or Time.tickCounter() also, its only a example.
PlayerGroupIdleTimer.Start();

Then check if plane is airborne (if it airborne its a bad idea to set it on idle ;))
if (!airc1.IsAirborne())
{
If the plane is not airborne, i set the complete player airgroup on idle, it's the same you set the idle state in FMB
airc1.AirGroup().Idle = true;
then a short message for the player
GamePlay.gpHUDLogCenter(player.Name() + " warm up your engine");
}

later in OnTickGame i set the AirGroup().Idle = false; so the AI will make it's job ;)

Your explanation gives me the background on what you did, so I now better understand how your script works. I will again experiment with a mission today and make any changes required to get it working properly. Will keep you posted in this post on how I am going? Stiboo is also helping me with this.

Good to see you on here MP, we are all working hard to get some good missions/campaigns working properly and it is a very steep learning curve without any official documentation!

DFLion