Advertisement
Guest User

mf tow init.sqf

a guest
Jul 10th, 2014
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.74 KB | None | 0 0
  1. /**
  2. * mf-tow/init.sqf
  3. * The main script for initalising towing functionality.
  4. *
  5. * Created by Matt Fairbrass (matt_d_rat)
  6. * Version: 1.1.2
  7. * MIT Licence
  8. **/
  9.  
  10. private ["_cursorTarget", "_towableVehicles", "_towableVehiclesTotal"];
  11.  
  12. // Public variables
  13. MF_Tow_Base_Path = "addons\mf-tow"; // The base path to the MF-Tow Folder.
  14. MF_Tow_Distance = 10; // Minimum distance (in meters) away from vehicle the tow truck must be to tow.
  15. MF_Tow_Multi_Towing = true; // Allow a vehicle which is towing another vehicle already to be towed by another tow. Disabled by default.
  16.  
  17. // Functions
  18.  
  19. /**
  20. * Returns an array of towable objects which can be pulled by the tow truck.
  21. * Configure this as required to set which vehicles can pull which types of other vehicles.
  22. **/
  23. MF_Tow_Towable_Array =
  24. {
  25. private ["_array","_towTruck"];
  26. _towTruck = _this select 0;
  27. _array = [];
  28.  
  29. switch (typeOf _towTruck) do
  30. {
  31. case "ArmoredSUV_PMC": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  32. case "ArmoredSUV_PMC_DZ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  33. case "ArmoredSUV_PMC_DZE": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  34. case "ATV_CZ_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  35. case "ATV_US_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  36. case "car_hatchback": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  37. case "car_sedan": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  38. case "datsun1_civil_1_open": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  39. case "datsun1_civil_2_covered": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  40. case "datsun1_civil_3_open": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  41. case "GAZ_Vodnik_DZ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  42. case "GAZ_Vodnik_MedEvac": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  43. case "GLT_M300_LT": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  44. case "GLT_M300_ST": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  45. case "hilux1_civil_1_open": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  46. case "hilux_civil_2_covered": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  47. case "hilux1_civil_3_open_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  48. case "hilux1_civil_3_open": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  49. case "hilux1_civil_3_open_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  50. case "HMMWV_Ambulance": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  51. case "HMMWV_Ambulance_CZ_DES_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  52. case "HMMWV_DES_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  53. case "HMMWV_DZ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  54. case "HMMWV_M1151_M2_CZ_DES_EP1_DZE": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  55. case "HMMWV_M1151_M2_CZ_DES_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  56. case "HMMWV_M998A@_SOV_DES_EP1_DZ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  57. case "Ikarus": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  58. case "Ikarus_TK_CIV_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  59. case "Kamaz": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  60. case "Kamaz_Refuel_DZ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  61. case "Lada1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  62. case "Lada1_TF_CIV_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  63. case "Lada2": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  64. case "Lada2_TK_CIV_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  65. case "LadaLM": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  66. case "LandRover_CZ_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  67. case "LandRover_MG_TK_EP1_DZ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  68. case "LandRover_Special_CZ_EP1_DZ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  69. case "LandRover_TK_CIV_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  70. case "M1030_US_DES_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  71. case "MMT_Civ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  72. case "MtvrRefuel_DES_EP1_DZ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  73. case "MTVR_DES_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  74. case "Offroad_DSHKM_Gue_DZ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  75. case "Old_bike_TK_INS_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  76. case "Old_bike_TK_Civ_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  77. case "Pickup_PK_GUE_DZ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  78. case "Pickup_PK_INS_DZ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  79. case "Pickup_PK_TK_GUE_EP1_DZ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  80. case "S1203_ambulance_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  81. case "S1203_TK_CIV_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  82. case "Skoda": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  83. case "SkodaBlue": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  84. case "SkodaGreen": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  85. case "SkodaRed": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  86. case "SUV_Blue": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  87. case "SUV_Camo": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  88. case "SUV_Charcoal": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  89. case "SUV_Green": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  90. case "SUV_Orange": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  91. case "SUV_Pink": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  92. case "SUV_Red": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  93. case "SUV_Silver": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  94. case "SUV_TK_CIV_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  95. case "SUV_White": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  96. case "SUV_Yellow": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  97. case "TowingTractor": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  98. case "tractor": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  99. case "TT650_Civ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  100. case "TT650_Ins": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  101. case "TT650_TK_CIV_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  102. case "UAZ_CDF": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  103. case "UAZ_INS": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  104. case "UAZ_MG_TK_EP1_DZ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  105. case "UAZ_RU": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  106. case "UAZ_Unarmed_TK_CIV_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  107. case "UAZ_Unarmed_TK_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  108. case "UAZ_Unarmed_UN_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  109. case "UralRefuel_TK_EP1_DZ" {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  110. case "Ural_CDF": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  111. case "Ural_TK_CIV_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  112. case "Ural_UN_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  113. case "V3S_Open_TK_CIV_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  114. case "V3S_Open_TK_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  115. case "V3S_Refuel_TK_GUE_EP1_DZ": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  116. case "VolhaLimo_TK_CIV_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  117. case "Volha_1_TK_CIV_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  118. case "Volha_2_TK_CIV_EP1": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  119. case "VWGolf": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
  120. };
  121.  
  122. _array
  123. };
  124.  
  125. /**
  126. * Animate the player in a towing action, whilst attaching them to the tow vehicle to ensure safety.
  127. **/
  128. MF_Tow_Animate_Player_Tow_Action =
  129. {
  130. private ["_towTruck","_offsetZ"];
  131. _towTruck = _this select 0;
  132. _offsetZ = 0.1;
  133.  
  134. // Bounding box on UAZ is screwed, offset z-axis correctly
  135. if(_towTruck isKindOf "UAZ_Base") then {
  136. _offsetZ = 1.8;
  137. };
  138.  
  139. [player,20,true,(getPosATL player)] spawn player_alertZombies; // Alert nearby zombies
  140. [1,1] call dayz_HungerThirst; // Use some hunger and thirst to perform the action
  141.  
  142. // Attach the player to the tow truck temporarily for safety so that they aren't accidentally hit by the vehicle when it gets attached
  143. player attachTo [_towTruck,
  144. [
  145. (boundingBox _towTruck select 1 select 0),
  146. (boundingBox _towTruck select 0 select 1) + 1,
  147. (boundingBox _towTruck select 0 select 2) - (boundingBox player select 0 select 2) + _offsetZ
  148. ]
  149. ];
  150.  
  151. player setDir 270;
  152. player setPos (getPos player);
  153. player playActionNow "Medic"; // Force the animation
  154. };
  155.  
  156. MF_Tow_Get_Vehicle_Name =
  157. {
  158. private ["_vehicle", "_configVeh", "_vehicleName"];
  159. _vehicle = _this select 0;
  160.  
  161. _configVeh = configFile >> "cfgVehicles" >> TypeOf(_vehicle);
  162. _vehicleName = getText(_configVeh >> "displayName");
  163.  
  164. _vehicleName
  165. };
  166.  
  167. // Initialise script
  168. _cursorTarget = cursorTarget;
  169. _towableVehicles = [_cursorTarget] call MF_Tow_Towable_Array;
  170. _towableVehiclesTotal = count (_towableVehicles);
  171.  
  172. // Add the action to the players scroll wheel menu if the cursor target is a vehicle which can tow.
  173. if(_towableVehiclesTotal > 0) then {
  174. if (s_player_towing < 0) then {
  175. if(!(_cursorTarget getVariable ["MFTowIsTowing", false])) then {
  176. s_player_towing = player addAction ["Attach Tow", format["%1\tow_AttachTow.sqf", MF_Tow_Base_Path], _cursorTarget, 0, false, true, "",""];
  177. } else {
  178. s_player_towing = player addAction ["Detach Tow", format["%1\tow_DetachTow.sqf", MF_Tow_Base_Path], _cursorTarget, 0, false, true, "",""];
  179. };
  180. };
  181. }
  182. else {
  183. player removeAction s_player_towing;
  184. s_player_towing = -1;
  185. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement