Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
human.c
Go to the documentation of this file.
1
13
14// *************************************************************************************
15// ! HumanInputController - what we know about the input - human.GetInputController()
16// *************************************************************************************
18{
19 //--------------------------------------------------------------
20
22 proto native void SetDisabled(bool pState);
23
25 proto void GetMovement(out float pSpeed, out vector pLocalDirection);
26
28 proto native float GetHeadingAngle();
29
31 proto native vector GetAimChange();
32
34 proto native vector GetAimDelta(float dt);
35
37 proto native vector GetTracking();
38
40 proto native bool CameraViewChanged();
41
43 proto native bool CameraIsFreeLook();
44
46 proto native void ResetFreeLookToggle();
47
49 proto native bool CameraIsTracking();
50
52 proto native bool Camera3rdIsRightShoulder();
53
54 //--------------------------------------------------------------
55
57 proto native bool IsStanceChange();
58
60 proto native bool IsJumpClimb();
61
62
63 //--------------------------------------------------------------
64
66 proto native bool IsMeleeEvade();
67
69 proto native bool IsMeleeFastAttackModifier();
70
72 proto native int IsMeleeLREvade();
73
75 proto native bool IsMeleeWeaponAttack();
76
77 //--------------------------------------------------------------
78
80 proto native bool WeaponWasRaiseClick();
81
83 proto native bool IsWeaponRaised();
84
86 proto native bool WeaponADS();
87
89 proto native void ResetADS();
90
92 proto native bool IsThrowingModeChange();
93
95 proto native void ResetThrowingMode();
96
98 proto native bool IsWalkToggled();
99
100 //--------------------------------------------------------------
101
106 proto native bool IsUseButton();
107
112 proto native bool IsUseButtonDown();
113
115 proto native bool IsUseItemButton();
117 proto native bool IsUseItemButtonDown();
118
120 proto native bool IsAttackButton();
122 proto native bool IsAttackButtonDown();
123
125 proto native bool IsSingleUse();
126
128 proto native bool IsContinuousUse();
129
131 proto native bool IsContinuousUseStart();
132
134 proto native bool IsContinuousUseEnd();
135
138 proto native bool IsImmediateAction(); //TODO: revise, may be obsolete
139
140 //--------------------------------------------------------------
142
144 proto native bool IsReloadOrMechanismSingleUse();
145
147 proto native bool IsReloadOrMechanismContinuousUse();
148
150 proto native bool IsReloadOrMechanismContinuousUseStart();
151
153 proto native bool IsReloadOrMechanismContinuousUseEnd();
154
156 proto native bool IsZoom();
157
159 proto native bool IsZoomToggle();
160
162 proto native void ResetZoomToggle();
163
165 proto native bool IsSightChange();
166
168 proto native bool IsZoomIn();
169
171 proto native bool IsZoomOut();
172
174 proto native bool IsFireModeChange();
175
177 proto native bool IsZeroingUp();
178
180 proto native bool IsZeroingDown();
181
183 proto native bool IsHoldBreath();
184
186 proto native void ResetHoldBreath();
187
188 //--------------------------------------------------------------
189
192 proto native int IsGestureSlot();
193
195 proto native bool IsOtherController();
196
197 //--------------------------------------------------------------
198
200 proto native int IsQuickBarSlot();
201
204 proto native bool IsQuickBarSingleUse();
205
208 proto native bool IsQuickBarContinuousUse();
209
212 proto native bool IsQuickBarContinuousUseStart();
213
216 proto native bool IsQuickBarContinuousUseEnd();
217
218
219
220 //--------------------------------------------------------------
221 // LIMITS
222
224 proto native void LimitsDisableSprint(bool pDisable);
225
227 proto native bool LimitsIsSprintDisabled();
228
229
230 //--------------------------------------------------------------
231 // overrides
232
234 proto native void OverrideMovementSpeed(HumanInputControllerOverrideType overrideType, float value);
235
237 proto native void OverrideMovementAngle(HumanInputControllerOverrideType overrideType, float value);
238
240 proto native void OverrideAimChangeX(HumanInputControllerOverrideType overrideType, float value);
241
243 proto native void OverrideAimChangeY(HumanInputControllerOverrideType overrideType, float value);
244
246 proto native void OverrideMeleeEvade(HumanInputControllerOverrideType overrideType, bool value);
247
249 proto native void OverrideRaise(HumanInputControllerOverrideType overrideType, bool value);
250
252 proto native void Override3rdIsRightShoulder(HumanInputControllerOverrideType overrideType, bool value);
253
255 proto native void OverrideFreeLook(HumanInputControllerOverrideType overrideType, bool value);
256
257
258 //--------------------------------------------------------------
259
261 private void HumanInputController()
262 {
263 }
264
266 private void ~HumanInputController()
267 {
268 }
269}
270
271
272// *************************************************************************************
273// ! HumanInputController - what we know about the input - human.GetInputController()
274// *************************************************************************************
275
278typedef int TAnimGraphTag;
279typedef int TAnimGraphEvent;
280
283{
284 private void HumanAnimInterface();
285 private void ~HumanAnimInterface();
286
287 //-----------------------------------------------------
288 // Binds, returns -1 when error, otherwise if ok
289
291 proto native TAnimGraphCommand BindCommand(string pCommandName);
292
294 proto native TAnimGraphVariable BindVariableFloat(string pVariable);
295 proto native TAnimGraphVariable BindVariableInt(string pVariable);
296 proto native TAnimGraphVariable BindVariableBool(string pVariable);
297
299 proto native TAnimGraphTag BindTag(string pTagName);
300
302 proto native TAnimGraphEvent BindEvent(string pEventName);
303}
304
305
306// *************************************************************************************
307// ! HumanCommandActionCallback - called as action callback
308// *************************************************************************************
310{
311 private void HumanCommandActionCallback();
312 private void ~HumanCommandActionCallback();
313
315 proto native Human GetHuman();
316
318 proto native void Cancel();
319
322 proto native void InternalCommand(int pInternalCommandId);
323
325 proto native void SetAligning(vector pPositionWS, vector pDirectionWS);
326
328 proto native void ResetAligning();
329
333 proto native void EnableCancelCondition(bool pEnable);
334
336 proto native bool DefaultCancelCondition();
337
339 proto native void RegisterAnimationEvent(string pAnimationEventStr, int pId);
340
342 proto native void EnableStateChangeCallback();
343
346 // bool CancelCondition() { return false; }
347
349 static const int STATE_NONE = 0;
350
352 static const int STATE_LOOP_IN = 1;
353 static const int STATE_LOOP_LOOP = 2;
354 static const int STATE_LOOP_END = 3;
355 static const int STATE_LOOP_END2 = 4;
356 static const int STATE_LOOP_LOOP2 = 5;
357 static const int STATE_LOOP_ACTION = 6;
358
360 static const int STATE_NORMAL = 7;
361
363 proto native int GetState();
364
365
366 //----------------------------------
367 // debug helper
368
370 static string GetStateString(int pState)
371 {
372 switch (pState)
373 {
374 case STATE_NONE: return "NONE";
375
376 case STATE_LOOP_IN: return "LOOP_IN";
377 case STATE_LOOP_LOOP: return "LOOP_LOOP";
378 case STATE_LOOP_END: return "LOOP_END";
379 case STATE_LOOP_END2: return "LOOP_END2";
380 case STATE_LOOP_LOOP2: return "LOOP_LOOP2";
381 case STATE_LOOP_ACTION: return "LOOP_ACTION";
382
384 case STATE_NORMAL: return "ONE TIME";
385 }
386
387 return "Undef";
388 }
389
390
392 string GetStateString()
393 {
394 return GetStateString(GetState());
395 }
396
397
398
399 //----------------------------------
400 // callbacks
401
403 void OnAnimationEvent(int pEventID) {};
404
406 void OnFinish(bool pCanceled) {};
407
409 void OnStateChange(int pOldState, int pCurrentState) {};
410
411
412 // helps identify type of callback
413 bool IsUserActionCallback()
414 {
415 return false;
416 }
417
418 bool IsGestureCallback()
419 {
420 return false;
421 }
422
423 bool IsSymptomCallback()
424 {
425 return false;
426 }
427}
428
429
430// *************************************************************************************
431// ! HumanCommandMove
432// *************************************************************************************
433class HumanCommandMove
434{
435 private void HumanCommandMove() {}
436 private void ~HumanCommandMove() {}
437
440 proto native float GetCurrentMovementAngle();
441
445 proto bool GetCurrentInputAngle(out float pAngle);
446
448 proto native float GetCurrentMovementSpeed();
449
451 proto native bool IsChangingStance();
452
454 proto native bool IsOnBack();
455
457 proto native bool IsInRoll();
458
460 proto native bool IsLeavingUncon();
461
463 proto native bool IsStandingFromBack();
464
466 proto native void StartMeleeEvade();
467
469 proto native void StartMeleeEvadeA(float pDirAngle);
470
472 proto native bool IsMeleeEvade();
473
475 proto native void SetMeleeBlock(bool pBlock);
476
479 proto native void ForceStance(int pStanceIdx);
480
481
484 proto native void ForceStanceUp(int pStanceIdx);
485
486
488 proto native void SetRunSprintFilterModifier(float value);
489
491 proto native void SetDirectionFilterModifier(float value);
492
494 proto native void SetDirectionSprintFilterModifier(float value);
495
497 proto native void SetTurnSpanModifier(float value);
498
500 proto native void SetTurnSpanSprintModifier(float value);
501
503 proto native void SetCurrentWaterLevel(float value);
504}
505
506
507
508// *************************************************************************************
509// ! HumanCommandMelee - actual command melee running on
510// *************************************************************************************
511class HumanCommandMelee
512{
513 private void HumanCommandMelee() {}
514 private void ~HumanCommandMelee() {}
515
517 proto native void ContinueCombo();
518
520 proto native bool IsInComboRange();
521
523 proto native bool WasHit();
524
526 proto native void Cancel();
527
529 proto native bool IsOnBack();
530}
531
532
533// *************************************************************************************
534// ! HumanCommandMelee2 - actual command melee running on - Heavy/Light version
535// *************************************************************************************
536class HumanCommandMelee2
537{
538 private void HumanCommandMelee2() {}
539 private void ~HumanCommandMelee2() {}
540
541 static const int HIT_TYPE_LIGHT = 0;
542 static const int HIT_TYPE_HEAVY = 1;
543 static const int HIT_TYPE_FINISHER = 2; //liver stab
544 static const int HIT_TYPE_FINISHER_NECK = 3;
545
547 proto native void ContinueCombo(bool pHeavyHit, float pComboValue, EntityAI target = null, vector hitPos = vector.Zero);
548
550 proto native bool IsInComboRange();
551
553 proto native bool WasHit();
554
556 proto native void Cancel();
557
559 proto native bool IsOnBack();
560
561 proto native int GetComboCount();
562
563 proto native int GetCurrentHitType();
564
565 proto native bool IsFinisher();
566}
567
568
569// *************************************************************************************
570// ! HumanCommandFall - actually falling
571// *************************************************************************************
572class HumanCommandFall
573{
574 private void HumanCommandFall() {}
575 private void ~HumanCommandFall() {}
576
577 static const int LANDTYPE_NONE = 0;
578 static const int LANDTYPE_LIGHT = 1;
579 static const int LANDTYPE_MEDIUM = 2;
580 static const int LANDTYPE_HEAVY = 3;
581
583 proto native bool PhysicsLanded();
584
586 proto native void Land(int pLandType);
587
589 proto native bool IsLanding();
590}
591
592// *************************************************************************************
593// ! HumanCommandDeathCallback - called as action callback
594// *************************************************************************************
595class HumanCommandDeathCallback
596{
597 //----------------------------------
598 // callbacks
599
600 void OnSimulationEnd() {};
601
603 bool ShouldSimulationBeDisabled() { return true; };
604}
605
606// *************************************************************************************
607// ! HumanCommandDeath - actually dying
608// *************************************************************************************
609class HumanCommandDeath
610{
611 private void HumanCommandDeath() {}
612 private void ~HumanCommandDeath() {}
613}
614
616// *************************************************************************************
617// ! HumanCommandUnconscious - actually not dying
618// *************************************************************************************
619class HumanCommandUnconscious
620{
621 private void HumanCommandUnconscious() {}
622 private void ~HumanCommandUnconscious() {}
623
624 proto native void WakeUp(int targetStance = -1);
625 proto native bool IsWakingUp();
626
627 proto native bool IsOnLand();
628 proto native bool IsInWater();
629}
630
631
632// *************************************************************************************
633// ! HumanCommandDamage - additional damage
634// *************************************************************************************
635class HumanCommandDamage
636{
637 private void HumanCommandDamage() {}
638 private void ~HumanCommandDamage() {}
639}
640
641// *************************************************************************************
642// ! HumanCommandLadder ladder
643// *************************************************************************************
644class HumanCommandLadder
645{
646 private void HumanCommandLadder() {}
647 private void ~HumanCommandLadder() {}
648
650 proto native bool CanExit();
651
653 proto native void Exit();
654
656 proto native static bool DebugDrawLadder(Building pBuilding, int pLadderIndex);
657
659 proto native static int DebugGetLadderIndex(string pComponentName);
660
663 proto native vector GetLogoutPosition();
664}
665
666
667
668// *************************************************************************************
669// ! HumanCommandLadder ladder
670// *************************************************************************************
671class HumanCommandSwim
672{
673 private void HumanCommandSwim() {}
674 private void ~HumanCommandSwim() {}
675
677 proto native void StopSwimming();
678
681 proto native static vector WaterLevelCheck(Human pHuman, vector pPosition);
682}
683
684
685
686// *************************************************************************************
687// ! HumanCommandVehicle vehicle
688// *************************************************************************************
689class HumanCommandVehicle
690{
691 private void HumanCommandVehicle() {}
692 private void ~HumanCommandVehicle() {}
693
694 proto native Transport GetTransport();
695 proto native int GetVehicleClass();
696 proto native int GetVehicleSeat();
697 proto native void SetVehicleType(int pVehicleType);
698 proto native int GetVehicleType();
699
700 proto native void GetOutVehicle();
701 proto native void KnockedOutVehicle();
702 proto native bool ShouldBeKnockedOut();
703 proto native void JumpOutVehicle();
704 proto native void SwitchSeat(int pTransportPositionIndex, int pVehicleSeat);
705 proto native bool IsGettingIn();
706 proto native bool IsGettingOut();
707 proto native bool IsSwitchSeat();
708 proto native bool WasGearChange();
709 proto native void SetClutchState(bool pState);
710 proto native void KeepInVehicleSpaceAfterLeave(bool pState);
711 proto native void ProcessLeaveEvents();
712
713 bool IsObjectIgnoredOnGettingOut(IEntity entity)
714 {
715 Object object;
716 if (!Class.CastTo(object, entity))
717 {
718 return true;
719 }
720
721 Transport transport = GetTransport();
722 if (!transport)
723 {
724 return true;
725 }
726
727 if (object == transport || object.GetParent() == transport)
728 {
729 return true;
730 }
731
732 return transport.IsIgnoredObject(object);
733 }
734}
735
736// *************************************************************************************
737// ! HumanCommandClimb
738// *************************************************************************************
739
741class SHumanCommandClimbResult
742{
743 bool m_bIsClimb;
744 bool m_bIsClimbOver;
745 bool m_bFinishWithFall;
746 bool m_bHasParent;
747
748 float m_fClimbHeight;
749
750 vector m_ClimbGrabPoint;
751 vector m_ClimbGrabPointNormal;
752 vector m_ClimbStandPoint;
753 vector m_ClimbOverStandPoint;
754
755 IEntity m_GrabPointParent;
756 IEntity m_ClimbStandPointParent;
757 IEntity m_ClimbOverStandPointParent;
758};
759
760
762enum ClimbStates
763{
764 STATE_MOVE,
765 STATE_TAKEOFF,
766 STATE_ONTOP,
767 STATE_FALLING,
768 STATE_FINISH
769};
770
772class HumanCommandClimb
773{
774 private void HumanCommandClimb() {}
775 private void ~HumanCommandClimb() {}
776
778 proto native int GetState();
779
781 proto native vector GetGrabPointWS();
782
784 proto native vector GetClimbOverStandPointWS();
785
789 proto native static bool DoClimbTest(Human pHuman, SHumanCommandClimbResult pResult, int pDebugDrawLevel);
790
794 proto native static bool DoPerformClimbTest(Human pHuman, SHumanCommandClimbResult pResult, int pDebugDrawLevel);
795
798 proto native static bool DebugDrawClimb(Human pHuman, int pLevel);
799}
800
801
802
803
804// *************************************************************************************
805// ! HumanCommandFullBodyDamage - full body damages
806// *************************************************************************************
807class HumanCommandFullBodyDamage
808{
809 private void HumanCommandFullBodyDamage() {}
810 private void ~HumanCommandFullBodyDamage() {}
811}
812
813
815enum WeaponActions
816{
817 INTERRUPT = 15,
818 NONE = -1,
819 RELOAD = 0,
820 MECHANISM = 1,
821 CHAMBERING = 2,
822 CHAMBERING_LOADER = 3,
823 UNJAMMING = 4,
824 FIRE = 5,
825 HIDE = 6,
826 SHOW = 7,
827 RELOAD_CLIP = 8,
828};
831enum WeaponActionReloadTypes
832{
834 RELOADRIFLE_MAGAZINE_BULLET = 0, // CMD_Reload_Magazine
835 RELOADRIFLE_NOMAGAZINE_BULLET = 1,
836 RELOADRIFLE_MAGAZINE_NOBULLET = 2,
837 RELOADRIFLE_NOMAGAZINE_NOBULLET = 3,
838 RELOADRIFLE_MAGAZINE_NOBULLET_OPEN = 4,
839 RELOADRIFLE_NOMAGAZINE_NOBULLET_OPEN = 5,
840
841 // reload action types - pistols
842 RELOADPISTOL_NOMAGAZINE_NOBULLET_CLOSED_UNCOCKED = 8, // CMD_Reload_Magazine
843 RELOADPISTOL_MAGAZINE_NOBULLET_CLOSED_UNCOCKED = 9,
844 RELOADPISTOL_MAGAZINE_BULLET_CLOSED = 10,
845 RELOADPISTOL_NOMAGAZINE_BULLET_CLOSED = 11,
846 RELOADPISTOL_MAGAZINE_NOBULLET_CLOSED_COCKED = 12,
847 RELOADPISTOL_NOMAGAZINE_NOBULLET_CLOSED_COCKED = 13,
848 RELOADPISTOL_NOMAGAZINE_NOBULLET_OPENED = 14,
849 RELOADPISTOL_MAGAZINE_NOBULLET_OPENED = 15,
850
851 RELOAD_MAGAZINE_DETACH = 16,
852 RELOADRIFLE_MAGAZINE_DETACH = 17, // CMD_Reload_Magazine
853
854 RELOADSRIFLE_MAGAZINE_BULLET = 20, // CMD_Reload_Magazine
855 RELOADSRIFLE_NOMAGAZINE_BULLET = 21,
856 RELOADSRIFLE_MAGAZINE_NOBULLET = 22,
857 RELOADSRIFLE_NOMAGAZINE_NOBULLET = 23,
858};
859
860enum WeaponActionReloadClipTypes
861{
862 RELOADRIFLE_CLIP_NOBULLET = 0,
863 RELOADRIFLE_CLIP_BULLET = 1,
864}
865
866enum WeaponActionMechanismTypes
867{
869 MECHANISM_OPENED = 0, // CMD_Reload_BoltAction
870 MECHANISM_CLOSED = 1,
871 MECHANISM_SPECIAL = 2, // crossbow, magnum ... special mechanism action apropriate for custom weapons
872 MECHANISM_CLOSED_UNCOCKED = 3,
873};
874
875enum WeaponActionChamberingTypes
876{
877 CHAMBERING_END = -1,
879 CHAMBERING_ONEBULLET_OPENED = 0, // CMD_Reload_Chambering
880 CHAMBERING_ONEBULLET_CLOSED = 1, //
881 CHAMBERING_ONEBULLET_CLOSED_UNCOCKED = 2,
882 CHAMBERING_ONEBULLET_UNIQUE_OPENED = 3, //
883 CHAMBERING_ONEBULLET_UNIQUE_CLOSED = 4, //
884 CHAMBERING_TWOBULLETS_START = 6, // plays one bullet, then second, then ends, when CHAMBERING_TWOBULLETS_END arise, it's canceled
885 CHAMBERING_TWOBULLETS_END = 7, // - one bullet reload with closed mechanism
886
887 CHAMBERING_STARTLOOPABLE_CLOSED_EXTRA = 9,
888 CHAMBERING_STARTLOOPABLE_CLOSED = 10, // start loop chambering
889 CHAMBERING_ENDLOOPABLE = 11, // end loop chambering
890 CHAMBERING_STARTLOOPABLE_CLOSED_KEEP = 12, // start loop chambering and keep last bullet
891 CHAMBERING_STARTLOOPABLE_OPENED = 13, //
892
893 CHAMBERING_STARTLOOPABLE_CLOSED_WITHCHAMBER = 14,
894
895 CHAMBERING_STARTLOOPABLE_SHOTGUN_UNCOCKED = 15,
896 CHAMBERING_STARTLOOPABLE_SHOTGUN_COCKED = 16,
897
898 CHAMBERING_DOUBLE_1 = 17,
899 CHAMBERING_DOUBLE_2 = 18,
900 CHAMBERING_DOUBLE_3 = 19,
901 CHAMBERING_DOUBLE_4 = 20,
902
903
904 CHAMBERING_CROSSBOW_OPENED = 21, // chambering crossbow
905 CHAMBERING_CROSSBOW_CLOSED = 22, // chambering crossbow
906 CHAMBERING_CROSSBOW_FULL = 23, // chambering crossbow
907};
908
909enum WeaponActionChamberingLoaderTypes
910{
911 CHAMBERINGLOADER_OPENED = 0, // CMD_Reload_ChamberingFast - one bullet reload with open mechanism
912 CHAMBERINGLOADER_CLOSED = 1, // - one bullet reload with closed mechanism
913};
914
915enum WeaponActionUnjammingTypes
916{
918 UNJAMMING_START = 1, // CMD_Weapon_Jam - 0
919 UNJAMMING_END = 0, // 1
920 UNJAMMING_INTERRUPT = -1,
921};
922
923enum WeaponActionFireTypes
924{
925 FIRE_NORMAL = 0,
926 FIRE_LAST = 1,
927 FIRE_COCKED = 2,
928 FIRE_UNCOCKED = 3,
929 FIRE_DRY = 4,
930 FIRE_JAM = 5
931};
932
933enum WeaponHideShowTypes
934{
935 HIDESHOW_SLOT_2HDLEFTBACK = 0,
936 HIDESHOW_SLOT_RFLLEFTBACK = 1,
937 HIDESHOW_SLOT_1HDLEFTBACK = 2,
938 HIDESHOW_SLOT_2HDRIGHTBACK = 3,
939 HIDESHOW_SLOT_RFLRIGHTBACK = 4,
940 HIDESHOW_SLOT_1HDRIGHTBACK = 5,
941 HIDESHOW_SLOT_PISTOLBELT = 6,
942 HIDESHOW_SLOT_PISTOLCHEST = 7,
943 HIDESHOW_SLOT_KNIFEBACK = 8,
944 HIDESHOW_SLOT_INVENTORY = 9,
945};
946
947string WeaponActionTypeToString (int A, int AT)
948{
949 switch (A)
950 {
951 case WeaponActions.INTERRUPT: return "Weapon interrupt";
952 case WeaponActions.NONE: return "---";
953 case WeaponActions.RELOAD: return typename.EnumToString(WeaponActionReloadTypes, AT);
954 case WeaponActions.MECHANISM: return typename.EnumToString(WeaponActionMechanismTypes, AT);
955 case WeaponActions.CHAMBERING: return typename.EnumToString(WeaponActionChamberingTypes, AT);
956 case WeaponActions.CHAMBERING_LOADER: return typename.EnumToString(WeaponActionChamberingLoaderTypes, AT);
957 case WeaponActions.UNJAMMING: return typename.EnumToString(WeaponActionUnjammingTypes, AT);
958 case WeaponActions.FIRE: return typename.EnumToString(WeaponActionFireTypes, AT);
959 case WeaponActions.HIDE: return typename.EnumToString(WeaponHideShowTypes, AT);
960 case WeaponActions.SHOW: return typename.EnumToString(WeaponHideShowTypes, AT);
961 }
962 return "---";
963}
964
966enum WeaponEvents
967{
968 ATTACHMENT_HIDE,
969 ATTACHMENT_SHOW,
970 BULLET_EJECT,
971 BULLET_HIDE,
972 BULLET_HIDE2,
973 BULLET_IN_CHAMBER,
974 BULLET_IN_MAGAZINE,
975 BULLET_SHOW,
976 BULLET_SHOW2,
977 CANUNJAM_END,
978 CANUNJAM_START,
979 COCKED,
980 MAGAZINE_ATTACHED,
981 MAGAZINE_DETACHED,
982 MAGAZINE_HIDE,
983 MAGAZINE_SHOW,
984 SLIDER_OPEN,
985 UNJAMMED,
986 HAMMER_UNCOCKED,
987 HAMMER_COCKED,
988 CHANGE_HIDE,
989 CHANGE_SHOW,
990 CYLINDER_ROTATE,
991};
992
993
994// *************************************************************************************
995// ! HumanCommandWeapons - weapon handling
996// *************************************************************************************
997class HumanCommandWeapons
998{
999 private void HumanCommandWeapons() {}
1000 private void ~HumanCommandWeapons() {}
1001
1003 proto native bool IsActionFinished();
1004
1006 proto native int GetRunningAction();
1007
1009 proto native int GetRunningActionType();
1010
1012 proto native void SetActionProgressParams(float pStart, float pEnd);
1013
1015 proto native bool StartAction(WeaponActions pAction, int pActionType);
1016
1018 proto native void RegisterEvent(string pName, int pId);
1019
1021 proto native int IsEvent();
1022
1024 proto native bool IsInWeaponReloadBulletSwitchState();
1025
1027 proto native void SetADS(bool pState);
1028
1030 proto native void LiftWeapon(bool pState);
1031
1033 proto native bool IsWeaponLifted();
1034
1036 proto native void ObstructWeapon(float pState01);
1037
1039 proto native float GetWeaponObstruction();
1040
1042 proto native float GetAimingHandsOffsetUD();
1043
1045 proto native float GetAimingHandsOffsetLR();
1046
1048 void RegisterDefaultEvents()
1049 {
1050 RegisterEvent("Weapon_AttachmentHide", WeaponEvents.ATTACHMENT_HIDE);
1051 RegisterEvent("Weapon_AttachmentShow", WeaponEvents.ATTACHMENT_SHOW);
1052 RegisterEvent("Weapon_BulletEject", WeaponEvents.BULLET_EJECT);
1053 RegisterEvent("Weapon_BulletHide", WeaponEvents.BULLET_HIDE);
1054 RegisterEvent("Weapon_BulletHide2", WeaponEvents.BULLET_HIDE2);
1055 RegisterEvent("Weapon_BulletInChamber", WeaponEvents.BULLET_IN_CHAMBER);
1056 RegisterEvent("Weapon_BulletInMagazine", WeaponEvents.BULLET_IN_MAGAZINE);
1057 RegisterEvent("Weapon_BulletShow", WeaponEvents.BULLET_SHOW);
1058 RegisterEvent("Weapon_BulletShow2", WeaponEvents.BULLET_SHOW2);
1059 RegisterEvent("Weapon_CanUnjam_End", WeaponEvents.CANUNJAM_END);
1060 RegisterEvent("Weapon_CanUnjam_Start", WeaponEvents.CANUNJAM_START);
1061 RegisterEvent("Weapon_Cocked", WeaponEvents.COCKED);
1062 RegisterEvent("Weapon_MagazineAttached", WeaponEvents.MAGAZINE_ATTACHED);
1063 RegisterEvent("Weapon_MagazineDetached", WeaponEvents.MAGAZINE_DETACHED);
1064 RegisterEvent("Weapon_MagazineHide", WeaponEvents.MAGAZINE_HIDE);
1065 RegisterEvent("Weapon_MagazineShow", WeaponEvents.MAGAZINE_SHOW);
1066 RegisterEvent("Weapon_SliderOpen", WeaponEvents.SLIDER_OPEN);
1067 RegisterEvent("Weapon_Unjammed", WeaponEvents.UNJAMMED);
1068 RegisterEvent("Weapon_Hammer_Uncocked", WeaponEvents.HAMMER_UNCOCKED);
1069 RegisterEvent("Weapon_Hammer_Cocked", WeaponEvents.HAMMER_COCKED);
1070 RegisterEvent("Weapon_Change_Hide", WeaponEvents.CHANGE_HIDE);
1071 RegisterEvent("Weapon_Change_Show", WeaponEvents.CHANGE_SHOW);
1072 RegisterEvent("Weapon_CylinderRotate", WeaponEvents.CYLINDER_ROTATE);
1073 }
1074
1075 //----------------------------------------------------
1076 // weapon init states
1077
1078
1083 proto native void SetInitState(int pFrameIndex);
1084
1086 proto native static void StaticSetInitState(Human pHuman, int pFrameIdx);
1087
1088
1089 //----------------------------------------------------
1090 //
1091
1093 proto native float GetBaseAimingAngleUD();
1094
1096 proto native float GetBaseAimingAngleLR();
1097
1098
1099 //----------------------------------------------------
1100 // throwing
1101 proto native void SetThrowingMode(bool pState);
1102
1103 proto native bool IsThrowingMode();
1104
1105 proto native void ThrowItem(int throwType);
1106
1107 proto native bool WasItemLeaveHandsEvent();
1108
1109 //----------------------------------------------------
1110 // debug copy
1111
1113 proto native int DebugIsEvent();
1114
1116 proto native void DebugResetEvents();
1117}
1118
1119
1120// *************************************************************************************
1121// ! HumanCommandAdditives - additional damage
1122// *************************************************************************************
1123class HumanCommandAdditives
1124{
1125 private void HumanCommandAdditives() {}
1126 private void ~HumanCommandAdditives() {}
1127
1129 proto native void SetInjured(float pValue, bool pInterpolate);
1130
1132 proto native void SetExhaustion(float pValue, bool pInterpolate);
1133
1135 proto native void SetTalking(bool pValue);
1136
1138 proto native void StartModifier(int pType);
1139
1141 proto native void CancelModifier();
1142
1144 proto native bool IsModifierActive();
1145}
1146
1147
1148// *************************************************************************************
1149// ! HumanMovementState - movement state, command, stance, movement, human.GetMovementState(movementState)
1150// *************************************************************************************
1151class HumanMovementState
1152{
1153 int m_CommandTypeId;
1154 int m_iStanceIdx;
1155 int m_iMovement;
1156 float m_fLeaning;
1157
1158 int m_LocalMovement = -1;
1159
1161 bool IsRaised()
1162 {
1163 return m_iStanceIdx >= DayZPlayerConstants.STANCEIDX_RAISEDERECT;
1164 }
1165
1167 bool IsRaisedInProne()
1168 {
1169 return m_iStanceIdx == DayZPlayerConstants.STANCEIDX_RAISEDPRONE;
1170 }
1171
1173 bool IsInProne()
1174 {
1175 return m_iStanceIdx == DayZPlayerConstants.STANCEIDX_PRONE;
1176 }
1177
1179 bool IsInRaisedProne()
1180 {
1181 return m_iStanceIdx == DayZPlayerConstants.STANCEIDX_RAISEDPRONE;
1182 }
1183
1185 bool IsLeaning()
1186 {
1187 return m_fLeaning != 0;
1188 }
1189}
1190
1191enum HumanRelativeHeadingMode
1192{
1194 CURRENT,
1195
1197 INPUT,
1198};
1199
1207class HumanCommandScript
1208{
1210 // HumanCommandScript(Human pHuman);
1211
1214 void OnActivate() { };
1215
1217 void OnDeactivate() { };
1218
1219
1220 //---------------------------------------------------------------
1221 // usable everywhere
1222
1224 proto native void SetFlagFinished(bool pFinished);
1225
1226#ifdef FEATURE_NETWORK_RECONCILIATION
1228 proto native void OverrideCorrectionType(AnimPhysCorrectionType correctionType);
1229#endif
1230
1232 proto native void SetHeading(float yawAngle, float filterDt = -1, float maxYawSpeed = FLT_MAX);
1233 proto native void AddHeadingRelativeTo(HumanRelativeHeadingMode mode, float yawAngle, float filterDt = -1, float maxYawSpeed = FLT_MAX);
1234
1236 int GetCurrentStance()
1237 {
1238 return DayZPlayerConstants.STANCEIDX_ERECT;
1239 }
1240
1242 int GetCurrentMovement()
1243 {
1244 return DayZPlayerConstants.MOVEMENT_IDLE;
1245 }
1246
1248 float GetCurrentLeaning()
1249 {
1250 return 0.0;
1251 }
1252
1253 //---------------------------------------------------------------
1254 // PreAnim Update
1255
1259 void PreAnimUpdate(float pDt);
1260
1262 proto native void PreAnim_CallCommand(int pCommand, int pParamInt, float pParamFloat);
1263 proto native void PreAnim_SetFloat(int pVar, float pFlt);
1264 proto native void PreAnim_SetInt(int pVar, int pInt);
1265 proto native void PreAnim_SetBool(int pVar, bool pBool);
1266
1267 void PreAnim_SetFilteredHeading(float pYawAngle, float pFilterDt, float pMaxYawSpeed)
1268 {
1269 SetHeading(pYawAngle, pFilterDt, pMaxYawSpeed);
1270 }
1271
1272 //---------------------------------------------------------------
1273 // PrePhys Update
1274
1277 void PrePhysUpdate(float pDt);
1278
1280 proto native bool PrePhys_IsEvent(int pEvent);
1281 proto native bool PrePhys_IsTag(int pTag);
1282 proto native bool PrePhys_GetTranslation(out vector pOutTransl); // vec3 in local space !
1283 proto native bool PrePhys_GetRotation(out float pOutRot[4]); // quaternion in local space !
1284 proto native void PrePhys_SetTranslation(vector pInTransl); // vec3 in local space !
1285 proto native void PrePhys_SetRotation(float pInRot[4]); // quaternion in local space !
1286
1287 //---------------------------------------------------------------
1288 // PostPhys Update
1289
1293 bool PostPhysUpdate(float pDt);
1294
1296 proto native void PostPhys_GetPosition(out vector pOutTransl);
1297 proto native void PostPhys_GetRotation(out float pOutRot[4]);
1298 proto native void PostPhys_SetPosition(vector pInTransl);
1299 proto native void PostPhys_SetRotation(float pInRot[4]);
1300 proto native void PostPhys_LockRotation();
1301}
1302
1304enum HumanMoveCommandID
1305{
1306 None = 0,
1307 CommandMove = 1,
1308 CommandMelee = 2,
1309 CommandMelee2 = 4,
1310 CommandFall = 8,
1311 CommandClimb = 16,
1312 CommandDeath = 32,
1313 CommandUnconscious = 64,
1314 CommandDamageFullbody = 128,
1315 CommandDamageAdditive = 256,
1316 CommandLadder = 512,
1317 CommandSwim = 1024,
1318 CommandVehicle = 2048,
1319 CommandActionFullbody = 4096,
1320 CommandActionAdditive = 8192
1321}
1322
1323// *************************************************************************************
1324// ! Human - human script interface
1325// *************************************************************************************
1326class Human extends Man
1327{
1329
1331 proto native void GetTransformWS(out vector pTm[4]);
1332
1335 proto native void PhysicsGetTransformWS(out vector pTm[4]);
1336
1338 proto native void PhysicsGetTransformLS(out vector pTm[4]);
1339
1342 proto native vector PhysicsGetPositionWS();
1343
1345 proto native vector PhysicsGetPositionLS();
1346
1348 proto native bool CheckFreeSpace(vector localDir, float distance, bool useHeading, vector posOffset = vector.Zero, float xzScale = 1.0);
1349
1351 proto float CollisionMoveTest(vector dir, vector offset, float xzScale, IEntity ignoreEntity, out IEntity hitEntity, out vector hitPosition, out vector hitNormal);
1352
1353 //---------------------------------------------------------
1354 // link/unlink to/from local space (enfusion hierachy)
1355 proto native void LinkToLocalSpaceOf(notnull IEntity child, vector pLocalSpaceMatrix[4]);
1356 proto native void UnlinkFromLocalSpace();
1357
1358 //---------------------------------------------------------
1359 // heading component
1360
1362 proto native void AlignPositionWS(vector position);
1363
1365 proto native void AlignTranslationWS(vector translation);
1366
1368 proto native void AlignTranslationLS(vector translation);
1369
1371 proto native void AlignDirectionWS(vector direction);
1372
1375 void OnPhysMove(float dt, vector transform[4]) {}
1376
1377 //---------------------------------------------------------
1378 // bone transforms
1379
1381 proto native int GetBoneIndexByName(string pBoneName);
1382
1383
1385 proto native HumanAnimInterface GetAnimInterface();
1386
1387 //---------------------------------------------------------
1388 // physic props
1389
1391 proto native bool PhysicsIsFalling(bool pValidate);
1392
1394 proto native IEntity PhysicsGetFloorEntity();
1395
1397 proto native IEntity PhysicsGetLinkedEntity();
1398
1401 proto native bool PhysicsWasSlidingOffLinkedEntity();
1402
1404 proto native void PhysicsGetVelocity(out vector pVelocity);
1405
1406 proto native void PhysicsEnableGravity(bool pEnable);
1407
1408 proto native bool PhysicsIsSolid();
1409 proto native void PhysicsSetSolid(bool pSolid);
1410
1412 proto native void PhysicsSetRagdoll(bool pEnable);
1413
1414 //---------------------------------------------------------
1415 // controller
1416
1418 proto native HumanInputController GetInputController();
1419
1420 //---------------------------------------------------------
1421 // item accessor
1422
1423 proto native HumanItemAccessor GetItemAccessor();
1424
1425
1426 //---------------------------------------------------------
1427 // commands
1428
1430 proto native void GetMovementState(HumanMovementState pState);
1431
1433 proto native int GetCurrentCommandID();
1434
1435
1437
1439 proto native HumanCommandMove StartCommand_Move();
1440
1441 proto native HumanCommandMove GetCommand_Move();
1442
1444
1446 proto native HumanCommandMelee StartCommand_Melee(EntityAI pTarget);
1447
1448 proto native HumanCommandMelee GetCommand_Melee();
1449
1451 proto native HumanCommandMelee2 StartCommand_Melee2(EntityAI pTarget, int pHitType, float pComboValue, vector hitPos = vector.Zero);
1452
1453 proto native HumanCommandMelee2 GetCommand_Melee2();
1454
1455
1457
1461 proto native HumanCommandFall StartCommand_Fall(float pYVelocity);
1462
1464 proto native HumanCommandFall GetCommand_Fall();
1465
1466
1468
1470 proto native HumanCommandLadder StartCommand_Ladder(Building pBuilding, int pLadderIndex);
1471
1472 proto native HumanCommandLadder GetCommand_Ladder();
1473
1474
1476
1478 proto native HumanCommandSwim StartCommand_Swim();
1479
1480 proto native HumanCommandSwim GetCommand_Swim();
1481
1482
1484
1486 proto native HumanCommandVehicle StartCommand_Vehicle(Transport pTransport, int pTransportPositionIndex, int pVehicleSeat, bool fromUnconscious = false);
1487
1488 proto native HumanCommandVehicle GetCommand_Vehicle();
1489
1490
1492
1494 proto native HumanCommandClimb StartCommand_Climb(SHumanCommandClimbResult pClimbResult, int pType);
1495
1496 proto native HumanCommandClimb GetCommand_Climb();
1497
1499
1501 proto native HumanCommandDeathCallback StartCommand_Death(int pType, float pDirection, typename pCallbackClass, bool pKeepInLocalSpaceAfterLeave = false);
1502
1503 proto native HumanCommandDeathCallback GetCommand_Death();
1504
1505
1507 proto native HumanCommandUnconscious StartCommand_Unconscious(float pType);
1508
1509 proto native HumanCommandUnconscious GetCommand_Unconscious();
1510
1511
1513
1515 // -> of type 0,...
1516 // -> from direction (lback -180,left -90,0,righ 90,rightback 180)
1517 proto native HumanCommandFullBodyDamage StartCommand_Damage(int pType, float pDirection);
1518
1519 proto native HumanCommandFullBodyDamage GetCommand_Damage();
1520
1521
1522
1524
1527 proto native HumanCommandActionCallback StartCommand_Action(int pActionID, typename pCallbackClass, int pStanceMask);
1528
1530 proto native HumanCommandActionCallback GetCommand_Action();
1531
1532
1533 //---------------------------------------------------------
1534 // command modifiers
1535
1537 proto native int GetCommandModifierCount();
1538
1540 proto native int GetCommandModifierID(int pIndex);
1541
1542
1544
1546 proto native HumanCommandAdditives GetCommandModifier_Additives();
1547
1549 proto native HumanCommandWeapons GetCommandModifier_Weapons();
1550
1551
1552
1553
1554 // --- modifier/additive actions - played on COMMANDID_MOVE command
1555
1557 proto native HumanCommandActionCallback AddCommandModifier_Action(int pActionID, typename pCallbackClass);
1558
1560 proto native void DeleteCommandModifier_Action(HumanCommandActionCallback pCallback);
1561
1563 proto native HumanCommandActionCallback GetCommandModifier_Action();
1564
1565
1566
1568
1570 // -> of type 0,...
1571 // -> from direction (lback -180,left -90,0,righ 90,rightback 180)
1572 proto native HumanCommandDamage AddCommandModifier_Damage(int pType, float pDirection);
1573
1574 proto native void DeleteCommandModifier_Damage(HumanCommandDamage pDamage);
1575
1576 proto native HumanCommandDamage GetCommandModifier_Damage();
1577
1578
1580
1583 proto native HumanCommandScript StartCommand_Script(HumanCommandScript pHumanCommand);
1584 proto native HumanCommandScript StartCommand_ScriptInst(typename pCallbackClass);
1585
1587 proto native HumanCommandScript GetCommand_Script();
1588
1589
1590
1591 //---------------------------------------------------------
1592 // debug info for Item Accessor
1593
1594
1596 proto native owned string DebugGetItemClass();
1597
1599 proto native owned string DebugGetItemSuperClass();
1600
1602 proto native owned string DebugGetItemAnimInstance();
1603
1604
1605 //---------------------------------------------------------
1606 // helper functions for disabling simulation upon death
1607 proto native void StartDeath();
1608 proto native void ResetDeath();
1609
1610 proto native void ResetDeathCooldown();
1611 proto native bool IsDeathProcessed();
1612 proto native bool IsDeathConditionMet();
1613
1614
1615 //--------------------------------------------------------
1616 // commands start/finish events
1617
1618 void OnCommandMoveStart();
1619 void OnCommandMoveFinish();
1620
1621 void OnCommandMeleeStart();
1622 void OnCommandMeleeFinish();
1623
1624 void OnCommandMelee2Start();
1625 void OnCommandMelee2Finish();
1626
1627 void OnCommandFallStart();
1628 void OnCommandFallFinish();
1629
1630 void OnCommandClimbStart();
1631 void OnCommandClimbFinish();
1632
1633 void OnCommandDeathStart();
1634 void OnCommandDeathFinish();
1635
1636 void OnCommandUnconsciousStart();
1637 void OnCommandUnconsciousFinish();
1638
1639 void OnCommandDamageFullbodyStart();
1640 void OnCommandDamageFullbodyFinish();
1641
1642 void OnCommandDamageAdditiveStart();
1643 void OnCommandDamageAdditiveFinish();
1644
1645 void OnCommandLadderStart();
1646 void OnCommandLadderFinish();
1647
1648 void OnCommandSwimStart();
1649 void OnCommandSwimFinish();
1650
1651 void OnCommandVehicleStart();
1652 void OnCommandVehicleFinish();
1653
1654 void OnCommandActionFullbodyStart();
1655 void OnCommandActionFullbodyFinish();
1656
1657 void OnCommandActionAdditiveStart();
1658 void OnCommandActionAdditiveFinish();
1659
1661 void OnStanceChange(int previousStance, int newStance);
1662
1664 bool CanChangeStance(int previousStance, int newStance);
1665
1666 //--------------------------------------------------------
1667 // rolling API
1668
1669 bool CanRoll();
1670 void OnRollStart(bool isToTheRight);
1671 void OnRollFinish();
1672
1673 //--------------------------------------------------------
1674 // vehicle API
1675
1676 void OnVehicleSeatDriverEnter();
1677 void OnVehicleSeatDriverLeft();
1678
1679 proto native bool IsControllingVehicle();
1680
1681}
Super root of all classes in Enforce script.
Definition enscript.c:11
override void OnStateChange(int pOldState, int pCurrentState)
override void OnAnimationEvent(int pEventID)
Native class for boats - handles physics simulation.
Definition boat.c:28
proto native DayZCreatureAnimInterface GetAnimInterface()
class DayZCreatureAnimInterface RegisterAnimationEvent(string event_name, string function_name)
proto native bool IsDeathProcessed()
proto native int GetBoneIndexByName(string pBoneName)
returns bone index for a name (-1 if pBoneName doesn't exist)
proto native void ResetDeath()
proto native void StartDeath()
proto native void ResetDeathCooldown()
proto native bool IsDeathConditionMet()
override void OnCommandDeathStart()
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
@ None
Definition enworld.c:73
@ A
Definition ensystem.c:345
@ NONE
No flags.
Definition enprofiler.c:11
int TAnimGraphVariable
Definition human.c:277
int TAnimGraphTag
Definition human.c:278
class HumanAnimInterface HumanCommandActionCallback()
class HumanInputController TAnimGraphCommand
HumanInputControllerOverrideType
Definition human.c:8
@ DISABLED
Definition human.c:9
@ ENABLED
Definition human.c:10
@ ONE_FRAME
Permenantly active until DISABLED is passed.
Definition human.c:11
int TAnimGraphEvent
Definition human.c:279