578{
582
584 {
585
586
587 m_EngineStartOK = "offroad_engine_start_SoundSet";
588 m_EngineStartBattery = "offroad_engine_failed_start_battery_SoundSet";
589 m_EngineStartPlug = "offroad_engine_failed_start_sparkplugs_SoundSet";
590 m_EngineStartFuel = "offroad_engine_failed_start_fuel_SoundSet";
591 m_EngineStop = "offroad_engine_stop_SoundSet";
592 m_EngineStopFuel = "offroad_engine_stop_fuel_SoundSet";
593
594 m_CarDoorOpenSound = "offroad_door_open_SoundSet";
595 m_CarDoorCloseSound = "offroad_door_close_SoundSet";
596 m_CarSeatShiftInSound = "Offroad_SeatShiftIn_SoundSet";
597 m_CarSeatShiftOutSound = "Offroad_SeatShiftOut_SoundSet";
598
599 m_CarHornShortSoundName = "Offroad_Horn_Short_SoundSet";
600 m_CarHornLongSoundName = "Offroad_Horn_SoundSet";
601
602 SetEnginePos("0 0.7 1.2");
603 }
604
606 {
610 }
611
613 {
614 super.EEInit();
615
617 {
624
627 }
628 }
629
631 {
632 super.OnEngineStart();
633
635 {
638 }
639 }
640
642 {
643 super.OnEngineStop();
644
646 {
649 }
650 }
651
653 {
655 {
657 {
659 }
660 }
661 }
662
664 {
666 }
667
669 {
670 return 3.5;
671 }
672
674 {
675 switch (posIdx)
676 {
677 case 0:
679 case 1:
681 case 2:
683 case 3:
685 }
686
687 return 0;
688
689 }
690
691
693 {
695 }
696
698 {
700 }
701
703 {
704 if (!super.CanReleaseAttachment(attachment))
705 {
706 return false;
707 }
708
710 {
711 string attType = attachment.GetType();
712 if (attType == "CarRadiator" || attType == "CarBattery" || attType == "SparkPlug")
713 {
714 return false;
715 }
716 }
717
718 return true;
719 }
720
722 {
724 }
725
727 {
728 if (!super.CanDisplayAttachmentCategory(category_name))
729 {
730 return false;
731 }
732
734 if (category_name.
Contains(
"engine"))
735 {
737 {
738 return false;
739 }
740 }
741
742 return true;
743 }
744
746 {
747 if (!super.CanDisplayCargo())
748 {
749 return false;
750 }
751
753 {
754 return false;
755 }
756
757 return true;
758 }
759
761 {
763
764 Class.
CastTo(carDoor, FindAttachmentBySlotName(slotType));
765 if (!carDoor)
766 {
768 }
769
770 switch (slotType)
771 {
772 case "NivaDriverDoors":
773 return TranslateAnimationPhaseToCarDoorState("DoorsDriver");
774
775 case "NivaCoDriverDoors":
776 return TranslateAnimationPhaseToCarDoorState("DoorsCoDriver");
777
778 case "NivaHood":
779 return TranslateAnimationPhaseToCarDoorState("DoorsHood");
780
781 case "NivaTrunk":
782 return TranslateAnimationPhaseToCarDoorState("DoorsTrunk");
783 }
784
786 }
787
789 {
791 switch (posIdx)
792 {
793 case 0:
795 return false;
796 else if (GetAnimationPhase("SeatDriver") > 0.5)
797 return false;
798
799 return true;
800
801 case 1:
803 return false;
804 else if (GetAnimationPhase("SeatCoDriver") > 0.5)
805 return false;
806
807 return true;
808
809 case 2:
811 return false;
812 else if (GetAnimationPhase("SeatDriver") <= 0.5)
813 return false;
814
815 return true;
816
817 case 3:
819 return false;
820 else if (GetAnimationPhase("SeatCoDriver") <= 0.5)
821 return false;
822
823 return true;
824 }
825
826 return false;
827 }
828
830 {
831 switch (posIdx)
832 {
833 case 0:
834 case 2:
835 return "doors_driver";
836 case 1:
837 case 3:
838 return "doors_codriver";
839 }
840
841 return super.GetDoorSelectionNameFromSeatPos(posIdx);
842 }
843
845 {
846 switch (posIdx)
847 {
848 case 0:
849 case 2:
850 return "NivaDriverDoors";
851 case 1:
852 case 3:
853 return "NivaCoDriverDoors";
854 }
855
856 return super.GetDoorInvSlotNameFromSeatPos(posIdx);
857 }
858
859
860
862 {
863 float tempCap = 0.0;
864
865 switch (ctrl)
866 {
868 float newValue = 0;
870 {
871 newValue += 0.5;
872 }
873
875 {
876 newValue += 0.5;
877 }
878
880 {
881 newValue += 0.3;
882 }
883
885 {
886 newValue -= 0.6;
887 }
888
890 {
891 newValue -= 0.2;
892 }
893
895 {
896 newValue -= 0.2;
897 }
898
900 break;
901 }
902
903 return super.OnSound(ctrl, oldValue);
904 }
905
907 {
908 switch (selection)
909 {
910 case "doors_driver":
911 return "DoorsDriver";
912 case "doors_codriver":
913 return "DoorsCoDriver";
914 case "doors_hood":
915 return "DoorsHood";
916 case "doors_trunk":
917 return "DoorsTrunk";
918 case "seatback_driver":
919 return "SeatDriver";
920 case "seatback_codriver":
921 return "SeatCoDriver";
922 }
923
924 return "";
925 }
926
928 {
929 switch (selection)
930 {
931 case "seat_driver":
932 case "seatback_driver":
933 case "seat_cargo1":
934 return "seat_con_1_1";
935 case "seat_codriver":
936 case "seatback_codriver":
937 case "seat_cargo2":
938 return "seat_con_2_1";
939 }
940
941 return "";
942 }
943
945 {
946 switch (selection)
947 {
948 case "seatback_driver":
949 return 0;
950 case "seatback_codriver":
951 return 1;
952 }
953
954 return -1;
955 }
956
958 {
959 return false;
960 }
961
963 {
964 return false;
965 }
966
968 {
969 if (nextSeat == 0 && GetAnimationPhase("SeatDriver") > 0.5)
970 return false;
971
972 if (nextSeat == 1 && GetAnimationPhase("SeatCoDriver") > 0.5)
973 return false;
974
975 switch (currentSeat)
976 {
977 case 0:
978 return nextSeat == 1;
979
980 case 1:
981 return nextSeat == 0;
982
983 case 2:
984 return nextSeat == 3;
985
986 case 3:
987 return nextSeat == 2;
988 }
989
990 return false;
991 }
992
994 {
995 switch (pCurrentSeat)
996 {
997 case 0:
998 return pDoorsSelection == "DoorsDriver";
999
1000 case 1:
1001 return pDoorsSelection == "DoorsCoDriver";
1002
1003 case 2:
1004 return pDoorsSelection == "DoorsDriver";
1005
1006 case 3:
1007 return pDoorsSelection == "DoorsCoDriver";
1008 }
1009
1010 return false;
1011 }
1012
1014 {
1015 switch (pDoorSelection)
1016 {
1017 case "DoorsDriver":
1018 return 0;
1019 case "DoorsCoDriver":
1020 return 1;
1021 }
1022
1023 return -1;
1024 }
1025
1027 {
1028 super.SetActions();
1029
1031 }
1032
1034 {
1035 SpawnUniversalParts();
1036 SpawnAdditionalItems();
1037 FillUpCarFluids();
1038
1044
1049
1050
1053 }
1054}
1055
1057{
1059 {
1060 SpawnUniversalParts();
1061 SpawnAdditionalItems();
1062 FillUpCarFluids();
1063
1064 GameInventory inventory = GetInventory();
1069
1074
1075
1078 }
1079}
1080
1082{
1084 {
1085 SpawnUniversalParts();
1086 SpawnAdditionalItems();
1087 FillUpCarFluids();
1088
1089 GameInventory inventory = GetInventory();
1094
1099
1100
1103 }
1104}
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.