DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
PlayerSoundEventHandler.c
Go to the documentation of this file.
2{
19 MELEE_ATTACK_HEAVY
33 //--------------
34 // Count bellow, put enums above
35 //--------------
37}
38
39class PlayerSoundEventHandler extends SoundEventHandler
40{
42 const int SOUND_EVENTS_MAX = EPlayerSoundEventID.ENUM_COUNT;
47
48
50 {
51 m_Player = player;
52
53 if(!m_UpdateTimer && !m_Player.IsControlledPlayer())
54 {
55 m_UpdateTimer = new Timer();
56 m_UpdateTimer.Run(1, this, "OnTick", null, true);//ticking for remotes, the controlled player is ticking on command handler at higher intervals
57 }
58
61 RegisterState(new FatigueSoundEvent());
69 RegisterState(new DamageHeavySoundEvent());
75 RegisterState(new MeleeAttackHeavyEvent());
81 RegisterState(new HotSoundEvent());
84 RegisterState(new StaminaLowFilterLower());
86 RegisterState(new DrowningEvent2());
89
90
91 }
92
94 {
95 int index = state.GetSoundEventID();
96 m_AvailableStates[index] = state;
97 m_ConfigIDToScriptIDmapping.Insert(state.GetSoundVoiceAnimEventClassID(),index);
98 }
99
100
101 void OnTick(float delta_time)
102 {
103 if (m_CurrentState)
104 {
105 if( m_CurrentState.IsFinished())
106 m_CurrentState = null;
107 else
108 m_CurrentState.OnTick(delta_time);
109 }
110 }
111
112 int ConvertAnimIDtoEventID(int anim_id)
113 {
114 return m_ConfigIDToScriptIDmapping.Get(anim_id);
115 }
116
118 {
119 return m_AvailableStates[id].GetSoundEventType();
120 }
121
123 {
125 {
126 return m_CurrentState.GetSoundEventID();
127 }
128 return -1;
129 }
130
132 {
134 {
135 return m_CurrentState.GetSoundEventType();
136 }
137 return -1;
138 }
139
140 override bool PlayRequestEx(EPlayerSoundEventID id, bool sent_from_server = false, int param = 0)
141 {
142 if (id < 0 || id > (SOUND_EVENTS_MAX - 1))
143 {
144 Error("EPlayerSoundEventID out of bounds");
145 }
146
147 PlayerSoundEventBase requested_state = m_AvailableStates[id];
148 if ( sent_from_server && (param & EPlayerSoundEventParam.SKIP_CONTROLLED_PLAYER) && m_Player.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_CLIENT )
149 {
150 return false;
151 }
152
153 if ( !requested_state.CanPlay(m_Player) )
154 {
155 return false;
156 }
157
158 if (m_CurrentState)
159 {
160 if (param & EPlayerSoundEventParam.HIGHEST_PRIORITY)
161 {
162 m_CurrentState.Stop();
163 }
164 else
165 {
166 int current_type = m_CurrentState.GetSoundEventType();
167 //int requested_type = requested_state.GetSoundEventType();
168
169 if ( (requested_state.GetPriorityOverTypes() & current_type) == 0 )
170 {
171 return false;
172 }
173 if (!requested_state.HasPriorityOverCurrent(m_Player, id, current_type) )
174 {
175 return false;
176 }
177
178 m_CurrentState.Stop();
179 }
180 }
181 m_CurrentState = PlayerSoundEventBase.Cast(requested_state.ClassName().ToType().Spawn());
182 m_CurrentState.InitEx(m_Player, param);
183 if (m_CurrentState.Play())
184 {
185 m_CurrentState.OnPlay(m_Player);
186 }
187 return true;
188 }
189
190
191 override bool PlayRequest(EPlayerSoundEventID id, bool sent_from_server = false)
192 {
193 return PlayRequestEx(id, sent_from_server);
194 }
195
196}
class DamageSoundEvents extends PlayerSoundEventBase DamageLightSoundEvent()
class DrowningSoundEventBase extends PlayerSoundEventBase DrowningEvent1()
DayZPlayer m_Player
Definition Hand_Events.c:42
class HeatComfortEventsBase extends PlayerSoundEventBase FreezingSoundEvent()
class ExhaustedBreathSoundEvent extends HoldBreathSoundEventBase ReleaseBreathSoundEvent()
class HoldBreathSoundEventBase extends PlayerSoundEventBase HoldBreathSoundEvent()
void ExhaustedBreathSoundEvent()
ref InfectedSoundEventBase m_CurrentState
static ref InfectedSoundEventBase m_AvailableStates[SOUND_EVENTS_MAX]
override int GetCurrentStateEventID()
enum EInfectedSoundEventID SOUND_EVENTS_MAX
override int GetCurrentStateEventType()
void InjuryMediumSoundEvent()
class InjuryMediumSoundEvent extends InjurySoundEvents InjuryHeavySoundEvent()
class InjurySoundEvents extends PlayerSoundEventBase InjuryLightSoundEvent()
class JumpEventsBase extends PlayerSoundEventBase JumpSoundEvent()
Definition JumpEvents.c:35
class MeleeAttackSoundEvents extends PlayerSoundEventBase MeleeAttackLightEvent()
Definition MeleeAttack.c:33
class PickupHeavySoundEvent extends PlayerSoundEventBase ThirstSoundEvent()
Definition MiscEvents.c:14
void PickupHeavySoundEvent()
Definition MiscEvents.c:15
private void OnTick(PlayerBase player, float deltaT)
EPlayerSoundEventType
override bool PlayRequestEx(EPlayerSoundEventID id, bool sent_from_server=false, int param=0)
void RegisterState(PlayerSoundEventBase state)
static ref map< int, int > m_ConfigIDToScriptIDmapping
void PlayerSoundEventHandler(PlayerBase player)
@ EXHAUSTED_BREATH
@ STAMINA_UP_LIGHT
@ MELEE_ATTACK_LIGHT
@ STAMINA_LOW_FILTER_LOWER
@ STAMINA_NORMAL_DUMMY
@ STAMINA_LOW_FILTER_UPPER
@ STAMINA_DOWN_LIGHT
@ STAMINA_DOWN_HEAVY
@ STAMINA_LOW_FILTER_MID
@ STAMINA_UP_HEAVY
int ConvertAnimIDtoEventID(int anim_id)
protected ref Timer m_UpdateTimer
Definition RadialMenu.c:20
EAnimPlayState PlayRequest()
int GetSoundEventType()
void StaminaNormalDummy()
class StaminaDownHeavy extends StaminaSoundEventBase StaminaUpHeavy()
class StaminaUpLight extends StaminaSoundEventBase StaminaUpEnd()
void StaminaUpLight()
void StaminaLowFilterUpper()
class StaminaSoundEventBase extends PlayerSoundEventBase StaminaDownLight()
class StaminaLowFilterUpper extends StaminaLowFilterBase StaminaLowFilterMid()
void StaminaDownHeavy()
class SymptomSoundEventBase extends PlayerSoundEventBase CoughSoundEvent()
class LaugherSoundEvent extends SymptomSoundEventBase SneezeSoundEvent()
void LaugherSoundEvent()
override bool HasPriorityOverCurrent(PlayerBase player, EPlayerSoundEventID other_state_id, EPlayerSoundEventType type_other)
override bool CanPlay(PlayerBase player)
DayZPlayerInstanceType
defined in C++
void Error(string err)
Messagebox with error message.
Definition EnDebug.c:90