573{
577
579 {
580
581
582 m_EngineStartOK = "offroad_engine_start_SoundSet";
583 m_EngineStartBattery = "offroad_engine_failed_start_battery_SoundSet";
584 m_EngineStartPlug = "offroad_engine_failed_start_sparkplugs_SoundSet";
585 m_EngineStartFuel = "offroad_engine_failed_start_fuel_SoundSet";
586 m_EngineStop = "offroad_engine_stop_SoundSet";
587 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
588
589 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
590 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
591 m_CarSeatShiftInSound = "Offroad_SeatShiftIn_SoundSet";
592 m_CarSeatShiftOutSound = "Offroad_SeatShiftOut_SoundSet";
593
594 m_CarHornShortSoundName = "Offroad_Horn_Short_SoundSet";
595 m_CarHornLongSoundName = "Offroad_Horn_SoundSet";
596
597 SetEnginePos("0 0.7 1.2");
598 }
599
601 {
605 }
606
608 {
609 super.EEInit();
610
612 {
619
622 }
623 }
624
626 {
627 super.OnEngineStart();
628
630 {
633 }
634 }
635
637 {
638 super.OnEngineStop();
639
641 {
644 }
645 }
646
648 {
650 {
652 {
654 }
655 }
656 }
657
659 {
661 }
662
664 {
665 return 3.5;
666 }
667
669 {
670 switch (posIdx)
671 {
672 case 0:
674 case 1:
676 case 2:
678 case 3:
680 }
681
682 return 0;
683
684 }
685
686
688 {
690 }
691
693 {
695 }
696
698 {
699 if (!super.CanReleaseAttachment(attachment))
700 {
701 return false;
702 }
703
705 {
706 string attType = attachment.GetType();
707 if (attType == "CarRadiator" || attType == "CarBattery" || attType == "SparkPlug")
708 {
709 return false;
710 }
711 }
712
713 return true;
714 }
715
717 {
719 }
720
722 {
723 if (!super.CanDisplayAttachmentCategory(category_name))
724 {
725 return false;
726 }
727
729 if (category_name.
Contains(
"engine"))
730 {
732 {
733 return false;
734 }
735 }
736
737 return true;
738 }
739
741 {
742 if (!super.CanDisplayCargo())
743 {
744 return false;
745 }
746
748 {
749 return false;
750 }
751
752 return true;
753 }
754
756 {
758
759 Class.
CastTo(carDoor, FindAttachmentBySlotName(slotType));
760 if (!carDoor)
761 {
763 }
764
765 switch (slotType)
766 {
767 case "NivaDriverDoors":
768 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
769
770 case "NivaCoDriverDoors":
771 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
772
773 case "NivaHood":
774 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
775
776 case "NivaTrunk":
777 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
778 }
779
781 }
782
784 {
786 switch (posIdx)
787 {
788 case 0:
790 return false;
791 else if (GetAnimationPhase("SeatDriver") > 0.5)
792 return false;
793
794 return true;
795
796 case 1:
798 return false;
799 else if (GetAnimationPhase("SeatCoDriver") > 0.5)
800 return false;
801
802 return true;
803
804 case 2:
806 return false;
807 else if (GetAnimationPhase("SeatDriver") <= 0.5)
808 return false;
809
810 return true;
811
812 case 3:
814 return false;
815 else if (GetAnimationPhase("SeatCoDriver") <= 0.5)
816 return false;
817
818 return true;
819 }
820
821 return false;
822 }
823
825 {
826 switch (posIdx)
827 {
828 case 0:
829 case 2:
830 return "doors_driver";
831 case 1:
832 case 3:
833 return "doors_codriver";
834 }
835
836 return super.GetDoorSelectionNameFromSeatPos(posIdx);
837 }
838
840 {
841 switch (posIdx)
842 {
843 case 0:
844 case 2:
845 return "NivaDriverDoors";
846 case 1:
847 case 3:
848 return "NivaCoDriverDoors";
849 }
850
851 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
852 }
853
854
855
857 {
858 float tempCap = 0.0;
859
860 switch (ctrl)
861 {
863 float newValue = 0;
865 {
866 newValue += 0.5;
867 }
868
870 {
871 newValue += 0.5;
872 }
873
875 {
876 newValue += 0.3;
877 }
878
880 {
881 newValue -= 0.6;
882 }
883
885 {
886 newValue -= 0.2;
887 }
888
890 {
891 newValue -= 0.2;
892 }
893
895 break;
896 }
897
898 return super.OnSound(ctrl, oldValue);
899 }
900
902 {
903 switch (selection)
904 {
905 case "doors_driver":
906 return "DoorsDriver";
907 case "doors_codriver":
908 return "DoorsCoDriver";
909 case "doors_hood":
910 return "DoorsHood";
911 case "doors_trunk":
912 return "DoorsTrunk";
913 case "seatback_driver":
914 return "SeatDriver";
915 case "seatback_codriver":
916 return "SeatCoDriver";
917 }
918
919 return "";
920 }
921
923 {
924 switch (selection)
925 {
926 case "seat_driver":
927 case "seatback_driver":
928 case "seat_cargo1":
929 return "seat_con_1_1";
930 case "seat_codriver":
931 case "seatback_codriver":
932 case "seat_cargo2":
933 return "seat_con_2_1";
934 }
935
936 return "";
937 }
938
940 {
941 switch (selection)
942 {
943 case "seatback_driver":
944 return 0;
945 case "seatback_codriver":
946 return 1;
947 }
948
949 return -1;
950 }
951
953 {
954 return false;
955 }
956
958 {
959 return false;
960 }
961
963 {
964 if (nextSeat == 0 && GetAnimationPhase("SeatDriver") > 0.5)
965 return false;
966
967 if (nextSeat == 1 && GetAnimationPhase("SeatCoDriver") > 0.5)
968 return false;
969
970 switch (currentSeat)
971 {
972 case 0:
973 return nextSeat == 1;
974
975 case 1:
976 return nextSeat == 0;
977
978 case 2:
979 return nextSeat == 3;
980
981 case 3:
982 return nextSeat == 2;
983 }
984
985 return false;
986 }
987
989 {
990 switch (pCurrentSeat)
991 {
992 case 0:
993 return pDoorsSelection == "DoorsDriver";
994
995 case 1:
996 return pDoorsSelection == "DoorsCoDriver";
997
998 case 2:
999 return pDoorsSelection == "DoorsDriver";
1000
1001 case 3:
1002 return pDoorsSelection == "DoorsCoDriver";
1003 }
1004
1005 return false;
1006 }
1007
1009 {
1010 switch (pDoorSelection)
1011 {
1012 case "DoorsDriver":
1013 return 0;
1014 case "DoorsCoDriver":
1015 return 1;
1016 }
1017
1018 return -1;
1019 }
1020
1022 {
1023 super.SetActions();
1024
1026 }
1027
1029 {
1030 SpawnUniversalParts();
1031 SpawnAdditionalItems();
1032 FillUpCarFluids();
1033
1039
1044
1045
1048 }
1049}
1050
1052{
1054 {
1055 SpawnUniversalParts();
1056 SpawnAdditionalItems();
1057 FillUpCarFluids();
1058
1059 GameInventory inventory = GetInventory();
1064
1069
1070
1073 }
1074}
1075
1077{
1079 {
1080 SpawnUniversalParts();
1081 SpawnAdditionalItems();
1082 FillUpCarFluids();
1083
1084 GameInventory inventory = GetInventory();
1089
1094
1095
1098 }
1099}
void AddAction(typename actionName)
CarSoundCtrl
Car's sound controller list. (native, do not change or extend)
ref UniversalTemperatureSourceLambdaEngine m_UTSLEngine
ref UniversalTemperatureSourceSettings m_UTSSettings
ref UniversalTemperatureSource m_UTSource
override void SetActions()
override bool CanReachSeatFromSeat(int currentSeat, int nextSeat)
override string GetAnimSourceFromSelection(string selection)
override int GetSeatAnimationType(int posIdx)
override string GetDoorConditionPointFromSelection(string selection)
override float OnSound(CarSoundCtrl ctrl, float oldValue)
override string GetDoorInvSlotNameFromSeatPos(int posIdx)
override void EOnPostSimulate(IEntity other, float timeSlice)
override void OnEngineStop()
override float GetTransportCameraDistance()
override bool CanReleaseAttachment(EntityAI attachment)
override bool CanDisplayCargo()
override void OnEngineStart()
override CarLightBase CreateFrontLight()
override int GetAnimInstance()
override bool CrewCanGetThrough(int posIdx)
override bool CanReachDoorsFromSeat(string pDoorsSelection, int pCurrentSeat)
bool CanManipulateSpareWheel(string slotSelectionName)
override bool IsVitalGlowPlug()
override CarRearLightBase CreateRearLight()
class OffroadHatchback extends CarScript OnDebugSpawn()
override int GetSeatIndexFromDoor(string pDoorSelection)
override bool IsVitalTruckBattery()
override string GetDoorSelectionNameFromSeatPos(int posIdx)
override int GetCarDoorsState(string slotType)
override int GetCrewIndex(string selection)
override bool CanDisplayAttachmentCategory(string category_name)
UniversalTemperatureSourceLambdaBaseImpl UniversalTemperatureSourceLambdaBase UniversalTemperatureSourceLambdaEngine()
Super root of all classes in Enforce script.
EntityAI CreateInInventory(string type)
creates entity somewhere in inventory
script counterpart to engine's class Inventory
override void OnDebugSpawn()
original Timer deletes m_params which is unwanted
DayZPlayerConstants
defined in C++
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
static const float ITEM_TEMPERATURE_NEUTRAL_ZONE_MIDDLE
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.
bool Contains(string sample)
Returns true if sample is substring of string.
proto int ToLower()
Changes string to lowercase. Returns length.