![]() |
#11
|
|||
|
|||
![]()
Update: Labels working now
![]() Updated Update: Not in Multiplayer ![]() My testscript use the Missionmenu to create the Labels: Code:
using System; using maddox.game; using maddox.game.world; using System.Collections.Generic; using maddox.GP; public class Mission : AMission { class Recon { public Player ReconPlayer { get; internal set; } public List<GPUserLabel> Labels = new List<GPUserLabel>(); public Recon(Player player, GPUserLabel userLabel) { ReconPlayer = player; if (userLabel != null) { Labels.Add(userLabel); } } } List<Recon> ActiveRecons = new List<Recon>(); public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex) { base.OnPlaceEnter(player, actor, placeIndex); SetMainMenu(player); } enum MenuID { MainMenu, ReconMenu, } public void SetMainMenu(Player player) { GamePlay.gpSetOrderMissionMenu(player, false, (int)MenuID.MainMenu, new string[] { "Recon" }, new bool[] { true }); } public void SetReconMenu(Player player) { GamePlay.gpSetOrderMissionMenu(player, true, (int)MenuID.ReconMenu, new string[] { "Set AAA Mark", "Set Tank Mark", "Set Plane Mark", "Set Factory Mark", "Set Car Mark", "Set Label", "Set Ship Mark", "Set WayPoint Mark", "Delete Marks" }, new bool[] { false, false, false, false, false, false, false, false, false }); } public override void OnOrderMissionMenuSelected(Player player, int ID, int menuItemIndex) { base.OnOrderMissionMenuSelected(player, ID, menuItemIndex); if (ID == 0) { // main menu if (menuItemIndex == 1) { SetReconMenu(player); } else { SetMainMenu(player); } } else if (ID == (int)MenuID.ReconMenu) { switch (menuItemIndex) { case 1: AddReconMark(player, GPUserIconType.AAGun); SetMainMenu(player); break; case 2: AddReconMark(player, GPUserIconType.Tank); SetMainMenu(player); break; case 3: AddReconMark(player, GPUserIconType.Plane); SetMainMenu(player); break; case 4: AddReconMark(player, GPUserIconType.Factory); SetMainMenu(player); break; case 5: AddReconMark(player, GPUserIconType.Car); SetMainMenu(player); break; case 6: AddReconMark(player, GPUserIconType.Label); SetMainMenu(player); break; case 7: AddReconMark(player, GPUserIconType.Ship); SetMainMenu(player); break; case 8: AddReconMark(player, GPUserIconType.Waypoint); SetMainMenu(player); break; case 9: RemoveMarks(player); SetMainMenu(player); break; default: SetMainMenu(player); break; } } } private void RemoveMarks(Player player) { if (ActiveRecons.Exists(item => item.ReconPlayer == player)) { Recon recon = ActiveRecons.Find(item => item.ReconPlayer == player); recon.Labels.ForEach(item => GamePlay.gpDeleteUserLabel(item)); recon.Labels.Clear(); } } private void AddReconMark(Player player, GPUserIconType iconType) { AiActor actor = player.Place(); GPUserLabel newLable =null; if (actor != null) { Point2d pos = new Point2d(actor.Pos().x, actor.Pos().y); switch (iconType) { case GPUserIconType.AAGun: newLable = GamePlay.gpMakeUserLabel(pos, player, "AAA", GamePlay.gpTimeofDay(), (int)GPUserIconType.AAGun); break; case GPUserIconType.Tank: newLable = GamePlay.gpMakeUserLabel(pos, player, "Tanks", GamePlay.gpTimeofDay(), (int)GPUserIconType.Tank); break; case GPUserIconType.Plane: newLable = GamePlay.gpMakeUserLabel(pos, player, "Planes", GamePlay.gpTimeofDay(), (int)GPUserIconType.Plane); break; case GPUserIconType.Factory: newLable = GamePlay.gpMakeUserLabel(pos, player, "Factory", GamePlay.gpTimeofDay(), (int)GPUserIconType.Factory); break; case GPUserIconType.Car: newLable = GamePlay.gpMakeUserLabel(pos, player, "Car", GamePlay.gpTimeofDay(), (int)GPUserIconType.Car); break; case GPUserIconType.Label: newLable = GamePlay.gpMakeUserLabel(pos, player, "Label", GamePlay.gpTimeofDay(), (int)GPUserIconType.Label); break; case GPUserIconType.Ship: newLable = GamePlay.gpMakeUserLabel(pos, player, "Ship", GamePlay.gpTimeofDay(), (int)GPUserIconType.Ship); break; case GPUserIconType.Waypoint: newLable = GamePlay.gpMakeUserLabel(pos, player, "Waypoint", GamePlay.gpTimeofDay(), (int)GPUserIconType.Waypoint); break; } if (newLable != null) { if (ActiveRecons.Exists(item => item.ReconPlayer == player)) ActiveRecons.Find(item => item.ReconPlayer == player).Labels.Add(newLable); else ActiveRecons.Add(new Recon (player, newLable)); GamePlay.gpDrawUserLabel(player.Army(), newLable); } } } static string CreateTimeString(double num) { double hours = Math.Floor(num); double minutes = (num - hours) * 60.0; double seconds = (minutes - Math.Floor(minutes)) * 60.0; int H = (int)Math.Floor(hours); int M = (int)Math.Floor(minutes); int S = (int)Math.Floor(seconds); return H.ToString("00") + ":" + M.ToString("00") + ":" + S.ToString("00"); } public override void OnUserCreateUserLabel(GPUserLabel ul) { base.OnUserCreateUserLabel(ul); GamePlay.gpLogServer(null, "OnUserCreateUserLabel: {0} created {1} Mark at {2} ", new object[] { ul.Player.Name(), ul.Text, CreateTimeString(ul.time) }); } } Last edited by FG28_Kodiak; 10-26-2012 at 11:02 AM. |
|
|