PDA

View Full Version : Destroyable Static Aircraft?


TheEnlightenedFlorist
06-01-2011, 07:03 AM
Hello all, is there a way to make static aircraft destructable? I tried just putting AI aircraft on the airfields, but they take too much of a toll on performance.

Longbone
06-01-2011, 07:30 AM
Hi mate,
as far as I know they are not real destructible (in parts)
they are only smoking and texture went black
but I believe you can despawn them,their names can be found in your xxx,mis file [Stationary]
EDIT: are you using flyable plane's? unflyable have a little bit better performance

TheEnlightenedFlorist
06-02-2011, 02:59 AM
Hi Longbone. I'm using a combination of flyable and non-flyable aircraft. I've decided to just use static aircraft since I'm not able to get anywhere near the numbers I want with AI aircraft.

Can you elaborate more on how to despawn them? I've tried using scripts, but apparently static aircraft aren't considered AiActors so I don't know how to access them. I'm pretty good with C#, but this FMB is killing me. :)

Longbone
06-02-2011, 11:22 PM
Hi Longbone. I'm using a combination of flyable and non-flyable aircraft. I've decided to just use static aircraft since I'm not able to get anywhere near the numbers I want with AI aircraft.

Can you elaborate more on how to despawn them? I've tried using scripts, but apparently static aircraft aren't considered AiActors so I don't know how to access them. I'm pretty good with C#, but this FMB is killing me. :)

Hi Enlightened,
sorry I didn't mean static aircraft,I mean nonflyable (by human) AiAircraft.
I've made an little example mission, since I'm not an enlightened C# scripter
I hope you not get an horror it's made by an noop (me). :)
there is also a list for the cutlimb commands you can use

Cheers
Edit this thing (FMB) kills almost everyone

TheEnlightenedFlorist
06-03-2011, 08:36 AM
Thanks, Longbone. I already know how to destroy AI aircraft (in a variety of ways), but your code made me wonder if I can access the static aircraft using the gpActorByName() method. Probably not if they're not considered AiActors, but it's worth a shot. I have a mission where static aircraft are respawned after all the static aircraft at a particular airfield are destroyed, but the wreckage is still there. Over time it will just keep building up.

Longbone
06-03-2011, 11:30 AM
Hi mate,
I think there must be a solution to access static aircraft like other static object's
gpgroundgroup,aigroundgroup etc but if so, is there a way to really despawn them or move
them to another location x0.00 y0.00 ?. If I look at other scripts they always destroy them
and then you have garbage that not dissapears.
If you destroy an AiAircraft there is sometimes garbage too, but he disappear mostly gradually
I think this is an engine fault,so i would use AiAircraft with 0gasoline and place little static
targets between them, if they not get damaged enough to despawn, do it by a script and wait for a moment
till garbage disappears,then respawn (reload) units.

I hope eventually our trouble is patched away and we get a manual for this THING!!! :rolleyes:

Edit: is there a way to edit Strings in C# automatically
like a counter do "Bob_f_218Sqn:001" ..."Bob_f_218Sqn:002"..."Bob_f_218Sqn:003"....
as you see in my script it is made complicated a little bit :-)
I still have a lot to learn

Cheers

TheEnlightenedFlorist
06-04-2011, 12:19 AM
Well, I wasn't able to access static aircraft by name. I'll just have to deal with the wreckage for now.

Hi mate,
I think there must be a solution to access static aircraft like other static object's
gpgroundgroup,aigroundgroup etc but if so, is there a way to really despawn them or move
them to another location x0.00 y0.00 ?.

A lot of objects (including AI aircraft and ground vehicles) have a Destroy() method. This completely removes them, leaving nothing behind. The problem comes when we are not able to access the object and call that method.

Edit: is there a way to edit Strings in C# automatically
like a counter do "Bob_f_218Sqn:001" ..."Bob_f_218Sqn:002"..."Bob_f_218Sqn:003"....
as you see in my script it is made complicated a little bit

Yes. I would do this with a for loop. Here's an example from a mission I'm working on.

for (int i = 1; i <= 5; i++)
{
DEGroundMisNums.Add(GamePlay.gpNextMissionNumber() );
string miss = DEGroundMissPath + "Ground_" + i.ToString() + ".mis";
GamePlay.gpPostMissionLoad(miss);
}

Here I'm loading missions, but the part we're interested in is where I build the string. I call it "miss". I already know that the missions are named Ground_1, Ground_2, etc. up to Ground_5. "DEGroundMissPath" is just a string that represents the path to where the missions are located.

As you can see, I take the path to the missions, add the name of the mission, and then use the "i" variable from the for loop to change the name of the mission each time the loop is run. I need to call the ToString() method because you can't add integers to strings. After all that, I simply tack on the ".mis" extension.

This is an easy way to do it, but you have to know (or be able to find out) the number of times to go through the for loop, and they have to be sequential. Skipping numbers would make things more complicated. I hope this helps.

Longbone
06-04-2011, 03:47 PM
Thank you for your detailed advice.
I will test it next days ,at the moment i must do some real life event's :(
Have a nice day