Fulqrum Publishing Home   |   Register   |   Today Posts   |   Members   |   UserCP   |   Calendar   |   Search   |   FAQ

Go Back   Official Fulqrum Publishing forum > Fulqrum Publishing > IL-2 Sturmovik: Cliffs of Dover > FMB, Mission & Campaign builder Discussions

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #13  
Old 04-28-2011, 10:25 PM
Ataros Ataros is offline
Approved Member
 
Join Date: Jun 2010
Location: USSR
Posts: 2,439
Default

I wish I were a part of the dev team and know all the answers

Meanwhile another script destroying abandoned planes from ru forums. Tell me what you think of it.

Code:
using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;

public class Mission : AMission 
{
	private bool isAiControlledPlane (AiAircraft aircraft) 
        {
		if (aircraft == null) 
            { 
			return false;
		    }

		Player [] players = GamePlay.gpRemotePlayers ();
		foreach (Player p in players) 
        {
        if (p != null && (p.Place() is AiAircraft) && (p.Place() as AiAircraft) == aircraft)
            {
            return false;
            }
	    }
		    
		return true;
	    }

	private void destroyPlane (AiAircraft aircraft) 
    {
		if (aircraft != null) { 
			aircraft.Destroy ();
		}
	}

	private void explodeFuelTank (AiAircraft aircraft) 
    {
		if (aircraft != null) 
        { 
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank0Exploded);
			/***
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank1Exploded);
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank2Exploded);
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank3Exploded);
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank4Exploded);
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank5Exploded);
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank6Exploded);
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank7Exploded);
			***/
		}
	}

	private void fuelTankFire (AiAircraft aircraft) 
    {
		if (aircraft != null) 
        { 
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank0Fire);
			/***
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank1Fire);
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank2Fire);
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank3Fire);
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank4Fire);
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank5Fire);
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank6Fire);
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank7Fire);
			***/
		}
	}

	private void destroyAiControlledPlane (AiAircraft aircraft) 
    {
		if (isAiControlledPlane (aircraft)) 
        {
			destroyPlane (aircraft);
		}
	}

	private void damageAiControlledPlane (AiActor actor) 
    {
		if (actor == null || !(actor is AiAircraft)) 
        { 
			return;
		}

		AiAircraft aircraft = (actor as AiAircraft);

		if (!isAiControlledPlane (aircraft)) 
        {
			return;
		}

		if (aircraft == null) 
        { 
			return;
		}

		aircraft.hitNamed (part.NamedDamageTypes.ControlsElevatorDisabled);
		aircraft.hitNamed (part.NamedDamageTypes.ControlsAileronsDisabled);
		aircraft.hitNamed (part.NamedDamageTypes.ControlsRudderDisabled);

		aircraft.hitNamed (part.NamedDamageTypes.FuelPumpFailure);
		// aircraft.hitNamed (part.NamedDamageTypes.Eng0TotalFailure);
		// aircraft.hitNamed (part.NamedDamageTypes.Eng1TotalFailure);

		/*** Tank fire doesn't work after engine total failure - ???
		Timeout (15, () =>
				{fuelTankFire (aircraft);}
			);
		***/

		/*** Cool, but kills fps
		Timeout (25, () =>
				{explodeFuelTank (aircraft);}
			);
		***/

		Timeout (90, () =>
				{destroyPlane (aircraft);}
			);
	}

//////////////////////////////////////////////////////////////////////////////////////////////////

	public override void OnPlaceLeave (Player player, AiActor actor, int placeIndex) {
		base.OnPlaceLeave (player, actor, placeIndex);
		Timeout (1, () =>
				{damageAiControlledPlane (actor);}
			);
	}

	public override void OnAircraftCrashLanded (int missionNumber, string shortName, AiAircraft aircraft) {
		base.OnAircraftCrashLanded (missionNumber, shortName, aircraft);
		Timeout (30, () =>
				{destroyAiControlledPlane (aircraft);}
			);
	}
	
	/**
	public override void OnAircraftTookOff (int missionNumber, string shortName, AiAircraft aircraft) {
            base.OnAircraftTookOff (missionNumber, shortName, aircraft);
	    ...
        }
	**/	
}
Quote:
Originally Posted by SYN_Bliss View Post
for instance, lets say you want an ongoing war, how are you going to stop it from going into the night?
I think just like in real life you order (with a script) your units to rtb when it is getting dark. Then they have a rest till early morning.

Quote:
Originally Posted by mcler002 View Post
But as we dont know how to do this via scipt, i was woundering is we could do it through the .mis file...
I think you can stop mission with a script like you can stop real life: kill all units, stop time and that's it.

Quote a Dev:
Quote:
Выгрузить - это сложно, миссия же может по скрипту кого-то нарожать, что-то в себя подгрузить и т.д
"To unload (a mission) - it is difficult, because a mission can give birth to something using scripts, upload smth into itself, etc."

My guess is you can switch server off, but you can not unload a mission as you can not unload life as it gives birth to smth This is not a game this is real life simulator.

Last edited by Ataros; 04-28-2011 at 10:49 PM.
Reply With Quote
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 11:43 PM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © 2007 Fulqrum Publishing. All rights reserved.