Ported the ACE2 spotting scope

This commit is contained in:
ulteq 2015-06-05 09:34:27 +02:00
parent e01ba64683
commit 993ee2d498
37 changed files with 616 additions and 0 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
z\ace\addons\spottingscope

View File

@ -0,0 +1,19 @@
class Extended_PreInit_EventHandlers {
class ADDON {
init = QUOTE( call COMPILE_FILE(XEH_preInit) );
};
};
class Extended_PostInit_EventHandlers {
class ADDON {
init = QUOTE( call COMPILE_FILE(XEH_postInit) );
};
};
class Extended_Init_EventHandlers {
class ACE_SpottingScopeObject {
class ADDON {
init = QUOTE(_this call DEFUNC(dragging,initObject));
};
};
};

View File

@ -0,0 +1,129 @@
class CfgVehicles {
class Man;
class CAManBase: Man {
class ACE_SelfActions {
class ACE_Equipment {
class GVAR(place) {
displayName = CSTRING(Placedown);
condition = QUOTE([ARR_2(_player,'ACE_SpottingScope')] call EFUNC(common,hasItem));
statement = QUOTE([ARR_2(_player,'ACE_SpottingScope')] call FUNC(place));
showDisabled = 0;
priority = 2;
icon = PATHTOF(UI\w_spottingscope_ca.paa);
exceptions[] = {"isNotInside"};
};
};
};
};
class Item_Base_F;
class ACE_Item_SpottingScope: Item_Base_F {
author[] = {"Rocko", "Scubaman3D"};
scope = 2;
scopeCurator = 2;
displayName = CSTRING(DisplayName);
vehicleClass = "Items";
class TransportItems {
class ACE_SpottingScope {
name = "ACE_SpottingScope";
count = 1;
};
};
};
class Box_NATO_Support_F;
class ACE_Box_Misc: Box_NATO_Support_F {
class TransportItems {
MACRO_ADDITEM(ACE_Item_SpottingScope,2);
};
};
class LandVehicle;
class StaticWeapon: LandVehicle {
class Turrets;
};
class StaticATWeapon: StaticWeapon {
class Turrets: Turrets {
class MainTurret;
};
};
class ACE_SpottingScopeObject: StaticATWeapon {
XEH_ENABLED;
scope = 1;
side = 1;
typicalCargo[] = {"Soldier"};
displayName = CSTRING(DisplayName);
model = PATHTOF(data\spottingscope.p3d);
mapSize = 0.5;
transportSoldier = 0;
getInAction = "GetInLow";
getOutAction = "GetOutLow";
class Turrets: Turrets {
class MainTurret: MainTurret {
minTurn = -45;
maxTurn = 45;
initTurn = 0;
minElev = -10;
maxElev = 40;
initElev = 0;
weapons[] = {};
magazines[] = {};
gunnerOpticsColor[] = {1,1,1,1};
gunnerOpticsmodel = PATHTOF(data\m144_optic.p3d);
gunnerOpticsEffect[] = {"OpticsCHAbera1","OpticsBlur2"};
gunnerOutOpticsShowCursor = 0;
gunnerOpticsShowCursor = 0;
gunnerAction = "gunner_static_low01";
gunnerGetInAction = "GetInLow";
gunnerGetOutAction = "GetOutLow";
gunnerForceOptics = 0;
ejectDeadGunner = 0;
class ViewGunner {
initAngleX = 5;
minAngleX = -30;
maxAngleX = 30;
initAngleY = 0;
minAngleY = -100;
maxAngleY = 100;
initFov = 0.7;
minFov = 0.7;
maxFov = 0.7;
};
class ViewOptics {
initAngleX = 0;
minAngleX = -30;
maxAngleX = 30;
initAngleY = 0;
minAngleY = -100;
maxAngleY = 100;
initFov = 0.014812;
minFov = 0.014812;
maxFov = 0.014812;
};
};
};
EGVAR(dragging,canDrag) = 1;
EGVAR(dragging,dragPosition[]) = {0,1,0};
EGVAR(dragging,dragDirection) = 0;
class ACE_Actions {
class ACE_MainActions {
selection = "osaveze";
distance = 5;
condition = "true";
class ACE_Pickup {
selection = "";
displayName = CSTRING(PickUp);
distance = 5;
condition = QUOTE((alive _target) && (count (crew _target) == 0));
statement = QUOTE([ARR_2(_target,_player)] call FUNC(pickup));
showDisabled = 0;
exceptions[] = {};
priority = 5;
icon = PATHTOF(UI\w_spottingscope_ca.paa);
};
};
};
};
};

View File

@ -0,0 +1,17 @@
class CfgWeapons {
class ACE_ItemCore;
class InventoryItem_Base_F;
class ACE_SpottingScope: ACE_ItemCore {
scope = 2;
displayName = CSTRING(DisplayName);
descriptionShort = "";
picture = PATHTOF(UI\w_spottingscope_ca.paa);
model = PATHTOF(data\w_spottingscope.p3d);
class ItemInfo: InventoryItem_Base_F {
mass = 40;
};
};
};

View File

@ -0,0 +1,10 @@
ace_spottingscope
===============
Adds a spotting scope.
## Maintainers
The people responsible for merging changes to this component or answering potential questions.
- [Ruthberg] (http://github.com/Ulteq)

Binary file not shown.

View File

@ -0,0 +1 @@
#include "script_component.hpp"

View File

@ -0,0 +1,8 @@
#include "script_component.hpp"
ADDON = false;
PREP(pickup);
PREP(place);
ADDON = true;

View File

@ -0,0 +1,16 @@
#include "script_component.hpp"
class CfgPatches {
class ADDON {
units[] = {"ACE_Item_SpottingScope"};
weapons[] = {"ACE_SpottingScope"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_apl", "ace_interaction"};
author[] = {"Rocko", "Scubaman3D", "Ruthberg"};
VERSION_CONFIG;
};
};
#include "CfgEventHandlers.hpp"
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"

Binary file not shown.

View File

@ -0,0 +1,9 @@
ambient[] = {0, 0, 0, 1};
diffuse[] = {0, 0, 0, 1};
forcedDiffuse[] = {0, 0, 0, 0};
emmisive[] = {1, 1, 1, 1};
specular[] = {0, 0, 0, 1};
specularPower = 0;
renderFlags[] = {"NoZWrite"};
PixelShaderID = "Normal";
VertexShaderID = "Basic";

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,49 @@
class CfgSkeletons
{
class Default {
isDiscrete = 1;
skeletonInherit = "";
skeletonBones[] = {};
};
class ace_spottingscope_skeleton: Default {
isDiscrete = 1;
skeletonInherit = "Default";
skeletonBones[] = {
"otocvez","",
"otochlaven","otocvez"
};
};
};
class CfgModels {
class Default {
sectionsInherit = "";
sections[] = {};
skeletonName = "";
};
class spottingscope: Default {
skeletonName = "ace_spottingscope_skeleton";
sectionsInherit = "Default";
class animations {
class mainTurret {
type = "rotationY";
source = "mainTurret";
selection = "otocvez";
axis = "osaveze";
minValue = "rad -360";
maxValue = "rad +360";
angle0 = "rad -360";
angle1 = "rad +360";
};
class mainGun {
type = "rotationX";
source = "mainGun";
selection = "otochlaven";
axis = "osahlavne";
minValue = "rad -360";
maxValue = "rad +360";
angle0 = "rad -360";
angle1 = "rad +360";
};
};
};
};

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,78 @@
ambient[] = {1.0, 1.0, 1.0, 1.0};
diffuse[] = {1.0, 1.0, 1.0, 1.0};
forcedDiffuse[] = {0.0, 0.0, 0.0, 0.0};
emmisive[] = {0.0, 0.0, 0.0, 1.0};
specular[] = {0.0, 0.0, 0.0, 0.0};
specularPower = 0.0;
PixelShaderID = "Super";
VertexShaderID = "Super";
class Stage1 {
texture = "z\ace\addons\spottingscope\data\sniper_peri_nohq.paa";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2 {
texture = "z\ace\addons\apl\data\metal4_weapons_vehicles_int_512_dt.paa";
uvSource = "tex";
class uvTransform {
aside[] = {6.0, 0.0, 0.0};
up[] = {0.0, 6.0, 0.0};
dir[] = {0.0, 0.0, 0.0};
pos[] = {0.0, 0.0, 0.0};
};
};
class Stage3 {
texture = "#(argb,8,8,3)color(0,0,0,0)";
uvSource = "tex";
class uvTransform {
aside[] = {1,0,0};
up[] = {0,1,0};
dir[] = {0,0,0};
pos[] = {0,0,0};
};
};
class Stage4 {
texture = "#(argb,8,8,3)color(0,1,1,1)";
uvSource = "tex";
class uvTransform {
aside[] = {1.0, 0.0, 0.0};
up[] = {0.0, 1.0, 0.0};
dir[] = {0.0, 0.0, 0.0};
pos[] = {0.0, 0.0, 0.0};
};
};
class Stage5 {
texture = "z\ace\addons\spottingscope\data\sniper_peri_smdi.paa";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage6 {
texture = "#(ai,32,128,1)fresnel(1.58,0.01)";
uvSource = "tex";
class uvTransform {
aside[] = {1.0, 0.0, 0.0};
up[] = {0.0, 1.0, 0.0};
dir[] = {0.0, 0.0, 0.0};
pos[] = {0.0, 0.0, 0.0};
};
};
class Stage7 {
texture = "a3\data_f\env_land_co.paa";
uvSource = "tex";
class uvTransform {
aside[] = {1.0, 0.0, 0.0};
up[] = {0.0, 1.0, 0.0};
dir[] = {0.0, 0.0, 0.0};
pos[] = {0.0, 0.0, 0.0};
};
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,78 @@
ambient[] = {1.0, 1.0, 1.0, 1.0};
diffuse[] = {1.0, 1.0, 1.0, 1.0};
forcedDiffuse[] = {0.0, 0.0, 0.0, 0.0};
emmisive[] = {0.0, 0.0, 0.0, 1.0};
specular[] = {0.0, 0.0, 0.0, 0.0};
specularPower = 0.0;
PixelShaderID = "Super";
VertexShaderID = "Super";
class Stage1 {
texture = "z\ace\addons\spottingscope\data\spot_scope_nohq.paa";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2 {
texture = "z\ace\addons\apl\data\plastic_512_dt.paa";
uvSource = "tex";
class uvTransform {
aside[] = {6.0, 0.0, 0.0};
up[] = {0.0, 6.0, 0.0};
dir[] = {0.0, 0.0, 0.0};
pos[] = {0.0, 0.0, 0.0};
};
};
class Stage3 {
texture = "#(argb,8,8,3)color(0,0,0,0)";
uvSource = "tex";
class uvTransform {
aside[] = {1,0,0};
up[] = {0,1,0};
dir[] = {0,0,0};
pos[] = {0,0,0};
};
};
class Stage4 {
texture = "#(argb,8,8,3)color(0,1,1,1)";
uvSource = "tex";
class uvTransform {
aside[] = {1.0, 0.0, 0.0};
up[] = {0.0, 1.0, 0.0};
dir[] = {0.0, 0.0, 0.0};
pos[] = {0.0, 0.0, 0.0};
};
};
class Stage5 {
texture = "z\ace\addons\spottingscope\data\spot_scope_smdi.paa";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage6 {
texture = "#(ai,32,128,1)fresnel(1.58,0.01)";
uvSource = "tex";
class uvTransform {
aside[] = {1.0, 0.0, 0.0};
up[] = {0.0, 1.0, 0.0};
dir[] = {0.0, 0.0, 0.0};
pos[] = {0.0, 0.0, 0.0};
};
};
class Stage7 {
texture = "a3\data_f\env_land_co.paa";
uvSource = "tex";
class uvTransform {
aside[] = {1.0, 0.0, 0.0};
up[] = {0.0, 1.0, 0.0};
dir[] = {0.0, 0.0, 0.0};
pos[] = {0.0, 0.0, 0.0};
};
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,79 @@
ambient[] = {1.0, 1.0, 1.0, 1.0};
diffuse[] = {1.0, 1.0, 1.0, 1.0};
forcedDiffuse[] = {0.0, 0.0, 0.0, 0.0};
emmisive[] = {0.0, 0.0, 0.0, 1.0};
specular[] = {0.0, 0.0, 0.0, 0.0};
specularPower = 0.0;
PixelShaderID = "Super";
VertexShaderID = "Super";
class Stage1 {
texture = "z\ace\addons\spottingscope\data\spot_scope_nohq.paa";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2 {
texture = "z\ace\addons\apl\data\metal4_weapons_vehicles_int_512_dt.paa";
uvSource = "tex";
class uvTransform {
aside[] = {6.0, 0.0, 0.0};
up[] = {0.0, 6.0, 0.0};
dir[] = {0.0, 0.0, 0.0};
pos[] = {0.0, 0.0, 0.0};
};
};
class Stage3 {
texture = "#(argb,8,8,3)color(0,0,0,0)";
uvSource = "tex";
class uvTransform {
aside[] = {1,0,0};
up[] = {0,1,0};
dir[] = {0,0,0};
pos[] = {0,0,0};
};
};
class Stage4 {
texture = "#(argb,8,8,3)color(0,1,1,1)";
uvSource = "tex";
class uvTransform {
aside[] = {1.0, 0.0, 0.0};
up[] = {0.0, 1.0, 0.0};
dir[] = {0.0, 0.0, 0.0};
pos[] = {0.0, 0.0, 0.0};
};
};
class Stage5 {
texture = "z\ace\addons\spottingscope\data\spot_scope_smdi.paa";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage6 {
texture = "#(ai,32,128,1)fresnel(1.58,0.01)";
uvSource = "tex";
class uvTransform {
aside[] = {1.0, 0.0, 0.0};
up[] = {0.0, 1.0, 0.0};
dir[] = {0.0, 0.0, 0.0};
pos[] = {0.0, 0.0, 0.0};
};
};
class Stage7 {
texture = "a3\data_f\env_land_co.paa";
uvSource = "tex";
class uvTransform {
aside[] = {1.0, 0.0, 0.0};
up[] = {0.0, 1.0, 0.0};
dir[] = {0.0, 0.0, 0.0};
pos[] = {0.0, 0.0, 0.0};
};
};

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,30 @@
/*
* Author: Rocko, Ruthberg
*
* Pick up spotting scope
*
* Arguments:
* 0: spotting scope <OBJECT>
* 1: unit <OBJECT>
*
* Return Value:
* Nothing
*
* Return value:
* None
*/
#include "script_component.hpp"
PARAMS_2(_spottingScope,_unit);
if ((_unit call CBA_fnc_getUnitAnim) select 0 == "stand") then {
_unit playMove "AmovPercMstpSrasWrflDnon_diary";
};
[{
PARAMS_2(_spottingScope,_unit);
_unit addItem "ACE_SpottingScope";
deleteVehicle _spottingScope;
}, [_spottingScope, _unit], 1, 0]call EFUNC(common,waitAndExecute);

View File

@ -0,0 +1,41 @@
/*
* Author: Rocko, Ruthberg
*
* Place down spotting scope
*
* Arguments:
* 0: unit <OBJECT>
* 1: scope class <STRING>
*
* Return Value:
* Nothing
*
* Return value:
* None
*/
#include "script_component.hpp"
PARAMS_2(_unit,_scopeClass);
_unit removeItem _scopeClass;
if ((_unit call CBA_fnc_getUnitAnim) select 0 == "stand") then {
_unit playMove "AmovPercMstpSrasWrflDnon_diary";
};
[{
PARAMS_1(_unit);
private ["_direction", "_position", "_spottingScope"];
_direction = getDir _unit;
_position = (getPosASL _unit) vectorAdd [0.8 * sin(_direction), 0.8 * cos(_direction), 0.02];
_spottingScope = "ACE_SpottingScopeObject" createVehicle [0, 0, 0];
_spottingScope setDir _direction;
_spottingScope setPosASL _position;
if ((getPosATL _spottingScope select 2) - (getPos _spottingScope select 2) < 1E-5) then {
_spottingScope setVectorUp (surfaceNormal (position _spottingScope));
};
_unit reveal _spottingScope;
}, [_unit], 1, 0] call EFUNC(common,waitAndExecute);

View File

@ -0,0 +1 @@
#include "\z\ace\addons\spottingscope\script_component.hpp"

View File

@ -0,0 +1,12 @@
#define COMPONENT spottingscope
#include "\z\ace\addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_SPOTTINGSCOPE
#define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_SPOTTINGSCOPE
#define DEBUG_SETTINGS DEBUG_SETTINGS_SPOTTINGSCOPE
#endif
#include "\z\ace\addons\main\script_macros.hpp"

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="tripod">
<Key ID="STR_ACE_SpottingScope_DisplayName">
<English>Spotting Scope</English>
<German>Teleskop</German>
<Russian>Зрительная труба</Russian>
<Polish>Teleskop</Polish>
<Spanish>Spotting Scope</Spanish>
<French>Téléscope de visée</French>
<Czech>Zaměřovací Dalekohled</Czech>
<Italian>Spotting Scope</Italian>
<Hungarian>Megfigyelő távcső</Hungarian>
</Key>
<Key ID="STR_ACE_SpottingScope_PickUp">
<English>Pick up Spotting Scope</English>
<German>Teleskop aufnehmen</German>
<Russian>Поднять зрительная трубу</Russian>
<Polish>Zabierz teleskop</Polish>
<Spanish>Pick up Spotting Scope</Spanish>
<French>Prendre téléscope de visée</French>
<Czech>Zvednout Zaměřovací dalekohled</Czech>
<Italian>Raccogli spottingscope</Italian>
<Hungarian>Mefgigy. távcső felvétele</Hungarian>
</Key>
<Key ID="STR_ACE_SpottingScope_PlaceDown">
<English>Place Spotting Scope</English>
<German>Teleskop aufstellen</German>
<Russian>Установить зрительная трубу</Russian>
<Polish>Ustaw teleskop</Polish>
<Spanish>Place Spotting Scope</Spanish>
<French>Placer téléscope de visée</French>
<Czech>Položit Zaměřovací dalekohled</Czech>
<Italian>Posiziona spottingscope</Italian>
<Hungarian>Megfigy. távcső elhelyezése</Hungarian>
</Key>
</Package>
</Project>