PDA

View Full Version : Show userlabel after recon passthrough


salmo
11-03-2012, 04:50 AM
I'm tying to show a custom label on the mini-map to blue players once a recon plane has gone through a pass-through trigger over the target. I'm having difficulty coming to grips with the various userlabel methods.The code below has errors. Baby steps please, explaining each method's use.


public override void OnTrigger(int missionNumber, string shortName, bool active)
{
base.OnTrigger(missionNumber, shortName, active);

//RAF Dunkirk recon Do17
if (shortName == "RAF_Dunkirk" && active)
{ // Do17 recon'd RAF Dunkirk
Point2d p = new Point2d();
p.x = 221501.43;
p.y = 252603.72;
List<Player> BluePlayersList = new List<Player>();
foreach (Player player in GamePlay.gpRemotePlayers()) if (player.Army() == 2) BluePlayersList.Add(player);
Player[] BluePlayersArray = BluePlayersList.ToArray();
double t = GamePlay.gpTimeofDay();
GPUserLabel lbl = GamePlay.gpMakeUserLabel(p, BluePlayersArray, "RAF Dunkirk", t, GPUserIconType.Factory);
GamePlay.gpDrawUserLabel(lbl);
}
}

FG28_Kodiak
11-03-2012, 05:22 AM
Your mistake:

GPUserLabel lbl = GamePlay.gpMakeUserLabel(p, BluePlayersArray, "RAF Dunkirk", t, GPUserIconType.Factory);

is the BluePlayerArray, the argument must be the player who created the lable (works in singl player) or Gameplay.gpPlayer() (for dedi server)

to show the lable only to one side use you must use:

GamePlay.gpDrawUserLabel(BluePlayersArray, lbl);

salmo
11-03-2012, 05:47 AM
Thankyou again Kodiak, I'm using this in the dedi server context but MakeUserLabel fails with invalid arguement(s) :confused: What's the purpose behind the method taking an arguement for the player who created the label? Surely there will be instances where the scripter wants to display a label at times when no actual player has 'created' the label?


double t = GamePlay.gpTimeofDay();
GPUserLabel lbl = GamePlay.gpMakeUserLabel(p, GamePlay.gpPlayer(), "RAF Dunkirk", t, GPUserIconType.Factory); // compile error
GamePlay.gpDrawUserLabel(BluePlayersArray, lbl);

FG28_Kodiak
11-03-2012, 06:20 AM
GPUserIconType is an enum type the argument type is int so you must cast (int)

GPUserLabel lbl = GamePlay.gpMakeUserLabel(p, GamePlay.gpPlayer(), "RAF Dunkirk", t, (int)GPUserIconType.Factory);


Sorry have overseen it.

salmo
11-03-2012, 07:20 AM
That did it. Thankyou again for the assistance.