#1
|
|||
|
|||
AI-Aircraft classes for scripts
Quote:
This I found in another thread and embedded it into a script for pilot briefing, this way: Code:
public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex) { base.OnPlaceEnter(player, actor, placeIndex); AiAircraft aircraft = actor as AiAircraft; if (aircraft != null) switch (aircraft.Army()) { case 1: if (aircraft.Type() == AircraftType.Bomber) //Nachricht fuer rote Spieler beim spawnen { GamePlay.gpHUDLogCenter(new Player[] {player},"Fly a recon from Manston -AW25 to LeHavre -AN4"); } else { GamePlay.gpHUDLogCenter(new Player[] { player }, "Cover our shipping south of Isle of White - AD17"); } break; case 2: if (aircraft.Type() == AircraftType.Bomber) //Nachricht fuer blaue Spieler beim spawnen { GamePlay.gpHUDLogCenter(new Player[] { player }, "Attack britisch shipping south of Isle of White - AD17"); } else { GamePlay.gpHUDLogCenter(new Player[] { player }, "Escort Ju87 from Theville - AC6 to AE15"); } break; } } public override void OnAircraftTookOff(int missionNumber, string shortName, AiAircraft aircraft) { base.OnAircraftTookOff(missionNumber, shortName, aircraft); if (GamePlay.gpPlayer().Place() != aircraft) return; switch (aircraft.Army()) { case 1: if (aircraft.Type() == AircraftType.Bomber) //Nachricht fuer rote Spieler nach Start { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Fly a recon from Manston -AW25 to LeHavre -AN4"); } else { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Cover our shipping south of Isle of White - AD17"); } break; case 2: if ((aircraft.Type() == AircraftType.Bomber) || (aircraft.Type() == AircraftType.DiveBomber)) //Nachricht fuer blaue Spieler nach Start { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Attack britisch shipping south of Isle of White - AD17"); } else { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Escort Ju87 from Theville - AC6 to AE15"); } break; } } Furthermore the message "OnAircraftTookOff" does not show up at all. Has anyone any idea?
__________________
http://cornedebrouwer.nl/cf48e |
#2
|
|||
|
|||
Do you include my code into the other?
OnAircraftTookOff works only correct if there is a Waypoint after the start. If you use Spawn-Areas and take off from there it doesn't work, it's not a feature its a bug. It worked correctly on first Version. |
#3
|
|||
|
|||
Jepp, I included this into the submission script:
Code:
using System; using maddox.game; using maddox.game.world; using System.Collections.Generic; public class Mission : AMission { //----------------------------------------------------------------------------------------------- //Section 1: Trigger Nachrichten public override void OnTrigger(int missionNumber, string shortName, bool active) { if ("Trigger1R".Equals(shortName) && active) //Trigger 1 Nachricht { GamePlay.gpHUDLogCenter("Blue succeeded and sunk 3 red tanker"); GamePlay.gpGetTrigger(shortName).Enable = false; } if ("Trigger2R".Equals(shortName) && active) //Trigger 1 Nachricht { GamePlay.gpHUDLogCenter("Red successfully reconnoitered LeHavre"); GamePlay.gpGetTrigger(shortName).Enable = false; } if ("Trigger1B".Equals(shortName) && active) //Trigger 2 Nachricht { GamePlay.gpHUDLogCenter("Red succeeded and shot down 20% blue bomber"); GamePlay.gpGetTrigger(shortName).Enable = false; } // Trigger Aktionen base.OnTrigger(missionNumber, shortName, active); if ("SpawnIntercept1".Equals(shortName) && active) { AiAction action = GamePlay.gpGetAction("SpawnIntercept1"); if (action != null) { action.Do(); } GamePlay.gpGetTrigger(shortName).Enable = false; } if ("SpawnIntercept2".Equals(shortName) && active) { AiAction action = GamePlay.gpGetAction("SpawnIntercept2"); if (action != null) { action.Do(); } GamePlay.gpGetTrigger(shortName).Enable = false; } if ("SpawnEscort1".Equals(shortName) && active) { AiAction action = GamePlay.gpGetAction("SpawnEscort1"); if (action != null) { action.Do(); } GamePlay.gpGetTrigger(shortName).Enable = false; } if ("SpawnEscort2".Equals(shortName) && active) { AiAction action = GamePlay.gpGetAction("SpawnEscort2"); if (action != null) { action.Do(); } GamePlay.gpGetTrigger(shortName).Enable = false; } if ("SpawnStuka1".Equals(shortName) && active) { AiAction action = GamePlay.gpGetAction("SpawnStuka1"); if (action != null) { action.Do(); } GamePlay.gpGetTrigger(shortName).Enable = false; } if ("SpawnStuka2".Equals(shortName) && active) { AiAction action = GamePlay.gpGetAction("SpawnStuka2"); if (action != null) { action.Do(); } GamePlay.gpGetTrigger(shortName).Enable = false; } } //----------------------------------------------------------------------------------------------- //Section 3: Briefing public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex) { base.OnPlaceEnter(player, actor, placeIndex); AiAircraft aircraft = actor as AiAircraft; if (aircraft != null) switch (aircraft.Army()) { case 1: if (aircraft.Type() == AircraftType.Bomber) //Nachricht fuer rote Spieler beim spawnen { GamePlay.gpHUDLogCenter(new Player[] {player},"Fly a recon from Manston -AW25 to LeHavre -AN4"); } else { GamePlay.gpHUDLogCenter(new Player[] { player }, "Cover our shipping south of Isle of White - AD17"); } break; case 2: if (aircraft.Type() == AircraftType.Bomber) //Nachricht fuer blaue Spieler beim spawnen { GamePlay.gpHUDLogCenter(new Player[] { player }, "Attack britisch shipping south of Isle of White - AD17"); } else { GamePlay.gpHUDLogCenter(new Player[] { player }, "Escort Ju87 from Theville - AC6 to AE15"); } break; } } public override void OnAircraftTookOff(int missionNumber, string shortName, AiAircraft aircraft) { base.OnAircraftTookOff(missionNumber, shortName, aircraft); if (GamePlay.gpPlayer().Place() != aircraft) return; switch (aircraft.Army()) { case 1: if (aircraft.Type() == AircraftType.Bomber) //Nachricht fuer rote Spieler nach Start { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Fly a recon from Manston -AW25 to LeHavre -AN4"); } else { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Cover our shipping south of Isle of White - AD17"); } break; case 2: if ((aircraft.Type() == AircraftType.Bomber) || (aircraft.Type() == AircraftType.DiveBomber)) //Nachricht fuer blaue Spieler nach Start { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Attack britisch shipping south of Isle of White - AD17"); } else { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Escort Ju87 from Theville - AC6 to AE15"); } break; } } //Section 4 : AI entfernen public override void OnTickGame() { double initTime; if (Time.tickCounter() % 324000 == 323999) // Nach 180 Minuten werden die AI wieder entfernt { foreach (int army in GamePlay.gpArmies()) { foreach (AiAirGroup group in GamePlay.gpAirGroups(army)) { if (ActorName.MissionNumber(group.Name()).Equals(MissionNumber)) // Zeile L schen wenn auch AAA entfernt werden soll { AiActor[] members = group.GetItems(); for (int i = members.Length - 1; i > -1; i--) { (members[i] as AiAircraft).Destroy(); } } } foreach (AiGroundGroup group in GamePlay.gpGroundGroups(army)) { if (ActorName.MissionNumber(group.Name()).Equals(MissionNumber)) // Zeile L schen wenn auch AAA entfernt werden soll { AiActor[] members = group.GetItems(); for (int i = members.Length - 1; i > -1; i--) { (members[i] as AiGroundActor).Destroy(); } } } } } } public override void OnActorCreated(int missionNumber, string shortName, AiActor actor) { base.OnActorCreated(missionNumber, shortName, actor); if (actor is AiGroundActor) { Timeout(324000, () => { // nach 180minuten werden AI entfernt if (actor != null) { (actor as AiGroundActor).Destroy(); } }); } } } But the briefing message for blue bomber, does only work for He111 so far, all other work, except Stuka, Ju88...
__________________
http://cornedebrouwer.nl/cf48e |
#4
|
|||
|
|||
Code:
if (aircraft.Type() == AircraftType.Bomber) //Nachricht fuer rote Spieler nach Start { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Fly a recon from Manston -AW25 to LeHavre -AN4"); } else { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Cover our shipping south of Isle of White - AD17"); } break; so your code is not correct. it should look like: Code:
if ((aircraft.Type() == AircraftType.Bomber) || (aircraft.Type() == AircraftType.DiveBomber)) { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Fly a recon from Manston -AW25 to LeHavre -AN4"); } else { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Cover our shipping south of Isle of White - AD17"); } |
#5
|
|||
|
|||
I tried that also, doesn´t work.
I used the same lines as for "Takeoff" and to no avail. Just have a testing version of the script here in office, that are the lines you see here, so I cannot give you the actual code, but you can join our III./JG27TestServer, map with the script should be running now (if Steam didnt disconnect). Also the || connection to Divebomber doesnt work for spawning.
__________________
http://cornedebrouwer.nl/cf48e |
#6
|
|||
|
|||
Heh hab auch bloß Kaffeepause und bin auf die dumme Idee gekommen ins 1C Forum zu schauen
Ich schau mirs heute Abend mal an. |
#7
|
|||
|
|||
Ja, imer fleissig fürs BSP schaffen... ich muss auch mal wieder...
__________________
http://cornedebrouwer.nl/cf48e |
#8
|
|||
|
|||
So figured it out, the Devs made Ju87 and Ju88 to "Bomber, DiveBomber". So the earlier version with DiveBomber only, don't work anymore.
New working code (Testversion): Code:
using System; using maddox.game; using maddox.game.world; public class Mission : AMission { public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex) { base.OnPlaceEnter(player, actor, placeIndex); AiAircraft aircraft = actor as AiAircraft; if (aircraft != null) switch (aircraft.Army()) { case 1: if (aircraft.Type() == AircraftType.Bomber || aircraft.Type().ToString().Equals("Bomber, DiveBomber")) //rote spieler { GamePlay.gpHUDLogCenter(new Player[] {player}, "roter Bomber"); } else { GamePlay.gpHUDLogCenter(new Player[] {player}, "roter Jäger"); } break; case 2: if (aircraft.Type() == AircraftType.Bomber || aircraft.Type().ToString().Equals("Bomber, DiveBomber")) //blaue Spieler { GamePlay.gpHUDLogCenter(new Player[] {player}, "blauer Bomber"); } else { GamePlay.gpHUDLogCenter(new Player[] {player}, "blauer Jäger"); } break; } } } |
#9
|
|||
|
|||
Great! Thx.
Now the stukas and ju88 do not have to escort the ju87 anymore and are allowed to sink the shipping.
__________________
http://cornedebrouwer.nl/cf48e |
|
|