DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionBase.c
См. документацию.
15class ActionReciveData
16{
19}
20
27
28class ActionData
29{
30 void ActionData()
31 {
33 }
34
50}
51
53{
54 //STATIC DATA
55 protected int m_RefreshReservationTimerValue = 140;
56 // Configurable action parameters
57 protected string m_Sound; //sound played at the beggining of action
58 protected string m_Text;
59
60 protected bool m_LockTargetOnUse; //this parameter sets wheter player can perform actions on target while other player is already performing action on it. defaulted as true
61 protected bool m_FullBody; //tells whether action is full body or additive
62 protected int m_StanceMask;
63 protected ref TStringArray m_Sounds; //User action sound is picked from this array randomly
64 ref CCIBase m_ConditionItem; //Condition Component
65 ref CCTBase m_ConditionTarget; //Condition Component
67 protected int m_ActionID;
68 protected int m_VariantID;
71
72 //RUNTIME DATA
73 protected ref Param1<string> m_MessageParam; //used for passing messages from server to client
74 //protected ref Param2<int,int> m_MessagesParam;
75
76 //SOFT SKILLS
77 protected float m_SpecialtyWeight;
78
79 //-----------------------------------------------------
80 // Action events and methods
81 //-----------------------------------------------------
82 void ActionBase()
83 {
84 // definable
85 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_PRONE;
86 m_FullBody = false;
87 m_Sound = "";
88 m_Text = "default action text";
90 // dont override
91 m_MessageParam = new Param1<string>("");
92 //m_MessagesParam = new Param2<int,int>(0,0);
94 m_Input = null;
95 m_ActionID = 0;
97 }
98
100 {
101 return m_LockTargetOnUse;
102 }
103
105 {
106 m_ConditionMask = ActionConditionMask.ACM_NO_EXEPTION;
107 if (CanBeUsedInVehicle())
108 {
109 m_ConditionMask |= ActionConditionMask.ACM_IN_VEHICLE;
110 }
111
112 if (CanBeUsedOnLadder())
113 {
114 m_ConditionMask |= ActionConditionMask.ACM_ON_LADDER;
115 }
116
117 if (CanBeUsedSwimming())
118 {
119 m_ConditionMask |= ActionConditionMask.ACM_SWIMMING;
120 }
121
123 {
124 m_ConditionMask |= ActionConditionMask.ACM_RESTRAIN;
125 }
126
127 if (CanBeUsedRaised())
128 {
130 }
131
132 if (CanBeUsedOnBack())
133 {
135 }
136
137 if (CanBeUsedThrowing())
138 {
139 m_ConditionMask |= ActionConditionMask.ACM_THROWING;
140 }
141
142 if (CanBeUsedLeaning())
143 {
145 }
146
148 {
149 m_ConditionMask |= ActionConditionMask.ACM_BROKEN_LEGS;
150 }
151
153 m_ConditionMask |= ActionConditionMask.ACM_IN_FREELOOK;
154 }
155
156 bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL )
157 {
158 action_data = CreateActionData();
159 action_data.m_Action = this;
160 action_data.m_Player = player;
161 action_data.m_Target = target;
162 action_data.m_MainItem = item;
163 action_data.m_PossibleStanceMask = GetStanceMask(player);
164 action_data.m_ReservedInventoryLocations = new array<ref InventoryLocation>;
165 action_data.m_RefreshReservationTimer = m_RefreshReservationTimerValue;
166 action_data.m_WasExecuted = false;
167 action_data.m_WasActionStarted = false;
168 action_data.m_ReciveEndInput = false;
169
170 ActionReciveData action_recive_data = player.GetActionManager().GetReciveData();
171 if ( action_recive_data )
172 {
173 HandleReciveData(action_recive_data,action_data);
174
176 {
177 if ( player.GetItemInHands() != action_data.m_MainItem )
178 {
179 return false;
180 }
181 }
182 }
183
184 if ( !Post_SetupAction( action_data ) )
185 return false;
186
187 if ( (!GetGame().IsDedicatedServer()) && !IsInstant() )
188 {
189 if (!InventoryReservation(action_data))
190 {
191 ClearInventoryReservationEx(action_data);
192 return false;
193 }
194
196 {
197 for ( int i = 0; i < action_data.m_ReservedInventoryLocations.Count(); i++)
198 {
199 Debug.ActionLog( InventoryLocation.DumpToStringNullSafe( action_data.m_ReservedInventoryLocations[i] ), action_data.m_Action.ToString() , "n/a", "LockInventoryList", action_data.m_Player.ToString() );
200 }
201 }
202 }
203
204 return true;
205 }
206
207 bool Post_SetupAction( ActionData action_data )
208 {
209 return true;
210 }
211
212 void ActionCleanup( ActionData action_data )
213 {}
214
215 typename GetInputType()
216 {
217 return DefaultActionInput;
218 }
219
221 {
222 m_Input = ai;
223 }
224
226 {
227 return new ActionData;
228 }
229
230 void CreateConditionComponents() //Instantiates components, called once from ActionManager on actions construction
231 {
234 }
235
237 {
238 return null;
239 }
240
245 {
246 return true;
247 }
248
251 {
252 return true;
253 }
254
255 //Action isn't synchronize to server
256 bool IsLocal()
257 {
258 return false;
259 }
260
261 //Action not using animation/callback action are executed instantly (OnStart)
263 {
264 return false;
265 }
266
269 {
270 return false;
271 }
272
274 {
275 return true;
276 }
277
279 {
280 return AC_UNCATEGORIZED;
281 }
282
283 bool IsEat()
284 {
285 return false;
286 }
287
288 bool IsDrink()
289 {
290 return false;
291 }
292
294 {
295 return false;
296 }
297
298 string GetText() //text game displays in HUD hint
299 {
300 return m_Text;
301 }
302
304 {
305 return false;
306 }
307
309 {
310 return false;
311 }
312
314 {
316 }
317
319 {
320 return false;
321 }
322
324 {
325 return false;
326 }
327
329 {
330 return false;
331 }
332
334 {
335 return false;
336 }
337
339 {
340 return false;
341 }
342
344 {
345 return false;
346 }
347
349 {
350 return false;
351 }
352
354 {
355 return false;
356 }
357
359 {
360 return true;
361 }
362
364 {
365 return true;
366 }
367
369 {
370 return true;
371 }
372
375 {
376 return false;
377 }
378
380 {
381 return true;
382 }
383
385 {
386 return true;
387 }
388
394 {
395 return false;
396 }
397
398 protected bool ActionConditionContinue(ActionData action_data) //condition for action
399 {
400 return ActionCondition(action_data.m_Player,action_data.m_Target,action_data.m_MainItem);
401 }
402
403 protected bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item) //condition for action
404 {
405 return true;
406 }
407
414 string GetTargetName(PlayerBase player, ActionTarget target)
415 {
416 return string.Empty;
417 }
418
419 void ApplyModifiers(ActionData action_data);
420
425
427 {
428 int componentIndex = -1;
429 int proxyBoneIdx = -1;
430 vector cursorHitPos = vector.Zero;
431
432 array<string> selectionNames = new array<string>();
433
434 Object targetObject = null;
435 Object targetParent = null;
436
437 if (UseMainItem())
438 {
439 ctx.Write(action_data.m_MainItem);
440 }
441
442 if (HasTarget() && !IsUsingProxies())
443 {
444 // callback data
445 targetObject = action_data.m_Target.GetObject();
446 ctx.Write(targetObject);
447 targetParent = action_data.m_Target.GetParent();
448 ctx.Write(targetParent);
449 componentIndex = action_data.m_Target.GetComponentIndex();
450 ctx.Write(componentIndex);
451 cursorHitPos = action_data.m_Target.GetCursorHitPos();
452 ctx.Write(cursorHitPos);
453 }
454 else if( HasTarget() && IsUsingProxies() )
455 {
458 Entity entParent = Entity.Cast(action_data.m_Target.GetParent());
459 if (entParent)
460 {
461 action_data.m_Target.GetObject().GetActionComponentNameList(action_data.m_Target.GetComponentIndex(), selectionNames);
462 for (int s = 0; s < selectionNames.Count(); s++)
463 {
464 proxyBoneIdx = entParent.GetBoneIndex(selectionNames[s]);
465 if( proxyBoneIdx > -1 )
466 {
467 break;
468 }
469 }
470 }
471
472 ctx.Write(proxyBoneIdx);
473 targetParent = action_data.m_Target.GetParent();
474 ctx.Write(targetParent);
475 componentIndex = action_data.m_Target.GetComponentIndex();
476 ctx.Write(componentIndex);
477 cursorHitPos = action_data.m_Target.GetCursorHitPos();
478 ctx.Write(cursorHitPos);
479 }
480 }
481
482 bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data )
483 {
484 if ( !action_recive_data )
485 {
486 action_recive_data = new ActionReciveData;
487 }
488 Object actionTargetObject = null;
489 Object actionTargetParent = null;
490 int componentIndex = -1;
491 int proxyBoneIdx = -1;
492 vector cursorHitPos = vector.Zero;
493 ItemBase mainItem = null;
494
495 ref ActionTarget target;
496
497 if ( UseMainItem() )
498 {
499 if ( !ctx.Read(mainItem) )
500 return false;
501 }
502
503 if ( HasTarget() && !IsUsingProxies() )
504 {
505 if ( !ctx.Read(actionTargetObject) )
506 return false;
507
508 if ( !ctx.Read(actionTargetParent))
509 return false;
510
511 if ( !ctx.Read(componentIndex) )
512 return false;
513
514 if ( !ctx.Read(cursorHitPos) )
515 return false;
516
517 target = new ActionTarget(actionTargetObject, actionTargetParent, componentIndex, cursorHitPos, 0);
518
519 action_recive_data.m_Target = target;
520 }
521 else if( HasTarget() && IsUsingProxies() )
522 {
523 if ( !ctx.Read(proxyBoneIdx) )
524 return false;
525
526 if ( !ctx.Read(actionTargetParent))
527 return false;
528
529 if ( !ctx.Read(componentIndex) )
530 return false;
531
532 if ( !ctx.Read(cursorHitPos) )
533 return false;
534
536 if ( proxyBoneIdx > -1 )
537 {
538 Entity entParent = Entity.Cast(actionTargetParent);
539
540 if (entParent)
541 {
542 actionTargetObject = entParent.GetBoneObject(proxyBoneIdx);
543 }
544 }
545 else
546 {
547 return false;
548 }
549
550 target = new ActionTarget(actionTargetObject, actionTargetParent, componentIndex, cursorHitPos, 0);
551
552 action_recive_data.m_Target = target;
553 }
554
555 action_recive_data.m_MainItem = mainItem;
556 return true;
557 }
558
559 void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
560 {
561 action_data.m_MainItem = action_recive_data.m_MainItem;
562
563 if(HasTarget())
564 {
565 if (action_recive_data.m_Target)
566 {
567 action_data.m_Target = action_recive_data.m_Target;
568 }
569 else
570 {
571 Error("Action target not created.");
572 action_data.m_Target = new ActionTarget(NULL, NULL, -1, vector.Zero, 0);
573 }
574 }
575 }
576
577 //----------------------------------------------------------------------------------------------
578 // Core methods don't override unless you know what you are doing
579 //----------------------------------------------------------------------------------------------
580 // COMMANDS -----------------------------------------------------------------------
581 protected int GetStanceMaskEx(PlayerBase player, ActionTarget target, ItemBase item)
582 {
583 return GetStanceMask(player);
584 }
585
586 protected int GetStanceMask(PlayerBase player)
587 {
588 if ( HasProneException() )
589 {
590 if ( player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_RAISEDERECT | DayZPlayerConstants.STANCEMASK_RAISEDCROUCH | DayZPlayerConstants.STANCEMASK_RAISEDPRONE))
591 return -1;
592 else if ( player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT))
593 return DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT;
594 else
595 return DayZPlayerConstants.STANCEMASK_PRONE;
596 }
597 return m_StanceMask;
598 }
599
600 protected int GetClosestPossibleStance(PlayerBase player, ActionTarget target, ItemBase item)
601 {
602 int stanceMask = GetStanceMaskEx(player, target, item);
603
604 if (player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_ERECT))
605 {
606 if (stanceMask & DayZPlayerConstants.STANCEMASK_ERECT)
607 return DayZPlayerConstants.STANCEMASK_ERECT;
608 else if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDERECT)
609 return DayZPlayerConstants.STANCEMASK_RAISEDERECT;
610 else if (stanceMask & DayZPlayerConstants.STANCEMASK_CROUCH)
611 return DayZPlayerConstants.STANCEMASK_CROUCH;
612 else if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDCROUCH)
613 return DayZPlayerConstants.STANCEMASK_RAISEDCROUCH;
614 else if (stanceMask & DayZPlayerConstants.STANCEMASK_PRONE)
615 return DayZPlayerConstants.STANCEMASK_PRONE;
616 else if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDPRONE)
617 return DayZPlayerConstants.STANCEMASK_RAISEDPRONE;
618 }
619
620 if (player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_RAISEDERECT))
621 {
622 if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDERECT)
623 return DayZPlayerConstants.STANCEMASK_RAISEDERECT;
624 else if (stanceMask & DayZPlayerConstants.STANCEMASK_ERECT)
625 return DayZPlayerConstants.STANCEMASK_ERECT;
626 else if (stanceMask & DayZPlayerConstants.STANCEMASK_CROUCH)
627 return DayZPlayerConstants.STANCEMASK_CROUCH;
628 else if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDCROUCH)
629 return DayZPlayerConstants.STANCEMASK_RAISEDCROUCH;
630 else if (stanceMask & DayZPlayerConstants.STANCEMASK_PRONE)
631 return DayZPlayerConstants.STANCEMASK_PRONE;
632 else if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDPRONE)
633 return DayZPlayerConstants.STANCEMASK_RAISEDPRONE;
634 }
635
636 if (player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_CROUCH))
637 {
638 if (stanceMask & DayZPlayerConstants.STANCEMASK_CROUCH)
639 return DayZPlayerConstants.STANCEMASK_CROUCH;
640 else if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDCROUCH)
641 return DayZPlayerConstants.STANCEMASK_RAISEDCROUCH;
642 else if (stanceMask & DayZPlayerConstants.STANCEMASK_ERECT)
643 return DayZPlayerConstants.STANCEMASK_ERECT;
644 else if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDERECT)
645 return DayZPlayerConstants.STANCEMASK_RAISEDERECT;
646 else if (stanceMask & DayZPlayerConstants.STANCEMASK_PRONE)
647 return DayZPlayerConstants.STANCEMASK_PRONE;
648 else if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDPRONE)
649 return DayZPlayerConstants.STANCEMASK_RAISEDPRONE;
650 }
651
652 if (player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_RAISEDCROUCH))
653 {
654 if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDCROUCH)
655 return DayZPlayerConstants.STANCEMASK_RAISEDCROUCH;
656 else if (stanceMask & DayZPlayerConstants.STANCEMASK_CROUCH)
657 return DayZPlayerConstants.STANCEMASK_CROUCH;
658 else if (stanceMask & DayZPlayerConstants.STANCEMASK_ERECT)
659 return DayZPlayerConstants.STANCEMASK_ERECT;
660 else if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDERECT)
661 return DayZPlayerConstants.STANCEMASK_RAISEDERECT;
662 else if (stanceMask & DayZPlayerConstants.STANCEMASK_PRONE)
663 return DayZPlayerConstants.STANCEMASK_PRONE;
664 else if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDPRONE)
665 return DayZPlayerConstants.STANCEMASK_RAISEDPRONE;
666 }
667
668 if (player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_PRONE))
669 {
670 if (stanceMask & DayZPlayerConstants.STANCEMASK_PRONE)
671 return DayZPlayerConstants.STANCEMASK_PRONE;
672 else if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDPRONE)
673 return DayZPlayerConstants.STANCEMASK_RAISEDPRONE;
674 else if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDCROUCH)
675 return DayZPlayerConstants.STANCEMASK_RAISEDCROUCH;
676 else if (stanceMask & DayZPlayerConstants.STANCEMASK_CROUCH)
677 return DayZPlayerConstants.STANCEMASK_CROUCH;
678 else if (stanceMask & DayZPlayerConstants.STANCEMASK_ERECT)
679 return DayZPlayerConstants.STANCEMASK_ERECT;
680 else if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDERECT)
681 return DayZPlayerConstants.STANCEMASK_RAISEDERECT;
682 }
683
684 if (player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_RAISEDPRONE))
685 {
686 if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDPRONE)
687 return DayZPlayerConstants.STANCEMASK_RAISEDPRONE;
688 else if (stanceMask & DayZPlayerConstants.STANCEMASK_PRONE)
689 return DayZPlayerConstants.STANCEMASK_PRONE;
690 else if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDCROUCH)
691 return DayZPlayerConstants.STANCEMASK_RAISEDCROUCH;
692 else if (stanceMask & DayZPlayerConstants.STANCEMASK_CROUCH)
693 return DayZPlayerConstants.STANCEMASK_CROUCH;
694 else if (stanceMask & DayZPlayerConstants.STANCEMASK_ERECT)
695 return DayZPlayerConstants.STANCEMASK_ERECT;
696 else if (stanceMask & DayZPlayerConstants.STANCEMASK_RAISEDERECT)
697 return DayZPlayerConstants.STANCEMASK_RAISEDERECT;
698 }
699
700 return -1;
701 }
702
703 protected bool IsFullBodyEx(PlayerBase player, ActionTarget target, ItemBase item)
704 {
705 return IsFullBody(player);
706 }
707
709 {
710 if ( HasProneException() )
711 {
712 return !( player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT) );
713 }
714 return m_FullBody;
715 }
716
717 // if it is set to true if action have special fullbody animation for prone and additive for crouch and erect
718 protected bool HasProneException()
719 {
720 return false;
721 }
722
723 // ACTION LOGIC -------------------------------------------------------------------
724 // called from actionmanager.c
725 void Start( ActionData action_data ) //Setup on start of action
726 {
727 action_data.m_State = UA_START;
728
730 {
731 Debug.ActionLog("Time stamp: " + action_data.m_Player.GetSimulationTimeStamp(), this.ToString() , "n/a", "OnStart", action_data.m_Player.ToString() );
732 }
733
734 OnStart(action_data);
735
736 if ( GetGame().IsServer() )
737 {
738 OnStartServer(action_data);
739
740 string soundCat = GetSoundCategory(action_data);
741 if (soundCat)
742 action_data.m_Player.SetSoundCategoryHash(soundCat.Hash());
743 }
744 else
745 {
746 OnStartClient(action_data);
747 }
748
749 InformPlayers(action_data.m_Player,action_data.m_Target,UA_START);
750 }
751
752 void End( ActionData action_data )
753 {
754 if ( action_data.m_Player )
755 {
756 OnEnd(action_data);
757
758 if ( GetGame().IsServer() )
759 {
760 OnEndServer(action_data);
761 }
762 else
763 {
764 OnEndClient(action_data);
765 }
766
767 action_data.m_Player.GetActionManager().OnActionEnd();
768 }
769 }
770
771 void Interrupt(ActionData action_data)
772 {
773 End(action_data);
774 }
775
776 void OnEndInput(ActionData action_data)
777 {}
778
779 void EndInput(ActionData action_data)
780 {
781 action_data.m_ReciveEndInput = true;
782 OnEndInput(action_data);
783 }
784
785 void OnEndRequest(ActionData action_data)
786 {}
787
788 void EndRequest(ActionData action_data)
789 {
790 OnEndRequest(action_data);
791 }
792
794 {
795 bool result = true;
796 PlayerBase target_player = PlayerBase.Cast(target.GetObject());
797
798 if (target_player)
799 {
800 result = !target_player.IsJumpInProgress();
801 result = result && !(target_player.GetCommand_Ladder() || (target_player.GetCommand_Vehicle() && !CanTargetBeInVehicle()) || target_player.GetCommand_Swim());
802 }
803
804 return result;
805 }
806
807 static int ComputeConditionMask( PlayerBase player, ActionTarget target, ItemBase item )
808 {
809 int mask = 0;
810 if ( player.GetCommand_Vehicle() )
811 {
812 mask |= ActionConditionMask.ACM_IN_VEHICLE;
813 }
814
815 if ( player.GetCommand_Ladder() )
816 {
817 mask |= ActionConditionMask.ACM_ON_LADDER;
818 }
819
820 if ( player.IsRestrained() )
821 {
822 mask |= ActionConditionMask.ACM_RESTRAIN;
823 }
824
825 if ( player.GetCommand_Swim() )
826 {
827 mask |= ActionConditionMask.ACM_SWIMMING;
828 }
829
830 if ( player.IsRaised() )
831 {
832 mask |= ActionConditionMask.ACM_RAISED;
833 }
834
835 if ( player.GetCommand_Move() && player.GetCommand_Move().IsOnBack() )
836 {
837 mask |= ActionConditionMask.ACM_ON_BACK;
838 }
839
840 if ( player.GetThrowing().IsThrowingModeEnabled())
841 {
842 mask |= ActionConditionMask.ACM_THROWING;
843 }
844
845 if (player.IsLeaning())
846 {
847 mask |= ActionConditionMask.ACM_LEANING;
848 }
849
850 if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
851 {
852 mask |= ActionConditionMask.ACM_BROKEN_LEGS;
853 }
854
855 if (player.GetInputController() && player.GetInputController().CameraIsFreeLook())
856 mask |= ActionConditionMask.ACM_IN_FREELOOK;
857
858 return mask;
859 }
860
861 bool Can( PlayerBase player, ActionTarget target, ItemBase item, int condition_mask )
862 {
863 if (( (condition_mask & m_ConditionMask) != condition_mask ) || ( !IsFullBodyEx(player, target, item) && !player.IsPlayerInStance(GetStanceMaskEx(player, target, item)) ) || player.IsRolling())
864 return false;
865
866 if (HasTarget())
867 {
868 if (!FirearmActionBase.Cast(this))
869 {
870 EntityAI entity = EntityAI.Cast(target.GetObject());
871 if (entity && !target.GetObject().IsMan())
872 {
873 Man man = entity.GetHierarchyRootPlayer();
874 if (man && man != player)
875 return false;
876 }
877 }
878
879 if (m_ConditionTarget && !m_ConditionTarget.Can(player, target))
880 return false;
881 }
882
883 if (m_ConditionItem && !m_ConditionItem.Can(player, item))
884 return false;
885
886 if (!ActionCondition(player, target, item))
887 return false;
888
889 if (IsFullBodyEx(player, target, item))
890 {
891 int nextStance = GetClosestPossibleStance(player, target, item);
892 int stanceIdx = DayZPlayerUtils.ConvertStanceMaskToStanceIdx(nextStance);
893 if (stanceIdx != -1 && !DayZPlayerUtils.PlayerCanChangeStance(player, stanceIdx ))
894 return false;
895 }
896
897 return true;
898 }
899
900 bool Can(PlayerBase player, ActionTarget target, ItemBase item)
901 {
902 int condition_mask = ComputeConditionMask(player, target, item);
903
904 return Can( player, target, item, condition_mask);
905 }
906
907 protected bool CanContinue( ActionData action_data )
908 {
909 if (!action_data.m_Player.IsPlayerInStance(action_data.m_PossibleStanceMask) || !m_ConditionItem || !m_ConditionItem.CanContinue(action_data.m_Player,action_data.m_MainItem) || !m_ConditionTarget || !m_ConditionTarget.CanContinue(action_data.m_Player,action_data.m_Target))
910 return false;
911
912 return ActionConditionContinue(action_data);
913 }
914
916 {
917 return m_VariantManager != null;
918 }
919
921 {
923 return m_VariantManager.GetActionsCount();
924
925 return 0;
926 }
927
929 {
931 return m_VariantManager.GetActions(variants);
932
933 return 0;
934 }
935
936 void SetVariantID(int ID)
937 {
938 m_VariantID = ID;
939 }
940
942 {
943 return m_VariantID;
944 }
945
946 void UpdateVariants(Object item, Object target, int componet_index)
947 {
948 if ( m_VariantManager )
949 {
950 m_VariantManager.UpdateVariants(item, target, componet_index);
951 }
952 }
953
955 {
956 if ( !m_VariantManager )
958 return m_VariantManager;
959 }
960
961 // Called when item changes location during performed action
964
965 // call only on client side for lock inventory before action
966 // return if has successfuly reserved inventory
968 {
969 if ((IsLocal() || !UseAcknowledgment()) && IsInstant())
970 return true;
971
972 //action_data.m_ReservedInventoryLocations = new array<ref InventoryLocation>;
973 bool success = true;
974 InventoryLocation targetInventoryLocation = NULL;
975 InventoryLocation handInventoryLocation = NULL;
976
977 // lock target if it has target
978 if (HasTarget())
979 {
980 ItemBase targetItem;
981 if ( ItemBase.CastTo(targetItem,action_data.m_Target.GetObject()) )
982 {
983 targetInventoryLocation = new InventoryLocation;
984 targetItem.GetInventory().GetCurrentInventoryLocation(targetInventoryLocation);
985 if ( action_data.m_Player.GetInventory().HasInventoryReservation( targetItem, targetInventoryLocation) )
986 {
987 success = false;
988 }
989 else
990 {
991 action_data.m_Player.GetInventory().AddInventoryReservationEx( targetItem, targetInventoryLocation, GameInventory.c_InventoryReservationTimeoutMS);
992 }
993 }
994 }
995
996 handInventoryLocation = new InventoryLocation;
997 handInventoryLocation.SetHands(action_data.m_Player,action_data.m_Player.GetItemInHands());
998
999 if (action_data.m_Player.GetInventory().HasInventoryReservation( action_data.m_Player.GetItemInHands(), handInventoryLocation))
1000 {
1001 if (HasTarget())
1002 {
1003 action_data.m_Player.GetInventory().ClearInventoryReservation(targetItem, targetInventoryLocation);
1004 }
1005
1006 success = false;
1007 }
1008 else
1009 {
1010 action_data.m_Player.GetInventory().AddInventoryReservationEx( action_data.m_Player.GetItemInHands(), handInventoryLocation, GameInventory.c_InventoryReservationTimeoutMS);
1011 }
1012
1013 if (success)
1014 {
1015 if (targetInventoryLocation)
1016 action_data.m_ReservedInventoryLocations.Insert(targetInventoryLocation);
1017
1018 if (handInventoryLocation)
1019 action_data.m_ReservedInventoryLocations.Insert(handInventoryLocation);
1020 }
1021
1022 return success;
1023 }
1024
1026 {
1027 if (action_data.m_ReservedInventoryLocations)
1028 {
1030 for ( int i = 0; i < action_data.m_ReservedInventoryLocations.Count(); i++)
1031 {
1032 il = action_data.m_ReservedInventoryLocations.Get(i);
1033 action_data.m_Player.GetInventory().ClearInventoryReservationEx( il.GetItem() , il );
1034 }
1035
1036 action_data.m_ReservedInventoryLocations.Clear();
1037 }
1038 }
1039
1041 {
1042 if (action_data.m_ReservedInventoryLocations)
1043 {
1045 for (int i = 0; i < action_data.m_ReservedInventoryLocations.Count(); i++)
1046 {
1047 il = action_data.m_ReservedInventoryLocations.Get(i);
1048 EntityAI entity = il.GetItem();
1049 action_data.m_Player.GetInventory().ExtendInventoryReservationEx(il.GetItem() , il, 10000);
1050 }
1051 }
1052 }
1053
1055 {
1056 bool accepted = true;
1057 if (HasTarget())
1058 {
1059 EntityAI targetEntity;
1060 if (EntityAI.CastTo(targetEntity,action_data.m_Target.GetObject()))
1061 {
1062 if (IsLockTargetOnUse())
1063 {
1064 InventoryLocation targetIl = new InventoryLocation();
1065 targetEntity.GetInventory().GetCurrentInventoryLocation(targetIl);
1066
1067 //Lock target
1068 if (!GetGame().AddInventoryJunctureEx(action_data.m_Player, targetEntity, targetIl, true, 10000))
1069 {
1070 accepted = false;
1071 }
1072 else
1073 {
1074 action_data.m_ReservedInventoryLocations.Insert(targetIl);
1075 }
1076 }
1077 }
1078 }
1079
1080 return accepted;
1081 }
1082
1084 {
1085 if (action_data.m_Player.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_SERVER)
1086 {
1087 if (action_data.m_ReservedInventoryLocations)
1088 {
1090 for ( int i = 0; i < action_data.m_ReservedInventoryLocations.Count(); i++)
1091 {
1092 il = action_data.m_ReservedInventoryLocations.Get(i);
1093 EntityAI entity = il.GetItem();
1094 if (entity)
1095 {
1096 GetGame().ClearJunctureEx(action_data.m_Player, entity);
1097 }
1098 }
1099
1100 action_data.m_ReservedInventoryLocations.Clear();
1101 }
1102 }
1103 }
1104
1106 {
1107 if (action_data.m_ReservedInventoryLocations)
1108 {
1110 for (int i = 0; i < action_data.m_ReservedInventoryLocations.Count(); i++)
1111 {
1112 il = action_data.m_ReservedInventoryLocations.Get(i);
1113 EntityAI entity = il.GetItem();
1114 if (entity)
1115 {
1116 GetGame().ExtendActionJuncture(action_data.m_Player, entity, 10000);
1117 }
1118 }
1119 }
1120 }
1121
1122 // action need first have permission from server before can start
1124 {
1125 return true;
1126 }
1127
1129 protected void InformPlayers( PlayerBase player, ActionTarget target, int state );
1130
1131 void SendMessageToClient( Object reciever, string message ) //sends given string to client, don't use if not nescessary
1132 {
1133 PlayerBase man;
1134 if (GetGame().IsServer() && Class.CastTo(man, reciever) && m_MessageParam && reciever.IsAlive() && message != "")
1135 {
1136 m_MessageParam.param1 = message;
1137 GetGame().RPCSingleParam(man, ERPCs.RPC_USER_ACTION_MESSAGE, m_MessageParam, true, man.GetIdentity());
1138 }
1139 }
1140
1141 // ActionCondition Rules
1142 // ------------------------------------------------------
1143 protected bool IsDamageDestroyed(ActionTarget target)
1144 {
1145 return target.GetObject() && target.GetObject().IsDamageDestroyed();
1146 }
1147
1148 protected bool IsBuilding(ActionTarget target)
1149 {
1150 return target.GetObject() && target.GetObject().IsBuilding();
1151 }
1152
1153 protected bool IsTransport(ActionTarget target)
1154 {
1155 return target.GetObject() && target.GetObject().IsTransport();
1156 }
1157
1158 protected bool IsInReach(PlayerBase player, ActionTarget target, float maxDistance = 1.0)
1159 {
1160 Object obj = target.GetObject();
1161 if (!obj)
1162 return false;
1163
1164 float distanceRoot, distanceHead;
1165 vector modelPos, worldPos, playerHeadPos;
1166
1167 // we're using sq distance in comparison
1168 maxDistance = maxDistance * maxDistance;
1169
1170 // get position of Head bone
1171 MiscGameplayFunctions.GetHeadBonePos(player, playerHeadPos);
1172
1173 array<string> componentNames = new array<string>();
1174 obj.GetActionComponentNameList(target.GetComponentIndex(), componentNames);
1175 foreach (string componentName : componentNames)
1176 {
1177 if (componentName.Contains("doorstwin"))
1178 continue;
1179
1180 modelPos = obj.GetSelectionPositionMS(componentName);
1181 worldPos = obj.ModelToWorld(modelPos);
1182
1183 break;
1184 }
1185
1186 distanceRoot = vector.DistanceSq(worldPos, player.GetPosition());
1187 distanceHead = vector.DistanceSq(worldPos, playerHeadPos);
1188
1189 return distanceRoot <= maxDistance || distanceHead <= maxDistance;
1190 }
1191 // ------------------------------------------------------
1192
1193
1194
1195 // SOUNDS ------------------------------------------------------
1196 SoundOnVehicle PlayActionSound( PlayerBase player )
1197 {
1198 if ( GetGame().IsServer() && player )
1199 {
1200 if ( m_Sound != "" )
1201 {
1202 return GetGame().CreateSoundOnObject(player, m_Sound, 6, false);
1203 }
1204 else if ( m_Sounds && m_Sounds.Count() > 0 )
1205 {
1206 int rand_num = Math.RandomInt(0, m_Sounds.Count());
1207 return GetGame().CreateSoundOnObject(player, m_Sounds.Get(rand_num), 6, false);
1208 }
1209 }
1210
1211 return NULL;
1212 }
1213
1215 {
1216 }
1217
1218 //sound category matches with a soundtable category in config, selects correct soundset
1219 string GetSoundCategory(ActionData action_data)
1220 {
1221 return "";
1222 }
1223
1224 // EVENTS ------------------------------------------------
1225 void OnUpdate(ActionData action_data)
1226 {}
1227
1228 void OnUpdateClient(ActionData action_data)
1229 {
1230 if ( !GetGame().IsDedicatedServer() )
1231 {
1232 if (action_data.m_RefreshReservationTimer > 0)
1233 {
1234 action_data.m_RefreshReservationTimer--;
1235 }
1236 else
1237 {
1238 action_data.m_RefreshReservationTimer = m_RefreshReservationTimerValue;
1239 RefreshReservations(action_data);
1240 }
1241 }
1242 }
1243
1244 void OnUpdateServer(ActionData action_data)
1245 {
1246 if (action_data.m_RefreshJunctureTimer > 0)
1247 {
1248 action_data.m_RefreshJunctureTimer--;
1249 }
1250 else
1251 {
1252 action_data.m_RefreshJunctureTimer = m_RefreshReservationTimerValue;
1253 RefreshActionJuncture(action_data);
1254 }
1255 }
1256
1257 void OnStart(ActionData action_data)
1258 {
1259 if (action_data.m_Player != NULL && action_data.m_Player.IsPlacingLocal() && !IsDeploymentAction())
1260 action_data.m_Player.PlacingCancelLocal();
1261 }
1262
1263 void OnStartClient(ActionData action_data)
1264 {}
1265
1266 void OnStartServer(ActionData action_data)
1267 {
1268
1269 }
1270
1271 void OnEnd(ActionData action_data)
1272 {
1273
1274 }
1275
1276 void OnEndClient(ActionData action_data)
1277 {}
1278
1279 void OnEndServer(ActionData action_data)
1280 {
1281 }
1282
1283 // SOFT SKILLS ------------------------------------------------
1285 {
1286 if(m_SpecialtyWeight == 0)
1287 {
1288#ifdef DEVELOPER
1289 //Print("UserAction does not use SoftSkills");
1290#endif
1291 }
1292
1293 return m_SpecialtyWeight;
1294 }
1295
1296 int GetState( ActionData action_data )
1297 {
1298 return action_data.m_State;
1299 }
1300
1301 float GetProgress( ActionData action_data )
1302 {
1303 return -1;
1304 }
1305
1306 float GetProgressWidgetMultiplier( ActionData action_data ) // override when action length is not supposed to be the same length as progress widget
1307 {
1308 return 1;
1309 }
1310
1312 {
1313 return m_Input;
1314 }
1315
1316 void SetID(int actionId)
1317 {
1318 m_ActionID = actionId;
1319 }
1320
1321 int GetID()
1322 {
1323 return m_ActionID;
1324 }
1325
1326 string GetAdminLogMessage(ActionData action_data)
1327 {
1328 return "";
1329 }
1330};
const int AC_UNCATEGORIZED
Определения _constants.c:1
ActionConditionMask
Определения ActionBase.c:2
@ ACM_THROWING
Определения ActionBase.c:10
@ ACM_NO_EXEPTION
Определения ActionBase.c:3
@ ACM_ON_LADDER
Определения ActionBase.c:5
@ ACM_SWIMMING
Определения ActionBase.c:6
@ ACM_RAISED
Определения ActionBase.c:8
@ ACM_LEANING
Определения ActionBase.c:11
@ ACM_IN_VEHICLE
Определения ActionBase.c:4
@ ACM_RESTRAIN
Определения ActionBase.c:7
@ ACM_ON_BACK
Определения ActionBase.c:9
@ ACM_BROKEN_LEGS
Определения ActionBase.c:12
@ ACM_IN_FREELOOK
Определения ActionBase.c:13
int m_PossibleStanceMask
Определения ActionBase.c:42
bool m_ReciveEndInput
Определения ActionBase.c:49
int m_RefreshReservationTimer
Определения ActionBase.c:44
ref ActionBase m_Action
Определения ActionBase.c:35
bool m_WasActionStarted
Определения ActionBase.c:48
bool m_WasExecuted
Определения ActionBase.c:47
int m_DelayedAnimationEventID
Определения ActionBase.c:46
ref array< ref InventoryLocation > m_ReservedInventoryLocations
Определения ActionBase.c:43
int m_RefreshJunctureTimer
Определения ActionBase.c:45
ref CABase m_ActionComponent
Определения ActionBase.c:38
ref ActionTarget m_Target
Определения ActionBase.c:18
ActionBase ActionData
Определения ActionBase.c:30
class ActionTargets ActionTarget
class BaitData m_MainItem
Определения ActionBase.c:36
void DayZPlayerUtils()
cannot be instantiated
Определения DayZPlayerUtils.c:465
eBrokenLegs
Определения EBrokenLegs.c:2
ERPCs
Определения ERPCs.c:2
EmoteCB m_Callback
Определения EmoteManager.c:111
class GP5GasMask extends MaskBase ItemBase
DayZPlayer m_Player
Определения Hand_Events.c:42
string Type
Определения JsonDataContaminatedArea.c:11
enum EObjectTemperatureState m_State
bool IsFullBody()
Определения PluginDayzPlayerDebug.c:71
int GetStanceMask()
Определения PluginDayzPlayerDebug.c:76
proto static native void End()
Finalizes the testing process.
float GetProgressWidgetMultiplier(ActionData action_data)
Определения ActionBase.c:1306
void OnEndClient(ActionData action_data)
Определения ActionBase.c:1276
bool CanBeUsedRaised()
Определения ActionBase.c:348
bool CanBeUsedSwimming()
Определения ActionBase.c:338
bool IsShaveSelf()
Определения ActionBase.c:293
bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBase.c:403
void SendMessageToClient(Object reciever, string message)
Определения ActionBase.c:1131
int GetVariants(out array< ref ActionBase > variants)
Определения ActionBase.c:928
float m_SpecialtyWeight
Определения ActionBase.c:77
ActionData CreateActionData()
Определения ActionBase.c:225
void ClearActionJuncture(ActionData action_data)
Определения ActionBase.c:1083
void RefreshActionJuncture(ActionData action_data)
Определения ActionBase.c:1105
bool CanTargetBeInVehicle()
Определения ActionBase.c:328
int m_RefreshReservationTimerValue
Определения ActionBase.c:55
void ApplyModifiers(ActionData action_data)
bool DisplayTargetInActionText()
Определения ActionBase.c:393
Object GetDisplayInteractObject(PlayerBase player, ActionTarget target)
Определения ActionBase.c:236
int GetClosestPossibleStance(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBase.c:600
bool IsEat()
Определения ActionBase.c:283
int m_ActionID
Определения ActionBase.c:67
int GetID()
Определения ActionBase.c:1321
bool HasProgress()
For UI: hiding of progress bar.
Определения ActionBase.c:250
string m_Sound
Определения ActionBase.c:57
bool HasVariants()
Определения ActionBase.c:915
void End(ActionData action_data)
Определения ActionBase.c:752
void OnEndRequest(ActionData action_data)
Определения ActionBase.c:785
bool RemoveForceTargetAfterUse()
Определения ActionBase.c:273
string GetAdminLogMessage(ActionData action_data)
Определения ActionBase.c:1326
int GetState(ActionData action_data)
Определения ActionBase.c:1296
void OnEnd(ActionData action_data)
Определения ActionBase.c:1271
int m_StanceMask
Определения ActionBase.c:62
bool IsDamageDestroyed(ActionTarget target)
Определения ActionBase.c:1143
bool CanBeUsedInVehicle()
Определения ActionBase.c:323
ref ActionVariantManager m_VariantManager
Определения ActionBase.c:70
void UpdateVariants(Object item, Object target, int componet_index)
Определения ActionBase.c:946
bool CanBePerformedFromInventory()
Определения ActionBase.c:308
bool IsDrink()
Определения ActionBase.c:288
int GetStanceMaskEx(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBase.c:581
void OnUpdateServer(ActionData action_data)
Определения ActionBase.c:1244
bool HasTarget()
Определения ActionBase.c:244
bool InventoryReservation(ActionData action_data)
Определения ActionBase.c:967
void OnItemLocationChanged(ItemBase item)
Определения ActionBase.c:962
void Start(ActionData action_data)
Определения ActionBase.c:725
string GetSoundCategory(ActionData action_data)
Определения ActionBase.c:1219
void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBase.c:1214
void ActionBase()
Определения ActionBase.c:82
bool IsInReach(PlayerBase player, ActionTarget target, float maxDistance=1.0)
Определения ActionBase.c:1158
bool CanBePerformedFromQuickbar()
Определения ActionBase.c:303
bool IsLockTargetOnUse()
Определения ActionBase.c:99
void EndInput(ActionData action_data)
Определения ActionBase.c:779
void OnUpdateClient(ActionData action_data)
Определения ActionBase.c:1228
bool Can(PlayerBase player, ActionTarget target, ItemBase item, int condition_mask)
Определения ActionBase.c:861
bool CanBeUsedInRestrain()
Определения ActionBase.c:318
string GetTargetName(PlayerBase player, ActionTarget target)
Определения ActionBase.c:414
int GetRefreshReservationTimerValue()
Определения ActionBase.c:421
bool CanBeUsedInFreelook()
Определения ActionBase.c:368
bool IsTransport(ActionTarget target)
Определения ActionBase.c:1153
bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
Определения ActionBase.c:156
string m_Text
Определения ActionBase.c:58
bool UseAcknowledgment()
Определения ActionBase.c:1123
bool CanBeUsedOnBack()
Определения ActionBase.c:333
int m_VariantID
Определения ActionBase.c:68
ref CCIBase m_ConditionItem
Определения ActionBase.c:64
ref TStringArray m_Sounds
Определения ActionBase.c:63
int GetStanceMask(PlayerBase player)
Определения ActionBase.c:586
bool Can(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBase.c:900
void OnUpdate(ActionData action_data)
Определения ActionBase.c:1225
bool AddActionJuncture(ActionData action_data)
Определения ActionBase.c:1054
int GetVariantsCount()
Определения ActionBase.c:920
void RefreshReservations(ActionData action_data)
Определения ActionBase.c:1040
void ActionCleanup(ActionData action_data)
Определения ActionBase.c:212
bool CanBeUsedOnLadder()
Определения ActionBase.c:343
int GetActionCategory()
Определения ActionBase.c:278
float GetProgress(ActionData action_data)
Определения ActionBase.c:1301
bool IsBuilding(ActionTarget target)
Определения ActionBase.c:1148
bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
Определения ActionBase.c:482
bool IsFullBodyEx(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBase.c:703
void OnStartClient(ActionData action_data)
Определения ActionBase.c:1263
void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
Определения ActionBase.c:426
int m_ConditionMask
Определения ActionBase.c:69
void OnStartServer(ActionData action_data)
Определения ActionBase.c:1266
ActionVariantManager GetVariantManager()
Определения ActionBase.c:954
bool HasProneException()
Определения ActionBase.c:718
ActionInput m_Input
Определения ActionBase.c:66
bool IsInstant()
Определения ActionBase.c:262
bool CanBeUsedThrowing()
Определения ActionBase.c:353
bool Post_SetupAction(ActionData action_data)
Определения ActionBase.c:207
bool IsDeploymentAction()
Is an action directly related to deployment/advanced placing.
Определения ActionBase.c:374
bool ActionConditionContinue(ActionData action_data)
Определения ActionBase.c:398
void SetID(int actionId)
Определения ActionBase.c:1316
void EndRequest(ActionData action_data)
Определения ActionBase.c:788
void ClearInventoryReservationEx(ActionData action_data)
Определения ActionBase.c:1025
bool UseMainItem()
Определения ActionBase.c:379
bool CanBeSetFromInventory()
Определения ActionBase.c:313
SoundOnVehicle PlayActionSound(PlayerBase player)
Определения ActionBase.c:1196
void InformPlayers(PlayerBase player, ActionTarget target, int state)
DEPRECATED delivers message ids to clients based on given context.
void OnStart(ActionData action_data)
Определения ActionBase.c:1257
GetInputType()
Определения ActionBase.c:215
bool IsUsingProxies()
not using plane object - it's using multiple proxies
Определения ActionBase.c:268
ActionInput GetInput()
Определения ActionBase.c:1311
void SetInput(ActionInput ai)
Определения ActionBase.c:220
int GetVariantID()
Определения ActionBase.c:941
bool CanReceiveAction(ActionTarget target)
Определения ActionBase.c:793
void OnEndInput(ActionData action_data)
Определения ActionBase.c:776
void CreateConditionComponents()
Определения ActionBase.c:230
float GetSpecialtyWeight()
Определения ActionBase.c:1284
bool m_LockTargetOnUse
Определения ActionBase.c:60
void Interrupt(ActionData action_data)
Определения ActionBase.c:771
void SetVariantID(int ID)
Определения ActionBase.c:936
void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
Определения ActionBase.c:559
bool IsFullBody(PlayerBase player)
Определения ActionBase.c:708
bool MainItemAlwaysInHands()
Определения ActionBase.c:384
void InitConditionMask()
Определения ActionBase.c:104
bool m_FullBody
Определения ActionBase.c:61
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
ref Param1< string > m_MessageParam
Определения ActionBase.c:73
bool CanContinue(ActionData action_data)
Определения ActionBase.c:907
string GetText()
Определения ActionBase.c:298
bool CanBeUsedWithBrokenLegs()
Определения ActionBase.c:363
bool CanBeUsedLeaning()
Определения ActionBase.c:358
void OnEndServer(ActionData action_data)
Определения ActionBase.c:1279
bool IsLocal()
Определения ActionBase.c:256
static int ComputeConditionMask(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBase.c:807
Определения AnimatedActionBase.c:2
Определения ActionBase.c:53
Определения ActionInput.c:20
int m_StanceMask
Определения ActionBase.c:25
int m_CommandUIDProne
Определения ActionBase.c:24
int m_CommandUID
Определения ActionBase.c:23
Определения ActionBase.c:22
Определения CABase.c:2
Определения CCIBase.c:2
Определения CCIDummy.c:2
Определения CCTBase.c:2
Определения CCTDummy.c:2
proto native void RPCSingleParam(Object target, int rpc_type, Param param, bool guaranteed, PlayerIdentity recipient=null)
see CGame.RPC
bool ClearJunctureEx(Man player, notnull EntityAI item)
Определения Game.c:762
proto native SoundOnVehicle CreateSoundOnObject(Object source, string sound_name, float distance, bool looped, bool create_local=false)
proto native bool ExtendActionJuncture(Man player, notnull EntityAI item, int timeout_ms)
Super root of all classes in Enforce script.
Определения EnScript.c:11
static void ActionLog(string message=LOG_DEFAULT, string plugin=LOG_DEFAULT, string author=LOG_DEFAULT, string label=LOG_DEFAULT, string entity=LOG_DEFAULT)
Определения Debug.c:127
Определения Debug.c:2
Определения Building.c:6
Определения Camera.c:2
const int c_InventoryReservationTimeoutMS
reservations
Определения Inventory.c:712
script counterpart to engine's class Inventory
Определения Inventory.c:79
proto native void SetHands(notnull EntityAI parent, EntityAI e)
sets current inventory location type to Hands
static string DumpToStringNullSafe(InventoryLocation loc)
Определения InventoryLocation.c:226
proto native EntityAI GetItem()
returns item of current inventory location
InventoryLocation.
Определения InventoryLocation.c:29
Определения InventoryItem.c:731
static bool IsActionLogEnable()
Определения Debug.c:638
Определения Debug.c:594
TODO doc.
Определения EnScript.c:118
Определения EnMath.c:7
Определения ObjectTyped.c:2
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
Определения PlayerBaseClient.c:2
proto bool Write(void value_out)
proto bool Read(void value_in)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
static proto native float DistanceSq(vector v1, vector v2)
Returns the square distance between tips of two 3D vectors.
static const vector Zero
Определения EnConvert.c:110
Определения EnConvert.c:106
DayZPlayerInstanceType
defined in C++
Определения dayzplayer.c:1068
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
Serializer ParamsWriteContext
Определения gameplay.c:16
void Error(string err)
Messagebox with error message.
Определения EnDebug.c:90
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
array< string > TStringArray
Определения EnScript.c:685
static proto int RandomInt(int min, int max)
Returns a random int number between and min [inclusive] and max [exclusive].
void OnEnd()
Определения Sound.c:226
static proto string ToString(void var, bool type=false, bool name=false, bool quotes=true)
Return string representation of variable.
proto native int Hash()
Returns hash of string.
static const string Empty
Определения EnString.c:7
const int UA_START
Определения constants.c:467
const int UA_NONE
Определения constants.c:460