diff --git a/addons/goggles/config.cpp b/addons/goggles/config.cpp index 95b699eb1c..0812200a87 100644 --- a/addons/goggles/config.cpp +++ b/addons/goggles/config.cpp @@ -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; diff --git a/addons/hearing/ACE_Settings.hpp b/addons/hearing/ACE_Settings.hpp index 262c3edc34..13f445a987 100644 --- a/addons/hearing/ACE_Settings.hpp +++ b/addons/hearing/ACE_Settings.hpp @@ -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); + }; }; diff --git a/addons/hearing/CfgEventHandlers.hpp b/addons/hearing/CfgEventHandlers.hpp index f09f259266..e31501d1c3 100644 --- a/addons/hearing/CfgEventHandlers.hpp +++ b/addons/hearing/CfgEventHandlers.hpp @@ -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)); + }; + }; +}; diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index 72377ca970..76a2f90a80 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -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); diff --git a/addons/hearing/CfgWeapons.hpp b/addons/hearing/CfgWeapons.hpp index 7c21baaed2..7e1c932f62 100644 --- a/addons/hearing/CfgWeapons.hpp +++ b/addons/hearing/CfgWeapons.hpp @@ -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; }; diff --git a/addons/hearing/XEH_preInit.sqf b/addons/hearing/XEH_preInit.sqf index 16b9f35f80..3355d0cff4 100644 --- a/addons/hearing/XEH_preInit.sqf +++ b/addons/hearing/XEH_preInit.sqf @@ -6,6 +6,7 @@ PREP(addEarPlugs); PREP(earRinging); PREP(explosionNear); PREP(firedNear); +PREP(handleRespawn); PREP(hasEarPlugsIn); PREP(moduleHearing); PREP(putInEarPlugs); diff --git a/addons/hearing/functions/fnc_addEarPlugs.sqf b/addons/hearing/functions/fnc_addEarPlugs.sqf index b2e43bc718..9e6bd0cab2 100644 --- a/addons/hearing/functions/fnc_addEarPlugs.sqf +++ b/addons/hearing/functions/fnc_addEarPlugs.sqf @@ -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"; }; diff --git a/addons/hearing/functions/fnc_handleRespawn.sqf b/addons/hearing/functions/fnc_handleRespawn.sqf new file mode 100644 index 0000000000..527d5d6b16 --- /dev/null +++ b/addons/hearing/functions/fnc_handleRespawn.sqf @@ -0,0 +1,35 @@ +/* + * Author: PabstMirror + * Reset earplugs on respawn, and then re-add if appropriate + * + * Arguments: + * 0: Unit + * + * 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); diff --git a/addons/hearing/functions/fnc_moduleHearing.sqf b/addons/hearing/functions/fnc_moduleHearing.sqf index 0aa8843485..35836ddb0c 100644 --- a/addons/hearing/functions/fnc_moduleHearing.sqf +++ b/addons/hearing/functions/fnc_moduleHearing.sqf @@ -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."); diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 05dde3a1bf..471b16d243 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -165,5 +165,11 @@ Permite que unidades remotamente controladas pelo Zeus sejam atingidas por danos auditivos. Permitir a las unidades por control remoto de zeus que puedan tener daños auditivos. + + Add earplugs to units + + + Add the `ACE_EarPlugs` item to all units that have loud weapons. Can disable if using custom loadouts. + \ No newline at end of file diff --git a/addons/interaction/XEH_postInit.sqf b/addons/interaction/XEH_postInit.sqf index ee90af64ad..9ea907d8cd 100644 --- a/addons/interaction/XEH_postInit.sqf +++ b/addons/interaction/XEH_postInit.sqf @@ -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}, diff --git a/addons/inventory/RscDisplayInventory.hpp b/addons/inventory/RscDisplayInventory.hpp index f845f50a35..c3a1904678 100644 --- a/addons/inventory/RscDisplayInventory.hpp +++ b/addons/inventory/RscDisplayInventory.hpp @@ -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 { diff --git a/addons/laser/CfgVehicles.hpp b/addons/laser/CfgVehicles.hpp index dd3f02a0cc..d8976ac204 100644 --- a/addons/laser/CfgVehicles.hpp +++ b/addons/laser/CfgVehicles.hpp @@ -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)); diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp index 720d4e8a7b..7d7f98207f 100644 --- a/addons/map/CfgVehicles.hpp +++ b/addons/map/CfgVehicles.hpp @@ -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)); diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index a89e3fb8e3..2659440452 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -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) = ""; }; diff --git a/addons/map/functions/fnc_blueForceTrackingUpdate.sqf b/addons/map/functions/fnc_blueForceTrackingUpdate.sqf index 71e4e8c818..e9a619b5a4 100644 --- a/addons/map/functions/fnc_blueForceTrackingUpdate.sqf +++ b/addons/map/functions/fnc_blueForceTrackingUpdate.sqf @@ -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); diff --git a/addons/map/functions/fnc_compileFlashlightMenu.sqf b/addons/map/functions/fnc_compileFlashlightMenu.sqf index 0d081bb57c..bc6746f46e 100644 --- a/addons/map/functions/fnc_compileFlashlightMenu.sqf +++ b/addons/map/functions/fnc_compileFlashlightMenu.sqf @@ -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 \ No newline at end of file +_actions diff --git a/addons/map/functions/fnc_determineMapLight.sqf b/addons/map/functions/fnc_determineMapLight.sqf index 01f3882f1f..d023573cd9 100644 --- a/addons/map/functions/fnc_determineMapLight.sqf +++ b/addons/map/functions/fnc_determineMapLight.sqf @@ -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] \ No newline at end of file +[true, [_lightTint, _lightLevel] call _fnc_calcColor] diff --git a/addons/map/functions/fnc_determineZoom.sqf b/addons/map/functions/fnc_determineZoom.sqf index 345fc68583..bdfc9a866b 100644 --- a/addons/map/functions/fnc_determineZoom.sqf +++ b/addons/map/functions/fnc_determineZoom.sqf @@ -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 { diff --git a/addons/map/functions/fnc_flashlightGlow.sqf b/addons/map/functions/fnc_flashlightGlow.sqf index 5e72a6c183..011489f321 100644 --- a/addons/map/functions/fnc_flashlightGlow.sqf +++ b/addons/map/functions/fnc_flashlightGlow.sqf @@ -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; \ No newline at end of file +GVAR(glow) = _light; diff --git a/addons/map/functions/fnc_getUnitFlashlights.sqf b/addons/map/functions/fnc_getUnitFlashlights.sqf index 8fb8066374..41874cc0ca 100644 --- a/addons/map/functions/fnc_getUnitFlashlights.sqf +++ b/addons/map/functions/fnc_getUnitFlashlights.sqf @@ -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 \ No newline at end of file +_flashlights diff --git a/addons/map/functions/fnc_simulateMapLight.sqf b/addons/map/functions/fnc_simulateMapLight.sqf index ec08f14d4c..84fcc32773 100644 --- a/addons/map/functions/fnc_simulateMapLight.sqf +++ b/addons/map/functions/fnc_simulateMapLight.sqf @@ -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 -}; \ No newline at end of file +}; diff --git a/addons/map/functions/fnc_updateMapEffects.sqf b/addons/map/functions/fnc_updateMapEffects.sqf index 72f5d0cec1..0e36a6fdd6 100644 --- a/addons/map/functions/fnc_updateMapEffects.sqf +++ b/addons/map/functions/fnc_updateMapEffects.sqf @@ -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; }; -}; \ No newline at end of file +}; diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 8eab673caf..e7b55c56b0 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -256,6 +256,30 @@ Snížit jas Reducir brillo + + Turn On %1 + %1 Aktivieren + Encender %1 + Włącz %1 + Allumer %1 + Zapnout %1 + Accendi %1 + %1 Bekapcsolása + Ativar %1 + Активировать %1 + + + Turn Off %1 + %1 Deaktivieren + Apagar %1 + Wyłącz %1 + Éteindre %1 + Vypnout %1 + Spegni %1 + %1 Kikapcsolása + Desativar %1 + Деактивировать %1 + Set Channel At Start Ust. domyślny kanał diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 351d285c7e..4a63f3f67a 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -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 { diff --git a/addons/spottingscope/CfgVehicles.hpp b/addons/spottingscope/CfgVehicles.hpp index 2c8159fbb1..434c1c96ca 100644 --- a/addons/spottingscope/CfgVehicles.hpp +++ b/addons/spottingscope/CfgVehicles.hpp @@ -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; }; }; }; diff --git a/addons/spottingscope/CfgWeapons.hpp b/addons/spottingscope/CfgWeapons.hpp index 4ba078c057..9b5825572b 100644 --- a/addons/spottingscope/CfgWeapons.hpp +++ b/addons/spottingscope/CfgWeapons.hpp @@ -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; diff --git a/addons/spottingscope/config.cpp b/addons/spottingscope/config.cpp index 157e430868..c3541eed39 100644 --- a/addons/spottingscope/config.cpp +++ b/addons/spottingscope/config.cpp @@ -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; }; }; diff --git a/addons/spottingscope/data/ace_spottingscope.p3d b/addons/spottingscope/data/ace_spottingscope.p3d new file mode 100644 index 0000000000..fc6bc45354 Binary files /dev/null and b/addons/spottingscope/data/ace_spottingscope.p3d differ diff --git a/addons/spottingscope/data/ace_spottingscope_as.paa b/addons/spottingscope/data/ace_spottingscope_as.paa new file mode 100644 index 0000000000..a7e517e4ff Binary files /dev/null and b/addons/spottingscope/data/ace_spottingscope_as.paa differ diff --git a/addons/spottingscope/data/ace_spottingscope_co.paa b/addons/spottingscope/data/ace_spottingscope_co.paa new file mode 100644 index 0000000000..669d94f4ae Binary files /dev/null and b/addons/spottingscope/data/ace_spottingscope_co.paa differ diff --git a/addons/spottingscope/data/ace_spottingscope_glass.rvmat b/addons/spottingscope/data/ace_spottingscope_glass.rvmat new file mode 100644 index 0000000000..bce3c40b59 --- /dev/null +++ b/addons/spottingscope/data/ace_spottingscope_glass.rvmat @@ -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}; + }; +}; diff --git a/addons/spottingscope/data/ace_spottingscope_item.p3d b/addons/spottingscope/data/ace_spottingscope_item.p3d new file mode 100644 index 0000000000..d2de0edf1c Binary files /dev/null and b/addons/spottingscope/data/ace_spottingscope_item.p3d differ diff --git a/addons/spottingscope/data/ace_spottingscope_metal.rvmat b/addons/spottingscope/data/ace_spottingscope_metal.rvmat new file mode 100644 index 0000000000..54cfcafeb8 --- /dev/null +++ b/addons/spottingscope/data/ace_spottingscope_metal.rvmat @@ -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}; + }; +}; diff --git a/addons/spottingscope/data/ace_spottingscope_nohq.paa b/addons/spottingscope/data/ace_spottingscope_nohq.paa new file mode 100644 index 0000000000..5cc7f00dfd Binary files /dev/null and b/addons/spottingscope/data/ace_spottingscope_nohq.paa differ diff --git a/addons/spottingscope/data/ace_spottingscope_rubber.rvmat b/addons/spottingscope/data/ace_spottingscope_rubber.rvmat new file mode 100644 index 0000000000..c31f850e7d --- /dev/null +++ b/addons/spottingscope/data/ace_spottingscope_rubber.rvmat @@ -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}; + }; +}; diff --git a/addons/spottingscope/data/ace_spottingscope_smdi.paa b/addons/spottingscope/data/ace_spottingscope_smdi.paa new file mode 100644 index 0000000000..844626c0af Binary files /dev/null and b/addons/spottingscope/data/ace_spottingscope_smdi.paa differ diff --git a/addons/spottingscope/data/m144_ca.paa b/addons/spottingscope/data/m144_ca.paa index 4d7a63ba0a..a2d299d937 100644 Binary files a/addons/spottingscope/data/m144_ca.paa and b/addons/spottingscope/data/m144_ca.paa differ diff --git a/addons/spottingscope/data/model.cfg b/addons/spottingscope/data/model.cfg index e7beb2f2c1..71eb918bf7 100644 --- a/addons/spottingscope/data/model.cfg +++ b/addons/spottingscope/data/model.cfg @@ -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"; + }; }; }; };