Official Fulqrum Publishing forum

Official Fulqrum Publishing forum (http://forum.fulqrumpublishing.com/index.php)
-   FMB, Mission & Campaign builder Discussions (http://forum.fulqrumpublishing.com/forumdisplay.php?f=203)
-   -   Feature Request: Despawn AI aircraft Command (http://forum.fulqrumpublishing.com/showthread.php?t=23033)

Ataros 05-20-2011 12:01 PM

If you want to destroy aircraft loaded by submissions do not forget to include
Code:

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

    //Listen to events of every (sub)mission
    public override void Init(maddox.game.ABattle battle, int missionNumber)
    {
        base.Init(battle, missionNumber);
        MissionNumberListener = -1; //Listen to events of every mission
    }

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

I made that mistake. Thanks to ZaltysZ for correcting it in my script!

SYN_Flashman 05-20-2011 12:22 PM

Quote:

Originally Posted by Ataros (Post 286089)
If you want to destroy aircraft loaded by submissions do not forget to include
Code:

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

    //Listen to events of every (sub)mission
    public override void Init(maddox.game.ABattle battle, int missionNumber)
    {
        base.Init(battle, missionNumber);
        MissionNumberListener = -1; //Listen to events of every mission
    }

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

I made that mistake. Thanks to ZaltysZ for correcting it in my script!

How do I use this piece of script, do I just copy and paste it into mt script or do I need to make any changes?

Ataros 05-20-2011 12:27 PM

@ Flashman
Just copy and past anywhere you like. You can always check out my recent script in Online Missions go here thread.


@all
It seems like this script I use does not destroy ships loaded by a submission. Other ground units are destroyed as intended. What can be wrong? IIRC ships belong to AiGroundActor

Code:

    //Ground objects (except AA Guns) will die after 55 min when counted from their birth

    public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
    {
        base.OnActorCreated(missionNumber, shortName, actor);
        //Ground objects (except AA Guns) will die after 55 min when counted from their birth
        if (actor is AiGroundActor)
            if ((actor as AiGroundActor).Type() != maddox.game.world.AiGroundActorType.AAGun)
                Timeout(3300, () =>
                {
                    if (actor != null)
                    { (actor as AiGroundActor).Destroy(); }
                }
                        );
    }

Complete code here http://forum.1cpublishing.eu/showpos...5&postcount=41

335th_GRAthos 05-20-2011 09:09 PM

I think you got lucky guys....
(I can only think because I do not undestand the language you write in this thread... :-) )

From the Hotfix:
Quote:

MULTIPLAYER
Improved server and client stability and performance;
Improved statistics;
Improved user interface;
Made parked planes disappear after a certain period of time so as not to clutter the airfields;
Fixed phantom crewmembers occasionally appearing in place of dropped planes;
Made sure airborne planes are created with sufficient airspeed in online games (born speed now tied to the plane's top speed);
Conversion settings should properly synchronize between all players;
Fixed the weapon selection grid in online games requiring an extra click to save;
Made sure all players see the same time of day in an online server.

Ataros 05-22-2011 10:07 AM

Quote:

Originally Posted by Ataros (Post 286101)
It seems like this script I use does not destroy ships loaded by a submission. Other ground units are destroyed as intended. What can be wrong? IIRC ships belong to AiGroundActor

Code:

    //Ground objects (except AA Guns) will die after 55 min when counted from their birth

    public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
    {
        base.OnActorCreated(missionNumber, shortName, actor);
        //Ground objects (except AA Guns) will die after 55 min when counted from their birth
        if (actor is AiGroundActor)
            if ((actor as AiGroundActor).Type() != maddox.game.world.AiGroundActorType.AAGun)
                Timeout(3300, () =>
                {
                    if (actor != null)
                    { (actor as AiGroundActor).Destroy(); }
                }
                        );
    }

Complete code here http://forum.1cpublishing.eu/showpos...5&postcount=41

Confirmed, the script does not destroy ships. What can be the reason?
This is what happens in 3-4 hours after starting a mission.
https://lh4.googleusercontent.com/_S...5-21_00016.jpg

ZaltysZ 05-22-2011 10:52 AM

Quote:

Originally Posted by Ataros (Post 287210)
Confirmed, the script does not destroy ships. What can be the reason?

Somehow game does not see ships as AiGroundActor. Ask naryv about this.

Ataros 05-25-2011 10:44 AM

Looks like the script we are running on Repka and Syndicate is not 100% compatible with multicrew aircraft.

Quote:

Originally Posted by JG53Frankyboy (Post 288644)
if you change positions in multicrew planes ONLINE (and only ONLINE !) the game sets the engine temperature to ZERO.
In the Blenheim for example, the causes the engines to stop.....

Can someone help to change the code in order not to damage engines and controls if a player remains inside an aircraft and only changes his position to gunner or navigator?

Code:

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

// destroys aircraft abandoned by a player.
    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);
                }
        }

        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);

        int iNumOfEngines = (aircraft.Group() as AiAirGroup).aircraftEnginesNum();
        for (int i = 0; i < iNumOfEngines; i++)
        {
            aircraft.hitNamed((part.NamedDamageTypes)Enum.Parse(typeof(part.NamedDamageTypes), "Eng" + i.ToString() + "TotalFailure"));
        }

        /***Timeout (240, () =>
                {explodeFuelTank (aircraft);}
            );
        * ***/

        Timeout (300, () =>
                                {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 (300, () =>
            { destroyPlane(aircraft); }
                        );
        }
    public override void OnAircraftLanded (int missionNumber, string shortName, AiAircraft aircraft)
    {
        base.OnAircraftLanded(missionNumber, shortName, aircraft);
        Timeout(300, () =>
            { destroyPlane(aircraft); }
            );
    }
   
   
//////////////////////////////////////////////////////////////////////////////////////////////////


ZaltysZ 05-25-2011 11:13 AM

Ataros,

are there problems with Ju88 ar He111? I ask because it might be not a despawn problem, but separate bug. If I recall correctly there was (or still is) a problem with Br.20: engines cout out as player switches pilot positions (there are 2 piliots in Br.20).

Ataros 05-25-2011 11:39 AM

I did not try it myself yet. Will be able to test only tomorrow.

People report all bombers as far as I understand. This guy flies red side only i.e. Blenheims http://www.sukhoi.ru/forum/showthrea...=1#post1625736

Flashman 05-25-2011 04:46 PM

Quote:

Originally Posted by ZaltysZ (Post 288669)
Ataros,

are there problems with Ju88 ar He111? I ask because it might be not a despawn problem, but separate bug. If I recall correctly there was (or still is) a problem with Br.20: engines cout out as player switches pilot positions (there are 2 piliots in Br.20).

There are problems with all muticrew aircraft if the player moves position. Would be nice if it could be fixed.


All times are GMT. The time now is 05:23 PM.

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