Сообщение от
naryv
старались. Да, теперь можно делать юзерское меню, разной степени вложенности, и выполнять действия по выборам меню, например так
Пример менюшки http://simhq.com/forum/ubbthreads.ph...s/3385237.html
Код:
using System;
using System.Collections;
using maddox.game;
using maddox.game.world;
//GamePlay.gpHUDLogCenter("Pressed: " + menuItemIndex);
public class Mission : AMission {
bool dmgOn = false;
private void setMainMenu( Player player ) {
GamePlay.gpSetOrderMissionMenu( player, false, 0, new string[] { "Damage & Diagnostics" },
new bool[] { true } );
}
private void setSubMenu( Player player ) {
GamePlay.gpSetOrderMissionMenu( player, true, 1, new string[] { "Destroy Wings", "Destroy Engine",
"Destroy Guns", "Report Damage On", "Report Damage Off"}, new bool[] { false, false, false, false, false } );
}
public override void OnOrderMissionMenuSelected( Player player, int ID, int menuItemIndex ) {
if( ID == 0 ) { // main menu
if( menuItemIndex == 1 ) {
setSubMenu( player );
}
} else if( ID == 1 ) { // sub menu
if (menuItemIndex == 1)
{
Player[] all = { player };
AiActor where = player.Place();
AiAircraft aircraft = (GamePlay.gpPlayer().Place() as AiAircraft);
GamePlay.gpLogServer(all, "POW!!", null);
aircraft.cutLimb(part.LimbNames.WingR2);
setMainMenu( player );
}
else if (menuItemIndex == 2)
{
Player[] all = { player };
AiActor where = player.Place();
AiAircraft aircraft = (GamePlay.gpPlayer().Place() as AiAircraft);
GamePlay.gpLogServer(all, "POW!!", null);
aircraft.hitNamed(part.NamedDamageTypes.Eng0TotalFailure);
setMainMenu( player );
}
else if (menuItemIndex == 3)
{
Player[] all = { player };
AiActor where = player.Place();
AiAircraft aircraft = (GamePlay.gpPlayer().Place() as AiAircraft);
GamePlay.gpLogServer(all, "POW!!", null);
aircraft.hitNamed(part.NamedDamageTypes.Machinegun00Failure);
aircraft.hitNamed(part.NamedDamageTypes.Machinegun01Failure);
aircraft.hitNamed(part.NamedDamageTypes.Machinegun02Failure);
setMainMenu( player );
}
else if (menuItemIndex == 4)
{
dmgOn = true;
GamePlay.gpHUDLogCenter("Will show damage on all aircraft");
setMainMenu( player );
}
else if (menuItemIndex == 5)
{
dmgOn = false;
GamePlay.gpHUDLogCenter("Will not show damage on all aircraft");
setMainMenu( player );
}
}
}
public override void OnPlayerConnected( Player player ) {
if( MissionNumber == 0 ) {
setMainMenu( player );
}
}
public override void Inited() {
if( MissionNumber == 0 ) {
setMainMenu(GamePlay.gpPlayer());
}
}
public override void OnAircraftDamaged(int missionNumber, string shortName,
AiAircraft Aircraft, AiDamageInitiator DamageFrom, part.NamedDamageTypes WhatDamaged)
{
base.OnAircraftDamaged(missionNumber, shortName, Aircraft, DamageFrom, WhatDamaged);
if (DamageFrom.Player != null )
{
if (dmgOn == true)
{
GamePlay.gpLogServer (null, "{0} hits {1} : {2} \n", new object []
{DamageFrom.Player, shortName, WhatDamaged});
}
}
}
}