![]() |
|
|
|
#1
|
|||
|
|||
|
These all are very useful posts, in fact I have borrowed a bit of the script for my own mission that I hope will appear on the Syndicate Server soon.
I have a few questions as I know nothing about these scripts 1) If I want the text that comes up with the 'GamePlay.gpHUDLogCenter' command to show to only one team, can this be done and if so how? 2) I have noriced that using these scripts with the spawn removal stops the in game action and trigger events working where it spawns an aircraft. Is there a way of using both? Keep up the good work, and thanks for your help in advance. |
|
#2
|
|||
|
|||
|
Quote:
2) Did not quite get what you mean by "spawn removal" and "trigger events working where it spawns an aircraft". Could you clarify please. |
|
#3
|
|||
|
|||
|
New bits of code from devs.
Shows mission objectives to players depending on side and aircraft type (fighter/bomber). "hitler caput" lol 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)
{ GamePlay.gpHUDLogCenter(new Player[] {player},"Red Bomber, Bomb it all, hitler caput"); }
else { GamePlay.gpHUDLogCenter(new Player[] { player }, "Red Fighter, fight them all"); }
break;
case 2:
if (aircraft.Type() == AircraftType.Bomber)
{ GamePlay.gpHUDLogCenter(new Player[] { player }, "Das bomber!"); }
else { GamePlay.gpHUDLogCenter(new Player[] { player }, "Das jager!"); }
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)
{ GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Red Bomber, Bomb it all, hitler caput"); }
else { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Red Fighter, fight them all"); }
break;
case 2:
if (aircraft.Type() == AircraftType.Bomber)
{ GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Das bomber!"); }
else { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Das jager!"); }
break;
}
}
Last edited by Ataros; 04-28-2011 at 06:03 PM. |
|
#4
|
|||
|
|||
|
Hi Ataros,
Hopefully I will be a little more clear this time! I used the in-game script system using a Trigger to cause an Action to happen. Eg in my missions if a plane I select is shot down, it triggers the spawn of another plane. EDIT>Script Trigger: Walrus 1= Target Group destroyed (Walrus flying boat selected) Action: Walrus 1= Air spawn group (second walrus selected) This system works in single player, so that when the first walrus is shot down a second spawns at a preselected place. However, when I include the scripts you guys have been developing to despawn empty aircraft (for use online) the ingame script above does not work in either single or multiplayer. Any ideas what i am doing wrong? |
|
#5
|
|||
|
|||
|
I was just looking at the .mis files in notepad...
Example Code:
[PARTS] core.100 bob.100 [MAIN] MAP Land$English_Channel_1940 BattleArea 200000 160000 120000 100000 9000 TIME 5 WeatherIndex 0 CloudsHeight 1000 BreezeActivity 1 ThermalActivity 1 [GlobalWind_0] Power 3.000 0.000 0.000 BottomBound 0.00 TopBound 1500.00 GustPower 5 GustAngle 45 [splines] [AirGroups] gb02.0F [gb02.0F] Flight0 1 2 3 Flight1 11 12 13 Flight2 21 22 23 Flight3 31 32 33 Class Aircraft.BlenheimMkIV Formation VIC CallSign 31 Fuel 86 Weapons 1 1 2 1 1 Detonator Bomb.Bomb_GP_250lb_MkIV 2 130 11 Skill 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 [gb02.0F_Way] NORMFLY 224480.60 255230.91 500.00 230.00 NORMFLY 254029.14 255139.99 1000.00 230.00 NORMFLY 274678.41 250003.49 1500.00 230.00 NORMFLY 290803.61 240345.28 1500.00 230.00 GATTACK_POINT 290788.83 215917.45 1500.00 230.00 NORMFLY 290883.76 208132.47 1500.00 230.00 NORMFLY 265387.72 208373.88 1500.00 230.00 NORMFLY 246038.12 228039.38 1500.00 230.00 NORMFLY 224003.28 252601.51 1500.00 230.00 [CustomChiefs] [Stationary] [Buildings] [BuildingsLinks] [Trigger] trigger TTime 1200 Also looks like we can edit aircraft here much "easier"... if you know what your doing! NOTE - not at home to test it myself lol Ross |
|
#6
|
|||
|
|||
|
Quote:
I think you can shut server down with .cmd file. |
|
#7
|
|||
|
|||
|
Well as you know we both start a mission through the script, but i want to know if we can stop it... as we had already discused :S
But as we dont know how to do this via scipt, i was woundering is we could do it through the .mis file... |
|
#8
|
|||
|
|||
|
I did not learn how to use triggers yet but if you paste here a complete script I am sure someone would help.
|
|
#9
|
|||
|
|||
|
Quote:
However we should try: 1) make a mission with internal triggers without script 2) make a mission with script that loads the first mission in. 3) load more missions when needed. I will not have time to try this for a couple of days however (( Alternatively you can program all the triggers in a script by hand. Check links in the 1st message of this thread for examples. e.g. Code:
/ / $ Reference Campaign.dll
/ / - $ Debug
using System;
using maddox.game;
using maddox.game.world;
public class Mission: maddox.game.campaign.Mission {
public override void OnTrigger (int missionNumber, string shortName, bool active)
{
if ("trigger". Equals (shortName) & & active)
{
GamePlay.gpHUDLogCenter ("Triggers trigger");
}
}
}
Code:
using System;
using maddox.game;
using maddox.game.world;
class Mission: maddox.game.AMission
{
public override void OnActorDead (int missionNumber, string shortName, AiActor actor, System.Collections.Generic.List <DamagerScore> damages)
{
base.OnActorDead (missionNumber, shortName, actor, damages);
AiAction action = GamePlay.gpGetAction ("TestAction");
if (action! = null)
{
action.Do ();
}
}
}
Code:
using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;
public class Mission : maddox.game.AMission
{
private List<AiAction> actions = new List<AiAction>();
private int round = 1;
private bool completed = false;
public override void OnBattleStarted()
{
AiAction action = GamePlay.gpGetAction("startGroup2");
if (action != null) actions.Add(action);
action = GamePlay.gpGetAction("startGroup3");
if (action != null) actions.Add(action);
GamePlay.gpHUDLogCenter(String.Format("Раунд {0}", round));
}
public override void OnActorDead(int missionNumber, string shortName, AiActor actor, System.Collections.Generic.List<DamagerScore> damages)
{
base.OnActorDead(missionNumber, shortName, actor, damages);
if (!(actor is AiAircraft))
return; // Не самолет
int army = (actor as AiAircraft).Group().Army();
if (army == 1)
{
if (!completed)
{
bool fail = (actor as AiAircraft).AirGroup().DiedAircrafts >= (actor as AiAircraft).AirGroup().InitNOfAirc;
if (fail)
{
GamePlay.gpHUDLogCenter("Миссия провалена.");
}
}
}
else
{
bool next = (actor as AiAircraft).AirGroup().DiedAircrafts >= (actor as AiAircraft).AirGroup().InitNOfAirc;
if (next)
{
if (round == 3)
{
completed = true;
GamePlay.gpHUDLogCenter("Поздравляем, миссия пройдена!");
}
else
{
round++;
startNewRound();
}
}
}
}
private void startNewRound()
{
GamePlay.gpHUDLogCenter(String.Format("Раунд {0}", round));
if (actions.Count > 0)
{
actions[0].Do();
actions.RemoveAt(0);
}
}
}
http://translate.google.com/translat...hp%3Ft%3D68369 Would you tell us what exactly you are trying to do and what does not work. Run my script it loads missions on timing more or less. Does not always destroy planes on the server however. Last edited by Ataros; 04-30-2011 at 02:23 AM. |
|
#10
|
|||
|
|||
|
I have pretty much copied and pasted your scripting ...
I always right click and compile to see if the script is OK, which it is ... So when ever I try and test it ... My ai bots are still flying At the current time I am in the middle of making a new online map with less 'repeat mission' loading, and more internal triggers But as you have posted above, I will need script for 'triggers' to flash messages on the screen about incoming planes etc ... I shall give the above a try when I'm on my pc later! |
![]() |
|
|