add ace arsenal button to main menu

This commit is contained in:
commy2 2017-12-22 09:39:01 +01:00
parent 4cfa64d73a
commit 1c2ebd0452
10 changed files with 563 additions and 1 deletions

View File

@ -0,0 +1,36 @@
class RscStandardDisplay;
class RscDisplayMain: RscStandardDisplay {
class controls {
class GroupSingleplayer: RscControlsGroupNoScrollbars {
class Controls;
};
class GroupTutorials: GroupSingleplayer {
h = "(6 * 1.5) * (pixelH * pixelGrid * 2)";
class Controls: Controls {
class Bootcamp;
class VRTraining;
class Arsenal;
class GVAR(mission): Arsenal {
idc = -1;
text = CSTRING(Mission);
tooltip = CSTRING(Mission_tooltip);
y = "(3 * 1.5) * (pixelH * pixelGrid * 2) + (pixelH)";
onbuttonclick = QUOTE(playMission [ARR_2('','PATHTOF(missions\Arsenal.VR)')]);
animTextureNormal = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenu_ca.paa"; //@todo custom icons
animTextureDisabled = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenu_ca.paa";
animTextureOver = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenuHover_ca.paa";
animTextureFocused = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenuHover_ca.paa";
animTexturePressed = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenu_ca.paa";
animTextureDefault = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\buttonMenu_ca.paa";
};
class FieldManual: Bootcamp {
y = "(4 * 1.5) * (pixelH * pixelGrid * 2) + (pixelH)";
};
class CommunityGuides: Bootcamp {
y = "(5 * 1.5) * (pixelH * pixelGrid * 2) + (pixelH)";
};
};
};
};
};

View File

@ -37,4 +37,5 @@ class Cfg3DEN {
};
#include "ui\RscAttributes.hpp"
#include "CfgEventHandlers.hpp"
#include "CfgEventHandlers.hpp"
#include "RscDisplayMain.hpp"

View File

@ -0,0 +1,26 @@
dev = "Karel";
author = $STR_A3_Bohemia_Interactive;
onLoadName = $STR_A3_Arsenal;
overviewText = $STR_A3_Arsenal_overviewText;
overviewPicture = "\A3\Ui_f\data\Logos\arsenal_1024_ca.paa";
briefing = 0;
debriefing = 0;
doneKeys[] = {"BIS_Arsenal.Map_VR_done"};
onPauseScript[] = {"arsenal_fnc_onPauseScript"};
class CfgFunctions
{
class Arsenal
{
class Misc
{
class createTarget {file = "fn_createTarget.sqf";};
class onPauseScript {file = "fn_onPauseScript.sqf";};
class opened {file = "fn_opened.sqf";};
class closed {file = "fn_closed.sqf";};
};
};
};

View File

@ -0,0 +1,33 @@
if !(_this select 1) then {
{
{
if (_x iskindof "VR_CoverObject_base_F") then {
[_x,0] call bis_fnc_setheight;
} else {
_x enablesimulation true;
_x hideobject false;
};
} foreach ([_x] + crew _x);
} foreach (allmissionobjects "All");
{
_unit = _x;
removevest _unit;
removebackpack _unit;
removeheadgear _unit;
removegoggles _unit;
removeallweapons _unit;
_unit addvest vest player;
_unit addbackpack backpack player;
_unit addheadgear headgear player;
_unit addgoggles goggles player;
_unit addweapon primaryweapon player;
_unit addweapon secondaryweapon player;
_unit addweapon handgunweapon player;
{_unit addprimaryweaponitem _x;} foreach (primaryweaponitems player);
{_unit addsecondaryweaponitem _x;} foreach (secondaryweaponitems player);
{_unit addhandgunitem _x;} foreach (handgunitems player);
} foreach (entities "B_Soldier_VR_F" + entities "O_Soldier_VR_F" + entities "I_Soldier_VR_F");
("RscVRMeta" call bis_fnc_rscLayer) cutrsc ["RscVRMeta","plain"];
};
player setvariable ["BIS_drawLines",true];

View File

@ -0,0 +1,54 @@
private ["_pos","_side","_obj","_grp","_type","_target"];
_pos = [_this,0,[],[[],objnull]] call bis_fnc_param;
_type = [_this,1,"B_Soldier_VR_F",["",objnull]] call bis_fnc_param;
_obj = _pos;
_grp = grpnull;
_var = "";
if (typename _obj == typename objnull) then {
_grp = group _obj;
_type = typeof _obj;
_pos = _obj getvariable ["pos",position objnull];
_var = _obj getvariable ["var",""];
[_obj,true] call bis_fnc_VREffectKilled;
} else {
_grp = creategroup east;
};
if (_var == "") then {_var = "t" + str round random 999999;};
_target = _grp createunit [_type,[10,10,0],[],0,"none"];
if !(isnull (missionnamespace getvariable ["BIS_fnc_arsenal_target",objnull])) then {_target hideobject true};
_target setpos _pos;
_target setdir ([_pos,player] call bis_fnc_dirto);
_target dowatch position player;
_target addrating -10e10;
_target setunitpos "up";
_target setbehaviour "careless";
_target setcombatmode "blue";
_target setspeedmode "limited";
_target disableai "target";
_target disableai "autotarget";
_target allowfleeing 0;
_target setspeaker "base";
_target spawn {_this setspeaker "base";};
player reveal [_target,4];
_target addvest vest player;
_target addbackpack backpack player;
_target addheadgear headgear player;
_target addgoggles goggles player;
_target addweapon primaryweapon player;
_target addweapon secondaryweapon player;
_target addweapon handgunweapon player;
_target setvehiclevarname _var;
missionnamespace setvariable [_var,_target];
_target switchmove "amovpercmstpslowwrfldnon";
_target setvariable ["pos",_pos];
_target setvariable ["var",_var];
_target addeventhandler ["killed",{_this spawn arsenal_fnc_createTarget;}];
[_target] call bis_fnc_VRHitpart;
_target

View File

@ -0,0 +1,11 @@
disableserialization;
_display = _this select 0;
_ctrlButtonAbort = _display displayctrl 104;
_ctrlButtonAbort ctrlsettext localize (["STR_A3_Arsenal","STR_A3_Garage"] select (missionnamespace getvariable ["bis_typeLast",0]));
_ctrlButtonAbort ctrlseteventhandler [
"buttonclick",
"(ctrlparent (_this select 0)) closedisplay 2; ['Open',true] spawn (uinamespace getvariable (['bis_fnc_arsenal','bis_fnc_garage'] select bis_typeLast)); true"
];
true

View File

@ -0,0 +1,15 @@
_player = missionnamespace getvariable ["BIS_fnc_arsenal_center",player];
{
{
if (_x iskindof "VR_CoverObject_base_F") then {
[_x,-10] call bis_fnc_setheight; //--- Move cover objects below ground instead, they have unexplainable problem with hideObject
} else {
_x enablesimulation false;
_x hideobject true;
};
} foreach ([_x] + crew _x - [_player]);
} foreach (allmissionobjects "All" - [_player]);
("RscVRMeta" call bis_fnc_rscLayer) cuttext ["","plain"];
player setvariable ["BIS_drawLines",false];
player setfatigue 0;

View File

@ -0,0 +1,215 @@
"init" call bis_fnc_startloadingscreen;
//enableenvironment false;
enablesaving [false,false];
player allowdamage false;
activateKey format ["BIS_%1.%2_done", missionName, worldName];
cuttext ["","black in",1e10];
waituntil {!isnull (finddisplay 46)};
player switchmove "amovpercmstpslowwrfldnon";
player call bis_fnc_traceBullets;
//--- Static targets in various distance
{
_pos = [player,_x,180 + _foreachindex] call bis_fnc_relpos;
[_pos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget;
} foreach [10,20,30,40,50,100,500,1000,2000];
//--- Target line
_pos = [player,20,90] call bis_fnc_relpos;
for "_i" from 0 to 5 do {
_iPos = [(_pos select 0),(_pos select 1) - 3 + _i,0];
[_ipos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget;
};
//--- Target cluster
_pos = [player,20,-90] call bis_fnc_relpos;
for "_i" from 0 to 8 do {
_index = floor (_i / 3);
_iPos = [
(_pos select 0) + _index * 1.5,
(_pos select 1) + 1.5 + (_i % 3),
0
];
_target = [_ipos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget;
_target switchmove (["aidlpercmstpslowwrfldnon","aidlpknlmstpslowwrfldnon_ai","aidlppnemstpsraswrfldnon_ai"] select _index);
_target setunitpos (["up","middle","down"] select _index);
};
//--- Target patrol
_grp = creategroup east;
{
_wp = _grp addwaypoint [[player,10,_x] call bis_fnc_relpos,0];
if (_foreachindex == 4) then {_wp setwaypointtype "cycle";};
} foreach [0,90,180,270,0];
_pos = [player,10,0] call bis_fnc_relpos;
for "_i" from 0 to 1 do {
_target = [_pos,"O_Soldier_VR_F"] call arsenal_fnc_createTarget;
[_target] join _grp;
_target stop false;
_target enableai "move";
_target setspeedmode "limited";
};
//--- Armored vehicles
_vehicles = [];
if (isclass (configfile >> "cfgvehicles" >> "Land_VR_Target_MRAP_01_F")) then {
_step = 15;
_posCenter = [position player select 0,(position player select 1) + 30,0];
{
_row = _foreachindex;
_rowCount = (count _x - 1) * 0.5;
{
_pos = [
(_posCenter select 0) + (-_rowCount + _foreachindex) * _step,
(_posCenter select 1) + _row * _step,
0
];
_veh = createvehicle [_x,_pos,[],0,"none"];
_veh setpos _pos;
_veh setdir 180;
_veh setvelocity [0,0,-1];
[_veh] call bis_fnc_VRHitpart;
_marker = _veh call bis_fnc_boundingboxmarker;
_marker setmarkercolor "colororange";
_vehicles pushback _veh;
} foreach _x;
} foreach [
[
"Land_VR_Target_MRAP_01_F",
"Land_VR_Target_APC_Wheeled_01_F",
"Land_VR_Target_MBT_01_cannon_F"
],
[
"Land_VR_Target_MRAP_01_F",
"Land_VR_Target_APC_Wheeled_01_F",
"Land_VR_Target_MBT_01_cannon_F"
]
];
};
_vehicles spawn {
waituntil {
_allDisabled = true;
{
_hitalive = _x getvariable ["bis_fnc_VRHitParts_hitalive",[]];
_allDisabled = _allDisabled && ({!_x} count _hitalive >= 2);
sleep 0.1;
} foreach _this;
_allDisabled
};
setstatvalue ["MarkMassVirtualDestruction",1];
};
//--- Cover objects
_coverObjects = [
"Land_VR_CoverObject_01_kneel_F",
"Land_VR_CoverObject_01_kneelHigh_F",
"Land_VR_CoverObject_01_kneelLow_F",
"Land_VR_CoverObject_01_stand_F",
"Land_VR_CoverObject_01_standHigh_F"
];
_dis = 3;
for "_i" from 5 to 11 do {
_dir = _i * 45;
_pos = [position player,(abs sin _dir + abs cos _dir) * _dis,_dir] call bis_fnc_relpos;
_block = createvehicle [_coverObjects select (_i % count _coverObjects),_pos,[],0,"none"];
_block setpos _pos;
};
//--- Starting point
_square = createvehicle ["VR_Area_01_square_1x1_grey_F",position player,[],0,"none"];
_square setpos position player;
_marker = createmarker ["bis_start",position player];
_marker setmarkertype "mil_start";
//--- Garage position
_centerPos = [player,[16,16,0] vectorDistance [0,0,0],135] call bis_fnc_relpos;
_squareGarage = createvehicle ["VR_Area_01_square_4x4_grey_F",_centerPos,[],0,"none"];
_squareGarage setpos _centerPos;
BIS_fnc_garage_center = createvehicle ["Land_HelipadEmpty_F",_centerPos,[],0,"none"];
BIS_fnc_garage_center setpos _centerPos;
BIS_fnc_garage_center enablesimulation false;
player addeventhandler [
"animchanged",
{
_unit = _this select 0;
_anim = _this select 1;
_animSplit = [_anim,"_"] call bis_fnc_splitstring;
if ("salute" in _animSplit) then {
{
_x playaction "salute";
} foreach ((position _unit nearobjects ["man",10]) - [player]);
};
}
];
disableserialization;
"init" call bis_fnc_endloadingscreen;
bis_typeLast = 0;
[
missionnamespace,
"arsenalOpened",
{
_this call arsenal_fnc_opened;
bis_typeLast = 0;
}
] call bis_fnc_addscriptedeventhandler;
[
missionnamespace,
"arsenalClosed",
{
_this call arsenal_fnc_closed;
}
] call bis_fnc_addscriptedeventhandler;
[
missionnamespace,
"garageOpened",
{
_this call arsenal_fnc_opened;
bis_typeLast = 1;
}
] call bis_fnc_addscriptedeventhandler;
[
missionnamespace,
"garageClosed",
{
_this call arsenal_fnc_closed;
}
] call bis_fnc_addscriptedeventhandler;
//--- Open Arsenal
bis_fnc_arsenal_fullArsenal = true;
bis_fnc_arsenal_fullGarage = true;
if ((uinamespace getvariable ["bis_fnc_arsenal_typeDefault",0]) > 0) then {
["Open",true] spawn bis_fnc_garage;
} else {
["Open",true] spawn bis_fnc_arsenal;
};
uinamespace setvariable ["bis_fnc_arsenal_typeDefault",nil];
["#(argb,8,8,3)color(0,0,0,1)",false,nil,0.1,[0,0.5]] spawn bis_fnc_textTiles;
//--- Target markers
[] spawn {
_targets = [];
{
_targets pushback vehiclevarname _x;
_var = vehiclevarname _x;
_marker = createmarker [_var,position _x];
_marker setmarkertype "mil_dot";
_marker setmarkercolor "colororange";
} foreach (allmissionobjects "man") - [player];
while {true} do {
{
_t = missionnamespace getvariable _x;
(vehiclevarname _t) setmarkerpos position _t;
} foreach _targets;
sleep 0.1;
};
};

View File

@ -0,0 +1,163 @@
version=12;
class Mission
{
addOns[]=
{
"A3_Map_VR",
"A3_Characters_F_BLUFOR",
"a3_characters_f_beta",
"a3_characters_f"
};
addOnsAuto[]=
{
"A3_Characters_F_BLUFOR",
"a3_characters_f",
"A3_Map_VR"
};
randomSeed=5486937;
class Intel
{
briefingName="@STR_A3_Arsenal";
startWeather=0;
startWind=0.099999994;
startWaves=0.099999994;
forecastWeather=0;
forecastWind=0.099999994;
forecastWaves=0.099999994;
forecastLightnings=0.099999994;
year=2035;
month=2;
day=24;
hour=12;
minute=0;
startFogDecay=0.0049999999;
forecastFogDecay=0.0049999999;
};
class Groups
{
items=1;
class Item0
{
side="CIV";
class Vehicles
{
items=1;
class Item0
{
position[]={4256,5,4192};
azimut=180;
id=0;
side="CIV";
vehicle="C_man_1";
player="PLAYER COMMANDER";
leader=1;
skill=0.60000002;
};
};
};
};
class Sensors
{
items=1;
class Item0
{
position[]={4271.2827,5,4170.251};
a=0;
b=0;
interruptable=1;
age="UNKNOWN";
expCond="cheat1";
expActiv="endmission ""end1""";
class Effects
{
};
};
};
};
class Intro
{
addOns[]=
{
"A3_Map_VR"
};
addOnsAuto[]=
{
"A3_Map_VR"
};
randomSeed=12455686;
class Intel
{
timeOfChanges=1800.0002;
startWeather=0;
startWind=0.1;
startWaves=0.1;
forecastWeather=0;
forecastWind=0.1;
forecastWaves=0.1;
forecastLightnings=0.1;
year=2035;
day=28;
hour=13;
minute=37;
startFogDecay=0.0049999999;
forecastFogDecay=0.0049999999;
};
};
class OutroWin
{
addOns[]=
{
"A3_Map_VR"
};
addOnsAuto[]=
{
"A3_Map_VR"
};
randomSeed=9312504;
class Intel
{
timeOfChanges=1800.0002;
startWeather=0;
startWind=0.1;
startWaves=0.1;
forecastWeather=0;
forecastWind=0.1;
forecastWaves=0.1;
forecastLightnings=0.1;
year=2035;
day=28;
hour=13;
minute=37;
startFogDecay=0.0049999999;
forecastFogDecay=0.0049999999;
};
};
class OutroLoose
{
addOns[]=
{
"A3_Map_VR"
};
addOnsAuto[]=
{
"A3_Map_VR"
};
randomSeed=15192082;
class Intel
{
timeOfChanges=1800.0002;
startWeather=0;
startWind=0.1;
startWaves=0.1;
forecastWeather=0;
forecastWind=0.1;
forecastWaves=0.1;
forecastLightnings=0.1;
year=2035;
day=28;
hour=13;
minute=37;
startFogDecay=0.0049999999;
forecastFogDecay=0.0049999999;
};
};

View File

@ -433,5 +433,13 @@
<Italian>Impossibile aprire l'arsenale ACE</Italian>
<Japanese>ACE 武器庫を開けません</Japanese>
</Key>
<Key ID="STR_ACE_Arsenal_Mission">
<English>ACE Virtual Arsenal</English>
<German>ACE Virtuelles Arsenal</German>
</Key>
<Key ID="STR_ACE_Arsenal_Mission_tooltip">
<English>View and try out different weapons, equipment and vehicles.</English>
<German>Sieh dir verschiedene Waffen, Ausrüstung und Fahrzeuge an und probiere sie aus.</German>
</Key>
</Package>
</Project>