DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
DayZAnimal.c
См. документацию.
2{
3 private void DayZCreatureAnimInterface() {}
4 private void ~DayZCreatureAnimInterface() {}
5
6 //-----------------------------------------------------
7 // Binds, returns -1 when error, otherwise if ok
8
10 proto native TAnimGraphCommand BindCommand(string pCommandName);
13 proto native TAnimGraphVariable BindVariableFloat(string pVariable);
14 proto native TAnimGraphVariable BindVariableInt(string pVariable);
15 proto native TAnimGraphVariable BindVariableBool(string pVariable);
16
18 proto native TAnimGraphTag BindTag(string pTagName);
19
21 proto native TAnimGraphEvent BindEvent(string pEventName);
22}
23
24class DayZCreature extends EntityAI
25{
26 #ifdef _DAYZ_CREATURE_DEBUG_SHADOW
27 proto native void DebugSetShadow(DayZCreature creature);
28 #endif
29
30 proto native bool RegisterAnimationEvent(string event_name, string function_name);
31
32 proto native void SetAnimationInstanceByName(string animation_instance_name, int instance_uuid, float duration);
34
36
37
38 proto native void UpdateSimulationPrecision(int simLOD);
39
40 //---------------------------------------------------------
41 // helper functions for disabling simulation upon death
42 proto native void StartDeath();
43 proto native void ResetDeath();
44
45 proto native void ResetDeathCooldown();
46 proto native bool IsDeathProcessed();
47 proto native bool IsDeathConditionMet();
48
49 //---------------------------------------------------------
50 // bone transforms
51
53 proto native int GetBoneIndexByName(string pBoneName);
54
55 override bool IsDayZCreature()
56 {
57 return true;
58 }
59
60 override bool CanBeSkinned()
61 {
62 return !GetIsFrozen();
63 }
64
66 {
67 return IsRuined();
68 }
69
70 override bool IsManagingArrows()
71 {
72 return true;
73 }
74
75 override bool DisableVicinityIcon()
76 {
77 return true;
78 }
79
80 override void AddArrow(Object arrow, int componentIndex, vector closeBonePosWS, vector closeBoneRotWS)
81 {
83 GetActionComponentNameList(componentIndex, CachedObjectsArrays.ARRAY_STRING, "fire");
84
85 int pivot = -1;
86
87
88 for (int i = 0; i < CachedObjectsArrays.ARRAY_STRING.Count() && pivot == -1; i++)
89 {
91 }
92
93 vector parentTransMat[4];
94 vector arrowTransMat[4];
95
96 if (pivot == -1)
97 {
98 GetTransform(parentTransMat);
99 }
100 else
101 {
102 vector rotMatrix[3];
103 Math3D.YawPitchRollMatrix(closeBoneRotWS * Math.RAD2DEG,rotMatrix);
104
105 parentTransMat[0] = rotMatrix[0];
106 parentTransMat[1] = rotMatrix[1];
107 parentTransMat[2] = rotMatrix[2];
108 parentTransMat[3] = closeBonePosWS;
109 }
110
111 arrow.GetTransform(arrowTransMat);
112 Math3D.MatrixInvMultiply4(parentTransMat, arrowTransMat, arrowTransMat);
113 // orthogonalize matrix - parent might be skewed
114 Math3D.MatrixOrthogonalize4(arrowTransMat);
115 arrow.SetTransform(arrowTransMat);
116
117 AddChild(arrow, pivot);
118 }
119
121 {
122 return true;
123 }
124
125 //-------------------------------------------------------------
129 // these functions are for modded overide in script command mods
130
131 bool ModCommandHandlerBefore(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
132 {
133 return false;
134 }
135
136 bool ModCommandHandlerInside(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
137 {
138 return false;
139 }
140
141 bool ModCommandHandlerAfter(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
142 {
143 return false;
144 }
145}
146
148{
149 proto native AIAgent GetAIAgent();
150
151 proto native bool IsSoundInsideBuilding();
152#ifdef DIAG_DEVELOPER
153 proto native void DebugDisableAIControl();
154 proto native void DebugRestoreAIControl();
155#endif
156 proto native void AddDamageSphere(string bone_name, string ammo_name, float radius, float duration, bool invertTeams);
157
163 proto native void InitAIAgent(AIGroup group);
164 proto native void DestroyAIAgent();
165
166 int m_EffectTriggerCount;//how many effect triggers is this AI inside of(overlapping triggers)
167
169
170
172 {
174 SetFlags(EntityFlags.TOUCHTRIGGERS, false);
175 }
176
177
182
187
188 void AddDamageSphere(AnimDamageParams damage_params)
189 {
190 AddDamageSphere(damage_params.m_sBoneName, damage_params.m_sAmmoName, damage_params.m_fRadius, damage_params.m_fDuration, damage_params.m_bInvertTeams);
191 }
192
193 override void EEKilled(Object killer)
194 {
195 super.EEKilled(killer);
196 CreateComponent(COMP_TYPE_BODY_STAGING); // TO DO: This is never called on clients in multiplayer! That's why skinning doesn't work properly in MP. DAYZ-28269
197 }
198
200 {
201 return AnimBootsType.None;
202 }
203
205 {
206 if(so == NULL)
207 {
208 return NULL;
209 }
210
212 AbstractWave wave = GetGame().GetSoundScene().Play3D(so, sob);
213 return wave;
214 }
215
216 void OnSoundEvent(int event_id, string event_user_string)
217 {
218 AnimSoundEvent sound_event = GetCreatureAIType().GetSoundEvent(event_id);
219 if(sound_event != NULL)
220 {
221 ProcessSoundEvent(sound_event);
222 }
223 }
224
225 void OnSoundVoiceEvent(int event_id, string event_user_string)
226 {
227 AnimSoundVoiceEvent voice_event = GetCreatureAIType().GetSoundVoiceEvent(event_id);
228 if(voice_event != NULL)
229 {
230 ProcessSoundVoiceEvent(voice_event);
231 }
232 }
233
234 void OnStepEvent(int event_id, string event_user_string)
235 {
236 AnimStepEvent step_event = GetCreatureAIType().GetStepEvent(event_id);
237 if(step_event != NULL)
238 {
239 ProcessStepEvent(step_event);
240 }
241 }
242
243 void OnDamageEvent(int event_id, string event_user_string)
244 {
245 AnimDamageEvent damage_event = GetCreatureAIType().GetDamageEvent(event_id);
246 if(damage_event != NULL)
247 {
248 ProcessDamageEvent(damage_event);
249 }
250 }
251
252 protected void RegisterAnimEvents()
253 {
254 if(!RegisterAnimationEvent("Sound", "OnSoundEvent"))
255 {
256 Print("Error registering anim. event (Sound)");
257 }
258
259 if(!RegisterAnimationEvent("SoundVoice", "OnSoundVoiceEvent"))
260 {
261 Print("Error registering anim. event (SoundVoice)");
262 }
263
264 if(!GetGame().IsDedicatedServer())
265 {
266 if(!RegisterAnimationEvent("Step", "OnStepEvent"))
267 {
268 Print("Error registering anim. event (Step)");
269 }
270 }
271
272 if(!RegisterAnimationEvent("Damage", "OnDamageEvent"))
273 {
274 Print("Error registering anim. event (Damage)");
275 }
276 }
277
278 private void ProcessSoundEvent(AnimSoundEvent sound_event)
279 {
280 if(!GetGame().IsDedicatedServer())
281 {
282 SoundObjectBuilder objectBuilder = sound_event.GetSoundBuilder();
283 if(NULL != objectBuilder)
284 {
285 objectBuilder.AddEnvSoundVariables(GetPosition());
286 SoundObject soundObject = objectBuilder.BuildSoundObject();
287 PlaySound(soundObject, objectBuilder);
288 }
289 }
290
291 if(GetGame().IsServer())
292 {
293 if(sound_event.m_NoiseParams != NULL)
294 GetGame().GetNoiseSystem().AddNoise(this, sound_event.m_NoiseParams, GetGame().GetWeather().GetNoiseReductionByWeather());
295 }
296 }
297
298 private void ProcessSoundVoiceEvent(AnimSoundVoiceEvent sound_event)
299 {
300 if(!GetGame().IsDedicatedServer())
301 {
302 SoundObjectBuilder objectBuilder = sound_event.GetSoundBuilder();
303 if(NULL != objectBuilder)
304 {
305 objectBuilder.AddEnvSoundVariables(GetPosition());
306 SoundObject soundObject = objectBuilder.BuildSoundObject();
307 AttenuateSoundIfNecessary(soundObject);
308 PlaySound(soundObject, objectBuilder);
309 }
310 }
311
312 if(GetGame().IsServer())
313 {
314 if(sound_event.m_NoiseParams != NULL)
315 GetGame().GetNoiseSystem().AddNoise(this, sound_event.m_NoiseParams, GetGame().GetWeather().GetNoiseReductionByWeather());
316 }
317 }
318
319 private void ProcessStepEvent(AnimStepEvent step_event)
320 {
321 SoundObjectBuilder soundBuilder = step_event.GetSoundBuilder(GetSurfaceType().Hash());
322 if(soundBuilder == NULL)
323 return;
324
325 soundBuilder.AddEnvSoundVariables(GetPosition());
326 SoundObject soundObject = soundBuilder.BuildSoundObject();
327 AttenuateSoundIfNecessary(soundObject);
328 PlaySound(soundObject, soundBuilder);
329
330 //TODO effects
331 }
332
333 private void ProcessDamageEvent(AnimDamageEvent damage_event)
334 {
335 AddDamageSphere(damage_event.m_DamageParams);
336 }
337
338 protected void AttenuateSoundIfNecessary(SoundObject soundObject)
339 {
340 if (GetGame().GetPlayer() != NULL && (IsSoundInsideBuilding() != GetGame().GetPlayer().IsSoundInsideBuilding() || GetGame().GetPlayer().IsCameraInsideVehicle()))
341 {
342 soundObject.SetKind(WaveKind.WAVEATTALWAYS);
343 }
344 else
345 {
346 soundObject.SetKind(WaveKind.WAVEEFFECTEX);
347 }
348 }
349
351 {
352 return false;
353 }
354
355 // ================
356 // EASTER EGG
357 // ================
358
359 //Used for easter egg sound selection
360 bool IsDanger()
361 {
362 return false;
363 }
364
366 {
367 return "";
368 }
369
371 {
372 return "";
373 }
374
375 // ================
376 // CINEMATIC CONTROLLER
377 // ================
378
380 {
381 m_CinematicPlayer = player;
382 }
383
385 {
386 return true;
387 }
388
389 override bool ModCommandHandlerBefore(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
390 {
392 {
393 return super.ModCommandHandlerBefore(pDt, pCurrentCommandID, pCurrentCommandFinished);
394 }
395
396 UAInterface input = m_CinematicPlayer.GetInputInterface();
397
399 GetGame().GameScript.CallFunction(this, "GetInputController", controller, 0);
400
401 if (!input || !controller)
402 {
403 return super.ModCommandHandlerBefore(pDt, pCurrentCommandID, pCurrentCommandFinished);
404 }
405
406 float movementX = input.SyncedValue_ID(UAAimRight) - input.SyncedValue_ID(UAAimLeft);
407
408 float maxTurnSpeed = 100.0;
409 movementX = Math.Clamp(movementX * maxTurnSpeed * pDt, -180, 180);
410
411 if (input.SyncedValue_ID(UALookAround) > 0)
412 {
413 movementX = 0;
414 }
415
416 bool isJump = input.SyncedValue_ID(UAGetOver) > 0;
417 bool isMove = input.SyncedValue_ID(UAMoveForward) > 0;
418
419 bool isRest = input.SyncedValue_ID(UAMoveBack) > 0;
420 bool isSleep = input.SyncedValue_ID(UAReloadMagazine) > 0;
421
422 float heading = GetOrientation()[0] + movementX;
423
424 int iAlert = 0;
425 float fAlert = 0;
426 int iSpeed = 0;
427 float fSpeed = 0;
428
429 if (isMove)
430 {
431 iAlert = 1;
432 fAlert = 0.2;
433
434 bool isSprint = input.SyncedValue_ID(UATurbo) > 0;
435 bool isJog = input.SyncedValue_ID(UAWalkRunTemp) > 0;
436 bool isWalk = !isSprint && !isJog;
437 if (isSprint)
438 {
440 iSpeed = 3;
441 }
442 else if (isJog)
443 {
445 iSpeed = 2;
446 }
447 else if (isWalk)
448 {
450 iSpeed = 1;
451 }
452 }
453
454 DayZAnimalInputController animalController;
455 if (Class.CastTo(animalController, controller))
456 {
457 animalController.OverrideBehaviourSlot(true, DayZAnimalBehaviourSlot.NON_SPECIFIC_THREAT);
458 animalController.OverrideBehaviourAction(true, DayZAnimalBehaviourAction.TRAVELING_INPUT);
459
460 if (!isMove)
461 {
462 if (isRest)
463 {
464 iSpeed = 0;
465 animalController.OverrideBehaviourAction(true, DayZAnimalBehaviourAction.IDLE1_INPUT);
466 }
467
468 if (isSleep)
469 {
470 iSpeed = 0;
471 animalController.OverrideBehaviourAction(true, DayZAnimalBehaviourAction.WALKING_INPUT);
472 }
473 }
474 }
475
476 bool lowVel = GetVelocity(this).Length() < 0.5;
477 if (iSpeed > 0 && lowVel)
478 {
479 iAlert = 4;
480 fAlert = 1.0;
481
482 iSpeed = 3;
483 }
484
485 if (animalController)
486 {
487 switch (iSpeed)
488 {
489 case 0:
490 fSpeed = 0;
491 break;
492 case 1:
493 fSpeed = 2;
494 break;
495 case 2:
496 fSpeed = 3;
497 break;
498 case 3:
499 fSpeed = 5;
500 break;
501 }
502 }
503
504 controller.OverrideTurnSpeed(true, Math.PI2 / pDt);
505 controller.OverrideMovementSpeed(true, fSpeed);
506 controller.OverrideHeading(true, heading * Math.DEG2RAD);
507 controller.OverrideAlertLevel(true, true, iAlert, fAlert);
508
509 if (CinematicCanJump() && isJump)
510 {
511 controller.OverrideJump(true, 101, 2.0);
512 }
513
514 return true;
515 }
516}
517
518enum DayZAnimalConstants
519{
526};
527
529{
530
531}
532
533class DayZAnimalCommandAttack extends AnimCommandBase
534{
535
536}
537
538class DayZAnimalCommandJump extends AnimCommandBase
539{
540
541}
542
543class DayZAnimalCommandLookAt extends AnimCommandBase
544{
545
546}
547
548class DayZAnimalCommandBehaviourModifier extends AnimCommandBase
549{
550
551}
552
553class DayZAnimalCommandHit extends AnimCommandBase
554{
555
556}
557
558class DayZAnimalCommandDeath extends AnimCommandBase
559{
560
561}
562
563class DayZAnimalCommandAnimCallback extends AnimCommandBase
564{
565
566}
567
575class DayZAnimalCommandScript extends AnimCommandBase
576{
578 //void DayZAnimalCommandScript(DayZAnimal pAnimal)
579
580 //---------------------------------------------------------------
581 // usable everywhere
582
584 proto native void SetFlagFinished(bool pFinished);
585
586 //---------------------------------------------------------------
587 // PrePhys Update
588
590 proto native bool PrePhys_GetTranslation(out vector pOutTransl); // vec3 in local space !
591 proto native bool PrePhys_GetRotation(out float pOutRot[4]); // quaternion in local space !
592 proto native void PrePhys_SetTranslation(vector pInTransl); // vec3 in local space !
593 proto native void PrePhys_SetRotation(float pInRot[4]); // quaternion in local space !
594
595 //---------------------------------------------------------------
596 // PostPhys Update
597
601 bool PostPhysUpdate(float pDt);
602
604 proto native void PostPhys_GetPosition(out vector pOutTransl);
605 proto native void PostPhys_GetRotation(out float pOutRot[4]);
606 proto native void PostPhys_SetPosition(vector pInTransl);
607 proto native void PostPhys_SetRotation(float pInRot[4]);
608 proto native void PostPhys_LockRotation();
609}
610
612{
613
616 protected string m_DefaultHitComponent;
619
621
622 proto native void StartCommand_Death(int pType, int pDirection);
623 proto native void StartCommand_Move();
624 proto native void StartCommand_Jump();
625 proto native void StartCommand_Attack();
626 proto native void StartCommand_Hit(int pType, int pDirection);
627
629 proto native DayZAnimalCommandScript StartCommand_Script(DayZAnimalCommandScript pInfectedCommand);
630 proto native DayZAnimalCommandScript StartCommand_ScriptInst(typename pCallbackClass);
631 proto native DayZAnimalCommandScript GetCommand_Script();
632
633 proto native void SignalAIAttackStarted();
634 proto native void SignalAIAttackEnded();
635
637 {
638 // testing: animals have no inventory by default
639 //GetInventory().LockInventory(LOCK_FROM_SCRIPT); // Hides animals from vicinity in inventory. Remove this if wanted otherwise.
640
642
644
647 }
648
649 override bool IsHealthVisible()
650 {
651 return false;
652 }
653
654 override bool IsAnimal()
655 {
656 return true;
657 }
658
659 override bool IsInventoryVisible()
660 {
661 return false;
662 }
663
664 override int GetHideIconMask()
665 {
666 return EInventoryIconVisibility.HIDE_VICINITY;
667 /*
668 if (IsAlive())
669 {
670 return EInventoryIconVisibility.HIDE_VICINITY;
671 }
672 return super.GetHideIconMask();
673 */
674 }
675
676 void CommandHandler(float dt, int currentCommandID, bool currentCommandFinished)
677 {
679
681 if( ModCommandHandlerBefore(dt, currentCommandID, currentCommandFinished) )
682 {
683 return;
684 }
685
686 if (HandleDeath(currentCommandID, inputController))
687 {
688 return;
689 }
690
691 if (currentCommandFinished)
692 {
693 if (currentCommandID == DayZAnimalConstants.COMMANDID_ATTACK)
694 {
696 }
697
699
700 return;
701 }
702
704 if( ModCommandHandlerInside(dt, currentCommandID, currentCommandFinished) )
705 {
706 return;
707 }
708
709 if (HandleDamageHit(currentCommandID))
710 {
711 if (currentCommandID == DayZAnimalConstants.COMMANDID_ATTACK)
712 {
714 }
715 return;
716 }
717
718 if (currentCommandID == DayZAnimalConstants.COMMANDID_MOVE)
719 {
720 if (inputController.IsJump())
721 {
723 return;
724 }
725
726 if (inputController.IsAttack())
727 {
730 return;
731 }
732 }
733
735 if( ModCommandHandlerAfter(dt, currentCommandID, currentCommandFinished) )
736 {
737 return;
738 }
739 }
740
744
745 bool HandleDeath(int currentCommandID, DayZAnimalInputController inputController)
746 {
747 if (inputController.IsDead())
748 {
749 if (currentCommandID == DayZAnimalConstants.COMMANDID_DEATH)
750 {
751 return true;
752 }
753
755 {
756 m_DamageHitToProcess = false;
757
759 }
760 else
761 {
762 StartCommand_Death(0, 0);
763 }
764
765 return true;
766 }
767
768 return false;
769 }
770
771 bool HandleDamageHit(int currentCommandID)
772 {
774 {
775 m_DamageHitToProcess = false;
776
777 if (currentCommandID != DayZAnimalConstants.COMMANDID_HIT)
778 {
780 }
781 return true;
782 }
783 return false;
784 }
785
786 override void EEHitBy(TotalDamageResult damageResult, int damageType, EntityAI source, int component, string dmgZone, string ammo, vector modelPos, float speedCoef)
787 {
788 super.EEHitBy(damageResult, damageType, source, component, dmgZone, ammo, modelPos, speedCoef);
789 m_TransportHitRegistered = false;
790
791 int transferShockToDamageCoef = g_Game.ConfigGetInt(string.Format("%1 %2 DamageApplied transferShockToDamage", CFG_AMMO, ammo));
792 if (transferShockToDamageCoef == 1)
793 {
794 //Print("DayZAnimal | EEHitBy | nonlethal hit");
795 AddHealth("", "Health", -ConvertNonlethalDamage(damageResult.GetDamage(dmgZone, "Shock"), damageType));
796 }
797 else
798 {
799 ComponentAnimalBleeding animal_bleeding = ComponentAnimalBleeding.Cast( GetComponent( COMP_TYPE_ANIMAL_BLEEDING ) );
800 animal_bleeding.CreateWound( damageResult, dmgZone, ammo );
801 }
802
803 int type = 0;
804 int direction = 0;
805 if (ComputeDamageHitParams(source, dmgZone, ammo, type, direction) == true)
806 {
807 QueueDamageHit(type, direction);
808 }
809
810 }
811
812 void QueueDamageHit(int type, int direction)
813 {
815 m_DamageHitType = type;
816 m_DamageHitDirection = direction;
817 }
818
819 bool ComputeDamageHitParams(EntityAI source, string dmgZone, string ammo, out int type, out int direction)
820 {
821 type = 0; // not used right now
822
823 float angleDeg = ComputeHitDirectionAngleDeg(source);
824 direction = TranslateHitAngleDegToDirectionIndex(angleDeg);
825
826 direction += FindComponentDirectionOffset(dmgZone);
827
828 return true;
829 }
830
832 {
833 vector targetDirection = GetDirection();
834 vector toSourceDirection = (source.GetPosition() - GetPosition());
835
836 targetDirection[1] = 0;
837 toSourceDirection[1] = 0;
838
839 targetDirection.Normalize();
840 toSourceDirection.Normalize();
841
842 float cosFi = vector.Dot(targetDirection, toSourceDirection);
843 vector cross = targetDirection * toSourceDirection;
844
845 float dirAngleDeg = Math.Acos(cosFi) * Math.RAD2DEG;
846 if ( cross[1] < 0 )
847 dirAngleDeg = -dirAngleDeg;
848
849 return dirAngleDeg;
850 }
851
853 {
854 if (angleDeg >= -20 && angleDeg <= 20) // front
855 {
856 return 1;
857 }
858 else if (angleDeg < 0) // left
859 {
860 return 2;
861 }
862
863 return 3; // right
864 }
865
867 {
868 const int directionCount = 4;
869
870 int offset = 0;
871 if (component.Length() == 0)
872 {
873 offset = 0;
874 }
875 else if (component == "Zone_Head")
876 {
877 offset = directionCount;
878 }
879 else if (component == "Zone_Chest" || component == "Zone_Legs_Front" || component == "Zone_Spine_Front" || component == "Zone_Neck")
880 {
881 offset = 2 * directionCount;
882 }
883 else
884 {
885 offset = 3 * directionCount;
886 }
887
888 return offset;
889 }
890
891 //-------------------------------------------------------------
895
896 override protected void EOnContact(IEntity other, Contact extra)
897 {
898 if( !IsAlive() )
899 return;
900
901 Transport transport = Transport.Cast(other);
902 if( transport )
903 {
904 if ( GetGame().IsServer() )
905 {
906 RegisterTransportHit(transport);
907 }
908 }
909 }
910
922
923 override string GetHitComponentForAI()
924 {
925 string hitComp;
926
928 {
929 return hitComp;
930 }
931
932 return GetDefaultHitComponent();
933 }
934
935 override string GetDefaultHitComponent()
936 {
938 }
939
941 {
943 }
944
946 {
948 }
949
950 protected vector SetDefaultHitPosition(string pSelection)
951 {
952 return GetSelectionPositionMS(pSelection);
953 }
954
955 override protected float ConvertNonlethalDamage(float damage, DamageType damageType)
956 {
957 switch (damageType)
958 {
959 case DamageType.CLOSE_COMBAT:
961 case DamageType.FIRE_ARM:
963 }
964
965 return super.ConvertNonlethalDamage(damage, damageType);
966 }
967}
class AnimalBase extends DayZAnimal RegisterHitComponentsForAI()
Определения AnimalBase.c:40
vector GetOrientation()
Определения AreaDamageManager.c:306
DamageType
exposed from C++ (do not change)
Определения DamageSystem.c:11
AnimBootsType
Определения DayZAnimEvents.c:98
override bool DisableVicinityIcon()
Определения DayZAnimal.c:75
proto native DayZCreatureAnimInterface GetAnimInterface()
proto native void PrePhys_SetRotation(float pInRot[4])
bool PostPhysUpdate(float pDt)
class DayZCreatureAI extends DayZCreature COMMANDID_ATTACK
proto native void SetAnimationInstanceByName(string animation_instance_name, int instance_uuid, float duration)
proto native void PostPhys_SetPosition(vector pInTransl)
quaternion in world space
bool ModCommandHandlerInside(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
Определения DayZAnimal.c:136
class DayZCreatureAI extends DayZCreature COMMANDID_HIT
class DayZCreatureAnimInterface RegisterAnimationEvent(string event_name, string function_name)
class DayZAnimalCommandMove extends AnimCommandBase SetFlagFinished(bool pFinished)
DayZAnimalCommandScript fully scriptable command.
override bool HasFixedActionTargetCursorPosition()
Определения DayZAnimal.c:120
proto native void UpdateSimulationPrecision(int simLOD)
proto native bool PrePhys_GetRotation(out float pOutRot[4])
proto native int GetCurrentAnimationInstanceUUID()
proto native bool IsDeathProcessed()
proto native void PostPhys_GetRotation(out float pOutRot[4])
vec3 in world space
override void AddArrow(Object arrow, int componentIndex, vector closeBonePosWS, vector closeBoneRotWS)
Определения DayZAnimal.c:80
proto native int GetBoneIndexByName(string pBoneName)
returns bone index for a name (-1 if pBoneName doesn't exist)
proto native bool PrePhys_GetTranslation(out vector pOutTransl)
script function usable in PrePhysUpdate
proto native void PostPhys_SetRotation(float pInRot[4])
vec3 in world space
override bool IsIgnoredByConstruction()
Определения DayZAnimal.c:65
proto native void PrePhys_SetTranslation(vector pInTransl)
proto native void ResetDeath()
proto native void StartDeath()
class DayZCreatureAI extends DayZCreature COMMANDID_JUMP
proto native void PostPhys_LockRotation()
quaternion in world space
override bool CanBeSkinned()
Определения DayZAnimal.c:60
proto native void ResetDeathCooldown()
bool ModCommandHandlerBefore(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
Определения DayZAnimal.c:131
override bool IsManagingArrows()
Определения DayZAnimal.c:70
bool ModCommandHandlerAfter(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
Определения DayZAnimal.c:141
override bool IsDayZCreature()
Определения DayZAnimal.c:55
proto native void PostPhys_GetPosition(out vector pOutTransl)
script function usable in PostPhysUpdate
proto native bool IsDeathConditionMet()
DayZAnimalBehaviourSlot
defined in C++
Определения DayZAnimalInputController.c:3
DayZAnimalBehaviourAction
defined in C++
Определения DayZAnimalInputController.c:27
DayZGame g_Game
Определения DayZGame.c:3868
void PlaySound()
Определения HungerSoundHandler.c:38
class BoxCollidingParams component
ComponentInfo for BoxCollidingResult.
PlayerBase GetPlayer()
Определения ModifierBase.c:51
WaveKind
Определения Sound.c:2
Определения AIAgent.c:2
Определения AIGroup.c:2
base class of all commands exposed to script to provide common functionality over animations
Определения AnimCommand.c:3
proto native NoiseSystem GetNoiseSystem()
proto native AbstractSoundScene GetSoundScene()
ScriptModule GameScript
Определения Game.c:12
static ref TStringArray ARRAY_STRING
Определения UtilityClasses.c:49
Super root of all classes in Enforce script.
Определения EnScript.c:11
void CreateWound(TotalDamageResult damage_result, string zone_name, string ammo)
Определения ComponentAnimalBleeding.c:51
Определения EnPhysics.c:305
static void RegisterHitComponent(array< ref DayZAIHitComponent > pHitComponents, string pName, float pWeight)
Register Hit Component for AI targeting.
Определения DayZAIHitComponents.c:21
static bool SelectMostProbableHitComponent(array< ref DayZAIHitComponent > pHitComponents, out string pHitComponent)
Определения DayZAIHitComponents.c:40
proto native void OverrideBehaviourAction(bool state, int action)
proto native bool IsDead()
proto native bool IsAttack()
void AttenuateSoundIfNecessary(SoundObject soundObject)
Определения DayZAnimal.c:338
proto native AIAgent GetAIAgent()
DayZPlayer m_CinematicPlayer
Определения DayZAnimal.c:168
void OnSoundVoiceEvent(int event_id, string event_user_string)
Определения DayZAnimal.c:225
void ProcessStepEvent(AnimStepEvent step_event)
Определения DayZAnimal.c:319
void ProcessDamageEvent(AnimDamageEvent damage_event)
Определения DayZAnimal.c:333
string CaptureSound()
Определения DayZAnimal.c:365
bool CinematicCanJump()
Определения DayZAnimal.c:384
void OnStepEvent(int event_id, string event_user_string)
Определения DayZAnimal.c:234
bool ResistContaminatedEffect()
Определения DayZAnimal.c:350
AbstractWave PlaySound(SoundObject so, SoundObjectBuilder sob)
Определения DayZAnimal.c:204
bool IsDanger()
Определения DayZAnimal.c:360
proto native DayZCreatureAIType GetCreatureAIType()
void DayZCreatureAI()
Определения DayZAnimal.c:171
int m_EffectTriggerCount
Определения DayZAnimal.c:166
void RegisterAnimEvents()
Определения DayZAnimal.c:252
override bool ModCommandHandlerBefore(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
Определения DayZAnimal.c:389
proto native void DestroyAIAgent()
void ProcessSoundVoiceEvent(AnimSoundVoiceEvent sound_event)
Определения DayZAnimal.c:298
vector SetDefaultHitPosition(string pSelection)
Определения DayZAnimal.c:950
int m_DamageHitType
Определения DayZAnimal.c:742
proto native void SignalAIAttackEnded()
bool HandleDeath(int currentCommandID, DayZAnimalInputController inputController)
Определения DayZAnimal.c:745
override bool IsAnimal()
Определения DayZAnimal.c:654
bool m_DamageHitToProcess
Определения DayZAnimal.c:741
proto native DayZAnimalCommandScript StartCommand_Script(DayZAnimalCommandScript pInfectedCommand)
scripted commands
proto native void StartCommand_Hit(int pType, int pDirection)
proto native void StartCommand_Jump()
proto native DayZAnimalCommandScript GetCommand_Script()
void RegisterHitComponentsForAI()
register hit components for AI melee (used by attacking AI)
Определения DayZAnimal.c:912
int FindComponentDirectionOffset(string component)
Определения DayZAnimal.c:866
bool HandleDamageHit(int currentCommandID)
Определения DayZAnimal.c:771
override string GetDefaultHitPositionComponent()
Определения DayZAnimal.c:940
bool ComputeDamageHitParams(EntityAI source, string dmgZone, string ammo, out int type, out int direction)
Определения DayZAnimal.c:819
void DayZAnimal()
Определения DayZAnimal.c:636
override vector GetDefaultHitPosition()
Определения DayZAnimal.c:945
proto native void StartCommand_Attack()
override void EEHitBy(TotalDamageResult damageResult, int damageType, EntityAI source, int component, string dmgZone, string ammo, vector modelPos, float speedCoef)
Определения DayZAnimal.c:786
override int GetHideIconMask()
Определения DayZAnimal.c:664
override bool IsHealthVisible()
Определения DayZAnimal.c:649
string m_DefaultHitComponent
Определения DayZAnimal.c:616
proto native DayZAnimalInputController GetInputController()
override bool IsInventoryVisible()
Определения DayZAnimal.c:659
override string GetHitComponentForAI()
Определения DayZAnimal.c:923
float ConvertNonlethalDamage(float damage, DamageType damageType)
Определения DayZAnimal.c:955
proto native void StartCommand_Death(int pType, int pDirection)
ref array< ref DayZAIHitComponent > m_HitComponentsForAI
Melee hit components (AI targeting)
Определения DayZAnimal.c:615
proto native DayZAnimalCommandScript StartCommand_ScriptInst(typename pCallbackClass)
void CommandHandler(float dt, int currentCommandID, bool currentCommandFinished)
Определения DayZAnimal.c:676
void EOnContact(IEntity other, Contact extra)
Определения DayZAnimal.c:896
int m_DamageHitDirection
Определения DayZAnimal.c:743
proto native void StartCommand_Move()
override string GetDefaultHitComponent()
Определения DayZAnimal.c:935
vector m_DefaultHitPosition
Определения DayZAnimal.c:618
float ComputeHitDirectionAngleDeg(EntityAI source)
Определения DayZAnimal.c:831
string m_DefaultHitPositionComponent
Определения DayZAnimal.c:617
proto native void SignalAIAttackStarted()
void QueueDamageHit(int type, int direction)
Определения DayZAnimal.c:812
int TranslateHitAngleDegToDirectionIndex(float angleDeg)
Определения DayZAnimal.c:852
do not process rotations !
Определения DayZAnimal.c:612
proto native void OverrideAlertLevel(bool state, bool alerted, int level, float inLevel)
proto native void OverrideJump(bool state, int jumpType, float jumpHeight=0)
proto native bool IsJump()
proto native void OverrideBehaviourSlot(bool state, int slot)
proto native void OverrideMovementSpeed(bool state, float movementSpeed)
proto native void OverrideHeading(bool state, float heading)
proto native void OverrideTurnSpeed(bool state, float turnSpeed)
void AddDamageSphere(AnimDamageParams damage_params)
Определения DayZAnimal.c:188
void OnDamageEvent(int event_id, string event_user_string)
Определения DayZAnimal.c:243
void DecreaseEffectTriggerCount()
Определения DayZAnimal.c:183
void CinematicTakeControl(DayZPlayer player)
Определения DayZAnimal.c:379
proto native bool IsSoundInsideBuilding()
void ProcessSoundEvent(AnimSoundEvent sound_event)
Определения DayZAnimal.c:278
override void EEKilled(Object killer)
Определения DayZAnimal.c:193
void OnSoundEvent(int event_id, string event_user_string)
Определения DayZAnimal.c:216
void IncreaseEffectTriggerCount()
Определения DayZAnimal.c:178
AnimBootsType GetBootsType()
Определения DayZAnimal.c:199
string ReleaseSound()
Определения DayZAnimal.c:370
proto native void InitAIAgent(AIGroup group)
proto native void AddDamageSphere(string bone_name, string ammo_name, float radius, float duration, bool invertTeams)
proto native TAnimGraphVariable BindVariableFloat(string pVariable)
proto native TAnimGraphTag BindTag(string pTagName)
proto native TAnimGraphVariable BindVariableBool(string pVariable)
proto native TAnimGraphCommand BindCommand(string pCommandName)
returns command index -
proto native TAnimGraphEvent BindEvent(string pEventName)
void ~DayZCreatureAnimInterface()
Определения DayZAnimal.c:4
void DayZCreatureAnimInterface()
Определения DayZAnimal.c:3
proto native TAnimGraphVariable BindVariableInt(string pVariable)
Определения DayZAnimal.c:148
Определения Building.c:6
Определения constants.c:659
Определения EnEntity.c:165
Определения EnMath3D.c:28
Определения EnMath.c:7
proto void AddNoise(EntityAI source_entity, NoiseParams noise_params, float external_strenght_multiplier=1.0)
Определения ObjectTyped.c:2
Определения Sound.c:112
proto native float GetDamage(string zoneName, string healthType)
Определения DamageSystem.c:2
Base native class for all motorized wheeled vehicles.
Определения Boat.c:28
proto native float SyncedValue_ID(int action, bool check_focus=true)
Get action state.
Определения UAInput.c:97
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native float Length()
Returns length of vector (magnitude)
static float Dot(vector v1, vector v2)
Returns Dot product of vector v1 and vector v2.
Определения EnConvert.c:271
proto float Normalize()
Normalizes vector. Returns length.
Определения EnConvert.c:106
string GetDefaultHitComponent()
Определения dayzplayer.c:497
@ COMMANDID_MOVE
Определения dayzplayer.c:696
@ COMMANDID_SCRIPT
Определения dayzplayer.c:708
@ COMMANDID_DEATH
Определения dayzplayer.c:701
string GetDefaultHitPositionComponent()
Определения dayzplayer.c:502
proto native CGame GetGame()
const int COMP_TYPE_ANIMAL_BLEEDING
Определения Component.c:11
const int COMP_TYPE_BODY_STAGING
Определения Component.c:10
proto void Print(void var)
Prints content of variable to console/log.
proto native void SetFlags(ShapeFlags flags)
const float NL_DAMAGE_FIREARM_CONVERSION_ANIMALS
Определения constants.c:1001
const float NL_DAMAGE_CLOSECOMBAT_CONVERSION_ANIMALS
Определения constants.c:1005
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
proto volatile int CallFunction(Class inst, string function, out void returnVal, void parm)
EntityFlags
Entity flags.
Определения EnEntity.c:115
static proto void YawPitchRollMatrix(vector ang, out vector mat[3])
Creates rotation matrix from angles.
static proto void MatrixInvMultiply4(vector mat0[4], vector mat1[4], out vector res[4])
Invert-transforms matrix.
static proto void MatrixOrthogonalize4(vector mat[4])
Orthogonalizes matrix.
static const float PI2
Определения EnMath.c:13
static proto float Acos(float c)
Returns angle in radians from cosinus.
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'.
static const float RAD2DEG
Определения EnMath.c:16
static const float DEG2RAD
Определения EnMath.c:17
const string CFG_AMMO
Определения constants.c:223
proto native vector GetVelocity(notnull IEntity ent)
Returns linear velocity.
proto native AbstractWave Play3D(SoundObject soundObject, SoundObjectBuilder soundBuilder)
class AbstractSoundScene SoundObjectBuilder(SoundParams soundParams)
class JsonUndergroundAreaTriggerData GetPosition
Определения UndergroundAreaLoader.c:9
void AbstractWave()
Определения Sound.c:167
proto native void SetPosition(vector position)
Note: Sets the position locally if parented, retrieves globally with the sound offset.
proto native void SetKind(WaveKind kind)
proto native void AddChild(Widget child, bool immedUpdate=true)
int TAnimGraphVariable
Определения human.c:277
int TAnimGraphTag
Определения human.c:278
class HumanInputController TAnimGraphCommand
int TAnimGraphEvent
Определения human.c:279