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
  #12  
Old 04-02-2012, 11:41 AM
_79_dev _79_dev is offline
Approved Member
 
Join Date: Sep 2010
Location: Dublin
Posts: 242
Default

Continiuing my thought...


If I remouve this part of my "original" script...
PHP Code:

  
private bool isAiControlledPlane (AiAircraft aircraft)  
  { 
        if (
aircraft == null)  
        {  
            return 
false
        } 

        
Player [] players GamePlay.gpRemotePlayers (); 
        foreach (
Player p in players)  
        {     
            if (
!= 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 0iNumOfEnginesi++) 
        { 
            
aircraft.hitNamed((part.NamedDamageTypes)Enum.Parse(typeof(part.NamedDamageTypes), "Eng" i.ToString() + "TotalFailure")); 
        } 

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

        
Timeout (300, () => 
                {
destroyPlane (aircraft);} 
            ); 
    } 
and replace it with ....


PHP Code:
public class Mission AMission
{

    
#region InGameActors
    
    

    
internal class InGameActors
    
{

        
internal class Actor
        
{
            
internal bool destroyed false;
            
internal AiActor actor getset; }
            
internal DateTime CreationTime getset; }
            
internal int MissionNumber getset; }

            public 
Actor(AiActor actorint missionNumber)
            {
                
this.actor actor;
                
this.CreationTime DateTime.Now;
                
this.MissionNumber missionNumber;
                
this.destroyed false;
            }
        }


        
internal List<ActorActorsInGame = new List<Actor>();


        private 
bool IsActorDestroyable(AiActor actor)
        {
            
bool ActorDestroyable true;

            
//Check if actor is empty (no Player)
            
if (actor is AiCart)
            {
                if ((
actor as AiCart).ExistCabin(0))
                    for (
int i 0< (actor as AiCart).Places(); i++)
                    {
                        if ((
actor as AiCart).Player(i) != null)
                        {
                            
ActorDestroyable false;
                            break;
                        }
                    }
            }

            return 
ActorDestroyable;
        }


        private 
void destroyActor(AiActor actor)
        {
            if (
actor != null)
                if (
actor is AiCart)
                    (
actor as AiCart).Destroy();
        }


        public 
void Add(AiActor actorint missionNumber)
        {
            if (
actor != null && actor is AiCart)
                
ActorsInGame.Add(new Actor(actormissionNumber));
        }


        public 
void Removeable(AiActor actor)
        {
            if (
ActorsInGame.Exists(item => item.actor == actor))
                
ActorsInGame[ActorsInGame.FindIndex(item => item.actor == actor)].destroyed true;
        }


        public List<
AiActorGetActors()
        {
            List<
AiActortmpActors = new List<AiActor>();

            
ActorsInGame.ForEach(item => { tmpActors.Add(item.actor); });

            return 
tmpActors;
        }


        public 
void DestroyActor(AiActor actor)
        {
            if (
ActorsInGame.Exists(item => item.actor == actor))
            {
                
int i ActorsInGame.FindIndex(item => item.actor == actor);

                if (
IsActorDestroyable(ActorsInGame[i].actor))
                {
                    
destroyActor(ActorsInGame[i].actor);
                }
            }
            
ActorsInGame.RemoveAll(item => item.destroyed == true);
        }


        public 
void DestroyActors(int missionNumber)
        {

            if (
missionNumber == -1)
            {
                
ActorsInGame.ForEach(item => { if (IsActorDestroyable(item.actor)) destroyActor(item.actor); });
            }
            else if (
ActorsInGame.Exists(item => item.MissionNumber == missionNumber))
                
ActorsInGame.ForEach(item =>
                {
                    if (
item.MissionNumber == missionNumber)
                        if (
IsActorDestroyable(item.actor))
                            
destroyActor(item.actor);
                });
            
ActorsInGame.RemoveAll(item => item.destroyed == true);
        }


        public 
void DestroyActors(int missionNumberint army)
        {
            if (
ActorsInGame.Exists(item => item.MissionNumber == missionNumber && item.actor.Army() == army))
                
ActorsInGame.ForEach(item =>
                {
                    if (
item.MissionNumber == missionNumber && item.actor.Army() == army)
                        if (
IsActorDestroyable(item.actor))
                            
destroyActor(item.actor);
                });
            
ActorsInGame.RemoveAll(item => item.destroyed == true);
        }


        public 
void DestroyActors(Point3d Positiondouble Radius)
        {

            if (
ActorsInGame.Exists(item => item.actor.Pos().distance(ref Position) < Radius))
                
ActorsInGame.ForEach(item =>
                {
                    if (
item.actor.Pos().distance(ref Position) < Radius)
                        if (
IsActorDestroyable(item.actor))
                            
destroyActor(item.actor);
                });
            
ActorsInGame.RemoveAll(item => item.destroyed == true);
        }


        public 
void DestroyActors(int missionNumberPoint3d Positiondouble Radius)
        {

            if (
ActorsInGame.Exists(item => (item.MissionNumber == missionNumber && item.actor.Pos().distance(ref Position) < Radius)))
                
ActorsInGame.ForEach(item =>
                {
                    if (
item.MissionNumber == missionNumber && item.actor.Pos().distance(ref Position) < Radius)
                        if (
IsActorDestroyable(item.actor))
                            
destroyActor(item.actor);
                });
            
ActorsInGame.RemoveAll(item => item.destroyed == true);
        }


        public 
void DestroyActors(int missionNumberparams AiGroundActorType[] types)
        {
            foreach (
AiGroundActorType abat in types)
            {

                if (
ActorsInGame.Exists(item => item.MissionNumber == missionNumber && (item.actor as AiGroundActor).Type() == abat))
                    
ActorsInGame.ForEach(item =>
                    {
                        if (
item.MissionNumber == missionNumber && (item.actor as AiGroundActor).Type() == abat)
                            if (
IsActorDestroyable(item.actor))
                                
destroyActor(item.actor);
                    });
            }
            
ActorsInGame.RemoveAll(item => item.destroyed == true);
        }


        public 
void DestroyActors(TimeSpan DestroyAfterTime)
        {
            
DateTime tmpTime DateTime.Now.Subtract(DestroyAfterTime);

            if (
ActorsInGame.Exists(item => item.CreationTime <= tmpTime))
                
ActorsInGame.ForEach(item =>
                {
                    if (
item.CreationTime <= tmpTime)
                        if (
IsActorDestroyable(item.actor))
                            
destroyActor(item.actor);
                });
            
ActorsInGame.RemoveAll(item => item.destroyed == true);
        }


        public 
void DestroyActors(params AiGroundActorType[] types)
        {

            foreach (
AiGroundActorType abat in types)
            {
                if (
ActorsInGame.Exists(item => (item.actor is AiGroundActor) && (item.actor as AiGroundActor).Type() == abat))
                    
ActorsInGame.ForEach(item =>
                    {
                        if ((
item.actor is AiGroundActor) && (item.actor as AiGroundActor).Type() == abat)
                            if (
IsActorDestroyable(item.actor))
                                
destroyActor(item.actor);
                    });
            }
            
ActorsInGame.RemoveAll(item => item.destroyed == true);
        }

    }

    
#endregion

everything should work fine right???
__________________

Asus P6T V2 Deluxe, I7 930, 3x2 GB RAM XMS3 Corsair1333 Mhz, Nvidia Leadtek GTX 470, Acer 1260p screen projector, Track IR 4 OS ver5, Saitek Pro Flight Rudder, Saitek X52, Win 7 x64 ultimate
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 05:18 AM.


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