View Single Post
  #68  
Old 04-28-2011, 09: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 09:49 PM.
Reply With Quote