diff --git a/addons/vurtual_seat.pbo b/addons/vurtual_seat.pbo index 21897f3..0e88f6d 100644 Binary files a/addons/vurtual_seat.pbo and b/addons/vurtual_seat.pbo differ diff --git a/addons/vurtual_seat.pbo.vurtual.bisign b/addons/vurtual_seat.pbo.vurtual.bisign deleted file mode 100644 index bdced8a..0000000 Binary files a/addons/vurtual_seat.pbo.vurtual.bisign and /dev/null differ diff --git a/addons/vurtual_seat/vurtual_seat/$PBOPREFIX$.txt b/addons/vurtual_seat/vurtual_seat/$PBOPREFIX$.txt new file mode 100644 index 0000000..cb30905 --- /dev/null +++ b/addons/vurtual_seat/vurtual_seat/$PBOPREFIX$.txt @@ -0,0 +1,4 @@ +//<'vurtual_seat.pbo' properties via Mikero's dos tools, dll version 8.35> +prefix=vurtual_seat; +//PboType=Arma Addon; +// diff --git a/addons/vurtual_seat/vurtual_seat/Data/env_land_co.paa b/addons/vurtual_seat/vurtual_seat/Data/env_land_co.paa new file mode 100644 index 0000000..b1b9950 Binary files /dev/null and b/addons/vurtual_seat/vurtual_seat/Data/env_land_co.paa differ diff --git a/addons/vurtual_seat/vurtual_seat/Data/foxhole_co.paa b/addons/vurtual_seat/vurtual_seat/Data/foxhole_co.paa new file mode 100644 index 0000000..846668e Binary files /dev/null and b/addons/vurtual_seat/vurtual_seat/Data/foxhole_co.paa differ diff --git a/addons/vurtual_seat/vurtual_seat/Data/seat.rvmat b/addons/vurtual_seat/vurtual_seat/Data/seat.rvmat new file mode 100644 index 0000000..59170c9 --- /dev/null +++ b/addons/vurtual_seat/vurtual_seat/Data/seat.rvmat @@ -0,0 +1,32 @@ +ambient[] = {1, 1, 1, 1}; +diffuse[] = {1, 1, 1, 1}; +forcedDiffuse[] = {0, 0, 0, 0}; +emmisive[] = {0, 0, 0, 1}; +specular[] = {1, 1, 1, 0}; +specularPower = 40; +PixelShaderID = "NormalMapSpecularMap"; +VertexShaderID = "NormalMap"; + +class Stage1 { + texture = "vurtual_seat\Data\seat_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 = "vurtual_seat\Data\seat_smdi.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/vurtual_seat/vurtual_seat/Data/seat_co.paa b/addons/vurtual_seat/vurtual_seat/Data/seat_co.paa new file mode 100644 index 0000000..81706d0 Binary files /dev/null and b/addons/vurtual_seat/vurtual_seat/Data/seat_co.paa differ diff --git a/addons/vurtual_seat/vurtual_seat/Data/seat_destruct.rvmat b/addons/vurtual_seat/vurtual_seat/Data/seat_destruct.rvmat new file mode 100644 index 0000000..b0d0305 --- /dev/null +++ b/addons/vurtual_seat/vurtual_seat/Data/seat_destruct.rvmat @@ -0,0 +1,56 @@ +ambient[] = {1, 1, 1, 1}; +diffuse[] = {1, 1, 1, 1}; +forcedDiffuse[] = {0, 0, 0, 0}; +emmisive[] = {0, 0, 0, 1}; +specular[] = {1, 1, 1, 0}; +specularPower = 40; +PixelShaderID = "NormalMapMacroASSpecularDIMap"; +VertexShaderID = "NormalMapAS"; + +class Stage1 { + texture = "vurtual_seat\Data\seat_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 = "vurtual_seat\Data\seat_destruct_mc.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {3, 0, 0}; + up[] = {0, 3, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; + +class Stage3 { + texture = "#(argb,8,8,3)color(1,1,1,1)"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; + +class Stage4 { + texture = "vurtual_seat\Data\seat_destruct_smdi.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/vurtual_seat/vurtual_seat/Data/seat_destruct_mc.paa b/addons/vurtual_seat/vurtual_seat/Data/seat_destruct_mc.paa new file mode 100644 index 0000000..cfae983 Binary files /dev/null and b/addons/vurtual_seat/vurtual_seat/Data/seat_destruct_mc.paa differ diff --git a/addons/vurtual_seat/vurtual_seat/Data/seat_destruct_smdi.paa b/addons/vurtual_seat/vurtual_seat/Data/seat_destruct_smdi.paa new file mode 100644 index 0000000..f2d9c6e Binary files /dev/null and b/addons/vurtual_seat/vurtual_seat/Data/seat_destruct_smdi.paa differ diff --git a/addons/vurtual_seat/vurtual_seat/Data/seat_nohq.paa b/addons/vurtual_seat/vurtual_seat/Data/seat_nohq.paa new file mode 100644 index 0000000..9b36ba3 Binary files /dev/null and b/addons/vurtual_seat/vurtual_seat/Data/seat_nohq.paa differ diff --git a/addons/vurtual_seat/vurtual_seat/Data/seat_smdi.paa b/addons/vurtual_seat/vurtual_seat/Data/seat_smdi.paa new file mode 100644 index 0000000..1cdadc6 Binary files /dev/null and b/addons/vurtual_seat/vurtual_seat/Data/seat_smdi.paa differ diff --git a/addons/vurtual_seat/vurtual_seat/Data/stretcher.rvmat b/addons/vurtual_seat/vurtual_seat/Data/stretcher.rvmat new file mode 100644 index 0000000..97925ca --- /dev/null +++ b/addons/vurtual_seat/vurtual_seat/Data/stretcher.rvmat @@ -0,0 +1,92 @@ +ambient[]={1.000000,1.000000,1.000000,1.000000}; +diffuse[]={1.000000,1.000000,1.000000,1.000000}; +forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000}; +emmisive[]={0.000000,0.000000,0.000000,1.000000}; +specular[]={0.500000,0.500000,0.400000,1.000000}; +specularPower=50.000000; +PixelShaderID="Super"; +VertexShaderID="Super"; +class Stage1 +{ + texture="vurtual_seat\data\stretcher_nohq.tga"; + uvSource="tex"; + class uvTransform + { + aside[]={1.000000,0.000000,0.000000}; + up[]={0.000000,1.000000,0.000000}; + dir[]={0.000000,0.000000,0.000000}; + pos[]={0.000000,0.000000,0.000000}; + }; +}; +class Stage2 +{ + texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)"; + uvSource="tex"; + class uvTransform + { + aside[]={8.000000,0.000000,0.000000}; + up[]={0.000000,8.000000,0.000000}; + dir[]={0.000000,0.000000,0.000000}; + pos[]={0.000000,0.000000,0.000000}; + }; +}; +class Stage3 +{ + texture="#(argb,8,8,3)color(0,0,0,0,MC)"; + uvSource="tex"; + class uvTransform + { + aside[]={1.000000,0.000000,0.000000}; + up[]={0.000000,1.000000,0.000000}; + dir[]={0.000000,0.000000,0.000000}; + pos[]={0.000000,0.000000,0.000000}; + }; +}; +class Stage4 +{ + texture="#(argb,8,8,3)color(1,1,1,1,AS)"; + uvSource="tex"; + class uvTransform + { + aside[]={1.000000,0.000000,0.000000}; + up[]={0.000000,1.000000,0.000000}; + dir[]={0.000000,0.000000,0.000000}; + pos[]={0.000000,0.000000,0.000000}; + }; +}; +class Stage5 +{ + texture="#(argb,8,8,3)color(0,0,1,1,SMDI)"; + uvSource="tex"; + class uvTransform + { + aside[]={1.000000,0.000000,0.000000}; + up[]={0.000000,1.000000,0.000000}; + dir[]={0.000000,0.000000,0.000000}; + pos[]={0.000000,0.000000,0.000000}; + }; +}; +class Stage6 +{ + texture="#(ai,32,128,1)fresnel(7.53,5.44)"; + uvSource="tex"; + class uvTransform + { + aside[]={1.000000,0.000000,0.000000}; + up[]={0.000000,1.000000,0.000000}; + dir[]={0.000000,0.000000,0.000000}; + pos[]={0.000000,0.000000,0.000000}; + }; +}; +class Stage7 +{ + texture="vurtual_seat\data\env_land_co.tga"; + uvSource="tex"; + class uvTransform + { + aside[]={1.000000,0.000000,0.000000}; + up[]={0.000000,1.000000,0.000000}; + dir[]={0.000000,0.000000,0.000000}; + pos[]={0.000000,0.000000,0.000000}; + }; +}; diff --git a/addons/vurtual_seat/vurtual_seat/Data/stretcher_co.paa b/addons/vurtual_seat/vurtual_seat/Data/stretcher_co.paa new file mode 100644 index 0000000..c419f6d Binary files /dev/null and b/addons/vurtual_seat/vurtual_seat/Data/stretcher_co.paa differ diff --git a/addons/vurtual_seat/vurtual_seat/Data/stretcher_nohq.paa b/addons/vurtual_seat/vurtual_seat/Data/stretcher_nohq.paa new file mode 100644 index 0000000..b0d4950 Binary files /dev/null and b/addons/vurtual_seat/vurtual_seat/Data/stretcher_nohq.paa differ diff --git a/addons/vurtual_seat/vurtual_seat/config.cpp b/addons/vurtual_seat/vurtual_seat/config.cpp new file mode 100644 index 0000000..7f7068b --- /dev/null +++ b/addons/vurtual_seat/vurtual_seat/config.cpp @@ -0,0 +1,255 @@ +//////////////////////////////////////////////////////////////////// +//DeRap: vurtual_seat\config.bin +//Produced from mikero's Dos Tools Dll version 8.35 +//https://mikero.bytex.digital/Downloads +//'now' is Mon Apr 17 21:15:22 2023 : 'file' last modified on Wed Dec 31 19:00:01 1969 +//////////////////////////////////////////////////////////////////// + +#define _ARMA_ + +class CfgPatches +{ + class vurtual_seat + { + units[] = {"vurtual_seat","vurtual_stretcher","vurtual_stretcher_bag","vurtual_foxhole"}; + weapons[] = {}; + requiredVersion = 0.1; + requiredAddons[] = {"A3_Static_F"}; + }; +}; +class CfgMovesBasic +{ + class ManActions + { + vurtual_stretcher = "vurtual_stretcher"; + }; +}; +class CfgMovesMaleSdr: CfgMovesBasic +{ + class States + { + class Crew; + class vurtual_stretcher: Crew + { + file = "a3\anims_f\data\anim\sdr\inj\ainjppnemstpsnonwnondnon.rtm"; + interpolateTo[] = {"Unconscious",0.02}; + leftHandIKCurve[] = {}; + rightHandIKCurve[] = {}; + }; + }; +}; +class CfgFunctions +{ + class vurtual_seat + { + tag = "vurtual_seat"; + class boxloaderFunctions + { + file = "\vurtual_seat\fnc"; + class stretcher{}; + class foxhole{}; + class carry_litter{}; + }; + }; +}; +class cfgVehicles +{ + class Tank_F; + class vurtual_seat: Tank_F + { + rightDustEffects[] = {}; + rightDustEffect = ""; + leftDustEffects[] = {}; + leftDustEffect = ""; + class Exhausts {}; + class DustEffects {}; + explosionEffect = ""; + fuelExplosionPower = 0; + editorForceEmpty = 1; + editorSubcategory = "edSubcat_Storage"; + crew = "C_man_1"; + icon = "iconObject_1x1"; + hasDriver = 0; + scope = 2; + side = 3; + faction = "CIV_F"; + accuracy = 0.001; + camouflage = 10; + armor = 20; + displayName = "Car Seat"; + Model = "\vurtual_seat\vurtual_seat.p3d"; + simulation = "tankX"; + crewVulnerable = 1; + explosionShielding = 0; + irTarget = 0; + allowTabLock = 0; + memoryPointsGetInCargo = "pos cargo"; + memoryPointsGetInCargoDir = "pos cargo dir"; + cargoAction[] = {"passenger_low01"}; + tf_isolatedAmount = 0; + numberPhysicalWheels = 0; + hideProxyInCombat = 0; + class Damage + { + tex[] = {}; + mat[] = {"vurtual_seat\Data\seat.rvmat","vurtual_seat\Data\seat.rvmat","vurtual_seat\Data\seat_destruct.rvmat"}; + }; + class animationSources + { + class seat_hide + { + source = "user"; + initPhase = 0; + animPeriod = 0.1; + displayName = "Hide Seat"; + forceAnimatePhase = 1; + forceAnimate[] = {"legs_hide",1}; + }; + }; + maximumLoad = 0; + transportMaxBackpacks = 0; + transportMaxMagazines = 64; + class TransportItems; + class CargoTurret; + class Turrets + { + class MainTurret: CargoTurret + { + gunnerAction = "passenger_inside_2"; + gunnerInAction = "passenger_inside_2"; + memoryPointsGetInGunner = "pos cargo"; + memoryPointsGetInGunnerDir = "pos cargo dir"; + gunnerName = "Armchair Warrior"; + gunnerCompartments = "Compartment1"; + proxyIndex = 1; + isPersonTurret = 1; + forceHideGunner = 1; + maxElev = 75; + minElev = -75; + maxTurn = 95; + minTurn = -95; + stabilizedInAxes = 3; + primaryGunner = 1; + dontCreateAI = 0; + ejectDeadGunner = 0; + }; + }; + transportSoldier = 0; + ace_cargo_canLoad = 0; + ace_Cargo_hasCargo = 0; + ace_dragging_canDrag = 0; + ace_dragging_canCarry = 0; + ace_cookoff_probability = 0; + destrType = "destructDefault"; + fuelCapacity = 0; + nameSound = "veh_static_s"; + vehicleClass = "static"; + unitInfoType = "RscUnitInfoStatic"; + crewExplosionProtection = 0; + class DestructionEffects{}; + }; + class weapon_bag_base; + class vurtual_stretcher_bag: weapon_bag_base + { + class assembleInfo + { + displayName = "Stretcher"; + assembleTo = "vurtual_stretcher"; + base = ""; + primary = 1; + dissasembleTo[] = {}; + }; + author = "vurtual"; + scope = 2; + editorCategory = "EdCat_Equipment"; + editorSubcategory = "EdSubcat_DismantledWeapons"; + displayName = "Stretcher (Packed)"; + mass = 60; + }; + class vurtual_foxhole: vurtual_seat + { + displayName = "Foxhole"; + model = "\vurtual_seat\vurtual_foxhole.p3d"; + cargoAction[] = {"passenger_flatground_4_vehicle_passenger_stand_1"}; + class AnimationSources: animationSources + { + class GunnerTurnOut + { + source = "user"; + initPhase = 0; + animPeriod = 0.5; + }; + }; + maximumLoad = 100; + class Turrets: Turrets + { + class MainTurret: MainTurret + { + gunnerAction = "passenger_flatground_4_vehicle_passenger_stand_1"; + gunnerInAction = "passenger_flatground_4_vehicle_passenger_stand_1"; + gunnerName = "Gunner"; + minElev = -10; + maxElev = 75; + minTurn = -100; + maxTurn = 100; + minOutElev = -10; + maxOutElev = 75; + minOutTurn = -100; + maxOutTurn = 100; + isPersonTurret = 1; + inGunnerMayFire = 1; + outGunnerMayFire = 1; + gunnerForceOptics = 0; + allowLauncherIn = 1; + allowLauncherOut = 1; + showAsCargo = 0; + }; + }; + class EventHandlers + { + init = "_this call vurtual_seat_fnc_foxhole"; + }; + }; + class vurtual_stretcher: vurtual_seat + { + ace_dragging_canDrag = 1; + ace_dragging_canCarry = 1; + ace_dragging_dragPosition[] = {0,1.7,0}; + ace_dragging_carryPosition[] = {0,1.7,0}; + ace_dragging_dragDirection = 0; + ace_Carry_carryDirection = 0; + transportSoldier = 1; + slingLoadCargoMemoryPoints[] = {"SlingLoadCargo1","SlingLoadCargo2","SlingLoadCargo3","SlingLoadCargo4"}; + class Turrets{}; + class AnimationSources{}; + displayName = "Stretcher"; + Model = "\vurtual_seat\vurtual_stretcher.p3d"; + cargoAction[] = {"vurtual_stretcher"}; + hideWeaponsCargo = "true"; + ejectDeadCargo = 0; + class VehicleTransport + { + class Cargo + { + parachuteClass = "B_Parachute_02_F"; + parachuteHeightLimit = 5; + canBeTransported = 1; + dimensions[] = {"VTV_Cargo_Base","VTV_Cargo_Corner"}; + }; + }; + class EventHandlers + { + init = "_this call vurtual_seat_fnc_stretcher"; + }; + class Damage + { + tex[] = {}; + mat[] = {"vurtual_seat\Data\stretcher.rvmat","vurtual_seat\Data\stretcher.rvmat","vurtual_seat\Data\seat_destruct.rvmat"}; + }; + }; +}; +class cfgMods +{ + author = "vurtual"; + timepacked = "1535211253"; +}; diff --git a/addons/vurtual_seat/vurtual_seat/fnc/fn_carry_litter.sqf b/addons/vurtual_seat/vurtual_seat/fnc/fn_carry_litter.sqf new file mode 100644 index 0000000..5f816af --- /dev/null +++ b/addons/vurtual_seat/vurtual_seat/fnc/fn_carry_litter.sqf @@ -0,0 +1,44 @@ +params [["_veh",objNull,[objNull]],["_arr",[],[[]]]]; + +if (isNull _veh) exitWith {false}; +{ + _x set [0,objNull]; +} forEach _arr; +_veh setVariable ["vurtual_seat_litter_slots",_arr]; +//[objNull,[0,0,0],0] +_veh addAction ["Load Stretcher",{ + _veh = (_this select 0); + _ply = (_this select 1); + _arr = _veh getVariable ["vurtual_seat_litter_slots",[]]; + if (count _arr == 0) exitWith {false}; + _litter = ((position _ply) nearestObject "vurtual_stretcher"); + if (!(isNull attachedTo _litter) || (_litter distance _ply)>3) exitWith {false}; + _attached = { _obj = (_x select 0); + if (isNull _obj) exitWith { + _x set [0,_litter]; + _pos = (_x select 1); + if (typeName (_x select 1)!="ARRAY") then { + _pos = _veh selectionPosition (_x select 1); + }; + _litter AttachTo [_veh,_pos]; + _litter setDir (_x select 2); + [_litter,_veh,_forEachIndex] spawn { + params ["_litter","_veh","_index"]; + waitUntil {sleep 1; !(alive _litter && (attachedTo _litter == _veh))}; + if (alive _veh) then { + _arr = _veh getVariable ["vurtual_seat_litter_slots",[]]; + if (count _arr > 0) then { + (_arr select _index) set [0,objNull]; + }; + }; + }; + true + }; false + } forEach _arr; + if !(_attached) then { + hint "No attachment positions open."; + }; +},[],1.5,false,true,"","(alive _target) && (vehicle _this == _this) && (isNull attachedTo ((position _this) nearestObject 'vurtual_stretcher')) && (((position _this) nearestObject 'vurtual_stretcher') distance _this)<2"]; + +true + diff --git a/addons/vurtual_seat/vurtual_seat/fnc/fn_foxhole.sqf b/addons/vurtual_seat/vurtual_seat/fnc/fn_foxhole.sqf new file mode 100644 index 0000000..f47a339 --- /dev/null +++ b/addons/vurtual_seat/vurtual_seat/fnc/fn_foxhole.sqf @@ -0,0 +1,6 @@ +params [["_veh",objNull,[objNull]]]; +if !(_veh isKindOf "vurtual_foxhole") exitWith {false}; +_veh addAction ["Turn",{(_this select 0) animateSource ["GunnerTurnOut",abs ((_this select 0 animationSourcePhase "GunnerTurnOut")-1)];},[],0,false,true,"","vehicle _this == _target",1,false]; + + +true diff --git a/addons/vurtual_seat/vurtual_seat/fnc/fn_stretcher.sqf b/addons/vurtual_seat/vurtual_seat/fnc/fn_stretcher.sqf new file mode 100644 index 0000000..647a95b --- /dev/null +++ b/addons/vurtual_seat/vurtual_seat/fnc/fn_stretcher.sqf @@ -0,0 +1,24 @@ +params [["_veh",objNull,[objNull]]]; +if !(_veh isKindOf "vurtual_stretcher") exitWith {false}; +if (isClass(configFile >> "CfgPatches" >> "ace_dragging")) then { + [_veh] call ace_dragging_fnc_initObject; +}; +_veh addAction ["Disassemble stretcher",{ + _litter = (_this select 0); + if ((count crew _litter > 0) || !(isNull attachedTo _litter)) exitWith {false}; + _bag = "vurtual_stretcher_bag" createVehicle (position _litter); + _bag setPosASL getPosASL _litter; + deleteVehicle _litter; +},[],1.5,false,true,"","(alive _target) && (vehicle _this == _this) && (isNull attachedTo _target) && (count crew _target == 0)"]; + +_veh addAction ["Unload Stretcher",{ + _litter = (_this select 0); + _veh = attachedTo _litter; + _arr = _veh getVariable ["vurtual_seat_litter_slots",[]]; + if (!(isNull _veh) && (isNull isVehicleCargo _litter)) then { + detach _litter; + _litter setVehiclePosition [player,[],0,"NONE"]; + {if ((_x select 0) == _litter) then { _x set [0,objNull];}} forEach _arr; + }; +},[],1.5,false,true,"","(alive _target) && (vehicle _this == _this) && !(isNull attachedTo _target) && (isNull isVehicleCargo _target)"]; +true diff --git a/addons/vurtual_seat/vurtual_seat/texHeaders.bin b/addons/vurtual_seat/vurtual_seat/texHeaders.bin new file mode 100644 index 0000000..15bafbf Binary files /dev/null and b/addons/vurtual_seat/vurtual_seat/texHeaders.bin differ diff --git a/addons/vurtual_seat/vurtual_seat/vurtual_foxhole.p3d b/addons/vurtual_seat/vurtual_seat/vurtual_foxhole.p3d new file mode 100644 index 0000000..ebac4fb Binary files /dev/null and b/addons/vurtual_seat/vurtual_seat/vurtual_foxhole.p3d differ diff --git a/addons/vurtual_seat/vurtual_seat/vurtual_seat.p3d b/addons/vurtual_seat/vurtual_seat/vurtual_seat.p3d new file mode 100644 index 0000000..88ff8e1 Binary files /dev/null and b/addons/vurtual_seat/vurtual_seat/vurtual_seat.p3d differ diff --git a/addons/vurtual_seat/vurtual_seat/vurtual_stretcher.p3d b/addons/vurtual_seat/vurtual_seat/vurtual_stretcher.p3d new file mode 100644 index 0000000..25a465a Binary files /dev/null and b/addons/vurtual_seat/vurtual_seat/vurtual_stretcher.p3d differ