DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
ActionUnfoldMap.c
Go to the documentation of this file.
2{
8
10 {
14 }
15
17 {
19 {
21 }
22 else
23 {
24 GetGame().GetMission().RemoveActiveInputExcludes({"loopedactions"}, false);
25 }
26 GetGame().GetMission().RemoveActiveInputRestriction(EInputRestrictors.MAP);
27
29 return;
30
31 ItemMap chernomap = ItemMap.Cast(m_ActionData.m_Player.GetItemInHands());
32 if (chernomap && m_ActionData.m_Player.IsMapOpen())
33 {
34 chernomap.SetMapStateOpen(false, m_ActionData.m_Player);
35 }
36 }
37
38 override void SetActionData(ActionData action_data )
39 {
40 m_ActionData = action_data;
41 m_InitMovementState = m_ActionData.m_Player.m_MovementState.m_iStanceIdx;
42 }
43
44 bool CancelCondition( bool pEnable )
45 {
46 return m_CancelCondition;
47 }
48
49 override void OnStateChange(int pOldState, int pCurrentState)
50 {
52 return;
53
54 if ( ( pOldState == STATE_LOOP_IN && pCurrentState == STATE_LOOP_LOOP ) && !m_HasReceivedEvent )
55 {
56 m_CancelCondition = true;
57 }
58 }
59
60 override void OnAnimationEvent(int pEventID)
61 {
63 return;
64
65 switch (pEventID)
66 {
67 case UA_ANIM_EVENT:
68 m_HasReceivedEvent = true;
69 m_FinalMovementState = m_ActionData.m_Player.m_MovementState.m_iStanceIdx;
70
71 if ( StateCheck() )
72 {
74 m_CancelCondition = false;
75 }
76 else
77 {
78 m_CancelCondition = true;
79 }
80 break;
81 }
82 }
83
84 override void OnFinish(bool pCanceled)
85 {
87 {
90
91 if ( (!GetGame().IsDedicatedServer()) && GetGame().GetUIManager() && GetGame().GetUIManager().IsMenuOpen(MENU_MAP) )
92 {
94 }
95
99
100 m_ActionData.m_Player.SetMapClosingSyncSet(false); //reset
101
102 ItemMap chernomap = ItemMap.Cast(m_ActionData.m_Player.GetItemInHands());
103 if (chernomap && m_ActionData.m_Player.IsMapOpen())
104 {
105 chernomap.SetMapStateOpen(false, m_ActionData.m_Player);
106 }
107
108 if (action)
109 action.End(m_ActionData);
110 }
111 }
112
114 {
115 if (m_ActionData.m_Player.IsSwimming() || m_ActionData.m_Player.IsClimbing() || m_ActionData.m_Player.IsFalling() || m_ActionData.m_Player.IsClimbingLadder() || m_ActionData.m_Player.IsUnconscious() || m_ActionData.m_Player.IsRestrained())
116 return;
117
119 return;
120
121 ItemMap chernomap = ItemMap.Cast(m_ActionData.m_Player.GetItemInHands());
122 if (chernomap && !m_ActionData.m_Player.IsMapOpen() && !m_MapFolding)
123 {
124 chernomap.SetMapStateOpen(true, m_ActionData.m_Player);
125
126 if (!GetGame().IsMultiplayer() || GetGame().IsServer())
127 {
128 //chernomap.SyncMapMarkers();
129 }
130
131 if (!GetGame().IsDedicatedServer())
132 {
133 UIManager m_UIManager;
134 UIScriptedMenu mapMenu;
135 m_UIManager = GetGame().GetUIManager();
136 m_UIManager.CloseAll();
138 {
139 mapMenu = m_UIManager.EnterScriptedMenu(MENU_MAP, null);
140 mapMenu.InitMapItem(chernomap);
141 mapMenu.LoadMapMarkers();
143 }
144 else
145 {
146 GetGame().GetMission().AddActiveInputExcludes({"loopedactions"});
147 }
148
149 GetGame().GetMission().AddActiveInputRestriction(EInputRestrictors.MAP);
150 }
151 }
152 else if (chernomap && m_ActionData.m_Player.IsMapOpen())
153 {
154 chernomap.SetMapStateOpen(false, m_ActionData.m_Player);
155 m_MapFolding = true;
156 m_ActionData.m_Player.SetMapOpen(false);
157 }
158 }
159
161 {
163 }
164}
165
167{
168 void ActionUnfoldMap()
170 m_Text = "#unfold_map";
173 override bool IsInstant()
174 {
175 return false;
176 }
177
179 {
183
184 override bool HasTarget()
185 {
186 return false;
187 }
188
189 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
190 {
191 if (player.m_hac || player.IsMapOpen())
192 {
193 return false;
194 }
195 return true;
196 }
197
198 override int GetActionCategory()
199 {
200 return AC_SINGLE_USE;
201 }
202
203 override void OnStartClient(ActionData action_data)
205 OpenMap(action_data);
206 }
207
208 override void OnStartServer( ActionData action_data )
209 {
210 OpenMap(action_data);
211 ItemMap chernomap = ItemMap.Cast(action_data.m_MainItem);
212 chernomap.SyncMapMarkers();
213 }
214
215 override void OnEndRequest(ActionData action_data)
216 {
217 action_data.m_Callback.InternalCommand(DayZPlayerConstants.CMD_ACTIONINT_END);
218 action_data.m_State = UA_FINISHED;
219 }
220
221 override void Interrupt(ActionData action_data)
222 {
223 if ( action_data.m_Player.m_hac )
224 {
225 action_data.m_Player.m_hac.m_MapFolding = true;
226 action_data.m_Player.m_hac.PerformMapChange();
227 }
228
229 super.Interrupt(action_data);
230
231 if ( action_data.m_Callback )
232 {
233 action_data.m_Callback.Cancel();
234 }
235 else
236 {
237 End( action_data );
238 }
239
240 action_data.m_State = UA_INTERRUPT;
241 }
242
243 void OpenMap( ActionData action_data )
244 {
245 if (!action_data.m_Player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_PRONE))
246 {
247 action_data.m_Player.m_hac = ActionUnfoldMapCB.Cast(action_data.m_Player.AddCommandModifier_Action(DayZPlayerConstants.CMD_ACTIONMOD_VIEWMAP,ActionUnfoldMapCB));
248 }
249 else
251 action_data.m_Player.m_hac = ActionUnfoldMapCB.Cast(action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_VIEWMAP,ActionUnfoldMapCB,GetStanceMask(action_data.m_Player)));
252 }
253
254 // sets player for associated callback to use
255 if (action_data.m_Player.m_hac)
256 {
257 action_data.m_Player.m_hac.SetActionData(action_data);
258 action_data.m_Callback = action_data.m_Player.m_hac;
259 }
260 }
261};
const int AC_SINGLE_USE
Definition _constants.c:2
void CreateConditionComponents()
Definition ActionBase.c:218
bool HasTarget()
Definition ActionBase.c:232
int GetActionCategory()
Definition ActionBase.c:266
void OnStartClient(ActionData action_data)
ref CCIBase m_ConditionItem
Definition ActionBase.c:55
void OnStartServer(ActionData action_data)
ref CCTBase m_ConditionTarget
Definition ActionBase.c:56
void OnEndRequest(ActionData action_data)
Definition ActionBase.c:629
void ActionBase()
Definition ActionBase.c:73
protected bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Definition ActionBase.c:372
bool IsInstant()
Definition ActionBase.c:250
protected string m_Text
Definition ActionBase.c:49
void Interrupt()
class ActionTargets ActionTarget
ActionUnfoldMapCB ActionBaseCB ActionUnfoldMap()
void OpenMap(ActionData action_data)
class DayZCreatureAnimInterface RegisterAnimationEvent(string event_name, string function_name)
void End()
called on surrender end request end
int GetStanceMask()
protected ActionData m_ActionData
ItemBase m_MainItem
Definition ActionBase.c:28
PlayerBase m_Player
Definition ActionBase.c:33
ref ActionBase m_Action
Definition ActionBase.c:27
ActionBaseCB m_Callback
Definition ActionBase.c:29
ref CABase m_ActionComponent
Definition ActionBase.c:30
bool CancelCondition(bool pEnable)
override void OnAnimationEvent(int pEventID)
override void SetActionData(ActionData action_data)
override void OnStateChange(int pOldState, int pCurrentState)
override void OnFinish(bool pCanceled)
int Interrupt(ActionData action_data)
Definition CABase.c:34
proto native Mission GetMission()
proto native UIManager GetUIManager()
void RemoveActiveInputRestriction(int restrictor)
void AddActiveInputRestriction(int restrictor)
void AddActiveInputExcludes(array< string > excludes)
void RemoveActiveInputExcludes(array< string > excludes, bool bForceSupress=false)
deprecated
UIScriptedMenu FindMenu(int id)
Returns menu with specific ID if it is open (see MenuID)
Definition UIManager.c:161
proto native UIScriptedMenu EnterScriptedMenu(int id, UIMenuPanel parent)
Create & open menu with specific id (see MenuID) and set its parent.
bool CloseAll()
Close all opened menus.
Definition UIManager.c:80
override void LoadMapMarkers()
Definition MapMenu.c:302
override void InitMapItem(EntityAI item)
Definition MapMenu.c:147
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
proto native CGame GetGame()
const int MENU_MAP
Definition constants.c:169
const int UA_FINISHED
Definition constants.c:420
const int UA_ANIM_EVENT
Definition constants.c:427
const int UA_INTERRUPT
Definition constants.c:422
static const int STATE_LOOP_IN
looped state
Definition human.c:343
proto native void EnableCancelCondition(bool pEnable)
proto native void EnableStateChangeCallback()
enables state change callback OnStateChange
static const int STATE_LOOP_LOOP
Definition human.c:344