mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' of https://github.com/acemod/ACE3 into handSignals
This commit is contained in:
commit
fd1c38c612
@ -183,13 +183,13 @@ class CfgGlasses {
|
||||
ACE_Resistance = 1;
|
||||
ACE_Protection = 1;
|
||||
};
|
||||
class G_Bandanna_sport:G_Bandanna_blk {
|
||||
class G_Bandanna_sport: G_Bandanna_shades {
|
||||
ACE_Color[] = {1,0,0};
|
||||
ACE_TintAmount=COLOUR;
|
||||
ACE_Resistance = 1;
|
||||
ACE_Protection = 1;
|
||||
};
|
||||
class G_Bandanna_aviator:G_Bandanna_blk {
|
||||
class G_Bandanna_aviator: G_Bandanna_shades {
|
||||
ACE_Color[] = {0,0,-1};
|
||||
ACE_TintAmount=COLOUR;
|
||||
ACE_Resistance = 1;
|
||||
|
@ -25,4 +25,10 @@ class ACE_Settings {
|
||||
displayName = CSTRING(enabledForZeusUnits_DisplayName);
|
||||
description = CSTRING(enabledForZeusUnits_Description);
|
||||
};
|
||||
class GVAR(autoAddEarplugsToUnits) {
|
||||
value = 1;
|
||||
typeName = "BOOL";
|
||||
displayName = CSTRING(autoAddEarplugsToUnits_DisplayName);
|
||||
description = CSTRING(autoAddEarplugsToUnits_Description);
|
||||
};
|
||||
};
|
||||
|
@ -13,7 +13,7 @@ class Extended_PostInit_EventHandlers {
|
||||
class Extended_Init_EventHandlers {
|
||||
class CAManBase {
|
||||
class GVAR(AddEarPlugs) {
|
||||
init = QUOTE( if (local (_this select 0)) then {_this call FUNC(addEarPlugs)}; );
|
||||
serverInit = QUOTE( _this call FUNC(addEarPlugs) );
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -33,3 +33,11 @@ class Extended_Explosion_EventHandlers {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_Respawn_EventHandlers {
|
||||
class CAManBase {
|
||||
class ADDON {
|
||||
respawn = QUOTE(_this call FUNC(handleRespawn));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -137,6 +137,12 @@ class CfgVehicles {
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class autoAddEarplugsToUnits {
|
||||
displayName = CSTRING(autoAddEarplugsToUnits_DisplayName);
|
||||
description = CSTRING(autoAddEarplugsToUnits_Description);
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = CSTRING(Module_Description);
|
||||
|
@ -42,7 +42,8 @@ class CfgWeapons {
|
||||
class H_PilotHelmetFighter_O: H_PilotHelmetFighter_B {};
|
||||
class H_PilotHelmetFighter_I: H_PilotHelmetFighter_B {};
|
||||
|
||||
class H_Cap_headphones: H_HelmetB {
|
||||
class HelmetBase;
|
||||
class H_Cap_headphones: HelmetBase {
|
||||
GVAR(protection) = 0.5;
|
||||
GVAR(lowerVolume) = 0.60;
|
||||
};
|
||||
|
@ -6,6 +6,7 @@ PREP(addEarPlugs);
|
||||
PREP(earRinging);
|
||||
PREP(explosionNear);
|
||||
PREP(firedNear);
|
||||
PREP(handleRespawn);
|
||||
PREP(hasEarPlugsIn);
|
||||
PREP(moduleHearing);
|
||||
PREP(putInEarPlugs);
|
||||
|
@ -14,29 +14,50 @@
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_unit"];
|
||||
TRACE_2("params",_unit,typeOf _unit);
|
||||
|
||||
// Exit if hearing is disabled or soldier has earplugs already in (persistence scenarios)
|
||||
if (!GVAR(enableCombatDeafness) || {[_unit] call FUNC(hasEarPlugsIn)}) exitWith {};
|
||||
// only run this after the settings are initialized
|
||||
if !(EGVAR(common,settingsInitFinished)) exitWith {
|
||||
EGVAR(common,runAtSettingsInitialized) pushBack [FUNC(addEarPlugs), _this];
|
||||
};
|
||||
|
||||
private ["_launcher"];
|
||||
// Exit if hearing is disabled OR autoAdd is disabled OR soldier has earplugs already in (persistence scenarios)
|
||||
if (!GVAR(enableCombatDeafness) || {!GVAR(autoAddEarplugsToUnits)} || {[_unit] call FUNC(hasEarPlugsIn)}) exitWith {};
|
||||
|
||||
// add earplugs if the soldier has a rocket launcher
|
||||
_launcher = secondaryWeapon _unit;
|
||||
|
||||
if (_launcher != "") exitWith {
|
||||
if ((secondaryWeapon _unit) != "") exitWith {
|
||||
TRACE_1("has launcher - adding",_unit);
|
||||
_unit addItem "ACE_EarPlugs";
|
||||
};
|
||||
|
||||
// otherwise add earplugs if the soldier has a big rifle
|
||||
private ["_magazine", "_ammo"];
|
||||
if ((primaryWeapon _unit) == "") exitWith {};
|
||||
|
||||
_magazine = primaryWeaponMagazine _unit select 0;
|
||||
(primaryWeaponMagazine _unit) params [["_magazine", ""]];
|
||||
if (_magazine == "") exitWith {};
|
||||
|
||||
if (isNil "_magazine") exitWith {};
|
||||
private _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazine >> "initSpeed");
|
||||
private _ammo = getText (configFile >> "CfgMagazines" >> _magazine >> "ammo");
|
||||
private _count = getNumber (configFile >> "CfgMagazines" >> _magazine >> "count");
|
||||
|
||||
_ammo = getText (configFile >> "CfgMagazines" >> _magazine >> "ammo");
|
||||
private _caliber = getNumber (configFile >> "CfgAmmo" >> _ammo >> "ACE_caliber");
|
||||
_caliber = call {
|
||||
if (_ammo isKindOf ["ShellBase", (configFile >> "CfgAmmo")]) exitWith { 80 };
|
||||
if (_ammo isKindOf ["RocketBase", (configFile >> "CfgAmmo")]) exitWith { 200 };
|
||||
if (_ammo isKindOf ["MissileBase", (configFile >> "CfgAmmo")]) exitWith { 600 };
|
||||
if (_ammo isKindOf ["SubmunitionBase", (configFile >> "CfgAmmo")]) exitWith { 80 };
|
||||
if (_caliber <= 0) then { 6.5 } else { _caliber };
|
||||
};
|
||||
private _loudness = (_caliber ^ 1.25 / 10) * (_initspeed / 1000) / 5;
|
||||
|
||||
if (getNumber (configFile >> "CfgAmmo" >> _ammo >> "audiblefire") > 8) then {
|
||||
//If unit has a machine gun boost effective loudness 50%
|
||||
if (_count >= 50) then {_loudness = _loudness * 1.5};
|
||||
|
||||
TRACE_2("primaryWeapon",_unit,_loudness);
|
||||
|
||||
if (_loudness > 0.2) then {
|
||||
TRACE_1("loud gun - adding",_unit);
|
||||
_unit addItem "ACE_EarPlugs";
|
||||
};
|
||||
|
35
addons/hearing/functions/fnc_handleRespawn.sqf
Normal file
35
addons/hearing/functions/fnc_handleRespawn.sqf
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Reset earplugs on respawn, and then re-add if appropriate
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [player] call ACE_hearing_fnc_handleRespawn;
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_unit"];
|
||||
TRACE_2("params",_unit,typeOf _unit);
|
||||
|
||||
if (!local _unit) exitWith {}; //XEH should only be called on local units
|
||||
|
||||
private _respawn = [0] call BIS_fnc_missionRespawnType;
|
||||
|
||||
//if respawn is not Group or side:
|
||||
if (_respawn <= 3) then {
|
||||
//Remove earplugs if they have them:
|
||||
if (_unit getVariable ["ACE_hasEarPlugsin", false]) then {
|
||||
TRACE_1("had EarPlugs in - removing",_unit);
|
||||
_unit setVariable ["ACE_hasEarPlugsin", false, true];
|
||||
};
|
||||
};
|
||||
|
||||
//Re-add if they need them:
|
||||
[_unit] call FUNC(addEarPlugs);
|
@ -20,4 +20,5 @@ if ((_logic getVariable "DisableEarRinging") != -1) then {
|
||||
};
|
||||
|
||||
[_logic, QGVAR(enabledForZeusUnits), "enabledForZeusUnits"] call EFUNC(common,readSettingFromModule);
|
||||
[_logic, QGVAR(autoAddEarplugsToUnits), "autoAddEarplugsToUnits"] call EFUNC(common,readSettingFromModule);
|
||||
ACE_LOGINFO("Hearing Module Initialized.");
|
||||
|
@ -165,5 +165,11 @@
|
||||
<Portuguese>Permite que unidades remotamente controladas pelo Zeus sejam atingidas por danos auditivos.</Portuguese>
|
||||
<Spanish>Permitir a las unidades por control remoto de zeus que puedan tener daños auditivos.</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_autoAddEarplugsToUnits_DisplayName">
|
||||
<English>Add earplugs to units</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_autoAddEarplugsToUnits_Description">
|
||||
<English>Add the `ACE_EarPlugs` item to all units that have loud weapons. Can disable if using custom loadouts.</English>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -29,8 +29,8 @@ GVAR(isOpeningDoor) = false;
|
||||
|
||||
if (_unit == ACE_player) then {
|
||||
addCamShake [4, 0.5, 5];
|
||||
private _message = parseText format ([["%1 >", localize LSTRING(YouWereTappedRight)], ["< %1", localize LSTRING(YouWereTappedLeft)]] select (_shoulderNum == 0));
|
||||
[_message] call FUNC(displayTextStructured);
|
||||
private _message = parseText format ([["%1 >", localize LSTRING(YouWereTappedRight)], ["< %1", localize LSTRING(YouWereTappedLeft)]] select (_shoulderNum == 1));
|
||||
[_message] call EFUNC(common,displayTextStructured);
|
||||
};
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
@ -67,8 +67,11 @@ private "_team";
|
||||
// Conditions: specific
|
||||
if !([ACE_player, cursorTarget] call FUNC(canTapShoulder)) exitWith {false};
|
||||
|
||||
//Tap whichever shoulder is closest
|
||||
private _shoulderNum = [0, 1] select (([cursorTarget, ACE_player] call BIS_fnc_relativeDirTo) > 180);
|
||||
|
||||
// Statement
|
||||
[ACE_player, cursorTarget, 0] call FUNC(tapShoulder);
|
||||
[ACE_player, cursorTarget, _shoulderNum] call FUNC(tapShoulder);
|
||||
true
|
||||
},
|
||||
{false},
|
||||
|
@ -87,31 +87,37 @@ class RscDisplayInventory {
|
||||
class BackgroundSlotPrimaryMuzzle: BackgroundSlotPrimary {
|
||||
x = X_PART(26.6);
|
||||
y = Y_PART(9.1);
|
||||
w = W_PART(2.3);
|
||||
w = W_PART(1.9);
|
||||
h = H_PART(2);
|
||||
};
|
||||
class BackgroundSlotPrimaryUnderBarrel: BackgroundSlotPrimary {
|
||||
x = X_PART(29);
|
||||
x = X_PART(28.6);
|
||||
y = Y_PART(9.1);
|
||||
w = W_PART(2.3);
|
||||
w = W_PART(1.9);
|
||||
h = H_PART(2);
|
||||
};
|
||||
class BackgroundSlotPrimaryFlashlight: BackgroundSlotPrimary {
|
||||
x = X_PART(31.4);
|
||||
x = X_PART(30.6);
|
||||
y = Y_PART(9.2); //not sure why different (double check release)
|
||||
w = W_PART(2.3);
|
||||
w = W_PART(1.9);
|
||||
h = H_PART(2);
|
||||
};
|
||||
class BackgroundSlotPrimaryOptics: BackgroundSlotPrimary {
|
||||
x = X_PART(33.8);
|
||||
x = X_PART(32.6);
|
||||
y = Y_PART(9.1);
|
||||
w = W_PART(2.3);
|
||||
w = W_PART(1.9);
|
||||
h = H_PART(2);
|
||||
};
|
||||
class BackgroundSlotPrimaryMagazineGL: BackgroundSlotPrimary {
|
||||
x = X_PART(34.6);
|
||||
y = Y_PART(9.1);
|
||||
w = W_PART(1.9);
|
||||
h = H_PART(2);
|
||||
};
|
||||
class BackgroundSlotPrimaryMagazine: BackgroundSlotPrimary {
|
||||
x = X_PART(36.2);
|
||||
y = Y_PART(9.1);
|
||||
w = W_PART(2.3);
|
||||
w = W_PART(1.9);
|
||||
h = H_PART(2);
|
||||
};
|
||||
class BackgroundSlotSecondary: BackgroundSlotPrimary {
|
||||
@ -292,31 +298,37 @@ class RscDisplayInventory {
|
||||
class SlotPrimaryMuzzle: SlotPrimary {
|
||||
x = X_PART(26.6);
|
||||
y = Y_PART(9.1);
|
||||
w = W_PART(2.3);
|
||||
w = W_PART(1.9);
|
||||
h = H_PART(2);
|
||||
};
|
||||
class SlotPrimaryUnderBarrel: SlotPrimary {
|
||||
x = X_PART(29);
|
||||
x = X_PART(28.6);
|
||||
y = Y_PART(9.1);
|
||||
w = W_PART(2.3);
|
||||
w = W_PART(1.9);
|
||||
h = H_PART(2);
|
||||
};
|
||||
class SlotPrimaryFlashlight: SlotPrimary {
|
||||
x = X_PART(31.4);
|
||||
x = X_PART(30.6);
|
||||
y = Y_PART(9.1);
|
||||
w = W_PART(2.3);
|
||||
w = W_PART(1.9);
|
||||
h = H_PART(2);
|
||||
};
|
||||
class SlotPrimaryOptics: SlotPrimary {
|
||||
x = X_PART(33.8);
|
||||
x = X_PART(32.6);
|
||||
y = Y_PART(9.1);
|
||||
w = W_PART(2.3);
|
||||
w = W_PART(1.9);
|
||||
h = H_PART(2);
|
||||
};
|
||||
class SlotPrimaryMagazineGL: SlotPrimary {
|
||||
x = X_PART(34.6);
|
||||
y = Y_PART(9.1);
|
||||
w = W_PART(1.9);
|
||||
h = H_PART(2);
|
||||
};
|
||||
class SlotPrimaryMagazine: SlotPrimary {
|
||||
x = X_PART(36.2);
|
||||
x = X_PART(36.6);
|
||||
y = Y_PART(9.1);
|
||||
w = W_PART(2.3);
|
||||
w = W_PART(1.9);
|
||||
h = H_PART(2);
|
||||
};
|
||||
class SlotSecondary: SlotPrimary {
|
||||
|
@ -5,7 +5,7 @@ class CfgVehicles {
|
||||
// @TODO: Changing the model and simulation hides it, but THEN IT DOESNT SPAWN WTF!?
|
||||
model = "\A3\Weapons_F\empty.p3d";
|
||||
destrType = "DestructNo";
|
||||
simulation = "house";
|
||||
simulation = "LaserTarget";
|
||||
|
||||
class EventHandlers {
|
||||
init = QUOTE(_this call FUNC(laser_init));
|
||||
|
@ -5,7 +5,7 @@ class CfgVehicles {
|
||||
class ACE_MapFlashlight {
|
||||
displayName = CSTRING(Action_Flashlights);
|
||||
icon = QUOTE(\a3\ui_f\data\IGUI\Cfg\VehicleToggles\lightsiconon_ca.paa);
|
||||
condition = QUOTE(GVAR(mapIllumination) && visibleMap && (count ([ACE_player] call FUNC(getUnitFlashlights)) > 0));
|
||||
condition = QUOTE(GVAR(mapIllumination) && visibleMap && {count ([ACE_player] call FUNC(getUnitFlashlights)) > 0});
|
||||
statement = "true";
|
||||
exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"};
|
||||
insertChildren = QUOTE(_this call DFUNC(compileFlashlightMenu));
|
||||
|
@ -100,7 +100,7 @@ call FUNC(determineZoom);
|
||||
GVAR(glow) = objNull;
|
||||
|
||||
["playerInventoryChanged", {
|
||||
_flashlights = [ACE_player] call FUNC(getUnitFlashlights);
|
||||
private _flashlights = [ACE_player] call FUNC(getUnitFlashlights);
|
||||
if ((GVAR(flashlightInUse) != "") && !(GVAR(flashlightInUse) in _flashlights)) then {
|
||||
GVAR(flashlightInUse) = "";
|
||||
};
|
||||
|
@ -2,7 +2,7 @@
|
||||
#include "script_component.hpp"
|
||||
// BEGIN_COUNTER(blueForceTrackingUpdate);
|
||||
|
||||
private ["_groupsToDrawMarkers", "_playerSide", "_anyPlayers", "_markerType", "_colour", "_marker"];
|
||||
private ["_groupsToDrawMarkers", "_playerSide", "_anyPlayers", "_colour", "_marker"];
|
||||
|
||||
// Delete last set of markers (always)
|
||||
{
|
||||
@ -28,12 +28,10 @@ if (GVAR(BFT_Enabled) and {(!isNil "ACE_player") and {alive ACE_player}}) then {
|
||||
};
|
||||
|
||||
{
|
||||
_markerType = [_x] call EFUNC(common,getMarkerType);
|
||||
private _markerType = [_x] call EFUNC(common,getMarkerType);
|
||||
private _colour = format ["Color%1", side _x];
|
||||
|
||||
|
||||
_colour = format ["Color%1", side _x];
|
||||
|
||||
_marker = createMarkerLocal [format ["ACE_BFT_%1", _forEachIndex], [(getPos leader _x) select 0, (getPos leader _x) select 1]];
|
||||
private _marker = createMarkerLocal [format ["ACE_BFT_%1", _forEachIndex], [(getPos leader _x) select 0, (getPos leader _x) select 1]];
|
||||
_marker setMarkerTypeLocal _markerType;
|
||||
_marker setMarkerColorLocal _colour;
|
||||
_marker setMarkerTextLocal (groupID _x);
|
||||
|
@ -18,48 +18,29 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_vehicle", "_player", "_parameters"];
|
||||
params ["", "_player"];
|
||||
|
||||
private["_action", "_actions", "_cfg", "_displayName", "_flashlights", "_icon", "_statement"];
|
||||
|
||||
_actions = [];
|
||||
_flashlights = [_player] call FUNC(getUnitFlashlights);
|
||||
|
||||
//add all carried flashlight menus and on/off submenu actions
|
||||
{
|
||||
_displayName = getText (configFile >> "CfgWeapons" >> _x >> "displayName");
|
||||
_icon = getText (configFile >> "CfgWeapons" >> _x >> "picture");
|
||||
|
||||
_children = {
|
||||
params ["_vehicle", "_player", "_flashlight"];
|
||||
_actions = [];
|
||||
|
||||
_onAction = [
|
||||
(_flashlight + "_On"),
|
||||
"On",
|
||||
"",
|
||||
{[_this select 2] call FUNC(switchFlashlight)},
|
||||
{GVAR(flashlightInUse) != (_this select 2)},
|
||||
{},
|
||||
_flashlight
|
||||
] call EFUNC(interact_menu,createAction);
|
||||
|
||||
_offAction = [
|
||||
(_flashlight + "_Off"),
|
||||
"Off",
|
||||
"",
|
||||
{[""] call FUNC(switchFlashlight)},
|
||||
{GVAR(flashlightInUse) == (_this select 2)},
|
||||
{},
|
||||
_flashlight
|
||||
] call EFUNC(interact_menu,createAction);
|
||||
|
||||
_actions pushBack [_onAction, [], _player];
|
||||
_actions pushBack [_offAction, [], _player];
|
||||
|
||||
_actions
|
||||
_cfg = (configFile >> "CfgWeapons" >> _x);
|
||||
_displayName = getText (_cfg >> "displayName");
|
||||
_icon = getText (_cfg >> "picture");
|
||||
|
||||
_statement = if (GVAR(flashlightInUse) == _x) then {
|
||||
_displayName = format [localize LSTRING(turnLightOff), _displayName];
|
||||
{[""] call FUNC(switchFlashlight)}
|
||||
} else {
|
||||
_displayName = format [localize LSTRING(turnLightOn), _displayName];
|
||||
{[_this select 2] call FUNC(switchFlashlight)}
|
||||
};
|
||||
|
||||
_parentAction = [_x, _displayName, _icon, {true}, {true}, _children, _x] call EFUNC(interact_menu,createAction);
|
||||
_actions pushBack [_parentAction, [], _player];
|
||||
_action = [_x, _displayName, _icon, _statement, {true}, {}, _x] call EFUNC(interact_menu,createAction);
|
||||
_actions pushBack [_action, [], _player];
|
||||
} forEach _flashlights;
|
||||
|
||||
_actions
|
||||
_actions
|
||||
|
@ -12,14 +12,13 @@
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
params ["_unit"];
|
||||
|
||||
EXPLODE_1_PVT(_this,_unit);
|
||||
|
||||
private ["_isEnclosed","_nearObjects","_light","_ll","_flashlight", "_flareTint", "_lightTint", "_l"];
|
||||
private ["_fnc_blendColor", "_lightTint", "_fnc_calcColor", "_l", "_lightLevel", "_vehicle", "_isEnclosed", "_nearObjects", "_light", "_ll", "_flashlight", "_flareTint"];
|
||||
|
||||
// Blend two colors
|
||||
_fnc_blendColor = {
|
||||
EXPLODE_3_PVT(_this,_c1,_c2,_alpha);
|
||||
params ["_c1", "_c2", "_alpha"];
|
||||
[(_c1 select 0) * (1 - _alpha) + (_c2 select 0) * _alpha,
|
||||
(_c1 select 1) * (1 - _alpha) + (_c2 select 1) * _alpha,
|
||||
(_c1 select 2) * (1 - _alpha) + (_c2 select 2) * _alpha,
|
||||
@ -27,16 +26,17 @@ _fnc_blendColor = {
|
||||
};
|
||||
|
||||
// Ambient light tint depending on time of day
|
||||
_lightTint = switch (true) do {
|
||||
case (sunOrMoon == 1.0) : { [0.5,0.5,0.5,1] };
|
||||
case (sunOrMoon > 0.80) : {[[1.0 - overcast,0.2,0,1], [1,1,1,1], (sunOrMoon - 0.8)/0.2] call _fnc_blendColor};
|
||||
case (sunOrMoon > 0.50) : {[[0,0,0.1,1], [1.0 - overcast,0.2,0,1], (sunOrMoon - 0.5)/0.3] call _fnc_blendColor};
|
||||
case (sunOrMoon <= 0.5) : { [0,0,0.1,1] };
|
||||
_lightTint = call {
|
||||
if (sunOrMoon == 1.0) exitWith { [0.5,0.5,0.5,1] };
|
||||
if (sunOrMoon > 0.80) exitWith { [[1.0 - overcast,0.2,0,1], [1,1,1,1], (sunOrMoon - 0.8)/0.2] call _fnc_blendColor };
|
||||
if (sunOrMoon > 0.50) exitWith { [[0,0,0.1,1], [1.0 - overcast,0.2,0,1], (sunOrMoon - 0.5)/0.3] call _fnc_blendColor };
|
||||
if (sunOrMoon <= 0.5) exitWith { [0,0,0.1,1] };
|
||||
[0,0,0,0]
|
||||
};
|
||||
|
||||
// Calculates overlay color from tint and light level
|
||||
_fnc_calcColor = {
|
||||
EXPLODE_2_PVT(_this,_c1,_lightLevel);
|
||||
params ["_c1", "_lightLevel"];
|
||||
|
||||
if (_lightLevel < 0.5) then {
|
||||
_l = _lightLevel / 0.5;
|
||||
@ -68,7 +68,6 @@ if (_lightLevel > 0.95) exitWith {
|
||||
[false, [0.5,0.5,0.5,0]]
|
||||
};
|
||||
|
||||
private "_vehicle";
|
||||
_vehicle = vehicle _unit;
|
||||
|
||||
// Do not obscure the map if the player is on a enclosed vehicle (assume internal illumination)
|
||||
@ -124,4 +123,4 @@ if (_lightLevel > 0.95) exitWith {
|
||||
};
|
||||
|
||||
// Calculate resulting map color
|
||||
[true, [_lightTint, _lightLevel] call _fnc_calcColor]
|
||||
[true, [_lightTint, _lightLevel] call _fnc_calcColor]
|
||||
|
@ -13,7 +13,7 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_grids", "_fourSize", "_sixSize", "_continue", "_size", "_i"];
|
||||
_grids = configFile >> "CfgWorlds" >> worldName >> "Grid";
|
||||
_grids = (configFile >> "CfgWorlds" >> worldName >> "Grid");
|
||||
_fourSize = -1;
|
||||
_sixSize = -1;
|
||||
for "_i" from 1 to 10 do {
|
||||
|
@ -16,15 +16,16 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_light", "_color", "_class"];
|
||||
params ["_flashlight"];
|
||||
|
||||
_light = GVAR(glow);
|
||||
if (!isNull _light) then {deleteVehicle _light};
|
||||
|
||||
if (_flashlight != "") then {
|
||||
_colour = getText (configFile >> "CfgWeapons" >> _flashlight >> "ItemInfo" >> "FlashLight" >> "ACE_Flashlight_Colour");
|
||||
if !(_colour in ["white", "red", "green", "blue", "yellow"]) then {_colour = "white"};
|
||||
_class = format["ACE_FlashlightProxy_%1", _colour];
|
||||
_color = getText (configFile >> "CfgWeapons" >> _flashlight >> "ItemInfo" >> "FlashLight" >> "ACE_Flashlight_Colour");
|
||||
if !(_color in ["white", "red", "green", "blue", "yellow"]) then {_color = "white"};
|
||||
_class = format["ACE_FlashlightProxy_%1", _color];
|
||||
|
||||
_light = _class createVehicle [0,0,0];
|
||||
_light attachTo [ACE_player, [0,0.5,-0.1], "head"];
|
||||
@ -32,4 +33,4 @@ if (_flashlight != "") then {
|
||||
_light = objNull;
|
||||
};
|
||||
|
||||
GVAR(glow) = _light;
|
||||
GVAR(glow) = _light;
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
params ["_unit"];
|
||||
|
||||
_flashlights = [];
|
||||
private _flashlights = [];
|
||||
|
||||
{
|
||||
if ((isText (configFile >> "CfgWeapons" >> _x >> "ItemInfo" >> "FlashLight" >> "ACE_Flashlight_Colour")) && !(_x in _flashlights)) then {
|
||||
@ -26,4 +26,4 @@ _flashlights = [];
|
||||
};
|
||||
} forEach (items _unit);
|
||||
|
||||
_flashlights
|
||||
_flashlights
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_hmd", "_flashlight", "_screenSize", "_realViewPortY", "_realViewPortX", "_fillTex", "_colourAlpha", "_shadeAlpha", "_colourList", "_maxColour"];
|
||||
params ["_mapCtrl", "_mapScale", "_mapCentre", "_lightLevel"];
|
||||
|
||||
_hmd = hmd ACE_player;
|
||||
@ -50,6 +51,7 @@ if (_flashlight == "") then {
|
||||
//ambient shade fill
|
||||
_mapCtrl drawIcon [_fillTex, [1,1,1,_shadeAlpha], _mapCentre, _screenSize, _screenSize, 0, "", 0];
|
||||
} else {
|
||||
private ["_mousePos", "_colour", "_size", "_flashTex", "_beamSize", "_viewPortRatioFixY", "_offsetX", "_offsetYDown", "_offsetYUp"];
|
||||
//mouse pos
|
||||
_mousePos = GVAR(mousePos);
|
||||
|
||||
@ -86,4 +88,4 @@ if (_flashlight == "") then {
|
||||
_mapCtrl drawIcon [_fillTex, [1,1,1,_shadeAlpha], [(_mousePos select 0) + _offsetX, (_mousePos select 1)], _screenSize * 2, _beamSize, 0, "", 0]; //right
|
||||
_mapCtrl drawIcon [_fillTex, [1,1,1,_shadeAlpha], [(_mousePos select 0), (_mousePos select 1) - _offsetYDown], _screenSize * 4, _screenSize, 0, "", 0]; //down
|
||||
_mapCtrl drawIcon [_fillTex, [1,1,1,_shadeAlpha], [(_mousePos select 0), (_mousePos select 1) + _offsetYUp], _screenSize * 4, _screenSize * 4, 0, "", 0]; //up
|
||||
};
|
||||
};
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_mapCtrl", "_mapScale", "_mapCentre", "_light"];
|
||||
_mapCtrl = findDisplay 12 displayCtrl 51;
|
||||
_mapScale = ctrlMapScale _mapCtrl;
|
||||
_mapCentre = _mapCtrl ctrlMapScreenToWorld [0.5, 0.5];
|
||||
@ -73,4 +73,4 @@ if (GVAR(mapLimitZoom)) then {
|
||||
_mapCtrl ctrlMapAnimAdd [0, GVAR(minMapSize) + 0.001, _mapCentre];
|
||||
ctrlMapAnimCommit _mapCtrl;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -256,6 +256,30 @@
|
||||
<Czech>Snížit jas</Czech>
|
||||
<Spanish>Reducir brillo</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_turnLightOn">
|
||||
<English>Turn On %1</English>
|
||||
<German>%1 Aktivieren</German>
|
||||
<Spanish>Encender %1</Spanish>
|
||||
<Polish>Włącz %1</Polish>
|
||||
<French>Allumer %1</French>
|
||||
<Czech>Zapnout %1</Czech>
|
||||
<Italian>Accendi %1</Italian>
|
||||
<Hungarian>%1 Bekapcsolása</Hungarian>
|
||||
<Portuguese>Ativar %1</Portuguese>
|
||||
<Russian>Активировать %1</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_turnLightOff">
|
||||
<English>Turn Off %1</English>
|
||||
<German>%1 Deaktivieren</German>
|
||||
<Spanish>Apagar %1</Spanish>
|
||||
<Polish>Wyłącz %1</Polish>
|
||||
<French>Éteindre %1</French>
|
||||
<Czech>Vypnout %1</Czech>
|
||||
<Italian>Spegni %1</Italian>
|
||||
<Hungarian>%1 Kikapcsolása</Hungarian>
|
||||
<Portuguese>Desativar %1</Portuguese>
|
||||
<Russian>Деактивировать %1</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_DefaultChannel_DisplayName">
|
||||
<English>Set Channel At Start</English>
|
||||
<Polish>Ust. domyślny kanał</Polish>
|
||||
|
@ -433,39 +433,38 @@ class CfgVehicles {
|
||||
#define ARM_LEG_ARMOR_BETTER 5
|
||||
#define ARM_LEG_ARMOR_CSAT 4
|
||||
|
||||
class Land;
|
||||
class Man: Land {
|
||||
class HitPoints;
|
||||
};
|
||||
|
||||
#define ADD_ACE_HITPOINTS(ARM_ARMOR,LEG_ARMOR) \
|
||||
class HitLeftArm { \
|
||||
armor = ARM_ARMOR; \
|
||||
material = -1; \
|
||||
name = "hand_l"; \
|
||||
passThrough = 1; \
|
||||
radius = 0.08; \
|
||||
explosionShielding = 1; \
|
||||
visual = "injury_hands"; \
|
||||
minimalHit = 0.01; \
|
||||
}; \
|
||||
class HitRightArm: HitLeftArm { \
|
||||
name = "hand_r"; \
|
||||
}; \
|
||||
class HitLeftLeg { \
|
||||
armor = LEG_ARMOR; \
|
||||
material = -1; \
|
||||
name = "leg_l"; \
|
||||
passThrough = 1; \
|
||||
radius = 0.1; \
|
||||
explosionShielding = 1; \
|
||||
visual = "injury_legs"; \
|
||||
minimalHit = 0.01; \
|
||||
}; \
|
||||
class HitRightLeg: HitLeftLeg { \
|
||||
name = "leg_r"; \
|
||||
}; \
|
||||
|
||||
class Man;
|
||||
class CAManBase: Man {
|
||||
class HitPoints: HitPoints { // custom hitpoints. addons might want to adjust these accordingly
|
||||
class HitLeftArm {
|
||||
armor = ARM_LEG_ARMOR_DEFAULT;
|
||||
material = -1;
|
||||
name = "hand_l"; // @todo hopefully these still include the whole arm + hands
|
||||
passThrough = 1;
|
||||
radius = 0.08;
|
||||
explosionShielding = 1;
|
||||
visual = "injury_hands";
|
||||
minimalHit = 0.01;
|
||||
};
|
||||
class HitRightArm: HitLeftArm {
|
||||
name = "hand_r"; // @todo hopefully these still include the whole arm + hands
|
||||
};
|
||||
class HitLeftLeg {
|
||||
armor = ARM_LEG_ARMOR_DEFAULT;
|
||||
material = -1;
|
||||
name = "leg_l";
|
||||
passThrough = 1;
|
||||
radius = 0.1;
|
||||
explosionShielding = 1;
|
||||
visual = "injury_legs";
|
||||
minimalHit = 0.01;
|
||||
};
|
||||
class HitRightLeg: HitLeftLeg {
|
||||
name = "leg_r";
|
||||
};
|
||||
class HitPoints {
|
||||
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_DEFAULT,ARM_LEG_ARMOR_DEFAULT);
|
||||
};
|
||||
|
||||
class ACE_SelfActions {
|
||||
@ -525,174 +524,82 @@ class CfgVehicles {
|
||||
class B_Soldier_base_F: SoldierWB {};
|
||||
|
||||
class B_Soldier_04_f: B_Soldier_base_F {
|
||||
class HitPoints: HitPoints {
|
||||
class HitHead;
|
||||
class HitBody;
|
||||
class HitHands;
|
||||
class HitLegs;
|
||||
class HitLeftArm: HitLeftArm {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitRightArm: HitRightArm {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitLeftLeg: HitLeftLeg {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitRightLeg: HitRightLeg {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitPoints {
|
||||
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_BETTER,ARM_LEG_ARMOR_BETTER);
|
||||
};
|
||||
};
|
||||
|
||||
class B_Soldier_05_f: B_Soldier_base_F {
|
||||
class HitPoints: HitPoints {
|
||||
class HitHead;
|
||||
class HitBody;
|
||||
class HitHands;
|
||||
class HitLegs;
|
||||
class HitLeftArm: HitLeftArm {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitRightArm: HitRightArm {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitLeftLeg: HitLeftLeg {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitRightLeg: HitRightLeg {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitPoints {
|
||||
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_BETTER,ARM_LEG_ARMOR_BETTER);
|
||||
};
|
||||
};
|
||||
|
||||
class I_Soldier_base_F: SoldierGB {};
|
||||
|
||||
class I_Soldier_03_F: I_Soldier_base_F {
|
||||
class HitPoints: HitPoints {
|
||||
class HitHead;
|
||||
class HitBody;
|
||||
class HitHands;
|
||||
class HitLegs;
|
||||
class HitLeftArm: HitLeftArm {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitRightArm: HitRightArm {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitLeftLeg: HitLeftLeg {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitRightLeg: HitRightLeg {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitPoints {
|
||||
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_BETTER,ARM_LEG_ARMOR_BETTER);
|
||||
};
|
||||
};
|
||||
|
||||
class I_Soldier_04_F: I_Soldier_base_F {
|
||||
class HitPoints: HitPoints {
|
||||
class HitHead;
|
||||
class HitBody;
|
||||
class HitHands;
|
||||
class HitLegs;
|
||||
class HitLeftArm: HitLeftArm {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitRightArm: HitRightArm {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitLeftLeg: HitLeftLeg {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitRightLeg: HitRightLeg {
|
||||
armor = ARM_LEG_ARMOR_BETTER;
|
||||
};
|
||||
class HitPoints {
|
||||
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_BETTER,ARM_LEG_ARMOR_BETTER);
|
||||
};
|
||||
};
|
||||
|
||||
class O_Soldier_base_F: SoldierEB {
|
||||
class HitPoints: HitPoints {
|
||||
class HitHead;
|
||||
class HitBody;
|
||||
class HitHands;
|
||||
class HitLegs;
|
||||
class HitLeftArm: HitLeftArm {
|
||||
armor = ARM_LEG_ARMOR_CSAT;
|
||||
};
|
||||
class HitRightArm: HitRightArm {
|
||||
armor = ARM_LEG_ARMOR_CSAT;
|
||||
};
|
||||
class HitLeftLeg: HitLeftLeg {
|
||||
armor = ARM_LEG_ARMOR_CSAT;
|
||||
};
|
||||
class HitRightLeg: HitRightLeg {
|
||||
armor = ARM_LEG_ARMOR_CSAT;
|
||||
};
|
||||
class HitPoints {
|
||||
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_CSAT,ARM_LEG_ARMOR_BETTER);
|
||||
};
|
||||
};
|
||||
|
||||
class O_Soldier_diver_base_F: O_Soldier_base_F {
|
||||
class HitPoints {
|
||||
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_CSAT,ARM_LEG_ARMOR_BETTER);
|
||||
};
|
||||
};
|
||||
|
||||
class O_Soldier_02_F: O_Soldier_base_F {
|
||||
class HitPoints: HitPoints {
|
||||
class HitHead;
|
||||
class HitBody;
|
||||
class HitHands;
|
||||
class HitLegs;
|
||||
class HitLeftArm: HitLeftArm {
|
||||
armor = ARM_LEG_ARMOR_CSAT;
|
||||
};
|
||||
class HitRightArm: HitRightArm {
|
||||
armor = ARM_LEG_ARMOR_CSAT;
|
||||
};
|
||||
class HitLeftLeg: HitLeftLeg {
|
||||
armor = ARM_LEG_ARMOR_CSAT;
|
||||
};
|
||||
class HitRightLeg: HitRightLeg {
|
||||
armor = ARM_LEG_ARMOR_CSAT;
|
||||
};
|
||||
class HitPoints {
|
||||
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_CSAT,ARM_LEG_ARMOR_BETTER);
|
||||
};
|
||||
};
|
||||
|
||||
class O_officer_F: O_Soldier_base_F {
|
||||
class HitPoints: HitPoints {
|
||||
class HitHead;
|
||||
class HitBody;
|
||||
class HitHands;
|
||||
class HitLegs;
|
||||
class HitLeftArm: HitLeftArm {
|
||||
armor = ARM_LEG_ARMOR_CSAT; // @todo is that suppossed to be the case?
|
||||
};
|
||||
class HitRightArm: HitRightArm {
|
||||
armor = ARM_LEG_ARMOR_CSAT;
|
||||
};
|
||||
class HitLeftLeg: HitLeftLeg {
|
||||
armor = ARM_LEG_ARMOR_CSAT;
|
||||
};
|
||||
class HitRightLeg: HitRightLeg {
|
||||
armor = ARM_LEG_ARMOR_CSAT;
|
||||
};
|
||||
class HitPoints {
|
||||
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_CSAT,ARM_LEG_ARMOR_BETTER);
|
||||
};
|
||||
};
|
||||
|
||||
class O_Protagonist_VR_F: O_Soldier_base_F {
|
||||
class HitPoints: HitPoints {
|
||||
class HitHead;
|
||||
class HitBody;
|
||||
class HitHands;
|
||||
class HitLegs;
|
||||
class HitLeftArm: HitLeftArm {
|
||||
armor = 2;
|
||||
};
|
||||
class HitRightArm: HitRightArm {
|
||||
armor = 2;
|
||||
};
|
||||
class HitLeftLeg: HitLeftLeg {
|
||||
armor = 2;
|
||||
};
|
||||
class HitRightLeg: HitRightLeg {
|
||||
armor = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
//These VR guys already have limb hitpoints that we should be able to use
|
||||
//Note: the selections are a little weird, eg: class leg_l {name = "leg_l";};
|
||||
// class B_Soldier_VR_F: B_Soldier_base_F { {
|
||||
// class HitPoints {
|
||||
//Has class hand_l, hand_r, leg_l, leg_r Hitpoints already
|
||||
// };
|
||||
// };
|
||||
// class O_Soldier_VR_F: O_Soldier_base_F { {
|
||||
// class HitPoints {
|
||||
//Has class hand_l, hand_r, leg_l, leg_r Hitpoints already
|
||||
// };
|
||||
// };
|
||||
// class I_Soldier_VR_F: I_Soldier_base_F { {
|
||||
// class HitPoints {
|
||||
//Has class hand_l, hand_r, leg_l, leg_r Hitpoints already
|
||||
// };
|
||||
// };
|
||||
// class C_Soldier_VR_F: C_man_1 {
|
||||
// class HitPoints {
|
||||
//Has class hand_l, hand_r, leg_l, leg_r Hitpoints already
|
||||
// };
|
||||
// };
|
||||
// class O_Protagonist_VR_F: O_Soldier_base_F {
|
||||
// class HitPoints {
|
||||
//Has class hand_l, hand_r, leg_l, leg_r Hitpoints already
|
||||
// };
|
||||
// };
|
||||
|
||||
class MapBoard_altis_F;
|
||||
class ACE_bodyBagObject: MapBoard_altis_F {
|
||||
|
@ -56,7 +56,7 @@ class CfgVehicles {
|
||||
side = 1;
|
||||
typicalCargo[] = {"Soldier"};
|
||||
displayName = CSTRING(DisplayName);
|
||||
model = PATHTOF(data\spottingscope.p3d);
|
||||
model = PATHTOF(data\ace_spottingscope.p3d);
|
||||
mapSize = 0.5;
|
||||
transportSoldier = 0;
|
||||
getInAction = "GetInLow";
|
||||
@ -89,9 +89,9 @@ class CfgVehicles {
|
||||
initAngleY = 0;
|
||||
minAngleY = -100;
|
||||
maxAngleY = 100;
|
||||
initFov = 0.7;
|
||||
minFov = 0.7;
|
||||
maxFov = 0.7;
|
||||
initFov = 0.75;
|
||||
minFov = 0.25;
|
||||
maxFov = 1.25;
|
||||
};
|
||||
class ViewOptics {
|
||||
initAngleX = 0;
|
||||
@ -100,9 +100,9 @@ class CfgVehicles {
|
||||
initAngleY = 0;
|
||||
minAngleY = -100;
|
||||
maxAngleY = 100;
|
||||
initFov = 0.014812;
|
||||
minFov = 0.014812;
|
||||
maxFov = 0.014812;
|
||||
minFov = 0.0025;
|
||||
maxFov = 0.05;
|
||||
initFov= 0.05;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -8,7 +8,7 @@ class CfgWeapons {
|
||||
displayName = CSTRING(DisplayName);
|
||||
descriptionShort = "";
|
||||
picture = PATHTOF(UI\w_spottingscope_ca.paa);
|
||||
model = PATHTOF(data\w_spottingscope.p3d);
|
||||
model = PATHTOF(data\ace_spottingscope.p3d);
|
||||
|
||||
class ItemInfo: InventoryItem_Base_F {
|
||||
mass = 40;
|
||||
|
@ -6,7 +6,7 @@ class CfgPatches {
|
||||
weapons[] = {"ACE_SpottingScope"};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_apl", "ace_interaction"};
|
||||
author[] = {"Rocko", "Scubaman3D", "Ruthberg", "commy2"};
|
||||
author[] = {"Rocko", "Scubaman3D", "Ruthberg", "commy2", "p1nga"};
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
};
|
||||
|
BIN
addons/spottingscope/data/ace_spottingscope.p3d
Normal file
BIN
addons/spottingscope/data/ace_spottingscope.p3d
Normal file
Binary file not shown.
BIN
addons/spottingscope/data/ace_spottingscope_as.paa
Normal file
BIN
addons/spottingscope/data/ace_spottingscope_as.paa
Normal file
Binary file not shown.
BIN
addons/spottingscope/data/ace_spottingscope_co.paa
Normal file
BIN
addons/spottingscope/data/ace_spottingscope_co.paa
Normal file
Binary file not shown.
96
addons/spottingscope/data/ace_spottingscope_glass.rvmat
Normal file
96
addons/spottingscope/data/ace_spottingscope_glass.rvmat
Normal file
@ -0,0 +1,96 @@
|
||||
class StageTI
|
||||
{
|
||||
texture="a3\data_f\Default_ti_ca.paa";
|
||||
};
|
||||
ambient[]={0.301,0.63999999,0.68000001,1};
|
||||
diffuse[]={0.301,0.63999999,0.68000001,1};
|
||||
forcedDiffuse[]={0.2,0.34999999,0.2,0};
|
||||
emmisive[]={0,0,0,1};
|
||||
specular[]={0.67450982,0.64313728,0.50196081,1};
|
||||
specularPower=550;
|
||||
PixelShaderID="Super";
|
||||
VertexShaderID="Super";
|
||||
class Stage1
|
||||
{
|
||||
texture="z\ace\addons\spottingscope\data\ace_spottingscope_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="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={6,0,0};
|
||||
up[]={0,6,0};
|
||||
dir[]={0,0,0};
|
||||
pos[]={0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage3
|
||||
{
|
||||
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1,0,0};
|
||||
up[]={0,1,0};
|
||||
dir[]={0,0,0};
|
||||
pos[]={0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage4
|
||||
{
|
||||
texture="z\ace\addons\spottingscope\data\ace_spottingscope_as.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1,0,0};
|
||||
up[]={0,1,0};
|
||||
dir[]={0,0,0};
|
||||
pos[]={0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage5
|
||||
{
|
||||
texture="z\ace\addons\spottingscope\data\ace_spottingscope_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(4.01,2.86)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1,0,0};
|
||||
up[]={0,1,0};
|
||||
dir[]={0,0,0};
|
||||
pos[]={0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage7
|
||||
{
|
||||
texture="a3\data_f\env_land_co.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1,0,0};
|
||||
up[]={0,1,0};
|
||||
dir[]={0,0,0};
|
||||
pos[]={0,0,0};
|
||||
};
|
||||
};
|
BIN
addons/spottingscope/data/ace_spottingscope_item.p3d
Normal file
BIN
addons/spottingscope/data/ace_spottingscope_item.p3d
Normal file
Binary file not shown.
92
addons/spottingscope/data/ace_spottingscope_metal.rvmat
Normal file
92
addons/spottingscope/data/ace_spottingscope_metal.rvmat
Normal file
@ -0,0 +1,92 @@
|
||||
ambient[]={1,1,1,1};
|
||||
diffuse[]={1,1,1,1};
|
||||
forcedDiffuse[]={0,0,0,0};
|
||||
emmisive[]={0,0,0,1};
|
||||
specular[]={0.2,0.2,0.2,0};
|
||||
specularPower=100;
|
||||
PixelShaderID="Super";
|
||||
VertexShaderID="Super";
|
||||
class Stage1
|
||||
{
|
||||
texture="z\ace\addons\spottingscope\data\ace_spottingscope_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="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={6,0,0};
|
||||
up[]={0,6,0};
|
||||
dir[]={0,0,0};
|
||||
pos[]={0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage3
|
||||
{
|
||||
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1,0,0};
|
||||
up[]={0,1,0};
|
||||
dir[]={0,0,0};
|
||||
pos[]={0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage4
|
||||
{
|
||||
texture="z\ace\addons\spottingscope\data\ace_spottingscope_as.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1,0,0};
|
||||
up[]={0,1,0};
|
||||
dir[]={0,0,0};
|
||||
pos[]={0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage5
|
||||
{
|
||||
texture="z\ace\addons\spottingscope\data\ace_spottingscope_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(4.01,2.86)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1,0,0};
|
||||
up[]={0,1,0};
|
||||
dir[]={0,0,0};
|
||||
pos[]={0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage7
|
||||
{
|
||||
texture="a3\data_f\env_land_co.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1,0,0};
|
||||
up[]={0,1,0};
|
||||
dir[]={0,0,0};
|
||||
pos[]={0,0,0};
|
||||
};
|
||||
};
|
BIN
addons/spottingscope/data/ace_spottingscope_nohq.paa
Normal file
BIN
addons/spottingscope/data/ace_spottingscope_nohq.paa
Normal file
Binary file not shown.
85
addons/spottingscope/data/ace_spottingscope_rubber.rvmat
Normal file
85
addons/spottingscope/data/ace_spottingscope_rubber.rvmat
Normal file
@ -0,0 +1,85 @@
|
||||
ambient[]={1,1,1,1};
|
||||
diffuse[]={1,1,1,1};
|
||||
forcedDiffuse[]={0,0,0,0};
|
||||
emmisive[]={0,0,0,1};
|
||||
specular[]={0.25,0.25,0.25,1};
|
||||
specularPower=90;
|
||||
PixelShaderID="Super";
|
||||
VertexShaderID="Super";
|
||||
class Stage1
|
||||
{
|
||||
texture="z\ace\addons\spottingscope\data\ace_spottingscope_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="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={6,0,0};
|
||||
up[]={0,6,0};
|
||||
dir[]={0,0,0};
|
||||
pos[]={0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage3
|
||||
{
|
||||
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1,0,0};
|
||||
up[]={0,1,0};
|
||||
dir[]={0,0,0};
|
||||
pos[]={0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage4
|
||||
{
|
||||
texture="z\ace\addons\spottingscope\data\ace_spottingscope_as.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1,0,0};
|
||||
up[]={0,1,0};
|
||||
dir[]={0,0,0};
|
||||
pos[]={0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage5
|
||||
{
|
||||
texture="z\ace\addons\spottingscope\data\ace_spottingscope_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,64,64,1)fresnel(1.5,1.22)";
|
||||
uvSource="none";
|
||||
};
|
||||
class Stage7
|
||||
{
|
||||
texture="a3\data_f\env_land_co.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1,0,0};
|
||||
up[]={0,1,0};
|
||||
dir[]={0,0,0};
|
||||
pos[]={0,0,0};
|
||||
};
|
||||
};
|
BIN
addons/spottingscope/data/ace_spottingscope_smdi.paa
Normal file
BIN
addons/spottingscope/data/ace_spottingscope_smdi.paa
Normal file
Binary file not shown.
Binary file not shown.
@ -9,8 +9,11 @@ class CfgSkeletons
|
||||
isDiscrete = 1;
|
||||
skeletonInherit = "Default";
|
||||
skeletonBones[] = {
|
||||
"otocvez","",
|
||||
"otochlaven","otocvez"
|
||||
"main_turret","",
|
||||
"main_gun","main_turret",
|
||||
"leg_01","",
|
||||
"leg_02","",
|
||||
"leg_03",""
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -20,15 +23,15 @@ class CfgModels {
|
||||
sections[] = {};
|
||||
skeletonName = "";
|
||||
};
|
||||
class spottingscope: Default {
|
||||
class ace_spottingscope: Default {
|
||||
skeletonName = "ace_spottingscope_skeleton";
|
||||
sectionsInherit = "Default";
|
||||
class animations {
|
||||
class mainTurret {
|
||||
type = "rotationY";
|
||||
source = "mainTurret";
|
||||
selection = "otocvez";
|
||||
axis = "osaveze";
|
||||
selection = "main_turret";
|
||||
axis = "main_turret_axis";
|
||||
minValue = "rad -360";
|
||||
maxValue = "rad +360";
|
||||
angle0 = "rad -360";
|
||||
@ -37,13 +40,31 @@ class CfgModels {
|
||||
class mainGun {
|
||||
type = "rotationX";
|
||||
source = "mainGun";
|
||||
selection = "otochlaven";
|
||||
axis = "osahlavne";
|
||||
selection = "main_gun";
|
||||
axis = "main_gun_axis";
|
||||
minValue = "rad -360";
|
||||
maxValue = "rad +360";
|
||||
angle0 = "rad -360";
|
||||
angle1 = "rad +360";
|
||||
};
|
||||
class leg_01 {
|
||||
type = "rotation";
|
||||
source = "fold_legs";
|
||||
selection = "leg_01";
|
||||
axis="leg_01_axis";
|
||||
minValue = 0;
|
||||
maxValue = 1;
|
||||
angle0="rad +00";
|
||||
angle1="rad +55";
|
||||
};
|
||||
class leg_02: leg_01 {
|
||||
selection = "leg_02";
|
||||
axis="leg_02_axis";
|
||||
};
|
||||
class leg_03: leg_01 {
|
||||
selection = "leg_03";
|
||||
axis="leg_03_axis";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user