offroad_02.c 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412
  1. class Offroad_02 extends CarScript
  2. {
  3. protected ref UniversalTemperatureSource m_UTSource;
  4. protected ref UniversalTemperatureSourceSettings m_UTSSettings;
  5. protected ref UniversalTemperatureSourceLambdaEngine m_UTSLEngine;
  6. void Offroad_02()
  7. {
  8. //m_dmgContactCoef = 0.0365;
  9. m_EngineStartOK = "Offroad_02_engine_start_SoundSet";
  10. m_EngineStartBattery = "Offroad_02_engine_failed_start_battery_SoundSet";
  11. m_EngineStartPlug = "Offroad_02_engine_failed_start_sparkplugs_SoundSet";
  12. m_EngineStartFuel = "Offroad_02_engine_failed_start_fuel_SoundSet";
  13. m_EngineStop = "Offroad_02_engine_stop_SoundSet";
  14. m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
  15. m_CarDoorOpenSound = "offroad_02_door_open_SoundSet";
  16. m_CarDoorCloseSound = "offroad_02_door_close_SoundSet";
  17. m_CarHornShortSoundName = "Offroad_02_Horn_Short_SoundSet";
  18. m_CarHornLongSoundName = "Offroad_02_Horn_SoundSet";
  19. SetEnginePos("0 0.7 1.7");
  20. }
  21. override void EEInit()
  22. {
  23. super.EEInit();
  24. if (GetGame().IsServer() || !GetGame().IsMultiplayer())
  25. {
  26. m_UTSSettings = new UniversalTemperatureSourceSettings();
  27. m_UTSSettings.m_ManualUpdate = true;
  28. m_UTSSettings.m_TemperatureItemCap = GameConstants.ITEM_TEMPERATURE_NEUTRAL_ZONE_MIDDLE;
  29. m_UTSSettings.m_TemperatureCap = 0;
  30. m_UTSSettings.m_RangeFull = 0.5;
  31. m_UTSSettings.m_RangeMax = 2;
  32. m_UTSLEngine = new UniversalTemperatureSourceLambdaEngine();
  33. m_UTSource = new UniversalTemperatureSource(this, m_UTSSettings, m_UTSLEngine);
  34. }
  35. }
  36. override void OnEngineStart()
  37. {
  38. super.OnEngineStart();
  39. if (GetGame().IsServer() || !GetGame().IsMultiplayer())
  40. {
  41. m_UTSource.SetDefferedActive(true, 20.0);
  42. }
  43. }
  44. override void OnEngineStop()
  45. {
  46. super.OnEngineStop();
  47. if (GetGame().IsServer() || !GetGame().IsMultiplayer())
  48. {
  49. m_UTSource.SetDefferedActive(false, 10.0);
  50. }
  51. }
  52. override void EOnPostSimulate(IEntity other, float timeSlice)
  53. {
  54. if (GetGame().IsServer() || !GetGame().IsMultiplayer())
  55. {
  56. if (m_UTSource.IsActive())
  57. {
  58. m_UTSource.Update(m_UTSSettings, m_UTSLEngine);
  59. }
  60. }
  61. }
  62. override int GetAnimInstance()
  63. {
  64. return VehicleAnimInstances.HMMWV;
  65. }
  66. override float GetTransportCameraDistance()
  67. {
  68. return 5.1;
  69. }
  70. override int GetSeatAnimationType(int posIdx)
  71. {
  72. switch (posIdx)
  73. {
  74. case 0:
  75. return DayZPlayerConstants.VEHICLESEAT_DRIVER;
  76. case 1:
  77. return DayZPlayerConstants.VEHICLESEAT_CODRIVER;
  78. case 2:
  79. return DayZPlayerConstants.VEHICLESEAT_PASSENGER_L;
  80. case 3:
  81. return DayZPlayerConstants.VEHICLESEAT_PASSENGER_R;
  82. }
  83. return 0;
  84. }
  85. // Override for car-specific light type
  86. override CarLightBase CreateFrontLight()
  87. {
  88. return CarLightBase.Cast(ScriptedLightBase.CreateLight(Offroad_02FrontLight));
  89. }
  90. // Override for car-specific light type
  91. override CarRearLightBase CreateRearLight()
  92. {
  93. return CarRearLightBase.Cast(ScriptedLightBase.CreateLight(Offroad_02RearLight));
  94. }
  95. override bool CanReleaseAttachment( EntityAI attachment )
  96. {
  97. if (!super.CanReleaseAttachment(attachment))
  98. {
  99. return false;
  100. }
  101. string attType = attachment.GetType();
  102. switch (attType)
  103. {
  104. case "CarBattery":
  105. if (GetCarDoorsState("Offroad_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
  106. {
  107. return false;
  108. }
  109. break;
  110. case "GlowPlug":
  111. if (GetCarDoorsState("Offroad_02_Hood") == CarDoorState.DOORS_CLOSED || EngineIsOn())
  112. {
  113. return false;
  114. }
  115. break;
  116. }
  117. return true;
  118. }
  119. override protected bool CanManipulateSpareWheel(string slotSelectionName)
  120. {
  121. return GetCarDoorsState("Offroad_02_Trunk") != CarDoorState.DOORS_CLOSED;
  122. }
  123. override bool CanDisplayAttachmentCategory(string category_name)
  124. {
  125. if ( !super.CanDisplayAttachmentCategory(category_name))
  126. {
  127. return false;
  128. }
  129. category_name.ToLower();
  130. if (category_name.Contains("engine"))
  131. {
  132. if (GetCarDoorsState("Offroad_02_Hood") == CarDoorState.DOORS_CLOSED)
  133. {
  134. return false;
  135. }
  136. }
  137. return true;
  138. }
  139. override bool CanDisplayCargo()
  140. {
  141. if ( !super.CanDisplayCargo() )
  142. return false;
  143. if ( GetCarDoorsState("Offroad_02_Trunk") == CarDoorState.DOORS_CLOSED )
  144. return false;
  145. return true;
  146. }
  147. override int GetCarDoorsState(string slotType)
  148. {
  149. CarDoor carDoor;
  150. Class.CastTo( carDoor, FindAttachmentBySlotName( slotType ) );
  151. if (!carDoor)
  152. {
  153. return CarDoorState.DOORS_MISSING;
  154. }
  155. switch (slotType)
  156. {
  157. case "Offroad_02_Door_1_1":
  158. return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
  159. case "Offroad_02_Door_2_1":
  160. return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
  161. case "Offroad_02_Door_1_2":
  162. return TranslateAnimationPhaseToCarDoorState("DoorsCargo1");
  163. case "Offroad_02_Door_2_2":
  164. return TranslateAnimationPhaseToCarDoorState("DoorsCargo2");
  165. case "Offroad_02_Hood":
  166. return TranslateAnimationPhaseToCarDoorState("DoorsHood");
  167. case "Offroad_02_Trunk":
  168. return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
  169. }
  170. return CarDoorState.DOORS_MISSING;
  171. }
  172. override bool CrewCanGetThrough( int posIdx )
  173. {
  174. switch( posIdx )
  175. {
  176. case 0:
  177. if ( GetCarDoorsState("Offroad_02_Door_1_1") == CarDoorState.DOORS_CLOSED )
  178. return false;
  179. return true;
  180. break;
  181. case 1:
  182. if ( GetCarDoorsState("Offroad_02_Door_2_1") == CarDoorState.DOORS_CLOSED )
  183. return false;
  184. return true;
  185. break;
  186. case 2:
  187. if ( GetCarDoorsState("Offroad_02_Door_1_2") == CarDoorState.DOORS_CLOSED )
  188. return false;
  189. return true;
  190. break;
  191. case 3:
  192. if ( GetCarDoorsState("Offroad_02_Door_2_2") == CarDoorState.DOORS_CLOSED )
  193. return false;
  194. return true;
  195. break;
  196. }
  197. return false;
  198. }
  199. override string GetDoorSelectionNameFromSeatPos(int posIdx)
  200. {
  201. switch( posIdx )
  202. {
  203. case 0:
  204. return "doors_driver";
  205. break;
  206. case 1:
  207. return "doors_codriver";
  208. break;
  209. case 2:
  210. return "doors_cargo1";
  211. break;
  212. case 3:
  213. return "doors_cargo2";
  214. break;
  215. }
  216. return super.GetDoorSelectionNameFromSeatPos(posIdx);
  217. }
  218. override string GetDoorInvSlotNameFromSeatPos(int posIdx)
  219. {
  220. switch (posIdx)
  221. {
  222. case 0:
  223. return "Offroad_02_Door_1_1";
  224. case 1:
  225. return "Offroad_02_Door_2_1";
  226. case 2:
  227. return "Offroad_02_Door_1_2";
  228. case 3:
  229. return "Offroad_02_Door_2_2";
  230. }
  231. return super.GetDoorInvSlotNameFromSeatPos(posIdx);
  232. }
  233. override float OnSound(CarSoundCtrl ctrl, float oldValue)
  234. {
  235. switch ( ctrl )
  236. {
  237. case CarSoundCtrl.DOORS:
  238. float newValue = 0;
  239. if (GetCarDoorsState("Offroad_02_Door_1_1") == CarDoorState.DOORS_CLOSED)
  240. {
  241. newValue += 0.25;
  242. }
  243. if (GetCarDoorsState("Offroad_02_Door_2_1") == CarDoorState.DOORS_CLOSED)
  244. {
  245. newValue += 0.25;
  246. }
  247. if (GetCarDoorsState("Offroad_02_Door_1_2") == CarDoorState.DOORS_CLOSED)
  248. {
  249. newValue += 0.25;
  250. }
  251. if (GetCarDoorsState("Offroad_02_Door_2_2") == CarDoorState.DOORS_CLOSED)
  252. {
  253. newValue += 0.25;
  254. }
  255. return Math.Clamp(newValue, 0, 1);
  256. break;
  257. }
  258. return super.OnSound(ctrl, oldValue);
  259. }
  260. override string GetAnimSourceFromSelection(string selection)
  261. {
  262. switch (selection)
  263. {
  264. case "doors_driver":
  265. return "DoorsDriver";
  266. case "doors_codriver":
  267. return "DoorsCoDriver";
  268. case "doors_cargo1":
  269. return "DoorsCargo1";
  270. case "doors_cargo2":
  271. return "DoorsCargo2";
  272. case "doors_hood":
  273. return "DoorsHood";
  274. case "doors_trunk":
  275. return "DoorsTrunk";
  276. }
  277. return "";
  278. }
  279. override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
  280. {
  281. switch (currentSeat)
  282. {
  283. case 0:
  284. return nextSeat == 1;
  285. case 1:
  286. return nextSeat == 0;
  287. case 2:
  288. return nextSeat == 3;
  289. case 3:
  290. return nextSeat == 2;
  291. }
  292. return false;
  293. }
  294. override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
  295. {
  296. switch (pCurrentSeat)
  297. {
  298. case 0:
  299. return pDoorsSelection == "DoorsDriver";
  300. case 1:
  301. return pDoorsSelection == "DoorsCoDriver";
  302. case 2:
  303. return pDoorsSelection == "DoorsCargo1";
  304. case 3:
  305. return pDoorsSelection == "DoorsCargo2";
  306. }
  307. return false;
  308. }
  309. override bool IsVitalTruckBattery()
  310. {
  311. return false;
  312. }
  313. override bool IsVitalSparkPlug()
  314. {
  315. return false;
  316. }
  317. override bool IsVitalRadiator()
  318. {
  319. return false;
  320. }
  321. override void OnDebugSpawn()
  322. {
  323. SpawnUniversalParts();
  324. SpawnAdditionalItems();
  325. FillUpCarFluids();
  326. GetInventory().CreateInInventory("Offroad_02_Wheel");
  327. GetInventory().CreateInInventory("Offroad_02_Wheel");
  328. GetInventory().CreateInInventory("Offroad_02_Wheel");
  329. GetInventory().CreateInInventory("Offroad_02_Wheel");
  330. GetInventory().CreateInInventory("Offroad_02_Door_1_1");
  331. GetInventory().CreateInInventory("Offroad_02_Door_1_2");
  332. GetInventory().CreateInInventory("Offroad_02_Door_2_1");
  333. GetInventory().CreateInInventory("Offroad_02_Door_2_2");
  334. GetInventory().CreateInInventory("Offroad_02_Hood");
  335. GetInventory().CreateInInventory("Offroad_02_Trunk");
  336. //-----IN CAR CARGO
  337. GetInventory().CreateInInventory("Offroad_02_Wheel");
  338. GetInventory().CreateInInventory("Offroad_02_Wheel");
  339. }
  340. }