hc_wolf
07-31-2012, 11:07 PM
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?
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.A irGroup(), "Nice_shot");
break;
case 2:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Good_shot_sir");
break;
case 3:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Good_shooting");
break;
case 4:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Good_show");
break;
case 5:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Bullseye");
break;
case 6:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Good_hits");
break;
default:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "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.A irGroup(), "Friendlies");
break;
case 2:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Damn_what_are_you_doing");
break;
default:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Damn1");
break;
}
}
//second verse
Timeout(2, () => // wait 2 seconds
{
switch (random.Next(1, 3 + 1))
{
case 1:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Cease_fire_shooting_at_friendly");
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Return_to_base_immediately_or_you_will_be_shot_dow n_");
break;
case 2:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Watch_it_You_re_shooting_at_one_of_ours");
break;
case 3:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Stop_fire");
break;
default:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "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.A irGroup(), "That_is_without_a_doubt_the_worst_flying_I_have_ev er_seen");
break;
case 2:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Return_to_base_immediately_or_you_will_be_shot_dow n_");
break;
default:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "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] =================================================
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?
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.A irGroup(), "Nice_shot");
break;
case 2:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Good_shot_sir");
break;
case 3:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Good_shooting");
break;
case 4:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Good_show");
break;
case 5:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Bullseye");
break;
case 6:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Good_hits");
break;
default:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "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.A irGroup(), "Friendlies");
break;
case 2:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Damn_what_are_you_doing");
break;
default:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Damn1");
break;
}
}
//second verse
Timeout(2, () => // wait 2 seconds
{
switch (random.Next(1, 3 + 1))
{
case 1:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Cease_fire_shooting_at_friendly");
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Return_to_base_immediately_or_you_will_be_shot_dow n_");
break;
case 2:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Watch_it_You_re_shooting_at_one_of_ours");
break;
case 3:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Stop_fire");
break;
default:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "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.A irGroup(), "That_is_without_a_doubt_the_worst_flying_I_have_ev er_seen");
break;
case 2:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "Return_to_base_immediately_or_you_will_be_shot_dow n_");
break;
default:
initiator_aircraft.SayToGroup(initiator_aircraft.A irGroup(), "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] =================================================