DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
Hand_Events.c
См. документацию.
1
2
26
34
38class HandEventBase
39{
40 int m_EventID = 0;
41 int m_AnimationID = -1;
44
51
52 void HandEventBase (Man p = null, InventoryLocation src = null) { Class.CastTo(m_Player, p); m_Src = src; }
54
56 {
57 return m_Player && (m_Player.GetInstanceType() != DayZPlayerInstanceType.INSTANCETYPE_CLIENT && m_Player.GetInstanceType() != DayZPlayerInstanceType.INSTANCETYPE_REMOTE);
58 }
59
60 bool IsOwner()
61 {
62 return m_Player && (m_Player.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_CLIENT || m_Player.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_AI_SERVER || m_Player.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_AI_SINGLEPLAYER);
63 }
64
65 bool IsProxy()
66 {
67 return m_Player && (m_Player.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_REMOTE || m_Player.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_AI_REMOTE);
68 }
69
70 void ReadFromContext (ParamsReadContext ctx) { } // actual read is in CreateHandEventFromContext
71
79
81 InventoryLocation GetSecondSrc () { return null; }
82
84 {
85 if (m_Src)
86 return m_Src.GetItem();
87 return null;
88 }
89 EntityAI GetSecondSrcEntity () { return null; }
90 InventoryLocation GetDst () { return null; }
91 InventoryLocation GetSecondDst () { return null; }
92 int GetAnimationID () { return m_AnimationID; }
93 bool AcquireInventoryJunctureFromServer (notnull Man player) { return false; }
94 bool CheckRequest () { return true; }
96 {
100 if (validation.m_IsRemote)
101 return true;
102
103 return CheckRequest();
104 }
105 bool CanPerformEvent () { return true; }
107 bool CheckRequestSrc () { return true; }
108 bool IsServerSideOnly () { return false; }
109
110 static HandEventBase HandEventFactory (HandEventID id, Man p = null, InventoryLocation src = null)
111 {
112 switch (id)
113 {
114 case HandEventID.UNKNOWN: return null;
115 case HandEventID.TAKE: return new HandEventTake(p, src);
116 case HandEventID.MOVETO: return new HandEventMoveTo(p, src);
117 case HandEventID.DROP: return new HandEventDrop(p, src);
118 case HandEventID.THROW: return new HandEventThrow(p, src);
119 case HandEventID.SWAP: return new HandEventSwap(p, src);
120 case HandEventID.FORCESWAP: return new HandEventForceSwap(p, src);
121 case HandEventID.DESTROY: return new HandEventDestroy(p, src);
122 case HandEventID.CREATED: return new HandEventCreated(p, src);
123 case HandEventID.DESTROYED: return new HandEventDestroyed(p, src);
124 case HandEventID.REPLACE: return new HandEventDestroyAndReplaceWithNew(p, src);
125 case HandEventID.REPLACE2: return new HandEventDestroyAndReplaceWithNewElsewhere(p, src);
126 case HandEventID.REPLACE3: return new HandEventDestroyElsewhereAndReplaceWithNewInHands(p, src);
127 case HandEventID.REPLACED: return new HandEventReplaced(p, src);
128 case HandEventID.ANIMEVENT_CHANGE_HIDE: return HandAnimEventChanged(p, src);
129 case HandEventID.HUMANCOMMAND_ACTION_FINISHED : return HandEventHumanCommandActionFinished(p, src);
130 case HandEventID.HUMANCOMMAND_ACTION_ABORTED : return HandEventHumanCommandActionAborted(p, src);
131 }
132 Error("[hndfsm] HandEventFactory - unregistered hand event with id=" + id);
133 return null;
134 }
135
137 {
138 int eventID = -1;
139 if (!ctx.Read(eventID))
140 {
141 Error("[hndfsm] CreateHandEventFromContext - cannot read eventID");
142 return null;
143 }
144 Man player;
145 if (!ctx.Read(player))
146 {
147 Error("[hndfsm] CreateHandEventFromContext - cannot read player");
148 return null;
149 }
152
153 int animID = -1;
154 if (!ctx.Read(animID))
155 {
156 Error("[hndfsm] CreateHandEventFromContext - cannot read animID");
157 return null;
158 }
159 HandEventBase b = HandEventFactory(eventID, player, src);
160 if (b)
161 {
162 b.m_AnimationID = animID;
163 b.ReadFromContext(ctx);
164 }
165 return b;
166 }
167
168 string DumpToString ()
169 {
170 string res = "{ HandEv id=" + typename.EnumToString(HandEventID, GetEventID());
171 res = res + " pl=" + Object.GetDebugName(m_Player);
172 res = res + " src=" + InventoryLocation.DumpToStringNullSafe(m_Src);
173 res = res + " }";
174 return res;
175 }
176
178 {
180 if (!il)
181 {
182 il = GetSrc();
183 }
184
185 if (il && !m_Player.GetHumanInventory().HasInventoryReservation(il.GetItem(),il))
186 {
187 if (m_Player.GetHumanInventory().AddInventoryReservationEx(il.GetItem(), il, GameInventory.c_InventoryReservationTimeoutShortMS))
188 {
189 return true;
190 }
191 }
192
193 return false;
194 }
195
197 {
199 if (!il)
200 {
201 il = GetSrc();
202 }
203
204 if (il)
205 {
206 m_Player.GetHumanInventory().ClearInventoryReservationEx(il.GetItem(), il);
207 }
208 }
209};
210
212{
213 void HandEventTake (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.TAKE; }
214
216 {
219 return dst;
220 }
221
222 override bool CheckRequestSrc ()
223 {
225 {
226 Debug.InventoryHFSMLog("CANNOT perform", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CheckRequestSrc", m_Player.ToString() );
227 if (LogManager.IsSyncLogEnable()) syncDebugPrint("[cheat] HandleInputData man=" + Object.GetDebugName(m_Player) + " failed src1 check with cmd=" + typename.EnumToString(HandEventID, GetEventID()) + " src1=" + InventoryLocation.DumpToStringNullSafe(GetSrc()));
228 return false; // stale packet
229 }
230 return true;
231 }
232
237
238 override bool CanPerformEventEx(InventoryValidation validation)
239 {
241 {
242 #ifdef ENABLE_LOGGING
244 {
245 Debug.InventoryHFSMLog("CANNOT perform", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CanPerformEvent", m_Player.ToString() );
246 }
247 #endif
248 //if (LogManager.IsInventoryHFSMLogEnable()) hndDebugPrint("[desync] HandleInputData man=" + Object.GetDebugName(m_Player) + " CANNOT perform ev=" + DumpToString());
249 return false;
250 }
251
252 return super.CanPerformEventEx(validation);
253 }
254
255 override bool AcquireInventoryJunctureFromServer (notnull Man player)
256 {
259 if (src && dst)
260 {
261 return TryAcquireInventoryJunctureFromServer(player, src, dst);
262 }
263 Error("[hndfsm] HandEventTake. AcquireInventoryJunctureFromServer: no src or dst for ev=" + DumpToString());
264 return JunctureRequestResult.ERROR;
265 }
266};
267
268class HandEventMoveTo extends HandEventBase
269{
271
272 void HandEventMoveTo (Man p = null, InventoryLocation src = null, InventoryLocation dst = null) { m_EventID = HandEventID.MOVETO; m_Dst = dst; }
273
275 {
277 super.ReadFromContext(ctx);
278 m_Dst.ReadFromContext(ctx);
279 }
281 {
282 super.WriteToContext(ctx);
283 m_Dst.WriteToContext(ctx);
284 }
285
286 override InventoryLocation GetDst () { return m_Dst; }
287
288 override bool CheckRequestSrc ()
289 {
291 {
292 if (LogManager.IsSyncLogEnable()) syncDebugPrint("[cheat] HandleInputData man=" + Object.GetDebugName(m_Player) + " failed src1 check with cmd=" + typename.EnumToString(HandEventID, GetEventID()) + " src1=" + InventoryLocation.DumpToStringNullSafe(GetSrc()));
293 return false; // stale packet
294 }
295 return true;
296 }
297
298 override bool CheckRequest ()
299 {
300 if(m_Src && m_Dst && m_Src.GetItem() != m_Dst.GetItem())
301 return false;
302
304 }
305
306 override bool CanPerformEvent ()
307 {
309 {
310 #ifdef ENABLE_LOGGING
312 {
313 Debug.InventoryHFSMLog("CANNOT perform", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CanPerformEvent", m_Player.ToString() );
314 }
315 #endif
316 return false;
317 }
318 return true;
319 }
320
321 override bool AcquireInventoryJunctureFromServer (notnull Man player)
322 {
325 if (src && dst)
326 {
327 return TryAcquireInventoryJunctureFromServer(player, src, dst);
328 }
329 Error("[hndfsm] HandEventMoveTo. AcquireInventoryJunctureFromServer: no src or dst for ev=" + DumpToString());
330 return JunctureRequestResult.ERROR;
331 }
332
333 override string DumpToString ()
334 {
335 string res = "{ HandEventMoveTo id=" + typename.EnumToString(HandEventID, GetEventID()) + " pl=" + Object.GetDebugName(m_Player) + " src=" + InventoryLocation.DumpToStringNullSafe(m_Src) + " dst=" + InventoryLocation.DumpToStringNullSafe(m_Dst) + " }";
336 return res;
337 }
338};
339
341class HandEventRemove extends HandEventBase
342{
344 {
345 return m_Dst;
346 }
347
348 override bool CheckRequestSrc ()
349 {
351 {
352 #ifdef ENABLE_LOGGING
354 {
355 Debug.InventoryHFSMLog("Check src - failed, src = " + InventoryLocation.DumpToStringNullSafe(GetSrc()), typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CheckRequestSrc", m_Player.ToString() );
356 }
357 #endif
358 return false; // stale packet
359 }
360 return true;
361 }
362
363 override bool CheckRequest ()
364 {
365 if(m_Src && m_Dst && m_Src.GetItem() != m_Dst.GetItem())
366 return false;
367
369 }
370
371 override bool CanPerformEvent ()
372 {
375
376 if (!dst)
377 {
378 #ifdef ENABLE_LOGGING
380 {
381 Debug.InventoryHFSMLog("CANNOT perform. Dst location is NULL!", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CanPerformEvent", m_Player.ToString() );
382 }
383 #endif
384 return false;
385 }
386
387 if (dst.GetType() == InventoryLocationType.UNKNOWN)
388 {
389 #ifdef ENABLE_LOGGING
391 {
392 Debug.InventoryHFSMLog("CANNOT perform. Dst location type is UNKNOWN!", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CanPerformEvent", m_Player.ToString() );
393 }
394 #endif
395 return false;
396 }
397
399 {
400 #ifdef ENABLE_LOGGING
402 {
403 Debug.InventoryHFSMLog("CANNOT perform", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CanPerformEvent", m_Player.ToString() );
404 }
405 #endif
406 return false;
407 }
408 return true;
409 }
410
411 override bool AcquireInventoryJunctureFromServer (notnull Man player)
412 {
415 if (src && dst)
416 {
417 return TryAcquireInventoryJunctureFromServer(player, src, dst);
418 }
419 Error("[hndfsm] HandEventThrow. AcquireInventoryJunctureFromServer: no src or dst for ev=" + DumpToString());
420 return JunctureRequestResult.ERROR;
421 }
422
423 ref InventoryLocation m_Dst;
424};
425
427{
428 void HandEventDrop (Man p = null, InventoryLocation src = null)
429 {
430 m_EventID = HandEventID.DROP;
431 m_CanPerformDrop = true;
432 m_IsSet = false;
433
434 m_Dst = new InventoryLocation();
435 }
436
438 {
439 super.ReadFromContext(ctx);
440
442 ctx.Read(m_IsSet);
444 }
445
447 {
448 super.WriteToContext(ctx);
449
451 ctx.Write(m_IsSet);
453 }
454
455 override bool CheckRequestEx(InventoryValidation validation)
456 {
458 if (validation.m_Mode == InventoryMode.JUNCTURE && !validation.m_IsJuncture && IsAuthoritative())
459 {
460 m_IsSet = true;
462 }
463
464 if (!m_CanPerformDrop)
465 {
466 validation.m_Reason = InventoryValidationReason.DROP_PREVENTED;
467 return false;
468 }
469
470 return super.CheckRequestEx(validation);
471 }
472
473 override bool CanPerformEventEx(InventoryValidation validation)
474 {
476 if (validation.m_Mode == InventoryMode.JUNCTURE && !validation.m_IsJuncture && !validation.m_IsRemote && g_Game.IsClient())
477 {
478 return true;
479 }
480
482 if (!m_IsSet)
483 {
484 m_IsSet = true;
486 }
487
488 if (!m_CanPerformDrop)
489 {
490 return false;
491 }
492
493 return super.CanPerformEventEx(validation);
494 }
495
498};
499
500class HandEventThrow extends HandEventRemove
501{
502 void HandEventThrow (Man p = null, InventoryLocation src = null)
503 {
504 m_EventID = HandEventID.THROW;
505 if( src )
506 {
507 vector mat[4];
508 EntityAI entity = GetSrcEntity();
509 if (entity)
510 {
511 m_Dst = new InventoryLocation;
512 entity.GetTransform(mat);
513 m_Dst.SetGround(entity, mat);
514 }
515 else
516 {
517 Error("[hndfsm] HandEventThrow src entity null!");
518 }
519 }
520 }
521
523 {
524 super.ReadFromContext(ctx);
525
526 m_Dst = new InventoryLocation;
527 m_Dst.ReadFromContext(ctx);
528
529 float x, y, z;
530 ctx.Read(x);
531 ctx.Read(y);
532 ctx.Read(z);
533 m_Force[0] = x;
534 m_Force[1] = y;
535 m_Force[2] = z;
536 }
537
539 {
540 super.WriteToContext(ctx);
541
542 m_Dst.WriteToContext(ctx);
543
544 ctx.Write(m_Force[0]);
545 ctx.Write(m_Force[1]);
546 ctx.Write(m_Force[2]);
547 }
548
549 void SetForce(vector force) { m_Force = force; }
550 vector GetForce() { return m_Force; }
551
553};
554
555class HandEventSwap extends HandEventBase
556{
557 // super.m_Src == src location of new item (that will be taken)
558 ref InventoryLocation m_Dst;
562
563 void HandEventSwap (Man p = null, InventoryLocation src = null, InventoryLocation src2 = null, InventoryLocation dst = null, InventoryLocation dst2 = null)
564 {
565 m_EventID = HandEventID.SWAP;
566 m_Dst = dst;
567 m_Src2 = src2;
568 m_Dst2 = dst2;
569 }
570
572 {
573 super.ReadFromContext(ctx);
574
578
579 m_Src2.ReadFromContext(ctx);
580 m_Dst.ReadFromContext(ctx);
581 m_Dst2.ReadFromContext(ctx);
582 ctx.Read(m_Animation2ID);
583 }
584
586 {
587 super.WriteToContext(ctx);
588
589 m_Src2.WriteToContext(ctx);
590 m_Dst.WriteToContext(ctx);
591 m_Dst2.WriteToContext(ctx);
593 }
594
596 {
597 return m_Dst;
598 }
599
601 {
602 return m_Src2;
603 }
604
606 {
607 return m_Dst2;
608 }
609
611 {
612 return m_Src2.GetItem();
613 }
614
615 override bool CheckRequestSrc ()
616 {
617 //return false;
618
620 {
621 if (LogManager.IsSyncLogEnable()) syncDebugPrint("[cheat] HandleInputData man=" + Object.GetDebugName(m_Player) + " failed src1 check with cmd=" + typename.EnumToString(HandEventID, GetEventID()) + " src1=" + InventoryLocation.DumpToStringNullSafe(GetSrc()));
622 return false; // stale packet
623 }
625 {
626 if (LogManager.IsSyncLogEnable()) syncDebugPrint("[cheat] HandleInputData man=" + Object.GetDebugName(m_Player) + " failed src2 check with cmd=" + typename.EnumToString(HandEventID, GetEventID()) + " src2=" + InventoryLocation.DumpToStringNullSafe(m_Src2));
627 return false; // stale packet
628 }
629 return true;
630 }
631
632 override bool CheckRequest ()
633 {
634 if (m_Src && m_Dst && m_Src.GetItem() != m_Dst.GetItem())
635 return false;
636
637 if (m_Src2 && m_Dst2 && m_Src2.GetItem() != m_Dst2.GetItem())
638 return false;
639
641 {
642 #ifdef ENABLE_LOGGING
644 {
645 Debug.InventoryHFSMLog("CheckSwapItemsRequest - failed", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CheckRequest", m_Player.ToString() );
646 }
647 #endif
648 }
649 else if (!m_Player.GetHumanInventory().CanAddSwappedEntity(m_Src, m_Src2, m_Dst, m_Dst2))
650 {
651 #ifdef ENABLE_LOGGING
653 {
654 Debug.InventoryHFSMLog("CanAddSwappedEntity - failed", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CheckRequest", m_Player.ToString() );
655 }
656 #endif
657 }
658 else
659 return true;
660
661 return false;
662 }
663
664 override bool CanPerformEvent ()
665 {
667 return true;
668
669 #ifdef ENABLE_LOGGING
671 {
672 Debug.InventoryHFSMLog("CANNOT perform", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CanPerformEvent", m_Player.ToString() );
673 }
674 #endif
675 return false;
676 }
677
678 override bool AcquireInventoryJunctureFromServer (notnull Man player)
679 {
680 InventoryLocation src1 = GetSrc();
682 InventoryLocation dst1 = GetDst();
684
685 if (src1 && dst1 && src2 && dst2)
686 {
687 return TryAcquireTwoInventoryJuncturesFromServer(player, src1, src2, dst1, dst2);
688 }
689
690 Error("[hndfsm] HandEventSwap. AcquireInventoryJunctureFromServer: no src or dst for ev=" + DumpToString());
691 return JunctureRequestResult.ERROR;
692 }
693
694 override string DumpToString ()
695 {
696 return "{ HandEventSwap id=" + typename.EnumToString(HandEventID, GetEventID()) + " pl=" + Object.GetDebugName(m_Player) + " src1=" + InventoryLocation.DumpToStringNullSafe(m_Src) + " src2=" + InventoryLocation.DumpToStringNullSafe(m_Src2) + " dst1=" + InventoryLocation.DumpToStringNullSafe(m_Dst) + " dst2=" + InventoryLocation.DumpToStringNullSafe(m_Dst2) + " }";
697 }
698
700 {
701 DayZPlayer player = DayZPlayer.Cast(m_Player);
702 player.ForceStandUpForHeavyItemsSwap( m_Src.GetItem(), m_Src2.GetItem() );
703 }
704
705 override bool ReserveInventory()
706 {
707 if (!m_Player.GetHumanInventory().HasInventoryReservation(m_Dst.GetItem(), m_Dst) && !m_Player.GetHumanInventory().HasInventoryReservation(m_Dst2.GetItem(), m_Dst2))
708 {
709 if (m_Player.GetHumanInventory().AddInventoryReservationEx(m_Dst.GetItem(), m_Dst, GameInventory.c_InventoryReservationTimeoutShortMS))
710 {
711 if (m_Player.GetHumanInventory().AddInventoryReservationEx(m_Dst2.GetItem(), m_Dst2, GameInventory.c_InventoryReservationTimeoutShortMS))
712 {
713 return true;
714 }
715 else
716 {
717 m_Player.GetHumanInventory().ClearInventoryReservationEx(m_Dst.GetItem(), m_Dst);
718 }
719 }
720 }
721 return false;
722 }
723
725 {
726 m_Player.GetHumanInventory().ClearInventoryReservationEx(m_Dst.GetItem(), m_Dst);
727 m_Player.GetHumanInventory().ClearInventoryReservationEx(m_Dst2.GetItem(), m_Dst2);
728 }
729};
730
732{
733 void HandEventForceSwap (Man p = null, InventoryLocation src = null, InventoryLocation src2 = null, InventoryLocation dst = null, InventoryLocation dst2 = null) { m_EventID = HandEventID.FORCESWAP; }
734
735 override bool CheckRequest ()
736 {
737 if(m_Src && m_Dst && m_Src.GetItem() != m_Dst.GetItem())
738 return false;
739
740 if(m_Src2 && m_Dst2 && m_Src2.GetItem() != m_Dst2.GetItem())
741 return false;
742
743 bool test1 = false;
744 EntityAI inHands = m_Player.GetEntityInHands();
745 if (GetSrcEntity() && inHands && m_Dst && m_Dst.IsValid())
746 {
748 #ifdef ENABLE_LOGGING
750 {
751 if (!test1)
752 Debug.InventoryHFSMLog("CheckSwapItemsRequest failed", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CheckRequest", m_Player.ToString() );
753 }
754 #endif
755 }
756 return test1;
757 }
758
759 override bool CanPerformEvent ()
760 {
761 bool test2 = GameInventory.CanForceSwapEntitiesEx(m_Src.GetItem(), m_Dst, m_Src2.GetItem(), m_Dst2); // null here means 'do not search for dst2' (already have valid one from constructor)
762 #ifdef ENABLE_LOGGING
764 {
765 if (!test2)
766 Debug.InventoryHFSMLog("CanForceSwapEntitiesEx failed", typename.EnumToString(HandEventID, GetEventID()) , "n/a", "CanPerformEvent", m_Player.ToString() );
767 }
768 #endif
769 return test2;
770 }
771};
772
773class HandEventDestroy extends HandEventBase
774{
775 void HandEventDestroy (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.DESTROY; }
776
777 override bool IsServerSideOnly () { return true; }
778};
779
780class HandEventCreated extends HandEventBase
781{
782 void HandEventCreated (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.CREATED; }
783};
784
785class HandEventDestroyed extends HandEventBase
786{
787 void HandEventDestroyed (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.DESTROYED; }
788};
789
791{
792 string m_Type;
794
795 void HandEvengReplaceWithNewBase (Man p = null, InventoryLocation src = null, ReplaceItemWithNewLambdaBase lambda = NULL) { m_EventID = HandEventID.REPLACE; m_Lambda = lambda; }
796
798 {
799 super.ReadFromContext(ctx);
800 ctx.Read(m_Type);
801 Error("[hndfsm] HandEventDestroyAndReplaceWithNew - Cannot serialize lambda (read)");
802 }
804 {
805 super.WriteToContext(ctx);
806 ctx.Write(m_Type);
807 Error("[hndfsm] HandEventDestroyAndReplaceWithNew - Cannot serialize lambda (write)");
808 }
809
810 override bool IsServerSideOnly () { return true; }
811
813 {
816 return dst;
817 }
818
819 override string DumpToString ()
820 {
821 string res = "{ HandEvenReplaceWithNewBase id=" + typename.EnumToString(HandEventID, GetEventID()) + " pl=" + Object.GetDebugName(m_Player) + " src=" + InventoryLocation.DumpToStringNullSafe(GetSrc()) + " lambda=" + m_Lambda + " dst=" + InventoryLocation.DumpToStringNullSafe(GetDst()) + " }";
822 return res;
823 }
824};
825
827{
828 void HandEventDestroyAndReplaceWithNew (Man p = null, InventoryLocation src = null, ReplaceItemWithNewLambdaBase lambda = NULL) { m_EventID = HandEventID.REPLACE; m_Lambda = lambda; }
829};
830
835
836class HandEventDestroyElsewhereAndReplaceWithNewInHands extends HandEventReplaceWithNewBase
837{
838 void HandEventDestroyElsewhereAndReplaceWithNewInHands (Man p = null, InventoryLocation src = null, ReplaceItemWithNewLambdaBase lambda = NULL) { m_EventID = HandEventID.REPLACE3; m_Lambda = lambda; }
839};
840
841class HandEventReplaced extends HandEventBase
842{
843 void HandEventReplaced (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.REPLACED; }
844};
845
846// anim events
847
848class HandAnimEventChanged extends HandEventBase
849{
850 void HandAnimEventChanged (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.ANIMEVENT_CHANGE_HIDE; }
851};
852
854{
855 switch (type)
856 {
857 case WeaponEvents.CHANGE_HIDE: return new HandAnimEventChanged(p, src);
858 case WeaponEvents.CHANGE_SHOW: return new HandAnimEventChanged(p, src);
859 }
860 return null;
861}
862
865class HandEventHumanCommandActionFinished extends HandEventBase
866{
867 void HandEventHumanCommandActionFinished (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.HUMANCOMMAND_ACTION_FINISHED; }
868};
871class HandEventHumanCommandActionAborted extends HandEventBase
872{
873 void HandEventHumanCommandActionAborted (Man p = null, InventoryLocation src = null) { m_EventID = HandEventID.HUMANCOMMAND_ACTION_ABORTED; }
874};
875
877
void syncDebugPrint(string s)
InventoryMode
NOTE: PREDICTIVE is not to be used at all in multiplayer.
InventoryValidationReason
@ UNKNOWN
24 - Any other error. Can be returned from any call.
Определения BIOSErrorModule.c:56
DayZGame g_Game
Определения DayZGame.c:4074
@ DROP
Определения EAnimSoundEventID.c:3
DayZPlayer m_Player
Определения Hand_Events.c:42
static HandEventBase HandEventFactory(HandEventID id, Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:110
bool m_IsRemote
Определения Hand_Events.c:50
JUNCTURE_ACQUIRED
Определения Hand_Events.c:30
static HandEventBase CreateHandEventFromContext(ParamsReadContext ctx)
Определения Hand_Events.c:136
int GetAnimationID()
Определения Hand_Events.c:92
bool IsAuthoritative()
Определения Hand_Events.c:55
InventoryLocation GetSrc()
Определения Hand_Events.c:80
ref InventoryLocation m_Src
Определения Hand_Events.c:43
InventoryLocation GetSecondDst()
Определения Hand_Events.c:91
bool m_IsJuncture
Определения Hand_Events.c:49
HandEventBase HandAnimEventFactory(WeaponEvents type, Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:853
JUNCTURE_DENIED
Определения Hand_Events.c:31
JunctureRequestResult
Определения Hand_Events.c:28
InventoryLocation GetSecondSrc()
Определения Hand_Events.c:81
JUNCTURE_NOT_REQUIRED
Определения Hand_Events.c:29
m_EventID
bool CheckRequestEx(InventoryValidation validation)
Определения Hand_Events.c:95
HandEventID GetEventID()
Определения Hand_Events.c:53
HandEventID
events
Определения Hand_Events.c:7
@ FORCESWAP
Определения Hand_Events.c:14
@ HUMANCOMMAND_ACTION_FINISHED
Определения Hand_Events.c:22
@ DESTROYED
Определения Hand_Events.c:17
@ DESTROY
Определения Hand_Events.c:15
@ MOVETO
Определения Hand_Events.c:10
@ TAKE
Определения Hand_Events.c:9
@ REPLACE
Определения Hand_Events.c:18
@ REPLACED
Определения Hand_Events.c:21
@ REPLACE2
Определения Hand_Events.c:19
@ REPLACE3
Определения Hand_Events.c:20
@ ANIMEVENT_CHANGE_HIDE
Определения Hand_Events.c:24
@ CREATED
Определения Hand_Events.c:16
@ THROW
Определения Hand_Events.c:12
@ HUMANCOMMAND_ACTION_ABORTED
Определения Hand_Events.c:23
@ SWAP
swapping from ground
Определения Hand_Events.c:13
int m_AnimationID
Определения Hand_Events.c:41
bool IsOwner()
Определения Hand_Events.c:60
void HandEventBase(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:52
string DumpToString()
Определения Hand_Events.c:168
EntityAI GetSrcEntity()
Определения Hand_Events.c:83
InventoryLocation GetDst()
Определения Hand_Events.c:90
bool IsProxy()
Определения Hand_Events.c:65
Icon x
Icon y
bool OptionalLocationReadFromContext(out InventoryLocation loc, notnull ParamsReadContext ctx)
Определения InventoryLocation.c:732
InventoryLocationType
types of Inventory Location
Определения InventoryLocation.c:4
bool OptionalLocationWriteToContext(InventoryLocation loc, notnull ParamsWriteContext ctx)
Определения InventoryLocation.c:710
bool TryAcquireInventoryJunctureFromServer(notnull Man player, notnull InventoryLocation src, notnull InventoryLocation dst)
Определения Junctures.c:2
bool TryAcquireTwoInventoryJuncturesFromServer(notnull Man player, notnull InventoryLocation src1, notnull InventoryLocation src2, notnull InventoryLocation dst1, notnull InventoryLocation dst2)
Определения Junctures.c:48
EntityAI GetItem()
Определения RadialQuickbarMenu.c:37
Super root of all classes in Enforce script.
Определения EnScript.c:11
Определения DayZPlayerImplement.c:87
static void InventoryHFSMLog(string message=LOG_DEFAULT, string plugin=LOG_DEFAULT, string author=LOG_DEFAULT, string label=LOG_DEFAULT, string entity=LOG_DEFAULT)
Определения 3_Game/DayZ/tools/Debug.c:208
Определения 3_Game/DayZ/tools/Debug.c:2
const int c_InventoryReservationTimeoutShortMS
static proto native bool LocationCanMoveEntity(notnull InventoryLocation src, notnull InventoryLocation dst)
queries if the entity contained in inv_loc.m_item can be moved to another location This is a shorthan...
static bool SetGroundPosByOwner(EntityAI owner, notnull EntityAI item, out InventoryLocation ground)
static bool CanForceSwapEntitiesEx(notnull EntityAI item1, InventoryLocation item1_dst, notnull EntityAI item2, out InventoryLocation item2_dst)
const float c_MaxItemDistanceRadius
anti-cheats
static proto native bool CheckSwapItemsRequest(notnull Man requestingPlayer, notnull InventoryLocation src1, notnull InventoryLocation src2, notnull InventoryLocation dst1, notnull InventoryLocation dst2, float radius)
static proto native bool CheckMoveToDstRequest(notnull Man requestingPlayer, notnull InventoryLocation src, notnull InventoryLocation dst, float radius)
static proto native bool CheckRequestSrc(notnull Man requestingPlayer, notnull InventoryLocation src, float radius)
script counterpart to engine's class Inventory
override InventoryLocation GetSecondDst()
Определения Hand_Events.c:605
void HandAnimEventChanged(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:850
override bool CanPerformEvent()
Определения Hand_Events.c:306
override InventoryLocation GetDst()
Определения Hand_Events.c:215
override bool AcquireInventoryJunctureFromServer(notnull Man player)
Определения Hand_Events.c:255
override bool CheckRequest()
Определения Hand_Events.c:233
override bool ReserveInventory()
Определения Hand_Events.c:705
ref InventoryLocation m_Dst2
src of old item in hands
Определения Hand_Events.c:560
void HandEventCreated(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:782
string m_Type
Определения Hand_Events.c:792
override EntityAI GetSecondSrcEntity()
Определения Hand_Events.c:610
ref ReplaceItemWithNewLambdaBase m_Lambda
Определения Hand_Events.c:793
void HandEventHumanCommandActionFinished(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:867
void CheckAndExecuteForceStandUp()
Определения Hand_Events.c:699
void HandEventTake(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:213
override bool IsServerSideOnly()
Определения Hand_Events.c:777
void HandEventReplaced(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:843
void HandEventSwap(Man p=null, InventoryLocation src=null, InventoryLocation src2=null, InventoryLocation dst=null, InventoryLocation dst2=null)
Определения Hand_Events.c:563
void HandEventDestroy(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:775
void HandEventMoveTo(Man p=null, InventoryLocation src=null, InventoryLocation dst=null)
destination for item in hands
Определения Hand_Events.c:272
override string DumpToString()
Определения Hand_Events.c:333
override void ReadFromContext(ParamsReadContext ctx)
Определения Hand_Events.c:274
override void ClearInventoryReservation()
Определения Hand_Events.c:724
override void WriteToContext(ParamsWriteContext ctx)
Определения Hand_Events.c:280
void HandEvengReplaceWithNewBase(Man p=null, InventoryLocation src=null, ReplaceItemWithNewLambdaBase lambda=NULL)
Определения Hand_Events.c:795
override bool CheckRequestSrc()
Определения Hand_Events.c:222
void HandEventDestroyed(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:787
override bool CanPerformEventEx(InventoryValidation validation)
Определения Hand_Events.c:238
void HandEventHumanCommandActionAborted(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:873
ref InventoryLocation m_Src2
destination for new item (i.e. hands)
Определения Hand_Events.c:559
ref InventoryLocation m_Dst
Определения Hand_Events.c:270
override InventoryLocation GetSecondSrc()
Определения Hand_Events.c:600
int m_Animation2ID
destination for old item that was in hands
Определения Hand_Events.c:561
Abstracted event, not to be used, only inherited.
Определения Hand_Events.c:212
void HandEventDestroyAndReplaceWithNewElsewhere(Man p=null, InventoryLocation src=null, ReplaceItemWithNewLambdaBase lambda=NULL)
Определения Hand_Events.c:833
void HandEventDrop(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:428
override void ReadFromContext(ParamsReadContext ctx)
Определения Hand_Events.c:437
vector GetForce()
Определения Hand_Events.c:550
void HandEventThrow(Man p=null, InventoryLocation src=null)
Определения Hand_Events.c:502
bool m_CanPerformDrop
Определения Hand_Events.c:496
override void WriteToContext(ParamsWriteContext ctx)
Определения Hand_Events.c:446
override bool CheckRequestEx(InventoryValidation validation)
Определения Hand_Events.c:455
bool m_IsSet
Определения Hand_Events.c:497
vector m_Force
Определения Hand_Events.c:552
void SetForce(vector force)
Определения Hand_Events.c:549
override bool CanPerformEventEx(InventoryValidation validation)
Определения Hand_Events.c:473
Определения Hand_Events.c:427
void HandEventDestroyAndReplaceWithNew(Man p=null, InventoryLocation src=null, ReplaceItemWithNewLambdaBase lambda=NULL)
Определения Hand_Events.c:828
void HandEventDestroyElsewhereAndReplaceWithNewInHands(Man p=null, InventoryLocation src=null, ReplaceItemWithNewLambdaBase lambda=NULL)
Определения Hand_Events.c:838
void HandEventForceSwap(Man p=null, InventoryLocation src=null, InventoryLocation src2=null, InventoryLocation dst=null, InventoryLocation dst2=null)
Определения Hand_Events.c:733
override bool CheckRequest()
Определения Hand_Events.c:735
override bool CanPerformEvent()
Определения Hand_Events.c:759
Определения Hand_Events.c:732
proto native void SetHands(notnull EntityAI parent, EntityAI e)
sets current inventory location type to Hands
static string DumpToStringNullSafe(InventoryLocation loc)
Определения InventoryLocation.c:233
proto native int GetType()
returns type of InventoryLocation
bool ReadFromContext(ParamsReadContext ctx)
Определения InventoryLocation.c:310
proto native EntityAI GetItem()
returns item of current inventory location
InventoryLocation.
Определения InventoryLocation.c:30
InventoryValidationReason m_Reason
static bool IsSyncLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:789
static bool IsInventoryHFSMLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:779
Определения ObjectTyped.c:2
base class for transformation operations (creating one item from another)
Определения ReplaceItemWithNewLambdaBase.c:5
proto bool Write(void value_out)
proto bool Read(void value_in)
Определения EnConvert.c:119
DayZPlayerInstanceType
defined in C++
Определения dayzplayer.c:1084
Serializer ParamsReadContext
Определения gameplay.c:15
Serializer ParamsWriteContext
Определения gameplay.c:16
void Error(string err)
Messagebox with error message.
Определения EnDebug.c:90
ERROR
Определения EnDebug.c:2
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
WeaponEvents
events
Определения human.c:996