15 override void OnSimulationEnd()
21 EntityAI itemInHands = m_pPlayer.GetHumanInventory().GetEntityInHands();
24 int boneIndex = m_pPlayer.GetBoneIndexByName(
"RightHand_Dummy");
27 m_pPlayer.GetBoneTransformWS(boneIndex, m4);
29 m_pPlayer.GetInventory().DropEntityWithTransform(
InventoryMode.SERVER, m_pPlayer, itemInHands, m4);
33 int deadBodyLifetime = GetCEApi().GetCEGlobalInt(
"CleanupLifetimeDeadPlayer");
34 if (deadBodyLifetime <= 0)
36 deadBodyLifetime = 3600;
38 itemInHands.SetLifetime(deadBodyLifetime);
44 override bool ShouldSimulationBeDisabled()
46 return m_pPlayer.m_WasInVehicle ==
false;
52class DayZPlayerVehicleCommandDeathCallback : HumanCommandDeathCallback
62class DeathEffectTimer
extends Timer
68 PPERequesterBank.GetRequester(PPERequester_DeathDarkening).Stop();
72#ifdef FEATURE_NETWORK_RECONCILIATION
74class DayZPlayerImplementOwnerState : DayZPlayerOwnerState
76 float m_fLastHeadingDiff;
78 protected override event void Write(PawnStateWriter ctx)
82 ctx.Write(m_fLastHeadingDiff);
85 protected override event void Read(PawnStateReader ctx)
89 ctx.Read(m_fLastHeadingDiff);
93class DayZPlayerImplementMove : DayZPlayerMove
95 protected override event void Write(PawnMoveWriter ctx, PawnMove prev)
97 super.Write(ctx, prev);
101 protected override event void Read(PawnMoveReader ctx, PawnMove prev)
103 super.Read(ctx, prev);
112 static const float DEFAULT_DYING_TIME = 2.5;
113 static const float DYING_PROGRESSION_TIME = 0.05;
136 private float m_WeaponRaiseTime;
176 protected bool m_RaiseStarted =
false;
177 protected bool m_AimingFinisherStarted =
false;
180 private float m_CurrentWaterLevel;
184 protected bool m_PullPlayerOutOfVehicleKeepsInLocalSpace =
false;
185 protected int m_PullPlayerOutOfVehicleState = -1;
191 protected float m_fObstructionSmoothVelocity[1];
198 m_SprintFull =
false;
200 m_SprintedTimePerStanceMin =
PlayerConstants.FULL_SPRINT_DELAY_DEFAULT;
207 m_FallDamage =
new DayZPlayerImplementFallDamage(
this);
208 m_ADSAutomationTimer =
new Timer();
210 m_WeaponRaiseCompleted =
false;
212 m_IsShootingFromCamera =
true;
213 m_ProcessFirearmMeleeHit =
false;
214 m_ContinueFirearmMelee =
false;
215 #ifdef PLATFORM_CONSOLE
216 m_Camera3rdPerson = !
GetGame().GetWorld().Is3rdPersonDisabled();
218 m_LastSurfaceUnderHash = (
"cp_gravel").Hash();
219 m_NextVoNNoiseTime = 0;
222 m_CurrentWaterLevel = 0;
223 m_WeaponRaiseTime = 0;
225 RegisterNetSyncVariableBoolSignal(
"m_TriggerPullPlayerOutOfVehicleSynch");
228#ifdef FEATURE_NETWORK_RECONCILIATION
229 protected override event typename GetOwnerStateType()
231 return DayZPlayerImplementOwnerState;
234 protected override event typename GetMoveType()
236 return DayZPlayerImplementMove;
239 protected override event void ObtainState( PawnOwnerState pState)
241 super.ObtainState(pState);
243 DayZPlayerImplementOwnerState state = DayZPlayerImplementOwnerState.Cast(pState);
245 state.m_fLastHeadingDiff = m_fLastHeadingDiff;
248 protected override event void RewindState(PawnOwnerState pState, PawnMove pMove, inout NetworkRewindType pRewindType)
250 super.RewindState(pState, pMove, pRewindType);
252 DayZPlayerImplementOwnerState state = DayZPlayerImplementOwnerState.Cast(pState);
254 if (pRewindType != NetworkRewindType.ADDITIVE)
256 m_fLastHeadingDiff = state.m_fLastHeadingDiff;
263 return m_AimingModel;
273 return m_MeleeFightLogic;
298 return m_CameraEyeZoomLevel;
303 return m_IsShootingFromCamera;
308 m_IsShootingFromCamera = pState;
313 return m_CameraIronsight;
318 return m_CameraOptics;
323 return m_Camera3rdPerson;
328 m_Camera3rdPerson = state;
342 return m_IsTryingHoldBreath;
358 m_WeaponDebug = null;
364 return m_WeaponDebug != null;
374 return m_CurrentWaterLevel;
379 m_CurrentWaterLevel = pWaterLevel;
386 weapon.SetWasIronSight(m_CameraIronsight);
388 m_CameraIronsight = value;
392 HumanCommandWeapons hcw = GetCommandModifier_Weapons();
398 hic.ResetFreeLookToggle();
404 m_CameraOptics = value;
408 HumanCommandWeapons hcw = GetCommandModifier_Weapons();
410 hcw.SetADS(!IsHandheldOpticsInUse());
414 hic.ResetFreeLookToggle();
421 EntityAI entityInHands = GetHumanInventory().GetEntityInHands();
425 optics = weapon.GetAttachedOptics();
432 SetIronsights(
false);
437 SwitchOptics(optics,
false);
440 HumanCommandWeapons hcw = GetCommandModifier_Weapons();
453 if (optic.HasEnergyManager())
454 optic.GetCompEM().SwitchOn();
463 if (optic.HasEnergyManager())
464 optic.GetCompEM().SwitchOff();
468 if (m_CameraOptics != state)
476 m_ClimbingLadderType = value;
506 return m_isFBsymptomPlaying;
519 int m_DeathAnimType = -2;
520 float m_DeathHitDir = 0;
521 bool m_DeathJuctureSent =
false;
526 return m_TransportCache;
531 string text = super.GetDebugText();
532 text +=
"Parent: " +
Object.GetDebugName(
Object.Cast(GetParent())) +
"\n";
533 text +=
"IsSimulationDisabled: " + GetIsSimulationDisabled() +
"\n";
552 if (!
Class.CastTo(transport, GetParent()))
558 for (
int i = 0; i < transport.CrewSize(); ++i)
560 if (transport.CrewMember(i) ==
this)
572 transport.CrewGetOut(crewIdx);
573 TriggerPullPlayerOutOfVehicleImpl();
579#ifdef FEATURE_NETWORK_RECONCILIATION
585 identity.Possess(
this);
599 DisableSimulation(
false);
607 m_PullPlayerOutOfVehicleState = 0;
608 m_TriggerPullPlayerOutOfVehicleSynch =
true;
615 if (m_TriggerPullPlayerOutOfVehicleSynch && !
GetGame().IsDedicatedServer())
617 TriggerPullPlayerOutOfVehicleImpl();
620 super.OnVariablesSynchronized();
627 switch (m_PullPlayerOutOfVehicleState)
632 m_PullPlayerOutOfVehicleState = -1;
634 PhysicsSetSolid(
true);
637 DayZPlayerVehicleCommandDeathCallback callbackVeh;
638 Class.CastTo(callbackVeh, StartCommand_Death(
DayZPlayerConstants.DEATH_PULL_OUT_TRANSPORT, 0, DayZPlayerVehicleCommandDeathCallback, m_PullPlayerOutOfVehicleKeepsInLocalSpace));
639 Class.CastTo(callbackVeh.m_pPlayer,
this);
646 if (m_DeathAnimType != -2 &&
g_Game.GetMissionState() ==
g_Game.MISSION_STATE_GAME)
648 if (!CommitedSuicide())
650 int type = m_DeathAnimType;
652 type = GetTypeOfDeath(pCurrentCommandID);
654 m_WasInVehicle =
false;
655 HumanCommandVehicle hcv = GetCommand_Vehicle();
658 m_TransportCache = hcv.GetTransport();
659 m_WasInVehicle = !hcv.IsGettingIn() && !hcv.IsGettingOut();
663 if (m_TransportCache)
665 seatIndex = m_TransportCache.CrewMemberIndex(
this);
669 m_ShouldBeUnconscious =
false;
671 bool keepInLocalSpace = m_PullPlayerOutOfVehicleKeepsInLocalSpace;
672 if (m_TransportCache)
674 if (IsUnconscious() || m_WasInVehicle)
676 keepInLocalSpace =
true;
677 m_TransportCache.CrewDeath(seatIndex);
681 m_TransportCache.CrewGetOut(seatIndex);
684 m_TransportCache.MarkCrewMemberDead(seatIndex);
690#ifdef FEATURE_NETWORK_RECONCILIATION
696 identity.Possess(
this);
702 DisableSimulation(
false);
703 GetItemAccessor().HideItemInHands(
false);
704 m_TransportCache = null;
708 Class.CastTo(callback.m_pPlayer,
this);
712 PhysicsSetRagdoll(
true);
716 GetGame().GetWorld().SetVoiceOn(
false,
false);
731 switch (pCurrentCommandID)
738 HumanCommandUnconscious hcu = GetCommand_Unconscious();
755 if (m_DeathJuctureSent)
759 m_DeathJuctureSent =
true;
764 SendDeathJuncture(-1, 0);
766 super.EEKilled(killer);
772 if (show && IsPlayerSelected())
779 if (!
GetGame().GetMission().IsPlayerRespawning())
781 message =
"#dayz_implement_dead";
784 #ifdef PLATFORM_CONSOLE
785 GetGame().GetUIManager().ScreenFadeIn(duration, message, FadeColors.DARK_RED, FadeColors.WHITE);
787 GetGame().GetUIManager().ScreenFadeIn(duration, message, FadeColors.BLACK, FadeColors.WHITE);
792 GetGame().GetUIManager().ScreenFadeOut(duration);
804 if (m_DeathEffectTimer && m_DeathEffectTimer.IsRunning())
806 m_DeathEffectTimer.Stop();
807 m_DeathEffectTimer = null;
813 if (
g_Game.GetMissionState() != DayZGame.MISSION_STATE_GAME)
820 float duration = DEFAULT_DYING_TIME;
821 if (m_KilledByHeadshot)
826 if (duration > DYING_PROGRESSION_TIME && !m_IsUnconscious)
828 if (!m_DeathEffectTimer)
829 m_DeathEffectTimer =
new DeathEffectTimer();
832 m_DeathEffectTimer.Run(DYING_PROGRESSION_TIME,
this,
"SetDeathDarknessLevel", par,
true);
835 ShowDeadScreen(state, duration);
837 GetGame().GetSoundScene().SetSoundVolume(0,0);
838 GetGame().GetSoundScene().SetSpeechExVolume(0,0);
839 GetGame().GetSoundScene().SetMusicVolume(0,0);
840 GetGame().GetSoundScene().SetVOIPVolume(0,0);
841 GetGame().GetSoundScene().SetRadioVolume(0,0);
845 StopDeathDarkeningEffect();
846 ShowDeadScreen(state, 0);
860 GetGame().GetUIManager().ShowUICursor(
true);
861 if (
GetGame().GetUIManager().IsDialogVisible())
862 GetGame().GetUIManager().CloseDialog();
873 if (
GetGame().GetUIManager().GetMenu())
875 GetGame().GetUIManager().ShowUICursor(
true);
879 GetGame().GetUIManager().ShowUICursor(
false);
889 m_WeaponRaiseTime = 0;
890 m_WeaponRaiseCompleted =
true;
893 hic.ResetFreeLookToggle();
898 m_WeaponRaiseTime = 0;
899 m_WeaponRaiseCompleted =
false;
904 return m_WeaponRaiseCompleted;
915 int userDataType = 0;
916 if (!ctx.Read(userDataType))
918 Error(
"DayZPlayer: OnInputForRemote - cannot read input type");
922 switch (userDataType)
925 GetDayZPlayerInventory().OnEventForRemoteWeapon(ctx);
928 GetDayZPlayerInventory().OnHandEventForRemote(ctx);
931 GetDayZPlayerInventory().OnInputUserDataForRemote(ctx);
934 Error(
"OnInputForRemote - unknown userDataType=" + userDataType);
941 int userDataType = 0;
942 if (!ctx.Read(userDataType))
944 Error(
"DayZPlayer: OnInputFromServer - cannot read input type");
948 switch (userDataType)
951 GetDayZPlayerInventory().OnServerInventoryCommand(ctx);
954 Error(
"OnInputFromServer - unknown userDataType=" + userDataType);
967 GetItemAccessor().OnItemInHandsChanged();
972 GetItemAccessor().ResetWeaponInHands();
986 HumanCommandWeapons hcw = GetCommandModifier_Weapons();
987 GetDayZPlayerInventory().HandleWeaponEvents(pDt, pExitIronSights);
990 Class.CastTo(weapon, pInHands);
991 ItemOptics optic = weapon.GetAttachedOptics();
999 bool wantedLift = m_LiftWeapon_player;
1000 bool currentLift = hcw.IsWeaponLifted();
1001 if (wantedLift != currentLift)
1003 hcw.LiftWeapon(wantedLift);
1006 m_fObstructionSmoothVelocity[0] = 0;
1009 float wantedObstruction = m_ObstructWeapon_player;
1010 float currentObstruction = hcw.GetWeaponObstruction();
1011 if (wantedObstruction != currentObstruction)
1015 const float outTime = 0.150;
1016 const float inTime = 0.010;
1017 const float inTimeLift = 0.100;
1022 wantedObstruction = 0.0;
1023 smoothTime = inTimeLift;
1027 float t =
Math.Clamp(
Math.AbsFloat(wantedObstruction-currentObstruction), 0, 1);
1028 smoothTime =
Math.Lerp(outTime, inTime, t);
1032 m_fObstructionSmooth =
Math.SmoothCD(m_fObstructionSmooth, wantedObstruction, m_fObstructionSmoothVelocity, smoothTime, 6.0, pDt);
1033 if (
Math.AbsFloat(m_fObstructionSmooth-wantedObstruction) < 0.0001)
1035 m_fObstructionSmooth = wantedObstruction;
1038 #ifdef DIAG_DEVELOPER
1040 m_fObstructionSmooth = wantedObstruction;
1043 hcw.ObstructWeapon(m_fObstructionSmooth);
1046 #ifdef DIAG_DEVELOPER
1047 PluginDiagMenuClient.GetWeaponLiftDiag().Data().SetInterpolation( inTime, inTimeLift, outTime, smoothTime, m_fObstructionSmooth, currentObstruction, wantedObstruction );
1054 if (pInputs.IsHoldBreath() &&
m_MovementState.IsRaised() && (IsInIronsights() || IsInOptics()))
1056 m_IsTryingHoldBreath =
true;
1060 m_IsTryingHoldBreath =
false;
1063 if (pInputs.IsFireModeChange())
1065 GetWeaponManager().SetNextMuzzleMode();
1067 if (pInputs.IsZeroingUp())
1069 if (optic && (optic.IsInOptics() || optic.IsUsingWeaponIronsightsOverride()))
1071 optic.StepZeroingUp();
1075 weapon.StepZeroingUpAllMuzzles();
1078 if (pInputs.IsZeroingDown())
1080 if (optic && (optic.IsInOptics() || optic.IsUsingWeaponIronsightsOverride()))
1082 optic.StepZeroingDown();
1086 weapon.StepZeroingDownAllMuzzles();
1090 if (!m_LiftWeapon_player && (m_CameraIronsight || !weapon.CanEnterIronsights() || m_CameraOptics))
1093 HandleOptic(optic,
false, pInputs, pExitIronSights);
1098 m_IsFireWeaponRaised =
false;
1099 if (weapon && weapon.IsInOptics())
1101 weapon.ExitOptics();
1104 ResetWeaponRaiseProgress();
1110 m_IsFireWeaponRaised =
true;
1111 if (!IsWeaponRaiseCompleted())
1113 m_WeaponRaiseTime += pDt;
1118 CompleteWeaponRaise();
1123 if (GetWeaponManager().CanFire(weapon))
1125 bool autofire = weapon.GetCurrentModeAutoFire(weapon.GetCurrentMuzzle()) && weapon.IsChamberEjectable(weapon.GetCurrentMuzzle());
1126 int burst = weapon.GetCurrentModeBurstSize(weapon.GetCurrentMuzzle());
1127 int burst_count = weapon.GetBurstCount();
1128 if (!autofire && (burst < 2 || burst_count < 1))
1130 if (pInputs.IsAttackButtonDown() && GetInputInterface().
SyncedValue(
"UAWeaponMeleeAttack") == 0 && GetInputInterface().
SyncedValue(
"UAHeavyMeleeAttack") == 0)
1132 GetWeaponManager().Fire(weapon);
1135 else if (autofire || burst > 1)
1137#ifdef DIAG_DEVELOPER
1138 int burst_option = GetWeaponManager().GetBurstOption();
1139 if (burst_option == 0)
1142 if (pInputs.IsAttackButton() && GetInputInterface().
SyncedValue(
"UAWeaponMeleeAttack") == 0 && GetInputInterface().
SyncedValue(
"UAHeavyMeleeAttack") == 0)
1144 if (autofire || burst_count < burst)
1146 GetWeaponManager().Fire(weapon);
1151 weapon.ResetBurstCount();
1153#ifdef DIAG_DEVELOPER
1155 else if (burst_option == 1)
1157 if (burst > 1 && burst_count == burst)
1159 weapon.ResetBurstCount();
1161 else if (burst > 1 && burst_count < burst)
1163 GetWeaponManager().Fire(weapon);
1168 if (pInputs.IsAttackButton())
1170 GetWeaponManager().Fire(weapon);
1178 #ifdef PLATFORM_CONSOLE
1179 if (
GetGame().GetInput().LocalRelease(
"UAFire",
false) || m_ShouldReload)
1181 if (!weapon.IsWaitingForActionFinish() && !IsFighting())
1183 int muzzle_index = weapon.GetCurrentMuzzle();
1185 if (weapon.IsChamberFiredOut(muzzle_index))
1187 if (weapon.CanProcessWeaponEvents())
1189 if (GetWeaponManager().CanEjectBullet(weapon))
1191 GetWeaponManager().EjectBullet();
1192 pExitIronSights =
true;
1193 m_ShouldReload =
false;
1200 m_ShouldReload =
true;
1216 bool controllerPressIn;
1217 bool controllerPressOut;
1219 if (input.SyncedPress_ID(UAZoomInOptics))
1221 weapon =
Weapon_Base.Cast(optic.GetHierarchyParent());
1222 FOVcount = optic.GetStepFOVCount();
1223 controllerPressIn = input.SyncedPress_ID(UAZoomInOpticsControllerHelper);
1225 if (weapon && m_CameraIronsight && !m_CameraOptics)
1227 SetIronsights(
false);
1228 SwitchOptics(optic,
true);
1229 optic.SetStepFOVIndex(0);
1231 else if (m_CameraOptics)
1233 if (controllerPressIn)
1235 if (!optic.StepFOVUp())
1239 optic.SetStepFOVIndex(0);
1242 if (weapon && weapon.CanEnterIronsights())
1244 SwitchOptics(optic,
false);
1245 SetIronsights(
true);
1256 if (input.SyncedPress_ID(UAZoomOutOptics))
1258 weapon =
Weapon_Base.Cast(optic.GetHierarchyParent());
1259 FOVcount = optic.GetStepFOVCount();
1260 controllerPressOut = input.SyncedPress_ID(UAZoomOutOpticsControllerHelper);
1263 if (!optic.StepFOVDown())
1265 if (controllerPressOut)
1267 if (FOVcount > 0 && (!weapon || !weapon.CanEnterIronsights()))
1269 optic.SetStepFOVIndex(FOVcount - 1);
1273 if (weapon && weapon.CanEnterIronsights())
1275 SwitchOptics(optic,
false);
1276 SetIronsights(
true);
1280 else if (controllerPressOut && weapon && m_CameraIronsight)
1282 SwitchOptics(optic,
true);
1285 optic.SetStepFOVIndex(FOVcount - 1);
1296 bool m_DamageHitFullbody =
false;
1297 int m_DamageHitAnimType = -1.0;
1298 float m_DamageHitDir = 0.0;
1299 float m_DamageHealth = 0.0;
1301 const float HIT_INTERVAL_MIN = 0.3;
1302 float m_HitElapsedTime = HIT_INTERVAL_MIN;
1306 return (m_DamageHitFullbody && m_DamageHitAnimType != -1) || GetCommand_Damage() != null;
1313 m_DamageHitAnimType = -1;
1315 if (!m_SyncedHitDataArray || m_SyncedHitDataArray.Count() == 0)
1322 SyncHitInfo greatest_hit;
1323 for (
int i = 0; i < m_SyncedHitDataArray.Count(); i++)
1325 data = m_SyncedHitDataArray[i];
1326 m_DamageHitDir = data.m_HitDir;
1330 if (IsAlive() && !IsUnconscious() && data.m_HasSource &&
GetGame().GetMission().GetHud() &&
GetGame().
GetPlayer() ==
this)
1332 m_DamageHealth = data.m_HealthDamage;
1333 if (m_DamageHealth > 0.0)
1335 float rel = m_DamageHealth / (GetMaxHealth(
"",
"Health") *
PlayerConstants.HEAVY_HIT_THRESHOLD);
1336 GetGame().GetMission().GetHud().SpawnHitDirEffect(
this,m_DamageHitDir,rel);
1343 greatest_hit = data;
1346 else if (data.m_Fullbody)
1348 greatest_hit = data;
1352 m_SyncedHitDataArray.Clear();
1353 m_DamageHealth = 0.0;
1362 m_DamageHitFullbody = greatest_hit.m_Fullbody;
1363 m_DamageHitAnimType = greatest_hit.m_AnimType;
1364 m_DamageHitDir = greatest_hit.m_HitDir;
1373 if ( m_HitElapsedTime < HIT_INTERVAL_MIN )
1375 m_HitElapsedTime += m_dT;
1376 ResetDamageHitState(
false);
1382 if (m_DamageHitAnimType != -1 && m_TransportCache == null && !CommitedSuicide())
1384 HumanCommandVehicle vehCommand = GetCommand_Vehicle();
1385 if (m_DamageHitFullbody && (!vehCommand || vehCommand.IsGettingIn() || vehCommand.IsGettingOut()))
1387 StartCommand_Damage(m_DamageHitAnimType, m_DamageHitDir);
1388 ResetDamageHitState(
true);
1393 AddCommandModifier_Damage(m_DamageHitAnimType, m_DamageHitDir);
1394 ResetDamageHitState(
false);
1404 m_DamageHitAnimType = -1;
1405 m_DamageHitFullbody =
false;
1409 m_HitElapsedTime = 0;
1416 bool doPhxImpulse =
GetGame().ConfigGetInt(
"cfgAmmo " + pAmmoType +
" doPhxImpulse") > 0;
1423 vector targetDirection = GetDirection();
1426 targetDirection[1] = 0;
1427 toSourceDirection[1] = 0;
1429 targetDirection.Normalize();
1430 toSourceDirection.Normalize();
1432 float cosFi =
vector.Dot(targetDirection, toSourceDirection);
1433 vector cross = targetDirection * toSourceDirection;
1435 pAnimHitDir =
Math.Acos(cosFi) *
Math.RAD2DEG;
1437 pAnimHitDir = -pAnimHitDir;
1445 int invertHitDir = 0;
1448 pAnimHitFullbody =
false;
1451 switch (pDamageType)
1458 pAnimType =
GetGame().ConfigGetInt(
"cfgAmmo " + pAmmoType +
" hitAnimation");
1459 invertHitDir =
GetGame().ConfigGetInt(
"cfgAmmo " + pAmmoType +
" invertHitDir");
1460 if (!IsUnconscious() && pAnimType == 1 && !m_MeleeFightLogic.IsInBlock())
1461 pAnimHitFullbody =
true;
1465 int impactBehaviour = 0;
1467 if (!IsUnconscious() && GetHealth(
"",
"Shock") > 25)
1470 if (pComponent ==
"Torso" || pComponent ==
"Head")
1472 impactBehaviour =
GetGame().ConfigGetInt(
"cfgAmmo " + pAmmoType +
" impactBehaviour");
1473 float fireDamage = pDamageResult.GetHighestDamage(
"Health");
1474 float shockDamage = pDamageResult.GetHighestDamage(
"Shock");
1475 if ((fireDamage > 80.0 || shockDamage > 40.0) && impactBehaviour == 1)
1476 pAnimHitFullbody =
true;
1486 pAnimType =
GetGame().ConfigGetInt(
"cfgAmmo " + pAmmoType +
" hitAnimation");
1488 pAnimHitFullbody =
true;
1489 else if (pAmmoType !=
"HeatDamage" || IsSwimming() || IsInVehicle())
1496 vector targetDirection = GetDirection();
1499 targetDirection[1] = 0;
1500 toSourceDirection[1] = 0;
1502 targetDirection.Normalize();
1503 toSourceDirection.Normalize();
1505 float cosFi =
vector.Dot(targetDirection, toSourceDirection);
1506 vector cross = targetDirection * toSourceDirection;
1508 pAnimHitDir =
Math.Acos(cosFi) *
Math.RAD2DEG;
1511 if (invertHitDir > 0)
1515 pAnimHitDir = -pAnimHitDir;
1523 super.EEHitBy(damageResult, damageType, source,
component, dmgZone, ammo, modelPos, speedCoef);
1525 m_TransportHitRegistered =
false;
1530 float animHitDirDeath;
1531 if (EvaluateDeathAnimation(damageType, source, ammo, animTypeDeath, animHitDirDeath))
1533 SendDeathJuncture(animTypeDeath, animHitDirDeath);
1536 if (!m_DeathSyncSent)
1538 Man killer = source.GetHierarchyRootPlayer();
1543 m_KillerData.m_Killer = killer;
1544 m_KillerData.m_MurderWeapon = source;
1547 if (killer && killer.IsPlayer())
1550 if (dmgZone ==
"Brain")
1552 m_KilledByHeadshot =
true;
1553 if (m_KillerData.m_Killer == killer)
1554 m_KillerData.m_KillerHiTheBrain =
true;
1563 bool animHitFullbody;
1564 if (EvaluateDamageHitAnimation(damageResult, damageType, source, dmgZone, ammo, modelPos, animType, animHitDir, animHitFullbody))
1565 DayZPlayerSyncJunctures.SendDamageHitEx(
this, animType, animHitDir, animHitFullbody, damageResult, damageType, source, dmgZone, ammo, modelPos);
1568 bool skipSoundRequest =
false;
1569 if (damageType ==
DamageType.CUSTOM && GetCommand_Fall())
1570 skipSoundRequest = GetFallDamage().GetLandType() < HumanCommandFall.LANDTYPE_MEDIUM;
1572 if (!skipSoundRequest)
1578 if (animHitFullbody)
1580 HumanCommandMelee2 hcm = GetCommand_Melee2();
1590 float m_fLastHeadingDiff = 0;
1605 m_fLastHeadingDiff = 0;
1610 HumanCommandVehicle hmv = GetCommand_Vehicle();
1611 if (hmv.IsGettingOut() || hmv.IsGettingIn())
1616 m_fLastHeadingDiff = 0;
1621 HumanCommandUnconscious hcu = GetCommand_Unconscious();
1622 if (!hcu.IsWakingUp())
1624 m_fLastHeadingDiff = 0;
1632 m_fLastHeadingDiff = 0;
1638 if (actMenuValue != 0)
1647 m_fLastHeadingDiff = 0;
1654 HumanCommandMove hcm = GetCommand_Move();
1655 if (hcm.IsStandingFromBack())
1657 m_fLastHeadingDiff = 0;
1662 HumanItemAccessor hia = GetItemAccessor();
1668 if (IsUnconscious() || (GetCommand_Move() && GetCommand_Move().IsLeavingUncon()))
1686 HumanCommandMelee2 hcm = GetCommand_Melee2();
1687 if (hcm.IsFinisher())
1689 if (!m_AimingFinisherStarted)
1691 m_AimingModel.OnFinisherBegin(pModel.m_fCurrentAimY);
1692 m_AimingFinisherStarted =
true;
1694 m_AimingModel.ProcessStealthFilters(pDt, pModel);
1702 if (!m_RaiseStarted)
1704 m_AimingModel.OnRaiseBegin(
this);
1705 m_RaiseStarted =
true;
1707 m_AimingModel.ProcessAimFilters(pDt, pModel,
m_MovementState.m_iStanceIdx);
1712 m_RaiseStarted =
false;
1713 m_AimingFinisherStarted =
false;
1727 if (!hic || !hic.IsJumpClimb())
1732 m_JumpClimb.JumpOrClimb();
1734 if (!m_JumpClimb.WasSuccessful())
1745 if (IsFBSymptomPlaying() || IsRestrained() || IsUnconscious() || IsInFBEmoteState())
1751 if (IsRaised() && GetInputInterface().SyncedPress(
"UAGetOverControllerHelper"))
1757 if (!hibcfg.m_bJumpAllowed)
1763 HumanCommandMove hcm = GetCommand_Move();
1766 if (hcm.IsChangingStance())
1770 HumanCommandSwim hcs = GetCommand_Swim();
1779 bool CanClimb(
int climbType, SHumanCommandClimbResult climbRes)
1781 if (IsFBSymptomPlaying() || IsRestrained() || IsUnconscious() || IsInFBEmoteState())
1787 if (IsRaised() && GetInputInterface().SyncedPress(
"UAGetOverControllerHelper"))
1793 if (!hibcfg.m_bJumpAllowed)
1799 if (
Class.CastTo(entity,climbRes.m_GrabPointParent) && entity.IsHologram())
1801 if (
Class.CastTo(entity,climbRes.m_ClimbStandPointParent) && entity.IsHologram())
1803 if (
Class.CastTo(entity,climbRes.m_ClimbOverStandPointParent) && entity.IsHologram())
1821 GetDayZPlayerInventory().CancelHandEvent();
1826 GetDayZPlayerInventory().CancelWeaponEvent();
1831 GetDayZPlayerInventory().AbortWeaponEvent();
1842 if (m_CameraIronsight || m_CameraOptics)
1849 bool bADSToggle =
false;
1850 bool exitSights =
false;
1852 HumanItemAccessor hia = GetItemAccessor();
1853 HumanCommandWeapons hcw = GetCommandModifier_Weapons();
1857 if (playerPB.IsRolling())
1862 if (m_ResetADS || (!hia.IsItemInHandsWeapon() && hic.WeaponADS()))
1870 ResetWeaponRaiseProgress();
1875 if (m_bADS != hic.WeaponADS())
1877 m_bADS = hic.WeaponADS();
1881 if (m_bADS && !m_CameraIronsight && !m_CameraOptics)
1884 if (!IsWeaponRaiseCompleted())
1896 if (bADSToggle && !GetCommand_Melee2() && !GetThrowing().IsThrowingModeEnabled())
1898 if (hia.IsItemInHandsWeapon() && playerPB.GetItemInHands() && playerPB.GetItemInHands().IsWeapon() && playerPB.GetWeaponManager() && !playerPB.GetWeaponManager().IsRunning())
1901 ItemOptics optic = weapon.GetAttachedOptics();
1902 bool switchToADS =
false;
1903 bool canUseIronsights = weapon.CanEnterIronsights();
1904 bool canUseOptics = optic != NULL;
1906 if (canUseIronsights || canUseOptics)
1907 switchToADS = m_bADS;
1914 switchToADS =
false;
1918 if (IsLiftWeapon() || IsWeaponObstructionBlockingADS() || !IsRaised() || GetDayZPlayerInventory().
IsProcessing() || !IsWeaponRaiseCompleted() || IsFighting())
1922 else if (switchToADS)
1925 if (weapon.GetWasIronSight() && !canUseIronsights)
1927 weapon.SetWasIronSight(
false);
1929 else if (!weapon.GetWasIronSight() && !canUseOptics)
1931 weapon.SetWasIronSight(
true);
1934 if (weapon.GetWasIronSight())
1936 SwitchOptics(optic,
false);
1937 SetIronsights(
true);
1939 else if (!weapon.GetWasIronSight() || (!canUseIronsights && canUseOptics))
1941 SetIronsights(
false);
1942 SwitchOptics(optic,
true);
1949 if (hcw && (m_CameraOptics))
1962 if (exitSights && !IsHandheldOpticsInUse() && (m_CameraIronsight || m_CameraOptics) || GetCommand_Melee2())
1972 if (m_CameraIronsight || m_CameraOptics)
1981 bool camChange = hic.CameraViewChanged();
1992 if (
GetGame().GetWorld().Is3rdPersonDisabled())
1994 m_Camera3rdPerson =
false;
1998 m_Camera3rdPerson = !m_Camera3rdPerson;
2002 if ((m_LiftWeapon_player || IsWeaponObstructionBlockingADS()) && (m_CameraOptics || m_CameraIronsight))
2008 m_CameraOpticsAimOverride =
true;
2010 else if (m_CameraOpticsAimOverride)
2013 m_CameraOpticsAimOverride =
false;
2023 else if (!IsClimbingLadder() && !IsSwimming() && !IsInVehicle())
2027 hic.GetMovement(pSpeed ,pLocalDirection);
2042 float headingAngle = MiscGameplayFunctions.GetHeadingAngle(
this);
2043 float headingAngleDiffBlock =
Math.AbsFloat(m_LastHeadingAngleBlock - headingAngle);
2044 float headingAngleDiffBlock2 =
Math.AbsFloat(m_LastHeadingAngleBlock2 - headingAngle);
2045 float headingAngleDiff = 0.0;
2047 if (m_LastHeadingAngle * headingAngle < 0.0)
2049 headingAngleDiff =
Math.AbsFloat(m_LastHeadingAngle + headingAngle);
2053 headingAngleDiff =
Math.AbsFloat(m_LastHeadingAngle - headingAngle);
2056 if (headingAngleDiff > 0.2)
2060 float timefilterconstant = 400 - (headingAngleDiff * 100);
2062 if (headingAngleDiffBlock > 0.8 && time - m_LastBackSoundTime > timefilterconstant)
2064 float volume = headingAngleDiff / 0.5;
2074 m_SoundOffset = headingAngleDiff / 2;
2075 if (m_SoundOffset > 0.25)
2077 m_SoundOffset = 0.25;
2080 string soundSetName =
"Cloth_Body_longmove_TShirt_Soundset";
2082 string bodyClothName =
"";
2086 bodyClothName = attachment.GetAttachmentSoundType();
2089 if (bodyClothName !=
"")
2091 string path =
"CfgSoundTables CfgAttachmentSoundTables Cloth_Body_Longmove_LookupTable";
2092 int soundCount =
GetGame().ConfigGetChildrenCount(
path);
2094 for (
int i = 0; i < soundCount; i++)
2099 if (
name == bodyClothName)
2102 GetGame().ConfigGetTextArray(
path +
" " +
name +
" soundSets", stringArray);
2103 soundSetName = stringArray.Get(0);
2113 if (soundObjectBuilder != NULL)
2115 SoundObject soundObject = soundObjectBuilder.BuildSoundObject();
2117 if (soundObject != NULL)
2122 wave.SetStartOffset(m_SoundOffset);
2123 wave.SetVolumeRelative(volume);
2126 m_LastHeadingAngleBlock = headingAngle;
2131 if (headingAngleDiffBlock2 > 1.5 && time - m_LastBackSoundTime2 > (timefilterconstant * 2))
2133 float volume2 = headingAngleDiff * 2;
2139 m_SoundOffset = headingAngleDiff / 1.8;
2140 if (m_SoundOffset < 0.1)
2142 m_SoundOffset = 0.1;
2144 if (m_SoundOffset > 0.3)
2146 m_SoundOffset = 0.3;
2149 string soundSetName2 =
"walkProne_noHS_asphalt_ext_Char_SoundSet";
2150 string surfaceType = GetSurfaceType();
2152 if (surfaceType !=
"")
2154 string movementSurfaceType =
"walkProne_" + surfaceType;
2156 string path2 =
"CfgSoundTables CfgStepSoundTables walkProne_noHS_Char_LookupTable";
2157 int soundCount2 =
GetGame().ConfigGetChildrenCount(path2);
2159 for (
int i2 = 0; i2 < soundCount2; i2++)
2162 GetGame().ConfigGetChildName(path2, i2, name2);
2164 if (name2 == movementSurfaceType)
2167 GetGame().ConfigGetTextArray(path2 +
" " + name2 +
" soundSets", stringArray2);
2168 soundSetName2 = stringArray2.Get(0);
2170 delete stringArray2;
2178 if (soundObjectBuilder2 != NULL)
2180 SoundObject soundObject2 = soundObjectBuilder2.BuildSoundObject();
2182 if (soundObject2 != NULL)
2187 wave2.SetStartOffset(m_SoundOffset);
2188 wave2.SetVolumeRelative(volume2);
2191 m_LastHeadingAngleBlock2 = headingAngle;
2196 m_LastHeadingAngle = headingAngle;
2237 override void CommandHandler(
float pDt,
int pCurrentCommandID,
bool pCurrentCommandFinished)
2241 vector playerPosition = PhysicsGetPositionWS();
2243 GetDayZPlayerInventory().HandleInventory(pDt);
2244 GetHumanInventory().Update(pDt);
2252 EntityAI entityInHands = GetHumanInventory().GetEntityInHands();
2256 bool isWeapon = entityInHands && entityInHands.IsInherited(
Weapon);
2258 bool updateAimingMdfr =
false;
2259 if (isWeapon != m_IsWeapon)
2261 m_IsWeapon = isWeapon;
2262 updateAimingMdfr =
true;
2265 if (isRaisedNow != m_IsRaised)
2267 updateAimingMdfr =
true;
2271 if (updateAimingMdfr)
2273 if (isRaisedNow && isWeapon)
2274 GetUApi().ActivateModificator(
"aiming");
2276 GetUApi().DeactivateModificator(
"aiming");
2286 if (isWeapon && (!m_ProcessFirearmMeleeHit || !m_ContinueFirearmMelee))
2288 m_ProcessFirearmMeleeHit =
false;
2289 bool exitIronSights =
false;
2290 HandleWeapons(pDt, entityInHands, hic, exitIronSights);
2292 else if (IsHandheldOpticsInUse() && m_CameraOptics && opticInHands)
2294 bool exitOptic =
false;
2295 HandleOptic(opticInHands,
true, hic, exitOptic);
2304 OnMovementChanged();
2309 if (HandleDeath(pCurrentCommandID))
2318 HumanCommandVehicle cmdVehicle = GetCommand_Vehicle();
2319 if ( cmdVehicle && cmdVehicle.IsGettingOut() )
2322 if ( m_Swimming.CheckSwimmingStart( waterLevel ) )
2325 cmdVehicle.ProcessLeaveEvents();
2327 StartCommand_Swim();
2334 if (pCurrentCommandFinished)
2338 if ((m_LastCommandBeforeUnconscious ==
DayZPlayerConstants.COMMANDID_VEHICLE) && (m_TransportCache != null))
2340 int crew_index = m_TransportCache.CrewMemberIndex(
this);
2341 int seat = m_TransportCache.GetSeatAnimationType(crew_index);
2342 StartCommand_Vehicle(m_TransportCache, crew_index, seat,
true);
2343 m_TransportCache = null;
2350 if (PhysicsIsFalling(
true))
2352 StartCommand_Fall(0);
2353 SetFallYDiff(playerPosition[1]);
2358 if (m_Swimming.m_bWasSwimming)
2360 StartCommand_Swim();
2364 StartCommand_Move();
2366 if (GetHumanInventory().GetEntityInHands())
2386 HumanCommandVehicle hcv = GetCommand_Vehicle();
2387 if (hcv.WasGearChange())
2390 cb.SetVehicleCommand(hcv);
2398 HumanCommandMove hcm = GetCommand_Move();
2401 m_SprintedTime += pDt;
2402 if (m_SprintedTime > m_SprintedTimePerStanceMin)
2404 m_SprintFull =
true;
2405 m_SprintedTimePerStanceMin =
PlayerConstants.FULL_SPRINT_DELAY_DEFAULT;
2408 m_SprintFull =
false;
2412 m_SprintedTime = 0.0;
2413 m_SprintFull =
false;
2418 if (m_Swimming.HandleSwimming(pCurrentCommandID, hcm,
m_MovementState))
2420 if (ProcessJumpOrClimb(pDt, pCurrentCommandID))
2425 m_JumpClimb.CheckAndFinishJump();
2447 if (IsAlreadyInFallingCommand(pCurrentCommandID))
2449 if (IsLanded(pCurrentCommandID))
2455 fallDamageData.m_Height = m_FallYDiff - playerPosition[1];
2458 if (fallDamageData.m_Height < 0.5)
2460 fallDamageData.m_LandType = HumanCommandFall.LANDTYPE_NONE;
2461 OnLand(pCurrentCommandID, fallDamageData);
2462 npar = type.GetNoiseParamsLandLight();
2465 else if (fallDamageData.m_Height < 3.0)
2468 fallDamageData.m_LandType = HumanCommandFall.LANDTYPE_NONE;
2470 fallDamageData.m_LandType = HumanCommandFall.LANDTYPE_LIGHT;
2472 OnLand(pCurrentCommandID, fallDamageData);
2473 npar = type.GetNoiseParamsLandLight();
2476 else if (fallDamageData.m_Height < 5.0)
2478 fallDamageData.m_LandType = HumanCommandFall.LANDTYPE_MEDIUM;
2479 OnLand(pCurrentCommandID, fallDamageData);
2480 npar = type.GetNoiseParamsLandHeavy();
2485 fallDamageData.m_LandType = HumanCommandFall.LANDTYPE_HEAVY;
2486 OnLand(pCurrentCommandID, fallDamageData);
2487 npar = type.GetNoiseParamsLandHeavy();
2493 OnPlayerRecievedHit();
2496 m_FallDamage.HandleFallDamage(fallDamageData);
2497 m_JumpClimb.CheckAndFinishJump(fallDamageData.m_LandType);
2506 else if (PhysicsIsFalling(
false))
2509 StartCommand_Fall(0);
2510 SetFallYDiff(playerPosition[1]);
2526 hcls.m_fFwMaxDistance = 3;
2528 hcls.m_fFwMaxDistance = 1.2;
2530 SHumanCommandClimbResult ret;
2533 HumanCommandClimb.DoClimbTest(
this, ret, 0x3);
2540 if (ProcessJumpOrClimb(pDt, pCurrentCommandID))
2545 HumanCommandAdditives ad = GetCommandModifier_Additives();
2556 if (amplitude > 0.1 || force)
2559 ad.SetTalking(
true);
2565 if (now >= m_NextVoNNoiseTime)
2567 m_NextVoNNoiseTime = now + 1000;
2569 int voiceLevel =
GetGame().GetVoiceLevel(
this);
2576 case VoiceLevelWhisper:
2577 vonpar = pt.GetNoiseParamsWhisper();
2579 case VoiceLevelTalk:
2580 vonpar = pt.GetNoiseParamsTalk();
2582 case VoiceLevelShout:
2583 vonpar = pt.GetNoiseParamsShout();
2593 ad.SetTalking(
false);
2604 HumanCommandWeapons hcw = GetCommandModifier_Weapons();
2605 m_Throwing.HandleThrowing(hic, hcw, entityInHands, pDt);
2608 if (m_MeleeFightLogic.CanFight())
2610 if (m_MeleeFightLogic.HandleFightLogic(pCurrentCommandID, hic, entityInHands,
m_MovementState, m_ContinueFirearmMelee))
2612 m_ProcessFirearmMeleeHit = isWeapon && (hic.IsMeleeWeaponAttack() || m_ProcessFirearmMeleeHit) || m_ContinueFirearmMelee;
2633 float m_TestDamageCounter = -1;
2634 float m_DebugDirectionVal = -180;
2635 bool m_DebugTypeVal =
false;
2637 int m_DebugWeaponChangeStage = 0;
2649 playerDebug.CommandHandler();
2652 if (m_DebugWeaponChangeStage == 0)
2658 if (playerDebug.IsWeaponChange(m_DebugWeaponChangeItem, hideSlot, m_DebugWeaponChangeShowSlot))
2662 HumanCommandWeapons w = GetCommandModifier_Weapons();
2663 w.StartAction(WeaponActions.HIDE, hideSlot);
2665 m_DebugWeaponChangeStage = 1;
2668 else if (m_DebugWeaponChangeStage == 1)
2671 HumanCommandWeapons w2 = GetCommandModifier_Weapons();
2672 if (w2 && w2.GetRunningAction() == WeaponActions.HIDE)
2674 if (w2.IsEvent() == WeaponEvents.CHANGE_HIDE)
2681 EntityAI item_in_hands = player.GetHumanInventory().GetEntityInHands();
2682 if (item_in_hands != NULL && player.CanDropEntity(item_in_hands) &&
GetGame().
GetPlayer().GetHumanInventory().CanRemoveEntityInHands())
2684 player.PredictiveDropEntity(item_in_hands);
2687 if (m_DebugWeaponChangeItem !=
"")
2690 dst.SetHands(
this, NULL);
2695 w2.StartAction(WeaponActions.SHOW, 3);
2697 m_DebugWeaponChangeStage = 2;
2701 else if (m_DebugWeaponChangeStage == 2)
2703 HumanCommandWeapons w3 = GetCommandModifier_Weapons();
2704 if (w3 && w3.IsActionFinished())
2706 m_DebugWeaponChangeStage = 0;
2714 if (m_TestDamageCounter >= 0)
2716 if (m_TestDamageCounter > 3)
2718 m_DebugDirectionVal = m_DebugDirectionVal + 90;
2719 m_TestDamageCounter = 0;
2721 if (m_DebugDirectionVal > 90)
2723 m_DebugDirectionVal = -180;
2724 m_DebugTypeVal = !m_DebugTypeVal;
2729 AddCommandModifier_Damage(0, m_DebugDirectionVal);
2733 StartCommand_Damage(0, m_DebugDirectionVal);
2741 m_TestDamageCounter += pDt;
2750 HumanCommandAdditives ad = GetCommandModifier_Additives();
2756 ad.SetInjured(v,
true);
2763 ad.SetExhaustion(v,
true);
2780 if (!m_LiftWeapon_player && !IsWeaponObstructionBlockingADS())
2783 EntityAI entityInHands = GetHumanInventory().GetEntityInHands();
2786 optics = weapon.GetAttachedOptics();
2787 else if (entityInHands)
2788 Class.CastTo(optics,entityInHands);
2790 if (m_CameraOptics && optics)
2794 else if (m_CameraIronsight && weapon)
2804 if (m_Camera3rdPerson && m_IsWeapon && m_IsRaised && hic && hic.WeaponADS())
2815 HumanCommandVehicle vehicleCommand = GetCommand_Vehicle();
2817 if (!m_Camera3rdPerson)
2830 Transport transport = vehicleCommand.GetTransport();
2831 if (transport && GetParent())
2833 return transport.Get3rdPersonCameraType();
2853 if (m_JumpClimb.m_bIsJumpInProgress)
2861 HumanCommandMove commandMove = GetCommand_Move();
2862 if (commandMove && commandMove.IsChangingStance() &&
m_MovementState.IsRaised())
2985 GetUApi().GetInputByID(UALeanLeft).Lock();
2986 GetUApi().GetInputByID(UALeanRight).Lock();
2994 #ifdef PLATFORM_CONSOLE
2995 if (
GetUApi().GetInputByID(UAVoiceModifierHelper).LocalValue() == 0)
2998 GetUApi().GetInputByID(UALeanLeft).Unlock();
2999 GetUApi().GetInputByID(UALeanRight).Unlock();
3010 int userDataTypeParam = 0;
3011 if (!ctx.Read(userDataTypeParam))
3013 Error(
"DayZPlayerImplement: cannot read input type");
3030 if (ctx.Read(target))
3036 if (ctx.Read(hitPos))
3041 int hitZoneIdx = -1;
3042 if (ctx.Read(hitZoneIdx))
3047 int finisherType = -1;
3048 if (ctx.Read(finisherType))
3065 switch (pJunctureID)
3068 if (m_DeathAnimType == -2)
3073 SyncHitInfo data =
new SyncHitInfo;
3076 m_SyncedHitDataArray.Insert(data);
3087 switch (boots.GetAttachmentSoundType())
3105 switch (attachment.GetAttachmentSoundType())
3108 return AnimUpperBodyType.NylonJacket;
3110 return AnimUpperBodyType.TShirt;
3112 return AnimUpperBodyType.WoolShirt;
3114 return AnimUpperBodyType.HeavyJacket;
3115 case "LeatherJacket":
3116 return AnimUpperBodyType.LeatherJacket;
3118 return AnimUpperBodyType.Coat;
3119 case "ChemlonDress":
3120 return AnimUpperBodyType.ChemlonDress;
3122 return AnimUpperBodyType.Ghillie;
3124 return AnimUpperBodyType.Chainmail;
3128 return AnimUpperBodyType.None;
3136 switch (back.GetAttachmentSoundType())
3139 return AnimBackType.Small;
3141 return AnimBackType.Military;
3143 return AnimBackType.Outdoor;
3145 return AnimBackType.Ghillie;
3149 return AnimBackType.None;
3158 AnimRangedWeaponType shoulderAttType = AnimRangedWeaponType.None;
3159 AnimRangedWeaponType meleeAttType = AnimRangedWeaponType.None;
3161 if (shoulderAttachment)
3163 switch (shoulderAttachment.GetAttachmentSoundType())
3167 shoulderAttType = AnimRangedWeaponType.Shotgun;
3172 shoulderAttType = AnimRangedWeaponType.Rifle;
3177 if (meleeAttachment)
3179 switch (meleeAttachment.GetAttachmentSoundType())
3183 meleeAttType = AnimRangedWeaponType.Shotgun;
3188 meleeAttType = AnimRangedWeaponType.Rifle;
3194 if (shoulderAttType == AnimRangedWeaponType.Shotgun || meleeAttType == AnimRangedWeaponType.Shotgun)
3195 return AnimRangedWeaponType.Shotgun;
3197 if (shoulderAttType == AnimRangedWeaponType.Rifle || meleeAttType == AnimRangedWeaponType.Rifle)
3198 return AnimRangedWeaponType.Rifle;
3200 return AnimRangedWeaponType.None;
3208 g_Game.SurfaceUnderObjectByBoneCorrectedLiquid(
this, limbType, surfaceType, liquidType);
3230 if (noisePar != null)
3231 GetGame().GetNoiseSystem().AddNoise(
this, noisePar, noiseMultiplier);
3243 HumanMovementState state =
new HumanMovementState();
3244 GetMovementState(state);
3252 if (pUserInt % 2 == 1)
3254 surface = GetSurfaceType(SurfaceAnimationBone.LeftBackLimb);
3255 if (surface.Length() == 0)
3256 surface = GetSurfaceType(SurfaceAnimationBone.RightBackLimb);
3260 surface = GetSurfaceType(SurfaceAnimationBone.RightBackLimb);
3261 if (surface.Length() == 0)
3262 surface = GetSurfaceType(SurfaceAnimationBone.LeftBackLimb);
3265 if (surface.Length() != 0)
3266 m_LastSurfaceUnderHash = surface.Hash();
3271 int stepParticleID =
Surface.GetStepsParticleID(surface);
3273 if (stepParticleID > 0)
3279 soundBuilder = table.GetSoundBuilder(pUserInt, state.m_iMovement, m_LastSurfaceUnderHash, GetBootsType());
3283 string surface2 = GetSurfaceType();
3284 if (surface2.Length() != 0)
3285 m_LastSurfaceUnderHash = surface2.Hash();
3287 soundBuilder = table.GetSoundBuilder(pUserInt, state.m_iMovement, m_LastSurfaceUnderHash, GetBootsType());
3292 orientation =
Vector(0, 0, 0);
3295 excludedObjects.Insert(
this);
3298 if (
GetGame().IsBoxCollidingGeometry(
GetPosition(), orientation, edgeLength, ObjIntersectView, ObjIntersectNone, excludedObjects, collidedObjects))
3300 for (
int i = 0; i < collidedObjects.Count(); ++i)
3303 if (colObject && colObject.HasPlayerCollisionParticle() && state.m_iMovement >
DayZPlayerConstants.MOVEMENTIDX_WALK)
3306 if (colObject && colObject.HasPlayerCollisionSound())
3308 for (
int j = 0; j < type.GetVegetationSounds().
Count(); ++j)
3312 if (vegetationSound.GetAnimEventIds().Find(pUserInt) >= 0)
3315 SoundObject vegSoundObject = vegetationSound.GetSoundObjectBuilder().BuildSoundObject();
3317 if (vegSoundObject != NULL)
3319 AttenuateSoundIfNecessary(vegSoundObject);
3320 PlaySound(vegSoundObject, vegSoundObjectBuilder);
3332 SoundObject soundObject = soundBuilder.BuildSoundObject();
3333 if (soundObject != NULL)
3335 AttenuateSoundIfNecessary(soundObject);
3345 float noiseMultiplier = 0;
3349 noiseParams = type.GetNoiseParamsStand();
3351 noiseParams = type.GetNoiseParamsCrouch();
3353 noiseParams = type.GetNoiseParamsProne();
3356 Debug.Log(
string.Format(
"Wrong stance, id: %1 using backup with stand stance (id: 0)", state.m_iStanceIdx));
3357 noiseParams = type.GetNoiseParamsStand();
3362 AddNoise(noiseParams, noiseMultiplier);
3366 ProcessFeetDamageServer(pUserInt);
3375 if (pEventType ==
"Sound")
3379 eventReplaceID = m_ReplaceSoundEventHandler.GetSoundEventID(pUserInt,
ESoundEventType.SOUND_COMMON);
3380 if (eventReplaceID > 0)
3387 ProcessSoundEvent(pEventType, pUserString, pUserInt);
3389 else if (pEventType ==
"SoundWeapon")
3393 eventReplaceID = m_ReplaceSoundEventHandler.GetSoundEventID(pUserInt,
ESoundEventType.SOUND_WEAPON);
3394 if (eventReplaceID > 0)
3401 ProcessWeaponEvent(pEventType, pUserString, pUserInt);
3403 else if (pEventType ==
"SoundAttachment")
3405 ProcessAttachmentEvent(pEventType, pUserString, pUserInt);
3407 else if (pEventType ==
"SoundVoice")
3411 int event_id = m_PlayerSoundEventHandler.ConvertAnimIDtoEventID(pUserInt);
3414 PlaySoundEvent(event_id);
3418 ProcessVoiceEvent(pEventType, pUserString, pUserInt);
3422 Debug.Log(
"OnSoundEvent: Unknown sound event \"" + pEventType +
"\"");
3435 AnimSoundEvent soundEvent = null;
3439 EntityAI entityInHands = GetHumanInventory().GetEntityInHands();
3440 if (entityInHands && entityInHands.IsInherited(
ItemBase))
3443 Class.CastTo(item, entityInHands);
3444 if (item.HasQuantity())
3445 quantity = (
float)item.GetQuantity() / (item.GetQuantityMax() - item.GetQuantityMin());
3447 soundEvent = invItemType.GetSoundEvent(pUserInt);
3450 if (soundEvent == null)
3453 soundEvent = type.GetSoundWeaponEvent(pUserInt);
3456 if (soundEvent != null)
3458 if (!
GetGame().IsDedicatedServer())
3460 SoundObjectBuilder builder = soundEvent.GetSoundBuilderEx(m_ActionSoundCategoryHash);
3463 builder.AddVariable(
"quantity", quantity);
3464 builder.AddVariable(
"interior", IsSoundInsideBuilding());
3466 SoundObject soundObject = builder.BuildSoundObject();
3467 if (soundObject != NULL)
3469 AttenuateSoundIfNecessary(soundObject);
3472 if (pUserString ==
"StopOnAnimEnd")
3473 m_PerformedActionSounds.Insert(sound);
3495 pUserString.Split(
",", attachments);
3496 for (
int i = 0; i < attachments.Count(); i++)
3498 int attachmentHash = -1;
3499 if (attachments[i] ==
"shoulder")
3500 attachmentHash = GetShoulderAttachmentType();
3501 else if (attachments[i] ==
"body")
3502 attachmentHash = GetBodyAttachmentType();
3503 else if (attachments[i] ==
"back")
3504 attachmentHash = GetBackAttachmentType();
3506 SoundObjectBuilder soundBuilder = table.GetSoundBuilder(pUserInt, attachments[i], attachmentHash);
3508 if (soundBuilder != NULL)
3510 SoundObject soundObject = soundBuilder.BuildSoundObject();
3511 if (soundObject != NULL)
3513 AttenuateSoundIfNecessary(soundObject);
3522 if (m_ClimbingLadderType ==
"wood")
3524 soundObjectBuilder.AddVariable(
"laddertype", 1);
3528 soundObjectBuilder.AddVariable(
"laddertype", 0);
3535 soundObjectBuilder.AddVariable(
"bare", 1);
3536 soundObjectBuilder.AddVariable(
"sneakers", 0);
3537 soundObjectBuilder.AddVariable(
"boots", 0);
3541 soundObjectBuilder.AddVariable(
"bare", 0);
3542 soundObjectBuilder.AddVariable(
"sneakers", 1);
3543 soundObjectBuilder.AddVariable(
"boots", 0);
3547 soundObjectBuilder.AddVariable(
"bare", 0);
3548 soundObjectBuilder.AddVariable(
"sneakers", 0);
3549 soundObjectBuilder.AddVariable(
"boots", 1);
3556 DayZPlayerTypeAnimTable table = type.GetSoundTable();
3557 AnimSoundEvent soundEvent;
3560 soundEvent = table.GetSoundEvent(pUserInt);
3563 if (soundEvent != NULL)
3565 if (!
GetGame().IsDedicatedServer())
3568 if (GetCommand_Ladder())
3570 SetVariablesLadderSoundObjectBuilder(objectBuilder);
3572 objectBuilder.AddEnvSoundVariables(
GetPosition());
3574 SoundObject soundObject = objectBuilder.BuildSoundObject();
3575 if (soundObject != NULL)
3577 AttenuateSoundIfNecessary(soundObject);
3580 if (pUserString ==
"StopOnAnimEnd")
3581 m_PerformedActionSounds.Insert(sound);
3587 if (soundEvent.m_NoiseParams != NULL)
3601 DayZPlayerTypeVoiceSoundLookupTable table = type.GetVoiceSoundLookupTable();
3609 if (mask || head_gear)
3611 string category_mask;
3612 string category_headgear;
3615 int priority_headgear;
3619 category_mask = mask.ConfigGetString(
"soundVoiceType");
3620 priority_mask = mask.ConfigGetInt(
"soundVoicePriority");
3624 category_headgear = head_gear.ConfigGetString(
"soundVoiceType");
3625 priority_headgear = head_gear.ConfigGetInt(
"soundVoicePriority");
3628 if (priority_headgear >= priority_mask && category_headgear !=
"")
3630 category = category_headgear;
3634 category = category_mask;
3649 int maleVoiceType = 0;
3650 int femaleVoiceType = 0;
3651 if (player.IsMale())
3653 maleVoiceType = player.GetVoiceType();
3657 femaleVoiceType = player.GetVoiceType();
3660 soundBuilder.AddVariable(
"male", maleVoiceType);
3661 soundBuilder.AddVariable(
"female", femaleVoiceType);
3664 SoundObject soundObject = soundBuilder.BuildSoundObject();
3665 if (soundObject != NULL)
3667 AttenuateSoundIfNecessary(soundObject);
3668 wave =
PlaySound(soundObject, soundBuilder);
3686 bool restrained = IsRestrained();
3687 bool unconscious = IsUnconscious();
3690 if (ib && (
PlayerBase.DEBUG_INVENTORY_ACCESS || !IsAlive() || restrained || unconscious || ib.CanBeMovedOverride()))
3706 return CheckForTakeItem(item);
3719 if (!IsAlive() || player.IsUnconscious())
3729 super.OnRPC(sender, rpc_type, ctx);
3731 if (rpc_type ==
ERPCs.RPC_DAYZPLAYER_DEBUGSERVERWALK)
3733 Print(
"ERPCs.RPC_DAYZPLAYER_DEBUGSERVERWALK");
3735 Param1<bool> rp =
new Param1<bool>(
false);
3738 GetInputController().OverrideMovementSpeed(rp.param1, 1);
3739 GetInputController().OverrideAimChangeX(rp.param1, 0.01);
3750 HumanCommandFall fall = GetCommand_Fall();
3754 return fall.PhysicsLanded();
3765 HumanCommandFall fall = GetCommand_Fall();
3769 fall.Land(fallDamageData.m_LandType);
3785 if (!m_MoveSettings)
3787 if (m_MoveSettings.m_fSlidingPoseAngle != value)
3789 m_MoveSettings.m_fSlidingPoseAngle = value;
3790 StartCommand_Move();
3805 return m_PlayerSelected;
3824 void OnLadder(
float delta_time, HumanMovementState pState);
3836 if (GetParent() == other)
3844 RegisterTransportHit(transport);
3853 soundObject.SetKind(
WaveKind.WAVEATTALWAYS);
3857 soundObject.SetKind(
WaveKind.WAVEEFFECTEX);
3866 m_HandheldOpticsInUse = state;
3871 return m_HandheldOpticsInUse;
3889 return !item.IsHeavyBehaviour() || (item.IsHeavyBehaviour() && DayZPlayerUtils.PlayerCanChangeStance(
this,
DayZPlayerConstants.STANCEIDX_ERECT));
3894 return CanPickupHeavyItem(item1) && CanPickupHeavyItem(item2);
3911 EntityAI itemInHands = inventory.GetEntityInHands();
3916 preferredOptics = opticsInHands;
3923 preferredOptics = weaponInHands.GetAttachedOptics();
3932 optics.Insert(preferredOptics);
3936 EntityAI nvAttachment = GetNVEntityAttached();
3939 bool blockedByOptics = preferredOptics && preferredOptics.IsInOptics() && !preferredOptics.
IsUsingOptics2DModel();
3940 if (!blockedByOptics &&
PlayerBase.Cast(
this).IsNVGWorking())
3942 NVGoggles nvg = NVGoggles.Cast(nvAttachment);
3959 private EntityAI GetNVEntityAttached()
3963 if (FindAttachmentBySlotName(
"Eyewear") && FindAttachmentBySlotName(
"Eyewear").FindAttachmentBySlotName(
"NVG"))
3965 entity = FindAttachmentBySlotName(
"Eyewear").FindAttachmentBySlotName(
"NVG");
3967 else if (FindAttachmentBySlotName(
"Headgear") && FindAttachmentBySlotName(
"Headgear").FindAttachmentBySlotName(
"NVG"))
3969 entity = FindAttachmentBySlotName(
"Headgear").FindAttachmentBySlotName(
"NVG");
3975#ifdef DIAG_DEVELOPER
3978 return Weapon_Base.Cast(GetHumanInventory().CreateInHands(type));
3986 static const int DEAD_SCREEN_DELAY = 1000;
void syncDebugPrint(string s)
InventoryMode
NOTE: PREDICTIVE is not to be used at all in multiplayer.
override event void Read(PawnStateReader ctx)
override event void Write(PawnStateWriter ctx)
const int ECE_IN_INVENTORY
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
proto int GetTime()
returns mission time in milliseconds
Super root of all classes in Enforce script.
void ProcessSoundEvent(string pEventType, string pUserString, int pUserInt)
void DepleteStamina(EStaminaModifiers modifier, float dT=-1)
bool IsWeaponDebugEnabled()
void ResetWeaponRaiseProgress()
void SendSoundEventEx(EPlayerSoundEventID id, int param=0)
DayZPlayerImplementThrowing GetThrowing()
void LockControls(bool state)
override void StopDeathDarkeningEffect()
override bool IsShootingFromCamera()
bool m_IsUnconsciousFalling
bool m_HandheldOpticsInUse
ref PlayerSoundEventHandler m_PlayerSoundEventHandler
void OverrideShootFromCamera(bool pState)
WeaponManager GetWeaponManager()
void SendCompleteWeaponRaiseJuncture()
AnimBackType GetBackAttachmentType()
void ShowDeadScreen(bool show, float duration)
void OverrideSlidePoseAngle(float value)
movement sliding override, originally for FB gestures
bool IsWeaponRaiseCompleted()
ref DayZPlayerImplementJumpClimb m_JumpClimb
bool m_WeaponRaiseCompleted
measures time from the weapon raise start to complete raise (once per)
bool IsTryingHoldBreath()
void ResetDamageHitState(bool resetTimer)
void SetFallYDiff(float value)
bool IsLanded(int pCurrentCommandID)
void CompleteWeaponRaise()
float m_SprintedTimePerStanceMin
void OnSoundEvent(string pEventType, string pUserString, int pUserInt)
void ShowWeaponDebug(bool show)
bool m_ShouldBeUnconscious
void SetIronsights(bool value)
ref array< AbstractWave > m_PerformedActionSounds
void TriggerPullPlayerOutOfVehicle()
ref Timer m_ADSAutomationTimer
bool IsFBSymptomPlaying()
AbstractWave ProcessVoiceEvent(string pEventType, string pUserString, int pUserInt)
bool CheckForRespawn(EntityAI item)
override bool IsEyeZoom()
Legacy.
bool m_IsShootingFromCamera
void ProcessAttachmentEvent(string pEventType, string pUserString, int pUserInt)
void RequestSoundEventEx(EPlayerSoundEventID id, bool from_server_and_client=false, int param=0)
float GetSlidePoseAngle()
void OnParticleEvent(string pEventType, string pUserString, int pUserInt)
void ~DayZPlayerImplement()
bool HandleDamageHit(int pCurrentCommandID)
override array< InventoryItem > OnDrawOptics2D()
void SetIsInThirdPerson(bool state)
bool OnInputUserDataProcess(int userDataType, ParamsReadContext ctx)
void SetSuicide(bool state)
bool m_CameraOpticsAimOverride
bool ModCommandHandlerBefore(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
void HandleWeapons(float pDt, Entity pInHands, HumanInputController pInputs, out bool pExitIronSights)
ref DayZPlayerMeleeFightLogic_LightHeavy m_MeleeFightLogic
void EOnContact(IEntity other, Contact extra)
void CheckAnimationOverrides()
AbstractWave PlaySound(SoundObject so, SoundObjectBuilder sob)
bool IsWeaponObstructionBlockingADS()
bool ProcessJumpOrClimb(float pDt, int pCurrentCommandID)
bool m_IsFireWeaponRaised
ref DayZPlayerImplementAiming m_AimingModel
void RequestSoundEvent(EPlayerSoundEventID id, bool from_server_and_client=false)
bool m_ProcessLiftWeaponState
string GetSurfaceType(SurfaceAnimationBone limbType)
ref DeathEffectTimer m_DeathEffectTimer
void SetClimbingLadderType(string value)
ref DayZPlayerImplementThrowing m_Throwing
override float GetCurrentWaterLevel()
bool ModCommandHandlerAfter(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
void HideClothing(ItemOptics optic, bool state)
bool CanPickupHeavyItemSwap(notnull EntityAI item1, notnull EntityAI item2)
override void SetCurrentWaterLevel(float pWaterLevel)
void TriggerPullPlayerOutOfVehicleImpl()
bool m_ContinueFirearmMelee
float m_fObstructionSmooth
bool m_TriggerPullPlayerOutOfVehicleSynch
bool IsAlreadyInFallingCommand(int pCurrentCommandID)
int m_LastCommandBeforeUnconscious
bool IsInFBEmoteState()
Checks if fullbody animation or specific locked state is active in emote manager.
bool CanConsumeStamina(EStaminaConsumers consumer)
Implementations only! - used on PlayerBase.
bool OnLand(int pCurrentCommandID, FallDamageData fallDamageData)
override void OnItemInHandsChanged()
ref DayZPlayerImplementMeleeCombat m_MeleeCombat
override int CameraHandler(int pCameraMode)
int m_DebugWeaponChangeShowSlot
override int GetEyeZoomLevel()
Transport GetTransportCache()
Get the transport that was cached when entering unconsciousness.
string m_DebugWeaponChangeItem
bool CanStartConsumingStamina(EStaminaConsumers consumer)
bool PlaySoundEvent(EPlayerSoundEventID id, bool from_anim_system=false, bool is_from_server=false)
bool ModCommandHandlerInside(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
override bool IsInThirdPerson()
void ProcessFeetDamageServer(int pUserInt)
void SetVariablesLadderSoundObjectBuilder(SoundObjectBuilder soundObjectBuilder)
DayZPlayerImplementMeleeCombat GetMeleeCombat()
void SetHandheldOpticsInUse(bool state)
ref array< ref SyncHitInfo > m_SyncedHitDataArray
void OnSyncJuncture(int pJunctureID, ParamsReadContext pCtx)
DayZPlayerImplementFallDamage GetFallDamage()
ref WeaponDebug m_WeaponDebug
float m_LastHeadingAngleBlock
void OnLadder(float delta_time, HumanMovementState pState)
called every command handler tick when player is on ladder
void AttenuateSoundIfNecessary(SoundObject soundObject)
bool m_ProcessWeaponRaiseCompleted
void EvaluateDamageHit(int pCurrentCommandID)
Must be ran at the start of CommandHandler before Jump is triggered.
void OnMovementChanged()
Event, called when HumanMovementState.m_iMovement changes...walk, run, sprint, etc....
bool CanClimb(int climbType, SHumanCommandClimbResult climbRes)
override bool HeadingModel(float pDt, SDayZPlayerHeadingModel pModel)
is replayed after correction when 'NetworkRewindType.REPLAY' is used
void SetOptics(bool value)
bool IsInFullbodyDamageAnimation()
void SetReturnToOptics(bool state)
ref Timer m_FightEndBlendTimer
bool PlaySoundEventType(ESoundEventType soundType, int soundEventID, int param=0)
Handle sound event by respective sound handler based on its type.
float m_LastHeadingAngleBlock2
bool m_isFBsymptomPlaying
override void OnInputForRemote(ParamsReadContext ctx)
override void EEHitBy(TotalDamageResult damageResult, int damageType, EntityAI source, int component, string dmgZone, string ammo, vector modelPos, float speedCoef)
event from damage system
override void EEKilled(Object killer)
string m_ClimbingLadderType
float m_ProcessObstructWeapon
AnimRangedWeaponType GetShoulderAttachmentType()
void CommandHandlerDebug(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
int GetTypeOfDeath(int pCurrentCommandID)
ref DayZPlayerImplementFallDamage m_FallDamage
int m_ActionSoundCategoryHash
void SendDeathJuncture(int pAnimTypeDeath, float pAnimHitDirDeath)
bool IsHandheldOpticsInUse()
bool m_CameraEyeZoom
DEPRECATED.
override void OnVariablesSynchronized()
int m_LastSurfaceUnderHash
AnimBootsType GetBootsType()
float GetWeaponObstruction()
bool m_IsTryingHoldBreath
void SimulateDeath(bool state)
DayZPlayerInventory GetDayZPlayerInventory()
bool EvaluateDamageHitAnimation(TotalDamageResult pDamageResult, int pDamageType, EntityAI pSource, string pComponent, string pAmmoType, vector pModelPos, out int pAnimType, out float pAnimHitDir, out bool pAnimHitFullbody)
selects animation type and direction based on damage system data
bool IsFireWeaponRaised()
bool HandleDeath(int pCurrentCommandID)
float m_ObstructWeapon_player
void DayZPlayerImplement()
constructor
bool CheckForTakeItem(EntityAI item)
override string GetDebugText()
AnimUpperBodyType GetBodyAttachmentType()
void ProcessWeaponEvent(string pEventType, string pUserString, int pUserInt)
bool CanPickupHeavyItem(notnull EntityAI item)
-------------— Checks if player can pick up heavy item ----------------------—
bool m_ProcessFirearmMeleeHit
SHumanCommandMoveSettings m_MoveSettings
void OnJumpEnd(int pLandType=0)
void AddNoise(NoiseParams noisePar, float noiseMultiplier=1.0)
DayZPlayerImplementAiming GetAimingModel()
float m_DeathDarkeningCurrentTime
bool PlaySoundEventEx(EPlayerSoundEventID id, bool from_anim_system=false, bool is_from_server=false, int param=0)
bool CheckForDropItem(EntityAI item)
void HandleOptic(notnull ItemOptics optic, bool inHands, HumanInputController pInputs, out bool pExitOptics)
bool EvaluateDeathAnimation(int pDamageType, EntityAI pSource, string pAmmoType, out int pAnimType, out float pAnimHitDir)
selects animation type and direction based on damage system data
void OnStepEvent(string pEventType, string pUserString, int pUserInt)
void ResetDeathStartTime()
override bool AimingModel(float pDt, SDayZPlayerAimingModel pModel)
ref ReplaceSoundEventHandler m_ReplaceSoundEventHandler
DayZPlayerMeleeFightLogic_LightHeavy GetMeleeFightLogic()
void SendSoundEvent(EPlayerSoundEventID id)
void SwitchOptics(ItemOptics optic, bool state)
void OnInputUserDataReceived(ParamsReadContext ctx)
override void CommandHandler(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
override void OnInputFromServer(ParamsReadContext ctx)
ref DayZPlayerImplementSwimming m_Swimming
void SetDeathDarknessLevel(float duration, float tick_time)
void DepleteStaminaEx(EStaminaModifiers modifier, float dT=-1, float coef=1.0)
ECameraZoomType m_CameraEyeZoomLevel
Transport m_TransportCache
at which point does the stabilization start to get affected
static bool NoHeading(float pDt, SDayZPlayerHeadingModel pModel, out float pLastHeadingDiff)
inventory for plain man/human
HumanInventory... with FSM (synchronous, no anims)
provides access to slot configuration
bool IsUsingOptics2DModel()
Returns whether this ItemOptics uses the 2D optics model.
static void PlayVegetationCollideParticles(Object object, DayZPlayerImplement player)
static void SetMultiplayState(bool state)
The class that will be instanced (moddable)
Serialization general interface. Serializer API works with:
Native class for boats - handles physics simulation.
script counterpart to engine's class Weapon
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DamageType
exposed from C++ (do not change)
bool ModCommandHandlerInside(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
proto native void ResetDeathCooldown()
bool ModCommandHandlerBefore(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
bool ModCommandHandlerAfter(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
proto native void SetVerticalMinimumAimLimit(float value)
sets vertical minimum aim limit for a player
void ForceStandUpForHeavyItems(notnull EntityAI item)
-------------— Forces player to stand up when swapping to heavy item ----------------------—
DayZPlayerInstanceType
defined in C++
proto native DayZPlayerType GetDayZPlayerType()
returns appropriate DayZPlayerType
proto native DayZPlayerInstanceType GetInstanceType()
proto native float IsPlayerSpeaking()
-------------— speaking anim ----------------------—
DayZPlayerConstants
defined in C++
int GetEyeZoomLevel()
returns eye zoom level, uses ECameraZoomType values
proto native bool IsPlayerInStance(int pStanceMask)
-------------— camera additiona functions ----------------------—
ref HumanMovementState m_MovementState
movement state
class DeathEffectTimer extends Timer OnSimulationEnd
ref DayZPlayerImplementMeleeCombat m_MeleeCombat
void DayZPlayerMeleeFightLogic_LightHeavy(DayZPlayerImplement player)
bool OnInputUserDataProcess(int userDataType, ParamsReadContext ctx)
bool IsProcessing()
returns true when FP is heating or cooling
proto native CGame GetGame()
void Error(string err)
Messagebox with error message.
proto void Print(void var)
Prints content of variable to console/log.
array< string > TStringArray
EntityEvent
Entity events for event-mask, or throwing event from code.
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
class AbstractSoundScene SoundObjectBuilder(SoundParams soundParams)
class JsonUndergroundAreaTriggerData GetPosition
class SoundObject SoundParams(string name)
void Stop()
Stops all elements this effect consists of.
class SHumanGlobalSettings SHumanCommandMoveSettings()
class BoxCollidingParams component
ComponentInfo for BoxCollidingResult.
class NoiseSystem NoiseParams()
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor)
void PlayerSoundEventHandler(PlayerBase player)
override void OnRPC(ParamsReadContext ctx)
void PluginDayzPlayerDebug()
PluginManager GetPluginManager()
Returns registred plugin by class type, better is to use global funtion GetPlugin(typename plugin_typ...
void ReplaceSoundEventHandler(PlayerBase player)