View Single Post
  #1  
Old 07-31-2012, 11:07 PM
hc_wolf hc_wolf is offline
Approved Member
 
Join Date: Jul 2010
Posts: 439
Question Error with Mission.OnAircraftDamaged

Hi guys,

Time to break open the code.

I am seeing an error on the server and I can not pinpoint what the issue is.
Below is the code I am using (the voice sounds work and get no error with that)

Any Idea?

Code:
    public override void OnAircraftDamaged(int missionNumber, string shortName, AiAircraft aircraft, AiDamageInitiator initiator, part.NamedDamageTypes damageType)
    {
        base.OnAircraftDamaged(missionNumber, shortName, aircraft, initiator, damageType);

        // speech //   GetDamageVictims()
        AiAircraft initiator_aircraft = initiator.Actor as AiAircraft;
        if (speechTimer.Elapsed.Milliseconds > 1 && speechTimer.Elapsed.Seconds < 20)
        {   // timer is running & less than 20 seconds since last speech
            return;   // speech no more fequently than 20 secs apart.
        }
        else
        {
            speechTimer.Restart();
        }
        if (aircraft.Army() != initiator_aircraft.Army())
        {
            // shooting at enemy aircraft
            Timeout(3, () =>      // wait 3 seconds
            {
                switch (random.Next(1, 6 + 1))
                {
                    case 1:
                        initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Nice_shot");
                        break;
                    case 2:
                        initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Good_shot_sir");
                        break;
                    case 3:
                        initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Good_shooting");
                        break;
                    case 4:
                        initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Good_show");
                        break;
                    case 5:
                        initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Bullseye");
                        break;
                    case 6:
                        initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Good_hits");
                        break;
                    default:
                        initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Direct_hit");
                        break;
                }
            });
        }
        else
        {
            //  shooting at a friendly aircraft
            // first verse
            if (random.Next(1, 100 + 1) < 75) // 33% chance of first verse
            {
                switch (random.Next(1, 2 + 1))
                {
                    case 1:
                        initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Friendlies");
                        break;
                    case 2:
                        initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Damn_what_are_you_doing");
                        break;
                    default:
                        initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Damn1");
                        break;
                }
            }
            //second verse 
            Timeout(2, () =>      // wait 2 seconds
            {
                switch (random.Next(1, 3 + 1))
                {
                    case 1:
                        initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Cease_fire_shooting_at_friendly");
                        initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Return_to_base_immediately_or_you_will_be_shot_down_");
                        break;
                    case 2:
                        initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Watch_it_You_re_shooting_at_one_of_ours");
                        break;
                    case 3:
                        initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Stop_fire");
                        break;
                    default:
                        initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Oh_my_God_Stop_Please_stop_Ooooaaaaahhh");
                        break;
                }
            });
            // third verse
            Timeout(4, () =>      // wait 4 seconds
            {
                if (random.Next(1, 100 + 1) < 75) // 30% chance of third verse
                {
                    switch (random.Next(1, 2 + 1))
                    {
                        case 1:
                            initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "That_is_without_a_doubt_the_worst_flying_I_have_ever_seen");
                            break;
                        case 2:
                            initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Return_to_base_immediately_or_you_will_be_shot_down_");
                            break;
                        default:
                            initiator_aircraft.SayToGroup(initiator_aircraft.AirGroup(), "Cannot_do_anything_right_today_can_you");
                            break;
                    }
                }
            });
        }
    }
[23:01:42] =================================================
[23:01:42] System.NullReferenceException: Object reference not set to an instance of an object.
[23:01:42]
[23:01:42] Server stack trace:
[23:01:42] at Mission.OnAircraftDamaged(Int32 missionNumber, String shortName, AiAircraft aircraft, AiDamageInitiator initiator, NamedDamageTypes damageType)
[23:01:42] at maddox.game.ABattle.OnAircraftDamaged(Int32 missionNumber, String shortName, AiAircraft aircraft, AiDamageInitiator initiator, NamedDamageTypes damageType)
[23:01:42] at maddox.game.world.Strategy.OnAircraftDamaged(Int32 missionNumber, String shortName, AiAircraft aircraft, AiDamageInitiator initiator, NamedDamageTypes damageType)
[23:01:42] at maddox.game.ABattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[23:01:42] at maddox.game.world.Strategy.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[23:01:42] at System.Runtime.Remoting.Messaging.StackBuilderSink ._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
[23:01:42] at System.Runtime.Remoting.Messaging.StackBuilderSink .SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
[23:01:42]
[23:01:42] Exception rethrown at [0]:
[23:01:42] at System.Runtime.Remoting.Proxies.RealProxy.HandleRe turnMessage(IMessage reqMsg, IMessage retMsg)
[23:01:42] at System.Runtime.Remoting.Proxies.RealProxy.PrivateI nvoke(MessageData& msgData, Int32 type)
[23:01:42] at maddox.game.IBattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[23:01:42] at maddox.game.GameDef.eventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
[23:01:42] at WoroaxENpmii8VryBS1.l72U2qEZkgauhd5ThjE.naGW165wRS kRFDpn8qAt(Object , GameEventId , Object , Object , Int32 )
[23:01:42] at WoroaxENpmii8VryBS1.l72U2qEZkgauhd5ThjE.eventGame( GameEventId , Object , Object , Int32 )
[23:01:42] at QTJWCZav3I4dK5Rv9Zd.soVedrakcuHYXN8uYhv.V15uBXPplU M(GameEventId , Object , Object , Int32 )
[23:01:42] =================================================
__________________
__________________
Win7, 64bit Ultra
Asus P8P67Pro MB
Intel i7-2600K
Coursair 16GB (4x 4GB), DDR3-1600MHz
Gainward Nvidia 580GTX 3GB DDR5
850-Watt Modular Power Supply
WIN7 and COD on Gskill SSD 240GB
40" Panasonic LCD
TrackIR5 +
Thrustmaster Warthog stick, throttle & pedals
Reply With Quote