Official Fulqrum Publishing forum

Official Fulqrum Publishing forum (http://forum.fulqrumpublishing.com/index.php)
-   FMB, Mission & Campaign builder Discussions (http://forum.fulqrumpublishing.com/forumdisplay.php?f=203)
-   -   Show userlabel after recon passthrough (http://forum.fulqrumpublishing.com/showthread.php?t=35647)

salmo 11-03-2012 04:50 AM

Show userlabel after recon passthrough
 
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.

Code:

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:
Code:

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:
Code:

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?

Code:

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)
Code:

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.


All times are GMT. The time now is 12:49 PM.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © 2007 Fulqrum Publishing. All rights reserved.